hunspell-1.7.2/0000775000175000017500000000000014353370322010360 500000000000000hunspell-1.7.2/ltmain.sh0000644000175000017500000117147413424262411012132 00000000000000#! /bin/sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2014-01-03.01 # libtool (GNU libtool) 2.4.6 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . PROGRAM=libtool PACKAGE=libtool VERSION="2.4.6 Debian-2.4.6-2" package_revision=2.4.6 ## ------ ## ## Usage. ## ## ------ ## # Run './libtool --help' for help with using this script from the # command line. ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # After configure completes, it has a better idea of some of the # shell tools we need than the defaults used by the functions shared # with bootstrap, so set those here where they can still be over- # ridden by the user, but otherwise take precedence. : ${AUTOCONF="autoconf"} : ${AUTOMAKE="automake"} ## -------------------------- ## ## Source external libraries. ## ## -------------------------- ## # Much of our low-level functionality needs to be sourced from external # libraries, which are installed to $pkgauxdir. # Set a version string for this script. scriptversion=2015-01-20.17; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 # Copyright (C) 2004-2015 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. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # As a special exception to the GNU General Public License, if you distribute # this file as part of a program or library that is built using GNU Libtool, # you may include this file under the same distribution terms that you use # for the rest of that program. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # Evaluate this file near the top of your script to gain access to # the functions and variables defined here: # # . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh # # If you need to override any of the default environment variable # settings, do that before evaluating this file. ## -------------------- ## ## Shell normalisation. ## ## -------------------- ## # Some shells need a little help to be as Bourne compatible as possible. # Before doing anything else, make sure all that help has been provided! DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # NLS nuisances: We save the old values in case they are required later. _G_user_locale= _G_safe_locale= for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test set = \"\${$_G_var+set}\"; then save_$_G_var=\$$_G_var $_G_var=C export $_G_var _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Make sure IFS has a sensible default sp=' ' nl=' ' IFS="$sp $nl" # There are apparently some retarded systems that use ';' as a PATH separator! if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi ## ------------------------- ## ## Locate command utilities. ## ## ------------------------- ## # func_executable_p FILE # ---------------------- # Check that FILE is an executable regular file. func_executable_p () { test -f "$1" && test -x "$1" } # func_path_progs PROGS_LIST CHECK_FUNC [PATH] # -------------------------------------------- # Search for either a program that responds to --version with output # containing "GNU", or else returned by CHECK_FUNC otherwise, by # trying all the directories in PATH with each of the elements of # PROGS_LIST. # # CHECK_FUNC should accept the path to a candidate program, and # set $func_check_prog_result if it truncates its output less than # $_G_path_prog_max characters. func_path_progs () { _G_progs_list=$1 _G_check_func=$2 _G_PATH=${3-"$PATH"} _G_path_prog_max=0 _G_path_prog_found=false _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. for _G_prog_name in $_G_progs_list; do for _exeext in '' .EXE; do _G_path_prog=$_G_dir/$_G_prog_name$_exeext func_executable_p "$_G_path_prog" || continue case `"$_G_path_prog" --version 2>&1` in *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; *) $_G_check_func $_G_path_prog func_path_progs_result=$func_check_prog_result ;; esac $_G_path_prog_found && break 3 done done done IFS=$_G_save_IFS test -z "$func_path_progs_result" && { echo "no acceptable sed could be found in \$PATH" >&2 exit 1 } } # We want to be able to use the functions in this file before configure # has figured out where the best binaries are kept, which means we have # to search for them ourselves - except when the results are already set # where we skip the searches. # Unless the user overrides by setting SED, search the path for either GNU # sed, or the sed that truncates its output the least. test -z "$SED" && { _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for _G_i in 1 2 3 4 5 6 7; do _G_sed_script=$_G_sed_script$nl$_G_sed_script done echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed _G_sed_script= func_check_prog_sed () { _G_path_prog=$1 _G_count=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo '' >> conftest.nl "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin rm -f conftest.sed SED=$func_path_progs_result } # Unless the user overrides by setting GREP, search the path for either GNU # grep, or the grep that truncates its output the least. test -z "$GREP" && { func_check_prog_grep () { _G_path_prog=$1 _G_count=0 _G_path_prog_max=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo 'GREP' >> conftest.nl "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin GREP=$func_path_progs_result } ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # All uppercase variable names are used for environment variables. These # variables can be overridden by the user before calling a script that # uses them if a suitable command of that name is not already available # in the command search PATH. : ${CP="cp -f"} : ${ECHO="printf %s\n"} : ${EGREP="$GREP -E"} : ${FGREP="$GREP -F"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} ## -------------------- ## ## Useful sed snippets. ## ## -------------------- ## sed_dirname='s|/[^/]*$||' sed_basename='s|^.*/||' # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s|\([`"$\\]\)|\\\1|g' # Same as above, but do not quote variable references. sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' # Sed substitution that converts a w32 file name or path # that contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-'\' parameter expansions in output of sed_double_quote_subst that # were '\'-ed in input to the same. If an odd number of '\' preceded a # '$' in input to sed_double_quote_subst, that '$' was protected from # expansion. Since each input '\' is now two '\'s, look for any number # of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. _G_bs='\\' _G_bs2='\\\\' _G_bs4='\\\\\\\\' _G_dollar='\$' sed_double_backslash="\ s/$_G_bs4/&\\ /g s/^$_G_bs2$_G_dollar/$_G_bs&/ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" ## ----------------- ## ## Global variables. ## ## ----------------- ## # Except for the global variables explicitly listed below, the following # functions in the '^func_' namespace, and the '^require_' namespace # variables initialised in the 'Resource management' section, sourcing # this file will not pollute your global namespace with anything # else. There's no portable way to scope variables in Bourne shell # though, so actually running these functions will sometimes place # results into a variable named after the function, and often use # temporary variables in the '^_G_' namespace. If you are careful to # avoid using those namespaces casually in your sourcing script, things # should continue to work as you expect. And, of course, you can freely # overwrite any of the functions or variables defined here before # calling anything to customize them. EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. # Allow overriding, eg assuming that you follow the convention of # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # # debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: # By convention, finish your script with: # # exit $exit_status # # so that you can set exit_status to non-zero if you want to indicate # something went wrong during execution without actually bailing out at # the point of failure. exit_status=$EXIT_SUCCESS # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath=$0 # The name of this program. progname=`$ECHO "$progpath" |$SED "$sed_basename"` # Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` progpath=$progdir/$progname ;; *) _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS=$_G_IFS test -x "$progdir/$progname" && break done IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` progpath=$progdir/$progname ;; esac ## ----------------- ## ## Standard options. ## ## ----------------- ## # The following options affect the operation of the functions defined # below, and should be set appropriately depending on run-time para- # meters passed on the command line. opt_dry_run=false opt_quiet=false opt_verbose=false # Categories 'all' and 'none' are always available. Append any others # you will pass as the first argument to func_warning from your own # code. warning_categories= # By default, display warnings according to 'opt_warning_types'. Set # 'warning_func' to ':' to elide all warnings, or func_fatal_error to # treat the next displayed warning as a fatal error. warning_func=func_warn_and_continue # Set to 'all' to display all warnings, 'none' to suppress all # warnings, or a space delimited list of some subset of # 'warning_categories' to display only the listed warnings. opt_warning_types=all ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Call them using their associated # 'require_*' variable to ensure that they are executed, at most, once. # # It's entirely deliberate that calling these functions can set # variables that don't obey the namespace limitations obeyed by the rest # of this file, in order that that they be as useful as possible to # callers. # require_term_colors # ------------------- # Allow display of bold text on terminals that support it. require_term_colors=func_require_term_colors func_require_term_colors () { $debug_cmd test -t 1 && { # COLORTERM and USE_ANSI_COLORS environment variables take # precedence, because most terminfo databases neglect to describe # whether color sequences are supported. test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} if test 1 = "$USE_ANSI_COLORS"; then # Standard ANSI escape sequences tc_reset='' tc_bold=''; tc_standout='' tc_red=''; tc_green='' tc_blue=''; tc_cyan='' else # Otherwise trust the terminfo database after all. test -n "`tput sgr0 2>/dev/null`" && { tc_reset=`tput sgr0` test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` tc_standout=$tc_bold test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` } fi } require_term_colors=: } ## ----------------- ## ## Function library. ## ## ----------------- ## # This section contains a variety of useful functions to call in your # scripts. Take note of the portable wrappers for features provided by # some modern shells, which will fall back to slower equivalents on # less featureful shells. # func_append VAR VALUE # --------------------- # Append VALUE onto the existing contents of VAR. # We should try to minimise forks, especially on Windows where they are # unreasonably slow, so skip the feature probes when bash or zsh are # being used: if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then : ${_G_HAVE_ARITH_OP="yes"} : ${_G_HAVE_XSI_OPS="yes"} # The += operator was introduced in bash 3.1 case $BASH_VERSION in [12].* | 3.0 | 3.0*) ;; *) : ${_G_HAVE_PLUSEQ_OP="yes"} ;; esac fi # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # useable or anything else if it does not work. test -z "$_G_HAVE_PLUSEQ_OP" \ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ && _G_HAVE_PLUSEQ_OP=yes if test yes = "$_G_HAVE_PLUSEQ_OP" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_append () { $debug_cmd eval "$1+=\$2" }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_append () { $debug_cmd eval "$1=\$$1\$2" } fi # func_append_quoted VAR VALUE # ---------------------------- # Quote VALUE and append to the end of shell variable VAR, separated # by a space. if test yes = "$_G_HAVE_PLUSEQ_OP"; then eval 'func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1+=\\ \$func_quote_for_eval_result" }' else func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1=\$$1\\ \$func_quote_for_eval_result" } fi # func_append_uniq VAR VALUE # -------------------------- # Append unique VALUE onto the existing contents of VAR, assuming # entries are delimited by the first character of VALUE. For example: # # func_append_uniq options " --another-option option-argument" # # will only append to $options if " --another-option option-argument " # is not already present somewhere in $options already (note spaces at # each end implied by leading space in second argument). func_append_uniq () { $debug_cmd eval _G_current_value='`$ECHO $'$1'`' _G_delim=`expr "$2" : '\(.\)'` case $_G_delim$_G_current_value$_G_delim in *"$2$_G_delim"*) ;; *) func_append "$@" ;; esac } # func_arith TERM... # ------------------ # Set func_arith_result to the result of evaluating TERMs. test -z "$_G_HAVE_ARITH_OP" \ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ && _G_HAVE_ARITH_OP=yes if test yes = "$_G_HAVE_ARITH_OP"; then eval 'func_arith () { $debug_cmd func_arith_result=$(( $* )) }' else func_arith () { $debug_cmd func_arith_result=`expr "$@"` } fi # func_basename FILE # ------------------ # Set func_basename_result to FILE with everything up to and including # the last / stripped. if test yes = "$_G_HAVE_XSI_OPS"; then # If this shell supports suffix pattern removal, then use it to avoid # forking. Hide the definitions single quotes in case the shell chokes # on unsupported syntax... _b='func_basename_result=${1##*/}' _d='case $1 in */*) func_dirname_result=${1%/*}$2 ;; * ) func_dirname_result=$3 ;; esac' else # ...otherwise fall back to using sed. _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` if test "X$func_dirname_result" = "X$1"; then func_dirname_result=$3 else func_append func_dirname_result "$2" fi' fi eval 'func_basename () { $debug_cmd '"$_b"' }' # func_dirname FILE APPEND NONDIR_REPLACEMENT # ------------------------------------------- # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. eval 'func_dirname () { $debug_cmd '"$_d"' }' # func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT # -------------------------------------------------------- # Perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # For efficiency, we do not delegate to the functions above but instead # duplicate the functionality here. eval 'func_dirname_and_basename () { $debug_cmd '"$_b"' '"$_d"' }' # func_echo ARG... # ---------------- # Echo program name prefixed message. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname: $_G_line" done IFS=$func_echo_IFS } # func_echo_all ARG... # -------------------- # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_echo_infix_1 INFIX ARG... # ------------------------------ # Echo program name, followed by INFIX on the first line, with any # additional lines not showing INFIX. func_echo_infix_1 () { $debug_cmd $require_term_colors _G_infix=$1; shift _G_indent=$_G_infix _G_prefix="$progname: $_G_infix: " _G_message=$* # Strip color escape sequences before counting printable length for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" do test -n "$_G_tc" && { _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` } done _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes func_echo_infix_1_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_infix_1_IFS $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 _G_prefix=$_G_indent done IFS=$func_echo_infix_1_IFS } # func_error ARG... # ----------------- # Echo program name prefixed message to standard error. func_error () { $debug_cmd $require_term_colors func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 } # func_fatal_error ARG... # ----------------------- # Echo program name prefixed message to standard error, and exit. func_fatal_error () { $debug_cmd func_error "$*" exit $EXIT_FAILURE } # func_grep EXPRESSION FILENAME # ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $debug_cmd $GREP "$1" "$2" >/dev/null 2>&1 } # func_len STRING # --------------- # Set func_len_result to the length of STRING. STRING may not # start with a hyphen. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_len () { $debug_cmd func_len_result=${#1} }' else func_len () { $debug_cmd func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } fi # func_mkdir_p DIRECTORY-PATH # --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { $debug_cmd _G_directory_path=$1 _G_dir_list= if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then # Protect directory names starting with '-' case $_G_directory_path in -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` func_mkdir_p_IFS=$IFS; IFS=: for _G_dir in $_G_dir_list; do IFS=$func_mkdir_p_IFS # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$_G_dir" 2>/dev/null || : done IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. test -d "$_G_directory_path" || \ func_fatal_error "Failed to create '$1'" fi } # func_mktempdir [BASENAME] # ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, BASENAME is the basename for that directory. func_mktempdir () { $debug_cmd _G_template=${TMPDIR-/tmp}/${1-$progname} if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race _G_tmpdir=$_G_template-${RANDOM-0}$$ func_mktempdir_umask=`umask` umask 0077 $MKDIR "$_G_tmpdir" umask $func_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$_G_tmpdir" || \ func_fatal_error "cannot create temporary directory '$_G_tmpdir'" fi $ECHO "$_G_tmpdir" } # func_normal_abspath PATH # ------------------------ # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. func_normal_abspath () { $debug_cmd # These SED scripts presuppose an absolute path with a trailing slash. _G_pathcar='s|^/\([^/]*\).*$|\1|' _G_pathcdr='s|^/[^/]*||' _G_removedotparts=':dotsl s|/\./|/|g t dotsl s|/\.$|/|' _G_collapseslashes='s|/\{1,\}|/|g' _G_finalslash='s|/*$|/|' # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` while :; do # Processed it all yet? if test / = "$func_normal_abspath_tpath"; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result"; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_notquiet ARG... # -------------------- # Echo program name prefixed message only when not in quiet mode. func_notquiet () { $debug_cmd $opt_quiet || func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_relative_path SRCDIR DSTDIR # -------------------------------- # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. func_relative_path () { $debug_cmd func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=$func_dirname_result if test -z "$func_relative_path_tlibdir"; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test -n "$func_stripname_result"; then func_append func_relative_path_result "/$func_stripname_result" fi # Normalisation. If bindir is libdir, return '.' else relative path. if test -n "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result" func_relative_path_result=$func_stripname_result fi test -n "$func_relative_path_result" || func_relative_path_result=. : } # func_quote_for_eval ARG... # -------------------------- # Aesthetically quote ARGs to be evaled later. # This function returns two values: # i) func_quote_for_eval_result # double-quoted, suitable for a subsequent eval # ii) func_quote_for_eval_unquoted_result # has all characters that are still active within double # quotes backslashified. func_quote_for_eval () { $debug_cmd func_quote_for_eval_unquoted_result= func_quote_for_eval_result= while test 0 -lt $#; do case $1 in *[\\\`\"\$]*) _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; *) _G_unquoted_arg=$1 ;; esac if test -n "$func_quote_for_eval_unquoted_result"; then func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" else func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" fi case $_G_unquoted_arg in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and variable expansion # for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_quoted_arg=\"$_G_unquoted_arg\" ;; *) _G_quoted_arg=$_G_unquoted_arg ;; esac if test -n "$func_quote_for_eval_result"; then func_append func_quote_for_eval_result " $_G_quoted_arg" else func_append func_quote_for_eval_result "$_G_quoted_arg" fi shift done } # func_quote_for_expand ARG # ------------------------- # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { $debug_cmd case $1 in *[\\\`\"]*) _G_arg=`$ECHO "$1" | $SED \ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; *) _G_arg=$1 ;; esac case $_G_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_arg=\"$_G_arg\" ;; esac func_quote_for_expand_result=$_G_arg } # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_stripname () { $debug_cmd # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary variable first. func_stripname_result=$3 func_stripname_result=${func_stripname_result#"$1"} func_stripname_result=${func_stripname_result%"$2"} }' else func_stripname () { $debug_cmd case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; esac } fi # func_show_eval CMD [FAIL_EXP] # ----------------------------- # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} func_quote_for_expand "$_G_cmd" eval "func_notquiet $func_quote_for_expand_result" $opt_dry_run || { eval "$_G_cmd" _G_status=$? if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_show_eval_locale CMD [FAIL_EXP] # ------------------------------------ # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} $opt_quiet || { func_quote_for_expand "$_G_cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || { eval "$_G_user_locale $_G_cmd" _G_status=$? eval "$_G_safe_locale" if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_tr_sh # ---------- # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { $debug_cmd case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_verbose ARG... # ------------------- # Echo program name prefixed message in verbose mode only. func_verbose () { $debug_cmd $opt_verbose && func_echo "$*" : } # func_warn_and_continue ARG... # ----------------------------- # Echo program name prefixed warning message to standard error. func_warn_and_continue () { $debug_cmd $require_term_colors func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 } # func_warning CATEGORY ARG... # ---------------------------- # Echo program name prefixed warning message to standard error. Warning # messages can be filtered according to CATEGORY, where this function # elides messages where CATEGORY is not listed in the global variable # 'opt_warning_types'. func_warning () { $debug_cmd # CATEGORY must be in the warning_categories list! case " $warning_categories " in *" $1 "*) ;; *) func_internal_error "invalid warning category '$1'" ;; esac _G_category=$1 shift case " $opt_warning_types " in *" $_G_category "*) $warning_func ${1+"$@"} ;; esac } # func_sort_ver VER1 VER2 # ----------------------- # 'sort -V' is not generally available. # Note this deviates from the version comparison in automake # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old # version formats or redundant trailing .0 in bootstrap.conf. # If we did want full compatibility then we should probably # use m4_version_compare from autoconf. func_sort_ver () { $debug_cmd printf '%s\n%s\n' "$1" "$2" \ | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n } # func_lt_ver PREV CURR # --------------------- # Return true if PREV and CURR are in the correct order according to # func_sort_ver, otherwise false. Use it like this: # # func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." func_lt_ver () { $debug_cmd test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: #! /bin/sh # Set a version string for this script. scriptversion=2014-01-07.03; # UTC # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 # Copyright (C) 2010-2015 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. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # This file is a library for parsing options in your shell scripts along # with assorted other useful supporting features that you can make use # of too. # # For the simplest scripts you might need only: # # #!/bin/sh # . relative/path/to/funclib.sh # . relative/path/to/options-parser # scriptversion=1.0 # func_options ${1+"$@"} # eval set dummy "$func_options_result"; shift # ...rest of your script... # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file # starting with '# Written by ' and ending with '# warranty; '. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the # '# Written by ' line, like the one at the top of this file. # # The default options also support '--debug', which will turn on shell # execution tracing (see the comment above debug_cmd below for another # use), and '--verbose' and the func_verbose function to allow your script # to display verbose messages only when your user has specified # '--verbose'. # # After sourcing this file, you can plug processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. ## -------------- ## ## Configuration. ## ## -------------- ## # You should override these variables in your script after sourcing this # file so that they reflect the customisations you have added to the # option parser. # The usage line for option parsing errors and the start of '-h' and # '--help' output messages. You can embed shell variables for delayed # expansion at the time the message is displayed, but you will need to # quote other shell meta-characters carefully to prevent them being # expanded when the contents are evaled. usage='$progpath [OPTION]...' # Short help message in response to '-h' and '--help'. Add to this or # override it after sourcing this library to reflect the full set of # options your script accepts. usage_message="\ --debug enable verbose shell tracing -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -v, --verbose verbosely report processing --version print version information and exit -h, --help print short or long help message and exit " # Additional text appended to 'usage_message' in response to '--help'. long_help_message=" Warning categories include: 'all' show all warnings 'none' turn off all the warnings 'error' warnings are treated as fatal errors" # Help message printed before fatal option parsing errors. fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## ## Hook function management. ## ## ------------------------- ## # This section contains functions for adding, removing, and running hooks # to the main code. A hook is just a named list of of function, that can # be run in order later on. # func_hookable FUNC_NAME # ----------------------- # Declare that FUNC_NAME will run hooks added with # 'func_add_hook FUNC_NAME ...'. func_hookable () { $debug_cmd func_append hookable_fns " $1" } # func_add_hook FUNC_NAME HOOK_FUNC # --------------------------------- # Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must # first have been declared "hookable" by a call to 'func_hookable'. func_add_hook () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not accept hook functions." ;; esac eval func_append ${1}_hooks '" $2"' } # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ # Remove HOOK_FUNC from the list of functions called by FUNC_NAME. func_remove_hook () { $debug_cmd eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' } # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. # It is assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. func_run_hooks () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook funcions.n" ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do eval $_G_hook '"$@"' # store returned options list back into positional # parameters for next 'cmd' execution. eval _G_hook_result=\$${_G_hook}_result eval set dummy "$_G_hook_result"; shift done func_quote_for_eval ${1+"$@"} func_run_hooks_result=$func_quote_for_eval_result } ## --------------- ## ## Option parsing. ## ## --------------- ## # In order to add your own option parsing hooks, you must accept the # full positional parameter list in your hook function, remove any # options that you action, and then pass back the remaining unprocessed # options in '_result', escaped suitably for # 'eval'. Like this: # # my_options_prep () # { # $debug_cmd # # # Extend the existing usage message. # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' # # func_quote_for_eval ${1+"$@"} # my_options_prep_result=$func_quote_for_eval_result # } # func_add_hook func_options_prep my_options_prep # # # my_silent_option () # { # $debug_cmd # # # Note that for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in # --silent|-s) opt_silent=: ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift # ;; # *) set dummy "$_G_opt" "$*"; shift; break ;; # esac # done # # func_quote_for_eval ${1+"$@"} # my_silent_option_result=$func_quote_for_eval_result # } # func_add_hook func_parse_options my_silent_option # # # my_option_validation () # { # $debug_cmd # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # # func_quote_for_eval ${1+"$@"} # my_option_validation_result=$func_quote_for_eval_result # } # func_add_hook func_validate_options my_option_validation # # You'll alse need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the # individual implementations for details. func_hookable func_options func_options () { $debug_cmd func_options_prep ${1+"$@"} eval func_parse_options \ ${func_options_prep_result+"$func_options_prep_result"} eval func_validate_options \ ${func_parse_options_result+"$func_parse_options_result"} eval func_run_hooks func_options \ ${func_validate_options_result+"$func_validate_options_result"} # save modified positional parameters for caller func_options_result=$func_run_hooks_result } # func_options_prep [ARG]... # -------------------------- # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propogate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before # returning. func_hookable func_options_prep func_options_prep () { $debug_cmd # Option defaults: opt_verbose=false opt_warning_types= func_run_hooks func_options_prep ${1+"$@"} # save modified positional parameters for caller func_options_prep_result=$func_run_hooks_result } # func_parse_options [ARG]... # --------------------------- # The main option parsing loop. func_hookable func_parse_options func_parse_options () { $debug_cmd func_parse_options_result= # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. func_run_hooks func_parse_options ${1+"$@"} # Adjust func_parse_options positional parameters to match eval set dummy "$func_run_hooks_result"; shift # Break out of the loop if we already parsed every option. test $# -gt 0 || break _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' func_echo "enabling shell trace mode" $debug_cmd ;; --no-warnings|--no-warning|--no-warn) set dummy --warnings none ${1+"$@"} shift ;; --warnings|--warning|-W) test $# = 0 && func_missing_arg $_G_opt && break case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above func_append_uniq opt_warning_types " $1" ;; *all) opt_warning_types=$warning_categories ;; *none) opt_warning_types=none warning_func=: ;; *error) opt_warning_types=$warning_categories warning_func=func_fatal_error ;; *) func_fatal_error \ "unsupported warning category: '$1'" ;; esac shift ;; --verbose|-v) opt_verbose=: ;; --version) func_version ;; -\?|-h) func_usage ;; --help) func_help ;; # Separate optargs to long options (plugins may need this): --*=*) func_split_equals "$_G_opt" set dummy "$func_split_equals_lhs" \ "$func_split_equals_rhs" ${1+"$@"} shift ;; # Separate optargs to short options: -W*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "$func_split_short_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-v*|-x*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} func_parse_options_result=$func_quote_for_eval_result } # func_validate_options [ARG]... # ------------------------------ # Perform any sanity checks on option settings and/or unconsumed # arguments. func_hookable func_validate_options func_validate_options () { $debug_cmd # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" func_run_hooks func_validate_options ${1+"$@"} # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE # save modified positional parameters for caller func_validate_options_result=$func_run_hooks_result } ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of the # hookable option parser framework in ascii-betical order. # func_fatal_help ARG... # ---------------------- # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { $debug_cmd eval \$ECHO \""Usage: $usage"\" eval \$ECHO \""$fatal_help"\" func_error ${1+"$@"} exit $EXIT_FAILURE } # func_help # --------- # Echo long help message to standard output and exit. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message" exit 0 } # func_missing_arg ARGNAME # ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $debug_cmd func_error "Missing argument for '$1'." exit_cmd=exit } # func_split_equals STRING # ------------------------ # Set func_split_equals_lhs and func_split_equals_rhs shell variables after # splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_equals () { $debug_cmd func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} test "x$func_split_equals_lhs" = "x$1" \ && func_split_equals_rhs= }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_equals () { $debug_cmd func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= test "x$func_split_equals_lhs" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals # func_split_short_opt SHORTOPT # ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_short_opt () { $debug_cmd func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"} }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_short_opt () { $debug_cmd func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt # func_usage # ---------- # Echo short help message to standard output and exit. func_usage () { $debug_cmd func_usage_message $ECHO "Run '$progname --help |${PAGER-more}' for full usage" exit 0 } # func_usage_message # ------------------ # Echo short help message to standard output. func_usage_message () { $debug_cmd eval \$ECHO \""Usage: $usage"\" echo $SED -n 's|^# || /^Written by/{ x;p;x } h /^Written by/q' < "$progpath" echo eval \$ECHO \""$usage_message"\" } # func_version # ------------ # Echo version message to standard output and exit. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' /(C)/!b go :more /\./!{ N s|\n# | | b more } :go /^# Written by /,/# warranty; / { s|^# || s|^# *$|| s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| p } /^# Written by / { s|^# || p } /^warranty; /q' < "$progpath" exit $? } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. scriptversion='(GNU libtool) 2.4.6' # func_echo ARG... # ---------------- # Libtool also displays the current mode in messages, so override # funclib.sh func_echo with this custom definition. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" done IFS=$func_echo_IFS } # func_warning ARG... # ------------------- # Libtool warnings are not categorized, so override funclib.sh # func_warning with this simpler definition. func_warning () { $debug_cmd $warning_func ${1+"$@"} } ## ---------------- ## ## Options parsing. ## ## ---------------- ## # Hook in the functions to make sure our own options are parsed during # the option parsing loop. usage='$progpath [OPTION]... [MODE-ARG]...' # Short help message in response to '-h'. usage_message="Options: --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --mode=MODE use operation mode MODE --no-warnings equivalent to '-Wnone' --preserve-dup-deps don't remove duplicate dependency libraries --quiet, --silent don't print informational messages --tag=TAG use configuration variables from tag TAG -v, --verbose print more informational messages than default --version print version information -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -h, --help, --help-all print short, long, or detailed help message " # Additional text appended to 'usage_message' in response to '--help'. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. When passed as first option, '--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. Try '$progname --help --mode=MODE' for a more detailed description of MODE. When reporting a bug, please describe a test case to reproduce it and include the following information: host-triplet: $host shell: $SHELL compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) version: $progname $scriptversion Debian-2.4.6-2 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . GNU libtool home page: . General help using GNU software: ." exit 0 } # func_lo2o OBJECT-NAME # --------------------- # Transform OBJECT-NAME from a '.lo' suffix to the platform specific # object suffix. lo2o=s/\\.lo\$/.$objext/ o2lo=s/\\.$objext\$/.lo/ if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_lo2o () { case $1 in *.lo) func_lo2o_result=${1%.lo}.$objext ;; * ) func_lo2o_result=$1 ;; esac }' # func_xform LIBOBJ-OR-SOURCE # --------------------------- # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) # suffix to a '.lo' libtool-object suffix. eval 'func_xform () { func_xform_result=${1%.*}.lo }' else # ...otherwise fall back to using sed. func_lo2o () { func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` } func_xform () { func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` } fi # func_fatal_configuration ARG... # ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func__fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } # func_config # ----------- # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # ------------- # Display the features supported by this script. func_features () { echo "host: $host" if test yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi if test yes = "$build_old_libs"; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag TAGNAME # ----------------------- # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname=$1 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf=/$re_begincf/,/$re_endcf/p # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # libtool_options_prep [ARG]... # ----------------------------- # Preparation for options parsed by libtool. libtool_options_prep () { $debug_mode # Option defaults: opt_config=false opt_dlopen= opt_dry_run=false opt_help=false opt_mode= opt_preserve_dup_deps=false opt_quiet=false nonopt= preserve_args= # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Pass back the list of options. func_quote_for_eval ${1+"$@"} libtool_options_prep_result=$func_quote_for_eval_result } func_add_hook func_options_prep libtool_options_prep # libtool_parse_options [ARG]... # --------------------------------- # Provide handling for libtool specific options. libtool_parse_options () { $debug_cmd # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do _G_opt=$1 shift case $_G_opt in --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) func_config ;; --dlopen|-dlopen) opt_dlopen="${opt_dlopen+$opt_dlopen }$1" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) func_features ;; --finish) set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $_G_opt && break opt_mode=$1 case $1 in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $_G_opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_quiet=false func_append preserve_args " $_G_opt" ;; --no-warnings|--no-warning|--no-warn) opt_warning=false func_append preserve_args " $_G_opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $_G_opt" ;; --silent|--quiet) opt_quiet=: opt_verbose=false func_append preserve_args " $_G_opt" ;; --tag) test $# = 0 && func_missing_arg $_G_opt && break opt_tag=$1 func_append preserve_args " $_G_opt $1" func_enable_tag "$1" shift ;; --verbose|-v) opt_quiet=false opt_verbose=: func_append preserve_args " $_G_opt" ;; # An option not handled by this hook function: *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} libtool_parse_options_result=$func_quote_for_eval_result } func_add_hook func_parse_options libtool_parse_options # libtool_validate_options [ARG]... # --------------------------------- # Perform any sanity checks on option settings and/or unconsumed # arguments. libtool_validate_options () { # save first non-option argument if test 0 -lt $#; then nonopt=$1 shift fi # preserve --debug test : = "$debug_cmd" || func_append preserve_args " --debug" case $host in # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match test yes != "$build_libtool_libs" \ && test yes != "$build_old_libs" \ && func_fatal_configuration "not configured to build any kind of library" # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test execute != "$opt_mode"; then func_error "unrecognized option '-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help=$help help="Try '$progname --help --mode=$opt_mode' for more information." } # Pass back the unparsed argument list func_quote_for_eval ${1+"$@"} libtool_validate_options_result=$func_quote_for_eval_result } func_add_hook func_validate_options libtool_validate_options # Process options as early as possible so that --help and --version # can return quickly. func_options ${1+"$@"} eval set dummy "$func_options_result"; shift ## ----------- ## ## Main. ## ## ----------- ## magic='%%%MAGIC variable%%%' magic_exe='%%%MAGIC EXE variable%%%' # Global variables. extracted_archives= extracted_serial=0 # 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= # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # func_generated_by_libtool # True iff stdin has been generated by Libtool. This function is only # a basic sanity check; it will hardly flush out determined imposters. func_generated_by_libtool_p () { $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if 'file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case $lalib_p_line in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test yes = "$lalib_p" } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { test -f "$1" && $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $debug_cmd save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # 'FILE.' does not work on cygwin managed mounts. func_source () { $debug_cmd case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case $lt_sysroot:$1 in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result='='$func_stripname_result ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $debug_cmd if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with '--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=$1 if test yes = "$build_libtool_libs"; then write_lobj=\'$2\' else write_lobj=none fi if test yes = "$build_old_libs"; then write_oldobj=\'$3\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $debug_cmd # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result= if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result"; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $debug_cmd if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $debug_cmd # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $debug_cmd if test -z "$2" && test -n "$1"; then func_error "Could not determine host file name corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result=$1 fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $debug_cmd if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " '$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result=$3 fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $debug_cmd case $4 in $1 ) func_to_host_path_result=$3$func_to_host_path_result ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via '$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $debug_cmd $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $debug_cmd case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result=$1 } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result=$func_convert_core_msys_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result=$func_convert_core_file_wine_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via '$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $debug_cmd if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd=func_convert_path_$func_stripname_result fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $debug_cmd func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result=$1 } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_msys_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_path_wine_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_dll_def_p FILE # True iff FILE is a Windows DLL '.def' file. # Keep in sync with _LT_DLL_DEF_P in libtool.m4 func_dll_def_p () { $debug_cmd func_dll_def_p_tmp=`$SED -n \ -e 's/^[ ]*//' \ -e '/^\(;.*\)*$/d' \ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ -e q \ "$1"` test DEF = "$func_dll_def_p_tmp" } # func_mode_compile arg... func_mode_compile () { $debug_cmd # Get the compilation command and the source file. base_compile= srcfile=$nonopt # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg=$arg arg_mode=normal ;; target ) libobj=$arg arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify '-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs=$IFS; IFS=, for arg in $args; do IFS=$save_ifs func_append_quoted lastarg "$arg" done IFS=$save_ifs func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg=$srcfile srcfile=$arg ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with '-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj=$func_basename_result } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from '$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test yes = "$build_libtool_libs" \ || func_fatal_configuration "cannot build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname=$func_basename_result xdir=$func_dirname_result lobj=$xdir$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test yes = "$build_old_libs"; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; 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 no = "$compiler_c_o"; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext lockfile=$output_obj.lock else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test yes = "$need_locks"; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test warn = "$need_locks"; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test no != "$pic_mode"; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test yes = "$build_old_libs"; then if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test yes = "$compiler_c_o"; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test compile = "$opt_mode" && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a '.o' file suitable for static linking -static only build a '.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix '.c' with the library object suffix, '.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to '-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the '--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the 'install' or 'cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE use a list of object files found in FILE to specify objects -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with '-') are ignored. Every other argument is treated as a filename. Files ending in '.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in '.la', then a libtool library is created, only library objects ('.lo' files) may be specified, and '-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created using 'ar' and 'ranlib', or on Windows using 'lib'. If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode '$opt_mode'" ;; esac echo $ECHO "Try '$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test : = "$opt_help"; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | $SED -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | $SED '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $debug_cmd # The first argument is the command name. cmd=$nonopt test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "'$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "'$file' was not linked with '-export-dynamic'" continue fi func_dirname "$file" "" "." dir=$func_dirname_result if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir=$func_dirname_result ;; *) func_warning "'-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir=$absdir # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic=$magic # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file=$progdir/$program elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file=$progdir/$program fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if $opt_dry_run; then # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS else if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd=\$cmd$args fi } test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $debug_cmd libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "'$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument '$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and '=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_quiet && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 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" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $debug_cmd # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=false stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=: ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test X-m = "X$prev" && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the '$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=: if $isdir; then destdir=$dest destname= else func_dirname_and_basename "$dest" "" "." destdir=$func_dirname_result destname=$func_basename_result # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "'$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "'$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir=$func_dirname_result func_append 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 -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$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 func_warning "relinking '$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname=$1 shift srcname=$realname test -n "$relink_command" && srcname=${realname}T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme=$stripme case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme= ;; esac ;; os2*) case $realname in *_dll.a) tstripme= ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try 'ln -sf' first, because the 'ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib=$destdir/$realname func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name=$func_basename_result instname=$dir/${name}i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest=$destfile destfile= ;; *) func_fatal_help "cannot copy a libtool object to '$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test yes = "$build_old_libs"; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext= case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=.exe fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script '$wrapper'" finalize=: for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` if test -n "$libdir" && test ! -f "$libfile"; then func_warning "'$lib' has not been installed in '$libdir'" finalize=false fi done relink_command= func_source "$wrapper" outputname= if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { if $finalize; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file=$func_basename_result outputname=$tmpdir/$file # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink '$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file=$outputname else func_warning "cannot relink '$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name=$func_basename_result # Set up the ranlib parameters. oldlib=$destdir/$name func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run '$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test install = "$opt_mode" && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $debug_cmd my_outputname=$1 my_originator=$2 my_pic_p=${3-false} my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms=${my_outputname}S.c else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist=$output_objdir/$my_outputname.nm func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* External symbol declarations for the compiler. */\ " if test yes = "$dlself"; then func_verbose "generating symbol list for '$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from '$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols=$output_objdir/$outputname.exp $opt_dry_run || { $RM $export_symbols eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from '$dlprefile'" func_basename "$dlprefile" name=$func_basename_result case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename= if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname"; then func_basename "$dlprefile_dlname" dlprefile_dlbasename=$func_basename_result else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename"; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi func_show_eval '$RM "${nlist}I"' if test -n "$global_symbol_to_import"; then eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[];\ " if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ static void lt_syminit(void) { LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; for (; symbol->name; ++symbol) {" $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" echo >> "$output_objdir/$my_dlsyms" "\ } }" fi echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = { {\"$my_originator\", (void *) 0}," if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ {\"@INIT@\", (void *) <_syminit}," fi case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' # Transform the symbol file into the correct name. symfileobj=$output_objdir/${my_outputname}S.$objext case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for '$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $debug_cmd win32_libid_type=unknown win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then case $nm_interface in "MS dumpbin") if func_cygming_ms_implib_p "$1" || func_cygming_gnu_implib_p "$1" then win32_nmres=import else win32_nmres= fi ;; *) func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s|.*|import| p q } }'` ;; esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $debug_cmd sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $debug_cmd match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive that possess that section. Heuristic: eliminate # all those that have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $debug_cmd if func_cygming_gnu_implib_p "$1"; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1"; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result= fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $debug_cmd f_ex_an_ar_dir=$1; shift f_ex_an_ar_oldlib=$1 if test yes = "$lock_old_archive_extraction"; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test yes = "$lock_old_archive_extraction"; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $debug_cmd my_gentop=$1; shift my_oldlibs=${1+"$@"} my_oldobjs= my_xlib= my_xabs= my_xdir= for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib=$func_basename_result my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir=$my_gentop/$my_xlib_u func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` func_basename "$darwin_archive" darwin_base_archive=$func_basename_result darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches; do func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" cd "unfat-$$/$darwin_base_archive-$darwin_arch" func_extract_an_archive "`pwd`" "$darwin_base_archive" cd "$darwin_curdir" $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result=$my_oldobjs } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory where it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options that match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED '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 \"\$file\" | $SED '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 \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test yes = "$fast_install"; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${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\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* declarations of non-ANSI functions */ #if defined __MINGW32__ # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined other_platform || defined ... */ #endif /* portability defines, excluding path handling macros */ #if defined _MSC_VER # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC #elif defined __MINGW32__ # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined __CYGWIN__ # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined other platforms ... */ #endif #if defined PATH_MAX # define LT_PATHMAX PATH_MAX #elif defined MAXPATHLEN # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ defined __OS2__ # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free (stale); stale = 0; } \ } while (0) #if defined LT_DEBUGWRAPPER static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; size_t tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined HAVE_DOS_BASED_FILE_SYSTEM if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined HAVE_DOS_BASED_FILE_SYSTEM } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = (size_t) (q - p); p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (STREQ (str, pat)) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else size_t len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { size_t orig_value_len = strlen (orig_value); size_t add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ size_t len = strlen (new_value); while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[--len] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $debug_cmd case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_suncc_cstd_abi # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! # Several compiler flags select an ABI that is incompatible with the # Cstd library. Avoid specifying it if any are in CXXFLAGS. func_suncc_cstd_abi () { $debug_cmd case " $compile_command " in *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) suncc_use_cstd_abi=no ;; *) suncc_use_cstd_abi=yes ;; esac } # func_mode_link arg... func_mode_link () { $debug_cmd case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # what system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll that has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=false prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module=$wl-single_module func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test yes != "$build_libtool_libs" \ && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg=$1 shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir=$arg prev= continue ;; dlfiles|dlprefiles) $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=: } case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test no = "$dlself"; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test dlprefiles = "$prev"; then dlself=yes elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test dlfiles = "$prev"; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols=$arg test -f "$arg" \ || func_fatal_error "symbol file '$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex=$arg prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir=$arg prev= continue ;; mllvm) # Clang does not use LLVM to link, so we can simply discard any # '-mllvm $arg' options when doing the link step. prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result if test none != "$pic_object"; then # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object fi # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file '$arg' does not exist" fi arg=$save_arg prev= continue ;; os2dllname) os2dllname=$arg prev= continue ;; precious_regex) precious_files_regex=$arg prev= continue ;; release) release=-$arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test rpath = "$prev"; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds=$arg prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg=$arg case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "'-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test X-export-symbols = "X$arg"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between '-L' and '$1'" else func_fatal_error "need path for '-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of '$dir'" dir=$absdir ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test X-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test X-lc = "X$arg" && continue ;; esac elif test X-lc_r = "X$arg"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -mllvm) prev=mllvm continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module=$wl-multi_module continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "'-no-install' is ignored for $host" func_warning "assuming '-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -os2dllname) prev=os2dllname continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # -fstack-protector* stack protector flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization # -specs=* GCC specs files # -stdlib=* select c++ std lib with clang # -fsanitize=* Clang/GCC memory and address sanitizer -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ -specs=*|-fsanitize=*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; -Z*) if test os2 = "`expr $host : '.*\(os2\)'`"; then # OS/2 uses -Zxxx to specify OS/2-specific options compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case $arg in -Zlinker | -Zstack) prev=xcompiler ;; esac continue else # Otherwise treat like 'Some other compiler flag' below func_quote_for_eval "$arg" arg=$func_quote_for_eval_result fi ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result test none = "$pic_object" || { # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object } # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test dlfiles = "$prev"; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test dlprefiles = "$prev"; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the '$prevarg' option requires an argument" if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname=$func_basename_result libobjs_save=$libobjs if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'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\" # Definition is injected by LT_CONFIG during libtool generation. func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" func_dirname "$output" "/" "" output_objdir=$func_dirname_result$objdir func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test lib = "$linkmode"; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=false newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test lib,link = "$linkmode,$pass"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs=$tmp_deplibs fi if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass"; then libs=$deplibs deplibs= fi if test prog = "$linkmode"; then case $pass in dlopen) libs=$dlfiles ;; dlpreopen) libs=$dlprefiles ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi if test lib,dlpreopen = "$linkmode,$pass"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs=$dlprefiles fi if test dlopen = "$pass"; then # Collect dlpreopened libraries save_deplibs=$deplibs deplibs= fi for deplib in $libs; do lib= found=false case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test lib != "$linkmode" && test prog != "$linkmode"; then func_warning "'-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test lib = "$linkmode"; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib=$searchdir/lib$name$search_ext if test -f "$lib"; then if test .la = "$search_ext"; then found=: else found=false fi break 2 fi done done if $found; then # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll=$l done if test "X$ll" = "X$old_library"; then # only static version available found=false func_dirname "$lib" "" "." ladir=$func_dirname_result lib=$ladir/$old_library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi else # deplib doesn't seem to be a libtool library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi ;; # -l *.ltframework) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test conv = "$pass" && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi if test scan = "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "'-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test link = "$pass"; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=false case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=: fi ;; pass_all) valid_a_lib=: ;; esac if $valid_a_lib; then echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" else echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." fi ;; esac continue ;; prog) if test link != "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test conv = "$pass"; then deplibs="$deplib $deplibs" elif test prog = "$linkmode"; then if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=: continue ;; esac # case $deplib $found || test -f "$lib" \ || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "'$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir=$func_dirname_result dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass" || { test prog != "$linkmode" && test lib != "$linkmode"; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test conv = "$pass"; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for '$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done elif test prog != "$linkmode" && test lib != "$linkmode"; then func_fatal_error "'$lib' is not a convenience library" fi continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test yes = "$prefer_static_libs" || test built,no = "$prefer_static_libs,$installed"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib=$l done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for '$lib'" fi # This library was specified with -dlopen. if test dlopen = "$pass"; then test -z "$libdir" \ && func_fatal_error "cannot -dlopen a convenience library: '$lib'" if test -z "$dlname" || test yes != "$dlopen_support" || test no = "$build_libtool_libs" then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of '$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir=$ladir fi ;; esac func_basename "$lib" laname=$func_basename_result # Find the relevant object directory and library name. if test yes = "$installed"; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library '$lib' was moved." dir=$ladir absdir=$abs_ladir libdir=$abs_ladir else dir=$lt_sysroot$libdir absdir=$lt_sysroot$libdir fi test yes = "$hardcode_automatic" && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir=$ladir absdir=$abs_ladir # Remove this search path later func_append notinst_path " $abs_ladir" else dir=$ladir/$objdir absdir=$abs_ladir/$objdir # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test dlpreopen = "$pass"; then if test -z "$libdir" && test prog = "$linkmode"; then func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" fi case $host in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test lib = "$linkmode"; then deplibs="$dir/$old_library $deplibs" elif test prog,link = "$linkmode,$pass"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test prog = "$linkmode" && test link != "$pass"; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=false if test no != "$link_all_deplibs" || test -z "$library_names" || test no = "$build_libtool_libs"; then linkalldeplibs=: fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if $linkalldeplibs; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test prog,link = "$linkmode,$pass"; then if test -n "$library_names" && { { test no = "$prefer_static_libs" || test built,yes = "$prefer_static_libs,$installed"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then # Make sure the rpath contains only unique directories. case $temp_rpath: in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if $alldeplibs && { test pass_all = "$deplibs_check_method" || { test yes = "$build_libtool_libs" && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test built = "$use_static_libs" && test yes = "$installed"; then use_static_libs=no fi if test -n "$library_names" && { test no = "$use_static_libs" || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc* | *os2*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test no = "$installed"; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule= for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule=$dlpremoduletest break fi done if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then echo if test prog = "$linkmode"; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test lib = "$linkmode" && test yes = "$hardcode_into_libs"; 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 "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname=$1 shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname=$dlname elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc* | *os2*) func_arith $current - $age major=$func_arith_result versuffix=-$major ;; esac eval soname=\"$soname_spec\" else soname=$realname fi # Make a new name for the extract_expsyms_cmds to use soroot=$soname func_basename "$soroot" soname=$func_basename_result func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from '$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for '$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test prog = "$linkmode" || test relink != "$opt_mode"; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test no = "$hardcode_direct"; then add=$dir/$linklib case $host in *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; *-*-sysv4*uw2*) add_dir=-L$dir ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir=-L$dir ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we cannot # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library"; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add=$dir/$old_library fi elif test -n "$old_library"; then add=$dir/$old_library fi fi esac elif test no = "$hardcode_minus_L"; then case $host in *-*-sunos*) add_shlibpath=$dir ;; esac add_dir=-L$dir add=-l$name elif test no = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; relink) if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$dir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$absdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name elif test yes = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; *) lib_linked=no ;; esac if test yes != "$lib_linked"; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test prog = "$linkmode"; 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 yes != "$hardcode_direct" && test yes != "$hardcode_minus_L" && test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test prog = "$linkmode" || test relink = "$opt_mode"; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$libdir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$libdir add=-l$name elif test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add=-l$name elif test yes = "$hardcode_automatic"; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib"; then add=$inst_prefix_dir$libdir/$linklib else add=$libdir/$linklib fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir=-L$libdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name fi if test prog = "$linkmode"; 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 prog = "$linkmode"; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test unsupported != "$hardcode_direct"; 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 yes = "$build_libtool_libs"; then # Not a shared library if test pass_all != "$deplibs_check_method"; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system cannot link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test yes = "$module"; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test lib = "$linkmode"; then if test -n "$dependency_libs" && { test yes != "$hardcode_into_libs" || test yes = "$build_old_libs" || test yes = "$link_static"; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs=$temp_deplibs fi func_append newlib_search_path " $absdir" # Link against this library test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test no != "$link_all_deplibs"; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path=$deplib ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of '$dir'" absdir=$dir fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names"; then for tmp in $deplibrary_names; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl"; then depdepl=$absdir/$objdir/$depdepl darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" path= fi fi ;; *) path=-L$absdir/$objdir ;; esac else eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "'$deplib' seems to be moved" path=-L$absdir fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test link = "$pass"; then if test prog = "$linkmode"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs=$newdependency_libs if test dlpreopen = "$pass"; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test dlopen != "$pass"; then test conv = "$pass" || { # 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 "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= } if test prog,link = "$linkmode,$pass"; then vars="compile_deplibs finalize_deplibs" else vars=deplibs fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Add Sun CC postdeps if required: test CXX = "$tagname" && { case $host_os in linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; solaris*) func_cc_basename "$CC" case $func_cc_basename_result in CC* | sunCC*) func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; esac } # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i= ;; esac if test -n "$i"; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test prog = "$linkmode"; then dlfiles=$newdlfiles fi if test prog = "$linkmode" || test lib = "$linkmode"; then dlprefiles=$newdlprefiles fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "'-R' is ignored for archives" test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "'-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "'-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs=$output func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form 'libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test no = "$module" \ && func_fatal_help "libtool library '$output' must begin with 'lib'" if test no != "$need_lib_prefix"; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test pass_all != "$deplibs_check_method"; then func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test no = "$dlself" \ || func_warning "'-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test 1 -lt "$#" \ && func_warning "ignoring multiple '-rpath's for a libtool library" install_libdir=$1 oldlibs= if test -z "$rpath"; then if test yes = "$build_libtool_libs"; then # Building a libtool convenience library. # Some compilers have problems with a '.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "'-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs=$IFS; IFS=: set dummy $vinfo 0 0 0 shift IFS=$save_ifs test -n "$7" && \ func_fatal_help "too many parameters to '-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major=$1 number_minor=$2 number_revision=$3 # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # that has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|freebsd-elf|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_revision ;; freebsd-aout|qnx|sunos) current=$number_major revision=$number_minor age=0 ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_minor lt_irix_increment=no ;; *) func_fatal_configuration "$modename: unknown library version type '$version_type'" ;; esac ;; no) current=$1 revision=$2 age=$3 ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT '$current' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION '$revision' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE '$age' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE '$age' is greater than the current interface number '$current'" func_fatal_error "'$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" # On Darwin other compilers case $CC in nagfor*) verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" ;; *) verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; esac ;; freebsd-aout) major=.$current versuffix=.$current.$revision ;; freebsd-elf) func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; irix | nonstopux) if test no = "$lt_irix_increment"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring=$verstring_prefix$major.$revision # Add in all the interfaces that we are compatible with. loop=$revision while test 0 -ne "$loop"; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring_prefix$major.$iface:$verstring done # Before this point, $major must not contain '.'. major=.$major versuffix=$major.$revision ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=.$current.$age.$revision verstring=$current.$age.$revision # Add in all the interfaces that we are compatible with. loop=$age while test 0 -ne "$loop"; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring:$iface.0 done # Make executables depend on our current version. func_append verstring ":$current.0" ;; qnx) major=.$current versuffix=.$current ;; sco) major=.$current versuffix=.$current ;; sunos) major=.$current versuffix=.$current.$revision ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 file systems. func_arith $current - $age major=$func_arith_result versuffix=-$major ;; *) func_fatal_configuration "unknown library version type '$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring=0.0 ;; esac if test no = "$need_version"; then versuffix= else versuffix=.0.0 fi fi # Remove version info from name if versioning should be avoided if test yes,no = "$avoid_version,$need_version"; then major= versuffix= verstring= fi # Check to see if the archive will have undefined symbols. if test yes = "$allow_undefined"; then if test unsupported = "$allow_undefined_flag"; then if test yes = "$build_old_libs"; then func_warning "undefined symbols not allowed in $host shared libraries; building static only" build_libtool_libs=no else func_fatal_error "can't build $host shared library unless -no-undefined is specified" fi fi else # Don't allow undefined symbols. allow_undefined_flag=$no_undefined_flag fi fi func_generate_dlsyms "$libname" "$libname" : func_append libobjs " $symfileobj" test " " = "$libobjs" && libobjs= if test relink != "$opt_mode"; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) if test -n "$precious_files_regex"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "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 func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; 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 "*) ;; *) func_append 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 "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test yes = "$build_libtool_libs"; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test yes = "$build_libtool_need_lc"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release= versuffix= major= newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi 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 "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib= ;; esac fi if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib=$potent_lib # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs= tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test yes = "$allow_libtool_libs_with_static_runtimes"; then for i in $predeps $postdeps; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test none = "$deplibs_check_method"; 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 ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test yes = "$droppeddeps"; then if test yes = "$module"; 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 no = "$build_old_libs"; 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 no = "$allow_undefined"; 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 no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs=$new_libs # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test yes = "$build_libtool_libs"; then # Remove $wl instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test yes = "$hardcode_into_libs"; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath=$finalize_rpath test relink = "$opt_mode" || rpath=$compile_rpath$rpath for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result 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"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append 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 func_append 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 relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname=$1 shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname=$realname fi if test -z "$dlname"; then dlname=$soname fi lib=$output_objdir/$realname linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols=$output_objdir/$libname.uexp func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile func_dll_def_p "$export_symbols" || { # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols=$export_symbols export_symbols= always_export_symbols=yes } fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs=$IFS; IFS='~' for cmd1 in $cmds; do IFS=$save_ifs # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test yes = "$try_normal_branch" \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=$output_objdir/$output_la.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS=$save_ifs if test -n "$export_symbols_regex" && test : != "$skipped_export"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test : != "$skipped_export" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs=$tmp_deplibs if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test yes = "$compiler_needs_object" && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test : != "$skipped_export" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then output=$output_objdir/$output_la.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then output=$output_objdir/$output_la.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test yes = "$compiler_needs_object"; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-$k.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test -z "$objlist" || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test 1 -eq "$k"; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-$k.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-$k.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi ${skipped_export-false} && { func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi } test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs=$IFS; IFS='~' for cmd in $concat_cmds; do IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi ${skipped_export-false} && { if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi } libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs=$IFS; IFS='~' for cmd in $cmds; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs # Restore the uninstalled library and exit if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test yes = "$module" || test yes = "$export_dynamic"; then # On all known operating systems, these are identical. dlname=$soname fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "'-R' is ignored for objects" test -n "$vinfo" && \ func_warning "'-version-info' is ignored for objects" test -n "$release" && \ func_warning "'-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object '$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj=$output ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # if reload_cmds runs $LD directly, get rid of -Wl from # whole_archive_flag_spec and hope we can get by with turning comma # into space. case $reload_cmds in *\$LD[\ \$]*) wl= ;; esac if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags else gentop=$output_objdir/${obj}x func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test yes = "$build_libtool_libs" || libobjs=$non_pic_objects # Create the old-style object. reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs output=$obj func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi test yes = "$build_libtool_libs" || { if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS } if test -n "$pic_flag" || test default != "$pic_mode"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output=$libobj func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "'-version-info' is ignored for programs" test -n "$release" && \ func_warning "'-release' is ignored for programs" $preload \ && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test CXX = "$tagname"; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " $wl-bind_at_load" func_append finalize_command " $wl-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs=$new_libs func_append compile_command " $compile_deplibs" func_append 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 "*) ;; *) func_append 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"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath=$rpath rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append 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 yes = "$build_old_libs"; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" false # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=: case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=false ;; *cygwin* | *mingw* ) test yes = "$build_libtool_libs" || wrappers_required=false ;; *) if test no = "$need_relink" || test yes != "$build_libtool_libs"; then wrappers_required=false fi ;; esac $wrappers_required || { # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command=$compile_command$compile_rpath # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.$objext"; then func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' fi exit $exit_status } 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 func_append 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 func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test yes = "$no_install"; 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 "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi case $hardcode_action,$fast_install in relink,*) # Fast installation is not supported link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath func_warning "this platform does not like uninstalled shared libraries" func_warning "'$output' will be relinked during installation" ;; *,yes) link_command=$finalize_var$compile_command$finalize_rpath relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` ;; *,no) link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath ;; *,needless) link_command=$finalize_var$compile_command$finalize_rpath relink_command= ;; esac # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource=$output_path/$objdir/lt-$output_name.c cwrapper=$output_path/$output_name.exe $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host"; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do case $build_libtool_libs in convenience) oldobjs="$libobjs_save $symfileobj" addlibs=$convenience build_libtool_libs=no ;; module) oldobjs=$libobjs_save addlibs=$old_convenience build_libtool_libs=no ;; *) oldobjs="$old_deplibs $non_pic_objects" $preload && test -f "$symfileobj" \ && func_append oldobjs " $symfileobj" addlibs=$old_convenience ;; esac if test -n "$addlibs"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase=$func_basename_result case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj"; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test -z "$oldobjs"; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test yes = "$build_old_libs" && old_library=$libname.$libext func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test yes = "$hardcode_automatic"; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test yes = "$installed"; then if test -z "$install_libdir"; then break fi output=$output_objdir/${outputname}i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name=$func_basename_result func_resolve_sysroot "$deplib" eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs=$newdependency_libs newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles=$newdlprefiles else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles=$newdlprefiles fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test -n "$bindir"; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result/$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that cannot go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test no,yes = "$installed,$need_relink"; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } if test link = "$opt_mode" || test relink = "$opt_mode"; then func_mode_link ${1+"$@"} fi # func_mode_uninstall arg... func_mode_uninstall () { $debug_cmd RM=$nonopt files= rmforce=false 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) func_append RM " $arg"; rmforce=: ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir=$func_dirname_result if test . = "$dir"; then odir=$objdir else odir=$dir/$objdir fi func_basename "$file" name=$func_basename_result test uninstall = "$opt_mode" && odir=$dir # Remember odir for removal later, being careful to avoid duplicates if test clean = "$opt_mode"; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; 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 $rmforce; then continue fi rmfiles=$file case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case $opt_mode in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test none != "$pic_object"; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test none != "$non_pic_object"; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test clean = "$opt_mode"; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.$objext" if test yes = "$fast_install" && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name"; then func_append rmfiles " $odir/lt-$noexename.c" fi fi fi ;; esac func_show_eval "$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 func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then func_mode_uninstall ${1+"$@"} fi test -z "$opt_mode" && { help=$generic_help func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode '$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # where we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: hunspell-1.7.2/COPYING.LESSER0000644000175000017500000006364313565705656012361 00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! hunspell-1.7.2/m4/0000775000175000017500000000000014353370320010676 500000000000000hunspell-1.7.2/m4/visibility.m40000644000175000017500000000642713422074107013256 00000000000000# visibility.m4 serial 5 (gettext-0.18.2) dnl Copyright (C) 2005, 2008, 2010-2016 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Tests whether the compiler supports the command-line option dnl -fvisibility=hidden and the function and variable attributes dnl __attribute__((__visibility__("hidden"))) and dnl __attribute__((__visibility__("default"))). dnl Does *not* test for __visibility__("protected") - which has tricky dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on dnl Mac OS X. dnl Does *not* test for __visibility__("internal") - which has processor dnl dependent semantics. dnl Does *not* test for #pragma GCC visibility push(hidden) - which is dnl "really only recommended for legacy code". dnl Set the variable CFLAG_VISIBILITY. dnl Defines and sets the variable HAVE_VISIBILITY. AC_DEFUN([gl_VISIBILITY], [ AC_REQUIRE([AC_PROG_CC]) CFLAG_VISIBILITY= HAVE_VISIBILITY=0 if test -n "$GCC"; then dnl First, check whether -Werror can be added to the command line, or dnl whether it leads to an error because of some other option that the dnl user has put into $CC $CFLAGS $CPPFLAGS. AC_MSG_CHECKING([whether the -Werror option is usable]) AC_CACHE_VAL([gl_cv_cc_vis_werror], [ gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror" AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[]], [[]])], [gl_cv_cc_vis_werror=yes], [gl_cv_cc_vis_werror=no]) CFLAGS="$gl_save_CFLAGS"]) AC_MSG_RESULT([$gl_cv_cc_vis_werror]) dnl Now check whether visibility declarations are supported. AC_MSG_CHECKING([for simple visibility declarations]) AC_CACHE_VAL([gl_cv_cc_visibility], [ gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fvisibility=hidden" dnl We use the option -Werror and a function dummyfunc, because on some dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning dnl "visibility attribute not supported in this configuration; ignored" dnl at the first function definition in every compilation unit, and we dnl don't want to use the option in this case. if test $gl_cv_cc_vis_werror = yes; then CFLAGS="$CFLAGS -Werror" fi AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[extern __attribute__((__visibility__("hidden"))) int hiddenvar; extern __attribute__((__visibility__("default"))) int exportedvar; extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); extern __attribute__((__visibility__("default"))) int exportedfunc (void); void dummyfunc (void) {} ]], [[]])], [gl_cv_cc_visibility=yes], [gl_cv_cc_visibility=no]) CFLAGS="$gl_save_CFLAGS"]) AC_MSG_RESULT([$gl_cv_cc_visibility]) if test $gl_cv_cc_visibility = yes; then CFLAG_VISIBILITY="-fvisibility=hidden" HAVE_VISIBILITY=1 fi fi AC_SUBST([CFLAG_VISIBILITY]) AC_SUBST([HAVE_VISIBILITY]) AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY], [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.]) ]) hunspell-1.7.2/m4/po.m40000644000175000017500000004461614167247117011521 00000000000000# po.m4 serial 17 (gettext-0.18) dnl Copyright (C) 1995-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ([2.50]) dnl Checks for all prerequisites of the po subdirectory. AC_DEFUN([AM_PO_SUBDIRS], [ AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake AC_REQUIRE([AM_NLS])dnl dnl Release version of the gettext macros. This is used to ensure that dnl the gettext macros and po/Makefile.in.in are in sync. AC_SUBST([GETTEXT_MACRO_VERSION], [0.18]) dnl Perform the following tests also if --disable-nls has been given, dnl because they are needed for "make dist" to work. dnl Search for GNU msgfmt in the PATH. dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. dnl The second test excludes FreeBSD msgfmt. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT]) dnl Test whether it is GNU msgfmt >= 0.15. changequote(,)dnl case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; *) MSGFMT_015=$MSGFMT ;; esac changequote([,])dnl AC_SUBST([MSGFMT_015]) changequote(,)dnl case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac changequote([,])dnl AC_SUBST([GMSGFMT_015]) dnl Search for GNU xgettext 0.12 or newer in the PATH. dnl The first test excludes Solaris xgettext and early GNU xgettext versions. dnl The second test excludes FreeBSD xgettext. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po dnl Test whether it is GNU xgettext >= 0.15. changequote(,)dnl case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac changequote([,])dnl AC_SUBST([XGETTEXT_015]) dnl Search for GNU msgmerge 0.11 or newer in the PATH. AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) dnl Installation directories. dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we dnl have to define it here, so that it can be used in po/Makefile. test -n "$localedir" || localedir='${datadir}/locale' AC_SUBST([localedir]) dnl Support for AM_XGETTEXT_OPTION. test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) AC_CONFIG_COMMANDS([po-directories], [[ for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done]], [# Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake < 1.5. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" ]) ]) dnl Postprocesses a Makefile in a directory containing PO files. AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], [ # When this code is run, in config.status, two variables have already been # set: # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, # - LINGUAS is the value of the environment variable LINGUAS at configure # time. changequote(,)dnl # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Find a way to echo strings without interpreting backslash. if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then gt_echo='echo' else if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then gt_echo='printf %s\n' else echo_func () { cat < "$ac_file.tmp" if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` cat >> "$ac_file.tmp" < /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` cat >> "$ac_file.tmp" <> "$ac_file.tmp" <, 1996. AC_PREREQ([2.50]) # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL([ac_cv_path_$1], [case "[$]$1" in [[\\/]]* | ?:[[\\/]]*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in ifelse([$5], , $PATH, [$5]); do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$][$1]) else AC_MSG_RESULT([no]) fi AC_SUBST([$1])dnl ]) hunspell-1.7.2/m4/lt~obsolete.m40000644000175000017500000001377413424262411013443 00000000000000# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software # Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) hunspell-1.7.2/m4/ltsugar.m40000644000175000017500000001044013424262411012535 00000000000000# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59, which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) hunspell-1.7.2/m4/ltoptions.m40000644000175000017500000003426213424262411013117 00000000000000# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 8 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option '$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl 'shared' nor 'disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], [_LT_WITH_AIX_SONAME([aix])]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the 'shared' and # 'disable-shared' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the 'static' and # 'disable-static' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the 'fast-install' # and 'disable-fast-install' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_AIX_SONAME([DEFAULT]) # ---------------------------------- # implement the --with-aix-soname flag, and support the `aix-soname=aix' # and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT # is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. m4_define([_LT_WITH_AIX_SONAME], [m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[[5-9]]*,yes) AC_MSG_CHECKING([which variant of shared library versioning to provide]) AC_ARG_WITH([aix-soname], [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], [case $withval in aix|svr4|both) ;; *) AC_MSG_ERROR([Unknown argument to --with-aix-soname]) ;; esac lt_cv_with_aix_soname=$with_aix_soname], [AC_CACHE_VAL([lt_cv_with_aix_soname], [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) with_aix_soname=$lt_cv_with_aix_soname]) AC_MSG_RESULT([$with_aix_soname]) if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac _LT_DECL([], [shared_archive_member_spec], [0], [Shared archive member basename, for filename based shared library versioning on AIX])dnl ])# _LT_WITH_AIX_SONAME LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the 'pic-only' and 'no-pic' # LT_INIT options. # MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac], [pic_mode=m4_default([$1], [default])]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) hunspell-1.7.2/m4/libtool.m40000644000175000017500000112617113424262411012532 00000000000000# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 2014 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . ]) # serial 58 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_PREPARE_CC_BASENAME # ----------------------- m4_defun([_LT_PREPARE_CC_BASENAME], [ # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in @S|@*""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } ])# _LT_PREPARE_CC_BASENAME # _LT_CC_BASENAME(CC) # ------------------- # It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, # but that macro is also expanded into generated libtool script, which # arranges for $SED and $ECHO to be set by different means. m4_defun([_LT_CC_BASENAME], [m4_require([_LT_PREPARE_CC_BASENAME])dnl AC_REQUIRE([_LT_DECL_SED])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl func_cc_basename $1 cc_basename=$func_cc_basename_result ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl m4_require([_LT_CMD_TRUNCATE])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl 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 set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from 'configure', and 'config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # 'config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain=$ac_aux_dir/ltmain.sh ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the 'libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to 'config.status' so that its # declaration there will have the same value as in 'configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags='_LT_TAGS'dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into 'config.status', and then the shell code to quote escape them in # for loops in 'config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # '#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test 0 = "$lt_write_fail" && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ '$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test 0 != $[#] do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try '$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try '$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test yes = "$silent" && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 _LT_COPYING _LT_LIBTOOL_TAGS # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE _LT_PREPARE_MUNGE_PATH_LIST _LT_PREPARE_CC_BASENAME # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS=$save_LDFLAGS ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[[012]][[,.]]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test yes = "$lt_cv_ld_force_load"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" m4_if([$1], [CXX], [ if test yes != "$lt_cv_apple_cc_single_mod"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script that will find a shell with a builtin # printf (that we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case $ECHO in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], [Search for dependent libraries within DIR (or the compiler's sysroot if not specified).])], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([$with_sysroot]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and where our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then emul=elf case `/usr/bin/file conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `/usr/bin/file conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `/usr/bin/file conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test yes = "[$]$2"; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ]) if test yes = "[$]$2"; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n "$lt_cv_sys_max_cmd_len"; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes = "$cross_compiling"; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 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; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen=shl_load], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen=dlopen], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) ]) ]) ]) ]) ]) ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links=nottested if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; 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 no = "$hard_links"; then AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", [Define to the sub-directory where libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then # We can hardcode non-existent directories. if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && # 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 no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_PREPARE_MUNGE_PATH_LIST # --------------------------- # Make sure func_munge_path_list() is defined correctly. m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], [[# func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x@S|@2 in x) ;; *:) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" ;; x:*) eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; *::*) eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" ;; *) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; esac } ]])# _LT_PREPARE_PATH_LIST # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown AC_ARG_VAR([LT_SYS_LIBRARY_PATH], [User-defined run-time library search path.]) case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a[(]lib.so.V[)]' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # 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 dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # 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 # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], [Detected run-time system search path for libraries]) _LT_DECL([], [configure_time_lt_sys_library_path], [2], [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program that can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$1"; then lt_cv_path_MAGIC_CMD=$ac_dir/"$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac]) MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program that can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test no = "$withval" || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], [if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi]) rm -f conftest.i conftest2.i conftest.out]) ])# _LT_PATH_DD # _LT_CMD_TRUNCATE # ---------------- # find command to truncate a binary pipe m4_defun([_LT_CMD_TRUNCATE], [m4_require([_LT_PATH_DD]) AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], [printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) _LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], [Command to truncate a binary pipe]) ])# _LT_CMD_TRUNCATE # _LT_CHECK_MAGIC_METHOD # ---------------------- # how to check for library dependencies # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_MAGIC_METHOD], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) AC_CACHE_CHECK([how to recognize dependent 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 # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[[4-9]]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[[45]]*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi]) if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # _LT_DLL_DEF_P([FILE]) # --------------------- # True iff FILE is a Windows DLL '.def' file. # Keep in sync with func_dll_def_p in the libtool script AC_DEFUN([_LT_DLL_DEF_P], [dnl test DEF = "`$SED -n dnl -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl -e q dnl Only consider the first "real" line $1`" dnl ])# _LT_DLL_DEF_P # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM=-lm) ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test yes = "$GCC"; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], [Transform the output of nm into a list of symbols to manually relocate]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([nm_interface], [lt_cv_nm_interface], [1], [The name lister interface]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test yes = "$GCC"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, 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 install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS=$save_LDFLAGS]) if test yes = "$lt_cv_irix_exported_symbol"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi _LT_TAGVAR(link_all_deplibs, $1)=no else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(ld_shlibs, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; osf3*) if test yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test yes = "$GCC"; then wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test yes,yes = "$GCC,$enable_shared"; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting $shlibpath_var if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC=$CC AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report what library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && 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 yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC=$lt_save_CC ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test yes = "$GXX"; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test yes = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; 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 # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GXX"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. # The "-G" linker flag allows undefined symbols. _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(GCC, $1)=$GXX _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case @S|@2 in .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)=$prev$p else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)=$p else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)=$p else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test no = "$F77"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_F77"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && 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 yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$G77 _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_F77" AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test no = "$FC"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_FC"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && 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 yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_FC" AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code=$lt_simple_compile_test_code # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f "$lt_ac_sed" && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test 10 -lt "$lt_ac_count" && break lt_ac_count=`expr $lt_ac_count + 1` if test "$lt_ac_count" -gt "$lt_ac_max"; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine what file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS hunspell-1.7.2/m4/ax_cxx_compile_stdcxx.m40000664000175000017500000004742414352147311015473 00000000000000# =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html # =========================================================================== # # SYNOPSIS # # AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional]) # # DESCRIPTION # # Check for baseline language coverage in the compiler for the specified # version of the C++ standard. If necessary, add switches to CXX and # CXXCPP to enable support. VERSION may be '11' (for the C++11 standard) # or '14' (for the C++14 standard). # # The second argument, if specified, indicates whether you insist on an # extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g. # -std=c++11). If neither is specified, you get whatever works, with # preference for an extended mode. # # The third argument, if specified 'mandatory' or if left unspecified, # indicates that baseline support for the specified C++ standard is # required and that the macro should error out if no mode with that # support is found. If specified 'optional', then configuration proceeds # regardless, after defining HAVE_CXX${VERSION} if and only if a # supporting mode is found. # # LICENSE # # Copyright (c) 2008 Benjamin Kosnik # Copyright (c) 2012 Zack Weinberg # Copyright (c) 2013 Roy Stogner # Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov # Copyright (c) 2015 Paul Norman # Copyright (c) 2015 Moritz Klammler # Copyright (c) 2016 Krzesimir Nowak # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. #serial 7 dnl This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro dnl (serial version number 13). AX_REQUIRE_DEFINED([AC_MSG_WARN]) AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl m4_if([$1], [11], [ax_cxx_compile_alternatives="11 0x"], [$1], [14], [ax_cxx_compile_alternatives="14 1y"], [$1], [17], [ax_cxx_compile_alternatives="17 1z"], [m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl m4_if([$2], [], [], [$2], [ext], [], [$2], [noext], [], [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX])])dnl m4_if([$3], [], [ax_cxx_compile_cxx$1_required=true], [$3], [mandatory], [ax_cxx_compile_cxx$1_required=true], [$3], [optional], [ax_cxx_compile_cxx$1_required=false], [m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])]) AC_LANG_PUSH([C++])dnl ac_success=no AC_CACHE_CHECK(whether $CXX supports C++$1 features by default, ax_cv_cxx_compile_cxx$1, [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], [ax_cv_cxx_compile_cxx$1=yes], [ax_cv_cxx_compile_cxx$1=no])]) if test x$ax_cv_cxx_compile_cxx$1 = xyes; then ac_success=yes fi m4_if([$2], [noext], [], [dnl if test x$ac_success = xno; then for alternative in ${ax_cxx_compile_alternatives}; do switch="-std=gnu++${alternative}" cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch]) AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch, $cachevar, [ac_save_CXX="$CXX" CXX="$CXX $switch" AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], [eval $cachevar=yes], [eval $cachevar=no]) CXX="$ac_save_CXX"]) if eval test x\$$cachevar = xyes; then CXX="$CXX $switch" if test -n "$CXXCPP" ; then CXXCPP="$CXXCPP $switch" fi ac_success=yes break fi done fi]) m4_if([$2], [ext], [], [dnl if test x$ac_success = xno; then dnl HP's aCC needs +std=c++11 according to: dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf dnl Cray's crayCC needs "-h std=c++11" for alternative in ${ax_cxx_compile_alternatives}; do for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch]) AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch, $cachevar, [ac_save_CXX="$CXX" CXX="$CXX $switch" AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], [eval $cachevar=yes], [eval $cachevar=no]) CXX="$ac_save_CXX"]) if eval test x\$$cachevar = xyes; then CXX="$CXX $switch" if test -n "$CXXCPP" ; then CXXCPP="$CXXCPP $switch" fi ac_success=yes break fi done if test x$ac_success = xyes; then break fi done fi]) AC_LANG_POP([C++]) if test x$ax_cxx_compile_cxx$1_required = xtrue; then if test x$ac_success = xno; then AC_MSG_ERROR([*** A compiler with support for C++$1 language features is required.]) fi fi if test x$ac_success = xno; then HAVE_CXX$1=0 AC_MSG_NOTICE([No compiler with C++$1 support was found]) else HAVE_CXX$1=1 AC_DEFINE(HAVE_CXX$1,1, [define if the compiler supports basic C++$1 syntax]) fi AC_SUBST(HAVE_CXX$1) m4_if([$1], [17], [AC_MSG_WARN([C++17 is not yet standardized, so the checks may change in incompatible ways anytime])]) ]) dnl Test body for checking C++11 support m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11], _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 ) dnl Test body for checking C++14 support m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14], _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 ) m4_define([_AX_CXX_COMPILE_STDCXX_testbody_17], _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 _AX_CXX_COMPILE_STDCXX_testbody_new_in_17 ) dnl Tests for new features in C++11 m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[ // If the compiler admits that it is not ready for C++11, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201103L #error "This is not a C++11 compiler" #else namespace cxx11 { namespace test_static_assert { template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; } namespace test_final_override { struct Base { virtual void f() {} }; struct Derived : public Base { virtual void f() override {} }; } namespace test_double_right_angle_brackets { template < typename T > struct check {}; typedef check single_type; typedef check> double_type; typedef check>> triple_type; typedef check>>> quadruple_type; } namespace test_decltype { int f() { int a = 1; decltype(a) b = 2; return a + b; } } namespace test_type_deduction { template < typename T1, typename T2 > struct is_same { static const bool value = false; }; template < typename T > struct is_same { static const bool value = true; }; template < typename T1, typename T2 > auto add(T1 a1, T2 a2) -> decltype(a1 + a2) { return a1 + a2; } int test(const int c, volatile int v) { static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == false, ""); auto ac = c; auto av = v; auto sumi = ac + av + 'x'; auto sumf = ac + av + 1.0; static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == true, ""); return (sumf > 0.0) ? sumi : add(c, v); } } namespace test_noexcept { int f() { return 0; } int g() noexcept { return 0; } static_assert(noexcept(f()) == false, ""); static_assert(noexcept(g()) == true, ""); } namespace test_constexpr { template < typename CharT > unsigned long constexpr strlen_c_r(const CharT *const s, const unsigned long acc) noexcept { return *s ? strlen_c_r(s + 1, acc + 1) : acc; } template < typename CharT > unsigned long constexpr strlen_c(const CharT *const s) noexcept { return strlen_c_r(s, 0UL); } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("1") == 1UL, ""); static_assert(strlen_c("example") == 7UL, ""); static_assert(strlen_c("another\0example") == 7UL, ""); } namespace test_rvalue_references { template < int N > struct answer { static constexpr int value = N; }; answer<1> f(int&) { return answer<1>(); } answer<2> f(const int&) { return answer<2>(); } answer<3> f(int&&) { return answer<3>(); } void test() { int i = 0; const int c = 0; static_assert(decltype(f(i))::value == 1, ""); static_assert(decltype(f(c))::value == 2, ""); static_assert(decltype(f(0))::value == 3, ""); } } namespace test_uniform_initialization { struct test { static const int zero {}; static const int one {1}; }; static_assert(test::zero == 0, ""); static_assert(test::one == 1, ""); } namespace test_lambdas { void test1() { auto lambda1 = [](){}; auto lambda2 = lambda1; lambda1(); lambda2(); } int test2() { auto a = [](int i, int j){ return i + j; }(1, 2); auto b = []() -> int { return '0'; }(); auto c = [=](){ return a + b; }(); auto d = [&](){ return c; }(); auto e = [a, &b](int x) mutable { const auto identity = [](int y){ return y; }; for (auto i = 0; i < a; ++i) a += b--; return x + identity(a + b); }(0); return a + b + c + d + e; } int test3() { const auto nullary = [](){ return 0; }; const auto unary = [](int x){ return x; }; using nullary_t = decltype(nullary); using unary_t = decltype(unary); const auto higher1st = [](nullary_t f){ return f(); }; const auto higher2nd = [unary](nullary_t f1){ return [unary, f1](unary_t f2){ return f2(unary(f1())); }; }; return higher1st(nullary) + higher2nd(nullary)(unary); } } namespace test_variadic_templates { template struct sum; template struct sum { static constexpr auto value = N0 + sum::value; }; template <> struct sum<> { static constexpr auto value = 0; }; static_assert(sum<>::value == 0, ""); static_assert(sum<1>::value == 1, ""); static_assert(sum<23>::value == 23, ""); static_assert(sum<1, 2>::value == 3, ""); static_assert(sum<5, 5, 11>::value == 21, ""); static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); } // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function // because of this. namespace test_template_alias_sfinae { struct foo {}; template using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } } // namespace cxx11 #endif // __cplusplus >= 201103L ]]) dnl Tests for new features in C++14 m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[ // If the compiler admits that it is not ready for C++14, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201402L #error "This is not a C++14 compiler" #else namespace cxx14 { namespace test_polymorphic_lambdas { int test() { const auto lambda = [](auto&&... args){ const auto istiny = [](auto x){ return (sizeof(x) == 1UL) ? 1 : 0; }; const int aretiny[] = { istiny(args)... }; return aretiny[0]; }; return lambda(1, 1L, 1.0f, '1'); } } namespace test_binary_literals { constexpr auto ivii = 0b0000000000101010; static_assert(ivii == 42, "wrong value"); } namespace test_generalized_constexpr { template < typename CharT > constexpr unsigned long strlen_c(const CharT *const s) noexcept { auto length = 0UL; for (auto p = s; *p; ++p) ++length; return length; } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("x") == 1UL, ""); static_assert(strlen_c("test") == 4UL, ""); static_assert(strlen_c("another\0test") == 7UL, ""); } namespace test_lambda_init_capture { int test() { auto x = 0; const auto lambda1 = [a = x](int b){ return a + b; }; const auto lambda2 = [a = lambda1(x)](){ return a; }; return lambda2(); } } namespace test_digit_separators { constexpr auto ten_million = 100'000'000; static_assert(ten_million == 100000000, ""); } namespace test_return_type_deduction { auto f(int& x) { return x; } decltype(auto) g(int& x) { return x; } template < typename T1, typename T2 > struct is_same { static constexpr auto value = false; }; template < typename T > struct is_same { static constexpr auto value = true; }; int test() { auto x = 0; static_assert(is_same::value, ""); static_assert(is_same::value, ""); return x; } } } // namespace cxx14 #endif // __cplusplus >= 201402L ]]) dnl Tests for new features in C++17 m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_17], [[ // If the compiler admits that it is not ready for C++17, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus <= 201402L #error "This is not a C++17 compiler" #else #if defined(__clang__) #define REALLY_CLANG #else #if defined(__GNUC__) #define REALLY_GCC #endif #endif #include #include #include namespace cxx17 { #if !defined(REALLY_CLANG) namespace test_constexpr_lambdas { // TODO: test it with clang++ from git constexpr int foo = [](){return 42;}(); } #endif // !defined(REALLY_CLANG) namespace test::nested_namespace::definitions { } namespace test_fold_expression { template int multiply(Args... args) { return (args * ... * 1); } template bool all(Args... args) { return (args && ...); } } namespace test_extended_static_assert { static_assert (true); } namespace test_auto_brace_init_list { auto foo = {5}; auto bar {5}; static_assert(std::is_same, decltype(foo)>::value); static_assert(std::is_same::value); } namespace test_typename_in_template_template_parameter { template typename X> struct D; } namespace test_fallthrough_nodiscard_maybe_unused_attributes { int f1() { return 42; } [[nodiscard]] int f2() { [[maybe_unused]] auto unused = f1(); switch (f1()) { case 17: f1(); [[fallthrough]]; case 42: f1(); } return f1(); } } namespace test_extended_aggregate_initialization { struct base1 { int b1, b2 = 42; }; struct base2 { base2() { b3 = 42; } int b3; }; struct derived : base1, base2 { int d; }; derived d1 {{1, 2}, {}, 4}; // full initialization derived d2 {{}, {}, 4}; // value-initialized bases } namespace test_general_range_based_for_loop { struct iter { int i; int& operator* () { return i; } const int& operator* () const { return i; } iter& operator++() { ++i; return *this; } }; struct sentinel { int i; }; bool operator== (const iter& i, const sentinel& s) { return i.i == s.i; } bool operator!= (const iter& i, const sentinel& s) { return !(i == s); } struct range { iter begin() const { return {0}; } sentinel end() const { return {5}; } }; void f() { range r {}; for (auto i : r) { [[maybe_unused]] auto v = i; } } } namespace test_lambda_capture_asterisk_this_by_value { struct t { int i; int foo() { return [*this]() { return i; }(); } }; } namespace test_enum_class_construction { enum class byte : unsigned char {}; byte foo {42}; } namespace test_constexpr_if { template int f () { if constexpr(cond) { return 13; } else { return 42; } } } namespace test_selection_statement_with_initializer { int f() { return 13; } int f2() { if (auto i = f(); i > 0) { return 3; } switch (auto i = f(); i + 4) { case 17: return 2; default: return 1; } } } #if !defined(REALLY_CLANG) namespace test_template_argument_deduction_for_class_templates { // TODO: test it with clang++ from git template struct pair { pair (T1 p1, T2 p2) : m1 {p1}, m2 {p2} {} T1 m1; T2 m2; }; void f() { [[maybe_unused]] auto p = pair{13, 42u}; } } #endif // !defined(REALLY_CLANG) namespace test_non_type_auto_template_parameters { template struct B {}; B<5> b1; B<'a'> b2; } #if !defined(REALLY_CLANG) namespace test_structured_bindings { // TODO: test it with clang++ from git int arr[2] = { 1, 2 }; std::pair pr = { 1, 2 }; auto f1() -> int(&)[2] { return arr; } auto f2() -> std::pair& { return pr; } struct S { int x1 : 2; volatile double y1; }; S f3() { return {}; } auto [ x1, y1 ] = f1(); auto& [ xr1, yr1 ] = f1(); auto [ x2, y2 ] = f2(); auto& [ xr2, yr2 ] = f2(); const auto [ x3, y3 ] = f3(); } #endif // !defined(REALLY_CLANG) #if !defined(REALLY_CLANG) namespace test_exception_spec_type_system { // TODO: test it with clang++ from git struct Good {}; struct Bad {}; void g1() noexcept; void g2(); template Bad f(T*, T*); template Good f(T1*, T2*); static_assert (std::is_same_v); } #endif // !defined(REALLY_CLANG) namespace test_inline_variables { template void f(T) {} template inline T g(T) { return T{}; } template<> inline void f<>(int) {} template<> int g<>(int) { return 5; } } } // namespace cxx17 #endif // __cplusplus <= 201402L ]]) hunspell-1.7.2/m4/nls.m40000644000175000017500000000230713422074107011654 00000000000000# nls.m4 serial 5 (gettext-0.18) dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016 Free Software dnl Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ([2.50]) AC_DEFUN([AM_NLS], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE([nls], [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT([$USE_NLS]) AC_SUBST([USE_NLS]) ]) hunspell-1.7.2/m4/gettext.m40000644000175000017500000003513214167247117012560 00000000000000# gettext.m4 serial 63 (gettext-0.18) dnl Copyright (C) 1995-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2006, 2008-2010. dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The dnl default (if it is not specified or empty) is 'no-libtool'. dnl INTLSYMBOL should be 'external' for packages with no intl directory, dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library dnl $(top_builddir)/intl/libintl.a will be created. dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. If NEEDSYMBOL is specified and is dnl 'need-formatstring-macros', then GNU gettext implementations that don't dnl support the ISO C 99 formatstring macros will be ignored. dnl INTLDIR is used to find the intl libraries. If empty, dnl the value `$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])])]) ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) define([gt_included_intl], ifelse([$1], [external], ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), [yes])) define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) gt_NEEDS_INIT AM_GNU_GETTEXT_NEED([$2]) AC_REQUIRE([AM_PO_SUBDIRS])dnl ifelse(gt_included_intl, yes, [ AC_REQUIRE([AM_INTL_SUBDIR])dnl ]) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Sometimes libintl requires libiconv, so first search for libiconv. dnl Ideally we would do this search only after the dnl if test "$USE_NLS" = "yes"; then dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT dnl the configure script would need to contain the same shell code dnl again, outside any 'if'. There are two solutions: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not dnl documented, we avoid it. ifelse(gt_included_intl, yes, , [ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ]) dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. gt_INTL_MACOSX dnl Set USE_NLS. AC_REQUIRE([AM_NLS]) ifelse(gt_included_intl, yes, [ BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no ]) LIBINTL= LTLIBINTL= POSUB= dnl Add a version number to the cache macros. case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no ifelse(gt_included_intl, yes, [ AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH([included-gettext], [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ]) dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], [AC_TRY_LINK([#include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings;], [bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings], [eval "$gt_func_gnugettext_libc=yes"], [eval "$gt_func_gnugettext_libc=no"])]) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl Sometimes libintl requires libiconv, so first search for libiconv. ifelse(gt_included_intl, yes, , [ AM_ICONV_LINK ]) dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) dnl because that would add "-liconv" to LIBINTL and LTLIBINTL dnl even if libiconv doesn't exist. AC_LIB_LINKFLAGS_BODY([intl]) AC_CACHE_CHECK([for GNU gettext in libintl], [$gt_func_gnugettext_libintl], [gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" dnl Now see whether libintl exists and does not depend on libiconv. AC_TRY_LINK([#include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *);], [bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], [eval "$gt_func_gnugettext_libintl=yes"], [eval "$gt_func_gnugettext_libintl=no"]) dnl Now see whether libintl exists and depends on libiconv. if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *);], [bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" ]) fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else dnl Reset the values set by searching for libintl. LIBINTL= LTLIBINTL= INCINTL= fi ifelse(gt_included_intl, yes, [ if test "$gt_use_preinstalled_gnugettext" != "yes"; then dnl GNU gettext is not found in the C library. dnl Fall back on included GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi CATOBJEXT= if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions to use GNU gettext tools. CATOBJEXT=.gmo fi ]) if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Some extra flags are needed during linking. LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then AC_DEFINE([ENABLE_NLS], [1], [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi AC_MSG_CHECKING([whether to use NLS]) AC_MSG_RESULT([$USE_NLS]) if test "$USE_NLS" = "yes"; then AC_MSG_CHECKING([where the gettext function comes from]) if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi AC_MSG_RESULT([$gt_source]) fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then AC_MSG_CHECKING([how to link with libintl]) AC_MSG_RESULT([$LIBINTL]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) fi dnl For backward compatibility. Some packages may be using this. AC_DEFINE([HAVE_GETTEXT], [1], [Define if the GNU gettext() function is already present or preinstalled.]) AC_DEFINE([HAVE_DCGETTEXT], [1], [Define if the GNU dcgettext() function is already present or preinstalled.]) fi dnl We need to process the po/ directory. POSUB=po fi ifelse(gt_included_intl, yes, [ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL dnl to 'yes' because some of the testsuite requires it. if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then BUILD_INCLUDED_LIBINTL=yes fi dnl Make all variables we use known to autoconf. AC_SUBST([BUILD_INCLUDED_LIBINTL]) AC_SUBST([USE_INCLUDED_LIBINTL]) AC_SUBST([CATOBJEXT]) dnl For backward compatibility. Some configure.ins may be using this. nls_cv_header_intl= nls_cv_header_libgt= dnl For backward compatibility. Some Makefiles may be using this. DATADIRNAME=share AC_SUBST([DATADIRNAME]) dnl For backward compatibility. Some Makefiles may be using this. INSTOBJEXT=.mo AC_SUBST([INSTOBJEXT]) dnl For backward compatibility. Some Makefiles may be using this. GENCAT=gencat AC_SUBST([GENCAT]) dnl For backward compatibility. Some Makefiles may be using this. INTLOBJS= if test "$USE_INCLUDED_LIBINTL" = yes; then INTLOBJS="\$(GETTOBJS)" fi AC_SUBST([INTLOBJS]) dnl Enable libtool support if the surrounding package wishes it. INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) ]) dnl For backward compatibility. Some Makefiles may be using this. INTLLIBS="$LIBINTL" AC_SUBST([INTLLIBS]) dnl Make all documented variables known to autoconf. AC_SUBST([LIBINTL]) AC_SUBST([LTLIBINTL]) AC_SUBST([POSUB]) ]) dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. m4_define([gt_NEEDS_INIT], [ m4_divert_text([DEFAULTS], [gt_needs=]) m4_define([gt_NEEDS_INIT], []) ]) dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) AC_DEFUN([AM_GNU_GETTEXT_NEED], [ m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) ]) dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) hunspell-1.7.2/m4/lib-prefix.m40000644000175000017500000002042213422074107013117 00000000000000# lib-prefix.m4 serial 7 (gettext-0.18) dnl Copyright (C) 2001-2005, 2008-2016 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't dnl require excessive bracketing. ifdef([AC_HELP_STRING], [AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], [AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed dnl with the same --prefix option. dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate dnl libraries, but is otherwise very convenient. AC_DEFUN([AC_LIB_PREFIX], [ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib-prefix], [ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib --without-lib-prefix don't search for libraries in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi ]) if test $use_additional = yes; then dnl Potentially add $additional_includedir to $CPPFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's already present in $CPPFLAGS, dnl 3. if it's /usr/local/include and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= for x in $CPPFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $CPPFLAGS. CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" fi fi fi fi dnl Potentially add $additional_libdir to $LDFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's already present in $LDFLAGS, dnl 3. if it's /usr/local/lib and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= for x in $LDFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LDFLAGS. LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" fi fi fi fi fi ]) dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, dnl acl_final_exec_prefix, containing the values to which $prefix and dnl $exec_prefix will expand at the end of the configure script. AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ dnl Unfortunately, prefix and exec_prefix get only finally determined dnl at the end of configure. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" ]) dnl AC_LIB_PREPARE_MULTILIB creates dnl - a variable acl_libdirstem, containing the basename of the libdir, either dnl "lib" or "lib64" or "lib/64", dnl - a variable acl_libdirstem2, as a secondary possible value for dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or dnl "lib/amd64". AC_DEFUN([AC_LIB_PREPARE_MULTILIB], [ dnl There is no formal standard regarding lib and lib64. dnl On glibc systems, the current practice is that on a system supporting dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine dnl the compiler's default mode by looking at the compiler's library search dnl path. If at least one of its elements ends in /lib64 or points to a dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI. dnl Otherwise we use the default, namely "lib". dnl On Solaris systems, the current practice is that on a system supporting dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. AC_REQUIRE([AC_CANONICAL_HOST]) acl_libdirstem=lib acl_libdirstem2= case "$host_os" in solaris*) dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment dnl . dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the dnl symlink is missing, so we set acl_libdirstem2 too. AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit], [AC_EGREP_CPP([sixtyfour bits], [ #ifdef _LP64 sixtyfour bits #endif ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no]) ]) if test $gl_cv_solaris_64bit = yes; then acl_libdirstem=lib/64 case "$host_cpu" in sparc*) acl_libdirstem2=lib/sparcv9 ;; i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; esac fi ;; *) searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; */../ | */.. ) # Better ignore directories of this form. They are misleading. ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi ;; esac test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" ]) hunspell-1.7.2/m4/lib-link.m40000644000175000017500000010044313422074107012561 00000000000000# lib-link.m4 serial 26 (gettext-0.18.2) dnl Copyright (C) 2001-2016 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_PREREQ([2.54]) dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and dnl augments the CPPFLAGS variable. dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) pushdef([Name],[m4_translit([$1],[./+-], [____])]) pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ac_cv_lib[]Name[]_libs="$LIB[]NAME" ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX" ]) LIB[]NAME="$ac_cv_lib[]Name[]_libs" LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" INC[]NAME="$ac_cv_lib[]Name[]_cppflags" LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) AC_SUBST([LIB]NAME[_PREFIX]) dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the dnl results of this search when this library appears as a dependency. HAVE_LIB[]NAME=yes popdef([NAME]) popdef([Name]) ]) dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message]) dnl searches for libname and the libraries corresponding to explicit and dnl implicit dependencies, together with the specified include files and dnl the ability to compile and link the specified testcode. The missing-message dnl defaults to 'no' and may contain additional hints for the user. dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) pushdef([Name],[m4_translit([$1],[./+-], [____])]) pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME dnl accordingly. AC_LIB_LINKFLAGS_BODY([$1], [$2]) dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, dnl because if the user has installed lib[]Name and not disabled its use dnl via --without-lib[]Name-prefix, he wants to use it. ac_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ac_save_LIBS="$LIBS" dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS, dnl because these -l options might require -L options that are present in dnl LIBS. -l options benefit only from the -L options listed before it. dnl Otherwise, add it to the front of LIBS, because it may be a static dnl library that depends on another static library that is present in LIBS. dnl Static libraries benefit only from the static libraries listed after dnl it. case " $LIB[]NAME" in *" -l"*) LIBS="$LIBS $LIB[]NAME" ;; *) LIBS="$LIB[]NAME $LIBS" ;; esac AC_LINK_IFELSE( [AC_LANG_PROGRAM([[$3]], [[$4]])], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])']) LIBS="$ac_save_LIBS" ]) if test "$ac_cv_lib[]Name" = yes; then HAVE_LIB[]NAME=yes AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.]) AC_MSG_CHECKING([how to link with lib[]$1]) AC_MSG_RESULT([$LIB[]NAME]) else HAVE_LIB[]NAME=no dnl If $LIB[]NAME didn't lead to a usable library, we don't need dnl $INC[]NAME either. CPPFLAGS="$ac_save_CPPFLAGS" LIB[]NAME= LTLIB[]NAME= LIB[]NAME[]_PREFIX= fi AC_SUBST([HAVE_LIB]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) AC_SUBST([LIB]NAME[_PREFIX]) popdef([NAME]) popdef([Name]) ]) dnl Determine the platform dependent parameters needed to use rpath: dnl acl_libext, dnl acl_shlibext, dnl acl_libname_spec, dnl acl_library_names_spec, dnl acl_hardcode_libdir_flag_spec, dnl acl_hardcode_libdir_separator, dnl acl_hardcode_direct, dnl acl_hardcode_minus_L. AC_DEFUN([AC_LIB_RPATH], [ dnl Tell automake >= 1.10 to complain if config.rpath is missing. m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ]) wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" dnl Determine whether the user wants rpath handling at all. AC_ARG_ENABLE([rpath], [ --disable-rpath do not hardcode runtime library paths], :, enable_rpath=yes) ]) dnl AC_LIB_FROMPACKAGE(name, package) dnl declares that libname comes from the given package. The configure file dnl will then not have a --with-libname-prefix option but a dnl --with-package-prefix option. Several libraries can come from the same dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar dnl macro call that searches for libname. AC_DEFUN([AC_LIB_FROMPACKAGE], [ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) define([acl_frompackage_]NAME, [$2]) popdef([NAME]) pushdef([PACK],[$2]) pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) define([acl_libsinpackage_]PACKUP, m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1]) popdef([PACKUP]) popdef([PACK]) ]) dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) dnl Autoconf >= 2.61 supports dots in --with options. pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[m4_translit(PACK,[.],[_])],PACK)]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_ARG_WITH(P_A_C_K[-prefix], [[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && ! test -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi ]) dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-seach. LIB[]NAME= LTLIB[]NAME= INC[]NAME= LIB[]NAME[]_PREFIX= dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been dnl computed. So it has to be reset here. HAVE_LIB[]NAME= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='$1 $2' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" dnl See if it was already located by an earlier AC_LIB_LINKFLAGS dnl or AC_LIB_HAVE_LINKFLAGS call. uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" else dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined dnl that this library doesn't exist. So just drop it. : fi else dnl Search the library lib$name in $additional_libdir and $LDFLAGS dnl and the already constructed $LIBNAME/$LTLIBNAME. found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" dnl The same code as in the loop below: dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then dnl Found the library. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then dnl Linking with a shared library. We attempt to hardcode its dnl directory into the executable's runpath, unless it's the dnl standard /usr/lib. if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl Use an explicit option to hardcode DIR into the resulting dnl binary. dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi dnl The hardcoding into $LIBNAME is system dependent. if test "$acl_hardcode_direct" = yes; then dnl Using DIR/libNAME.so during linking hardcodes DIR into the dnl resulting binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode DIR into the resulting dnl binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else dnl Rely on "-L$found_dir". dnl But don't add it if it's already contained in the LDFLAGS dnl or the already constructed $LIBNAME haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH dnl here, because this doesn't fit in flags passed to the dnl compiler. So give up. No hardcoding. This affects only dnl very old systems. dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then dnl Linking with a static library. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" else dnl We shouldn't come here, but anyway it's good to have a dnl fallback. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" fi fi dnl Assume the include files are nearby. additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = '$1'; then LIB[]NAME[]_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = '$1'; then LIB[]NAME[]_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's /usr/local/include and we are using GCC on Linux, dnl 3. if it's already present in $CPPFLAGS or the already dnl constructed $INCNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INC[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $INCNAME. INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" fi fi fi fi fi dnl Look for dependencies. if test -n "$found_la"; then dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LIBNAME. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LTLIBNAME. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dnl Handle this in the next round. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) dnl Handle this in the next round. Throw away the .la's dnl directory; it is already contained in a preceding -L dnl option. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) dnl Most likely an immediate library name. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ;; esac done fi else dnl Didn't find the library; assume it is in the system directories dnl known to the linker and runtime loader. (All the system dnl directories known to the linker should also be known to the dnl runtime loader, otherwise the system is severely misconfigured.) LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user must dnl pass all path elements in one option. We can arrange that for a dnl single library, but not when more than one $LIBNAMEs are used. alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then dnl When using libtool, the option that works for both libraries and dnl executables is -R. The -R options are cumulative. for found_dir in $ltrpathdirs; do LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi popdef([P_A_C_K]) popdef([PACKLIBS]) popdef([PACKUP]) popdef([PACK]) popdef([NAME]) ]) dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl unless already present in VAR. dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes dnl contains two or three consecutive elements that belong together. AC_DEFUN([AC_LIB_APPENDTOVAR], [ for element in [$2]; do haveit= for x in $[$1]; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then [$1]="${[$1]}${[$1]:+ }$element" fi done ]) dnl For those cases where a variable contains several -L and -l options dnl referring to unknown libraries and directories, this macro determines the dnl necessary additional linker options for the runtime path. dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) dnl sets LDADDVAR to linker options needed together with LIBSVALUE. dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, dnl otherwise linking without libtool is assumed. AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], [ AC_REQUIRE([AC_LIB_RPATH]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) $1= if test "$enable_rpath" != no; then if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode directories into the resulting dnl binary. rpathdirs= next= for opt in $2; do if test -n "$next"; then dir="$next" dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2"; then rpathdirs="$rpathdirs $dir" fi next= else case $opt in -L) next=yes ;; -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2"; then rpathdirs="$rpathdirs $dir" fi next= ;; *) next= ;; esac fi done if test "X$rpathdirs" != "X"; then if test -n ""$3""; then dnl libtool is used for linking. Use -R options. for dir in $rpathdirs; do $1="${$1}${$1:+ }-R$dir" done else dnl The linker is used for linking directly. if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user dnl must pass all path elements in one option. alldirs= for dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="$flag" else dnl The -rpath options are cumulative. for dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="${$1}${$1:+ }$flag" done fi fi fi fi fi AC_SUBST([$1]) ]) hunspell-1.7.2/m4/ltversion.m40000644000175000017500000000127313424262411013105 00000000000000# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 4179 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.6]) m4_define([LT_PACKAGE_REVISION], [2.4.6]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.6' macro_revision='2.4.6' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) hunspell-1.7.2/m4/lib-ld.m40000644000175000017500000000714313422074107012226 00000000000000# lib-ld.m4 serial 6 dnl Copyright (C) 1996-2003, 2009-2016 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Subroutines of libtool.m4, dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid dnl collision with libtool.m4. dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no. AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], [# I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 /dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL([acl_cv_path_LD], [if test -z "$LD"; then acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$acl_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 #include ]], [[iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);]])], [am_cv_func_iconv=yes]) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #include ]], [[iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);]])], [am_cv_lib_iconv=yes] [am_cv_func_iconv=yes]) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11, dnl Solaris 10. am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[ #include #include #ifndef ICONV_CONST # define ICONV_CONST $ac_iconv_const #endif ]], [[int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 1; iconv_close (cd_utf8_to_88591); } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\263"; char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 2; iconv_close (cd_ascii_to_88591); } } /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ { iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304"; static char buf[2] = { (char)0xDE, (char)0xAD }; ICONV_CONST char *inptr = input; size_t inbytesleft = 1; char *outptr = buf; size_t outbytesleft = 1; size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) result |= 4; iconv_close (cd_88591_to_utf8); } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) result |= 8; iconv_close (cd_88591_to_utf8); } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ if (/* Try standardized names. */ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) /* Try IRIX, OSF/1 names. */ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) /* Try AIX names. */ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) /* Try HP-UX names. */ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) result |= 16; return result; ]])], [am_cv_func_iconv_works=yes], , [case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac]) test "$am_cv_func_iconv_works" = no || break done LIBS="$am_save_LIBS" ]) case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then AC_DEFINE([HAVE_ICONV], [1], [Define if you have the iconv() function and it works.]) fi if test "$am_cv_lib_iconv" = yes; then AC_MSG_CHECKING([how to link with libiconv]) AC_MSG_RESULT([$LIBICONV]) else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi AC_SUBST([LIBICONV]) AC_SUBST([LTLIBICONV]) ]) dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to dnl avoid warnings like dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". dnl This is tricky because of the way 'aclocal' is implemented: dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN. dnl Otherwise aclocal's initial scan pass would miss the macro definition. dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions. dnl Otherwise aclocal would emit many "Use of uninitialized value $1" dnl warnings. m4_define([gl_iconv_AC_DEFUN], m4_version_prereq([2.64], [[AC_DEFUN_ONCE( [$1], [$2])]], [m4_ifdef([gl_00GNULIB], [[AC_DEFUN_ONCE( [$1], [$2])]], [[AC_DEFUN( [$1], [$2])]])])) gl_iconv_AC_DEFUN([AM_ICONV], [ AM_ICONV_LINK if test "$am_cv_func_iconv" = yes; then AC_MSG_CHECKING([for iconv declaration]) AC_CACHE_VAL([am_cv_proto_iconv], [ AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif ]], [[]])], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"]) am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` AC_MSG_RESULT([ $am_cv_proto_iconv]) AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], [Define as const if the declaration of iconv() needs const.]) dnl Also substitute ICONV_CONST in the gnulib generated . m4_ifdef([gl_ICONV_H_DEFAULTS], [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) if test -n "$am_cv_proto_iconv_arg1"; then ICONV_CONST="const" fi ]) fi ]) hunspell-1.7.2/m4/ax_cxx_compile_stdcxx_11.m40000664000175000017500000000321514352147311015762 00000000000000# ============================================================================= # https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html # ============================================================================= # # SYNOPSIS # # AX_CXX_COMPILE_STDCXX_11([ext|noext], [mandatory|optional]) # # DESCRIPTION # # Check for baseline language coverage in the compiler for the C++11 # standard; if necessary, add switches to CXX and CXXCPP to enable # support. # # This macro is a convenience alias for calling the AX_CXX_COMPILE_STDCXX # macro with the version set to C++11. The two optional arguments are # forwarded literally as the second and third argument respectively. # Please see the documentation for the AX_CXX_COMPILE_STDCXX macro for # more information. If you want to use this macro, you also need to # download the ax_cxx_compile_stdcxx.m4 file. # # LICENSE # # Copyright (c) 2008 Benjamin Kosnik # Copyright (c) 2012 Zack Weinberg # Copyright (c) 2013 Roy Stogner # Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov # Copyright (c) 2015 Paul Norman # Copyright (c) 2015 Moritz Klammler # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. #serial 18 AX_REQUIRE_DEFINED([AX_CXX_COMPILE_STDCXX]) AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [AX_CXX_COMPILE_STDCXX([11], [$1], [$2])]) hunspell-1.7.2/ChangeLog.O0000644000175000017500000004760713422074107012261 00000000000000Myspell has a lot of parallel development, that is not documented here. 2005-01-11: Nmeth Lszl * hunspell.cxx: - interaktv javtsnl hinyz j sor karakterek ptlsa. A hibt Gefferth Andrs s Khiraly jelezte. * csutil.cxx: - pontosvesszk trlse a GCC 3.4-es fordt ignyeinek megfelelen A hibt Dvornik Lszl jelezte. - i vltoz ismtelt deklarsnak trlse, ami helyenknt hibs fordtst eredmnyez. A hibt Ldoktor s Bencsth Boldizsr jelezte. * OLVASS.EL: - Windows alatti fordtsnl Langid.cxx mdostand. A hibt Ldoktor jelezte. 2004-12-15 Nmeth Lszl * src/morphbase/*: - handling K&R morphological encoding (remove plus signs from output) - LEMMA_PRESENT: put only morphological description to output - LANG parameter, langnum variable in source for writing language-dependent codes - remove HU_KOTOHANGZO - etc. * doc/hunspell.4: - adding some 2004-09-29 Halcsy Pter * doc/ : bemsoltam a hunspell.1 hunspell.4 man oldalakat * doc/hunspell.1: Kivettem a -s -m kapcsolkrl szl rszt 2004-09-28 Halcsy Pter * src/hunspell/hunspell.cxx (indexing_interface): Ezt kiszedtem a HunSpell-bol, mert nem ide valo. Ez egy kulon program lehet. (main): a hunstem zemmdot is kidobtam, ez se ide val (main): meg a hunmorph zemmdot is * src/morphbase/morphbase.cxx (MorphBase): tneveztem a MySpell osztlyt MorphBase-re (stems): tnevezten a suggest_stems metdust stem -re (mint to stem) 2004-08-25 Nmeth Lszl * src/hunbase/suggestmgr.cxx: tvezs visszalltsa, nem mkdik mg az igektk hozztoldsa a thz, tovbb a kivtelek kezelse (ehhez a 0.99.4-es sztr szksges mg). * src/hunbase/myspell.cxx: -s vissza a tvezshez * src/hunbase/atypes.hxx: HUNSTEM makr definilsa itt az affixmgr.cxx feltteles kdjhoz 2004-08-12 Halacsy Peter * src/misc/lexfilter.cxx : uj program, ami a szotar szureshez hasznalhato lecserelheti a mostani hunmorph, hunspell -G -1 funkciokat * src/hunbase/myspell.cxx (analyzer) : Uj metodust vettem fel, ami mar karaktertombben adja vissza az elemzes eredmenyet 2004-08-03 Halcsy Pter * src/hunspell/hunspell.cxx (HUNSPELL_VERSION): ttettem ide ennek definilst 2004-07-31 Halcsy Pter * src/hunbase/suggestmgr.cxx (fixstems): A fixstems mirt itt van s mirt gy hvjk. Ez mehetne egy kln osztlyba. 2004-07-31 Halcsy Pter * src/huntoken/htmlparser.cxx: Egyebkent az include-ok kezelese eleg zavaros. Peldaul itt minek a textparser.hxx includolasa? * src/huntoken/textparser.hxx (MAXLNLEN): thoztam ide a MAXLNLEN makrt az atypes.hxx-bol, hogy a fuggoseget megszuntessem * src/hunbase/myspell.cxx (suggest): Kivettem azt a rszt, ami visszaadja a HUNSPELL_VERSION stringet ha a VERSION_KEYWORD a bemeneti string. Csnya gnyolsnak tartottam 2004-07-27 Halcsy Pter * src/hunbase/myspell.cxx (morph_with_correction): * src/hunbase/baseaffix.hxx (class AffEntry): Allandora felvettem a morphcode mezot (last htypes.hxx) * src/hunbase/affentry.hxx: Kivettem a hunmorph felteteleket (last htypes.hxx) * src/hunbase/htypes.hxx (struct hentry): Kivettem a HUNMORPH feltetelt a char* description korul. Ertem, hogy hatekonyabb egy folosleges mutato nelkul, ha nincs morf info, de szerintem felesleges * src/hunbase/myspell.hxx: HUNSPELL_VERSION es VERSION_KEYWORD makrokat kivettem. Valamiert a hunspellnek kell majd * src/hunbase/config.hxx (FLAG): config.hxx torolve, helyet atveszi a kozponti config.h; FLAG definicioja az atypes.hxx-be ment * src/hunbase/atypes.hxx (FLAG): config.hxx megszuntetese erdekeben attettem ide a FLAG makro definialasat, ami az EXT_CLASS-tol fugg config.hxx include kicserelve a configure altal kezelt config.h-ra 2004-06-29: Nmeth Lszl * affixmgr.cxx: - csak utols tagknt megengedett szavak (compound3) toldalk nlkli elfordulsnak engedlyezse (pl. macskapr) - tbbszrsen sszetett szavak toldalkolt alakjainak morfolgiai elemzse * myspell.cxx: - rvidtsek, szmok, ktjeles sszetett szavak s a -e hatrozszt tartalmaz szavak morfolgiai elemzse * suggestmgr.cxx: suggest_morph_for_spelling_error() optimalizlsa (csak a felhasznlt egy javaslatot keresi meg, tbbet nem). * csutil.cxx: kimenetben szerepl res sorok trlse 2004-06-10: Nmeth Lszl * suggestmgr.cxx: sszetett szavak elemzsnek korltozsa - a tvezs mg nincs megvalstva a 0.9.9-es vltozatban (helyette a Hunspell 0.9.7 hasznland a Magyar Ispell 0.99.4-es vltozatval) 2004-05-19: Nmeth Lszl * 0.9.9f-alpha - morf. lers sztringkezelse jav. - EXT_CLASS: config.cxx-ben - nagybets alakok is elemezve (a hibt Tron Viktor jelezte) - szebb kimenet - rule119 trlve - firstparser.cxx javtva 2004-02-13: Nmeth Lszl * 0.9.8a: - MAXUSERWORD helyett USERWORD, nincs korlt - description \t-vel dic fjlba - homonimk kezelse - aff formtumbvts - konfixumok - _morpho fggvnyek - ketts szuffixum - hunmorph - lsd tests/hunmorph 2004-01-29: Nmeth Lszl * 0.9.7-sztaki: - memriakezelsi hibk javtsa 2003-12-17: Nmeth Lszl * 0.9.7-es vltozat: * affixmgr.cxx: - suffix_check() javts (tmpword kivltsa isRevSubSet() fggvnnyel - betlts optimalizlsa, build_pfxlist() helyett: - build_pfxtree() - process_sfx_tree_to_list(), process_sfx_inorder() * csutil.cxx: - isSubSet() gyorsabb vltozata - isRevSubSet() * langid.cxx, hunp.cxx: - nyelvfelismer osztly s program (l. man hunp) * man/hunp.1: - nyelvfelismer program lersa * firstparser.cxx: - csak a tabultorjelet tartalmaz sorokbl a tabultorjel eltti rszt adja vissza (l. man Hunspell, -1 kapcsol) * hunspell.cxx: - -u, -U, -u2 kapcsolk: tipikus hibk kijelzse; automatikus, illetve lektorlt javtsa. L. man hunspell. - -w kapcsol teljes sor vizsglathoz * hunspell.cxx: - spell(): javts (Valgrind hibajelzs alapjn) * hunspell.cxx: sprintf()-ek el strlen() felttelvizsglat * suggestmgr.cxx: - 0.99.4-es Hunspell sztrral bekerlt tvezsi hiba javtsa (nem produktv ragozs, sszetett szbam szerepl fneveknl lpett fel ez a problma). * OLVASS.EL: - bvts 2003-11-03: Nmeth Lszl * SuggestMgr::permute_accent(): - illeglis memriaolvassi hiba javtsa. * example.cxx:: - dupla free() a "" karakterlnc tvezse utn A hibkat Sarls Tams fedezte fel a figyelemre mlt Valgrind nyomkvet programmal (http://developer.kde.org/~sewardj/) 2003-10-22: Bencsth Boldizsr * affixmgr.[ch]xx, csutil.[ch]xx: Az eredeti MySpell foltjainak alkalmazsa az OpenOffice.org 1.1 kompatibilits rdekben. Itt karakterkezel segdfggvnyek lettek thelyezve elrhetbb helyre. * dictmgr.[ch]xx: Itt etype paramter hozzadsa. * makefile.mk: Itt angol sztrak megjegyzsbe ttele. 2003-10-04: Nmeth Lszl * 0.9.6.3-as vltozat: * myspell.cxx: suggest() fggvnyben hibs memriafoglals javtsa. A hiba a pontra vgzd helytelen szavakra adott javaslattevs sorn jelentkezett. A hibs mkdst Khiraly jelezte. 2003-09-15: Nmeth Lszl * 0.9.6.2-es vltozat: * latexparser.cxx: TeX elemz javtsa: - elemzsi hiba ({{}}}) - verb+ +, \verb stb. kezelse 2003-09-01: Nmeth Lszl * 0.9.6-os vltozat: * affentry.cxx: check2 trlse, lehetsges tvek trolsa * suggestmgr.cxx, myspell.cxx: suggest_pos_stems() az ismeretlen szavak nvszragjainak s jeleinek levlasztsra. * affixmgr.cxx, suggestmgr.cxx: suggest_stems() szlkezelshez mdostott s javtott fggvny * myspell.cxx: szmok tvezse (teszt: 5-nek) * myspell.cxx: egy karakter + sz javaslatok trlse (pldul cpak->cpa k) * affixmgr.cxx, myspell.cxx, hunspell.cxx: sztr verziszmnak kirsa * hunspell.cxx: \r karaktert tartalmaz sorok helyes megjelentse * myspell.cxx, hunspell.cxx: rvidts vgi pontok hozzadsa fggvnyknyvtr szinten * hunspell.cxx: pipe_interface(): standard bemenet tvezsnl hinyz memriafelszabadts ptlsa * Makefile: install javtsa, tbb felttelvizsglat deinstall szakasz 2003-07-22: Nmeth Lszl * 0.9.5-s vltozat * suggestmgr.cxx: marhalevl->lelevl tvezs javtsa * myspell.cxx: nagy kezdbets rvidtsek vizsglata (Bp., Btk.) - pontot tartalmaz szmok helyesnek val elfogadsa, ha: - az els pontot legalbb egy, - de legfeljebb hrom szmjegy elzi meg, - a pontok nem egyms mellett helyezkednek el, - az utols pont utn legfeljebb kt szmjegy van. Ezzel elfogadjuk az idpontokat (12.00-kor), a pontozsokat (1.1.2-ben), de kizrjuk a szkz nlkli hibs dtummegadsokat (2003.7.22.), valamint a tizedesvessz helyett ponttal rt tizedestrteket (3.456, 4563.34). - Javts a tiltott szavakra adott ktjeles javaslatoknl: Straussal->Strauss-szal, s nem ,,Strauss szal''. * hunspell.cxx: csak a -a kapcsol megadsval lnek a csfelleti parancsok. Ezrt most mr nincsenek figyelmen kvl hagyva pldul a ktjellel kezdd sorok, ha a -l kapcsolval hibs szavakat keresnk egy llomnyban. * man/hunspell.1: a -a kapcsol lersnak kiegsztse. 2003-06-13: Nmeth Lszl * 0.9.4-es vltozat * bin/*: makedb, lookdb segdprogramok az indexelshez * man/*: hunstem, makedb, lookdb * hunspell.cxx: pipe_interface: nyomkvet kirs trlse - LOG #ifdef-be 2003-06-11: Nmeth Lszl * 0.9.3-es vltozat * suggestmgr.cxx: nagybets javaslat tulajdonneveknl * hunspell.cxx: pipe_interface: hiba javtsa 2003-06-05: Nmeth Lszl * 0.9.2-es vltozat * hunspell.cxx: -s kapcsol * suggestmgr.cxx: suggest_stems() Sztvek ellltsa * example.cxx: plda a sztvek ellltsra 2003-05-13: Nmeth Lszl * 0.9.1-es vltozat * hunspell.cxx: - rl_escape(), stb.: a readline sorban ki lett kapcsolva a fjlnv-kiegszts, s helyette a kt Escape lenyoms megszaktja a szvegbevitelt. A Csere mveletnl is a readline() hvs tallhat most mr. - egy hibs sprintf() sor javtva lett * Makefile.unix: - belltsok elklntve az llomny elejn - Makefile most mr szimblikus kts * ooomagyarispellteszt.txt: tesztllomny 2003-04-28: Nmeth Lszl * affixmgr.cxx: - y vg szavak kezelse: bvebb lers a Magyar Ispell Changelog llomnyban. * *parser.cxx: ISO-8859-1 HTML karakterentitsok kzl a betrtkek (csak az ISO-8859-2-ben nem szereplk) felismerse s kezelse. 2003-04-21: Goldman Elenonra * *.dll fggvnyknyvtr ellltsa Windows alatt: - StdAfx.h - libmyspell.def - dlltest.cpp 2003-04-16: Nmeth Lszl * Hunspell.cxx, stb: a Mispell tnevezse Hunspell-l. A nevet Kornai Andrs javasolta. Knyvtrak: /usr/share/mispell -> /usr/share/myspell (korbban is ez volt). A /usr/share/hunmorph sztr a helye a specilis morfolgiai informcikat tartalmaz Hunmorph (bvtett Myspell sztrformtum) sztrllomnyoknak. * Licenc: LGPL * config.hxx: SZOSZABLYA_POSSIBLE_ROOTS Ha a makrt bekapcsoljuk, akkor kirsra kerlnek a lehetsges tvek is, az alkalmazott ragozsi szably osztlynak betjelvel, illetve az alapszval egytt. 2003-04-10: Nmeth Lszl : * affixmgr.cxx: - kthangzk helyes kezelse (hu_kotohangzo kapcsolval), l. mg Magyar Ispell Changelog 2003-03-24: Nmeth Lszl * mispell.cxx: pipe_interface(): az adatfjl szrsnl fellp memriaszivrgs megszntetse a kimaradt free(token) ptlsval * affixmgr.cxx: prefix_check(): leg-, legesleg- confixum ellenrzs - onlyroot kapcsol a csak tszt rint tiltshoz. L. Magyar Ispell Az affixum llomnyban j kapcsolt adhatunk meg az ONLYROOT paranccsal bevezetve. A kapcsol mdostja a tiltkapcsol mkdst. L. man 4 mispell * myspell.cxx: - spell(): nagybets tulajdonnevek ellenrzse (pl. BALATON) - onlyroot vizsglat forbiddenword mellett -> mangrove kezelse 2003-03-17: Goldman Elenonra * Windows port * makefile.Windows: 2003-03-04: Nmeth Lszl * firstparser.[ch]xx: adatfjlok szrshez (l. -1 kapcsol) * mispell.cxx: -L, -1, -G kapcsolk * man/mispell.1: -L, -1, -G kapcsolk 2003-03-03: Nmeth Lszl * mispell.cxx: -l, -p, WORDLIST * man/mispell.1: -l, -p, WORDLIST 2003-02-26: Nmeth Lszl * mispell.cxx: dialog_screen(): TILTOTT! (FORBIDDEN!) megjelentse a tiltott szsszettelek esetn. * suggestmgr.cxx: - check(): -, - kpzs igeneveket rint kd trlse - check_forbidden(): a 6 sztagnl hosszabb, tiltott sztvekre vonatkoz javaslatok nem ktjellel, hanem szkzzel elvlasztva tartalmazzk a szavakat, ehhez szksges a check_forbidden(). * man/*: j kziknyv oldal az llomnyok formtumrl (mispell(4)), a mispell(1) bvtse. * Makefile, mispell.mo: Br rpd javtsai 2003-02-18: Nmeth Lszl * mispell.cxx: interactive_interface() - nem nyeli el a MAXLNLEN-t meghalad mret sorokban a MAXLNLEN mret rszek hatrn lv karaktereket, s a nem jsor karakterre vgzd llomnyok utols karaktert. (Hibt viszont mg mindig jelez, ha a MAXLNLEN hatr feldarabol egy amgy helyes szt.) A MAXLNLEN 8192 karakter jelenleg. - readline fggvnyknyvtr hasznlata a bevitelnl - tfelvtelnl egy lehetsges t ellltsa, s a beviteli sorban val feltntetse. Az gy megjelen sz javthat. - --help kapcsol * Makefile: Javtsok az install szakaszban. A hibkat Br rpd jelezte. 2003-02-07: Nmeth Lszl * mispell.cxx: put_dots_to_suggestions() - realloc() cserje malloc()-ra ismeretlen eredet lefagys miatt. - lehetsges az Ispellhez hasonlan a kapcsolkat kzzel megadni a sajt sztrban a szavak utn egy perjelet kveten: pldul a valamicsnyasz/w sor megadsa utn a valamicsnyasz s toldalkolt vltozatai hibsak lesznek az ellenrzs alatt. (Tovbbi kapcsolk lersrt lsd a Magyar Ispell forrsban az aff/aff.fej llomnyt.) * affixmgr.cxx: compound_check() - repl_chars() hvsa a megfelel helyre lett tve, ezzel a javaslattevs sebessge ktszeresre ntt. - A dinamikus memriakezels lecserelse veremmemrira nem jrt lnyeges sebessgnvekedssel, de a kzeljvben ezzel elkerlhet az a memriaszivrgs, ami pldul itt a tiltott szavak kezelsnl volt az elz vltozatban (javtva). * affentry.cxx, affixmgr.cxx: szt-elllt kd megalapozsa: get_possible_root() metdus az utols toldalk-levlaszts eredmnyvel tr vissza. 2003-02-05: Nmeth Lszl * mispell.cxx: put_dots_to_suggestions(): amennyiben a felismert sz pontra, vagy pontokra vgzdik, a javaslatokat is bvti ezzel. - @, valamint 1-nl tbb pontot magba foglal (de nem arra vgzd) szavak ellenrzsnek tiltsa (e-mail, fjlnevek, mg nem opcionlis). - Hossz sorok helyes megjelentse. - Tabultorjelet tartalmaz sorok helyes megjelentse. - Mozaikszavak tfelvtelnl ktjeles alak automatikus rgztse Pl.: BKV//URH mellett BKV-//URH- is bekerl a sajt sztrba (a ragozott mozaikszavak felismerse teht automatikus lesz, kivve a nem trivilis -val/-vel toldalkos alakok, amit kln kell felvenni.) - PuT trlse (helyette MySpell::put_word(), put_word_suffix(), put_word_pattern() eljrsok a sajt sztr bvtsre) - dupla szavak ellenrzsnek trlse a MySpell kdbl (thelyezs majd a Mispell felletbe), hogy a MySpell meghvhat maradjon prhuzamosan fut szlakbl. 2002-12-30: Nmeth Lszl * *parser.cxx, *parser.hxx: elemz osztlyok a rgi s csnya kd helyett 2002-12-10: Nmeth Lszl * myspell.cxx: 35-os, 20%-kal kezelse * man/mispell.1: kziknyv 2002-12-04: Noll Jnos * spdaemon/: kiszolgl fellet, ld. README.spdaemon 2002-12-04: Nmeth Lszl * mispell.cxx: Emacs kompatibilitshoz hibk javtsa (pl. tbbszrs -d) * mispell.cxx: CURSES makrval kikapcsolhat az interaktv fellet + locale (Windows, Macintosh) 2002-11-30: Nmeth Lszl * affixmgr.cxx: get_checkdoublewords() 2002-11-25: Nmeth Lszl * affixmgr.cxx: mozgszably (hu_mov_rule) * myspell.cxx: mozgszably * affixmgr.cxx: kitljnekmacskt (affix is sszetettben, ha prefix) 2002-11-08 Nmeth Lszl * myspell.cxx: balatonnak->Balatonnak, balatoninak 2002-11-07 Nmeth Lszl * myspell: 0.6-os vltozat 2002-10-31 Nmeth Lszl * Egyszerbb nv: Magyar MySpell 0.5 utn -> MIspell 0.6 * mispell.cxx: tbbnyelv interaktv fellet (ncurses, locale) * Makefile: make install 2002-09-22 Nmeth Lszl * affixmgr.cxx: compound_check() macskaugom->macskaugrom, stb. javtsa * affixmgr.cxx: compound_check() szismtls (pl. macskamacska) tiltsa * myspell.cxx: szismtlds tiltsa (pl. kutya kutya) msodik rossz * suggestmgr.cxx: macskarat->macska rat mellett ->macskairat 2002-07-29 Nmeth Lszl * mispell Windowsra, teszt Emacs-szel (vagy Emacs-csal) * tiltott szavakat nem javasol, s sszetett szban sem fogad el * fonev_morfo, fonev_morfo2 lsztvek elutastsa (hzakmacska) * ktjeles szavak kezelse * szmok kezelse, ktjeles alakjaikkal egytt, CHECKNUM kapcsol 2002-07-17 Nmeth Lszl * mispell.cxx: MySpell Ispell cs interfsz 2002-07-04 Nmeth Lszl * mispell.cxx: MySpell Ispell cs interfsz * affxmgr.cxx: szszer kiszrse, * j funkcik: COMPOUNDFIRST: sz szerepelhet els tagknt a szszettelekben COMPOUNDLAST: sz szerepelhet utols tagknt a szszettelekben FORBIDDENWORD: tiltott szavak kapcsolja (ut, uta, stb.) 2002-06-25 Nmeth Lszl * myspell.cxx, suggestmgr.cxx: get_compound() char* helyett char * affxmgr.cxx: check_repl() a helyesnek tn, de hibs sszetett szavak kiszrsre (pl. tejles, szervz) A szsszettel elfogadsa eltt mg megnzzk, hogy a sz nem-e a cseretblzatban felvett hibt tartalmaz, ha igen, akkor a sz hibsnak minsl, hiba helyes szsszettel. * affxmgr.cxx, suggestmgr.xx: accent: kezetest. Lers: README.accent Tovbbi optimalizci: az kezet nlkli bet kezetes vltozatai szmnak fggvnyben 2002-06-05 Noll Jnos * myspell.cxx, suggestmgr.cxx: mem. szivrgs javtsa (a get_compound() felszabadts nlkl lett meghva). A hiba a GNU mtrace segtsgvel lett detektlva. 2002-06-03 Nmeth Lszl * Licenc: GPL * Lsd MYSPELL.HU * compound_check: 6-3 szably, stb. MySpell: 2002-xx-xx Kevin Hendricks * REP: ismtlsek kiszrse a javaslatokbl * COMPOUNDMIN 2002-xx-xx Nmeth Lszl * REP cseretblzat * COMPOUND, szsszettelkpzs 2002-xx-xx David Einstein * optimalizlt MySpell algoritmus 2001-xx-xx Kevin Hendricks * Mkd ellenrz, Ispell toldalktmrtsi algoritmussal hunspell-1.7.2/depcomp0000755000175000017500000005601713424262414011664 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2016-01-11.22; # UTC # Copyright (C) 1999-2017 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: hunspell-1.7.2/Makefile.in0000664000175000017500000007071414353370163012361 00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/visibility.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = hunspell.pc CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkgconfdir)" DATA = $(pkgconf_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ $(LISP)config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(srcdir)/hunspell.pc.in ABOUT-NLS AUTHORS COPYING \ COPYING.LESSER ChangeLog INSTALL NEWS README THANKS compile \ config.guess config.rpath config.sub depcomp install-sh \ ltmain.sh missing tap-driver.sh DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CURSESLIB = @CURSESLIB@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HUNSPELL_VERSION_MAJOR = @HUNSPELL_VERSION_MAJOR@ HUNSPELL_VERSION_MINOR = @HUNSPELL_VERSION_MINOR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ READLINELIB = @READLINELIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I m4 SUBDIRS = po src man tests pkgconfdir = $(libdir)/pkgconfig pkgconf_DATA = hunspell.pc EXTRA_DIST = license.myspell license.hunspell \ ChangeLog.O COPYING.LESSER COPYING.MPL hunspell.pc.in all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 hunspell.pc: $(top_builddir)/config.status $(srcdir)/hunspell.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-pkgconfDATA: $(pkgconf_DATA) @$(NORMAL_INSTALL) @list='$(pkgconf_DATA)'; test -n "$(pkgconfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfdir)" || exit $$?; \ done uninstall-pkgconfDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconf_DATA)'; test -n "$(pkgconfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(DATA) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkgconfdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-pkgconfDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-pkgconfDATA .MAKE: $(am__recursive_targets) all install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ clean-libtool cscope cscopelist-am ctags ctags-am dist \ dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ dist-xz dist-zip distcheck distclean distclean-generic \ distclean-hdr distclean-libtool distclean-tags distcleancheck \ distdir distuninstallcheck dvi dvi-am html html-am info \ info-am install install-am install-data install-data-am \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-pkgconfDATA \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-pkgconfDATA .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: hunspell-1.7.2/INSTALL0000644000175000017500000003661413424262414011341 00000000000000Installation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell command './configure && make && make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the 'README' file for instructions specific to this package. Some packages provide this 'INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. 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, and a file 'config.log' containing compiler output (useful mainly for debugging 'configure'). It can also use an optional file (typically called 'config.cache' and enabled with '--cache-file=config.cache' or simply '-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. 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 you are using the cache, and at some point 'config.cache' contains results you don't want to keep, you may remove or edit it. The file 'configure.ac' (or 'configure.in') is used to create 'configure' by a program called 'autoconf'. You need 'configure.ac' 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. Running 'configure' might take a while. 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, generally using the just-built uninstalled binaries. 4. Type 'make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the 'make install' phase executed with root privileges. 5. Optionally, type 'make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior 'make install' required root privileges, verifies that the installation completed correctly. 6. 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. 7. Often, you can also type 'make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide 'make distcheck', which can by used by developers to test that all other targets like 'make install' and 'make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the 'configure' script does not know about. Run './configure --help' for details on some of the pertinent environment variables. You can give 'configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. 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 can use 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 '..'. This is known as a "VPATH" build. With a non-GNU 'make', it is safer 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. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple '-arch' options to the compiler but only a single '-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the 'lipo' tool if you have problems. Installation Names ================== By default, 'make install' installs the package's commands under '/usr/local/bin', include files under '/usr/local/include', etc. You can specify an installation prefix other than '/usr/local' by giving 'configure' the option '--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option '--exec-prefix=PREFIX' to 'configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like '--bindir=DIR' 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. In general, the default for these options is expressed in terms of '${prefix}', so that specifying just '--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to 'configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the 'make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, 'make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of '${prefix}'. Any directories that were specified during 'configure', but not in terms of '${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the 'DESTDIR' variable. For example, 'make install DESTDIR=/alternate/directory' will prepend '/alternate/directory' before all installation names. The approach of 'DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of '${prefix}' at 'configure' time. Optional Features ================= 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'. 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. Some packages offer the ability to configure how verbose the execution of 'make' will be. For these packages, running './configure --enable-silent-rules' sets the default to minimal output, which can be overridden with 'make V=1'; while running './configure --disable-silent-rules' sets the default to verbose, which can be overridden with 'make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. HP-UX 'make' updates targets which have the same time stamps as their prerequisites, which makes it generally unusable when shipped generated files such as 'configure' are involved. Use GNU 'make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its '' header file. The option '-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put '/usr/ucb' early in your 'PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in '/usr/bin'. So, if you need '/usr/ucb' in your 'PATH', put it _after_ '/usr/bin'. On Haiku, software installed for all users goes in '/boot/common', not '/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features 'configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, 'configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the '--build=TYPE' option. TYPE can either be a short name for the system type, such as 'sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS 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 machine type. If you are _building_ compiler tools for cross-compiling, you should use the option '--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with '--host=TYPE'. 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. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to 'configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the 'configure' command line, using 'VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified 'gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an Autoconf limitation. Until the limitation is lifted, you can use this workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash 'configure' Invocation ====================== 'configure' recognizes the following options to control how it operates. '--help' '-h' Print a summary of all of the options to 'configure', and exit. '--help=short' '--help=recursive' Print a summary of the options unique to this package's 'configure', and exit. The 'short' variant lists options used only in the top level, while the 'recursive' variant lists options also present in any nested packages. '--version' '-V' Print the version of Autoconf used to generate the 'configure' script, and exit. '--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally 'config.cache'. FILE defaults to '/dev/null' to disable caching. '--config-cache' '-C' Alias for '--cache-file=config.cache'. '--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. '--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. '--no-create' '-n' Run the configure checks, but stop before creating any output files. 'configure' also accepts some other, not widely useful, options. Run 'configure --help' for more details. hunspell-1.7.2/man/0000775000175000017500000000000014353370322011133 500000000000000hunspell-1.7.2/man/hunzip.10000644000175000017500000000117413565705656012473 00000000000000.TH hzip 1 "2008-06-12" .LO 1 .SH NAME hunzip \- decompress and decrypt hzip files to the standard output .SH SYNOPSIS hunzip [\-h] file.hz [password] .SH DESCRIPTION .I Hunzip is the decompression and decryption program of hzip format. .SH OPTIONS .IP \fB\-h\fR Display short help description. .SH EXAMPLE .sp .BI "hunzip file.hz >file" .SH NOTES Redirection of the standard output results platform-specific line terminating, so a compressed hzip file with new line terminators would be bigger with the extra CR characters of the decompression on Windows platforms. .SH SEE ALSO .B hunzip (1), hunspell(1) .SH AUTHOR László Németh. hunspell-1.7.2/man/Makefile.in0000664000175000017500000006301314353370163013126 00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = man ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/visibility.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" \ "$(DESTDIR)$(man5dir)" man3dir = $(mandir)/man3 man5dir = $(mandir)/man5 NROFF = nroff MANS = $(man_MANS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CURSESLIB = @CURSESLIB@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HUNSPELL_VERSION_MAJOR = @HUNSPELL_VERSION_MAJOR@ HUNSPELL_VERSION_MINOR = @HUNSPELL_VERSION_MINOR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ READLINELIB = @READLINELIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ man_MANS = hunspell.1 hunspell.3 hunspell.5 hzip.1 hunzip.1 EXTRA_DIST = $(man_MANS) SUBDIRS = hu all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu man/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu man/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man1: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) install-man3: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man3dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.3[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \ done; } uninstall-man3: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man3dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.3[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir) install-man5: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man5dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man5dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man5dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.5[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \ done; } uninstall-man5: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man5dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.5[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man5dir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(MANS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(man5dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-man install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-man1 install-man3 install-man5 install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-man uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man1 install-man3 install-man5 install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-man \ uninstall-man1 uninstall-man3 uninstall-man5 .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: hunspell-1.7.2/man/hu/0000775000175000017500000000000014353370322011547 500000000000000hunspell-1.7.2/man/hu/Makefile.in0000664000175000017500000004316114353370163013544 00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = man/hu ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/visibility.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" man5dir = $(mandir)/man5 NROFF = nroff MANS = $(man_MANS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CURSESLIB = @CURSESLIB@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HUNSPELL_VERSION_MAJOR = @HUNSPELL_VERSION_MAJOR@ HUNSPELL_VERSION_MINOR = @HUNSPELL_VERSION_MINOR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ READLINELIB = @READLINELIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ #mandir = $(DESTDIR)/share man1dir = $(mandir)/hu/man1 man4dir = $(mandir)/hu/man4 man_MANS = hunspell.1 hunspell.5 EXTRA_DIST = $(man_MANS) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu man/hu/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu man/hu/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man1: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) install-man5: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man5dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man5dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man5dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.5[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \ done; } uninstall-man5: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man5dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.5[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man5dir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(MANS) installdirs: for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man1 install-man5 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-man uninstall-man: uninstall-man1 uninstall-man5 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man1 install-man5 install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-man uninstall-man1 uninstall-man5 .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: hunspell-1.7.2/man/hu/hunspell.10000644000175000017500000004065213565705656013430 00000000000000.hla hu .TH hunspell 1 "2014. május 27." .LO 1 .SH NÉV hunspell \- unicode-os helyesírás\-ellenőrző, szótövező és morfológiai elemző program .SH ÁTTEKINTÉS hunspell [\-1aDGHhLlmnOstvwX] [\-\-check\-url] [\-\-check\-apostrophe] [\-\-help] [\-i karakterkódolás] [\-d szótár[,...]] [\-p sajátszótár] [szöveges/OpenDocument/TeX/LaTeX/HTML/SGML/XML/nroff/troff állomány(ok)] .SH LEÍRÁS A .B hunspell felismeri és javítja az elütéseket és típushibákat egyszerű szöveges, OpenDocument, (La)TeX, XML, HTML és groff (kézikönyv oldal) állományokban. .PP Ha nem adunk meg állománynév-paramétert, a Hunspell az Ispell csőfelületéhez hasonlóan működik: a bemenet sorait szavakra bontja, és *, +, vagy - jellel kezdődő kimeneti sorral jelzi, ha egy szó jó, és # vagy & jellel, ha rossz. A csőfelület parancsait viszont az Ispellhez hasonlóan csak a .I \-a kapcsoló megadásával értelmezi. .PP Állománynév paraméter esetén elindul egy az Ispelléhez hasonló interaktív felület. .SH KAPCSOLÓK .TP .B \-1 Speciális formátum: a bemeneti állomány tabulátorjelet tartalmazó soraiból csak az első tabulátorjel előtti karaktersorozatot vizsgálja meg. .TP .B \-a Ispellhez csőfelület. A .I !, .I +, .I \-, .I \@, .I #, vagy .I ^ jellel kezdődő sorok a csőfelület parancsai, jelentésüket az Ispell kézikönyvoldal részletezi. A \-a kapcsoló hatására a kimenetben a jó szavakat csak csillaggal jelzi a Hunspell. Ez nagyobb kompatibilitást biztosít az Ispellt használó programok némelyikével (például a LyX-szel). Ekkor nem kell megadnunk a \-a kapcsolót, mivel az Ispellt használó programok automatikusan ezzel a kapcsolóval indítják el az Ispell nevében futó Hunspellt is. .TP .B \-d " szótár[,szótár2,...]" Beállítja a helyesírási szótárakat a kiterjesztés nélküli szótárnevek, útvonalak megadásával. Például a .PP hunspell \-d hu_HU,hu_geo,hu_med,de_DE,de_med .PP a magyar alapszótárat és kiegészítő szótárait, valamint német alapszótárat és annak egy kiegészítő szótárát tölti be. Az alapszótárak egy aff és egy dic kiterjesztésű állományból állnak, a kiegészítő szótárak csak dic állományból. A kiegészítő szótárak nevére vonatkozóan nincs szabály (csak a dic kiterjesztés), a szótárnevek sorrendje határozza meg, hogy melyik alapszótárhoz töltődnek be a kiegészítő szótárak (ami pedig meghatározza a javaslattevést). Az első szótár mindig alapszótár. .PP Az alapértelmezett szótár a környezet nyelvi beállításától függ az Unix rendszereken. Locale hiányában a .BR /usr/share/hunspell/default az alapértelmezett szótár. .PP A megadott útvonal lehet abszolút és relatív is. Relatív útvonal esetén először az aktuális, majd a .BR /usr/share/hunspell és még több más könyvtárban keresi a szótárt a program. L. \-D és a .BR PÉLDÁK. .TP .B \-D A keresési útvonalak, az elérhető és betöltött szótárak útvonalának kijelzése. .TP .B \-G A \-l, \-w, és \-L kapcsolókat kiegészítő kapcsoló. A standard bemenetről érkező hibás szavak, illetve sorok megjelenítése helyett a jó szavak és a hibátlan sorok megjelenítését kérhetjük vele. Ha mást nem adunk meg, a \-l kapcsoló hatásának megfelelően működik, csak a rossz helyett a jó szavakat írja a standard kimenetre. .TP .B \-h, \-\-help A beépített leírás megjelenítése. .TP .B \-H HTML bemeneti állományformátum beállítása. Ha az állomány nevének .html vagy .htm a kiterjesztése, ez automatikusan bekövetkezik. .TP .B \-l Kiírja a hibás szavakat a standard bemenetről érkező állományból. Használható a \-H, \-t, \-n, \-1 kapcsolókkal együtt is. A \-G kapcsoló megfordítja a Hunspell működését: csak a jó szavak kerülnek kiírásra. .TP .B \-L Csak a hibás szavakat tartalmazó sorokat írja ki a standard bemenetről érkező állományból. Használható a \-H, \-t, \-n, \-1 kapcsolókkal együtt is. A \-G kapcsoló megfordítja a működését: csak azok a sorok kerülnek kiírásra, amelyek egy hibás szót sem tartalmaznak. .TP .B \-m Elemző üzemmód: a bemeneti szövegszavak morfológia elemzése, illetve a szótári morfológiai leírás hiányában a toldalékolt szavak kapcsolóinak kijelzése (szótárfejlesztőknek). .TP .B \-n Nroff/troff bemeneti állományformátum beállítása, elsősorban a kézikönyvlapok ellenőrzésére. .TP .B \-O OpenDocument (ODF vagy flat ODF) bemeneti állományformátum beállítása. Ha az állomány nevének .odt, .ods, .odp, .odg, illetve ezek sablon (.ott, ...) vagy flat (.fodt, ...) változatainak megfelelő a kiterjesztése, ez automatikusan bekövetkezik. Ha még nem volna, telepítsük az unzip programot a kapcsoló használata előtt. .TP .B \-p " saját_szótár" A felhasználó saját szótárának beállítására szolgál. Az alapértelmezett saját szótár a .BR $HOME/.hunspell_default állomány. Ha szótárat is megadunk a .I \-d kapcsolóval, vagy a .I DICTIONARY környezeti változóval, a saját szótár a .BR $HOME/.hunspell_szótárnév lesz. Ha a saját szótár nem létezik, létrehozza. Ha az aktuális könyvtárban is van egy ugyanilyen nevű állomány, akkor annak tartalma is beolvasásra kerül, mint saját szótár, és az újonnan felvett szavak is ide kerülnek. A .I \-p , vagy a .I WORDLIST környezeti változó megadásával új saját szótárat jelölünk ki. A saját szótárat az aktuális könyvtárban, és a saját könyvtár gyökerében ($HOME) keresi a Hunspell. Ha nem található, akkor az újonnan felvett szavak mentésénél létrehozza a saját könyvtár gyökerében. .TP .B \-s Tövező üzemmód: a bemenő szövegszavak tövezése (a szótártól függő pontossággal). .TP .B \-t LaTeX bemeneti állományformátum beállítása. Ha az állomány nevének .tex a kiterjesztése, ez automatikusan bekövetkezik. .TP .B \-u Tipikus hibák kijelzése az állományból, cserejavaslattal. .TP .B \-u2 Tipikus hibák és javításuk kijelzése módosítható, és a sed programmal végrehajtatható formában. Irányítsuk a Hunspell kimenetét egy állományba. Törüljük azokat a sorokat az elmentett állományból, amelyek sed paranccsal megadott javítását nem szeretnénk. Mentsük el az állományt, és a \fIsed -f javítás eredeti_állomány >javított_állomány\fR paranccsal javíthatjuk az állományt gyorsan és egyszerűen. (A sok hibát tartalmazó állományok javítását gyorsítja meg ez a lehetőség.) .TP .B \-U Ha az -u kapcsolóval kapott javaslatokat mind el szeretnénk fogadni, akkor az \-U kapcsolóval a Hunspell automatikusan végrehajtja a cseréket, és a módosított állományt a szabványos kimenetre küldi. Példa a javításra: \fIhunspell -U eredeti_állomány >javított_állomány\fR. A hibakimeneten megjelennek a javítások is még egyszer, a -\u kapcsolóhoz hasonló módon. .TP .B \-v Verziószám. .TP .B \-vv Verziószám (Ispell kompatibilitás miatt). .TP .B \-w Csak a hibás szavakat írja ki a standard bemenetről érkező, soronként egy szót tartalmazó állományból. A sorok nincsenek szavakra bontva. A sorok szavakra bontása, és csak a hibás szavak kiírása a \-w kapcsolóval érhető el. A \-G kapcsoló megfordítja a Hunspell működését: csak a jó szavak kerülnek kiírásra. .TP .B \-X XML bemeneti állományformátum beállítása. Ha az állomány nevének .xml a kiterjesztése, ez automatikusan bekövetkezik. .SH INTERAKTÍV FELÜLET A felület legfelső sorában a hibás szóalakot, és az éppen vizsgált állomány nevét látjuk. Amennyiben egy szóalak szótári tiltás miatt nem kerül elfogadásra, a bal felső sarokban a TILTOTT! (FORBIDDEN!) üzenet is megjelenik. Ez az üzenet arra utal, hogy nem hiányos szókincs, hanem szándékos tiltás miatt nem került a szó elfogadásra. Az első sor alatt az állomány hibás szót tartalmazó sorát, és szövegkörnyezetét láthatjuk, majd ezt követik a javaslatok, ha vannak. .PP A használható billentyűkombinációk: .TP .B Szóköz Továbblépés javítás nélkül a következő hibás szóra. .TP .B Számok A megfelelő javaslat kiválasztása. .TP .B c Csere. A hibás szó cseréje a megadott szóra, vagy szavakra. Az Escape billentyű kétszeri lenyomásával megszakíthatjuk a a cserét. .TP .B j A szó elfogadása a program futásának befejeződéséig. .TP .B f A szó felvétele a saját szótárba. .TP .B k A szó kisbetűsként való felvétele a saját szótárba. .TP .B t Ragozott tőszó felvétele. A ragozás a másodikként megadott, mintául szolgáló szó alapján történik. Ha ez a szó nincs felvéve a szótárba, a tőszófelvételt elölről kell kezdeni. Példa: gyakran hiányoznak az idegen és a mozaikszavak. Vegyük fel a hiányzó OTP szót a tv köznévi mozaikszó toldalékaival! Lenyomjuk a t billentyűt, beírjuk, hogy OTP, leütjük az új sor billentyűt, beírjuk, hogy tv, és ismét új sor. A tv szó ugyanis már szerepel a szótárban, és ragozása mondja meg a programnak, hogy az OTP szót milyen toldalékokkal szeretnénk látni, pl. OTP\-hez, OTP\-met stb. a tv\-hez, tv\-met mintájára. A \-val/\-vel, \-vá/\-vé toldalékokat a kötőjellel kapcsolt toldalékú szavak esetében külön kell felvenni, de még így is sokkal kényelmesebb a speciális tőfelvétel, mint minden (akár több száz) toldalékos alakot külön\-külön felvenni. Egy kis segítség a minta kiválasztásához: első menetben a hangrend számít. Pl. mozaikszavaknál a mély hangrendű új szavak felvételénél használhatjuk a \fIMÁV\fR szót példaként, ajakréses magas hangrendnél pedig az említett \fItv\fR\-t. Ajakkerekítéses magas hangrend esetében a \fIHÖK\fR szót használhatjuk (amíg át nem lesz javítva a helyes hök\-re). Ha a hiányzó szó nem mozaikszó, hanem például tulajdonnév, a \fIPál\fR, \fIPéter\fR, \fIÖrs\fR szavakat adhatjuk meg példának a hangrendtől függően. Ha meg egyszerű köznévről van szó, akkor használjuk az \fIok\fR, \fIék\fR, \fIük\fR szavakat. Igéknél \fIáll\fR, \fIvél\fR, \fIül\fR, ikes igéknél \fIázik\fR, \fIvérzik\fR, \fInőzik\fR lehet a példa (remélhetőleg a következő változatokban egyszerűsödik ez a tőfelvétel). Az Escape billentyű kétszeri lenyomásával megszakíthatjuk ezt a műveletet. Az itt felvett szavak automatikusan a saját szótárba kerülnek. Ha ezt innen törölni szeretnénk, a programból kilépve a saját szótár kézi átszerkesztésével tehetjük meg. .TP .B m Kilépés a változtatások mentése nélkül. A program változtatás megléte esetén megerősítést kér. .TP .B v Az állomány ellenőrzésének megszakítása a változtatások mentésével. Ha van következő állomány, akkor a program annak ellenőrzését kezdi el. .TP .B ? Segítség. Hasonló rövid leírás megjelenítése a billentyűparancsokról. .SH CSŐFELÜLET A \fIHunspell \fR soronként dolgozza fel az állományokat, a helyes szavakat \fI*\fR (tőszó), \fI\-\fR (összetett szó), vagy .I + (ragozott szó) karakterrel jelöli, a helyteleneket .I # (nincs javaslat) , vagy .I & (van javaslat) karakterrel. A + jelet a kimenetben követi még a szótő. A # jel után a hibás szó, és kezdőpozíciója van feltüntetve. A & jelet követi a hibás szó; a javaslatok száma; a hibás szó kezdőpozíciója; majd kettőspont után a javaslatok, vesszővel elválasztva: .PP .RS .nf macska * macskabajusz - macskák + macska mcsk # mcsk 0 macka & macka 7 0: macska, maca, racka, packa, vacka, marka, mackó .fi .RS .SH PÉLDÁK .TP .B hunspell \-d en_US english.html Az amerikai angol helyesírási szótár kiválasztása (aktuális, vagy a .BR /usr/share/hunspell könyvtárból. .TP .B hunspell -l szöveg.html A megadott állomány hibás szavainak kiírása. .TP .B hunspell -l *.odt | sort | uniq >nem_ismert_szavak Az aktuális könyvtárban található összes OpenDocument szöveges állomány nem ismert szavainak állományba mentése (az ismétlődők kiszűrésével). .TP .B hunspell -p nem_ismert_szavak_de_jok *.odt Az aktuális könyvtárban található OpenDocument szöveges állományok interaktív ellenőrzése saját szótár megadásával. A példában szereplő saját szótár nem más, mint az előzőleg elmentett nem_ismert_szavak állománya, amelyekből kivettük azokat a szavakat, amelyeket most javítani szeretnénk. .SH KÖRNYEZET .TP .B DICTIONARY A szótár helyének megadására szolgál. Szerepe megegyezik a .I \-d kapcsolóval. .TP .B DICPATH A szótárkeresési útvonalat tartalmazó változó. .TP .B WORDLIST A saját szótár helyének megadására szolgál. Szerepe megegyezik a .I \-p kapcsolóval. .SH ÁLLOMÁNYOK .BI /usr/share/default.aff Az alapértelmezett ragozási táblázat. Lásd hunspell(4). .PP .BI /usr/share/default.dic Az alapértelmezett szótár az előző ragozási táblázathoz. Lásd hunspell(4). .BI $HOME/.hunspell_default Az alapértelmezett saját szótár. Az állományt létrehozza a Hunspell, ha nem létezik. Lásd ispell(1). .SH LÁSD MÉG .B hunspell (4), .B hunstem (1), .B makedb (1), .B lookdb (1), .B ispell (1), .B ispell (4), Magyar Ispell dokumentáció. .SH ELŐNYÖK A program a következő előnyöket nyújtja a hasonló célokat szolgáló \fIIspell\fR\-lel szemben: .IP \- Képzők átfogó ismerete. (Több tízezer helyes szóalak elfogadását tette lehetővé a tesztelésre használt 4 millió szavas gyakorisági szótárban.) .IP \- Homonimák kezelése (nincsenek például olyan alakok elfogadva, mint megvárban). .IP \- Helyes javaslatok a több karakter változásával járó tipikus hibákra (j/ly, íj/ijj, nyj/nny és még több tucatnyi tévesztés megvizsgálásával). Az \fIIspell\fR csak két karakter felcserélése; vagy egy karakter hiánya, cseréje, illetve felesleges jelenléte esetén ad helyes javaslatot. .IP \- Az összes helyes összetett szónak látszó, de tipikus hibával előálló alak tiltása (karvaj, színtű, súlytó stb.) .IP \- Javaslatok valószínűségi sorrendben jelennek meg (tipikus hibák, i/í, o/ó, u/ú tévesztések stb.). .IP \- Összetett szavak esetén 6–3\-as szabály alkalmazása (helyesírás\-ellenőrző, gépkocsi\-összeszerelés). .IP \- Mozgószabály alkalmazása (kiviteli engedély, kiviteliengedély\-kérés). .IP \- A magyar nyelv egyéb összetételi szabályainak alkalmazása (például hatlövetű, tizenkét lövetű, kéthavi, két hónapos, másodmagával). .IP \- Leg-, legesleg- és -bb confixum helyes kezelése (nincs pl. legédes, csak legédesebb). .IP \- Ragozható tőszófelvétel. Megkönnyíti egy új szó ragozott változatainak ellenőrzését, feleslegessé téve ezek külön\-külön történő felvételét a saját szótárba. .IP \- Javaslatok mássalhangzó\-triplázások (sakkkör, baletttáncos, dzsesszszak) esetén. (Ispell helyesnek fogadja el ezeket.) .IP \- Javaslatok szótagduplázások (oktatatás, igenenevet) esetén. .IP \- Javaslatok ékezet nélküli szövegre (tukorfurogep\->tükörfúrógép). .IP \- Kötőjeles szavak kezelése (unos\-untalan). .IP \- Toldalékolt számok (1\-jén, 11\-én, 5.\-et) kezelése. .IP \- °, %, és § jelek (%\-kal) toldalékolt alakjainak kezelése. .IP \- Mozaikszavak (MÁV\-osokat) kezelése. .IP \- Y-ra végződő szavak (boyjal, pennyvel) kezelése. .IP \- Idegen ejtésű szótagra végződő szavak (Anonymusszal, Voltaire\-nek) kezelése. .IP \- Két szóból álló földrajzi nevek (San Franciscó\-i) kezelése. .IP \- Hibás alakok tiltása (Babitssal, tanit, alkotóművész stb.) .IP \- Tiltások jelzése a felhasználói felületen. .IP \- Egyéb (például az Ispell ragozott utószó esetében bármilyen szóösszetételt elfogad: macskatekerem, kutyakavarom, ezt a Hunspell nem teszi meg). .IP \- Magyar nyelvű (illetve .B locale (7) függő) felület. .IP \- Hordozható szöveges szótárállományok, szemben az Ispell platform, és bináris Ispell fordítástól függően (nem) kezelhető adatállományaival. .SH SZERZŐ A Hunspell az OpenOffice.org MySpell függvénykönyvtárán továbbfejlesztése. A MySpell affixumtömörítésének mintája az International Ispell program volt. .PP A mintaként szolgáló International Ispell szerzője Geoff Kuenning, sok más elődje munkájára támaszkodva (l. ispell(1)). .PP A Myspellt Kevin Hendricks készítette a legjelentősebb nyílt forráskódú irodai csomaghoz, az OpenOffice.org-hoz 2001\-2002\-ben (l. http://hu.openoffice.org). .PP A Hunspell programkönyvtárat és parancssori programot Németh László készítette 2002\-2008\-ban. hunspell-1.7.2/man/hu/hunspell.50000644000175000017500000004651413565705656013437 00000000000000.hla hu .TH hunspell 5 "2014. május 26." .LO 1 .SH NÉV hunspell \- a Hunspell állományainak formátuma .SH LEÍRÁS A .IR Hunspell (1) két állományt igényel egy adott nyelven történő helyesírás\-ellenőrzéshez. Az első állomány egy szótárállomány, ami az adott nyelv szavait, és ezek kapcsolóit (attribútumait) tartalmazza. A második állomány egy ragozási (affixum) állomány, ami meghatározza az említett kapcsolók jelentését. .SH SZÓTÁRÁLLOMÁNY Egy hunspell .B szótárállomány (*.dic) első sora a szótárállományban lévő szavak közelítő számát tartalmazza (az optimális méretű memóriaterület lefoglalásához). A többi sor soronként egy szót tartalmaz. Minden szó után nem kötelezően egy perjel, és egy, vagy több kapcsoló következhet. A kapcsolók egybetűsek, és meghatározzák, hogy milyen toldalékokat kaphat a tőszó, illetve milyen egyéb speciális tulajdonságokkal rendelkezik. Például a .PP .RS .nf 1 hunspellezik/EeX .fi .RE .PP szótár egy szót tartalmaz (hunspell), ami a magyar ragozási állomány alapján alanyi és tárgyas igeragozást is vonz (E és e kapcsolók), valamint igekötő prefixumokat is kaphat. A példa szótárállomány és a magyar ragozási állomány alapján a \fImeghunspelleztétek\fR helyes szóként kerülne felismerésre. A szótári szavak perjelet is tartalmazhatnak, ha az fordított perjellel van bevezetve: "\/". A kapcsolók alapértelmezésként egy karakteresek, de ha több ragozási osztályt szeretnénk használni, ez több karakteresre vagy számra is módosítható. A Hunspell szótárállományok sorai kiegészítő adatmezőket is tartalmazhatnak, amelyek szóközökkel vagy tabulátorokkal vannak elválasztva (l. kiegészítő adatmezők). A személyes szótárak egyszerű szólisták. Megadhatunk perjellel elválasztott példaszavakat is a toldalékolás engedélyezésére: .PP .RS .nf Obama/Tamara .fi .RE .PP A példában a Tamara szó toldalékolását a személyes szótár Obama szavára is alkalmazza az ellenőrző, elfogadva az Obamáról, Obamáékat stb. alakokat is. .SH RAGOZÁSI ÁLLOMÁNY A .B "ragozási állomány" rendszerint kisebb méretű. Különféle definíciókat és ragozási szabályokat ad meg meghatározott kulcsszóival. Például a .B SET a karakterkódolás, a .B TRY javaslattevésnél módosítot betűk, a .B REP a javaslattevésnél módosított szórészletek, a .B PFX és az .B SFX pedig a szó elejére és végére illesztendő toldalékok megadására szolgál. A következő példa egy UTF\-8-as kódolású szótár affixumállományának definíciója. A TRY felsorolja a magyar betűket gyakorisági sorrendjükben, a LANG beállítja a magyar nyelvet, a WORDCHARS megadja azokat a karaktereket, amelyeket a parancssori Hunspell a szavak részeként fog kezelni. .PP .RS .nf SET UTF\-8 TRY íóúÍÓÚtaeslzánorhgkiédmyőpvöbucfjüűxwqTAESLZÁNORHGKIÉDMYŐPVÖBUCFJÜŰXWQ\-. LANG hu_HU WORDCHARS \-.§%‰°0123456789 REP 2 REP j ly REP ly j PFX X Y 3 PFX X 0 meg . PFX X 0 rá . PFX X 0 össze . SFX e Y 6 SFX e ik tük e[dz]ik SFX e ik tétek e[dz]ik SFX e ik ték e[dz]ik SFX e 0 tük e[dzt] SFX e 0 tétek e[dzt] SFX e 0 ték e[dzt] SFX f Y 2 SFX f ik het/e e[dz]ik SFX f ik tet/e e[dz]ik .fi .RE .PP A REP a j és ly felcserélése esetén ad jó és elöl rangsorolt javaslatokat. A PFX-ek pár igekötőt definiálnak, az SFX-ek pedig pár igeragot. Ezek nagyobb részénél a szó végi ik is levágásra kerül a toldalék illesztése előtt. Itt az illesztés feltétele, hogy az igék -edik vagy -ezik karaktersorozatra végződjenek, különben pedig az -ed, -ez vagy -et betűkre. Az f jelű toldalékolási osztály érdekessége, hogy a -het és -tet illesztése után még folytatódhat a toldalékolás az e jelű toldalékolási osztállyal (ezt a het/e ls tet/e határozza meg), így kaphat -hettük, -hettétek, -hették, -tettük, -tettétek, -tették toldalékokat a szótárban szereplő levelezik szó: .PP .RS .nf 1 levelezik/e .fi .RE .PP .SH "ÁLTALÁNOS PARAMÉTEREK" A Hunspell forrás több mint 80 példát tartalmaz a paraméterek használatára vonatkozóan. A következő leírás nem teljes, l. még az angol kézikönyvoldalt is. .IP "SET karakterkód" A szótár és affixumállomány karakterkódolásának beállítása. A lehetséges értékek: UTF-8, ISO8859\-1-től ISO8859\-10-ig, ISO8859\-13\-ISO8859\-15, KOI8-R, KOI8-U, cp1251, ISCII-DEVANAGARI. .IP "FLAG érték" A kapcsolók 1 karakteres alapbeállításának módosítása. (A ragozási osztályokat és egyéb tulajdonságokat jelölik a kapcsolók, amelyek alapértelmezés szerint 1 karakteresek, a pékdákban legtöbbször nagybetűvel szerepelnek). Az `UTF-8' értékkel Unicode karaktereket használhatunk kapcsolóként (UTF-8 kódolással és maximum 65 ezres karakterkódig), a `long' értékkel két karakteres kapcsolókat (több kapcsoló esetén sincs elválasztójel, a `num' értékkel vesszővel elválasztott decimális számokat 1-től 65 ezerig. .IP "COMPLEXPREFIXES" Kétszeres prefixumillesztést állít be (de csak egyszeres szuffixumokat az alapértelmezett kettő helyett.) Jobbról balra író ragasztó nyelveknél hasznos. .IP "LANG nyelvkód" Nyelv megadása (nyelvfüggő programrészek bekapcsolásához) az ISO nyelv- és régiókóddal (pl. hu_HU). .IP "IGNORE karakterek" A felsorolt karaktereket törli a szótári szavakból és toldalékokból, valamint a bemeneti szavakból. Hasznos az opcionális írásjelek, mint az arab vagy a héber mellékjelek kezelésére. .IP "AF a_következő_AF_sorok_száma" .IP "AF kapcsolók" A Hunspell program képes a kapcsolóhalmazokat egy természetes számmal helyettesíteni a szótárállományban és a többszörös toldalékásnál az affixumállományban (alias tömörítés), felgyorsítva ezzel a szótár betöltődését és csökkentve a program memóriaigényét. Egy rövid példa: .PP .RS .nf 3 hello try/1 work/2 .fi .RE .PP És a kapcsolódó AF definíciók az affixumállományban: .PP .RS .nf SET UTF-8 TRY esianrtolcdugmphbyfvkwzESIANRTOLCDUGMPHBYFVKWZ' AF 2 AF A AF AB ... .fi .RE .PP Ami megfelel a következő szótárállománynak: .PP .RS .nf 3 hello try/A work/AB .fi .RE .PP Lásd még a tests/alias* példát a forrásban. Megjegyzés: az AF sorok nem előzhetik meg a FLAG paramétert. Alias tömörítésre szolgál a Hunspell makealias segédprogramja. .IP "AM a_következő_AM_sorok_száma" .IP "AM morfológiai_és_egyéb_adatmezők" A Hunspell program képes a kiegészítő adatmezőket egy természetes számmal helyettesíteni, az AF paraméterhez hasonlóan. Lásd még a tests/alias* példát a forrásban. .SH "JAVÍTÁSI PARAMÉTEREK" Az alapértelmezett n-gram, illetve betűcserén és -törlésen alapuló javaslatokat kiegészíthetjük a javítási paraméterekkel. A REP segít a tipikus hibák és javításuk megadásában. A PHONE a kiejtést kevésbé követő írásrendszereknél nyújt segítséget. .IP "KEY szomszédos_karakterek_opcionálisan_függőleges_vonallal_elválasztva" A nyelv alapértelmezett billentyűzetkiosztását adhatjuk meg a KEY paraméterrel, hogy a javaslatoknál a szomszédos betűk elütését felismerje a program. A nem szomszédos betűket függőleges vonallal választhatjuk el: .PP .RS .nf KEY öüó|qwertzuiopőú|asdfghjkléáű|íyxcvbnm .fi .RE .PP .IP "TRY karakterek" A javaslattevésnél az 1 karakteres próbálkozásoknál az itt felsorolt karakterekre cserél, illetve bővít. A paraméternél a kis- és nagybetűket külön kell megadni. .IP "NOSUGGEST kapcsoló" Az itt definiált kapcsolóval jelölt szavakat a program nem javasolja a hibajavításnál. Vulgáris és obszcén szavak esetében hasznos. .IP "MAXNGRAMSUGS" Az n-gram (n hosszú szórészletek megegyezősége alapján súlyozott) javaslatok maximális számának beállítása. Alapértelmezetten 5. A 0 érték kikapcsolja az n-gram javaslatokat. .IP "NOSPLITSUGS" Nem javasol szófelbontást a Hunspell ezzel a beállítással. Hiányzó összetettszó-kezelés esetén hasznos a hibás különírási javaslatok tiltására. .IP "SUGSWITHDOTS" Ha a hibás szó pont(ok)ra végződik, ezeket a javaslatok esetében is feltünteti. A LibreOffice szótárak számára nem szükséges ez a beállítás. .IP "REP szám" .IP "REP mit mire" A javítási cseretáblázat megadására szolgáló definíciók. Az első REP után adjuk meg a többi REP sor számát. Ezek a sorok már két paramétert várnak: először megadjuk a felismerendő mintát (hibás szórészletet), utána pedig azt a karaktersorozatot, amire a felismert mintát javítani szeretnénk. A helyesírás\-ellenőrző a cseretáblázat révén tud helyes javaslatot tenni többkarakteres eltérés (pl. j-ly) esetén. A szóköz aláhúzásjellel helyettesítendő a javaslatokban: .PP .RS .nf REP 1 REP végülis végül_is .fi .RE .PP A szervíz, szintű és a hasonló hibás összetett szavak letiltásában szintén a REP táblázat segít a CHECKCOMPOUNDREP megadásával (l. ott). .IP "MAP a_MAP_definíciók_száma" .IP "MAP karakterek" Rokon karaktereket adhatunk meg több sorban. A javaslattevésnél több rokon karakter cseréje is lehetséges, így például ékezet nélküli szavakat is képes ékezetesíteni a Hunspell a következő definíció mellett: .PP .RS .nf MAP 5 MAP aá MAP eé MAP ií MAP oóöő MAP uúüű .fi .RE .PP .IP "PHONE a_PHONE_definíciók_száma" .IP "PHONE karakterek" A PHONE egy táblázattal megadható fonetikus átírási algoritmust használ a kiejtési hasonlóság kiszámítására. Különösen hasznos azoknál a nyelveknél, ahol az írás nem tükrözi a kiejtést. A részletes dokumentáció az Aspell helyesírás-ellenőrző oldalán érhető el angol nyelven: http://aspell.net/man-html/Phonetic-Code.html. Megjegyzés: a szabályokban szereplő kapcsos zárójelek nem tartalmazhatnak még több byte-os UTF-8 karaktereket, ahogy a kötőjeles kifejezések is byte-ot jelölnek, nem karaktert Unicode szótár esetén is. .SH "SZÓ-ÖSSZETÉTELEZÉSI PARAMÉTEREK" .IP "BREAK a_BREAK_definíciók_száma" .IP "BREAK karakter_vagy_karaktersorozat" Ha a keresett szó nincs a szótárban, a felsorolt karaktereknél vagy karaktersorozatoknál felbontja és részenként ellenőrzi. Hasznos például a kis- és nagykötőjeles szavaknál a magyarban. .IP "COMPOUNDRULE" Reguláris kifejezésekhez hasonló összetételi szabályok megadása. .IP "COMPOUNDMIN szám" A legkisebb szóhossz, ami még összetett szóban szerepelhet. Alapértelmezés szerint 3 karakter. .IP "COMPOUNDFLAG kapcsoló" Itt adható meg a szóösszetételben való szereplést engedélyező kapcsoló. .IP "COMPOUNDBEGIN kapcsoló" A kapcsoló az összetett szavak első tagjaként engedélyezi a megjelölt szavakat. .IP "COMPOUNDLAST kapcsoló" A kapcsoló az összetett szavak utolsó tagjaként engedélyezi a megjelölt szavakat. Kombinálható az előző kapcsolóval. .IP "COMPOUNDMIDDLE kapcsoló" A kapcsoló az összetett szavak közbenső tagjaként engedélyezi a megjelölt szavakat. Kombinálható a két előző kapcsolóval. .IP "ONLYINCOMPOUND kapcsoló" Csak az összetett szavakban megjelenő ragozás jelölésére szolgáló kapcsoló (germán nyelvek esetében tipikus). .IP "CIRCUMFIX kapcsoló" Ezzel a kapcsolóval jelölt szuffixum csak ugyanilyen kapcsolóval jelölt prefixummal jelenhet meg egy tövön. (Pl. leg-édes-ebb). .IP "COMPOUNDPERMITFLAG kapcsoló" Alapértelmezés szerint a prefixumok és szuffixumok nem fordulhatnak elő az összetett szavak belsejében. A COMPOUNDPERMITFLAG kapcsolóval rendelkező affixumok viszont itt is megjelenhetnek. .IP "COMPOUNDFORBIDFLAG kapcsoló" Toldalékolt szavak szóösszetételben való szereplését tiltó kapcsoló. A tiltáshoz az adott SFX szabály folytatási osztályaként (l. később) adjuk meg ezt a kapcsolót. .IP "COMPOUNDROOT kapcsoló" A szótárba közvetlenül felvett összetett szavakat jelölő kapcsoló. A COMPOUNDWORDMAX, és így a magyar esetében a 6–3-as szabály működését befolyásolja azzal, hogy a COMPOUNDROOT kapcsolóval összetettnek jelölt szavak két szónak számítanak. .IP "COMPOUNDWORDMAX szám" A szóösszetételekben szereplő egyszerű tövek maximális száma. A magyar esetében 2 az érték, e fölötti szószámnál már életbe lép a 6–3-as szabály. .IP "COMPOUNDSYLLABLE szám karakterek" Két paramétert vár. Az első megadja az összetett szavak tövének maximális szótagszámát, ami a magyar helyesírás 6–3-as szabálya szerint 6. A második mező felsorolja a magánhangzókat, ami a szótagszám megállapításához szükséges. Ha hiányzik ez a definíció, akkor nincsen korlátozás az összetett szavak tövének szótagszámára vonatkozóan. .IP "SYLLABLENUM kapcsolók" Egy paramétert vár. A paraméterben megadhatóak azok a ragozási osztályok, amelyek ragozás esetén eggyel növelik az összetett szavak tövénél kiszámított szótagszámot. A magyarban ezek a melléknévképzők: kerékpárjavításainkról, de kerékpár\-javítási. A .IP "FORBIDDENWORD kapcsoló" A tiltott szavakat jelölő kapcsoló. A tiltott szótövek toldalékolt alakjai is letiltásra kerülnek. A tiltott szavak akár toldalékolási, vagy szóösszetételi szinonimaként sem kerülnek elfogadásra. .IP "PSEUDOROOT kapcsoló" A kapcsolóval jelölt szavak toldalékolt alakjai kerülnek csak elfogadásra. Fiktív tövek megadására szolgáló kapcsoló. A tő lehet még helyes szó, ha érvényes szinonimaként előáll vagy szerepel a szótárban. .IP "WORDCHARS karakterek" Paramétere azok a karakterek, amelyek a beállított kódolás (pl. a magyar esetében az ISO-8859-2) betűi mellett még az adott nyelv szavaiban előfordulhatnak. Ilyen például a magyarban a kötőjel, pont, százalékjel, fokjel, paragrafusjel és a nagykötőjel. Az utóbbi csak UTF-8, vagy microsoft-cp1250 karakterkészlet mellett lesz használható a magyar szótárban. .IP "PFX kapcsoló keresztkombinálódás szám" .IP "PFX kapcsoló levágás prefixum feltétel morfológia" Prefixum megadására szolgáló definíciók. A prefixumok egykarakteres névvel jelölt osztályokba vannak sorolva. A példában az X osztály definíciója látható. Az egyes osztályokra vonatkozó PFX fejléc tartalmazza a következőket: (1) az osztály betűjelét (a példában X) (2) a keresztbe való kombinálás engedélyezése, illetve tiltása (Y/N). Engedélyezés esetén az adott prefixum akkor is alkalmazható, ha a tőszó toldalékolt alakban fordul elő. Ehhez az is szükséges, hogy a toldalék (affixum) ragozási osztályában is legyen engedélyezve a kombinálás. (3) az osztályba tartozó bejegyzések számát A PFX fejlécet követő sorokban a PFX paraméterek jelentése a következő: (1) az osztály betűjele (2) a ragozásnál a szó elejéről leválasztandó karaktersorozat. Ha nem kell leválasztani, akkor 0. (3) a prefixum (például igekötő, vagy a leg\-, legesleg\- a mellékneveknél). Perjellel elválasztva kapcsolókat is megadhatunk (l. többszörös toldalékolás). (4) a minta, ami ha illeszkedik, alkalmazható a szabály. Például ha itt kutya szerepelne, akkor csak a kutya kezdetű szavak elé lehetne tenni az ebben a sorban megadott prefixumot. A minta megadásánál a pont (.) speciális jelentéssel bír: minden karakterre illeszkedik. Megadhatunk csak bizonyos karakterekre illeszkedő mintát is szögletes zárójelek segítségével. Például az [abcd] illeszkedik az a, b, c, illetve d karakterekre is. Ellentétben az Ispell\-lel, a kötőjel szerepe a szögletes zárójelek között nem speciális, vagyis kötőjelet jelent, és nem karaktertartományt. Ha a nyitó szögletes zárójel után kalap (^) karakter található, a karaktertartomány komplementerére illeszkedik a minta, hasonlóan a reguláris kifejezésekhez (l. .IR regex "(7))." (5) Morfológiai leírás. Szóközzel vagy tabulátorral elválasztott mezők. A mezőnevek és használatuk az angol kézikönyvoldalon található. .IP "SFX kapcsoló keresztkombinálódás szám" .IP "SFX kapcsoló szuffixum feltétel mofológiai_leírás" A PFX\-szel megegyező paramétereket kap, csak nem a szó eleji, hanem a szó végi toldalékok leírására szolgál. A példában szereplő definíciók jelentése: az \-edik, vagy \-ezik végű szavakra alkalmazható a három szabály. A rag illesztésénél levesszük a szó végi \-ik karaktersorozatot, és szabálytól függően illesztjük a \-tük, \-tétek, \-ték toldalékokat, végeredményben \-edtük, \-edtétek, \-edték, illetve -eztük, \-eztétek, \-ezték végű szavakat kapva. .IP "Többszörös toldalékolás" A PFX és az SFX szabályokban a toldalék perjellel elválasztva kapcsolókat is kaphat, hasonlóan a szótárállomány töveihez. A kapcsolók a következőek lehetnek: (1) SFX szabályban az SFX folytatás jelentése, hogy a toldalék még tovább ragozódhat a megadott kapcsolókkal (többszörös affixumleválasztás). A Hunspell esetében csak a kétszeres affixumleválasztás lett megvalósítva, tehát a folytatási osztály folytatását már nem veszi figyelembe a program. (2) SFX szabályban a PFX folytatás jelentése, hogy az adott prefixum is hozzájárulhat a tőhöz, feltéve, ha az SFX szabály is él. (3) PFX szabályban az SFX szabály jelentése, hogy a megjelölt SFX szabály a tőhöz járulhat, ha a PFX szabály is él. (4) ONLYINCOMPOUND kapcsoló megadásával az adott PFX vagy SFX toldalék csak szóösszetételben jelentkezhet. (5) CIRCUMFIX kapcsoló megadásával az adott SFX csak az ugyanilyen toldalékot kapó PFX-szel együtt fordulhat csak elő. (6) Az összetételi kapcsolók megadásával engedélyezhetjük vagy letilthatjuk (COMPOUNDFORBIDFLAG) az összetételben való szereplést. A összetett szavak utolsó tagja alapértelmezés szerint minden affixumot felvehet. A közbenső szavaknál viszont explixit módon engedélyezni kell ezt. .PP A ragozási állomány ezeken kívül még megjegyzéseket is tartalmazhat, ezért az adott szótár változatát, szerzőjét, felhasználási engedélyeit itt keressük. .SH SAJÁT SZÓTÁR A saját szótár formátuma közel megegyezik a szótárállomány formátumával. A különbségek a következőek: (1) Nem kell megadni az első sorban az állományban lévő szavak méretét. (2) A szóhoz nem kapcsolókat, hanem egy mintaszót adhatunk meg, ami alapján az ellenőrző a szó toldalékolt alakjait is felismeri. Például a Patyomkin/Ádám azt jelenti, hogy a Patyomkin szót az Ádáméval megegyező ragozással is el kell fogadni. (3) A csillag tiltást jelent: a csillaggal jelölt szavakat az ellenőrző akkor sem ismeri fel, ha az alapszótárban szerepelnek, pl. *kóricál. (4) Az állomány kézzel módosítható, és ezt időnként javasolt is megtenni, ha esetleg hibásan vettünk fel szavakat. .SH LÁSD MÉG .B angol nyelvű hunspell (5), .B hunspell (1), .B ispell (1), .B ispell (4), Magyar Ispell dokumentáció. .SH TÖRTÉNET A MySpell szótár\-, illetve ragozási állományának formátumát Kevin Hendricks készítette olyan céllal, hogy lehetővé tegye ezen állományok gyors, futás idejű feldolgozását. A COMPOUNDFLAG, REP és az egyéb Hunspell beállítási lehetőségeket Németh László készítette, elsősorban a jobb magyar nyelvű helyesírás\-ellenőrzés céljából. hunspell-1.7.2/man/hu/Makefile.am0000644000175000017500000000021513565705656013537 00000000000000#mandir = $(DESTDIR)/share man1dir = $(mandir)/hu/man1 man4dir = $(mandir)/hu/man4 man_MANS = hunspell.1 hunspell.5 EXTRA_DIST = $(man_MANS) hunspell-1.7.2/man/hzip.10000644000175000017500000000132213565705656012123 00000000000000.TH hunzip 1 "2008-06-12" .LO 1 .SH NAME hunzip \- compress and encrypt dictionary files .SH SYNOPSIS hzip [\-h] [\-P password] [file(s)] .SH DESCRIPTION .I hunzip is a small utility for text file compression and encryption, especially for sorted dictionaries. "hunspell filename" creates the compressed file "filename.hz" without removing the original file. The compression algorithm uses 16-bit Huffman encoding and line-oriented prefix-suffix compression. It has good compression ratio for huge sorted word lists. .SH OPTIONS .IP \fB\-h\fR Display short help description. .IP \fB\-P\ password\fR Encrypted compression by an arbitrary length password. .SH SEE ALSO .B hzip (1), hunspell(1) .SH AUTHOR László Németh. hunspell-1.7.2/man/hunspell.10000644000175000017500000002764213565705656013020 00000000000000.TH hunspell 1 "2014-05-27" .LO 1 .SH NAME hunspell \- spell checker, stemmer and morphological analyzer .SH SYNOPSIS hunspell [\-1aDGHhLlmnOrstvwX] [\-\-check\-url] [\-\-check\-apostrophe] [\-d dict[,dict2,...]] [\-\-help] [\-i enc] [\-p dict] [\-vv] [\-\-version] [text/OpenDocument/TeX/LaTeX/HTML/SGML/XML/nroff/troff file(s)] .SH DESCRIPTION .I Hunspell is fashioned after the .I Ispell program. The most common usage is "hunspell" or "hunspell filename". Without filename parameter, hunspell checks the standard input. Typing "cat" and "exsample" in two input lines, results an asterisk (it means "cat" is a correct word) and a line with corrections: .PP .RS .nf $ hunspell -d en_US Hunspell 1.2.3 * & exsample 4 0: example, examples, ex sample, ex-sample .fi .RE .PP Correct words signed with an '*', '+' or '-', unrecognized words signed with '#' or '&' in output lines (see later). (Close the standard input with Ctrl-d on Unix/Linux and Ctrl-Z Enter or Ctrl-C on Windows.) .PP With filename parameters, .I hunspell will display each word of the files which does not appear in the dictionary at the top of the screen and allow you to change it. If there are "near misses" in the dictionary, then they are also displayed on following lines. Finally, the line containing the word and the previous line are printed at the bottom of the screen. If your terminal can display in reverse video, the word itself is highlighted. You have the option of replacing the word completely, or choosing one of the suggested words. Commands are single characters as follows (case is ignored): .PP .RS .IP R Replace the misspelled word completely. .IP Space Accept the word this time only. .IP A Accept the word for the rest of this .I hunspell session. .IP I Accept the word, capitalized as it is in the file, and update private dictionary. .IP U Accept the word, and add an uncapitalized (actually, all lower-case) version to the private dictionary. .IP S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. .IP 0-\fIn\fR Replace with one of the suggested words. .IP X Write the rest of this file, ignoring misspellings, and start next file. .IP Q Exit immediately and leave the file unchanged. .IP ^Z Suspend hunspell. .IP ? Give help screen. .RE .SH OPTIONS .IP \fB\-1\fR Check only first field in lines (delimiter = tabulator). .IP \fB\-a\fR The .B \-a option is intended to be used from other programs through a pipe. In this mode, .I hunspell prints a one-line version identification message, and then begins reading lines of input. For each input line, a single line is written to the standard output for each word checked for spelling on the line. If the word was found in the main dictionary, or your personal dictionary, then the line contains only a '*'. If the word was found through affix removal, then the line contains a '+', a space, and the root word. If the word was found through compound formation (concatenation of two words, then the line contains only a '\-'. .IP "" If the word is not in the dictionary, but there are near misses, then the line contains an '&', a space, the misspelled word, a space, the number of near misses, the number of characters between the beginning of the line and the beginning of the misspelled word, a colon, another space, and a list of the near misses separated by commas and spaces. .IP "" Also, each near miss or guess is capitalized the same as the input word unless such capitalization is illegal; in the latter case each near miss is capitalized correctly according to the dictionary. .IP "" Finally, if the word does not appear in the dictionary, and there are no near misses, then the line contains a '#', a space, the misspelled word, a space, and the character offset from the beginning of the line. Each sentence of text input is terminated with an additional blank line, indicating that .I hunspell has completed processing the input line. .IP "" These output lines can be summarized as follows: .RS .IP OK: * .IP Root: + .IP Compound: \- .IP Miss: & : , , ... .IP None: # .RE .IP "" For example, a dummy dictionary containing the words "fray", "Frey", "fry", and "refried" might produce the following response to the command "echo 'frqy refries | hunspell \-a": .RS .nf (#) Hunspell 0.4.1 (beta), 2005-05-26 & frqy 3 0: fray, Frey, fry & refries 1 5: refried .fi .RE .IP "" This mode is also suitable for interactive use when you want to figure out the spelling of a single word (but this is the default behavior of hunspell without -a, too). .IP "" When in the .B \-a mode, .I hunspell will also accept lines of single words prefixed with any of '*', '&', '@', '+', '\-', '~', '#', '!', '%', '`', or '^'. A line starting with '*' tells .I hunspell to insert the word into the user's dictionary (similar to the I command). A line starting with '&' tells .I hunspell to insert an all-lowercase version of the word into the user's dictionary (similar to the U command). A line starting with '@' causes .I hunspell to accept this word in the future (similar to the A command). A line starting with '+', followed immediately by .B tex or .B nroff will cause .I hunspell to parse future input according the syntax of that formatter. A line consisting solely of a '+' will place .I hunspell in TeX/LaTeX mode (similar to the .B \-t option) and '\-' returns .I hunspell to nroff/troff mode (but these commands are obsolete). However, the string character type is .I not changed; the '~' command must be used to do this. A line starting with '~' causes .I hunspell to set internal parameters (in particular, the default string character type) based on the filename given in the rest of the line. (A file suffix is sufficient, but the period must be included. Instead of a file name or suffix, a unique name, as listed in the language affix file, may be specified.) However, the formatter parsing is .I not changed; the '+' command must be used to change the formatter. A line prefixed with '#' will cause the personal dictionary to be saved. A line prefixed with '!' will turn on .I terse mode (see below), and a line prefixed with '%' will return .I hunspell to normal (non-terse) mode. A line prefixed with '`' will turn on verbose-correction mode (see below); this mode can only be disabled by turning on terse mode with '%'. .IP "" Any input following the prefix characters '+', '\-', '#', '!', '%', or '`' is ignored, as is any input following the filename on a '~' line. To allow spell-checking of lines beginning with these characters, a line starting with '^' has that character removed before it is passed to the spell-checking code. It is recommended that programmatic interfaces prefix every data line with an uparrow to protect themselves against future changes in .IR hunspell . .IP "" To summarize these: .IP "" .RS .IP * Add to personal dictionary .IP @ Accept word, but leave out of dictionary .IP # Save current personal dictionary .IP ~ Set parameters based on filename .IP + Enter TeX mode .IP \- Exit TeX mode .IP ! Enter terse mode .IP % Exit terse mode .IP "`" Enter verbose-correction mode .IP ^ Spell-check rest of line .fi .RE .IP "" In .I terse mode, .I hunspell will not print lines beginning with '*', '+', or '\-', all of which indicate correct words. This significantly improves running speed when the driving program is going to ignore correct words anyway. .IP "" In .I verbose-correction mode, .I hunspell includes the original word immediately after the indicator character in output lines beginning with '*', '+', and '\-', which simplifies interaction for some programs. .IP \fB\-\-check\-apostrophe\fR Check and force Unicode apostrophes (U+2019), if one of the ASCII or Unicode apostrophes is specified by the spelling dictionary, as a word character (see WORDCHARS, ICONV and OCONV in hunspell(5)). .IP \fB\-\-check\-url\fR Check URLs, e-mail addresses and directory paths. .IP \fB\-D\fR Show detected path of the loaded dictionary, and list of the search path and the available dictionaries. .IP \fB\-d\ dict,dict2,...\fR Set dictionaries by their base names with or without paths. Example of the syntax: .PP \-d en_US,en_geo,en_med,de_DE,de_med .PP en_US and de_DE are base dictionaries, they consist of aff and dic file pairs: en_US.aff, en_US.dic and de_DE.aff, de_DE.dic. En_geo, en_med, de_med are special dictionaries: dictionaries without affix file. Special dictionaries are optional extension of the base dictionaries usually with special (medical, law etc.) terms. There is no naming convention for special dictionaries, only the ".dic" extension: dictionaries without affix file will be an extension of the preceding base dictionary (right order of the parameter list needs for good suggestions). First item of \-d parameter list must be a base dictionary. .IP \fB\-G\fR Print only correct words or lines. .IP \fB\-H\fR The input file is in SGML/HTML format. .IP \fB\-h,\ \-\-help\fR Short help. .IP \fB\-i\ enc\fR Set input encoding. .IP \fB\-L\fR Print lines with misspelled words. .IP \fB\-l\fR The "list" option is used to produce a list of misspelled words from the standard input. .IP \fB\-m\fR Analyze the words of the input text (see also hunspell(5) about morphological analysis). Without dictionary morphological data, signs the flags of the affixes of the word forms for dictionary developers. .IP \fB\-n\fR The input file is in nroff/troff format. .IP \fB\-O\fR The input file is in OpenDocument (ODF or Flat ODF) format. If unzip program is not installed, install it before using this option. .IP \fB\-P\ password\fR Set password for encrypted dictionaries. .IP \fB\-p\ dict\fR Set path of personal dictionary. The default dictionary depends on the locale settings. The following environment variables are searched: LC_ALL, LC_MESSAGES, and LANG. If none are set then the default personal dictionary is $HOME/.hunspell_default. Setting .I \-d or the .I DICTIONARY environmental variable, personal dictionary will be .BR $HOME/.hunspell_dicname .IP \fB\-r\fR Warn of the rare words, which are also potential spelling mistakes. .IP \fB\-s\fR Stem the words of the input text (see also hunspell(5) about stemming). It depends from the dictionary data. .IP \fB\-t\fR The input file is in TeX or LaTeX format. .IP \fB\-v,\ \-\-version\fR Print version number. .IP \fB\-vv\fR Print ispell(1) compatible version number. .IP \fB\-w\fR Print misspelled words (= lines) from one word/line input. .IP \fB\-X\fR The input file is in XML format. .SH EXAMPLES .TP .B hunspell example.html Interactive spell checking of an HTML file with the default dictionary. .TP .B hunspell \-d en_US example.html Interactive spell checking of an HTML file with the en_US dictionary. .TP .B hunspell \-d en_US,en_US_med medical.txt Interactive spell checking with multiple dictionaries. .TP .B hunspell *.odt Interactive spell checking of ODF documents. .TP .B hunspell \-l *.odt List bad words of ODF documents .TP .B hunspell \-l *.odt | sort | uniq >unrecognized Saving unrecognized words of ODF documents (filtering duplications). .TP .B hunspell -p unrecognized_but_good *.odt Interactive spell checking of ODF documents, using the previously saved and reduced word list, as a personal dictionary, to speed up spell checking. .TP .SH ENVIRONMENT .TP .B DICTIONARY Similar to .I \-d. .TP .B DICPATH Dictionary path. .TP .B WORDLIST Equivalent to .I \-p. .SH FILES The default dictionary depends on the locale settings. The following environment variables are searched: LC_ALL, LC_MESSAGES, and LANG. If none are set then the following fallbacks are used: .BI /usr/share/myspell/default.aff Path of default affix file. See hunspell(5). .PP .BI /usr/share/myspell/default.dic Path of default dictionary file. See hunspell(5). .PP .BI $HOME/.hunspell_default. Default path to personal dictionary. .SH SEE ALSO .B hunspell (3), hunspell(5) .SH AUTHOR Author of Hunspell executable is László Németh. For Hunspell library, see hunspell(3). .PP This manual based on Ispell's manual. See ispell(1). hunspell-1.7.2/man/hunspell.30000644000175000017500000001603713565705656013016 00000000000000.TH hunspell 3 "2017-11-20" .LO 1 .hy 0 .SH NAME \fBhunspell\fR - spell checking, stemming, morphological generation and analysis .SH SYNOPSIS \fB#include /* or */\fR .br \fB#include \fR .br .sp .BI "Hunspell(const char *" affpath ", const char *" dpath ); .sp .BI "Hunspell(const char *" affpath ", const char *" dpath ", const char * " key ); .sp .BI "~Hunspell(" ); .sp .BI "int add_dic(const char *" dpath ); .sp .BI "int add_dic(const char *" dpath ", const char *" key ); .sp .BI "int spell(const char *" word ); .sp .BI "int spell(const char *" word ", int *" info ", char **" root ); .sp .BI "int suggest(char***" slst ", const char *" word); .sp .BI "int analyze(char***" slst ", const char *" word); .sp .BI "int stem(char***" slst ", const char *" word); .sp .BI "int stem(char***" slst ", char **" morph ", int " n); .sp .BI "int generate(char***" slst ", const char *" word ", const char *" word2); .sp .BI "int generate(char***" slst ", const char *" word ", char **" desc ", int " n); .sp .BI "void free_list(char ***" slst ", int " n); .sp .BI "int add(const char *" word); .sp .BI "int add_with_affix(const char *" word ", const char *" example); .sp .BI "int remove(const char *" word); .sp .BI "char * get_dic_encoding(" ); .sp .BI "const char * get_wordchars(" ); .sp .BI "unsigned short * get_wordchars_utf16(int *" len); .sp .BI "struct cs_info * get_csconv(" ); .sp .BI "const char * get_version(" ); .SH DESCRIPTION The \fBHunspell\fR library routines give the user word-level linguistic functions: spell checking and correction, stemming, morphological generation and analysis in item-and-arrangement style. .PP The optional C header contains the C interface of the C++ library with Hunspell_create and Hunspell_destroy constructor and destructor, and an extra HunHandle parameter (the allocated object) in the wrapper functions (see in the C header file \fBhunspell.h\fR). .PP The basic spelling functions, \fBspell()\fR and \fBsuggest()\fR can be used for stemming, morphological generation and analysis by XML input texts (see XML API). . .SS Constructor and destructor Hunspell's constructor needs paths of the affix and dictionary files. (In WIN32 environment, use UTF-8 encoded paths started with the long path prefix \\\\?\\ to handle system-independent character encoding and very long path names, too.) See the \fBhunspell\fR(4) manual page for the dictionary format. Optional \fBkey\fR parameter is for dictionaries encrypted by the \fBhzip\fR tool of the Hunspell distribution. . .SS Extra dictionaries The add_dic() function load an extra dictionary file. The extra dictionaries use the affix file of the allocated Hunspell object. Maximal number of the extra dictionaries is limited in the source code (20). . .SS Spelling and correction The spell() function returns non-zero, if the input word is recognised by the spell checker, and a zero value if not. Optional reference variables return a bit array (info) and the root word of the input word. Info bits checked with the SPELL_COMPOUND, SPELL_FORBIDDEN or SPELL_WARN macros sign compound words, explicit forbidden and probably bad words. From version 1.3, the non-zero return value is 2 for the dictionary words with the flag "WARN" (probably bad words). .PP The suggest() function has two input parameters, a reference variable of the output suggestion list, and an input word. The function returns the number of the suggestions. The reference variable will contain the address of the newly allocated suggestion list or NULL, if the return value of suggest() is zero. Maximal number of the suggestions is limited in the source code. .PP The spell() and suggest() can recognize XML input, see the XML API section. . .SS Morphological functions The plain stem() and analyze() functions are similar to the suggest(), but instead of suggestions, return stems and results of the morphological analysis. The plain generate() waits a second word, too. This extra word and its affixation will be the model of the morphological generation of the requested forms of the first word. .PP The extended stem() and generate() use the results of a morphological analysis: .PP .RS .nf char ** result, result2; int n1 = analyze(&result, "words"); int n2 = stem(&result2, result, n1); .fi .RE .PP The morphological annotation of the Hunspell library has fixed (two letter and a colon) field identifiers, see the \fBhunspell\fR(4) manual page. .PP .RS .nf char ** result; char * affix = "is:plural"; // description depends from dictionaries, too int n = generate(&result, "word", &affix, 1); for (int i = 0; i < n; i++) printf("%s\\n", result[i]); .fi .RE .PP .SS Memory deallocation The free_list() function frees the memory allocated by suggest(), analyze, generate and stem() functions. .SS Other functions The add(), add_with_affix() and remove() are helper functions of a personal dictionary implementation to add and remove words from the base dictionary in run-time. The add_with_affix() uses a second root word as the model of the enabled affixation and compounding of the new word. .PP The get_dic_encoding() function returns "ISO8859-1" or the character encoding defined in the affix file with the "SET" keyword. .PP The get_csconv() function returns the 8-bit character case table of the encoding of the dictionary. .PP The get_wordchars() and get_wordchars_utf16() return the extra word characters defined in affix file for tokenization by the "WORDCHARS" keyword. .PP The get_version() returns the version string of the library. .SS XML API The spell() function returns non-zero for the "" input indicating the XML API support. .PP The suggest() function stems, analyzes and generates the forms of the input word, if it was added by one of the following "SPELLML" syntaxes: .PP .RS .nf dogs .fi .RE .PP .PP .RS .nf dogs .fi .RE .PP .PP .RS .nf dog cats .fi .RE .PP .PP .RS .nf dog is:plis:poss .fi .RE .PP .PP .RS .nf word .fi .RE .PP .PP .RS .nf word model_word_for_affixation_and_compounding .fi .RE .PP The outputs of the type="stem" query and the stem() library function are the same. The output of the type="analyze" query is a string contained a result1result2... element. This element can be used in the second syntax of the type="generate" query. .SH EXAMPLE See analyze.cxx in the Hunspell distribution. .SH AUTHORS Hunspell based on Ispell's spell checking algorithms and OpenOffice.org's Myspell source code. .PP Author of International Ispell is Geoff Kuenning. .PP Author of MySpell is Kevin Hendricks. .PP Author of Hunspell is László Németh. .PP Author of the original C API is Caolan McNamara. .PP Author of the Aspell table-driven phonetic transcription algorithm and code is Björn Jacke. .PP See also THANKS and Changelog files of Hunspell distribution. hunspell-1.7.2/man/hunspell.50000664000175000017500000011040214352160534012772 00000000000000.TH hunspell 5 "2017-09-20" .LO 1 .SH NAME hunspell \- format of Hunspell dictionaries and affix files .SH DESCRIPTION .IR Hunspell (1) Hunspell requires two files to define the way a language is being spell checked: a dictionary file containing words and applicable flags, and an affix file that specifies how these flags will control spell checking. An optional file is the personal dictionary file. .SH Dictionary file A dictionary file (*.dic) contains a list of words, one per line. The first line of the dictionaries (except personal dictionaries) contains the approximate word count (for optimal hash memory size). Each word may optionally be followed by a slash ("/") and one or more flags, which represents the word attributes, for example affixes. Note: Dictionary words can contain also slashes when escaped like "\\/" syntax. It's worth to add not only words, but word pairs to the dictionary to get correct suggestions for common misspellings with missing space, as in the following example, for the bad "alot" and "inspite" (see also "REP" and field "ph:" about correct suggestions for common misspellings): .PP .RS .nf 3 word a lot in spite .fi .RE .PP .SH Personal dictionary file Personal dictionaries are simple word lists. Asterisk at the first character position signs prohibition. A second word separated by a slash sets the affixation. .PP .RS .nf foo Foo/Simpson *bar .fi .RE .PP In this example, "foo" and "Foo" are personal words, plus Foo will be recognized with affixes of Simpson (Foo's etc.) and bar is a forbidden word. .SH Short example Dictionary file: .PP .RS .nf 3 hello try/B work/AB .fi .RE .PP The flags B and A specify attributes of these words. Affix file: .PP .RS .nf SET UTF-8 TRY esianrtolcdugmphbyfvkwzESIANRTOLCDUGMPHBYFVKWZ' REP 2 REP f ph REP ph f PFX A Y 1 PFX A 0 re . SFX B Y 2 SFX B 0 ed [^y] SFX B y ied y .fi .RE .PP In the affix file, prefix A and suffix B have been defined. Flag A defines a `re-' prefix. Class B defines two `-ed' suffixes. First B suffix can be added to a word if the last character of the word isn't `y'. Second suffix can be added to the words terminated with an `y'. All accepted words with this dictionary and affix combination are: "hello", "try", "tried", "work", "worked", "rework", "reworked". .SH "AFFIX FILE GENERAL OPTIONS" Hunspell source distribution contains more than 80 examples for option usage. .IP "SET encoding" Set character encoding of words and morphemes in affix and dictionary files. Possible values: UTF-8, ISO8859\-1 \- ISO8859\-10, ISO8859\-13 \- ISO8859\-15, KOI8-R, KOI8-U, cp1251, ISCII-DEVANAGARI. .PP .RS .nf SET UTF-8 .fi .RE .PP .IP "FLAG value" Set flag type. Default type is the extended ASCII (8-bit) character. `UTF-8' parameter sets UTF-8 encoded Unicode character flags. The `long' value sets the double extended ASCII character flag type, the `num' sets the decimal number flag type. Decimal flags numbered from 1 to 65000, and in flag fields are separated by comma. .PP .RS .nf FLAG long .fi .RE .PP .IP "COMPLEXPREFIXES" Set twofold prefix stripping (but single suffix stripping) eg. for morphologically complex languages with right-to-left writing system. .IP "LANG langcode" Set language code for language-specific functions of Hunspell. Use it to activate special casing of Azeri (LANG az), Turkish (LANG tr) and Crimean Tatar (LANG crh), also not generalized syllable-counting compounding rules of Hungarian (LANG hu). .IP "IGNORE characters" Sets characters to ignore dictionary words, affixes and input words. Useful for optional characters, as Arabic (harakat) or Hebrew (niqqud) diacritical marks (see tests/ignore.* test dictionary in Hunspell distribution). .IP "AF number_of_flag_vector_aliases" .IP "AF flag_vector" Hunspell can substitute affix flag sets with ordinal numbers in affix rules (alias compression, see makealias tool). First example with alias compression: .PP .RS .nf 3 hello try/1 work/2 .fi .RE .PP AF definitions in the affix file: .PP .RS .nf AF 2 AF A AF AB ... .fi .RE .PP It is equivalent of the following dic file: .PP .RS .nf 3 hello try/A work/AB .fi .RE .PP See also tests/alias* examples of the source distribution. Note I: If affix file contains the FLAG parameter, define it before the AF definitions. Note II: Use makealias utility in Hunspell distribution to compress aff and dic files. .IP "AM number_of_morphological_aliases" .IP "AM morphological_fields" Hunspell can substitute also morphological data with ordinal numbers in affix rules (alias compression). See tests/alias* examples. .SH "AFFIX FILE OPTIONS FOR SUGGESTION" Suggestion parameters can optimize the default n-gram (similarity search in the dictionary words based on the common 1, 2, 3, 4-character length common character-sequences), character swap and deletion suggestions of Hunspell. REP is suggested to fix the typical and especially bad language specific bugs, because the REP suggestions have the highest priority in the suggestion list. PHONE is for languages with not pronunciation based orthography. For short common misspellings, it's important to use the ph: field (see later) to give the best suggestions. .IP "KEY characters_separated_by_vertical_line_optionally" Hunspell searches and suggests words with one different character replaced by a neighbor KEY character. Not neighbor characters in KEY string separated by vertical line characters. Suggested KEY parameters for QWERTY and Dvorak keyboard layouts: .PP .RS .nf KEY qwertyuiop|asdfghjkl|zxcvbnm KEY pyfgcrl|aeouidhtns|qjkxbmwvz .fi .RE .PP Using the first QWERTY layout, Hunspell suggests "nude" and "node" for "*nide". A character may have more neighbors, too: .PP .RS .nf KEY qwertzuop|yxcvbnm|qaw|say|wse|dsx|sy|edr|fdc|dx|rft|gfv|fc|tgz|hgb|gv|zhu|jhn|hb|uji|kjm|jn|iko|lkm .fi .RE .PP .IP "TRY characters" Hunspell can suggest right word forms, when they differ from the bad input word by one TRY character. The parameter of TRY is case sensitive. .IP "NOSUGGEST flag" Words signed with NOSUGGEST flag are not suggested (but still accepted when typed correctly). Proposed flag for vulgar and obscene words (see also SUBSTANDARD). .IP "MAXCPDSUGS num" Set max. number of suggested compound words generated by compound rules. The number of the suggested compound words may be greater from the same 1-character distance type. .IP "MAXNGRAMSUGS num" Set max. number of n-gram suggestions. Value 0 switches off the n-gram suggestions (see also MAXDIFF). .IP "MAXDIFF [0-10]" Set the similarity factor for the n-gram based suggestions (5 = default value; 0 = fewer n-gram suggestions, but min. 1; 10 = MAXNGRAMSUGS n-gram suggestions). .IP "ONLYMAXDIFF" Remove all bad n-gram suggestions (default mode keeps one, see MAXDIFF). .IP "NOSPLITSUGS" Disable word suggestions with spaces. .IP "SUGSWITHDOTS" Add dot(s) to suggestions, if input word terminates in dot(s). (Not for LibreOffice dictionaries, because LibreOffice has an automatic dot expansion mechanism.) .IP "REP number_of_replacement_definitions" .IP "REP what replacement" This table specifies modifications to try first. First REP is the header of this table and one or more REP data line are following it. With this table, Hunspell can suggest the right forms for the typical spelling mistakes when the incorrect form differs by more than 1 letter from the right form (see also "ph:"). The search string supports the regex boundary signs (^ and $). For example a possible English replacement table definition to handle misspelled consonants: .PP .RS .nf REP 5 REP f ph REP ph f REP tion$ shun REP ^cooccurr co-occurr REP ^alot$ a_lot .fi .RE .PP Note I: It's very useful to define replacements for the most typical one-character mistakes, too: with REP you can add higher priority to a subset of the TRY suggestions (suggestion list begins with the REP suggestions). Note II: Suggesting separated words, specify spaces with underlines: .PP .RS .nf REP 1 REP onetwothree one_two_three .fi .RE .PP Note III: Replacement table can be used for a stricter compound word checking with the option CHECKCOMPOUNDREP. .IP "MAP number_of_map_definitions" .IP "MAP string_of_related_chars_or_parenthesized_character_sequences" We can define language-dependent information on characters and character sequences that should be considered related (i.e. nearer than other chars not in the set) in the affix file (.aff) by a map table. With this table, Hunspell can suggest the right forms for words, which incorrectly choose the wrong letter or letter groups from a related set more than once in a word (see REP). For example a possible mapping could be for the German umlauted ü versus the regular u; the word Frühstück really should be written with umlauted u's and not regular ones .PP .RS .nf MAP 1 MAP uü .fi .RE .PP Use parenthesized groups for character sequences (eg. for composed Unicode characters): .PP .RS .nf MAP 3 MAP ß(ss) (character sequence) MAP fi(fi) ("fi" compatibility characters for Unicode fi ligature) MAP (ọ́)o (composed Unicode character: ó with bottom dot) .fi .RE .PP .IP "PHONE number_of_phone_definitions" .IP "PHONE what replacement" PHONE uses a table-driven phonetic transcription algorithm borrowed from Aspell. It is useful for languages with not pronunciation based orthography. You can add a full alphabet conversion and other rules for conversion of special letter sequences. For detailed documentation see http://aspell.net/man-html/Phonetic-Code.html. Note: Multibyte UTF-8 characters have not worked with bracket expression yet. Dash expression has signed bytes and not UTF-8 characters yet. .IP "WARN flag" This flag is for rare words, which are also often spelling mistakes, see option -r of command line Hunspell and FORBIDWARN. .IP "FORBIDWARN" Words with flag WARN aren't accepted by the spell checker using this parameter. .SH "OPTIONS FOR COMPOUNDING" .IP "BREAK number_of_break_definitions" .IP "BREAK character_or_character_sequence" Define new break points for breaking words and checking word parts separately. Use ^ and $ to delete characters at end and start of the word. Rationale: useful for compounding with joining character or strings (for example, hyphen in English and German or hyphen and n-dash in Hungarian). Dashes are often bad break points for tokenization, because compounds with dashes may contain not valid parts, too.) With BREAK, Hunspell can check both side of these compounds, breaking the words at dashes and n-dashes: .PP .RS .nf BREAK 2 BREAK - BREAK \fB--\fR # n-dash .fi .RE .PP Breaking are recursive, so foo-bar, bar-foo and foo-foo\fB--\fRbar-bar would be valid compounds. Note: The default word break of Hunspell is equivalent of the following BREAK definition: .PP .RS .nf BREAK 3 BREAK - BREAK ^- BREAK -$ .fi .RE .PP Hunspell doesn't accept the "-word" and "word-" forms by this BREAK definition: .PP .RS .nf BREAK 1 BREAK - .fi .RE .PP Switching off the default values: .PP .RS .nf BREAK 0 .fi .RE .PP Note II: COMPOUNDRULE is better for handling dashes and other compound joining characters or character strings. Use BREAK, if you want to check words with dashes or other joining characters and there is no time or possibility to describe precise compound rules with COMPOUNDRULE (COMPOUNDRULE handles only the suffixation of the last word part of a compound word). Note III: For command line spell checking of words with extra characters, set WORDCHARS parameters: WORDCHARS -\fB--\fR (see tests/break.*) example .IP "COMPOUNDRULE number_of_compound_definitions" .IP "COMPOUNDRULE compound_pattern" Define custom compound patterns with a regex-like syntax. The first COMPOUNDRULE is a header with the number of the following COMPOUNDRULE definitions. Compound patterns consist compound flags, parentheses, star and question mark meta characters. A flag followed by a `*' matches a word sequence of 0 or more matches of words signed with this compound flag. A flag followed by a `?' matches a word sequence of 0 or 1 matches of a word signed with this compound flag. See tests/compound*.* examples. Note: en_US dictionary of OpenOffice.org uses COMPOUNDRULE for ordinal number recognition (1st, 2nd, 11th, 12th, 22nd, 112th, 1000122nd etc.). Note II: In the case of long and numerical flag types use only parenthesized flags: (1500)*(2000)? Note III: COMPOUNDRULE flags work completely separately from the compounding mechanisms using COMPOUNDFLAG, COMPOUNDBEGIN, etc. compound flags. (Use these flags on different entries for words). .IP "COMPOUNDMIN num" Minimum length of words used for compounding. Default value is 3 letters. .IP "COMPOUNDFLAG flag" Words signed with COMPOUNDFLAG may be in compound words (except when word shorter than COMPOUNDMIN). Affixes with COMPOUNDFLAG also permits compounding of affixed words. .IP "COMPOUNDBEGIN flag" Words signed with COMPOUNDBEGIN (or with a signed affix) may be first elements in compound words. .IP "COMPOUNDLAST flag" Words signed with COMPOUNDLAST (or with a signed affix) may be last elements in compound words. .IP "COMPOUNDMIDDLE flag" Words signed with COMPOUNDMIDDLE (or with a signed affix) may be middle elements in compound words. .IP "ONLYINCOMPOUND flag" Suffixes signed with ONLYINCOMPOUND flag may be only inside of compounds (Fuge-elements in German, fogemorphemes in Swedish). ONLYINCOMPOUND flag works also with words (see tests/onlyincompound.*). Note: also valuable to flag compounding parts which are not correct as a word by itself. .IP "COMPOUNDPERMITFLAG flag" Prefixes are allowed at the beginning of compounds, suffixes are allowed at the end of compounds by default. Affixes with COMPOUNDPERMITFLAG may be inside of compounds. .IP "COMPOUNDFORBIDFLAG flag" Suffixes with this flag forbid compounding of the affixed word. Dictionary words with this flag are removed from the beginning and middle of compound words, overriding the effect of COMPOUNDPERMITFLAG. .IP "COMPOUNDMORESUFFIXES" Allow twofold suffixes within compounds. .IP "COMPOUNDROOT flag" COMPOUNDROOT flag signs the compounds in the dictionary (Now it is used only in the Hungarian language specific code). .IP "COMPOUNDWORDMAX number" Set maximum word count in a compound word. (Default is unlimited.) .IP "CHECKCOMPOUNDDUP" Forbid word duplication in compounds (e.g. foofoo). .IP "CHECKCOMPOUNDREP" Forbid compounding, if the (usually bad) compound word may be a non-compound word with a REP fault. Useful for languages with `compound friendly' orthography. .IP "CHECKCOMPOUNDCASE" Forbid upper case characters at word boundaries in compounds. .IP "CHECKCOMPOUNDTRIPLE" Forbid compounding, if compound word contains triple repeating letters (e.g. foo|ox or xo|oof). Bug: missing multi-byte character support in UTF-8 encoding (works only for 7-bit ASCII characters). .IP "SIMPLIFIEDTRIPLE" Allow simplified 2-letter forms of the compounds forbidden by CHECKCOMPOUNDTRIPLE. It's useful for Swedish and Norwegian (and for the old German orthography: Schiff|fahrt -> Schiffahrt). .IP "CHECKCOMPOUNDPATTERN number_of_checkcompoundpattern_definitions" .IP "CHECKCOMPOUNDPATTERN endchars[/flag] beginchars[/flag] [replacement]" Forbid compounding, if the first word in the compound ends with endchars, and next word begins with beginchars and (optionally) they have the requested flags. The optional replacement parameter allows simplified compound form. The special "endchars" pattern 0 (zero) limits the rule to the unmodified stems (stems and stems with zero affixes): .PP .RS .nf CHECKCOMPOUNDPATTERN 0/x /y .fi .RE .PP Note: COMPOUNDMIN doesn't work correctly with the compound word alternation, so it may need to set COMPOUNDMIN to lower value. .IP "FORCEUCASE flag" Last word part of a compound with flag FORCEUCASE forces capitalization of the whole compound word. Eg. Dutch word "straat" (street) with FORCEUCASE flags will allowed only in capitalized compound forms, according to the Dutch spelling rules for proper names. .IP "COMPOUNDSYLLABLE max_syllable vowels" Need for special compounding rules in Hungarian. First parameter is the maximum syllable number, that may be in a compound, if words in compounds are more than COMPOUNDWORDMAX. Second parameter is the list of vowels (for calculating syllables). .IP "SYLLABLENUM flags" Need for special compounding rules in Hungarian. .SH "AFFIX FILE OPTIONS FOR AFFIX CREATION" .IP "PFX flag cross_product number" .IP "PFX flag stripping prefix [condition [morphological_fields...]]" .IP "SFX flag cross_product number" .IP "SFX flag stripping suffix [condition [morphological_fields...]]" An affix is either a prefix or a suffix attached to root words to make other words. We can define affix classes with arbitrary number affix rules. Affix classes are signed with affix flags. The first line of an affix class definition is the header. The fields of an affix class header: (0) Option name (PFX or SFX) (1) Flag (name of the affix class) (2) Cross product (permission to combine prefixes and suffixes). Possible values: Y (yes) or N (no) (3) Line count of the following rules. Fields of an affix rules: (0) Option name (1) Flag (2) stripping characters from beginning (at prefix rules) or end (at suffix rules) of the word (3) affix (optionally with flags of continuation classes, separated by a slash) (4) condition. Zero stripping or affix are indicated by zero. Zero condition is indicated by dot. Condition is a simplified, regular expression-like pattern, which must be met before the affix can be applied. (Dot signs an arbitrary character. Characters in braces sign an arbitrary character from the character subset. Dash hasn't got special meaning, but circumflex (^) next the first brace sets the complementer character set.) (5) Optional morphological fields separated by spaces or tabulators. .SH "AFFIX FILE OTHER OPTIONS" .IP "CIRCUMFIX flag" Affixes signed with CIRCUMFIX flag may be on a word when this word also has a prefix with CIRCUMFIX flag and vice versa (see circumfix.* test files in the source distribution). .IP "FORBIDDENWORD flag" This flag signs forbidden word form. Because affixed forms are also forbidden, we can subtract a subset from set of the accepted affixed and compound words. Note: usefull to forbid erroneous words, generated by the compounding mechanism. .IP "FULLSTRIP" With FULLSTRIP, affix rules can strip full words, not only one less characters, before adding the affixes, see fullstrip.* test files in the source distribution). Note: conditions may be word length without FULLSTRIP, too. .IP "KEEPCASE flag" Forbid uppercased and capitalized forms of words signed with KEEPCASE flags. Useful for special orthographies (measurements and currency often keep their case in uppercased texts) and writing systems (e.g. keeping lower case of IPA characters). Also valuable for words erroneously written in the wrong case. Note: With CHECKSHARPS declaration, words with sharp s and KEEPCASE flag may be capitalized and uppercased, but uppercased forms of these words may not contain sharp s, only SS. See germancompounding example in the tests directory of the Hunspell distribution. .IP "ICONV number_of_ICONV_definitions" .IP "ICONV pattern pattern2" Define input conversion table. Note: useful to convert one type of quote to another one, or change ligature. .IP "OCONV number_of_OCONV_definitions" .IP "OCONV pattern pattern2" Define output conversion table. .IP "LEMMA_PRESENT flag" Deprecated. Use "st:" field instead of LEMMA_PRESENT. .IP "NEEDAFFIX flag" This flag signs virtual stems in the dictionary, words only valid when affixed. Except, if the dictionary word has a homonym or a zero affix. NEEDAFFIX works also with prefixes and prefix + suffix combinations (see tests/needaffix5.*). .IP "PSEUDOROOT flag" Deprecated. (Former name of the NEEDAFFIX option.) .IP "SUBSTANDARD flag" SUBSTANDARD flag signs affix rules and dictionary words (allomorphs) not used in morphological generation and root words removed from suggestion. See also NOSUGGEST. .IP "WORDCHARS characters" WORDCHARS extends tokenizer of Hunspell command line interface with additional word character. For example, dot, dash, n-dash, numbers, percent sign are word character in Hungarian. .IP "CHECKSHARPS" SS letter pair in uppercased (German) words may be upper case sharp s (ß). Hunspell can handle this special casing with the CHECKSHARPS declaration (see also KEEPCASE flag and tests/germancompounding example) in both spelling and suggestion. .SH "Morphological analysis" Hunspell's dictionary items and affix rules may have optional space or tabulator separated morphological description fields, started with 3-character (two letters and a colon) field IDs: .PP .RS .nf word/flags po:noun is:nom .fi .RE .PP Example: We define a simple resource with morphological informations, a derivative suffix (ds:) and a part of speech category (po:): Affix file: .PP .RS .nf SFX X Y 1 SFX X 0 able . ds:able .fi .RE .PP Dictionary file: .PP .RS .nf drink/X po:verb .fi .RE .PP Test file: .PP .RS .nf drink drinkable .fi .RE .PP Test: .PP .RS .nf $ analyze test.aff test.dic test.txt > drink analyze(drink) = po:verb stem(drink) = po:verb > drinkable analyze(drinkable) = po:verb ds:able stem(drinkable) = drinkable .fi .RE .PP You can see in the example, that the analyzer concatenates the morphological fields in \fIitem and arrangement\fR style. .SH "Optional data fields" Default morphological and other IDs (used in suggestion, stemming and morphological generation): .IP "ph:" Alternative transliteration for better suggestions, ie. misspellings related to the special orthography and pronunciation of the word. The best way to handle common misspellings, so it's worth to add ph: field to the most affected few thousand dictionary words (or word pairs etc.) to get correct suggestions for their misspellings. For example: .PP .RS .nf Wednesday ph:wendsay ph:wensday Marseille ph:maarsayl .fi .RE .PP Hunspell adds all ph: transliterations to the inner REP table, so it will always suggest the correct word for the specified misspellings with the highest priority. The previous example is equivalent of the following REP definition: .PP .RS .nf REP 6 REP wendsay Wednesday REP Wendsay Wednesday REP wensday Wednesday REP Wensday Wednesday REP maarsayl Marseille REP Maarsayl Marseille .fi .RE .PP The asterisk at the end of the ph: pattern means stripping the terminating character both from the pattern and the word in the associated REP rule: .PP .RS .nf pretty ph:prity* .fi .RE .PP will result .PP .RS .nf REP 1 REP prit prett .fi .RE .PP REP rule, resulting the following correct suggestions .PP .RS .nf *prity -> pretty *pritier -> prettier *pritiest -> prettiest .fi .RE .PP Moreover, ph: fields can handle suggestions with more than two words, also different suggestions for the same misspelling: .PP .RS .nf do not know ph:dunno don't know ph:dunno .fi .RE .PP results .PP .RS .nf *dunno -> do not know, don't know .fi .RE .PP Note: if available, ph: is used in n-gram similarity, too. The ASCII arrow "->" in a ph: pattern means a REP rule (see REP), creating arbitrary replacement rule associated to the dictionary item: .PP .RS .nf happy/B ph:hepy ph:hepi->happi .fi .RE .PP results .PP .RS .nf *hepy -> happy *hepiest -> happiest .fi .RE .PP .IP "st:" Stem. Optional: default stem is the dictionary item in morphological analysis. Stem field is useful for virtual stems (dictionary words with NEEDAFFIX flag) and morphological exceptions instead of new, single used morphological rules. .PP .RS .nf feet st:foot is:plural mice st:mouse is:plural teeth st:tooth is:plural .fi .RE .PP Word forms with multiple stems need multiple dictionary items: .PP .RS .nf lay po:verb st:lie is:past_2 lay po:verb is:present lay po:noun .fi .RE .PP .IP "al:" Allomorph(s). A dictionary item is the stem of its allomorphs. Morphological generation needs stem, allomorph and affix fields. .PP .RS .nf sing al:sang al:sung sang st:sing sung st:sing .fi .RE .PP .IP "po:" Part of speech category. .IP "ds:" Derivational suffix(es). Stemming doesn't remove derivational suffixes. Morphological generation depends on the order of the suffix fields. In affix rules: .PP .RS .nf SFX Y Y 1 SFX Y 0 ly . ds:ly_adj .fi .RE .PP In the dictionary: .PP .RS .nf ably st:able ds:ly_adj able al:ably .fi .RE .PP .IP "is:" Inflectional suffix(es). All inflectional suffixes are removed by stemming. Morphological generation depends on the order of the suffix fields. .PP .RS .nf feet st:foot is:plural .fi .RE .PP .IP "ts:" Terminal suffix(es). Terminal suffix fields are inflectional suffix fields "removed" by additional (not terminal) suffixes. Useful for zero morphemes and affixes removed by splitting rules. .PP .RS .nf work/D ts:present .fi .RE .PP .PP .RS .nf SFX D Y 2 SFX D 0 ed . is:past_1 SFX D 0 ed . is:past_2 .fi .RE .PP Typical example of the terminal suffix is the zero morpheme of the nominative case. .IP "sp:" Surface prefix. Temporary solution for adding prefixes to the stems and generated word forms. See tests/morph.* example. .IP "pa:" Parts of the compound words. Output fields of morphological analysis for stemming. .IP "dp:" Planned: derivational prefix. .IP "ip:" Planned: inflectional prefix. .IP "tp:" Planned: terminal prefix. .SH "Twofold suffix stripping" Ispell's original algorithm strips only one suffix. Hunspell can strip another one yet (or a plus prefix in COMPLEXPREFIXES mode). The twofold suffix stripping is a significant improvement in handling of immense number of suffixes, that characterize agglutinative languages. A second `s' suffix (affix class Y) will be the continuation class of the suffix `able' in the following example: .PP .RS .nf SFX Y Y 1 SFX Y 0 s . SFX X Y 1 SFX X 0 able/Y . .fi .RE .PP Dictionary file: .PP .RS .nf drink/X .fi .RE .PP Test file: .PP .RS .nf drink drinkable drinkables .fi .RE .PP Test: .PP .RS .nf $ hunspell -m -d test drink drink[verb] drink[noun] > drinks drink[verb]+3SGV drink[noun]+PL > drinkable drink[verb]+DER_V_ADJ_ABLE > drinkables drink[verb]+DER_V_ADJ_ABLE+PL > undrinkable [prefix_un]+drink[verb]+DER_V_ADJ_ABLE > undrinkables [prefix_un]+drink[verb]+DER_V_ADJ_ABLE+PL > undrink Unknown word. > undrinks Unknown word. .fi .RE .PP .SH "Circumfix" Conditional affixes implemented by a continuation class are not enough for circumfixes, because a circumfix is one affix in morphology. We also need CIRCUMFIX option for correct morphological analysis. .PP .RS .nf # circumfixes: ~ obligate prefix/suffix combinations # superlative in Hungarian: leg- (prefix) AND -bb (suffix) # nagy, nagyobb, legnagyobb, legeslegnagyobb # (great, greater, greatest, most greatest) CIRCUMFIX X PFX A Y 1 PFX A 0 leg/X . PFX B Y 1 PFX B 0 legesleg/X . SFX C Y 3 SFX C 0 obb . +COMPARATIVE SFX C 0 obb/AX . +SUPERLATIVE SFX C 0 obb/BX . +SUPERSUPERLATIVE .fi .RE .PP Dictionary: .PP .RS .nf 1 nagy/C [MN] .fi .RE .PP Analysis: .PP .RS .nf > nagy nagy[MN] > nagyobb nagy[MN]+COMPARATIVE > legnagyobb nagy[MN]+SUPERLATIVE > legeslegnagyobb nagy[MN]+SUPERSUPERLATIVE .fi .RE .PP .SH "Compounds" Allowing free compounding yields decrease in precision of recognition, not to mention stemming and morphological analysis. Although lexical switches are introduced to license compounding of bases by \fBIspell\fR, this proves not to be restrictive enough. For example: .PP .RS .nf # affix file COMPOUNDFLAG X .fi .RE .PP .PP .RS .nf 2 foo/X bar/X .fi .RE .PP With this resource, \fIfoobar\fR and \fIbarfoo\fR also are accepted words. This has been improved upon with the introduction of direction-sensitive compounding, i.e., lexical features can specify separately whether a base can occur as leftmost or rightmost constituent in compounds. This, however, is still insufficient to handle the intricate patterns of compounding, not to mention idiosyncratic (and language specific) norms of hyphenation. The \fBHunspell\fR algorithm currently allows any affixed form of words, which are lexically marked as potential members of compounds. \fBHunspell\fR improved this, and its recursive compound checking rules makes it possible to implement the intricate spelling conventions of Hungarian compounds. For example, using COMPOUNDWORDMAX, COMPOUNDSYLLABLE, COMPOUNDROOT, SYLLABLENUM options can be set the noteworthy Hungarian `6-3' rule. Further example in Hungarian, derivate suffixes often modify compounding properties. Hunspell allows the compounding flags on the affixes, and there are two special flags (COMPOUNDPERMITFLAG and (COMPOUNDFORBIDFLAG) to permit or prohibit compounding of the derivations. Suffixes with this flag forbid compounding of the affixed word. We also need several Hunspell features for handling German compounding: .PP .RS .nf # German compounding # set language to handle special casing of German sharp s LANG de_DE # compound flags COMPOUNDBEGIN U COMPOUNDMIDDLE V COMPOUNDEND W # Prefixes are allowed at the beginning of compounds, # suffixes are allowed at the end of compounds by default: # (prefix)?(root)+(affix)? # Affixes with COMPOUNDPERMITFLAG may be inside of compounds. COMPOUNDPERMITFLAG P # for German fogemorphemes (Fuge-element) # Hint: ONLYINCOMPOUND is not required everywhere, but the # checking will be a little faster with it. ONLYINCOMPOUND X # forbid uppercase characters at compound word bounds CHECKCOMPOUNDCASE # for handling Fuge-elements with dashes (Arbeits-) # dash will be a special word COMPOUNDMIN 1 WORDCHARS - # compound settings and fogemorpheme for `Arbeit' SFX A Y 3 SFX A 0 s/UPX . SFX A 0 s/VPDX . SFX A 0 0/WXD . SFX B Y 2 SFX B 0 0/UPX . SFX B 0 0/VWXDP . # a suffix for `Computer' SFX C Y 1 SFX C 0 n/WD . # for forbid exceptions (*Arbeitsnehmer) FORBIDDENWORD Z # dash prefix for compounds with dash (Arbeits-Computer) PFX - Y 1 PFX - 0 -/P . # decapitalizing prefix # circumfix for positioning in compounds PFX D Y 29 PFX D A a/PX A PFX D Ä ä/PX Ä . . PFX D Y y/PX Y PFX D Z z/PX Z .fi .RE .PP Example dictionary: .PP .RS .nf 4 Arbeit/A- Computer/BC- -/W Arbeitsnehmer/Z .fi .RE .PP Accepted compound compound words with the previous resource: .PP .RS .nf Computer Computern Arbeit Arbeits- Computerarbeit Computerarbeits- Arbeitscomputer Arbeitscomputern Computerarbeitscomputer Computerarbeitscomputern Arbeitscomputerarbeit Computerarbeits-Computer Computerarbeits-Computern .fi .RE .PP Not accepted compoundings: .PP .RS .nf computer arbeit Arbeits arbeits ComputerArbeit ComputerArbeits Arbeitcomputer ArbeitsComputer Computerarbeitcomputer ComputerArbeitcomputer ComputerArbeitscomputer Arbeitscomputerarbeits Computerarbeits-computer Arbeitsnehmer .fi .RE .PP This solution is still not ideal, however, and will be replaced by a pattern-based compound-checking algorithm which is closely integrated with input buffer tokenization. Patterns describing compounds come as a separate input resource that can refer to high-level properties of constituent parts (e.g. the number of syllables, affix flags, and containment of hyphens). The patterns are matched against potential segmentations of compounds to assess wellformedness. .SH "Unicode character encoding" Both \fBIspell\fR and \fBMyspell\fR use 8-bit ASCII character encoding, which is a major deficiency when it comes to scalability. Although a language like Hungarian has a standard ASCII character set (ISO 8859-2), it fails to allow a full implementation of Hungarian orthographic conventions. For instance, the '--' symbol (n-dash) is missing from this character set contrary to the fact that it is not only the official symbol to delimit parenthetic clauses in the language, but it can be in compound words as a special 'big' hyphen. MySpell has got some 8-bit encoding tables, but there are languages without standard 8-bit encoding, too. For example, a lot of African languages have non-latin or extended latin characters. Similarly, using the original spelling of certain foreign names like \fIÅngström\fR or \fIMolière\fR is encouraged by the Hungarian spelling norm, and, since characters 'Å' and 'è' are not part of ISO\ 8859-2, when they combine with inflections containing characters only in ISO\ 8859-2 (like elative \fI-ből\fR, allative \fI-től\fR or delative \fI-ről\fR with double acute), these result in words (like \fIÅngströmről\fR or \fIMolière-től.\fR) that can not be encoded using any single ASCII encoding scheme. The problems raised in relation to 8-bit ASCII encoding have long been recognized by proponents of Unicode. It is clear that trading efficiency for encoding-independence has its advantages when it comes a truly multi-lingual application. There is implemented a memory and time efficient Unicode handling in Hunspell. In non-UTF-8 character encodings Hunspell works with the original 8-bit strings. In UTF-8 encoding, affixes and words are stored in UTF-8, during the analysis are handled in mostly UTF-8, under condition checking and suggestion are converted to UTF-16. Unicode text analysis and spell checking have a minimal (0-20%) time overhead and minimal or reasonable memory overhead depends from the language (its UTF-8 encoding and affixation). .SH "Conversion of aspell dictionaries" Aspell dictionaries can be easily converted into hunspell. Conversion steps: \fBdictionary (xx.cwl -> xx.wl):\fR .nf preunzip xx.cwl wc -l < xx.wl > xx.dic cat xx.wl >> xx.dic .fi \fBaffix file\fR If the affix file exists, copy it: .nf cp xx_affix.dat xx.aff .fi If not, create it with the suitable character encoding (see xx.dat) .nf echo "SET ISO8859-x" > xx.aff .fi or .nf echo "SET UTF-8" > xx.aff .fi It's useful to add a TRY option with the characters of the dictionary with frequency order to set edit distance suggestions: .nf echo "TRY qwertzuiopasdfghjklyxcvbnmQWERTZUIOPASDFGHJKLYXCVBNM" >>xx.aff .fi .SH "SEE ALSO" .B hunspell (1), .B ispell (1), .B ispell (4) hunspell-1.7.2/man/Makefile.am0000644000175000017500000000014013565705656013120 00000000000000man_MANS = hunspell.1 hunspell.3 hunspell.5 hzip.1 hunzip.1 EXTRA_DIST = $(man_MANS) SUBDIRS=hu hunspell-1.7.2/license.myspell0000644000175000017500000000554013422074107013331 00000000000000/* * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada * And Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. All modifications to the source code must be clearly marked as * such. Binary redistributions based on modified source code * must be clearly marked as modified versions in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * * NOTE: A special thanks and credit goes to Geoff Kuenning * the creator of ispell. MySpell's affix algorithms were * based on those of ispell which should be noted is * copyright Geoff Kuenning et.al. and now available * under a BSD style license. For more information on ispell * and affix compression in general, please see: * http://www.cs.ucla.edu/ficus-members/geoff/ispell.html * (the home page for ispell) * * An almost complete rewrite of MySpell for use by * the Mozilla project has been developed by David Einstein * (Deinst@world.std.com). David and I are now * working on parallel development tracks to help * our respective projects (Mozilla and OpenOffice.org * and we will maintain full affix file and dictionary * file compatibility and work on merging our versions * of MySpell back into a single tree. David has been * a significant help in improving MySpell. * * Special thanks also go to La'szlo' Ne'meth * who is the author of the * Hungarian dictionary and who developed and contributed * the code to support compound words in MySpell * and fixed numerous problems with the encoding * case conversion tables. * */ hunspell-1.7.2/test-driver0000755000175000017500000001104013424262414012470 00000000000000#! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2013-07-13.22; # UTC # Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u usage_error () { echo "$0: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat <$log_file 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then tweaked_estatus=1 else tweaked_estatus=$estatus fi case $tweaked_estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac # Report the test outcome and exit status in the logs, so that one can # know whether the test passed or failed simply by looking at the '.log' # file, without the need of also peaking into the corresponding '.trs' # file (automake bug#11814). echo "$res $test_name (exit status: $estatus)" >>$log_file # Report outcome to console. echo "${col}${res}${std}: $test_name" # Register the test result, and other relevant metadata. echo ":test-result: $res" > $trs_file echo ":global-test-result: $res" >> $trs_file echo ":recheck: $recheck" >> $trs_file echo ":copy-in-global-log: $gcopy" >> $trs_file # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: hunspell-1.7.2/COPYING0000644000175000017500000004325513565705656011362 00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. hunspell-1.7.2/po/0000775000175000017500000000000014353370321010775 500000000000000hunspell-1.7.2/po/si.po0000664000175000017500000002500714353370167011704 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:09+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Sinhala \n" "Language: si\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "දෝෂය - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "දෝෂය - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "" #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "" #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "" #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "" #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "" #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "" #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr "" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr "" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr "" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr "" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr "" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr "" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr "" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr "" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr "" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr "" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr "" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr "" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr "" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "" #: src/tools/hunspell.cxx:1895 msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "" hunspell-1.7.2/po/fr.po0000664000175000017500000003722414353370167011704 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:08+0000\n" "Last-Translator: Olivier Humbert \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "erreur - iconv_open : %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "erreur - iconv : %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "erreur - iconv_open : UTF-8 -> %s 1\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Impossible de créer tmp dir" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Impossible d'ouvrir inputfile" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Impossible d'ouvrir %s.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "erreur - variable HOME manquante\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Ligne %d : %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "INTERDIT !" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Faute d'orthographe ?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tFichier : %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[ESPACE] R)emplacer A)ccepter I)nsérer M)inuscule ra(C)ine Q)uitter S)ortir " "ou ? pour l'aide\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Lorsqu'un mot trouvé n'est pas dans le dictionnaire\n" "il est affiché sur la première ligne de l'écran. Si le dictionnaire\n" "contient des mots similaires, ils sont listés avec un numéro\n" "en face de chacun. Vous pouvez remplacer le mot complètement,\n" "ou choisir l'un des mots suggérés.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Les commandes sont :\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "R\tRemplacer intégralement le mot mal orthographié.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Espace\tAccepter le mot pour cette fois seulement.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tAccepter le mot pour le reste de cette session\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tAccepter le mot, et l'ajouter à votre dictionnaire personnel.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" "M\tAccepter et ajouter une version en minuscule à votre dictionnaire " "personnel.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "C\tDemander une racine et un mot modèle et les enregistre dans le " "dictionnaire personnel.\n" "\tLa racine sera acceptée ainsi que les affixes du mot modèle.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tReplacer par l'un des mots suggérés.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "Q\tÉcrire le reste du fichier, en ignorant les fautes d'orthographe, et " "commencer le prochain fichier.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" "S\tQuitter immédiatement. Demander confirmation. Laisse les fichiers " "inchangés.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tSuspend le programme. Redémarrez avec la commande fg.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tAfficher cet écran d'aide.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Appuyez sur Espace pour continuer -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "r" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Remplacer par : " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "u" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Impossible de mettre à jour le dictionnaire personnel." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "c" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Nouveau mot (racine) : " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Mot modèle (un mot du dictionnaire similaire) : " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "Le mot modèle doit être dans le dictionnaire. Appuyez sur une touche !" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "q" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "s" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Voulez-vous vraiment abandonner vos changements ? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "o" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Impossible de créer un fichier temporaire" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Impossible d'ouvrir le fichier de sortie" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Utilisation : hunspell [OPTION]... [FICHIER]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Vérifier l'orthographe de chaque FICHIER. Sans FICHIER, vérifier l'entrée " "standard.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\tvérifier uniquement le premier champ de chaque ligne (délimiteur = " "tabulation)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tl'interface de combinaison d'Ispell\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" " --check-url\tvérifier les URL, les adresses de courriels et les " "répertoires\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr "" " --check-apostrophe\tvérifier la présence d'apostrophes typographiques en " "unicode\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\tutiliser les dictionnaires d (d2 etc.)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tmontrer les dictionnaires disponibles\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\tafficher seulement les mots ou les lignes corrects\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tafficher cette aide et quitter\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tformat de fichier en entrée en HTML\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i enc\tencodage de l'entrée\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\tafficher les mots mal orthographiés\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\tafficher les lignes avec des mots mal orthographiés\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tanalyser les mots du texte en entrée\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tformat de fichier nroff/troff en entrée\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tformat de fichier OpenDocument (ODF ou Flat ODF) en entrée\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p dict\tutiliser dict comme dictionnaire personnalisé\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\tavertir d'erreurs possibles (mots rares)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr "" " -P password\tindiquer le mot de passe pour les dictionnaires chiffrés\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\trenvoyer la racine des mots du texte en entrée\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tsuffixer les mots du texte en entrée\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tformat de fichier TeX/LaTeX en entrée\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\tafficher le numéro de version\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\tafficher le numéro de version de compatibilité d'Ispell\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\tafficher les mots (= lignes) mal orthographiés à partir d'un mot ou " "d'une ligne en entrée.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tformat de fichier XML en entrée\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Exemple : hunspell -d en_US file.txt # vérification orthographique " "interactive\n" " hunspell -i utf-8 file.txt # vérification d'un fichier encodé en " "UTF-8\n" " hunspell -l *.odt # affichage des mots mal " "orthographiés de fichiers ODF\n" "\n" " # Correction rapide de documents ODF en créant un dictionnaire " "personnel\n" "\n" " # 1 Créez une liste réduite des mots mal orthographiés et " "inconnus :\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 supprimez les mots mal orthographiés du fichier avec un éditeur " "de texte.\n" " # 3 utilisez ce dictionnaire pour corriger les mots supprimés :\n" "\n" " hunspell -p words *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Signalez les anomalies sur : http://hunspell.github.io\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Copyright (C) 2002-2014 László Németh. Licence : MPL/GPL/LGPL.\n" "\n" "Basé sur la bibliothèque Myspell d'OpenOffice.org.\n" "copyright de Myspell (C) Kevin Hendricks, 2001-2002, Licence : BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Ce programme est un logiciel libre ; voir les sources pour les conditions " "liés au droit\n" "d'auteur. Il n'y a AUCUNE GARANTIE ; pas même la garantie implicite de " "COMMERCIALISABILITÉ\n" "ni d’ADÉQUATION À UN OBJECTIF PARTICULIER, dans la mesure permise par la " "loi.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "CHEMIN DE RECHERCHE :\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" "DICTIONNAIRES DISPONIBLES (le chemin n'est pas nécessaire pour l'option -" "d) :\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "DICTIONNAIRES CHARGÉS :\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "erreur — %s dépasse la limite d'un dictionnaire.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" "Impossible d'ouvrir les fichiers affix ou les fichiers de dictionnaire pour " "le dictionnaire nommé « %s ».\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hunspell a été compilé sans l'interface utilisateur Ncurses.\n" hunspell-1.7.2/po/sv.gmo0000664000175000017500000002356414353370170012065 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}~,R>H^H$/E(d<>, 6U1t+& %1)W4,#(20Fc-1K&9r)%# K>""-IOH !<!;!"4"%C"9i""O".# 4#B# #.#$$:$+%;%PO&/&&%&&'+'J'f'h'j'l'n'p'r'1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:08+0000 Last-Translator: Anders Jonsson Language-Team: Swedish Language: sv MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.14-dev %s Fil: %s -- Tryck blanksteg för att fortsätta -- Kommandon är: [BLANKSTEG] E)rsä A)ccept I)nfoga G)emen S)tam sT)äng a(V)sluta, ? för hjälp --check-apostrophe kontrollera typografisk Unicode-apostrof --check-url kontrollera URL:er, e-postaddresser och katalogsökvägar -1 kontrollera endast första fält i rader (avskiljare = tabulator) -D visa tillgängliga ordböcker -G skriv endast ut korrekta ord eller rader -H indatafil i HTML-format -L skriv ut rader med felstavade ord -O indatafil i OpenDocument-format (ODF eller platt ODF) -P lösenord ställ in lösenord för krypterade ordböcker -S hitta suffix till ord i indatatexten -X indatafil i XML-format -a Ispells rörgränssnitt -d d[,d2,...] använd ordböckerna d (d2 etc.) -h, --help visa denna hjälp och avsluta -i kodn indatakodning -l skriv ut felstavade ord -m analysera orden i indatatexten -n indatafil i nroff/troff-format -p ordb ställ in anpassad ordbok ordb -r varna för potentiella misstag (ovanliga ord) -s hitta stam för orden i indatatexten -t indatafil i TeX/LaTeX-format -v, --version skriv ut versionsnummer -vv skriv ut Ispell-kompatibelt versionsnummer -w skriv ut felstavade ord (= rader) från indata med ett ord/rad. 0-n Ersätt med ett av de föreslagna orden. ? Visa denna hjälpskärm. A Acceptera ordet under resten av denna session. TILLGÄNGLIGA ORDBÖCKER (sökväg är inte obligatorisk för flaggan -d): Är du säker på att du vill förkasta dina ändringar? Felrapporter: http://hunspell.github.io/ Det går inte att skapa temporär filDet går inte att skapa tmp-katalogDet går inte att öppna %s. Det går inte att öppna affix- eller ordboksfiler för ordboken ”%s”. Det går inte att öppna indatafilDet går inte att öppna utdatafilDet går inte att uppdatera personlig ordbok.Kontrollera stavning för varje FIL. Utan FIL kontrolleras standard in. Exempel: hunspell -d en_US file.txt # interaktiv stavning hunspell -i utf-8 file.txt # kontrollera UTF-8-kodad fil hunspell -l *.odt # skriv ut felstavade ord i ODF-filer # Snabbfix av ODF-dokument genom att skapa personlig ordbok # 1 Gör en reducerad lista av felstavade och okända ord: hunspell -l *.odt | sort | uniq >words # 2 Ta bort felstavad ord i filen med en textredigerare. # 3 Använd denna personliga ordbok för att fixa de borttagna orden: hunspell -p words *.odt FÖRBJUDEN!Hunspell har kompilerats utan Ncurses-användargränssnitt. I Acceptera ordet och lägg till det i din privata ordbok. INLÄST ORDBOK: %s %s Rad %d: %s -> Modellord (ett liknande ordboksord): Modellord måste finnas i ordboken. Tryck valfri tangent!Nytt ord (stam): V Avsluta omedelbart. Frågar efter bekräftelse. Lämnar filer oförändrade. E Ersätt det felstavade ordet fullständigt. Ersätt med: S Be om en stam och ett modellord och lagra dem i den privata ordboken. Stammen kommer accepteras även med affixen för modellordet. SÖKVÄG: %s Blanksteg Acceptera ordet endast denna gång. Stavfel?Detta är fri programvara, se källkoden för kopieringsvillkor. Det finns INGEN garanti, inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT SPECIELLT ÄNDAMÅL, så långt lagen tillåter. G Acceptera och lägg till gemen version i privat ordbok. Användning: hunspell [FLAGGA]… [FIL]… Närhelst ett ord som inte finns i ordboken hittas skrivs det ut på skärmens första rad. Om ordboken innehåller liknande ord så listas de med ett nummer intill varje ord. Du har möjligheten att ersätta ordet fullständigt eller att välja ett av de föreslagna orden. T Skriv resten av denna fil, ignorera felstavningar, och börja på nästa fil. ^Z Stoppa program. Starta om med kommandot fg. afel - %s överskrider ordboksgräns. fel - iconv: %s -> %s fel - iconv_open: %s -> %s fel - iconv_open: UTF-8 -> %s fel - saknar HOME-variabel ivesgtjhunspell-1.7.2/po/nl.gmo0000664000175000017500000002424414353370170012042 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}r'a?#;cJ%*!;0]=B/!? a3(%/)N(xG-'"?+bR23,A`4*# &GI\+`p $"@."Co"""1"P#e#Oz#0## $ $$$ $$R%*%+&mG'9''.' (8(U( u((((((((1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:08+0000 Last-Translator: Pander Language-Team: Dutch Language: nl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.14-dev %s Bestand: %s -- Druk op spatie om door te gaan -- Opdrachten zijn: [SPATIE] veR)vangen A)anvaarden I)nvoegen kleineL)etters S)tam aF)sluiten sT)oppen, ? voor hulp --check-apostrophe controleer typografische Unicode-apostrof --check-url controleer url's, e-mailadressen en mappaden -1 controleer enkel het eerste veld van regels (scheidingsteken = tab) -D toon beschikbare woordenboeken -G toon enkel juiste woorden of regels -H HTML-invoerbestandsformaat -L toon regels met verkeerd gespelde woorden -O OpenDocument (ODF of platte ODF)-invoerbestandsformaat -P wachtwoord stel wachtwoord in van versleutelde woordenboeken -S toon suffix van woorden van invoertekst -X XML-invoerbestandsformaat -a pipe-interface van Ispell -d d[,d2,...] gebruik woordenboeken d (d2, enz.) -h, --help toon deze hulp en sluit af -i cod invoercodering -l toon verkeerd gespelde woorden -m analyseer de woorden van de invoertekst -n nroff-/troff-invoerbestandsformaat -p wdbk stel aangepast woordenboek in -r toon waarschuwing bij mogelijke fouten (ongebruikelijke woorden) -s toon stam van woorden van invoertekst -t TeX-/LaTeX-invoerbestandsformaat -v, --version toon versienummer -vv toon Ispell-compatibel versienummer -w toon verkeerd gespelde woorden (= regels) van invoer van één woord/regel. 0-n Vervang door één van de aanbevolen woorden. ? Toon dit hulpscherm. A Aanvaard het woord voor de rest van deze sessie. BESCHIKBARE WOORDENBOEKEN (pad is niet verplicht voor optie -d): Weet je zeker dat je de wijzigingen wilt verwerpen? Foutmeldingen: http://hunspell.github.io/ Kan tijdelijk bestand niet aanmakenKan tijdelijke map niet aanmakenKan %s niet openen. Kan affix- of woordenboekbestanden van het woordenboek '%s' niet openen. Kan invoerbestand niet openenKan uitvoerbestand niet openenKan persoonlijk woordenboek niet bijwerken.Controleer de spelling van elk BESTAND. Zonder BESTAND wordt de standaardinvoer gecontroleerd. Voorbeeld: hunspell -d nl_BE bestand.txt # interactieve spelling hunspell -i utf-8 bestand.txt # controleer bestand in UTF-8-codering hunspell -l *.odt # toon verkeerd gespelde woorden in ODF-bestanden # Snelle verbetering van ODF-documenten door aanmaken van persoonlijk woordenboek # 1 Maak een gereduceerde lijst van verkeerd gespelde en onbekende woorden: hunspell -l *.odt | sort | uniq >woorden # 2 Verwijder verkeerd gespelde woorden uit het bestand met een tekstverwerker. # 3 Gebruik dit persoonlijke woordenboek om de verkeerd gespelde woorden te verbeteren: hunspell -p woorden *.odt VERBODEN!Hunspell is gecompileerd zonder de Ncurses-gebruikersinterface. I Aanvaard het woord en bewaar het in je persoonlijke woordenboek. INGELADEN WOORDENBOEK: %s %s Regel %d: %s -> Modelwoord (een vergelijkbaar woordenboekwoord): Het modelwoord moet in het woordenboek staan. Druk op een toets om door te gaan!Nieuw woord (stam): F Sluit onmiddellijk af; vraagt om bevestiging. Bestanden blijven ongewijzigd. R Vervang het verkeerd gespelde woord volledig. Vervangen door: S Vraag om een stam en modelwoord en sla ze op in je persoonlijke woordenboek. De stam zal aanvaard worden met de affixen van het modelwoord. ZOEKPAD: %s Spatie Aanvaard het woord eenmalig. Spelfout?Dit is vrije software; bekijk de broncode voor kopieervoorwaarden. Er is GEEN garantie, zelfs niet voor VERHANDELBAARHEID of GESCHIKTHEID VOOR EEN BEPAALD DOEL, voorzover toegestaan door de wet. L Aanvaard en bewaar een versie in kleine letters in je persoonlijke woordenboek. Gebruik: hunspell [OPTIE]... [BESTAND]... Als er een woord is aangetroffen dat niet in het woordenboek staat, wordt het op de eerste regel van het scherm getoond. Als het woordenboek gelijkaardige woorden bevat, worden deze met een nummer naast elkaar getoond. Je kunt het woord volledig vervangen of één van de aanbevolen woorden kiezen. T Schrijf de rest van dit bestand weg, negeer verkeerde gespelde woorden, en begin met het volgende bestand. ^Z Pauzeer het programma. Start opnieuw met fg-opdracht. afout - %s overschrijdt het woordenboeklimiet. fout - iconv: %s -> %s fout - iconv_open: %s -> %s fout - iconv_open: UTF-8 -> %s fout - variabele HOME ontbreekt ifrsltjhunspell-1.7.2/po/hunspell.pot0000664000175000017500000002447714353370167013321 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: hunspell 1.7.2\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "" #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "" #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "" #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "" #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "" #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "" #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr "" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr "" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr "" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr "" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr "" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr "" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr "" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr "" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr "" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr "" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr "" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr "" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr "" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "" #: src/tools/hunspell.cxx:1895 msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "" hunspell-1.7.2/po/hy.po0000664000175000017500000002511214353370167011706 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:09+0000\n" "Last-Translator: Davit Mayilyan \n" "Language-Team: Armenian \n" "Language: hy\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Չկարողացա բացել %s\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Տող %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Հրամաններն են.\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "" #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "" #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Նոր բառ (արմատ)՝ " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "" #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "" #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr "" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr "" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr "" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr "" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr "" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr "" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr "" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr "" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr "" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr "" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr "" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr "" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr "" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "" #: src/tools/hunspell.cxx:1895 msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "" hunspell-1.7.2/po/zh_Hans.gmo0000664000175000017500000002276114353370170013025 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \} Y1=J?% *9J* ' &5\"s#%&+,3#` (L&B6a>%*(AY?mJ8F @ < !!()!+R!~!6!*! !""" ""0l#*##Z$-%H%"J%m%%!%%%%%%%%%1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.7.1 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-11-12 13:49+0000 Last-Translator: inRm3D Language-Team: Chinese (Simplified) Language: zh_Hans MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Weblate 4.15-dev %s 文件: %s -- 输入空格以继续 -- 命令是: [空格] R)替换 A)接受 I)插入 U)小写 S)词根 Q)退出 X)退出或?寻求帮助 --check-apostrophe 检查 Unicode 字体撇号 --check-url 检查 URL、电子邮件地址和目录路径 -1 只检查行中的第一个字段(分隔符 = 制表器) -D 显示可用的字典 -G 只打印正确的单词或行 -H HTML 输入文件格式 -L 打印拼错单词的行 -O OpenDocument (ODF 或平面 ODF)输入文件格式 -P password 为加密字典设置密码 -S 输入文本的后缀词 -X XML 输入文件格式 -a Ispell 的管道接口 -d d[,d2,...] 使用 d (d2等)字典 -h, --help 显示此帮助并退出 -i enc 输入编码 -l 打印拼写错误的单词 -m 分析输入文本的单词 -n nroff/troff 输入文件格式 -p dict 设置 dict 自定义字典 -r 警告潜在的错误(罕见词) -s 对输入的文字进行词根处理 -t TeX/LaTeX 输入文件格式 -v, --version 打印版本号 -vv 打印 Ispell 兼容的版本号 -w 从一个单词/行输入中打印拼写错误的单词(= 行)。 0-n 用建议中的一个词代替。 ? 显示这个帮助界面。 A 在本次会话的剩余时间里接受这个词。 可用的字典(路径对于 -d 选项不是必需的): 您确定要丢弃您的更改吗? 错误报告:http://hunspell.github.io/ 无法创建临时文件无法创建 tmp 目录无法打开 %s。 无法打开名为“%s”的字典的词缀或字典文件。 无法打开输入文件无法打开输出文件无法更新个人词典。检查每个文件的拼写。如果没有文件,检查标准输入。 例子: hunspell -d en_US file.txt # 交互式拼写 hunspell -i utf-8 file.txt # 检查 UTF-8 编码文件 hunspell -l *.odt # 打印 ODF 文件的拼写错误的单词 # 通过创建个人字典快速修复 ODF 文档 # 1 从拼写错误和未知的单词中列出一个简化的列表: hunspell -l *.odt | sort | uniq >words # 2 通过文本编辑器删除文件中拼写错误的单词。 # 3 使用此个人词典修复已删除的单词: hunspell -p words *.odt 禁止!Hunspell 已在没有 Ncurses 用户界面的情况下编译。 I 接受这个词,并把它放在你的私人字典里。 加载字典: %s %s 行 %d: %s -> 示范词(一个类似的字典词) 示范词必须在字典中。按任何键!新词(词干): Q 立即退出。要求确认。保留文件不动。 R 将拼写错误的单词完全替换。 替换为: S 询问一个词干和一个示范词,并将它们储存在私人词典中。 该词干也将被接受,并带有示范词的词缀。 搜索路径: %s Space 只接受这次的词。 拼写错误?这是免费软件;复制条件请见源码。 不存在 保证;甚至不保证适销对路或适合某一特定用途。 在法律允许的范围内。 U 接受并将小写版本加入私人字典。 用法:hunspell [选项]... [文件]... 每当发现字典里没有的单词时 它印在屏幕的第一行上。如果字典 包含任何类似的单词,它们都用数字列出 在每一个旁边, 你可以选择替换这个词 完全的,或者选择一个建议的词。 X 写下这个文件的其余部分,忽略错误的拼写,并开始下一个文件。 ^Z 暂停程序。用fg命令重新启动。 a错误 - %s 超出字典限制。 错误 - iconv: %s -> %s 错误 - iconv_open: %s -> %s 错误 - iconv_open: UTF-8 -> %s 错误 - 缺少HOME变量 iqrsuxyhunspell-1.7.2/po/oc.po0000664000175000017500000003042414353370167011671 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-09-28 21:18+0000\n" "Last-Translator: Quentin PAGÈS \n" "Language-Team: Occitan \n" "Language: oc\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.14.1\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "error : iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "error : iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "error - iconv_open : UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Impossible de crear un dossièr temporari" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Impossible de dobrir lo fichièr en entrada" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Impossible de dobrir %s.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "error - variabla HOME mancanta\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Linha %d : %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "DEFENDUT !" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Fauta d'ortografia ?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tFichièr : %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it o ? per l'ajuda\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Las comandas son :\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "R\tRemplaça completament lo mot mal ortografiat.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Espaci\tAccèpta lo mot aqueste còp solament.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tAccèpta lo mot per la rèsta d'aquesta session.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tAccèpta lo mot e lo plaça dins vòstre diccionari personal.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" "U\tAccèpta lo mot e n'apond una version en minuscula dins vòstre diccionari " "personal.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tRemplaça per un dels mots suggerits.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tAficha aqueste ecran d'ajuda.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Quichatz sus espaci per contunhar -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "r" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Remplaçar per : " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "u" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Impossible de metre a jorn lo diccionari personal." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "s" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Mot novèl (radical) : " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "" #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "x" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "q" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Volètz vertadièrament abandonar vòstras modificacions ? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Impossible de crear lo fichièr temporari" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Sintaxi : hunspell [OPCION]... [FICHIÈR]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr "" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr "" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\tutiliza los diccionaris d (d2 etc.)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\taficha los diccionaris disponibles\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\taficha pas que los mots o linhas corrèctas\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\taficha aquesta ajuda e quita\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tfichièr en entrada al format HTML\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i enc\tencodatge en entrada\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\timprimir los mots mal ortografiats\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\timprimir los mots mal ortografiats\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tanalisa los mots del tèxte en entrada\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tformat de fichièr en entrada nroff/troff\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr "" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p dico\tdeclara dico coma diccionari personal\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr "" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr "" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\taficha lo numèro de version\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr "" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tfichièr en entrada al format HTML\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Senhalar los problèmas : http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "EMPLAÇAMENT DE RECÈRCA :\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "DICCIONARI CARGAT :\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "" hunspell-1.7.2/po/pt_PT.po0000664000175000017500000003650114353370167012320 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:09+0000\n" "Last-Translator: José Vieira \n" "Language-Team: Portuguese (Portugal) \n" "Language: pt_PT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "erro - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "erro - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "erro - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Não foi possível criar o diretório tmp" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Não foi possível abrir o ficheiro de entrada" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Não foi possível abrir %s.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "erro - variável HOME em falta\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Linha %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "PROIBIDO!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Erro de ortografia?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tFicheiro: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[ESPAÇO] R)epor A)ceitar I)nserir U)ncap T)ronco C)oncluir S)air, ou ? para " "obter ajuda\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Sempre que é encontrada uma palavra que não está no dicionário\n" "ela será mostrada na primeira linha do ecrã. Se o dicionário\n" "contiver palavras semelhantes, elas serão listadas com um \n" "número ao lado. O utilizador tem a opção de substituir a palavra\n" "manualmente, ou escolher uma das palavras sugeridas.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Os comandos são:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "R\tSubstituir manualmente a palavra com erros ortográficos.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Espaço\tAceitar a palavra apenas esta vez.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tAceitar a palavra para o resto da sessão.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tAceitar a palavra e colocá-la no dicionário particular.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "U\tAceitar e adicionar a versão minúscula ao dicionário particular.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "T\tSolicitar um tronco e um modelo da palavra e armazená-las no dicionário " "particular.\n" "O tronco também será aceite com os afixos do modelo da palavra.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tSubstituir por uma das palavras sugeridas.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "S\tEscrever o resto deste ficheiro ignorando os erros de ortografia e " "iniciar o próximo ficheiro.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" "C\tSair imediatamente. Vai pedir uma confirmação. Deixa ficheiro " "inalterado.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z Suspender o programa. Reiniciar com o comando fg.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tMostrar este ecrã de ajuda.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Tecle espaço para continuar -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "r" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Substituir por: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "u" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Não foi possível atualizar o dicionário pessoal." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "t" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Palavra nova (tronco): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Palavra de modelo (uma palavra do dicionário semelhante): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "Palavra de modelo deve estar no dicionário. Pressione qualquer tecla!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "s" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "c" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Tem certeza que deseja descartar as suas alterações? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "s" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Não foi possível criar o ficheiro temporário" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Não foi possível abrir o ficheiro de saída" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Uso: hunspell [OPÇÃO]... [FICHEIRO]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Verifica a ortografia de cada FICHEIRO. Sem FICHEIRO, verifique a entrada " "padrão.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\tverificar apenas o primeiro campo em linhas (delimitador = " "tabulação)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\tInterface de tubulação do Ispell\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" " --check-url\tverifica URLs, endereços de e-mail e caminho de diretórios\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tverificar apóstrofo tipográfico unicode\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...] usar dicionários d (d2, etc)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\texibe os dicionários disponíveis\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\texibe apenas as palavras ou linhas corretas\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\texibe esta ajuda e sai\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H HTML\t\tFormato de ficheiro de entrada HTML\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i enc\tCodificação de entrada\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\tImprimir palavras com erros ortográficos\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\tImprimir palavras com erros ortográficos\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m\tAnalisar as palavras do texto de entrada\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tformato de ficheiro de entrada nroff/troff\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr "" " -O\t\tformato de ficheiro de entrada OpenDocument (ODF ou ODF plana)\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p dict \tdefinir dicionário personalizado dict\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\talertar sobre erros potenciais (raras palavras)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr "" " -P palavra-passe\tdefinir palavra-passe para dicionários criptografados\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s\ttronco das palavras do texto de entrada\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S\t\tsufixo palavras do texto de entrada\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tformato de ficheiro de entrada TeX/LaTeX\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\texibe o número da versão\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\texibe o número da versão Ispell compatível\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\timprimir palavras com erros ortográficos (= linhas) de uma palavra/" "linha de entrada.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tformato de ficheiro de entrada XML\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Exemplo: hunspell -d pt_PT ficheiro.txt # interativo ortográfico\n" "hunspell-eu utf-8 ficheiro.txt # verifique a codificação UTF-8 do ficheiro\n" "hunspell-l *.odt # imprimir ortográficos de ficheiros ODF\n" "\n" "# Rápida correção de documentos ODF pelo dicionário pessoal de criação\n" "\n" "# 1 Faça uma lista reduzida de erros ortográficos e palavras desconhecidas:\n" "\n" "hunspell -l *.odt | sort | uniq >palavras\n" "\n" "# 2 Eliminar erros ortográficos do ficheiro com um editor de texto.\n" "# 3 Utilize este dicionário pessoal para corrigir as palavras excluídas:\n" "\n" "hunspell -p palavras *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Relatório de erros: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Copyright (C) 2002-2014 László Németh. Licença: MPL/GPL/LGPL.\n" "\n" "Baseado na biblioteca Myspell do OpenOffice.org.\n" "Direitos autorais do Myspell (C) Kevin Hendricks, 2001-2002, Licença: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Este é um software livre; veja o código fonte para as condições de cópia. " "NÃO HÁ\n" "GARANTIAS; nem mesmo para COMERCIALIZAÇÃO ou ADAPTAÇÃO PARA UM FIM " "ESPECÍFICO,\n" "na medida permitida por lei.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "CAMINHO DE PESQUISA:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" "DICIONÁRIOS DISPONÍVEIS (o caminho não é obrigatório para a opção -d):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "DICIONÁRIO CARREGADO:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "erro - %s excede o limite do dicionário.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "Não é possível abrir apor ou ficheiros de dicionário chamado \"%s\".\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "O Hunspell foi compilado sem a interface do Ncurses.\n" hunspell-1.7.2/po/en@boldquot.header0000644000175000017500000000247113422074107014344 00000000000000# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # # This catalog furthermore displays the text between the quotation marks in # bold face, assuming the VT100/XTerm escape sequences. # hunspell-1.7.2/po/sl.po0000664000175000017500000003575214353370167011717 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-10-13 20:35+0000\n" "Last-Translator: Martin Srebotnjak \n" "Language-Team: Slovenian \n" "Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" "%100==4 ? 2 : 3;\n" "X-Generator: Weblate 4.15-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "napaka - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "napaka - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "napaka - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Začasne mape ni mogoče ustvariti" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Vhodne datoteke ni mogoče ustvariti" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "%s ni mogoče odpreti.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "napaka - manjkajoča spremenljivka HOME\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Vrstica %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "PREPOVEDANO!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Pravopisna napaka?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tDatoteka %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[PRESLEDNICA] Z)amenjaj P)otrdi V)stavi M)alo K)oren P(r)ekini I)zhod ali ? " "za pomoč\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Kadarkoli je najdena beseda, ki je ni v slovarju je ta\n" "izpisana v prvi vrstici na zaslou. Če slovar vsebuje podobne\n" "besede, so te navedene s številko ob besedi. Imate možnost\n" "zamemanjati celotno besedo ali izbrati eno od ponujenih\n" "besed.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Ukazi so:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "Z\tZamenjaj celo nepravilno zapisano besedo.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Preslednica - Sprejmi to besedo samo tokrat.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "P\tSprejmi to besedo do konca te seje.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "U\tSprejmi to besedo in jo shrani v osebni slovar.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "M\tSprejmi to besedo in jo z malimi črkami zapiši v osebni slovar.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "K\tPovprašaj po korenu in vzorcu besede in ju shrani v osebni slovar.\n" "\tKoren bo prevzet skupaj z obrazili primerka besede.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n Zamenjaj z eno od predlaganih besed.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "X\tZapiši preostanek te datoteke, prezri pravopisne napake in ustvari novo " "datoteko.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" "Q\tNemudoma končaj. Vpraša za potrditev. Datoteke ostanejo nespremenjene.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tZaustavi program. Ponovni zagon z ukazom fg.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tPrikaže to pomoč.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Za nadaljevanje pritisnite preslednico -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "z" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Zamenjaj z: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "m" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "v" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Osebnega slovarja ni mogoče posodobiti." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "k" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Nova beseda (koren): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Vzorčna beseda (podobna beseda slovarja): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "Vzorčna beseda mora biti v slovarju. Pritisnite poljubno tipko!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "i" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "h" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Ali ste prepričani, da želite zavreči opravljene spremembe? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "d" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Začasne datoteke ni mogoče ustvariti" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Izhodne datoteke ni mogoče odpreti" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Uporaba: hunspell [MOŽNOST]... [DATOTEKA]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Preveri črkovanje vsake DATOTEKE. Brez DATOTEKE preveri standardnivhod.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr " -1\t\tpreveri samo prvo polje v vrstici (ločilo = tabulator)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tcevovodni vmesnik Ispella\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr " --check-url\tpreveri URL-je, e-poštne naslove in poti map\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tpreveri tipografski opuščaj Unicode\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\tuporabi slovarje d (d2 itn.)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tpokaži razpoložljive slovarje\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\tnatisni samo prave besede ali vrstice\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tprikaži to pomoč in zapri program\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tzapis vhodne datoteke HTML\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i enc\tvhodno kodiranje\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\tizpiši nepravilno črkovane besede\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\tizpiši vrstice z nepravilno črkovanimi besedami\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tanaliziraj besede vhodnega besedila\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tzapis vhodne datoteke nroff/troff\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tzapis vhodne datoteke OpenDocument (ODF ali enostavni ODF)\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p slov\tdoloči slovar slov po meri\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\topozori na morebitne napake (redke besede)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P geslo\tnastavite geslo za šifrirane slovarje\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\tizlušči koren besed vhodnega besedila\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tbesedam vhodnega besedila dodaj pripone\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tzapis vhodne datoteke TeX/LaTeX\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\tizpiši številko različice\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\tizpiši številko združljive različice Ispell\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\tizpiši napačno črkovane besede (= vrstice) iz ene besede/vrstice " "vnosa.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tzapis vhodne datoteke XML\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Primer: hunspell -d sl_SI datoteka.txt # interaktivno črkovanje\n" " hunspell -i utf-8 datoteka.txt # preveri datoteko s kodiranjem " "UTF-8\n" " hunspell -l *.odt # izpiši napačno črkovane besede " "datotek ODF\n" "\n" " # Hitri popravek dokumentov ODF z ustvarjanjem osebnega slovačka\n" "\n" " # 1 Naredite okrajšan seznam iz napačno črkoavnih in neznanih " "besed:\n" "\n" " hunspell -l *.odt | sort | uniq >besede\n" "\n" " # 2 Izbrišite napačno črkovane besede datoteke v urejevalniku " "besedil.\n" " # 3 Uporabite ta osebni slova za popravek izbrisanih besed:\n" "\n" " hunspell -p besede *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Poročila o hroščih: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Avtorska pravica (C) 2002-2014 László Németh. Dovoljenje: MPL/GPL/LGPL.\n" "\n" "Temelji na knjižnici Myspell OpenOffice.org.\n" "Avtorska pravica Myspell (C) Kevin Hendricks, 2001-2002, dovoljenje: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "To je prosto programje; pogoje kopiranja si oglejte v izvorni kodi. Je " "BREZ\n" "garancije; niti za PRIMERNOST ZA PRODAJO ali PRIMERNOST ZA DOLOČEN NAMEN\n" "v zakonsko dovoljeni meri.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "POT ISKANJA:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "SLOVARJI NA VOLJO (pot ni obvezna za možnost -d):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "NALOŽENI SLOVAR:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "napaka - %s presega omejitev slovarja.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "Datotek pripon ali slovarja za slovar \"%s\" ni mogoče odpreti.\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hunspell je preveden brez uporabniškega vmesnika Ncurses.\n" hunspell-1.7.2/po/is.gmo0000664000175000017500000000663314353370170012046 00000000000000%D5l@AQqG(-!0;2l" :(B:*}&:&<Kc  (*,.0246 .) X jt - 2 @ (a 9  !  A F W >l '   2 * T> + W   2 P q          $ % ! # " %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help -h, --help display this help and exit 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. Are you sure you want to throw away your changes? Can't open %s. Cannot update personal dictionary.FORBIDDEN!I Accept the word, and put it in your private dictionary. Line %d: %s -> New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... X Write the rest of this file, ignoring misspellings, and start next file. aerror - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: Icelandic (Hunspell) Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:09+0000 Last-Translator: Anonymous Language-Team: Icelandic Language: is MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n % 10 != 1 || n % 100 == 11; X-Generator: Weblate 4.14-dev %s Skrá: %s -- Ýttu á bilslá til að halda áfram -- Mögulegar skipanir eru: [SPACE] s(K)ipta-út s(A)mþykkja setja-(I)nn L)ágstaf S)tofn H)ætta (X)-loka eða á ? fyrir aðstoð -h, --help birtir þessa hjálp og hættir 0-n Skipta út með einni af tillögunum um orð. ? Birtir þennan hjálparskjá. A Samþykkja orðið til loka setunnar. Ertu viss um að þú viljir henda breytingunum þínum? Get ekki opnað %s. Get ekki uppfært einkaorðasafn.BANNAÐ!I Samþykkja orðið, og setja það í einkaorðasafnið þitt. Lína %d: %s -> Nýtt orð (stofn): H Hætta strax. Spyr um staðfestingu. Breytir ekki skránni. K Skipta alveg út misritaða orðinu. Skipta út með: LEITARSLÓÐ: %s Bil Samþykkja orðið einungis í þetta skipti. Stafsetningarvilla?L Samþykkja orðið, og setja lágstafa útgáfu þess í einkaorðasafnið þitt. Notkun: hunspell [VALKOSTUR]... [SKRÁ]... X Skrifa afganginn af skránni, hunsar stafsetningarvillur, og byrjar á næstu skrá. avilla - iconv: %s -> %s villa - iconv_open: %s -> %s villa - iconv_open: UTF-8 -> %s villa - vantar HOME-breytu ihkslxjhunspell-1.7.2/po/hy.gmo0000664000175000017500000000141614353370170012045 00000000000000Dl! Commands are: Can't open %s. Line %d: %s -> New word (stem): Project-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:09+0000 Last-Translator: Davit Mayilyan Language-Team: Armenian Language: hy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n > 1; X-Generator: Weblate 4.14-dev Հրամաններն են. Չկարողացա բացել %s Տող %d: %s -> Նոր բառ (արմատ)՝ hunspell-1.7.2/po/ie.po0000664000175000017500000003373614353370167011676 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:09+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Occidental \n" "Language: ie\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "errore - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "errore - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "errore - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Ne successat crear un temporari fólder" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Ne successat aperter %s.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "errore - variabile HOME es mancant\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Linea %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "PROHIBIT!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Ortografic errore?" #: src/tools/hunspell.cxx:1147 #, fuzzy, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tFile: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[SPACIE] R)empl A)ccpt I)nsrt M)inusc radi(C)a F)inir T)erminar ?) Auxilie\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Comandes disponibil:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "R\tRemplazzar li errari parole completmen.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Spacie\tAccepter li parole solmen por ti-ci vez.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tAccepter li parole por li reste de ti-ci session.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tAccepter li parole e adjunter it in vor personal dictionarium.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "M\tAccepter e adjunter li parole scrit in minuscules al pers. dict.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "C\tDemandar un radice e un modell-parole e adjunter les al pers. dict.\n" "\tLi radice va esser acceptat con li affixes del modell-parole.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tRemplazzar per un del suggestiones.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "F\tScrir li reste del file ínchangeat e comensar con li sequent file.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "T\tTerminar ínmediatmen. Demandar confirmation. Ne modificar files.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tSuspender li programma. Reiniciar med commande fg.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tMonstrar ti-ci ecran de auxilie.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Tippa SPACIE por continuar -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "r" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Remplazzar per: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "m" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Ne successar actualisar li personal dictionarium." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "c" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Nov parole (radice/base): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Modell-parole (un simil parole ex li dictionarium): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" "Li modell-parole deve exister in li dictionarium. [Presse alquel clave.]" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "f" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "t" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Esque vu vole forjettar vor modificationes? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "y" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Ne successat crear un temporari file" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Usage: hunspell [OPTION]... [FILE]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Controlar li ortografia de chascun FILE. Sin FILE, controlar li STDIN.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\tcontrolar solmen li unesim camp in li linea (delimitat p/TABs)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tInterfacie canal de Ispell\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" " --check-url\tcontrolar URL- e E-post-adresses, e rutes de fil-sistema\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tcontrolar li tipografic apostrof Unicode\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\tusar dictionariums d (d2 etc.)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tmonstar disponibil dictionariums\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\tprintar solmen correct paroles o lineas\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tmonstrar li auxilie e salir\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tfile in li formate HTML\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i cod\tcodification del file\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\tprintar paroles con errores\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " --L\t\tprintar lineas con errores\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m\t\tanalisar li paroles in li file\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tfile in formate nroff/troff\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tfile in li formate OpenDocument (ODF/Plan-ODF)\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p dict\tusar li personal dictionarium «dict»\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\tadvertir pri potential errores (rar paroles)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P contrasgn\tassignar li contrasigne por ciffrat dictionariums\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tfile in li formate TeX/LaTeX\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\tmonstrar li numeró de version\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\tmonstrar li nró de version compatibil con Ispell\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tfile in li formate XML\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Exemple: hunspell -d ie file.txt # control interactiv\n" " hunspell -i utf-8 file.txt # controlar un file in codification " "UTF-8\n" " hunspell -l *.odt # printar errari paroles ex files " "ODF\n" "\n" " # Rapid correction de documentes ODF per creation de un personal " "dict.\n" "\n" " # 1 Crea un reductet liste de ínconosset e errari paroles:\n" "\n" " hunspell -l *.odt | sort | uniq >paroles\n" "\n" " # 2 Delete li errari paroles ex li file per un redactor de textus.\n" " # 3 Usa ta-ci dictionarium por correcter li removet paroles:\n" "\n" " hunspell -p paroles *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Raportar errores: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "RUTE DE SERCHA:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "CARGAT DICTIONARIUM:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "errore - %s supera li límite del dictionarium.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" "Ne successat aperter li file de affixe o de dictionarium por dictionarium " "\"%s\".\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hunspell esset compilat sin interfacie de usator Ncurses.\n" hunspell-1.7.2/po/gl.po0000664000175000017500000003657014353370167011702 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:09+0000\n" "Last-Translator: Adolfo Jayme Barrientos \n" "Language-Team: Galician \n" "Language: gl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "erro - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "erro - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "erro - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Non foi posíbel crear o cartafol temporal" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Non foi posíbel abrir o ficheiro de entrada" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Non foi posíbel abrir %s.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "erro - falta a variábel HOME\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Liña %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "PROHIBIDO!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Erro de revisión?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tFicheiro: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[ESPAZO] S)ubs A)ceptar I)nserir M)inus R)aíz O)mitir (S)aír ou ? para " "axuda\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Cando se atopa unha palabra que non está no dicionario\n" "imprímese na primeira liña da pantalla. Se o dicionario\n" "contén algunha palabra semellante, lístase cun número\n" "próximo a cada unha delas. Desde aí, vostede ten a opción\n" "de substituír a palabra completamente ou escoller unha das suxeridas.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "As ordes son:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "S\tSubstituír a palabra marcada completamente.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Espazo\tAceptar a palabra soamente por esta vez.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tAceptar a palabra para o resto desta sesión.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tAceptar a palabra e poñela no seu dicionario privado.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" "U\tAceptar e engadir unha versión en minúsculas no dicionario privado.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "S\tPedir unha raíz e unha palabra modelo e gardala no dicionario privado.\n" "\tA raíz aceptará tamén os afixos da palabra modelo.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tSubstituír cunha das palabras suxeridas.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "X\tEscribir o resto deste ficheiro, ignorando as marcadas e comezar o " "seguinte ficheiro.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" "Q\tSaír inmediatamente. Pedir confirmación. Deixar o ficheiro sen realizar " "cambios.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tSuspender o programa. Reiniciar coa orde fg.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tAmosar esta pantalla de axuda.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Escriba un espazo para continuar -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "r" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Substituír con: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "u" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Non se pode actualizar o dicionario persoal." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "s" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Nova palabra (raíz): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Palabra modelo (unha palabra similar do dicionario): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "A palabra modelo debe estar no dicionario. Prema calquera tecla!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "x" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "q" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Confirma que quere desbotar os seus cambios? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "y" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Non foi posíbel crear o ficheiro temporal" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Non foi posíbel abrir o ficheiro de saída" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Utilización: hunspell [OPCIÓN]... [FICHEIRO]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Revisar a corrección de cada FICHEIRO. De non haber FICHEIRO, revisar a " "entrada estándar.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\trevisar soamente o primeiro campo en liñas (delimitador = " "tabulador)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tInterface da tubaría de Ispell\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" " --check-url\tcomproba os URL, enderezos de correo e rutas de directorios\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tcomproba o apóstrofo tipográfico Unicode\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\tutilice os dicionarios d (d2 etc.)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tamosar os dicionario dispoñíbeis\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\timprimir soamente as palabras correctas ou liñas\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tpresentar esta axuda e saír\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tFormato HTML de ficheiro de entrada\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i enc\tcodificación de entrada\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\timprimir as palabras marcadas\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\timprimir as liñas con palabras marcadas\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tanalizar as palabras do texto de entrada\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tnroff/troff formato do ficheiro de entrada\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr "" " -O\t\tFormato do ficheiro de entrada OpenDocument (ODF ou Flat ODF)\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p dict\tdefinir o dicionario personalizado\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\taviso de potenciais erros (palabras raras)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P contrasinal\tdefinir o contrasinal para dicionarios cifrados\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\traíz das palabras do texto de entrada\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tsufixos das palabras do texto de entrada\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tFormato do ficheiro de texto TeX/LaTeX\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\timprimir o número da versión\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\timprimir o número da versión compatíbel de Ispell\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\timprimir as palabras marcadas (= liñas) a partir dunha palabra/liña " "de entrada.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tFormato do ficheiro de entrada XML\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Exemplo: hunspell -d en_US file.txt # revisión interactiva \n" " hunspell -i utf-8 file.txt # comprobar o ficheiro codificado en " "UTF-8\n" " hunspell -l *.odt # imprimir as palabras marcadas dos " "ficheiros ODF\n" "\n" " # Arranxar rapidamente documentos ODF mediante a creación dun " "dicionario persoal\n" "\n" " # 1 Facer unha lista reducida a partir das palabras marcadas e " "descoñecidas:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Eliminar as palabras marcadas do ficheiro mediante un editor de " "texto.\n" " # 3 Utilice este dicionario persoal para arranxar as palabras " "eliminadas:\n" "\n" " hunspell -p words *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Informes de erro: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Copyright (C) 2002-2014 László Németh. Liceza: MPL/GPL/LGPL.\n" "\n" "Baseado na biblioteca Myspell de OpenOffice.org.\n" "O copyright de Myspell pertence a Kevin Hendricks, 2001-2002, Licenza: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Isto é software libre; vexa a orixe para comprender os dereitos de copia. " "NON hai garantía; tanto no caso de utilización MERCANTIL coma no de " "ADECUACIÓN PARA UN PROPÓSITO PARTICULAR, ata o límite do permitido pola " "lexislación.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "RUTA DE BUSCA:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "DICIONARIOS DISPOÑÍBEIS (a ruta non é obrigatoria coa opción -d):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "DICIONARIO CARGADO:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "erro - %s excédese o límite do dicionario.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" "Non é posíbel abrir o ficheiro de afixos ou os de dicionario para o " "dicionario co nome «%s».\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hunspell compilouse sen a interface de usuario Ncurses.\n" hunspell-1.7.2/po/de_CH.po0000664000175000017500000002472614353370167012242 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:08+0000\n" "Last-Translator: Anonymous \n" "Language-Team: German (Switzerland) \n" "Language: de_CH\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "" #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "" #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "" #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "" #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "" #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "" #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr "" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr "" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr "" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr "" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr "" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr "" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr "" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr "" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr "" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr "" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr "" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr "" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr "" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "" #: src/tools/hunspell.cxx:1895 msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "" hunspell-1.7.2/po/uz.gmo0000664000175000017500000002377214353370170012074 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}q2 Y>L[L&7 T/u=<@ !a;+ "'0J({)K6&Q-x4D7 !X)z/*11Oh8w]mS !4!5"9"S"/d"?""C"$-#R#a##/$ 3$@$J"%.m%%f&>'A'+C'o''''''''''''1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.7.1 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-12-01 12:48+0000 Last-Translator: Akmal Xushvaqov Language-Team: Uzbek Language: uz MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.15-dev %s Fayl: %s -- Davom etish uchun Probel tugmasini bosing -- Buyruqlar: [PROBEL] A)lmash Q)abul Qoʻy)ish K)ichik A)sos chiQ)ish Tu(g)atish yoki yordam uchun ? --check-apostrophe Unicode tipografik apostrofni tekshirish --check-url URL, e-mail manzillari va fayllar jild yoʻllarini tekshirish -1 qatordagi faqat birinchi maydonni tekshirish (ajratkich = tabulyator) -D mavjud lugʻatlarni koʻrsatish -G faqat toʻgʻri soʻz yoki qatorlarni chop etish -H HTML kirish fayli formati -L xato soʻzlar bor qatorlarni koʻrsatish -O OpenDocument (ODF yoki Flat ODF) kiruvchi fayl formati -P password shifrlangan lugʻatlar uchun parol oʻrnatish -S kiruvchi matn soʻzlari uchun soʻz shakllarini yaratish -X XML kiruvchi fayl formati -a Ispell kanal interfeysi -d d[,d2,...] d (d2 va boshqa) lugʻatlardan foydalanish -h, --help yordam koʻrsatish va chiqish -i enc kiruvchi shifrlash -l xato soʻzlarni koʻrsatish -m kiruvchi matn soʻzlarini tashxis qilish -n nroff/troff kiruvchi fayl formati -p dict foydalanuvchi lugʻatini ulash -r ehtimoliy xatolar (kam uchraydigan soʻzlar) boʻyicha ogohlantirish -s soʻzlarni matndan lugʻat shakliga oʻtkazish -t TeX/LaTeX kiruvchi fayl formati -v, --version versiya raqamini koʻrsatish -vv Ispell versiyasi bilan mosligini koʻrsatish -w Xato soʻzlarni koʻrsatish (kirish – qatorda bitta soʻz). 0-n Tavsiya qilingan soʻzlarning biriga almashtirish. ? Bu yordam matnini koʻrsatish. A Soʻzni seans oxirigacha qabul qilish. MAVJUD LUGʻATLAR (-d uchun yoʻl kerak emas): Oʻzgarishlarni rad qilishni xohlaysizmi? Nosozlik hisobotlari: http://hunspell.github.io/ Vaqtinchalik fayl yaratilmaditmp katalogi yaratilmadi%s ochilmadi. "%s" uchun lugʻat yoki qoʻshimchalar fayli ochilmadi. Fayl ochilmadiChiqish fayli ochilmadiShaxsiy lugʻat yangilanmadi.Har bir FAYL imlosini tekshirish. Agar FAYL koʻrsatilmasa, standart kiritish tekshiriladi. Namuna: hunspell -d uz_UZ fayl.txt # interaktiv tekshirish hunspell -i utf-8 fayl.txt # UTF-8 shifrdagi faylni tekshirish hunspell -l *.odt # ODF fayldagi xato soʻzlarni koʻrsatish # Foydalanuvchi lugʻatini yaratish orqali ODF fayllarini tez tuzatish # 1 Nomaʼlum soʻzlar va notoʻgʻri yozilgan soʻzlar roʻyxatini tuzing: hunspell -l *.odt | sort | uniq >soʻz # 2 Matn muharririda fayldan notoʻgʻri yozilgan soʻzlarni oʻchiring. # 3 Xatolarni tuzatish uchun ushbu lugʻatdan foydalaning: hunspell -p soʻz *.odt TAQIQLANGAN!Hunspell Ncurses interaktiv interfeysisiz tuzilgan. I Soʻzni qabul qilish va shaxsiy lugʻatga joylash. YUKLANGAN LUGʻAT: %s %s Qator %d: %s -> Model soʻz (lugʻatdagi soʻz bilan bir xil): Model soʻz lugʻatda boʻlishi kerak. Istalgan tugmani bosing!Yangi soʻz (asos): Q Tezda chiqish. Tasdiqlash soʻraladi. Fayl oʻzgarmasdan qoladi. R Xato soʻzni toʻliq almashtirish Almashtirish: S Soʻzning asosi va modelini soʻrash va ularni shaxsiy lugʻatga saqlash. Asos soʻz modelining qoʻshimchalari bilan ham qabul qilinadi. QIDIRUV YOʻLI: %s Space Bu soʻzni faqat bir marta qabul qilish. Imlo xatomi?Bu bepul dasturiy taʼminot; nusxa koʻchirish shartlari uning manba kodlarida koʻrsatilgan. Litsenziya hech qanday kafolat bermaydi; xususan, qonun doirasida muayyan maqsadni bajarish yoki yaroqlilik kafolatlari boʻyicha. U Qabul qilish va soʻzni kichik harfi bilan shaxsiy lugʻatga qoʻshish. Foydalanish: hunspell [PARAMETR]... [FAYL]... Lugʻatda boʻlmagan soʻz uchrasa u ekranning birinchi qatorida koʻrsatiladi. Agar lugʻatda oʻxshash soʻzlar boʻlsa, ular raqamlar ostida roʻyxati beriladi Toʻliq soʻzni almashtirishingiz yoki taklif qilinganlardan birini tanlashingiz mumkin. X Imlo xatolariga eʼtibor bermasdan ushbu faylning qolgan qismini yozish va keyingi faylni boshlash. ^Z Dasturni toʻxtatish. fg buyrugʻi bilan qayta boshlanadi. axato - %s lugʻat cheklovidan oshib ketdi. xato - iconv: %s -> %s xato - iconv_open: %s -> %s xato - iconv_open: UTF-8 -> %s xato - HOME oʻzgaruvchisi mavjud emas iqrsuxyhunspell-1.7.2/po/fy.gmo0000664000175000017500000002407314353370170012047 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}r._@)=jH!,!@.b=;/ !; ]0~'#0)G#qF,' "1+TM74>R2,!2KG%`W"> "AH""")"G"&#E8#-~# ## N$&[$$$QY%(%%g&5R''$'''!'" (-(/(1(3(5(7(9(1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:08+0000 Last-Translator: Wim Benes Language-Team: Frisian Language: fy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.14-dev %s Bestân: %s -- Druk op spaasjebalke om troch te gean -- Opdrachten binne: [SPAASJE] feR)fange A)kseptearje Y)nfoegje lysteL)etters S)tam ôF)slute sT)opje, ? foar help --check-apostrophe kontrolearje typografyske Unicode-apostrof --check-url kontrolearje URL's, e-mailadressen en mappaden -1 kontrolearje inkeld earste fjild yn rigels (skiedingsteken = tab) -D toan beskikbere wurdboeken -G toan inkeld korrekte wurden of rigels -H HTML-ynfierbestânsformaat -L toan rigels mei ferkeard stavere wurden -O OpenDocument (ODF of platte ODF)-ynfierbestânsformaat -P wachtwurd stel wachtwurd foar fersifere wurdboeken yn -S toan suffiks fan wurden fan ynfiertekst -X XML-ynfierbestânsformaat -a pipe-interface fan Ispell -d d[,d2,...] brûk wurdboeken d (d2, ensfh.) -h, --help toan dizze help en stopje -i cod ynfierkodearring -l toan ferkeard stavere wurden -m analysearje de wurden fan de ynfiertekst -n nroff-/troff-ynfierbestânsformaat -p wdbk stel oanpast wurdboek yn -r toan warskôging foar mooglike flaters (net gebrûklike wurden) -s toan stam fan wurden fan ynfiertekst -t TeX-/LaTeX-ynfierbestânsformaat -v, --version toan ferzjenûmer -vv toan Ispell-kompatibel ferzjenûmer -w toan ferkeard stavere wurden (= rigels) fan ynfier fan ien wurd/rigel. 0-n Ferfang troch ien fan de oanrekommandearre wurden. ? Toan dit helpskerm. A Akseptearje it wurd foar de rest fan dizze sesje. BESKIKBERE WURDBOEKEN (paad is net ferplichte foar opsje -d): Bisto wis datsto dyn wizigingen fuortsmite wolst? Flatermeldingen: http://hunspell.github.io/ Kin tydlik bestân net oanmeitsjeKin tydlike map net oanmeitsjeKin %s net iepenje. Kin affiks- of wurdboekbestannen foar wurdboek neamd ‘%s’ net iepenje. Kin ynfierbestân net iepenjeKin útfierbestân net iepenjeKin persoanlik wurdboek net bywurkje.Kontrolearje de stavering fan elk BESTÂN. Sûnder BESTÂND wurdt standertynfier kontrolearre. Foarbyld: hunspell -d fy_NL bestân.txt # ynteraktive stavering hunspell -i utf-8 bestân.txt # kontrolearje bestân yn UTF-8-kodearring hunspell -l *.odt # toan ferkeard stavere wurden yn ODF-bestannen # Flugge ferbettering fan ODF-dokuminten troch oanmeitsjen fan persoanlik wurdboek # 1 Meitsje in redusearre list fan ferkeard stavere en ûnbekende wurden: hunspell -l *.odt | sort | uniq >wurden # 2 Smyt ferkeard stavere wurden fuort út it bestân mei in tekstferwurker. # 3 Brûk dit persoanlike wurdboek om de ferkeard stavere wurden te ferbetterjen: hunspell -p wurden *.odt FERBEAN!Hunspell is kompilearre sûnder de Ncurses-brûkersynterface. I Akseptearje it wurd en bewarje it yn dyn persoanlike wurdboek. YNLADEN WURDBOEK: %s %s Rigel %d: %s -> Modelwurd (in fergelykber wurdboekwurd): Modelwurd moat yn it wurdboek stean. Druk op in toets om troch te gean!Nij wurd (stam): F Daliks ôfslute. Freget befêstiging. Bestannen bliuwe net wizige. R Ferfang it ferkeard stavere wurd folslein. Ferfang mei: S Freegje om in stam en in modelwurd en bewarje se op yn it persoanlike wurdboek. De stam sil akseptearre wurde mei de affiksen fan it modelwurd. SYKPAAD: %s Spaasje Akseptearje it wurd ien kear. Staveringsflater?Dit is frije software; besjoch de boarnekoade foar kopiearbetingsten. Der is GJIN garânsje, sels net foar FERHANNELBERHEID of GESKIKTHEID FOAR IN BEPAALD DOEL, foar safier tastien troch de wet. L Akseptearje en bewarje in ferzje yn lytse letters yn dyn persoanlike wurdboek. Brûk: hunspell [OPSJE]... [BESTÂN]... Wannear in wurd fûn wurdt dat net yn it wurdboek stiet, wurdt it op de earste rigel fan it skerm toand. As it wurdboek lykweardige wurden befettet, wurde dizze mei ien nûmer neist inoar toand. Do kinst it wurd folslein ferfange, of ien fan de oanrekommandearre wurden kieze. T Skriuw de rest fan dit bestân, negearje ferkeard spelde wurden, en begjin mei it folgjende bestân. ^Z Programma pauzearje. Start opnij mei fg-opdracht. aflater - %s giet oer wurdboeklimyt. flater - iconv: %s -> %s flater - iconv_open: %s -> %s flater - iconv_open: UTF-8 -> %s flater - fariabele HOME ûntbrekt ifrsltjhunspell-1.7.2/po/sv.po0000664000175000017500000003557714353370167011736 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:08+0000\n" "Last-Translator: Anders Jonsson \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "fel - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "fel - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "fel - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Det går inte att skapa tmp-katalog" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Det går inte att öppna indatafil" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Det går inte att öppna %s.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "fel - saknar HOME-variabel\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Rad %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "FÖRBJUDEN!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Stavfel?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tFil: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[BLANKSTEG] E)rsä A)ccept I)nfoga G)emen S)tam sT)äng a(V)sluta, ? för " "hjälp\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Närhelst ett ord som inte finns i ordboken hittas skrivs\n" "det ut på skärmens första rad. Om ordboken innehåller\n" "liknande ord så listas de med ett nummer intill varje ord.\n" "Du har möjligheten att ersätta ordet fullständigt eller att\n" "välja ett av de föreslagna orden.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Kommandon är:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "E\tErsätt det felstavade ordet fullständigt.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Blanksteg\tAcceptera ordet endast denna gång.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tAcceptera ordet under resten av denna session.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tAcceptera ordet och lägg till det i din privata ordbok.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "G\tAcceptera och lägg till gemen version i privat ordbok.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "S\tBe om en stam och ett modellord och lagra dem i den privata ordboken.\n" "\tStammen kommer accepteras även med affixen för modellordet.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tErsätt med ett av de föreslagna orden.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "T\tSkriv resten av denna fil, ignorera felstavningar, och börja på nästa " "fil.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" "V\tAvsluta omedelbart. Frågar efter bekräftelse. Lämnar filer oförändrade.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tStoppa program. Starta om med kommandot fg.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tVisa denna hjälpskärm.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Tryck blanksteg för att fortsätta -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "e" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Ersätt med: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "g" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Det går inte att uppdatera personlig ordbok." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "s" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Nytt ord (stam): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Modellord (ett liknande ordboksord): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "Modellord måste finnas i ordboken. Tryck valfri tangent!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "t" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "v" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Är du säker på att du vill förkasta dina ändringar? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "j" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Det går inte att skapa temporär fil" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Det går inte att öppna utdatafil" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Användning: hunspell [FLAGGA]… [FIL]…\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Kontrollera stavning för varje FIL. Utan FIL kontrolleras standard in.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\tkontrollera endast första fält i rader (avskiljare = tabulator)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tIspells rörgränssnitt\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" " --check-url\tkontrollera URL:er, e-postaddresser och katalogsökvägar\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tkontrollera typografisk Unicode-apostrof\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\tanvänd ordböckerna d (d2 etc.)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tvisa tillgängliga ordböcker\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\tskriv endast ut korrekta ord eller rader\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tvisa denna hjälp och avsluta\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tindatafil i HTML-format\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i kodn\tindatakodning\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\tskriv ut felstavade ord\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\tskriv ut rader med felstavade ord\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tanalysera orden i indatatexten\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tindatafil i nroff/troff-format\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tindatafil i OpenDocument-format (ODF eller platt ODF)\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p ordb\tställ in anpassad ordbok ordb\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\tvarna för potentiella misstag (ovanliga ord)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P lösenord\tställ in lösenord för krypterade ordböcker\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\thitta stam för orden i indatatexten\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\thitta suffix till ord i indatatexten\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tindatafil i TeX/LaTeX-format\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\tskriv ut versionsnummer\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\tskriv ut Ispell-kompatibelt versionsnummer\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\tskriv ut felstavade ord (= rader) från indata med ett ord/rad.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tindatafil i XML-format\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Exempel: hunspell -d en_US file.txt # interaktiv stavning\n" " hunspell -i utf-8 file.txt # kontrollera UTF-8-kodad fil\n" " hunspell -l *.odt # skriv ut felstavade ord i ODF-" "filer\n" "\n" " # Snabbfix av ODF-dokument genom att skapa personlig ordbok\n" "\n" " # 1 Gör en reducerad lista av felstavade och okända ord:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Ta bort felstavad ord i filen med en textredigerare.\n" " # 3 Använd denna personliga ordbok för att fixa de\n" " borttagna orden:\n" "\n" " hunspell -p words *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Felrapporter: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Copyright © 2002-2014 László Németh. Licens: MPL/GPL/LGPL.\n" "\n" "Baserad på OpenOffice.orgs Myspell-bibliotek.\n" "Myspell-copyright © Kevin Hendricks, 2001-2002, Licens: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Detta är fri programvara, se källkoden för kopieringsvillkor. Det finns " "INGEN\n" "garanti, inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT SPECIELLT " "ÄNDAMÅL,\n" "så långt lagen tillåter.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "SÖKVÄG:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "TILLGÄNGLIGA ORDBÖCKER (sökväg är inte obligatorisk för flaggan -d):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "INLÄST ORDBOK:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "fel - %s överskrider ordboksgräns.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "Det går inte att öppna affix- eller ordboksfiler för ordboken ”%s”.\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hunspell har kompilerats utan Ncurses-användargränssnitt.\n" hunspell-1.7.2/po/lt.gmo0000664000175000017500000000267014353370170012047 00000000000000 | 2!Tj"  J)%t""%&> er!   Are you sure you want to throw away your changes? Can't create tempfileCan't create tmp dirCan't open %s. Can't open inputfileCan't open outputfileCannot update personal dictionary.FORBIDDEN!Line %d: %s -> Spelling mistake?error - missing HOME variable Project-Id-Version: hunspell 1.7.1 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-10-18 11:10+0000 Last-Translator: Marius Karotkis Language-Team: Lithuanian Language: lt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n % 10 == 1 && (n % 100 < 11 || n % 100 > 19)) ? 0 : ((n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) ? 1 : 2); X-Generator: Weblate 4.15-dev Ar tikrai norite atmesti pakeitimus? Nepavyko sukurti šablono failoNegalima sukurti laikino aplankaloNegalima atidaryti %s. Negalima atidaryti įvesties failoNepavyksta atidaryti išvesties failoNepavyko atnaujinti asmeninio žodyno.DRAUDŽIAMA!Eilutė %d: %s -> Rašybos klaida?klaida - trūksta kintamojo HOME hunspell-1.7.2/po/mk.po0000664000175000017500000002472714353370167011710 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:08+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Macedonian \n" "Language: mk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n==1 || n%10==1 ? 0 : 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "" #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "" #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "" #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "" #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "" #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "" #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr "" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr "" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr "" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr "" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr "" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr "" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr "" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr "" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr "" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr "" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr "" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr "" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr "" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "" #: src/tools/hunspell.cxx:1895 msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "" hunspell-1.7.2/po/fa.po0000664000175000017500000002444614353370167011665 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.7.1\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "" #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "" #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "" #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "" #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "" #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "" #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr "" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr "" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr "" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr "" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr "" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr "" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr "" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr "" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr "" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr "" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr "" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr "" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr "" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "" #: src/tools/hunspell.cxx:1895 msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "" hunspell-1.7.2/po/uk.po0000664000175000017500000004424014353370167011710 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:09+0000\n" "Last-Translator: Максим Якимчук \n" "Language-Team: Ukrainian \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "Помилка - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "Помилка - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "Помилка - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Помилка створення тимчасової теки" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Помилка відкриття файлу" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Помилка відкриття %s.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "помилка - відсутня змінна HOME\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Рядок %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "ЗАБОРОНЕНО!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Орфографічна помилка?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tФайл: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[ПРОБІЛ] З)ам П)рийн В)ставити М)алі О)снова ви(Й)ти за(К)інчити або ? - " "довідка\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Кожного разу, коли програма виявляє слово, якого немає у словнику,\n" "його буде виведено у першому рядку екрана. Якщо у словнику містяться\n" "подібні слова, їх буде показано із номерами. Ви можете замінити слово\n" "повністю або вибрати одне зі слів-пропозицій.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Команди:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "З\tзамінити слово з помилкою повністю.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Пробіл\tПрийняти це слово лише цього разу.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "П\tПриймати слово протягом решти цього сеансу.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "В\tПрийняти слово і записати його до власного словника.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "М\tПрийняти і додати слово малими літерами до власного словника.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "О\tПопросити вказати основу і модель слова і зберегти їх до власного " "словника.\n" "\tОснова вважатиметься прийнятною, якщо використано афікси моделі слова.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tЗамінити одним із запропонованих слів.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "К\tЗаписати решту цього файла, ігнорувати помилки і розпочати наступний " "файл.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" "Й\tВийти негайно. Попросити підтвердження дії. Файли лишається незмінним.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "" "^Z\tПризупинити роботу. Перезапустити програму можна за допомогою команди " "fg.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tПоказати це вікно з довідкою.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Натисніть пробіл для продовження -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "з" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Замінити на: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "м" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "в" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Не вдалося оновити словник користувача." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "п" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "о" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Нове слово (основа): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Модель слова (подібне слово зі словника): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "Модельне слово має бути у словнику. Натисніть будь-яку клавішу!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "к" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "й" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Ви справді хочете відкинути усі внесені вами зміни? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "т" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Не вдалося створити тимчасовий файл" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Не вдалося відкрити вихідний файл" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Використання: hunspell [ПАРАМЕТР]... [ФАЙЛ]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Перевірити правопису у кожному ФАЙЛі. Якщо не вказано ФАЙЛ, перевірити дані " "із стандартного джерела введення.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr " -1\t\tперевіряти лише перше поле у рядку (роздільник = табуляція)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tконвеєрний інтерфейс Ispell\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" " --check-url\tперевіряти адреси інтернету, електронної пошти і шляхи до " "каталогів\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr "" " --check-apostrophe\tперевіряти із використанням типографського апострофа " "Unicode\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\tвикористовувати словники d (d2 тощо)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tвивести список доступних словників\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\tвивести лише слова або рядки, які написано без помилок\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tвивести цю довідку і вийти\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tформат HTML для вхідних файлів\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i кодування\tкодування вхідних даних\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\tвиводити слова із помилками\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\tвиводити рядки із помилками у словах\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tаналізувати слова вхідного тексту\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tформат nroff/troff для вхідних файлів\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tформат OpenDocument (ODF або Flat ODF) для вхідних файлів\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p словник\tвстановити нетиповий словник\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\tпопереджати про потенційні помилки (рідкісні слова)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P пароль\tвстановити пароль для шифрованих словників\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\tвикористовувати основи слів для вхідного тексту\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tслова-суфікси вхідного тексту\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tформат TeX/LaTeX для вхідних файлів\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\tвивести номер версії\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\tвивести номер версії сумісності із Ispell\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\tвивести слова (= рядки) із помилками на основі вхідних даних слова/" "рядка.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tформат XML для вхідних файлів\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Приклади: hunspell -d uk_UA файл.txt # інтерактивна перевірка правопису\n" " hunspell -i utf-8 файл.txt # перевірити файл із кодуванням " "UTF-8\n" " hunspell -l *.odt # вивести слова із помилками з файлів " "ODF\n" "\n" " # Швидке виправлення документів ODF створенням особистого словника\n" "\n" " # 1 Створити скорочений список слів із помилками і невідомих слів:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Вилучити слова із помилками з файла за допомогою текстового " "редактора.\n" " # 3 Скористатися цим особистим словником для виправлення вилучених " "слів:\n" "\n" " hunspell -p words *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Звітування щодо вад: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "© László Németh, 2002-2014. Ліцензування: MPL/GPL/LGPL.\n" "\n" "Засновано на бібліотеці Myspell OpenOffice.org.\n" "Myspell, © Kevin Hendricks, 2001-2002, ліцензування: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Це програмне забезпечення є вільним, умови копіювання викладено у його " "початкових кодах\n" "Умовами ліцензування програми НЕ передбачено жодних гарантій, зокрема\n" "гарантій працездатності або придатності для певної мети, у межах " "законодавства.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "ШЛЯХ ПОШУКУ:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "ДОСТУПНІ СЛОВНИКИ (шлях не є обов'язковим із параметром -d):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "ЗАВАНТАЖЕНИЙ СЛОВНИК:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "помилка - %s перевищує обмеження словника.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" "Не вдалося відкрити афікс або файли словника для словника із назвою «%s».\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hunspell було зібрано без інтерфейсу користувача Ncurses.\n" hunspell-1.7.2/po/cs.gmo0000664000175000017500000002450014353370170012031 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}+l>Oe`1U>&+F5`'*(/1B)t)1&G@%/%3L8*+G*A,l&-[ %e'*iaH "V"7 #E#`#/s#^#$N$%h$$$'7%-_%%%G&+&&X'1O((.((("(!)2)4)6)8):)<)>)1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:08+0000 Last-Translator: Pavel Borecki Language-Team: Czech Language: cs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2; X-Generator: Weblate 4.14-dev %s Soubor: %s -- Pokračujte stisknutím mezerníku -- Příkazy jsou: [MEZERA] N)ahradit P)řijmout V)ložit M)alými písmeny K)ořen O)pustit (U)končit nebo ? pro nápovědu --check-apostrophe zkontrolovat správné Unicode apostrofy --check-url zkontrolovat URL adresy, e-mailové adresy a popisy umístění v souborovém systému -1 kontrolovat pouze první sloupec z každého řádku (oddělovač sloupců je tabulátor) -D zobrazit které slovníky jsou k dispozici -G vypsat pouze slova či řádky, které jsou v pořádku -H HTML formát vstupního souboru -L vypsat řádky se zkomolenými slovy -O vstupní soubor je ve formátu OpenDocument (ODF nebo Flat ODF) -P heslo nastavit heslo k šifrovaným slovníkům -S přípony slov vstupního textu -X vstupní soubor je ve formátu XML -a rozhraní roury (pipe) pro Ispell -d s[,s2,…] použít slovníky s (s2 atd.) -h, --help zobrazit tuto nápovědu a skončit -i enc znaková sada vstupu (encoding) -l vypsat zkomolená slova -m analyzovat slova vstupního textu -n vstupní soubor je ve formátu nroff/troff -p slovn nastavit vlastní slovník -r varovat o potenciálních chybách (zřídka používaná slova) -s kořeny slov vstupního textu -t vstupní soubor je ve formátu TeX/LaTeX -v, --version vypsat číslo verze -vv vypsat číslo verze kompatibilního Ispell -w vypsat zkomolená slova (= řádky) ze slovního/řádkového vstupu. 0-n Nahradit jedním z navržených slov. ? Zobrazit tuto nápovědu. A Přijmout slovo pro zbytek této relace. SLOVNÍKY K DISPOZICI (popis umístění není pro volbu -d povinný): Opravdu chcete zahodit provedené změny? Hlášení chyb: http://hunspell.github.io/ Nedaří se vytvořit dočasný souborNedaří se vytvořit složku tmp (dočasnou)Nedaří se otevřít %s. Nedaří se otevřít soubory s příponami nebo slovníky pro slovník nazvaný „%s“. Nedaří se otevřít vstupní souborNedaří se otevřít výstupní souborNedaří se aktualizovat osobní slovník.Zkontrolovat překlepy v každém ze SOUBOR. Pokud není SOUBOR zadán, zkontrolovat standardní vstup. Příklady: hunspell -d cs_CZ soubor.txt # interaktivní kontrola hunspell -i utf-8 soubor.txt # zkontrolovat soubor se znak. sadou UTF-8 hunspell -l *.odt # vypsat zkomolená slova v ODF souborech # Rychlá oprava ODF dokumentů vytvořením osobního slovníku # 1 Vytvořte zhuštěný seznam zkomolených a neznámých slov: hunspell -l *.odt | sort | uniq >slova # 2 V souboru slova smažte zkomolená slova. # 3 Vzniklý osobní slovník použijte pro opravu v něm smazaných slov: hunspell -p slova *.odt ZAKÁZÁNO!Hunspell byl sestaven (zkompilován) bez podpory uživatelského rozhraní v Ncurses. I Přijmout slovo a přidat ho do osobního slovníku. NAČTENÝ SLOVNÍK: %s %s Řádek %d: %s -> Modelové slovo (podobné slovo ze slovníku): Je třeba, aby modelové slovo bylo ve slovníku. Pokračujte stisknutím libovolné klávesy.Nové slovo (kořen): Q Okamžitě ukončit. Zeptá se na potvrzení. Ponechá soubor nezměněný. R Úplně nahradit zkomolené slovo. Nahradit (čím): S Zeptat se na kořen a modelové slovo a uložit je do osobního slovníku. Kořen bude přijímán také s příponami jaké má modelové slovo. POPIS PROHLEDÁVANÉHO UMÍSTĚNÍ: %s Space Přijmout toto slovo pouze pro jednou. Pravopisná chyba?Toto je svobodný software – viz podmínky kopírování uvedené ve zdrojových kódech. NENÍ poskytována žádná záruka, ani PRODEJNOSTI nebo VHODNOSTI PRO KONKRÉTNÍ ÚČEL, v rozsahu, jaký umožňuje legislativa. U Přijmout a přidat verzi s malými písmeny do osobního slovníku. Použití: hunspell [VOLBA]… [SOUBOR]… Když se narazí na slovo, které není ve slovníku, je vypsáno na prvním řádku obrazovky. Pokud slovník obsahuje podobná slova, jsou vypsána společně s čísly těchto voleb. Slovo můžete úplně nahradit, nebo zvolit z těch doporučených. X Zapsat zbytek souboru, přičemž ignorovat pravopisné chyby a začít nový soubor. CTRL+Z Uspat program. Restartujte příkazem fg. achyba – %s překračuje limit pro slovník. chyba – iconv: %s -> %s chyba – iconv_open: %s -> %s chyba – iconv_open: UTF-8 -> %s chyba – chybí proměnná HOME iunkmoahunspell-1.7.2/po/it.po0000664000175000017500000003770214353370167011712 00000000000000# Italian translation for hunspell # Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 # Copyright (C) 2009 The Free Software Foundation, Inc # This file is distributed under the same license as the hunspell package. # # Milo Casagrande , 2007, 2009. msgid "" msgstr "" "Project-Id-Version: hunspell\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:08+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14-dev\n" "X-Launchpad-Export-Date: 2009-08-12 13:40+0000\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "errore - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "errore - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "errore - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Impossibile creare la cartella temporanea %s" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Impossibile aprire il file di input %s" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Impossibile aprire %s.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "errore - variabile HOME mancante\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Riga %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "PROIBITO!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Errore ortografico?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tFile: %s\n" "\n" # (ndt) # to stem -> to have or take origin -> Origine # to uncap -> togliere la 'capitalizzazione' delle parole, le lettere maiuscole #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[SPAZIO] S)ost A)ccet I)nser T)ogli cap O)rig C)hiudi E)sci o ? per l'aiuto\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Quando viene trovata una parola non presente nel dizionario\n" "viene stampata sulla prima riga dello schermo. Se il dizionario\n" "contiene parole simili, vengono elencate con un numero a fianco\n" "di ognuna. È possibile sostituire la parola completamente o\n" "scegliere uno dei suggerimenti.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "I comandi sono:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "R\tSostituisce la parola sbagliata\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Spazio\tAccetta la parola solo per questa volta\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tAccetta la parola per il resto di questa sessione\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tAccetta la parola e la inserisce nel dizionario privato\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" "U\tAccetta la parola e la inserisce in minuscolo nel dizionario privato\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "S\tChiede la parte principale e il modello di una parola e li archivia nel " "dizionario privato;\n" "\tla parte principale viene accettata anche con gli affissi della parola " "modello\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tSostituisce con una delle parole suggerite\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "X\tScrive il resto del file ignorando gli errori e inizia con il file " "successivo\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" "Q\tChiude immediatamente, chiede conferma e lascia il file non modificato\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tSospende il programma; per riavviarlo, usare il comando fg\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tMostra questo aiuto\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Premere spazio per continuare -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "s" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Sostituisci con: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "t" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Impossibile aggiornare il dizionario personale." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "o" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Nuova parole (radice): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Parola modello (una parola simile dal dizionario): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "La parola modello deve essere nel dizionario. Premere un tasto." #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "e" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "c" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Scartare veramente le modifiche? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "s" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Impossibile creare il file temporaneo" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Impossibile aprire il file di output" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Uso: hunspell [OPZIONI]... [FILE]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Controlla l'ortografia di ogni FILE. Senza FILE controlla lo standard " "input.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\tControlla solo il primo campo nelle righe (delimitatore = " "tabulatore)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tInterfaccia pipe di Ispell\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" " --check-url\tControlla gli URL, indirizzi email e i percorsi delle " "directory\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tcontrolla apostrofo tipografico di Unicode\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\tUsa i dizionari d (d2 ecc...)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tMostra i dizionari disponibili\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\tStampa solo le righe o le parole corrette\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tMostra questo aiuto ed esce\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tFormato del file di input HTML\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i cod\tCodifica dell'input\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\tStampa le parole errate\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\tStampa le righe con le parole errate\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tAnalizza le parole del testo in input\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tFormato del file di input nroff/troff\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -n\t\tFormato del file di input ODF/Flat ODF\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p diz\tImposta diz come dizionario personalizzato\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\tavvisa di possibili errori (parole rare)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P password\tImposta la password per i dizionari cifrati\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr "" " -s \t\tRecupera la parte principale (stem) delle parole del testo di " "input\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tsuffissa le parole del testo di input\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tFormato del file di input TeX/LaTeX\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\tStampa il numero della versione\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\tStampa il numero della versione di compatibilità di Ispell\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\tStampa le parole errate (= righe) da una parola o riga di input\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -H\t\tFormato del file di input XML\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Esempio: hunspell -d en_US file.txt # controllo ortografico interattivo\n" " hunspell -i utf-8 file.txt # controlla file codificato in UTF-8\n" " hunspell -l *.odt # stampa parole con errori " "ortografici dai file ODF\n" "\n" " # Correzione rapida dei documenti ODF tramite creazione di " "dizionari personali\n" "\n" " # 1 Crea una lista ridotta da parole con errori ortografici e " "sconosciute:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Elimina parole con errori ortografici dal file con un editor di " "testo.\n" " # 3 Utilizza questo dizionario privato per aggiustare le parole " "eliminate:\n" "\n" " hunspell -p words *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Per segnalare bug: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Copyright © 2002-2014 László Németh. Licenza: MPL/GPL/LGPL.\n" "\n" "Basato sulla libreria Myspell di OpenOffice.org.\n" "Copyright di Myspell © Kevin Hendricks, 2001-2002, Licenza: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Questo è software libero; consultare i sorgenti per le condizioni di copia. " "Non c'è ALCUNA\n" "garanzia, nemmeno quella di COMMERCIABILITÀ o PER UN PARTICOLARE SCOPO, nei " "limiti\n" "permessi dalla legge.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "Percorso di ricerca:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" "Dizionari disponibili (il percorso non è obbligatorio per l'opzione -d):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "Dizionario caricato:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "errore - %s supera il limite del dizionario.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "Impossibile aprire i file di affisso o dizionario (%s).\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "" "Hunspell è stato compilato senza il supporto per l'interfaccia Ncurses.\n" #~ msgid "" #~ "Example: hunspell -d en_US file.txt # interactive spelling\n" #~ " hunspell -l file.txt # print misspelled words\n" #~ " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" #~ "\n" #~ msgstr "" #~ "Esempio: hunspell -d en_US file.txt # controllo ortografico " #~ "interattivo\n" #~ " hunspell -l file.txt # stampa le parole errate\n" #~ " hunspell -i utf-8 file.txt # controlla il file codificato in " #~ "UTF-8\n" #~ "\n" hunspell-1.7.2/po/hu.gmo0000664000175000017500000002440714353370170012046 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}f;|ZC,ApN-3/c:< ;!Z:|%% ,$%Q4w1 #-#4QE.)J%Gp1(+$?dK***&YQ^"Dg"P""#)*#KT##K#3#0$8$$<$%)%I%4&:L&|'=(B((D(m(((6((((()))1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:08+0000 Last-Translator: flekken Language-Team: Hungarian Language: hu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.14-dev %s Állomány: %s -- Továbblépés a szóköz billentyű leütésével -- Billentyűparancsok: Szóköz=tovább C)sere J)ó F)elvesz K)isbetűvel T)ő M)égsem V)ége ?=Súgó --check-apostrophe Unicode tipográfiai aposztróf ellenőrzése --check-url URL-ek, e-mail címek és útvonalak ellenőrzése -1 csak az első mezőt ellenőrzi a sorban (mezőhatároló = tabulátor) -D az elérhető szótárak kilistázása -G kiírja a bemenet helyes szavait vagy sorait -H HTML bemeneti formátum -L kiírja a hibás sorokat -O OpenDocument (ODF vagy Flat ODF) bemeneti formátum -P jelszó Jelszó megadása a titkosított szótárakhoz -S szövegszavak tövezése -X XML bemeneti formátum -a Ispell-szerű csőfelület -d d[,d2,...] a d (d2 stb.) nevű szótárat használja -h, --help kiírja ezt a leírást -i kód bemeneti karakterkódolás -l kiírja a hibás szavakat -m szövegszavak morfológiai elemzése -n nroff/troff bemeneti formátum -p tár a tár nevű saját szótárat használja -r lehetséges hibák (ritka szavak) jelzése -s szövegszavak tövezése -t TeX/LaTeX bemeneti formátum -v, --version kiírja a változat számát -vv kiírja a változat számát Ispell-szerűen -w kiírja a hibás szavakat a soronként egy szavas bemenetből. 0-n Cserélje le a javasolt szavak egyikére. ? Ennek a leírásnak a megjelenítése. J A szó minden előfordulását jónak tekinti a program futása során. ELÉRHETŐ SZÓTÁRAK (az útvonal nem kötelező a -d kapcsolónál): Kilép a módosítások mentése nélkül (i/n)? Hibajelzés: http://hunspell.github.io/ Nem lehet létrehozni átmeneti állománytA tmp könyvtár nem hozható létreNem lehet megnyitni a(z) %s-t. Nem lehet megnyitni a ragozási vagy a szótárállományt (szótár: %s). Nem lehet megnyitni a bemeneti állománytNem lehet megnyitni a kimeneti állománytNem lehet frissíteni a saját szótárat.Az ÁLLOMÁNY(OK) (ennek hiányában a szabványos bemenet) helyesírását ellenőrzi. Példák: hunspell -d en_US szöveg.txt # interaktív helyesírás-ellenőrzés hunspell -i utf-8 szöveg.txt # UTF-8-as karakterkódolású állomány ellenőrzése hunspell -l *.odt # kiírja az ODF dokumentumok hibás szavait # ODF dokumentumok gyors javítása saját szótár létrehozásával # 1. Készítsünk csökkentett szólistát a hibás és ismeretlen szavakból: hunspell -l *.odt | sort | uniq >szavak # 2. Töröljük a hibás szavakat az állományból egy szövegszerkesztővel. # 3. Használjuk ezt saját szótárként a törölt szavak javításához: hunspell -p szavak *.odt TILTOTT!A Hunspell Ncurses felhasználói felület nélkül lett fordítva. F A szót felveszi a saját szótárba, így új indításkor is ismerni fogja. BETÖLTÖTT SZÓTÁR: %s %s %d. sor: %s -> Mintaszó (egy hasonló szótári szó): A mintaszónak szerepelnie kell a szótárban. Nyomjon meg egy billentyűt!Új szó(tő): M Kilép a javítások mentése nélkül, de előtte megerősítést kér. C A hibás szó kicserélése egy megadott szóra. Csere: T Szótő és mintaszó bekérése és saját szótárban való tárolása. A tő felveheti a mintául megadott szó toldalékait is. KERESÉSI ÚTVONAL: %s Szóköz A szó egyszeri átugrása változtatás nélkül. Helyesírási hiba?Ez egy szabad szoftver: lásd a forráskódot a licencfeltételekről. NINCS garancia, még az eladhatóságra vagy valamely célra való alkalmazhatóságra sem. K Mint az előző, de a szót kisbetűsen veszi fel a saját szótárba. Használat: hunspell [KAPCSOLÓ]... [ÁLLOMÁNY]... A hibás, vagy fel nem ismert szavak az első sorban jelennek meg. Amennyiben van javítási javaslat, az számozott lista formájában jelenik meg. A sorszám leütésével választhatunk ki ezek közül egyet, de megadhatunk akár egy új szót is. Részletes leírás a program lehetőségeiről: man hunspell. X Mentse az eddigi javításokat a helyesírási hibák figyelmen kívül hagyásával, és váltson a következő fájlra. ^Z A program felfüggesztése. Újraindítás fg paranccsal. jhiba - %s meghaladja a szótárlimitet. hiba - iconv: %s -> %s hiba - iconv_open: %s -> %s hiba - iconv_open: UTF-8 -> %s hiba - nincs definiálva a HOME környezeti változó fmctkvihunspell-1.7.2/po/pl.gmo0000664000175000017500000002457214353370170012050 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \} _=>E|J% 33%g.@:&8%_*-8$-<,j,-<5/*e(<H/?o&@2'F*n\''81`_ ";">"##=#/Q#K##I#5-$ c$p$%)%I%AY%M&'&'T$(;y((1((!)$()M)l)n)p)r)t)v)x)1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:08+0000 Last-Translator: Piotr Drąg Language-Team: Polish Language: pl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; X-Generator: Weblate 4.14-dev %s Plik: %s — Spacja kontynuuje — Polecenia: [SPACJA] Z)astąp A)kceptuj W)staw M)ałe litery T)emat zaK)ończ wyjD)ź, ? wyświetli pomoc --check-apostrophe sprawdza apostrof typograficzny Unicode --check-url sprawdza adresy URL, e-mail i ścieżki do katalogów -1 sprawdza tylko pierwsze pola w wierszach (rozdzielane tabulacjami) -D wyświetla dostępne słowniki -G wyświetla tylko poprawne słowa lub wiersze -H format HTML pliku wejściowego -L wyświetla wiersze z błędami pisowni -O format OpenDocument (ODF lub Flat ODF) pliku wejściowego -P hasło ustawia hasło dla zaszyfrowanych słowników -S przyrostki tekstu wejściowego -X format XML pliku wejściowego -a interfejs (potok) biblioteki Ispell -d s[,s2,…] używa słowniki s (s2 itd.) -h, --help wyświetla tę pomoc i kończy działanie -i kodowanie kodowanie wejściowe -l wyświetla słowa z błędami pisowni -m analizuje słowa tekstu wejściowego -n format nroff/troff pliku wejściowego -p DICT ustawia słownik DICT użytkownika -r ostrzega o potencjalnych pomyłkach (rzadkie słowa) -s wyodrębnia tematy słów tekstu wejściowego -t format TeX/LaTeX pliku wejściowego -v, --version wyświetla numer wersji -vv wyświetla numer wersji zgodny z biblioteką Ispell -w wyświetla błędy pisowni (= wiersze) z jednego słowa/wiersza. 0-n Zastępuje jednym z proponowanych słów. ? Wyświetla ten ekran pomocy. A Akceptuje słowo na czas tej sesji. DOSTĘPNE SŁOWNIKI (ścieżka nie jest wymagana dla opcji -d): Na pewno odrzucić zmiany? Zgłoszenia błędów: http://hunspell.github.io/ Nie można utworzyć pliku tymczasowegoNie można utworzyć katalogu tymczasowegoNie można otworzyć %s. Nie można otworzyć plików przyrostków lub słowników dla słownika o nazwie „%s”. Nie można otworzyć pliku wejściowegoNie można otworzyć pliku wyjściowegoNie można zaktualizować słownika użytkownika.Sprawdza pisownię każdego PLIKU. Jeśli nie podano PLIKU, to sprawdza standardowe wejście. Przykład: hunspell -d en_US plik.txt # interaktywne sprawdzanie pisowni hunspell -i utf-8 plik.txt # sprawdzanie pliku zakodowanego w UTF-8 hunspell -l *.odt # wyświetlenie błędów pisowni plików ODF # Szybka poprawa dokumentu ODF przez utworzenie słownika użytkownika # 1. Utworzenie zmniejszonej listy z błędami pisowni i nieznanymi słowami: hunspell -l *.odt | sort | uniq >słowa # 2. Usunięcie słów z błędami pisowni z pliku za pomocą edytora tekstu. # 3. Użycie utworzonego słownika użytkownika do poprawy usuniętych słów: hunspell -p słowa *.odt ZABRONIONESkompilowano Hunspell bez interfejsu użytkownika ncurses. W Akceptuje słowo i umieszcza je w słowniku użytkownika. WCZYTANY SŁOWNIK: %s %s %d. wiersz: %s → Słowo wzorcowe (podobne słowo ze słownika): Słowo wzorcowe musi być w słowniku. Proszę nacisnąć dowolny klawisz.Nowe słowo (temat): K Kończy działanie. Pyta o potwierdzenie. Plik nie zostaje zmieniony. Z Całkowicie zastępuje słowo z błędem pisowni. Zamiana na: T Pyta o temat i słowo wzorcowe i umieszcza je w słowniku użytkownika. Temat zostanie przyjęty także z przyrostkami słowa wzorcowego. ŚCIEŻKA WYSZUKIWANIA: %s Spacja Akceptuje słowo tylko tym razem. Błąd pisowni?Niniejszy program jest wolnym oprogramowaniem; proszę zobaczyć kod źródłowy w celu poznania warunków kopiowania. Niniejszy program rozprowadzany jest BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyślnej gwarancji PRZYDATNOŚCI HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH ZASTOSOWAŃ, w zakresie dozwolonym przez prawo. M Akceptuje i dodaje wersję z małymi literami do słownika użytkownika. Użycie: hunspell [OPCJA]… [PLIK]… Po odnalezieniu słowa, którego nie ma w słowniku, jest ono wyświetlane w pierwszym wierszu ekranu. Jeśli słownik zawiera podobne słowa, to zostają one wyświetlone z numerami obok każdego. Można całkowicie zastąpić słowo lub wybrać jedno z proponowanych. D Zapisuje resztę tego pliku, ignorując błędy pisowni, i rozpoczyna nowy plik. ^Z Wstrzymuje program. Polecenie fg uruchamia go ponownie. abłąd — %s przekracza ograniczenie słownika. błąd — iconv: %s → %s błąd — iconv_open: %s → %s błąd — iconv_open: UTF-8 → %s błąd — brak zmiennej HOME wkztmdthunspell-1.7.2/po/kab.po0000664000175000017500000003142514353370167012027 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:09+0000\n" "Last-Translator: Selyan Sliman Amiri \n" "Language-Team: Kabyle \n" "Language: kab\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "tuccḍa- iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "tuccḍa - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "tuccḍa - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "ur izmir ara ad yernu tmp dir" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Ur izmir ara ad d-yeldi inputfile" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Ur uizmir ara ad yeldi %s\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "tuccḍa - amutti HOME ulac-it\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Izirig %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "YEGDEL!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Tuccḍa n tira?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tAfaylu: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[TALLUNT] S)emselsi Q)bel G)er A)meẓyan aẓa(R) E)ǧǧ F)feɣ neɣ ? i tallelt\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Ticki awal yettwafen maca ulac-it deg umawal\n" "ad d-iban deg yizirig amezwaru deg ugdil. Ma yella amawal\n" "igber awalen yettemcabin, ad d-banen s wuṭṭun\n" "ara d-qablen yal awal. Tzemreḍ ad temselsiḍ maṛṛa awal,\n" "neɣ ad tferneḍ yiwen seg wawalen i d-yettwasumren.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Tludna d tigi:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "S\tSemselsi meṛṛa awal ur nuri ara akken iwata.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Tallunt\tQbel awal tikkelt-a kan.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tQbel awal i tɣimit i d-yegran\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tQbel awal, sakin sers-it deg umawal-ik uslig.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "U\tQbel daɣen rnu lqem s usekkil meẓẓiyen ɣer umawal udmawan.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "S\tSuter aẓar akked tneɣruft n wawal sakin sekles-iten deg umawal udmawan.\n" "\tAẓar ad yettwaqbel daɣen s yiwṣilen n tneɣruft n wawal.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tSelselsi s yiwen seg wawalen i d-yettwasuren.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "X\tAru ayen i d-yeqqimen deg ufaylu, zgel tuccḍiqin n tira, sakin bdu afaylu " "i d-iteddun.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "Q\tFfeɣ tura. Ad isuter asentem. Ad yeǧǧ afaylu akken yella.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tSefsex ahil. Ales asenker s tladna fg.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tSken agli-a n tallelt.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Senned ɣef usekkil ilem akken ad tkemmleḍ -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "r" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Semselsi s: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "u" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Ur izmir ara ad ileqqem amawal udmawal." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "s" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Awal amaynut (aẓar): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Taneɣruft n wawal (awal icuban deg umawal): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" "Taneɣruft n wawal issefk ad tili deg umawal. Senned ɣef yiwet tqeffalt!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "x" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "q" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Tebɣiḍ ad tzegleḍ ibeddilen-ik? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "i" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Ur izmir ara ad yernu afaylu askudan" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Ur izmir ara ad d-yeldi afaylu n tuffɣa" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Aseqdec: hunspell [OPTION]... [FILE]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Senqed tira n yal AFAYLU. War AFAYLU, senqed tuffɣa tamewert.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr " -1\t\tsenqed kan urti amezwaru n yal izirig (anabraz = tarigla)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tagrudem n usuddes n Ispell\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr " Senqed tansiwin URL, tansiwin n yimayl akked ikaramen\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr "" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\tsemres imawalen d (d2 etc.)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tSken imawalen yellan\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\tsken-d kan awalen neɣ izirigen imeɣta\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tsken-d talllelt-a sakin ffeɣ\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tamasal n ufaylu n unekcum s HTML\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i enc\tasettengel n unekcum\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\tsken-d awalen ur nuri ara akken iwata\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\tsken-d izirigen s wawalen ur nuri ara akken iwata\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr "" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr "" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr "" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr "" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr "" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr "" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr "" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "" #: src/tools/hunspell.cxx:1895 msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "" hunspell-1.7.2/po/remove-potcdate.sin0000644000175000017500000000066013422074107014525 00000000000000# Sed script that remove the POT-Creation-Date line in the header entry # from a POT file. # # The distinction between the first and the following occurrences of the # pattern is achieved by looking at the hold space. /^"POT-Creation-Date: .*"$/{ x # Test if the hold space is empty. s/P/P/ ta # Yes it was empty. First occurrence. Remove the line. g d bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } hunspell-1.7.2/po/el.po0000664000175000017500000004472214353370167011676 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.7.1\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-09-12 08:20+0000\n" "Last-Translator: Fotios Kolytoumpas \n" "Language-Team: Greek \n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14.1-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "σφάλμα - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "σφάλμα - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "σφάλμα - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Δεν είναι δυνατή η δημιουργία tmp dir" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Δεν είναι δυνατό το άνοιγμα του αρχείου εισόδου" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Δεν είναι δυνατό το άνοιγμα του %s.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "σφάλμα - λείπει η μεταβλητή HOME\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Γραμμή %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "ΑΠΑΓΟΡΕΥΜΈΝΟ!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Ορθογραφικό λάθος?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tΑρχείο: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[ΔΙΆΣΤΗΜΑ] Ν)Αντικατάσταση Α)Αποδοχή Π)Προσθήκη Ζ)Πεζά Θ)Θέμα Κ)Κλείσιμο " "Ξ)Έξοδος ή ? για βοήθεια\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Κάθε φορά που βρίσκεται μια λέξη που δεν υπάρχει στο λεξικό\n" "τυπώνεται στην πρώτη γραμμή της οθόνης. Αν το λεξικό\n" "περιέχει οποιεσδήποτε παρόμοιες λέξεις, παρατίθενται με έναν αριθμό\n" "δίπλα στην καθεμία. Έχετε την επιλογή να αντικαταστήσετε τη λέξη\n" "εντελώς ή να επιλέξετε μία από τις προτεινόμενες λέξεις.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Οι εντολές είναι:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "Ν\tΑντικαταστήστε πλήρως την ανορθόγραφη λέξη.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Διάστημα\tΑποδεχτείτε τη λέξη μόνο αυτή τη φορά.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tΑποδεχτείτε τη λέξη για το υπόλοιπο αυτής της συνεδρίας.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "Π\tΑποδεχτείτε τη λέξη και βάλτε την στο ιδιωτικό σας λεξικό.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" "Ζ)\tΑποδεχτείτε τη λέξη και προσθέστε πεζά γράμματα για αυτήν στο ιδιωτικό " "λεξικό.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "Θ\tΖητήστε ένα θέμα και μια πρότυπη λέξη και αποθηκεύστε τα στο ιδιωτικό " "λεξικό.\n" "\tΤο θέμα θα γίνει δεκτό και με τα επιθέματα της πρότυπης λέξης.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tΑντικαταστήστε με μία από τις προτεινόμενες λέξεις.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "Κ\tΓράψτε το υπόλοιπο αυτού του αρχείου, αγνοώντας τα ορθογραφικά λάθη και " "ξεκινήστε το επόμενο αρχείο.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "Ξ\tΆμεση έξοδος. Ζητάει επιβεβαίωση. Αφήνει το αρχείο αμετάβλητο.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tΑναστολή προγράμματος. Επανεκκίνηση με την εντολή fg.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tΕμφάνιση αυτής της οθόνης βοήθειας.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Πληκτρολογήστε διάστημα για να συνεχίσετε -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "ν" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Αντικατάσταση με: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "ζ" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "π" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Δεν είναι δυνατή η ενημέρωση του προσωπικού λεξικού." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "α" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "θ" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Νέα λέξη (θέμα): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Πρότυπη λέξη (μια παρόμοια λέξη λεξικού): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" "Η πρότυπη λέξη πρέπει να υπάρχει στο λεξικό. Πατήστε οποιοδήποτε πλήκτρο!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "ξ" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "κ" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Είστε σίγουροι ότι θέλετε να απορρίψετε τις αλλαγές σας; " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "ν" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Δεν είναι δυνατή η δημιουργία tempfile" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Δεν είναι δυνατό το άνοιγμα του outputfile" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Χρήση: hunspell [ΕΠΙΛΟΓΉ]... [ΑΡΧΕΊΟ]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Έλεγχος ορθογραφίας κάθε ΑΡΧΕΊΟΥ. Χωρίς ΑΡΧΕΊΟ, έλεγχος της κανονικής " "εισόδου.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\tέλεγχος μόνο του πρώτου πεδίου στις γραμμές (διαχωριστής = Tab)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tΔιεπαφή σωλήνων του Ispell\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" " --check-url\tέλεγχος URLs, διευθύνσεων e-mail και διαδρομών καταλόγων\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tέλεγχος τυπογραφικής αποστρόφου Unicode\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\tχρήση d (d2 κλπ.) λεξικών\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tπροβολή διαθέσιμων λεξικών\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\tεμφάνιση μόνο των σωστών λέξεων ή γραμμών\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tεμφάνιση αυτής της βοήθειας και έξοδος\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tΜορφή αρχείου εισόδου HTML\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i enc\tκωδικοποίηση εισόδου\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\tεμφάνιση ανορθόγραφων λέξεων\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\tεμφάνιση γραμμών με ανορθόγραφες λέξεις\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tανάλυση των λέξεων του αρχείου εισόδου\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tαρχείου εισόδου μορφής nroff/troff\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tαρχείο εισόδου μορφής OpenDocument (ODF ή Flat ODF)\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p dict\tορισμός προσαρμοσμένου λεξικού dict\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\tπροειδοποίηση για πιθανά λάθη (σπάνιες λέξεις)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P password\tορισμός κωδικού πρόσβασης για κρυπτογραφημένα λεξικά\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\tαποθήκευση των λέξεων του κειμένου εισόδου ως θέματα\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tπροσθήκη επιθεμάτων από το αρχείο εισόδου\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tαρχείο εισόδου μορφής TeX/LaTeX\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\tεμφάνιση αριθμού έκδωσης\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\tεμφάνιση συμβατής έκδοσης Ispell\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\tεμφάνιση ανορθόγραφων λέξεων (= γραμμές) από μία λέξη ή γραμμή " "εισόδου.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tαρχείου εισόδου μορφής XML\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Παράδειγμα: hunspell -d en_US file.txt # διαδραστική ορθογραφία\n" " hunspell -i utf-8 file.txt # έλεγχος αρχείου με κωδικοποίηση " "UTF-8\n" " hunspell -l *.odt # εμφάνιση ανορθόγραφων λέξεων " "αρχείων ODF\n" "\n" " # Γρήγορη διόρθωση εγγράφων ODF με τη δημιουργία προσωπικού " "λεξικού\n" "\n" " # 1 Δημιουργήστε μια μειωμένη λίστα από ανορθόγραφες και άγνωστες " "λέξεις:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Διαγράψτε τις ανορθόγραφες λέξεις του αρχείου με έναν " "επεξεργαστή κειμένου.\n" " # 3 Χρησιμοποιήστε αυτό το προσωπικό λεξικό για να διορθώσετε τις " "διαγραμμένες λέξεις:\n" "\n" " hunspell -p words *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Αναφορές σφαλμάτων: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Πνευματικά δικαιώματα (C) 2002-2014 László Németh. Άδεια χρήσης: MPL/GPL/" "LGPL.\n" "\n" "Βασισμένο στην βιβλιοθήκη του OpenOffice.org Myspell.\n" "Πνευματικά δικαιώματα (C) του Myspell Kevin Hendricks, 2001-2002, Άδεια " "χρήσης: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Αυτό είναι ελεύθερο λογισμικό; δείτε την πηγή για τους όρους αντιγραφής. " "ΔΕΝ υπάρχει ΚΑΜΊΑ\n" "εγγύηση; ούτε καν για την ΕΜΠΟΡΕΥΣΙΜΌΤΗΤΑ ή την ΚΑΤΑΛΛΗΛΌΤΗΤΑ ΓΙΑ ΈΝΑΝ " "ΣΥΓΚΕΚΡΙΜΈΝΟ ΣΚΟΠΌ,\n" "στο βαθμό που επιτρέπεται από το νόμο.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "ΔΙΑΔΡΟΜΉ ΑΝΑΖΉΤΗΣΗΣ:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" "ΔΙΑΘΈΣΙΜΑ ΛΕΞΙΚΆ (η διαδρομή δεν είναι υποχρεωτική για την επιλογή -d):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "ΦΟΡΤΩΜΈΝΟ ΛΕΞΙΚΌ:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "σφάλμα - %s υπερβαίνει το όριο του λεξικού.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" "Δεν είναι δυνατό το άνοιγμα αρχείων επιθέματος ή λεξικού, για το λεξικό με " "το όνομα \"%s\".\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Το Hunspell έχει μεταγλωττιστεί χωρίς τη διεπαφή χρήστη Ncurses.\n" hunspell-1.7.2/po/eo.po0000664000175000017500000003556214353370167011703 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:09+0000\n" "Last-Translator: phlostically \n" "Language-Team: Esperanto \n" "Language: eo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "eraro - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "eraro - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "eraro - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Ne eblas krei portempan dosierujon" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Ne povas malfermi enigan dosieron" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Ne povas malfermi %s.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "eraro - mankas variablo HOME\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Linio %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "FORBARITA!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Ortografia eraro?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tDosiero: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[SPACETO] aN)stataŭigi A)kcepti E)nmeti M)inuskligi T)igo ĉe(S)i e(L)iri " "aŭ ? por helpo\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Kiam ajn troviĝas vorto ne en la vortaro,\n" "ĝi montriĝas en la unua linio de la ekrano. Se la vortaro\n" "enhavas similajn vortojn, ili montriĝas numerite.\n" "Vi povas aŭ tute anstataŭigi la vorton,\n" "aŭ elekti unu el la proponitaj vortoj.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Jen la komandoj:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "N\tAnstataŭigi la vorton tute.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Spaceto\tAkceptu la vorton unufoje.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tAkcepti la vorton dum la resto de ĉi tiu sesio.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "E\tAkcepti la vorton, kaj enmeti ĝin en vian privatan vortaron.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "M\tAkcepti kaj enmeti minuskligitan version en privatan vortaron.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "T\tDemandi por tigo kaj modela vorto kaj konservi ilin en la privata " "vortaro.\n" "\tLa tigo akceptiĝos ankaŭ kun la afiksoj de la modela vorto.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tAnstataŭigi per unu el la sugestataj vortoj.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "L\tSkribi la reston de ĉi tiu dosiero, ignorante ortografiajn erarojn, kaj " "komenci la sekvan dosieron.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "S\tTuj ĉesi. Demandos por konfirmo. Lasos la dosieron neŝanĝita.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tSuspendi programon. Rekomencu per komando fg.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tMontri ĉi tiun helpekranon.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Klavu spaceton por daŭrigi -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "n" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Anstataŭigi per: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "m" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "e" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Ne povas ĝisdatigi personan vortaron." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "t" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Nova vorto (tigo): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Modela vorto (simila vorto en vortaro): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "Modela vorto devas esti en la vortaro. Premu ajnan klavon!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "l" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "s" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Ĉu vi certas, ke vi volas forĵeti viajn ŝanĝojn? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "j" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Ne eblas krei portempan dosieron" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Ne eblas malfermi eligan dosieron" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Uzado: hunspell [OPCIO] ... [DOSIERO] ...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Kontrolu ortografion de ĉiu DOSIERO. Sen DOSIERO, kontrolu ĉefenigujon.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\tkontrolu nur la unuan kampon en linioj (apartigilo = tabeligilo)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tdukta interfaco de Ispell\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" " --check-url\tkontroli retadresojn, retpoŝtajn adresojn, kaj " "dosierindikojn\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tkontroli Unikodan tipografian apostrofon\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\tuzi vortarojn d (d2 ktp.)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tmontri haveblajn vortarojn\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\tmontri nur ĝustajn vortojn aŭ liniojn\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tmontri ĉi tiun helpon kaj eliri\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\teniga dosierformo HTML\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i enk\teniga enkodigo\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\tmontri misliterumitajn vortojn\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\tmontri liniojn kun misliterumitaj vortoj\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tanalizi la vortojn de la eniga teksto\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\teniga dosierformo nroff/troff\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\teniga dosierformo OpenDocument (ODF aŭ Plata ODF)\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p vrtr\tuzi vrtr kiel laŭmendan vortaron\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\taverti pri eblaj eraroj (maloftaj vortoj)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P pasvorto\tuzi pasvorton por ĉifritaj vortaroj\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\ttigigi la vortojn de la eniga teksto\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tsufiksigi vortojn de la eniga teksto\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\teniga dosierformo TeX/LaTeX\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\tmontri version\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\tmontri Ispell-kongruan version\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\tmontri misliterumitajn vortojn (= liniojn) el unu vorto/linia " "enigo.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\teniga dosierformo XML\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Ekzemplo: hunspell -d eo dosiero.txt # interaga korektado\n" " hunspell -i utf-8 file.txt # kontrolu UTF-8-enkodigitan " "dosieron\n" " hunspell -l *.odt # montru misliterumitajn vortojn en " "ODF-dosieroj\n" "\n" " # Rapida riparo de ODF-dokumentoj per kreo de persona vortaro\n" "\n" " # 1 Faru reduktitan liston el misliterumitaj kaj nekonataj vortoj:\n" "\n" " hunspell -l *.odt | sort | uniq >vortoj\n" "\n" " # 2 Forigu misliterumitajn vortojn en la dosiero per " "tekstredaktilo.\n" " # 3 Uzu ĉi tiun personan vortaron por koreki la forigitajn " "vortojn:\n" "\n" " hunspell -p vortoj *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Cimraportoj: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Kopirajto (C) 2002-2014 László Németh. Permesilo: MPL/GPL/LGPL.\n" "\n" "Surbaze de la biblioteko Myspell de OpenOffice.org.\n" "Kopirajto de Myspell (C) Kevin Hendricks, 2001-2002, Permesilo: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Ĉi tiu estas libera programaro; vidu la fonton por kopiaj kondiĉoj. NE " "ekzistas\n" "garantio; eĉ ne por VENDEBLO aŭ TAŬGECO POR SPECIFA CELO,\n" "laŭeble laŭ la leĝo.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "SERĈA DOSIERINDIKO:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "HAVEBLAJ VORTAROJ (dosierindiko ne estas deviga por la opcio -d):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "ŜARGIS VORTARON:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "eraro - %s superas vortaran limon.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" "Ne eblas malfermi afiksajn aŭ vortarajn dosierojn por vortaro nomita \"%s" "\".\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hunspell estis tradukita sen fasado Ncurses.\n" hunspell-1.7.2/po/tt.po0000664000175000017500000002503514353370167011721 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:09+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Tatar \n" "Language: tt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "хата - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "хата - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "хата - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "" #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "" #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "" #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "" #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "" #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "" #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr "" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr "" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr "" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr "" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr "" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr "" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr "" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr "" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr "" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr "" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr "" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr "" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr "" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "" #: src/tools/hunspell.cxx:1895 msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "" hunspell-1.7.2/po/zh_Hans.po0000664000175000017500000003475014353370167012670 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.7.1\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-11-12 13:49+0000\n" "Last-Translator: inRm3D \n" "Language-Team: Chinese (Simplified) \n" "Language: zh_Hans\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 4.15-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "错误 - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "错误 - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "错误 - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "无法创建 tmp 目录" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "无法打开输入文件" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "无法打开 %s。\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "错误 - 缺少HOME变量\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "行 %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "禁止!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "拼写错误?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\t文件: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[空格] R)替换 A)接受 I)插入 U)小写 S)词根 Q)退出 X)退出或?寻求帮助\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "每当发现字典里没有的单词时 \n" "它印在屏幕的第一行上。如果字典 \n" "包含任何类似的单词,它们都用数字列出 \n" "在每一个旁边, 你可以选择替换这个词 \n" "完全的,或者选择一个建议的词。\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "命令是:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "R\t将拼写错误的单词完全替换。\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Space\t只接受这次的词。\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\t在本次会话的剩余时间里接受这个词。\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\t接受这个词,并把它放在你的私人字典里。\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "U\t接受并将小写版本加入私人字典。\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "S\t询问一个词干和一个示范词,并将它们储存在私人词典中。\n" "\t该词干也将被接受,并带有示范词的词缀。\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\t用建议中的一个词代替。\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "X\t写下这个文件的其余部分,忽略错误的拼写,并开始下一个文件。\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "Q\t立即退出。要求确认。保留文件不动。\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\t暂停程序。用fg命令重新启动。\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\t显示这个帮助界面。\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- 输入空格以继续 -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "r" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "替换为: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "u" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "无法更新个人词典。" #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "s" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "新词(词干): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "示范词(一个类似的字典词) " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "示范词必须在字典中。按任何键!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "x" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "q" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "您确定要丢弃您的更改吗? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "y" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "无法创建临时文件" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "无法打开输出文件" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "用法:hunspell [选项]... [文件]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "检查每个文件的拼写。如果没有文件,检查标准输入。\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr " -1\t\t只检查行中的第一个字段(分隔符 = 制表器)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tIspell 的管道接口\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr " --check-url\t检查 URL、电子邮件地址和目录路径\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\t检查 Unicode 字体撇号\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\t使用 d (d2等)字典\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\t显示可用的字典\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\t只打印正确的单词或行\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\t显示此帮助并退出\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tHTML 输入文件格式\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i enc\t输入编码\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\t打印拼写错误的单词\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\t打印拼错单词的行\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\t分析输入文本的单词\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tnroff/troff 输入文件格式\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tOpenDocument (ODF 或平面 ODF)输入文件格式\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p dict\t设置 dict 自定义字典\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\t警告潜在的错误(罕见词)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P password\t为加密字典设置密码\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\t对输入的文字进行词根处理\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\t输入文本的后缀词\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tTeX/LaTeX 输入文件格式\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\t打印版本号\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\t打印 Ispell 兼容的版本号\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr " -w\t\t从一个单词/行输入中打印拼写错误的单词(= 行)。\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tXML 输入文件格式\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "例子: hunspell -d en_US file.txt # 交互式拼写\n" " hunspell -i utf-8 file.txt # 检查 UTF-8 编码文件\n" " hunspell -l *.odt # 打印 ODF 文件的拼写错误的单词\n" "\n" " # 通过创建个人字典快速修复 ODF 文档\n" "\n" " # 1 从拼写错误和未知的单词中列出一个简化的列表:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 通过文本编辑器删除文件中拼写错误的单词。\n" " # 3 使用此个人词典修复已删除的单词:\n" "\n" " hunspell -p words *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "错误报告:http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "版权所有 (C) 2002-2014 László Németh。许可证:MPL/GPL/LGPL。\n" "\n" "基于 OpenOffice.org 的 Myspell 库。\n" "Myspell 的版权 (C) Kevin Hendricks,2001-2002,许可证:BSD。\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "这是免费软件;复制条件请见源码。 不存在\n" "保证;甚至不保证适销对路或适合某一特定用途。\n" "在法律允许的范围内。\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "搜索路径:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "可用的字典(路径对于 -d 选项不是必需的):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "加载字典:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "错误 - %s 超出字典限制。\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "无法打开名为“%s”的字典的词缀或字典文件。\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hunspell 已在没有 Ncurses 用户界面的情况下编译。\n" hunspell-1.7.2/po/pl.po0000664000175000017500000003665214353370167011714 00000000000000# Polish translation for hunspell. # Copyright © 2017 the hunspell authors. # This file is distributed under the same license as the hunspell package. # Piotr Drąg , 2017. msgid "" msgstr "" "Project-Id-Version: hunspell\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:08+0000\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "błąd — iconv_open: %s → %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "błąd — iconv: %s → %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "błąd — iconv_open: UTF-8 → %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Nie można utworzyć katalogu tymczasowego" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Nie można otworzyć pliku wejściowego" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Nie można otworzyć %s.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "błąd — brak zmiennej HOME\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "%d. wiersz: %s → " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "ZABRONIONE" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Błąd pisowni?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tPlik: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[SPACJA] Z)astąp A)kceptuj W)staw M)ałe litery T)emat zaK)ończ wyjD)ź, ? " "wyświetli pomoc\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Po odnalezieniu słowa, którego nie ma w słowniku, jest ono\n" "wyświetlane w pierwszym wierszu ekranu. Jeśli słownik zawiera\n" "podobne słowa, to zostają one wyświetlone z numerami obok każdego.\n" "Można całkowicie zastąpić słowo lub wybrać jedno z proponowanych.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Polecenia:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "Z\tCałkowicie zastępuje słowo z błędem pisowni.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Spacja\tAkceptuje słowo tylko tym razem.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tAkceptuje słowo na czas tej sesji.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "W\tAkceptuje słowo i umieszcza je w słowniku użytkownika.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" "M\tAkceptuje i dodaje wersję z małymi literami do słownika użytkownika.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "T\tPyta o temat i słowo wzorcowe i umieszcza je w słowniku użytkownika.\n" "\tTemat zostanie przyjęty także z przyrostkami słowa wzorcowego.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tZastępuje jednym z proponowanych słów.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "D\tZapisuje resztę tego pliku, ignorując błędy pisowni, i rozpoczyna nowy " "plik.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" "K\tKończy działanie. Pyta o potwierdzenie. Plik nie zostaje zmieniony.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tWstrzymuje program. Polecenie fg uruchamia go ponownie.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tWyświetla ten ekran pomocy.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "— Spacja kontynuuje — \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "z" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Zamiana na: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "m" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "w" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Nie można zaktualizować słownika użytkownika." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "t" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Nowe słowo (temat): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Słowo wzorcowe (podobne słowo ze słownika): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "Słowo wzorcowe musi być w słowniku. Proszę nacisnąć dowolny klawisz." #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "d" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "k" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Na pewno odrzucić zmiany? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "t" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Nie można utworzyć pliku tymczasowego" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Nie można otworzyć pliku wyjściowego" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Użycie: hunspell [OPCJA]… [PLIK]…\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Sprawdza pisownię każdego PLIKU. Jeśli nie podano PLIKU, to sprawdza " "standardowe wejście.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\tsprawdza tylko pierwsze pola w wierszach (rozdzielane tabulacjami)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tinterfejs (potok) biblioteki Ispell\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr " --check-url\tsprawdza adresy URL, e-mail i ścieżki do katalogów\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tsprawdza apostrof typograficzny Unicode\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d s[,s2,…]\tużywa słowniki s (s2 itd.)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\twyświetla dostępne słowniki\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\twyświetla tylko poprawne słowa lub wiersze\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\twyświetla tę pomoc i kończy działanie\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tformat HTML pliku wejściowego\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i kodowanie\tkodowanie wejściowe\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\twyświetla słowa z błędami pisowni\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\twyświetla wiersze z błędami pisowni\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tanalizuje słowa tekstu wejściowego\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tformat nroff/troff pliku wejściowego\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tformat OpenDocument (ODF lub Flat ODF) pliku wejściowego\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p DICT\tustawia słownik DICT użytkownika\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\tostrzega o potencjalnych pomyłkach (rzadkie słowa)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P hasło\tustawia hasło dla zaszyfrowanych słowników\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\twyodrębnia tematy słów tekstu wejściowego\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tprzyrostki tekstu wejściowego\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tformat TeX/LaTeX pliku wejściowego\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\twyświetla numer wersji\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\twyświetla numer wersji zgodny z biblioteką Ispell\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr " -w\t\twyświetla błędy pisowni (= wiersze) z jednego słowa/wiersza.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tformat XML pliku wejściowego\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Przykład: hunspell -d en_US plik.txt # interaktywne sprawdzanie pisowni\n" " hunspell -i utf-8 plik.txt # sprawdzanie pliku zakodowanego " "w UTF-8\n" " hunspell -l *.odt # wyświetlenie błędów pisowni plików " "ODF\n" "\n" " # Szybka poprawa dokumentu ODF przez utworzenie słownika " "użytkownika\n" "\n" " # 1. Utworzenie zmniejszonej listy z błędami pisowni i nieznanymi " "słowami:\n" "\n" " hunspell -l *.odt | sort | uniq >słowa\n" "\n" " # 2. Usunięcie słów z błędami pisowni z pliku za pomocą edytora " "tekstu.\n" " # 3. Użycie utworzonego słownika użytkownika do poprawy usuniętych " "słów:\n" "\n" " hunspell -p słowa *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Zgłoszenia błędów: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Copyright © 2002-2014 László Németh. Licencja: MPL/GPL/LGPL.\n" "\n" "Na podstawie biblioteki Myspell projektu OpenOffice.org.\n" "Myspell — copyright © 2001-2002 Kevin Hendricks. Licencja: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Niniejszy program jest wolnym oprogramowaniem; proszę zobaczyć kod źródłowy\n" "w celu poznania warunków kopiowania. Niniejszy program rozprowadzany jest\n" "BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyślnej gwarancji PRZYDATNOŚCI\n" "HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH ZASTOSOWAŃ, w zakresie\n" "dozwolonym przez prawo.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "ŚCIEŻKA WYSZUKIWANIA:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "DOSTĘPNE SŁOWNIKI (ścieżka nie jest wymagana dla opcji -d):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "WCZYTANY SŁOWNIK:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "błąd — %s przekracza ograniczenie słownika.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" "Nie można otworzyć plików przyrostków lub słowników dla słownika o nazwie " "„%s”.\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Skompilowano Hunspell bez interfejsu użytkownika ncurses.\n" hunspell-1.7.2/po/de_CH.gmo0000664000175000017500000000102014353370170012356 00000000000000$,89Project-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:08+0000 Last-Translator: Anonymous Language-Team: German (Switzerland) Language: de_CH MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.14-dev hunspell-1.7.2/po/fr.gmo0000664000175000017500000002507714353370170012045 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}t*_T+OW,(9U+;BH:-(*7,=j+-/9/N7~-/AdV+1O827*;mT(7 XA  @#@K#A###1$H2${$Q$5$%,%%2%&*&P3'0''g(:=)x)4z)))$)!*1*3*5*7*9*;*=*1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:08+0000 Last-Translator: Olivier Humbert Language-Team: French Language: fr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n > 1; X-Generator: Weblate 4.14-dev %s Fichier : %s -- Appuyez sur Espace pour continuer -- Les commandes sont : [ESPACE] R)emplacer A)ccepter I)nsérer M)inuscule ra(C)ine Q)uitter S)ortir ou ? pour l'aide --check-apostrophe vérifier la présence d'apostrophes typographiques en unicode --check-url vérifier les URL, les adresses de courriels et les répertoires -1 vérifier uniquement le premier champ de chaque ligne (délimiteur = tabulation) -D montrer les dictionnaires disponibles -G afficher seulement les mots ou les lignes corrects -H format de fichier en entrée en HTML -L afficher les lignes avec des mots mal orthographiés -O format de fichier OpenDocument (ODF ou Flat ODF) en entrée -P password indiquer le mot de passe pour les dictionnaires chiffrés -S suffixer les mots du texte en entrée -X format de fichier XML en entrée -a l'interface de combinaison d'Ispell -d d[,d2,...] utiliser les dictionnaires d (d2 etc.) -h, --help afficher cette aide et quitter -i enc encodage de l'entrée -l afficher les mots mal orthographiés -m analyser les mots du texte en entrée -n format de fichier nroff/troff en entrée -p dict utiliser dict comme dictionnaire personnalisé -r avertir d'erreurs possibles (mots rares) -s renvoyer la racine des mots du texte en entrée -t format de fichier TeX/LaTeX en entrée -v, --version afficher le numéro de version -vv afficher le numéro de version de compatibilité d'Ispell -w afficher les mots (= lignes) mal orthographiés à partir d'un mot ou d'une ligne en entrée. 0-n Replacer par l'un des mots suggérés. ? Afficher cet écran d'aide. A Accepter le mot pour le reste de cette session DICTIONNAIRES DISPONIBLES (le chemin n'est pas nécessaire pour l'option -d) : Voulez-vous vraiment abandonner vos changements ? Signalez les anomalies sur : http://hunspell.github.io Impossible de créer un fichier temporaireImpossible de créer tmp dirImpossible d'ouvrir %s. Impossible d'ouvrir les fichiers affix ou les fichiers de dictionnaire pour le dictionnaire nommé « %s ». Impossible d'ouvrir inputfileImpossible d'ouvrir le fichier de sortieImpossible de mettre à jour le dictionnaire personnel.Vérifier l'orthographe de chaque FICHIER. Sans FICHIER, vérifier l'entrée standard. Exemple : hunspell -d en_US file.txt # vérification orthographique interactive hunspell -i utf-8 file.txt # vérification d'un fichier encodé en UTF-8 hunspell -l *.odt # affichage des mots mal orthographiés de fichiers ODF # Correction rapide de documents ODF en créant un dictionnaire personnel # 1 Créez une liste réduite des mots mal orthographiés et inconnus : hunspell -l *.odt | sort | uniq >words # 2 supprimez les mots mal orthographiés du fichier avec un éditeur de texte. # 3 utilisez ce dictionnaire pour corriger les mots supprimés : hunspell -p words *.odt INTERDIT !Hunspell a été compilé sans l'interface utilisateur Ncurses. I Accepter le mot, et l'ajouter à votre dictionnaire personnel. DICTIONNAIRES CHARGÉS : %s %s Ligne %d : %s -> Mot modèle (un mot du dictionnaire similaire) : Le mot modèle doit être dans le dictionnaire. Appuyez sur une touche !Nouveau mot (racine) : S Quitter immédiatement. Demander confirmation. Laisse les fichiers inchangés. R Remplacer intégralement le mot mal orthographié. Remplacer par : C Demander une racine et un mot modèle et les enregistre dans le dictionnaire personnel. La racine sera acceptée ainsi que les affixes du mot modèle. CHEMIN DE RECHERCHE : %s Espace Accepter le mot pour cette fois seulement. Faute d'orthographe ?Ce programme est un logiciel libre ; voir les sources pour les conditions liés au droit d'auteur. Il n'y a AUCUNE GARANTIE ; pas même la garantie implicite de COMMERCIALISABILITÉ ni d’ADÉQUATION À UN OBJECTIF PARTICULIER, dans la mesure permise par la loi. M Accepter et ajouter une version en minuscule à votre dictionnaire personnel. Utilisation : hunspell [OPTION]... [FICHIER]... Lorsqu'un mot trouvé n'est pas dans le dictionnaire il est affiché sur la première ligne de l'écran. Si le dictionnaire contient des mots similaires, ils sont listés avec un numéro en face de chacun. Vous pouvez remplacer le mot complètement, ou choisir l'un des mots suggérés. Q Écrire le reste du fichier, en ignorant les fautes d'orthographe, et commencer le prochain fichier. ^Z Suspend le programme. Redémarrez avec la commande fg. aerreur — %s dépasse la limite d'un dictionnaire. erreur - iconv : %s -> %s erreur - iconv_open : %s -> %s erreur - iconv_open : UTF-8 -> %s 1 erreur - variable HOME manquante isrcuqohunspell-1.7.2/po/is.po0000664000175000017500000002677714353370167011723 00000000000000# Sveinn í Felli , 2018. msgid "" msgstr "" "Project-Id-Version: Icelandic (Hunspell)\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:09+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Icelandic \n" "Language: is\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n % 10 != 1 || n % 100 == 11;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "villa - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "villa - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "villa - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Get ekki opnað %s.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "villa - vantar HOME-breytu\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Lína %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "BANNAÐ!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Stafsetningarvilla?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tSkrá: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[SPACE] s(K)ipta-út s(A)mþykkja setja-(I)nn L)ágstaf S)tofn H)ætta (X)-loka " "eða á ? fyrir aðstoð\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Mögulegar skipanir eru:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "K\tSkipta alveg út misritaða orðinu.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Bil\tSamþykkja orðið einungis í þetta skipti.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tSamþykkja orðið til loka setunnar.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tSamþykkja orðið, og setja það í einkaorðasafnið þitt.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" "L\tSamþykkja orðið, og setja lágstafa útgáfu þess í einkaorðasafnið þitt.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tSkipta út með einni af tillögunum um orð.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "X\tSkrifa afganginn af skránni, hunsar stafsetningarvillur, og byrjar á " "næstu skrá.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "H\tHætta strax. Spyr um staðfestingu. Breytir ekki skránni.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tBirtir þennan hjálparskjá.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Ýttu á bilslá til að halda áfram -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "k" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Skipta út með: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "l" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Get ekki uppfært einkaorðasafn." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "s" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Nýtt orð (stofn): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "" #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "x" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "h" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Ertu viss um að þú viljir henda breytingunum þínum? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "j" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Notkun: hunspell [VALKOSTUR]... [SKRÁ]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr "" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr "" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr "" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tbirtir þessa hjálp og hættir\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr "" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr "" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr "" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr "" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr "" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr "" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr "" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr "" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr "" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "" #: src/tools/hunspell.cxx:1895 msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "LEITARSLÓÐ:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "" hunspell-1.7.2/po/Makefile.in.in0000644000175000017500000003744214167247117013410 00000000000000# Makefile for PO directory in any package using GNU gettext. # Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU General Public # License but which still want to provide support for the GNU gettext # functionality. # Please note that the actual code of GNU gettext is covered by the GNU # General Public License and is *not* in the public domain. # # Origin: gettext-0.18 GETTEXT_MACRO_VERSION = 0.18 PACKAGE = @PACKAGE@ VERSION = @VERSION@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ SHELL = /bin/sh @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datarootdir = @datarootdir@ datadir = @datadir@ localedir = @localedir@ gettextsrcdir = $(datadir)/gettext/po INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ # We use $(mkdir_p). # In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as # "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, # @install_sh@ does not start with $(SHELL), so we add it. # In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined # either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake # versions, $(mkinstalldirs) and $(install_sh) are unused. mkinstalldirs = $(SHELL) @install_sh@ -d install_sh = $(SHELL) @install_sh@ MKDIR_P = @MKDIR_P@ mkdir_p = @mkdir_p@ GMSGFMT_ = @GMSGFMT@ GMSGFMT_no = @GMSGFMT@ GMSGFMT_yes = @GMSGFMT_015@ GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) MSGFMT_ = @MSGFMT@ MSGFMT_no = @MSGFMT@ MSGFMT_yes = @MSGFMT_015@ MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) XGETTEXT_ = @XGETTEXT@ XGETTEXT_no = @XGETTEXT@ XGETTEXT_yes = @XGETTEXT_015@ XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) MSGMERGE = msgmerge MSGMERGE_UPDATE = @MSGMERGE@ --update MSGINIT = msginit MSGCONV = msgconv MSGFILTER = msgfilter POFILES = @POFILES@ GMOFILES = @GMOFILES@ UPDATEPOFILES = @UPDATEPOFILES@ DUMMYPOFILES = @DUMMYPOFILES@ DISTFILES.common = Makefile.in.in remove-potcdate.sin \ $(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ $(POFILES) $(GMOFILES) \ $(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) POTFILES = \ CATALOGS = @CATALOGS@ # Makevars gets inserted here. (Don't remove this line!) .SUFFIXES: .SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update .po.mo: @echo "$(MSGFMT) -c -o $@ $<"; \ $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ .po.gmo: @lang=`echo $* | sed -e 's,.*/,,'`; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo .sin.sed: sed -e '/^#/d' $< > t-$@ mv t-$@ $@ all: check-macro-version all-@USE_NLS@ all-yes: stamp-po all-no: # Ensure that the gettext macros and this Makefile.in.in are in sync. check-macro-version: @test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \ || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \ exit 1; \ } # $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no # internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because # we don't want to bother translators with empty POT files). We assume that # LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. # In this case, stamp-po is a nop (i.e. a phony target). # stamp-po is a timestamp denoting the last time at which the CATALOGS have # been loosely updated. Its purpose is that when a developer or translator # checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, # "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent # invocations of "make" will do nothing. This timestamp would not be necessary # if updating the $(CATALOGS) would always touch them; however, the rule for # $(POFILES) has been designed to not touch files that don't need to be # changed. stamp-po: $(srcdir)/$(DOMAIN).pot test ! -f $(srcdir)/$(DOMAIN).pot || \ test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) @test ! -f $(srcdir)/$(DOMAIN).pot || { \ echo "touch stamp-po" && \ echo timestamp > stamp-poT && \ mv stamp-poT stamp-po; \ } # Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', # otherwise packages like GCC can not be built if only parts of the source # have been downloaded. # This target rebuilds $(DOMAIN).pot; it is an expensive operation. # Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \ package_gnu='GNU '; \ else \ package_gnu=''; \ fi; \ if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ else \ msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ fi; \ case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --msgid-bugs-address="$$msgid_bugs_address" \ ;; \ *) \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --package-name="$${package_gnu}@PACKAGE@" \ --package-version='@VERSION@' \ --msgid-bugs-address="$$msgid_bugs_address" \ ;; \ esac test ! -f $(DOMAIN).po || { \ if test -f $(srcdir)/$(DOMAIN).pot; then \ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ else \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ else \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ } # This rule has no dependencies: we don't need to update $(DOMAIN).pot at # every "make" invocation, only create it when it is missing. # Only "make $(DOMAIN).pot-update" or "make dist" will force an update. $(srcdir)/$(DOMAIN).pot: $(MAKE) $(DOMAIN).pot-update # This target rebuilds a PO file if $(DOMAIN).pot has changed. # Note that a PO file is not touched if it doesn't need to be changed. $(POFILES): $(srcdir)/$(DOMAIN).pot @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ if test -f "$(srcdir)/$${lang}.po"; then \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \ cd $(srcdir) \ && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \ *) \ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \ esac; \ }; \ else \ $(MAKE) $${lang}.po-create; \ fi install: install-exec install-data install-exec: install-data: install-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ for file in $(DISTFILES.common) Makevars.template; do \ $(INSTALL_DATA) $(srcdir)/$$file \ $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ for file in Makevars; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi install-data-no: all install-data-yes: all @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $(DESTDIR)$$dir; \ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ fi; \ done; \ done install-strip: install installdirs: installdirs-exec installdirs-data installdirs-exec: installdirs-data: installdirs-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ else \ : ; \ fi installdirs-data-no: installdirs-data-yes: @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $(DESTDIR)$$dir; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ fi; \ done; \ done # Define this as empty until I found a useful application. installcheck: uninstall: uninstall-exec uninstall-data uninstall-exec: uninstall-data: uninstall-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ for file in $(DISTFILES.common) Makevars.template; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi uninstall-data-no: uninstall-data-yes: catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ done; \ done check: all info dvi ps pdf html tags TAGS ctags CTAGS ID: mostlyclean: rm -f remove-potcdate.sed rm -f stamp-poT rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po rm -fr *.o clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES *.mo maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f stamp-po $(GMOFILES) distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: $(MAKE) update-po @$(MAKE) dist2 # This is a separate target because 'update-po' must be executed before. dist2: stamp-po $(DISTFILES) dists="$(DISTFILES)"; \ if test "$(PACKAGE)" = "gettext-tools"; then \ dists="$$dists Makevars.template"; \ fi; \ if test -f $(srcdir)/$(DOMAIN).pot; then \ dists="$$dists $(DOMAIN).pot stamp-po"; \ fi; \ if test -f $(srcdir)/ChangeLog; then \ dists="$$dists ChangeLog"; \ fi; \ for i in 0 1 2 3 4 5 6 7 8 9; do \ if test -f $(srcdir)/ChangeLog.$$i; then \ dists="$$dists ChangeLog.$$i"; \ fi; \ done; \ if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ for file in $$dists; do \ if test -f $$file; then \ cp -p $$file $(distdir) || exit 1; \ else \ cp -p $(srcdir)/$$file $(distdir) || exit 1; \ fi; \ done update-po: Makefile $(MAKE) $(DOMAIN).pot-update test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) $(MAKE) update-gmo # General rule for creating PO files. .nop.po-create: @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ exit 1 # General rule for updating PO files. .nop.po-update: @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ cd $(srcdir); \ if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ *) \ $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ esac; \ }; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi $(DUMMYPOFILES): update-gmo: Makefile $(GMOFILES) @: # Recreate Makefile by invoking config.status. Explicitly invoke the shell, # because execution permission bits may not work on the current file system. # Use @SHELL@, which is the shell determined by autoconf for the use by its # scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient. Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ cd $(top_builddir) \ && @SHELL@ ./config.status $(subdir)/$@.in po-directories force: # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: hunspell-1.7.2/po/zh_Hant.gmo0000664000175000017500000000250214353370170013015 00000000000000xy2 ""EGfhjlnpL"^8:<>@  %s File: %s Are you sure you want to throw away your changes? Can't create tempfileCan't create tmp dirCan't open %s. Can't open inputfileCan't open outputfileCannot update personal dictionary.aerror - missing HOME variable irsuyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-11-02 08:35+0000 Last-Translator: ifurther Language-Team: Chinese (Traditional) Language: zh_Hant MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Weblate 4.14.2-dev %s 檔案: %s 你確定要放棄你的更改嗎 無法創建臨時文件無法建立暫存資料夾無法開啟 %s 無法開啟輸入的檔案無法打開輸出文件無法更新個人詞典。a錯誤 - 缺少HOME的變數 irsuyhunspell-1.7.2/po/Makevars0000644000175000017500000000650213422074107012411 00000000000000# Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = $(PACKAGE) # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ --from-code=UTF-8 # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding # package. (Note that the msgstr strings, extracted from the package's # sources, belong to the copyright holder of the package.) Translators are # expected to transfer the copyright for their translations to this person # or entity, or to disclaim their copyright. The empty string stands for # the public domain; in this case the translators are expected to disclaim # their copyright. COPYRIGHT_HOLDER = Free Software Foundation, Inc. # This tells whether or not to prepend "GNU " prefix to the package # name that gets inserted into the header of the $(DOMAIN).pot file. # Possible values are "yes", "no", or empty. If it is empty, try to # detect it automatically by scanning the files in $(top_srcdir) for # "GNU packagename" string. PACKAGE_GNU = # This is the email address or URL to which the translators shall report # bugs in the untranslated strings: # - Strings which are not entire sentences, see the maintainer guidelines # in the GNU gettext documentation, section 'Preparing Strings'. # - Strings which use unclear terms or require additional context to be # understood. # - Strings which make invalid assumptions about notation of date, time or # money. # - Pluralisation problems. # - Incorrect English spelling. # - Incorrect formatting. # It can be your email address, or a mailing list address where translators # can write to without being subscribed, or the URL of a web page through # which the translators can contact you. MSGID_BUGS_ADDRESS = # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = # This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt' # context. Possible values are "yes" and "no". Set this to yes if the # package uses functions taking also a message context, like pgettext(), or # if in $(XGETTEXT_OPTIONS) you define keywords with a context argument. USE_MSGCTXT = no # These options get passed to msgmerge. # Useful options are in particular: # --previous to keep previous msgids of translated messages, # --quiet to reduce the verbosity. MSGMERGE_OPTIONS = # These options get passed to msginit. # If you want to disable line wrapping when writing PO files, add # --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and # MSGINIT_OPTIONS. MSGINIT_OPTIONS = # This tells whether or not to regenerate a PO file when $(DOMAIN).pot # has changed. Possible values are "yes" and "no". Set this to no if # the POT file is checked in the repository and the version control # program ignores timestamps. PO_DEPENDS_ON_POT = yes # This tells whether or not to forcibly update $(DOMAIN).pot and # regenerate PO files on "make dist". Possible values are "yes" and # "no". Set this to no if the POT file and PO files are maintained # externally. DIST_DEPENDS_ON_UPDATE_PO = yes hunspell-1.7.2/po/pa.po0000664000175000017500000002765114353370167011700 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-11-04 15:53+0000\n" "Last-Translator: Dharam Veer Sharma \n" "Language-Team: Punjabi \n" "Language: pa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.14.2-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "ਗਲਤੀ - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "ਗਲਤੀ - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "ਗਲਤੀ - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "ਆਰਜ਼ੀ ਡਾਇਰੈਕਟਰੀ ਬਣਾਈ ਨਹੀਂ ਜਾ ਸਕਦੀ" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "ਇਨਪੁਟ-ਫ਼ਾਇਲ ਖੋਲ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕਦੀ" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "%s ਖੋਲ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕਦੀ।\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "ਗਲਤੀ - HOME ਵੇਰੀਬਲ ਮੌਜੂਦ ਨਹੀਂ ਹੈ\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "ਲਾਈਨ %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "ਲੁਕਵਾਂ!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "ਸ਼ਬਦ-ਜੋੜ ਗ਼ਲਤੀ?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tਫ਼ਾਇਲ: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[SPACE] R)epl A)ਮਨਜ਼ੂਰ I)ਪਾਓ U)ਬਿਨਾਂ-ਕੈਪ S)ਸਟੀਮ Q)ਛੱਡੋ (X)ਬਾਹਰ ਜਾਂ ਮਦਦ ਲਈ ?\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "ਜਦੋਂ ਵੀ ਕੋਈ ਅਜਿਹਾ ਸ਼ਬਦ ਮਿਲਦਾ ਹੈ ਜੋ ਸ਼ਬਦਕੋਸ਼ ਵਿੱਚ ਨਹੀਂ ਹੈ\n" "ਇਹ ਸਕਰੀਨ ਦੀ ਪਹਿਲੀ ਲਾਈਨ 'ਤੇ ਛਾਪਿਆ ਜਾਂਦਾ ਹੈ। ਜੇਕਰ ਸ਼ਬਦਕੋਸ਼ ਵਿੱਚ\n" "ਕੋਈ ਵੀ ਸਮਾਨ ਸ਼ਬਦ ਨਹੀਂ ਹੈ, ਉਹ ਹਰ ਇੱਕ ਦੇ ਅੱਗੇ ਇੱਕ ਨੰਬਰ ਦੇ ਨਾਲ ਸੂਚੀਬੱਧ ਕੀਤੇ ਜਾਂਦੇ ਹਨ. \n" "ਤੁਹਾਡੇ ਕੋਲ ਪੂਰੀ ਤਰ੍ਹਾਂ, ਜਾਂ ਸੁਝਾਏ ਗਏ ਸ਼ਬਦਾਂ ਵਿੱਚੋਂ ਇੱਕ ਨੂੰ ਚੁਣ ਕੇ ਸ਼ਬਦ ਨੂੰ ਬਦਲਣ ਦਾ ਵਿਕਲਪ ਹੈ\n" "।\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "ਕਮਾਡਾਂ ਹਨ:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "" #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "" #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "" #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "" #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "" #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr "" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr "" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr "" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr "" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr "" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr "" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr "" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr "" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr "" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr "" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr "" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr "" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr "" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "" #: src/tools/hunspell.cxx:1895 msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "" hunspell-1.7.2/po/hr.gmo0000664000175000017500000002377114353370170012046 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \} ( [A[9E",@$m4C5 #A$eJ* )@'j+8:$2)W%1U./^'~7,5 )A%k8$( '3T[ :":F".""","C #M#Ce#&# #w#U$*i$$$<R%/%%_&3&/'/1'a'!~'$'%''''''''1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-10-17 00:04+0000 Last-Translator: Milo Ivir Language-Team: Croatian Language: hr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; X-Generator: Weblate 4.15-dev %s Datoteka: %s -- Nastavi pritiskanjem razmaknice -- Naredbe: [RAZMAKNICA] Z)amijeni P)rihvati U)metni M)ala K)orijen P(R)ekini I)zađi ili ? za pomoć --check-apostrophe provjeri Unicode za tipografske izostavnike --check-url provjeri URL-adrese, e-adrese i staze mapa -1 provjeri samo prvo polje redaka (znak razdvajanja = tabulator) -D prikaži dostupne rječnike -G ispiši samo točne riječi ili retke -H datoteka unosa u HTML formatu -L ispiši retke s pogrešno napisanim riječima -O datoteka unosa u OpenDocument formatu (ODF ili običnan ODF) -P lozinka postavi lozinku za šifrirane rječnike -S sufiks riječi teksta unosa -X datoteka unosa u XML formatu -a Ispell-ovo sučelje toka -d rječnik[,rječnik2,...] koristi rječnik (rječnik2 itd.) rječnike -h, --help prikaži ovu pomoć i izađi -i kodiranje kodiranje unosa -l ispiši pogrešno napisane riječi -m analiziraj riječi teksta unosa -n datoteka unosa u nroff/troff formatu -p rječnik postavi rječnik na prilagođeni rječnik -r upozori o potencijalnim greškama (rijteke riječi) -s korijen riječi teksta unosa -t datoteka unosa u TeX/LaTeX formatu -v, --version ispiši broj verzije -vv ispiši broj kompatibilne verzije Ispella -w ispiši pogrešno napisane riječi (= retke) jedne riječi/jednog retka unosa. 0-x Zamijeni s jednom od predložeih riječi. ? Prikaži ovaj ekran pomoći. P Prihvati riječ do kraja ove sesije. DOSTUPNI RJEČNICI (staza nije obavezna za opciju -d): Stvarno želiš odbaciti sve tvoje promjene?Izvještaji o grešakama: http://hunspell.github.io/ Nije moguće stvoriti privremenu datotekuNije moguće stvoriti privremenu mapuNije moguće otvoriti %s. Nije moguće otvoriti afiks ili datoteke mape „%s”. Nije moguće otvoriti datoteku unosaNije moguće otvoriti datoteku rezultataNije moguće aktualizirati osobnu mapu.Provjeri pravopis svake DATOTEKE. Bez elementa DATOTEKA, provjeri standardni unos. Primjer: hunspell -d en_US datoteka.txt # interaktivni pravopis hunspell -i utf-8 datoteka.txt # provjeri datoteku kodiranu u UTF-8 formatu hunspell -l * .odt # ispiši pogrešno napisanih riječi ODF datoteka # Brzo popravljanje ODF dokumenata izradom osobnog rječnika # 1 Izradi kraći popis pogrešno napisanih i nepoznatih riječi: hunspell -l *.odt | sort | uniq >riječi # 2 Izbriši pogrešno napisane riječi datoteke pomoću uređivača teksta. # 3 Koristi ovaj osobni rječnik za popravljanje izbrisanih riječi: hunspell -p riječi *.odt ZABRANJENO!Hunspell je kompiliran bez korisničkog sučelja Ncurses. U Prihvati riječ i stavi je u privatnu mapu. UČITANI RJEČNICI: %s %s Redak %d: %s -> Uzorna riječ (slična riječ u rječniku): Uzorna riječ mora postojati u rječniku. Pritisni bilo koju tipku!Nova riječ (korijen): R Prekini odmah. Zatraži potvrdu. Datoteka ostaje nepromijenjena. Z Zamijeni pogrešno napisanu riječ. Zamijeni s: K Upitaj korijen i uzornu riječ te ih spremi u privatnu mapu. Korijen će se prihvatiti i s afiksima uzorne riječi. STAZA PRETRAGE: %s Razmaknica Prihvati riječ samo ovaj put. Pravopisna greška?Ovo je slobodan softver; pogledaj izvor za uvjete kopiranja. BEZ jamstva; čak niti za PRODAJNOST ili SPOSOBNOST ZA ODREĐENU SVRHU, u mjeri koja je dopuštena zakonom. M Prihvati i dodaj verziju s malim slovima u privatnu mapu. Upotreba: hunspell [OPCIJA] … [DATOTEKA] … Kad god se pronađe riječ koja nije u rječniku, ispisuje se u prvom retku ekrana. Ako rječnik sadrži slične riječi, one se navode s brojem. Moguće je zamijeniti riječ ili odabrati jednu od predloženih riječi. I Zapiši ostatak ove datoteke, zanemarujući pravopisne greške i pokreni sljedeću datoteku. ^Z Zaustavi program. Ponovo pokreni s naredbom fg. pgreška – %s prekoračuje ograničenje mape. greška – iconv: %s -> %s greška – iconv_open: %s -> %s greška – iconv_open: UTF-8 -> %s greška – nedostaje varijabla HOME urzkmiyhunspell-1.7.2/po/nb_NO.gmo0000664000175000017500000002174614353370170012430 00000000000000H\a !1QGb:?"%(Hq(76'-E(s+$2$ (W " % . A -: h 0 > 2 (% N d y @   " B 5[ ;:(-4VB* &$K-H%Jp )^8t?"):,W93+0;l%#.$!B(d2F-5$T?y5*#0TEh$>AE=0&0?pC&  , $!V"9"6#'8#`#y# #########<5 B>?#%0!FH$2'G4CD86(&)"1 E7 .3;=+ 9 */:,@A- %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -X XML input file format -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:09+0000 Last-Translator: Anonymous Language-Team: Norwegian Bokmål Language: nb_NO MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.14-dev %s Fil: %s -- Trykk mellomrom for å fortsette -- Kommandoene er: [MELLOMROM] E)rstatt G)odta I)nnlem F)jern sperring S)tamme A)vslutt L)ukk eller ? for hjelp --check-apostrophe sjekk Unicode-typografisk apostrof --check-url sjekk nettadresser, e-postadresser og mappestier -D vis tilgjengelige ordbøker -G kun skriv riktige ord eller linjer -H HTML-inndatafilformat -L skriver ut linjer med feilstavede ord -O OpenDocument (ODF eller Flat ODF)-inndatafilformat -P password sett passord for krypterte ordbøker -X XML-inndatafilformat -d d[,d2,...] bruk d (d2 etc.) ordbøker -h, --help vis denne hjelpeteksten og avslutt -i enc inndatakoding -l skriv ut feilstavede ord -m analyser ord i inndatateksten -n nroff/troff-inndatafilformat -r advar om potensielle feil (sjeldne ord) -s grunnordene i inndatateksten -t TeX/LaTeX-inndatafilformat -v, --version skriv ut versjonsnummer -vv skriv ut Ispell-kompatibelt versjonsnummer -w skriv ut feilstavede ord (= linjer) fra ett ord/linje -inndata. 0-n Erstatt med en av de foreslåtte ordene. ? Viser denne hjelpeskjermen. G Godta ordet for resten av økten. TILGJENGELIGE ORDBØKER (sti er ikke påkrevd for -d -valget): Er du sikker på at du vil forkaste endringene dine? Feilrapporter: http://hunspell.github.io/ Kan ikke opprette malKan ikke opprette midlertidig mappeKan ikke åpne %s. Kan ikke åpne affiks- eller ordboks-filer for ordbok ved navn "%s". Kan ikke åpne inndatafilKan ikke åpne utdatafilKan ikke oppdatere personlig ordbok.Sjekk staving av hver FIL. Uten FIL, sjekk forvalgt inndata. Eksempel: hunspell -d nb_NO fil.txt # interaktiv staving hunspell -i utf-8 file.txt # sjekk UTF-8-kodet fil hunspell -l *.odt # skriv ut feilstavede ord i ODF-filer # Rask fiks for ODF-dokumenter gjennom opprettelse av personlig ordbok # 1 Lag en redusert liste av feilstavede og ukjente ord: hunspell -l *.odt | sort | uniq >words # 2 Slett feilstavede ord i filen med en tekstbehandler. # 3 Bruk denne personlige ordboken til å fikse de slettede ordene: hunspell -p words *.odt FORBUDT!Hynspell har blitt kompilert uten Ncurses-brukergrensesnitt. I Godta ordet, og innlem det i din egen ordbok. INNLASTET ORDBOK: %s %s Modellord (eller lignende ordboksord: Modellordet må være i ordboken. Trykk en tast.Nytt ord (grunnord): Q Avslutt umiddelbart. Spør om bekreftelse. Levner filer uendret. E Erstatt feilstavet ord fullstendig. Erstatt med: S Be om stamme (grunnord) og ett modellord å lagre dem i privat ordbok. Grunnordet vil bli godtatt også med affiks av modellordet. SØKESTI: %s Mellomrom Godta ordet kun denne ene gangen. Skrivefeil?Dette er fri programvare; sjekk kilden for kopieringsvilkår. Det kommer IKKE med noen garanti; selv ikke om SALGBARHET eller FORMÅLSTJENLIGHET, sålangt det tillates av loven. Når et ord blir funnet som ikke finnes i ordboken blir skrevet på første linje av skjermen. Hvis ordboken inneholder noen lignende ord, vil de bli opplistet med et nummer ved siden av hvert av dem. Du har valget med å erstatte ordet fullstendig, eller velge ett av de foreslåtte ordene. X Skriv resten av denne filen, uten å ta hensyn til feilstaving, og start neste fil. ^Z Sett program på pause. Start på ny med fg-kommando. gerror - %s overskrider ordboksgrensen. feil - iconv: %s → %s feil - iconv_open: %s → %s feil - iconv_open: UTF-8 → %s feil - manglende HOME-variabel slesfajhunspell-1.7.2/po/sl.gmo0000664000175000017500000002370614353370170012051 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}/ W;Q<>& ,0!]8A2/-!] -1*+F(r&1/&$-K7yQ)-&D3k?2&"9\?t$#(J&yq !;!24"g""+"@"#K#,b# #{#$-)$W$j$D%.b%%U&0& '' '4'N'!m'(''''''''1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-10-13 20:35+0000 Last-Translator: Martin Srebotnjak Language-Team: Slovenian Language: sl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3; X-Generator: Weblate 4.15-dev %s Datoteka %s -- Za nadaljevanje pritisnite preslednico -- Ukazi so: [PRESLEDNICA] Z)amenjaj P)otrdi V)stavi M)alo K)oren P(r)ekini I)zhod ali ? za pomoč --check-apostrophe preveri tipografski opuščaj Unicode --check-url preveri URL-je, e-poštne naslove in poti map -1 preveri samo prvo polje v vrstici (ločilo = tabulator) -D pokaži razpoložljive slovarje -G natisni samo prave besede ali vrstice -H zapis vhodne datoteke HTML -L izpiši vrstice z nepravilno črkovanimi besedami -O zapis vhodne datoteke OpenDocument (ODF ali enostavni ODF) -P geslo nastavite geslo za šifrirane slovarje -S besedam vhodnega besedila dodaj pripone -X zapis vhodne datoteke XML -a cevovodni vmesnik Ispella -d d[,d2,...] uporabi slovarje d (d2 itn.) -h, --help prikaži to pomoč in zapri program -i enc vhodno kodiranje -l izpiši nepravilno črkovane besede -m analiziraj besede vhodnega besedila -n zapis vhodne datoteke nroff/troff -p slov določi slovar slov po meri -r opozori na morebitne napake (redke besede) -s izlušči koren besed vhodnega besedila -t zapis vhodne datoteke TeX/LaTeX -v, --version izpiši številko različice -vv izpiši številko združljive različice Ispell -w izpiši napačno črkovane besede (= vrstice) iz ene besede/vrstice vnosa. 0-n Zamenjaj z eno od predlaganih besed. ? Prikaže to pomoč. P Sprejmi to besedo do konca te seje. SLOVARJI NA VOLJO (pot ni obvezna za možnost -d): Ali ste prepričani, da želite zavreči opravljene spremembe? Poročila o hroščih: http://hunspell.github.io/ Začasne datoteke ni mogoče ustvaritiZačasne mape ni mogoče ustvariti%s ni mogoče odpreti. Datotek pripon ali slovarja za slovar "%s" ni mogoče odpreti. Vhodne datoteke ni mogoče ustvaritiIzhodne datoteke ni mogoče odpretiOsebnega slovarja ni mogoče posodobiti.Preveri črkovanje vsake DATOTEKE. Brez DATOTEKE preveri standardnivhod. Primer: hunspell -d sl_SI datoteka.txt # interaktivno črkovanje hunspell -i utf-8 datoteka.txt # preveri datoteko s kodiranjem UTF-8 hunspell -l *.odt # izpiši napačno črkovane besede datotek ODF # Hitri popravek dokumentov ODF z ustvarjanjem osebnega slovačka # 1 Naredite okrajšan seznam iz napačno črkoavnih in neznanih besed: hunspell -l *.odt | sort | uniq >besede # 2 Izbrišite napačno črkovane besede datoteke v urejevalniku besedil. # 3 Uporabite ta osebni slova za popravek izbrisanih besed: hunspell -p besede *.odt PREPOVEDANO!Hunspell je preveden brez uporabniškega vmesnika Ncurses. U Sprejmi to besedo in jo shrani v osebni slovar. NALOŽENI SLOVAR: %s %s Vrstica %d: %s -> Vzorčna beseda (podobna beseda slovarja): Vzorčna beseda mora biti v slovarju. Pritisnite poljubno tipko!Nova beseda (koren): Q Nemudoma končaj. Vpraša za potrditev. Datoteke ostanejo nespremenjene. Z Zamenjaj celo nepravilno zapisano besedo. Zamenjaj z: K Povprašaj po korenu in vzorcu besede in ju shrani v osebni slovar. Koren bo prevzet skupaj z obrazili primerka besede. POT ISKANJA: %s Preslednica - Sprejmi to besedo samo tokrat. Pravopisna napaka?To je prosto programje; pogoje kopiranja si oglejte v izvorni kodi. Je BREZ garancije; niti za PRIMERNOST ZA PRODAJO ali PRIMERNOST ZA DOLOČEN NAMEN v zakonsko dovoljeni meri. M Sprejmi to besedo in jo z malimi črkami zapiši v osebni slovar. Uporaba: hunspell [MOŽNOST]... [DATOTEKA]... Kadarkoli je najdena beseda, ki je ni v slovarju je ta izpisana v prvi vrstici na zaslou. Če slovar vsebuje podobne besede, so te navedene s številko ob besedi. Imate možnost zamemanjati celotno besedo ali izbrati eno od ponujenih besed. X Zapiši preostanek te datoteke, prezri pravopisne napake in ustvari novo datoteko. ^Z Zaustavi program. Ponovni zagon z ukazom fg. anapaka - %s presega omejitev slovarja. napaka - iconv: %s -> %s napaka - iconv_open: %s -> %s napaka - iconv_open: UTF-8 -> %s napaka - manjkajoča spremenljivka HOME vhzkmidhunspell-1.7.2/po/si.gmo0000664000175000017500000000124014353370170012033 000000000000004L`az[${error - iconv: %s -> %s error - iconv_open: %s -> %s Project-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:09+0000 Last-Translator: Anonymous Language-Team: Sinhala Language: si MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n > 1; X-Generator: Weblate 4.14-dev දෝෂය - iconv: %s -> %s දෝෂය - iconv_open: %s -> %s hunspell-1.7.2/po/fa.gmo0000664000175000017500000000055314353370170012014 00000000000000$,819Project-Id-Version: hunspell 1.7.1 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: Automatically generated Language-Team: none Language: fa MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit hunspell-1.7.2/po/en@quot.header0000644000175000017500000000226313422074107013502 00000000000000# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # hunspell-1.7.2/po/lt.po0000664000175000017500000002561314353370167011713 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.7.1\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-10-18 11:10+0000\n" "Last-Translator: Marius Karotkis \n" "Language-Team: Lithuanian \n" "Language: lt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n % 10 == 1 && (n % 100 < 11 || n % 100 > " "19)) ? 0 : ((n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) ? " "1 : 2);\n" "X-Generator: Weblate 4.15-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Negalima sukurti laikino aplankalo" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Negalima atidaryti įvesties failo" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Negalima atidaryti %s.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "klaida - trūksta kintamojo HOME\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Eilutė %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "DRAUDŽIAMA!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Rašybos klaida?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "" #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Nepavyko atnaujinti asmeninio žodyno." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "" #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "" #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Ar tikrai norite atmesti pakeitimus? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Nepavyko sukurti šablono failo" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Nepavyksta atidaryti išvesties failo" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr "" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr "" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr "" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr "" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr "" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr "" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr "" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr "" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr "" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr "" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr "" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr "" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr "" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "" #: src/tools/hunspell.cxx:1895 msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "" hunspell-1.7.2/po/ka.po0000664000175000017500000005131414353370167011664 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.7.1\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-11-02 08:35+0000\n" "Last-Translator: Temuri Doghonadze \n" "Language-Team: Georgian \n" "Language: ka\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14.2-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "შეცდომა - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "შეცდომა - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "შეცდომა - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "დროებითი საქაღალდის შექმნის შეცდომა" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "შეყვანის ფაილის გახსნის შეცდომა" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "%s-ის გახსნის შეცდომა.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "შეცდომა - ცვლადი HOME არ არსებობს\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "ხაზი %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "აკრძალულია!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "მართლწერის შეცდომა?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tფაილი: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[SPACE] R)პასუხი A)თანხმობა I)ჩასა U)ncap S)tem Q)გასვლა (X)გასვლა ან ?, " "დახმარებისთვის\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "როცა ნაპოვნია სიტყვა, რომელიც ლექსიკონში არაა,\n" "ის ეკრანის პირველ ხაზზეა ნაჩვენები. თუ ლექსიკონი\n" "რამე მსგავს სიტყვებს შეიცავს, ისინი თავისი ნომრებით \n" "გვერდიგვერდ არიან ნაჩვენები. გაქვთ შესაძლებლობა, \n" "შეცვალოთ სიტყვა სრულად, ან შემოთავაზებულიდან აირჩიოთ.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "ბრძანებებია:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "R\tშეცდომით დაწერილი სიტყვის სრულად ჩანაცვლება.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Space\tსიტყვის მხოლოდ ამჯერად მიღება.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tსიტყვის ამ სესიის ბოლომდე მიღება.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tსიტყვის მიღება და პირად ლექსიკონში ჩამატება.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "U\tმიღება და მისი დაბალი რეგისტრის ვერსიის პირად ლექსიკონში შენახვა.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "S\tფუძისა და მოდელი სიტყვის კითხვა და მათი პირად ლექსიკონში შენახვა. \n" "\tფუძე მისაღებია მოდელი სიტყვის აფიქსებითაც მისაღებია.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tრომელიმე ნარჩევი სიტყვით ჩანაცვლება.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "X\tდარჩენილი ფაილის ჩაწერა, მართლწერის იგნორირება და შემდეგი ფაილის " "დაწყება.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "Q\tდაუყოვნებლივ გასვლა. ითხოვს უფლებას. ფაილი უცვლელი დარჩება.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tპროგრამის შეჩერება. გაგრძელებისთვის გამოიყენეთ ბრძანება fg.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tდახმარების ამ ეკრანის ჩვენება.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- გასაგრძელებლად დააჭირეთ გამოტოვებას -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "r" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "ჩანაცვლება: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "u" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "პირადი ლექსიკონის განახლების შეცდომა." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "s" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "ახალი სიტყვა (ფუძე): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "მოდელი სიტყვა (ან მსგავსი სიტყვა ლექსიკონიდან): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "მოდელი სიტყვა აუცილებელია, ლექსიკონში იყოს. დააჭირეთ ნებისმიერ ღილაკს!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "x" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "q" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "" "დარწმუნებული ბრძანდებით, რო გნებავთ, მოიშოროთ თქვენს მიერ შეტანილი " "ცვლილებები? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "y" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "დროებითი ფაილის შექმნის შეცდომა" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "გამოსატანი ფაილის გახსნის შეცდომა" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "გამოყენება: hunspell [პარამეტრები]... [ფაილი]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "თითოეული ფაილის მართლწერის შემოწმება. თუ ის მითითებული არაა, სტანდარტული " "შეყვანა შემოწმდება.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\tფაილებში მხოლოდ პირველი ველის შემოწმება (გამყოფი = ტაბულაცია)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tIspell-ის ფაიფის ინტერფეისი\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" " --check-url\tURL-ების, ელფოსტის მისამართებისა და საქაღალდის ბილიკების " "შემოწმება and directory paths\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tუნიკოდის ტიპოგრაფული აპოსტროფის შემოწმება\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\td (d2 და სხვ.) ლექსიკონების გამოყენება\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tხელმისაწვდომი ლექსიკონების ჩვენება\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\tმხოლოდ გამართული სიტყვებისა და ხაზების გამოტანა\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tამ დახმარების გამოტანა და გასვლა\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tHTML შეყვანის ფაილის ფორმატი\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i enc\tშეყვანის კოდირება\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\tშეცდომის შემცველი სიტყვების გამოტანა\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr "" " -L\t\tმართლწერის შეცდომის მქონე სიტყვების შემცველი ხაზების გამოტანა\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tშეყვანილი ტექსტის სიტყვების ანალიზი\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tშეყვანის ფაილის ფორმატის nroff/troff\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tშეყვანის ფაილის ფორმატი OpenDocument (ODF ან Flat ODF)\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p dict\tსაკუთარი ლექსიკონის მითითება\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\tპოტენციური შეცდომების შესახებ გაფრთხილება (იშვიათი სიტყვები)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P პაროლი\tდაშიფრული ლექსკონების პაროლის დაყენება\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\tშეყვანილი ტექსტის სიტყვების ფუძე\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tშეყვანილი ტექსტის სუფიქსი სიტყვები\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tTeX/LaTeX შეყვანის ფაილის ფორმატი\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\tვერსიის ნომრის გამოტანა\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\tIspell -თან თავსებადი ვერსიის ნომრის გამოტანა\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\tმართლწერის შეცდომის მქონე სიტყვების გამოტანა (= ხაზები) ერთსიტყვიანი/" "ერთხაზიანი შეყვანიდან.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tXML შეყვანის ფაილის ფორმატი\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "მაგალითი: hunspell -d en_US file.txt # მართლწერის ინტერაქტიური შემოწმება\n" " hunspell -i utf-8 file.txt # UTF-8 კოდირებული ფაილის შემოწმება\n" " hunspell -l *.odt # მართლწერის შეცდომების მქონე " "სიტყვების შემოწმება ODF ფაილებში\n" "\n" " # სწრაფად ჩაასწორეთ თქვენი ODF დოკუმენტები თქვენი პირადი ლექსიკონის " "შექმნის საშუალებით\n" "\n" " # 1 მართლწერის შეცდომების ან უცნობი სიტყვების შემცირებული სიის " "შექმნა:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 ფაილში მართლწერის შეცდომების მქონე სიტყვების წაშლა.\n" " # 3 წაშლილი სიტყვების ჩასასწორებლად მითითებული პირადი ლექსიკონის " "გამოყენება:\n" "\n" " hunspell -p words *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "შეცდომის ანგარიშები: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "ყველა უფლება დაცულია (C) 2002-2014 László Németh. ლიცენზია: MPL/GPL/LGPL.\n" "\n" "ეყრდნობა OpenOffice.org-ის Myspell ბიბლიოთეკას.\n" "Myspell-ის საავტორო უფლებები (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "ძებნის ბილიკი:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" "ხელმისაწვდომი ლექსიკონები (-d პარამეტრისთვის ბილიკი აუცილებელი არაა):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "ჩატვირთულია ლექსიკონი:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "შეცდომა - %s ლექსიკონის ლიმიტს გადაცილებულია.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "აფიქსის ან ლექსიკონის ფაილის, სახელად \"%s\", გახსნის შეცდომა.\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hunspell-ი Ncruses ინტერფეისის გარეშეა აგებული.\n" hunspell-1.7.2/po/ar.po0000664000175000017500000004025014353370167011670 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.7.1\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-11-10 03:05+0000\n" "Last-Translator: Taha Zerrouki \n" "Language-Team: Arabic \n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" "X-Generator: Weblate 4.15-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "خطأ - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "خطأ - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "خطأ - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "تعذر إنشاء مجلد مؤقت" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "تعذّر فتح ملف المدخل" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "تعذّر فتح %s.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "خطأ - المتغير HOME مفقود\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "سطر %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "ممنوع!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "خطأ إملائي؟" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tملف: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[مسافة] ب)دّل ا(ق)بل أ(د)رج، ج)ذّع، حرف (ص)غير ،ا(خ)رج، (غ)‍ادر أو ? للمساعدة\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "عند العثور على كلمة غير واردة في القاموس\n" "تُطبع في السطر الأول من الشاشة. إذا كان في القاموس\n" " أي كلمات متشابهة ، تُسرد برقم\n" "بجانب كل كلمة. اختر ما بين استبدال الكلمة\n" "تماما، أو اختيار إحدى الكلمات المقترحة.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "الأوامر:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "ب\tاستبدل الكلمات الخاطئة.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "مسافة\tاقبل الكلمة هذه المرة فقط.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "ق\tاقبل الكلمة فيما بقي من هذه الجلسة.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "د\tاقبل الكلمة وأضفها لقاموسك الخاص.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "ص\tاقبل وأضف الكلمة بالحروف الصغيرة إلى القاموس الخاص.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "ج\tاطلب جذع كلمة، ونموذج كلمة واحفظهما في قاموس خاص.\n" "\tسيُقبل الجذع مع زوائد الكلمة النموذجية.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tاستبدل بإحدى الكلمات المقترحة.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "غ\tاكتب ما بقي من هذا الملف، تجاهل الأغلاط، وابدأ في الملف التالي.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "خ\tاخرج فورًا. اطلب التأكيد. أترك الملف دون تعديل.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tعلّق البرنامج. استأنف بالأمر fg.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tاعرض شاشة المساعدة هذه.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- اضغط مسافة للمتابعة -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "ب" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "استبدل بـ: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "ص" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "د" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "تعذّر تحديث القاموس الشخصي." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "ق" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "ج" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "كلمة جديدة (جذع): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "كلمة نموذجية (مفردة مشابهة من القاموس): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "يجب أن تكون الكلمة النموذجية موجودة في القاموس. اضغط أي مفتاح!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "غ" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "خ" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "هل تريد فعلًا تجاهل التغييرات؟ " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "ن" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "تعذّر إنشاء الملف المؤقت" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "تعذّر فتح ملف المخرج" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "استعمال: hunspell [OPTION]... [FILE]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "دقّق إملائيا كل ملف. دون تحديد ملف، دقّق المدخل القياسي.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr " -1\t\tدقّق فقط أول حقل في الأسطر (الفاصل = جدولة)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tواجهة أنبوب Ispell\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" " --check-url\tدقّق مسارات URL، عناوين البريد الالكتروني ومسارات المجلدات\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tدقّق علامات الاقتباس حسب يونيكود\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\tاستعمل القواميس d (d2 الخ.)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tعرض القواميس المتوفرة\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\tاطبع الكلمات أو الأسطر الصحيحة فقط\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tعرض هذه المساعدة والخروج\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tملف المدخل بصيغة HTML\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i enc\tترميز المدخل\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\tاطبع الكلمات الخاطئة\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\tاطبع الأسطر ذات الكلمات الخاطئة\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tحلّل كلمات النص المُدخل\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tملف المُدخل بصيغة nroff/troff\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\t ملف المدخل بصيغة OpenDocument (ODF or Flat ODF)\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p dict\tحدد القاموس المخصص\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\tنبّه إلى الأخطاء المحتملة (الكلمات النادرة)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P password\tحدد كلمة مرور للقواميس المشفّرة\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\tجذّع كلمات النص المدخل\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tحدد لواحق كلمات النص المدخل\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tملف مدخل بصيغة TeX/LaTeX\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\tاطبع رقم الإصدار\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\tاطبع رقم إصدار Ispell المتوافق\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\tاطبع الكلمات الخاطئة (= الأسطر) من المدخل ذي كلمة واحدة في السطر.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tملف مدخل بصيغة XML\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "مثال: hunspell -d en_US file.txt # تدقيق تفاعلي\n" " hunspell -i utf-8 file.txt # دقّق ملفا بترميز UTF-8 \n" " hunspell -l *.odt # اطبع الكلمات الخاطئة من ملفات ODF\n" "\n" " # إصلاح سريع لمستندات ODF بإنشاء قاموس شخصي\n" "\n" " # 1 إنشاء قائمة مختصرة للكلمات الخاطئة وغير المعروفة:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 حذف الكلمات الخاطئة من الملف بواسطة محرر نصوص.\n" " # 3 استعمل القاموس الشخصي لإصلاح الكلمات المحذوفة:\n" "\n" " hunspell -p words *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "الإبلاغ عن العلل: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "الحقوق محفوظة (C) 2002-2014 László Németh. ترخيص: MPL/GPL/LGPL.\n" "\n" "مبنية على مكتبة Myspell لـ OpenOffice.org.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "هذا برنامج مجاني. انظر المصدر لمتطلبات النسخ. لا\n" "ضمان؛ ولا حتى لقابلية التسويق أو الملاءمة لغرض معين ،\n" "إلى الحد الذي يسمح به القانون.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "مسار البحث:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "القواميس المتوفرة (المسار ليس إلزاميًا للخيار -d):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "القواميس المُحمّلة:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "خطأ - %s تجاوز حدود القاموس.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "تعذّر فتح ملف الزوائد أو ملف المفردات للقاموس المسمى \"%s\".\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "تم بناء هانسبال دون واجهة المستخدم Ncurses.\n" hunspell-1.7.2/po/hr.po0000664000175000017500000003603314353370167011703 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-10-17 00:04+0000\n" "Last-Translator: Milo Ivir \n" "Language-Team: Croatian \n" "Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 4.15-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "greška – iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "greška – iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "greška – iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Nije moguće stvoriti privremenu mapu" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Nije moguće otvoriti datoteku unosa" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Nije moguće otvoriti %s.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "greška – nedostaje varijabla HOME\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Redak %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "ZABRANJENO!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Pravopisna greška?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tDatoteka: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[RAZMAKNICA] Z)amijeni P)rihvati U)metni M)ala K)orijen P(R)ekini I)zađi " "ili ? za pomoć\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Kad god se pronađe riječ koja nije u rječniku, ispisuje se u\n" "prvom retku ekrana. Ako rječnik sadrži slične riječi, one se\n" "navode s brojem. Moguće je zamijeniti riječ ili\n" "odabrati jednu od predloženih riječi.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Naredbe:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "Z\tZamijeni pogrešno napisanu riječ.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Razmaknica\tPrihvati riječ samo ovaj put.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "P\tPrihvati riječ do kraja ove sesije.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "U\tPrihvati riječ i stavi je u privatnu mapu.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "M\tPrihvati i dodaj verziju s malim slovima u privatnu mapu.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "K\tUpitaj korijen i uzornu riječ te ih spremi u privatnu mapu.\n" "\tKorijen će se prihvatiti i s afiksima uzorne riječi.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-x\tZamijeni s jednom od predložeih riječi.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "I\tZapiši ostatak ove datoteke, zanemarujući pravopisne greške i pokreni " "sljedeću datoteku.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "R\tPrekini odmah. Zatraži potvrdu. Datoteka ostaje nepromijenjena.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tZaustavi program. Ponovo pokreni s naredbom fg.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tPrikaži ovaj ekran pomoći.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Nastavi pritiskanjem razmaknice -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "z" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Zamijeni s: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "m" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "u" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Nije moguće aktualizirati osobnu mapu." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "p" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "k" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Nova riječ (korijen): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Uzorna riječ (slična riječ u rječniku): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "Uzorna riječ mora postojati u rječniku. Pritisni bilo koju tipku!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "i" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "r" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Stvarno želiš odbaciti sve tvoje promjene?" #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "y" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Nije moguće stvoriti privremenu datoteku" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Nije moguće otvoriti datoteku rezultata" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Upotreba: hunspell [OPCIJA] … [DATOTEKA] …\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Provjeri pravopis svake DATOTEKE. Bez elementa DATOTEKA, provjeri standardni " "unos.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\tprovjeri samo prvo polje redaka (znak razdvajanja = tabulator)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tIspell-ovo sučelje toka\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr " --check-url\tprovjeri URL-adrese, e-adrese i staze mapa\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tprovjeri Unicode za tipografske izostavnike\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr "" " -d rječnik[,rječnik2,...]\tkoristi rječnik (rječnik2 itd.) rječnike\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tprikaži dostupne rječnike\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\tispiši samo točne riječi ili retke\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tprikaži ovu pomoć i izađi\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tdatoteka unosa u HTML formatu\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i kodiranje\tkodiranje unosa\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\tispiši pogrešno napisane riječi\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\tispiši retke s pogrešno napisanim riječima\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tanaliziraj riječi teksta unosa\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tdatoteka unosa u nroff/troff formatu\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tdatoteka unosa u OpenDocument formatu (ODF ili običnan ODF)\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p rječnik\tpostavi rječnik na prilagođeni rječnik\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\tupozori o potencijalnim greškama (rijteke riječi)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P lozinka\tpostavi lozinku za šifrirane rječnike\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\tkorijen riječi teksta unosa\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tsufiks riječi teksta unosa\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tdatoteka unosa u TeX/LaTeX formatu\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\tispiši broj verzije\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\tispiši broj kompatibilne verzije Ispella\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\tispiši pogrešno napisane riječi (= retke) jedne riječi/jednog retka " "unosa.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tdatoteka unosa u XML formatu\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Primjer: hunspell -d en_US datoteka.txt # interaktivni pravopis\n" " hunspell -i utf-8 datoteka.txt # provjeri datoteku kodiranu u " "UTF-8 formatu\n" " hunspell -l * .odt # ispiši pogrešno napisanih " "riječi ODF datoteka\n" "\n" " # Brzo popravljanje ODF dokumenata izradom osobnog rječnika\n" "\n" " # 1 Izradi kraći popis pogrešno napisanih i nepoznatih riječi:\n" "\n" " hunspell -l *.odt | sort | uniq >riječi\n" "\n" " # 2 Izbriši pogrešno napisane riječi datoteke pomoću uređivača " "teksta.\n" " # 3 Koristi ovaj osobni rječnik za popravljanje izbrisanih riječi:\n" "\n" " hunspell -p riječi *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Izvještaji o grešakama: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Autorska prava 2002. – 2014. László Németh. Licenca: MPL/GPL/LGPL.\n" "\n" "Bazirano na Myspell biblioteci od OpenOffice.org.\n" "Autorska prava za Myspell, Kevin Hendricks, 2001. – 2002., Licenca: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Ovo je slobodan softver; pogledaj izvor za uvjete kopiranja. BEZ jamstva;\n" "čak niti za PRODAJNOST ili SPOSOBNOST ZA ODREĐENU SVRHU,\n" "u mjeri koja je dopuštena zakonom.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "STAZA PRETRAGE:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "DOSTUPNI RJEČNICI (staza nije obavezna za opciju -d):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "UČITANI RJEČNICI:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "greška – %s prekoračuje ograničenje mape.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "Nije moguće otvoriti afiks ili datoteke mape „%s”.\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hunspell je kompiliran bez korisničkog sučelja Ncurses.\n" hunspell-1.7.2/po/tr.gmo0000664000175000017500000002431314353370170012053 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}k)|eA%IgB+= #^E?>2G#z10!0=0n*/843(h-2_1R!7J9),cF' E#fK":"1"#.#2@#Ds##K#4$P$f$$-$%%9%?&-G&u&`'6'(& (G(_(|(((((((((1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-11-26 09:48+0000 Last-Translator: Oğuz Ersen Language-Team: Turkish Language: tr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.15-dev %s Dosya: %s -- Devam etmek için space'e basın -- Komutlar şunlardır: [SPACE] D)eğiştir kA)bul-et E)kle K)üçük-harf kÖ)k Ç)ıkış-yap kapaT) veya yardım için ? --check-apostrophe Unicode tipografik kesme işaretini denetle --check-url URL'leri, e-posta adreslerini ve dizin yollarını denetle -1 satırlarda yalnızca ilk alanı denetle (ayırıcı = tab) -D kullanılabilir sözlükleri göster -G yalnızca doğru sözcükleri veya satırları yazdır -H HTML giriş dosyası biçimi -L yanlış yazılmış sözcüklerin olduğu satırları yazdır -O OpenDocument (ODF veya Flat ODF) giriş dosyası biçimi -P parola şifrelenmiş sözlükler için parolayı belirle -S giriş metnindeki sözcüklere son ek ekle -X XML giriş dosyası biçimi -a Ispell'in boru arayüzü -d d[,d2,...] d (d2 vs.) sözlüklerini kullan -h, --help bu yardımı görüntüle ve çık -i kod giriş kodlaması -l yanlış yazılmış sözcükleri yazdır -m giriş metninin sözcüklerini analiz et -n nroff/troff giriş dosyası biçimi -p szlk özel sözlük olarak szlk'ü ayarla -r olası hatalar (nadir sözcükler) hakkında uyar -s giriş metnindeki sözcüklerin kökünü al -t TeX/LaTeX giriş dosyası biçimi -v, --version sürüm numarasını yazdır -vv Ispell uyumlu sürüm numarasını yazdır -w bir sözcük/satır girişten yanlış yazılmış sözcükleri (= satırları) yazdır. 0-n Önerilen sözcüklerden biriyle değiştir. ? Bu yardım ekranını göster. A Bu oturumun geri kalanı için sözcüğü kabul et. KULLANILABİLİR SÖZLÜKLER (-d seçeneği için yol zorunlu değildir): Değişikliklerinizi atmak istediğinizden emin misiniz? Hata raporları: http://hunspell.github.io/ Geçici dosya oluşturulamıyortmp dizini oluşturulamıyor%s açılamıyor. "%s" isimli sözlük için ek veya sözlük dosyaları açılamıyor. Giriş dosyası açılamıyorÇıkış dosyası açılamıyorKişisel sözlük güncellenemiyor.Her DOSYA'nın imlasını denetle. DOSYA yoksa, standart girişi denetle. Örnek: hunspell -d tr_TR dosya.txt # etkileşimli yazım denetimi hunspell -i utf-8 dosya.txt # UTF-8 ile kodlanmış dosyayı denetle hunspell -l *.odt # ODF dosyalarındaki yanlış yazılmış sözcükleri denetle # ODF belgelerinin kişisel sözlük oluşturma ile hızlıca düzeltilmesi # 1 Yanlış yazılmış ve bilinmeyen sözcüklerden azaltılmış bir liste yapın: hunspell -l *.odt | sort | uniq >sözcükler # 2 Dosyadaki yanlış yazılmış sözcükleri bir metin düzenleyicisiyle silin. # 3 Silinen sözcükleri düzeltmek için bu kişisel sözlüğü kullanın.: hunspell -p sözcükler *.odt YASAK!Hunspell, Ncurses kullanıcı arayüzü olmadan derlendi. I Sözcüğü kabul et ve özel sözlüğe ekle. YÜKLENEN SÖZLÜK: %s %s Satır %d: %s -> Model sözcük (benzer bir sözlük sözcüğü): Model sözcük sözlükte bulunmalıdır. Herhangi bir tuşa basın!Yeni sözcük (kök): Q Hemen çıkış yap. Onay için sor. Dosyayı değiştirmeden bırakır. R Yanlış yazılan sözcüğü tamamen değiştir. Şununla değiştir: S Bir kök ve model sözcük iste ve bunları özel sözlükte sakla. Kök, model sözcüğün ekleriyle de kabul edilecektir. ARAMA YOLU: %s Space Sözcüğü yalnızca bu kez kabul et. Yazım hatası mı?Bu özgür bir yazılımdır; kopyalama koşulları için kaynağa bakınız. HİÇBİR garantisi yoktur; kanunun izin verdiği ölçülerde, PAZARLANABİLİRLİK veya BELİRLİ BİR AMACA UYGUNLUK bile. U Kabul et ve küçük harfli biçimini özel sözlüğe ekle. Kullanım: hunspell [SEÇENEK]... [DOSYA]... Sözlükte olmayan bir sözcük bulunduğunda, ekranın ilk satırına yazdırılır. Sözlük benzer sözcükler içeriyorsa, her birinin yanında bir numara bulunur. Sözcüğü tamamen değiştirme veya önerilen sözcüklerden birini seçme seçeneğine sahipsiniz. X Yazım hatalarını yok sayarak bu dosyanın geri kalanını yaz ve sonraki dosyayı başlat. ^Z Programı durdur. fg komutuyla yeniden başlatın. ahata - %s sözlük limitini aşıyor. hata - iconv: %s -> %s hata - iconv_open: %s -> %s hata - iconv_open: UTF-8 -> %s hata - HOME değişkeni eksik eçdöktehunspell-1.7.2/po/boldquot.sed0000644000175000017500000000033113422074107013235 00000000000000s/"\([^"]*\)"/“\1”/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“”/""/g s/“/“/g s/”/”/g s/‘/‘/g s/’/’/g hunspell-1.7.2/po/uk.gmo0000664000175000017500000003212114353370170012041 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}F%8FrHFj;J6Yc??;5P>BE:GBJKfa@@7O k L 8C!T|!k!_="A"B"?"#&b##,$><$I{$$%Y)]o)d)/2*b*Kx*s*$8+]+E+*,B,V-Lq-(--u/G0`0+22D3LG3!3&3)344<4?4B4E4H4K4N41GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:09+0000 Last-Translator: Максим Якимчук Language-Team: Ukrainian Language: uk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; X-Generator: Weblate 4.14-dev %s Файл: %s -- Натисніть пробіл для продовження -- Команди: [ПРОБІЛ] З)ам П)рийн В)ставити М)алі О)снова ви(Й)ти за(К)інчити або ? - довідка --check-apostrophe перевіряти із використанням типографського апострофа Unicode --check-url перевіряти адреси інтернету, електронної пошти і шляхи до каталогів -1 перевіряти лише перше поле у рядку (роздільник = табуляція) -D вивести список доступних словників -G вивести лише слова або рядки, які написано без помилок -H формат HTML для вхідних файлів -L виводити рядки із помилками у словах -O формат OpenDocument (ODF або Flat ODF) для вхідних файлів -P пароль встановити пароль для шифрованих словників -S слова-суфікси вхідного тексту -X формат XML для вхідних файлів -a конвеєрний інтерфейс Ispell -d d[,d2,...] використовувати словники d (d2 тощо) -h, --help вивести цю довідку і вийти -i кодування кодування вхідних даних -l виводити слова із помилками -m аналізувати слова вхідного тексту -n формат nroff/troff для вхідних файлів -p словник встановити нетиповий словник -r попереджати про потенційні помилки (рідкісні слова) -s використовувати основи слів для вхідного тексту -t формат TeX/LaTeX для вхідних файлів -v, --version вивести номер версії -vv вивести номер версії сумісності із Ispell -w вивести слова (= рядки) із помилками на основі вхідних даних слова/рядка. 0-n Замінити одним із запропонованих слів. ? Показати це вікно з довідкою. П Приймати слово протягом решти цього сеансу. ДОСТУПНІ СЛОВНИКИ (шлях не є обов'язковим із параметром -d): Ви справді хочете відкинути усі внесені вами зміни? Звітування щодо вад: http://hunspell.github.io/ Не вдалося створити тимчасовий файлПомилка створення тимчасової текиПомилка відкриття %s. Не вдалося відкрити афікс або файли словника для словника із назвою «%s». Помилка відкриття файлуНе вдалося відкрити вихідний файлНе вдалося оновити словник користувача.Перевірити правопису у кожному ФАЙЛі. Якщо не вказано ФАЙЛ, перевірити дані із стандартного джерела введення. Приклади: hunspell -d uk_UA файл.txt # інтерактивна перевірка правопису hunspell -i utf-8 файл.txt # перевірити файл із кодуванням UTF-8 hunspell -l *.odt # вивести слова із помилками з файлів ODF # Швидке виправлення документів ODF створенням особистого словника # 1 Створити скорочений список слів із помилками і невідомих слів: hunspell -l *.odt | sort | uniq >words # 2 Вилучити слова із помилками з файла за допомогою текстового редактора. # 3 Скористатися цим особистим словником для виправлення вилучених слів: hunspell -p words *.odt ЗАБОРОНЕНО!Hunspell було зібрано без інтерфейсу користувача Ncurses. В Прийняти слово і записати його до власного словника. ЗАВАНТАЖЕНИЙ СЛОВНИК: %s %s Рядок %d: %s -> Модель слова (подібне слово зі словника): Модельне слово має бути у словнику. Натисніть будь-яку клавішу!Нове слово (основа): Й Вийти негайно. Попросити підтвердження дії. Файли лишається незмінним. З замінити слово з помилкою повністю. Замінити на: О Попросити вказати основу і модель слова і зберегти їх до власного словника. Основа вважатиметься прийнятною, якщо використано афікси моделі слова. ШЛЯХ ПОШУКУ: %s Пробіл Прийняти це слово лише цього разу. Орфографічна помилка?Це програмне забезпечення є вільним, умови копіювання викладено у його початкових кодах Умовами ліцензування програми НЕ передбачено жодних гарантій, зокрема гарантій працездатності або придатності для певної мети, у межах законодавства. М Прийняти і додати слово малими літерами до власного словника. Використання: hunspell [ПАРАМЕТР]... [ФАЙЛ]... Кожного разу, коли програма виявляє слово, якого немає у словнику, його буде виведено у першому рядку екрана. Якщо у словнику містяться подібні слова, їх буде показано із номерами. Ви можете замінити слово повністю або вибрати одне зі слів-пропозицій. К Записати решту цього файла, ігнорувати помилки і розпочати наступний файл. ^Z Призупинити роботу. Перезапустити програму можна за допомогою команди fg. ппомилка - %s перевищує обмеження словника. Помилка - iconv: %s -> %s Помилка - iconv_open: %s -> %s Помилка - iconv_open: UTF-8 -> %s помилка - відсутня змінна HOME вйзомктhunspell-1.7.2/po/ar.gmo0000664000175000017500000002622014353370170012027 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}-RyRc/F*-AXEI:*&e#>;!+-M3{3-V1h+/;z2=-CZ]9;-. %\  g %!%'!2M!g!! $I$A%+S%%G%p%J&Xi&/&&'';'((b )/n)p)v+<++0++,!0,(R,{,~,,,,,,1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.7.1 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-11-10 03:05+0000 Last-Translator: Taha Zerrouki Language-Team: Arabic Language: ar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5; X-Generator: Weblate 4.15-dev %s ملف: %s -- اضغط مسافة للمتابعة -- الأوامر: [مسافة] ب)دّل ا(ق)بل أ(د)رج، ج)ذّع، حرف (ص)غير ،ا(خ)رج، (غ)‍ادر أو ? للمساعدة --check-apostrophe دقّق علامات الاقتباس حسب يونيكود --check-url دقّق مسارات URL، عناوين البريد الالكتروني ومسارات المجلدات -1 دقّق فقط أول حقل في الأسطر (الفاصل = جدولة) -D عرض القواميس المتوفرة -G اطبع الكلمات أو الأسطر الصحيحة فقط -H ملف المدخل بصيغة HTML -L اطبع الأسطر ذات الكلمات الخاطئة -O ملف المدخل بصيغة OpenDocument (ODF or Flat ODF) -P password حدد كلمة مرور للقواميس المشفّرة -S حدد لواحق كلمات النص المدخل -X ملف مدخل بصيغة XML -a واجهة أنبوب Ispell -d d[,d2,...] استعمل القواميس d (d2 الخ.) -h, --help عرض هذه المساعدة والخروج -i enc ترميز المدخل -l اطبع الكلمات الخاطئة -m حلّل كلمات النص المُدخل -n ملف المُدخل بصيغة nroff/troff -p dict حدد القاموس المخصص -r نبّه إلى الأخطاء المحتملة (الكلمات النادرة) -s جذّع كلمات النص المدخل -t ملف مدخل بصيغة TeX/LaTeX -v, --version اطبع رقم الإصدار -vv اطبع رقم إصدار Ispell المتوافق -w اطبع الكلمات الخاطئة (= الأسطر) من المدخل ذي كلمة واحدة في السطر. 0-n استبدل بإحدى الكلمات المقترحة. ? اعرض شاشة المساعدة هذه. ق اقبل الكلمة فيما بقي من هذه الجلسة. القواميس المتوفرة (المسار ليس إلزاميًا للخيار -d): هل تريد فعلًا تجاهل التغييرات؟ الإبلاغ عن العلل: http://hunspell.github.io/ تعذّر إنشاء الملف المؤقتتعذر إنشاء مجلد مؤقتتعذّر فتح %s. تعذّر فتح ملف الزوائد أو ملف المفردات للقاموس المسمى "%s". تعذّر فتح ملف المدخلتعذّر فتح ملف المخرجتعذّر تحديث القاموس الشخصي.دقّق إملائيا كل ملف. دون تحديد ملف، دقّق المدخل القياسي. مثال: hunspell -d en_US file.txt # تدقيق تفاعلي hunspell -i utf-8 file.txt # دقّق ملفا بترميز UTF-8 hunspell -l *.odt # اطبع الكلمات الخاطئة من ملفات ODF # إصلاح سريع لمستندات ODF بإنشاء قاموس شخصي # 1 إنشاء قائمة مختصرة للكلمات الخاطئة وغير المعروفة: hunspell -l *.odt | sort | uniq >words # 2 حذف الكلمات الخاطئة من الملف بواسطة محرر نصوص. # 3 استعمل القاموس الشخصي لإصلاح الكلمات المحذوفة: hunspell -p words *.odt ممنوع!تم بناء هانسبال دون واجهة المستخدم Ncurses. د اقبل الكلمة وأضفها لقاموسك الخاص. القواميس المُحمّلة: %s %s سطر %d: %s -> كلمة نموذجية (مفردة مشابهة من القاموس): يجب أن تكون الكلمة النموذجية موجودة في القاموس. اضغط أي مفتاح!كلمة جديدة (جذع): خ اخرج فورًا. اطلب التأكيد. أترك الملف دون تعديل. ب استبدل الكلمات الخاطئة. استبدل بـ: ج اطلب جذع كلمة، ونموذج كلمة واحفظهما في قاموس خاص. سيُقبل الجذع مع زوائد الكلمة النموذجية. مسار البحث: %s مسافة اقبل الكلمة هذه المرة فقط. خطأ إملائي؟هذا برنامج مجاني. انظر المصدر لمتطلبات النسخ. لا ضمان؛ ولا حتى لقابلية التسويق أو الملاءمة لغرض معين ، إلى الحد الذي يسمح به القانون. ص اقبل وأضف الكلمة بالحروف الصغيرة إلى القاموس الخاص. استعمال: hunspell [OPTION]... [FILE]... عند العثور على كلمة غير واردة في القاموس تُطبع في السطر الأول من الشاشة. إذا كان في القاموس أي كلمات متشابهة ، تُسرد برقم بجانب كل كلمة. اختر ما بين استبدال الكلمة تماما، أو اختيار إحدى الكلمات المقترحة. غ اكتب ما بقي من هذا الملف، تجاهل الأغلاط، وابدأ في الملف التالي. ^Z علّق البرنامج. استأنف بالأمر fg. قخطأ - %s تجاوز حدود القاموس. خطأ - iconv: %s -> %s خطأ - iconv_open: %s -> %s خطأ - iconv_open: UTF-8 -> %s خطأ - المتغير HOME مفقود دخبجصغنhunspell-1.7.2/po/an.po0000664000175000017500000003651414353370167011674 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:09+0000\n" "Last-Translator: Juan Pablo Martínez \n" "Language-Team: Aragonese \n" "Language: an\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "error - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "error - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "error - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "No se puede crear un directorio tmp" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "No puedo ubrir lo fichero de dentrada" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "No se puede ubrir %s.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "error - falta la variable HOME\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Linia %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "PROHIBIU!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Error ortografica?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tFichero: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[ESPACIO] S)ubstituyir A)cceptar I)nsertar M)inusclas R)adiz S(a)lir Z)arrar " "u ? pa l'aduya\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Siempre que se trobe una parola que no siga en o diccionario\n" "s'imprentará en a primer linia d'a pantalla. Si lo diccionario\n" "contién parolas pareixidas, se listan con un numero a lo\n" "costau de cadaúna. Tiens la opación de substituyir la parola\n" "u bien triar una d'as parolas sucheridas.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Las ordens son:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "S\tSubstituyir la parola mal escrita.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Espacio\tAcceptar la parola nomás esta vegada.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tAcceptar la parola en o que queda d'esta sesión.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tAcceptar la parola, y meter-la en o tuyo diccionario privau.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" "U\tAcceptar y anyadir la versión en minusclas ta lo diccionari privau.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "B\tDemandar una base u radiz y una parola modelo pa alzar-las en o " "diccionario privau.\n" "\tLa radiz será accpetada tamién con os afixos d'a parola modelo.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tSubstituyir con una d'as parolas sucheridas.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "X\tEscribir la resta d'esta fichero, ignorando las parolas mal escritas, y " "encomenzar con o siguient fichero.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "Q\tSale agora. Demanda confirmación. Deixa lo fichero sin cambiar.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tSuspender lo programa. Reiniciar con a orden fg.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tAmuestra esta pantalla d'aduya.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Escribe espacio pa continar -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "s" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Substituyir con: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "m" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "No se puede actualizar lo diccionario personal." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "b" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Nueva parola (base u radiz): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Parola modelo (una parola similar d'o diccionario): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "La parola modelo ha d'estar en o diccionario. Preta qualsequier tecla." #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "a" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Yes seguro que queretz aventar los cambios? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "s" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "No se puede crear lo fichero temporal" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "No se puede crear lo fichero de salida" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "USO: hunspell [OPCIÓN]... [FICHERO]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Comprebación ortografica de cada FICHERO. Sin FICHERO, compreba la dentrada " "standard.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\tcomprebar no más lo primer campo de cada linia (delimitador = " "tabulador)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tInterficie de tubería d'Ispell\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" " --check-url\tcheck URLs, adrezas de correu-e y camins d'os directorios\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tcompreba l'apostrofo tipografico d'Unicode\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\tfer servir los diccionarios d (d2 etc.)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tamostrar los diccionarios disponibles\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\timprentar nomás las parolas u linias correctas\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tamuestra esta aduya y sale\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tformato de fichero HTML\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i enc\tcodificación d'a dentrada\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\timprentar las parolas mal escritas\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\timprentar las linias con parolas mal escritas\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tanalisar las parolas d'o texto de dentrada\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tformato de fichero de dentrada nroff/troff\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr "" " -O\t\tformato de fichero de dentrada OpenDocument (ODF or Flat ODF)\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p dict\testableix dict como diccionario personalizau\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\talvierte de posibles errors (parolas estranyas)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P clau\testableix la clau pa diccionarios cifraus\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\tradiz d'as parolas d'o texto de dentrada\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tparolas de sufixo d'o texto de dentrada\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tformato de fichero de dentrada TeX/LaTeX\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\tescribe lo numero de versión\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\tescribo lo numero de versión compatible d'Ispell\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\timprenta las parolas mal escritas (= linias) d'una dentrada de " "parola/linia.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tformato de fichero de dentrada XML\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Eixemplo: hunspell -d en_US file.txt # corrección interactiva\n" " hunspell -i utf-8 file.txt # compreba lo fichero con " "codificación UTF-8\n" " hunspell -l *.odt # emprenta las parolas masl escritas " "de fichers ODF\n" "\n" " # Corrección rapida de documentos ODF por creación de diccionario " "personal\n" "\n" " # 1 Fe una lista reducida a partir d'as parolas mal escritas y " "desconoixidas:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Borra las parolas mal escritas d'o fichero con un editor de " "texto.\n" " # 3 Usa este diccionario personal pa apanyar las parolas borradas:\n" "\n" " hunspell -p words *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Reportes d'error: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Copyright (C) 2002-2014 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Basau en a biblioteca Myspell de OpenOffice.org.\n" "Copyright de Myspell (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Esto ye software libre; mire en o codigo fuent las condicions de copia. NO i " "hai\n" "garantía; ni sisquiera de COMERCIABILIDAT u ADEQUACIÓN PA UN OBCHECTIVO " "PARTICULAR,\n" "en a mida permitida per la lei.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "CAMÍN DE BUSQUEDA:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" "DICCIONARIOS DISPONIBLES (lo camín no ye obligatorio pa la opcion -d):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "DICCIONARIO CARGAU:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "error - %s supera lo limite d'o diccionario.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" "No se pueden ubrir los fichers d'afixo u de diccionari pa lo diccionario " "clamau \"%s\".\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hunspell s'ha compilau sin la interficie d'usuario de Ncurses.\n" hunspell-1.7.2/po/tr.po0000664000175000017500000003635714353370167011730 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-11-26 09:48+0000\n" "Last-Translator: Oğuz Ersen \n" "Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "hata - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "hata - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "hata - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "tmp dizini oluşturulamıyor" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Giriş dosyası açılamıyor" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "%s açılamıyor.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "hata - HOME değişkeni eksik\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Satır %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "YASAK!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Yazım hatası mı?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tDosya: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[SPACE] D)eğiştir kA)bul-et E)kle K)üçük-harf kÖ)k Ç)ıkış-yap kapaT) veya " "yardım için ?\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Sözlükte olmayan bir sözcük bulunduğunda, ekranın\n" "ilk satırına yazdırılır. Sözlük benzer sözcükler içeriyorsa,\n" "her birinin yanında bir numara bulunur. Sözcüğü tamamen\n" "değiştirme veya önerilen sözcüklerden birini seçme\n" "seçeneğine sahipsiniz.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Komutlar şunlardır:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "R\tYanlış yazılan sözcüğü tamamen değiştir.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Space\tSözcüğü yalnızca bu kez kabul et.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tBu oturumun geri kalanı için sözcüğü kabul et.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tSözcüğü kabul et ve özel sözlüğe ekle.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "U\tKabul et ve küçük harfli biçimini özel sözlüğe ekle.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "S\tBir kök ve model sözcük iste ve bunları özel sözlükte sakla.\n" "\tKök, model sözcüğün ekleriyle de kabul edilecektir.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tÖnerilen sözcüklerden biriyle değiştir.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "X\tYazım hatalarını yok sayarak bu dosyanın geri kalanını yaz ve sonraki " "dosyayı başlat.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "Q\tHemen çıkış yap. Onay için sor. Dosyayı değiştirmeden bırakır.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tProgramı durdur. fg komutuyla yeniden başlatın.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tBu yardım ekranını göster.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Devam etmek için space'e basın -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "d" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Şununla değiştir: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "k" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "e" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Kişisel sözlük güncellenemiyor." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "ö" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Yeni sözcük (kök): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Model sözcük (benzer bir sözlük sözcüğü): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "Model sözcük sözlükte bulunmalıdır. Herhangi bir tuşa basın!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "t" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "ç" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Değişikliklerinizi atmak istediğinizden emin misiniz? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "e" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Geçici dosya oluşturulamıyor" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Çıkış dosyası açılamıyor" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Kullanım: hunspell [SEÇENEK]... [DOSYA]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Her DOSYA'nın imlasını denetle. DOSYA yoksa, standart girişi denetle.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr " -1\t\tsatırlarda yalnızca ilk alanı denetle (ayırıcı = tab)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tIspell'in boru arayüzü\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" " --check-url\tURL'leri, e-posta adreslerini ve dizin yollarını denetle\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tUnicode tipografik kesme işaretini denetle\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\td (d2 vs.) sözlüklerini kullan\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tkullanılabilir sözlükleri göster\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\tyalnızca doğru sözcükleri veya satırları yazdır\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tbu yardımı görüntüle ve çık\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tHTML giriş dosyası biçimi\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i kod\tgiriş kodlaması\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\tyanlış yazılmış sözcükleri yazdır\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\tyanlış yazılmış sözcüklerin olduğu satırları yazdır\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tgiriş metninin sözcüklerini analiz et\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tnroff/troff giriş dosyası biçimi\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tOpenDocument (ODF veya Flat ODF) giriş dosyası biçimi\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p szlk\tözel sözlük olarak szlk'ü ayarla\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\tolası hatalar (nadir sözcükler) hakkında uyar\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P parola\tşifrelenmiş sözlükler için parolayı belirle\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\tgiriş metnindeki sözcüklerin kökünü al\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tgiriş metnindeki sözcüklere son ek ekle\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tTeX/LaTeX giriş dosyası biçimi\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\tsürüm numarasını yazdır\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\tIspell uyumlu sürüm numarasını yazdır\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\tbir sözcük/satır girişten yanlış yazılmış sözcükleri (= satırları) " "yazdır.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tXML giriş dosyası biçimi\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Örnek: hunspell -d tr_TR dosya.txt # etkileşimli yazım denetimi\n" " hunspell -i utf-8 dosya.txt # UTF-8 ile kodlanmış dosyayı " "denetle\n" " hunspell -l *.odt # ODF dosyalarındaki yanlış yazılmış " "sözcükleri denetle\n" "\n" " # ODF belgelerinin kişisel sözlük oluşturma ile hızlıca " "düzeltilmesi\n" "\n" " # 1 Yanlış yazılmış ve bilinmeyen sözcüklerden azaltılmış bir liste " "yapın:\n" "\n" " hunspell -l *.odt | sort | uniq >sözcükler\n" "\n" " # 2 Dosyadaki yanlış yazılmış sözcükleri bir metin düzenleyicisiyle " "silin.\n" " # 3 Silinen sözcükleri düzeltmek için bu kişisel sözlüğü " "kullanın.:\n" "\n" " hunspell -p sözcükler *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Hata raporları: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Telif Hakkı (C) 2002-2014 László Németh. Lisans: MPL/GPL/LGPL.\n" "\n" "OpenOffice.org'un Myspell kütüphanesi temel alınarak.\n" "Myspell'in Telif Hakkı (C) Kevin Hendricks, 2001-2002, Lisans: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Bu özgür bir yazılımdır; kopyalama koşulları için kaynağa bakınız. HİÇBİR\n" "garantisi yoktur; kanunun izin verdiği ölçülerde, PAZARLANABİLİRLİK veya\n" "BELİRLİ BİR AMACA UYGUNLUK bile.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "ARAMA YOLU:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "KULLANILABİLİR SÖZLÜKLER (-d seçeneği için yol zorunlu değildir):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "YÜKLENEN SÖZLÜK:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "hata - %s sözlük limitini aşıyor.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "\"%s\" isimli sözlük için ek veya sözlük dosyaları açılamıyor.\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hunspell, Ncurses kullanıcı arayüzü olmadan derlendi.\n" hunspell-1.7.2/po/pt_BR.po0000664000175000017500000003652514353370167012306 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:08+0000\n" "Last-Translator: Deleted User \n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "erro - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "erro - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "erro - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Não foi possível criar diretório temp" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Não foi possível abrir o arquivo de entrada" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Não foi possível abrir %s.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "erro - faltando a variável HOME\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Linha %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "PROIBIDO!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Erro ortográfico?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\tArquivo: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[ESPAÇO] S)ubst A)ceit I)nserir min(U)s R)aiz S)air (T)erminar ou ? para " "ajuda\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Sempre que se descobre que uma palavra não está no dicionário,\n" "ela é impressa na primeira linha da tela. Se o dicionário\n" "contiver quaisquer palavras similares, elas são listadas com\n" "um número ao lado de cada uma. Você tem a opção de substituir\n" "completamente a palavra, ou escolher uma das palavras sugeridas.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Os comandos são:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "S\tSubstitui completamente a palavra com erro ortográfico.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Espaço\tAceita a palavra somente dessa vez.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tAceita a palavra para o resto dessa sessão.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tAceita a palavra e a coloca em seu dicionário privado.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "U\tAceita e adiciona a versão minúscula ao dicionário privado.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "S\tPede uma raiz e uma palavra modelo e as armazena no dicionário privado.\n" " \tA raiz também será aceita com afixos da palavra modelo.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tSubstitui com uma das palavras sugeridas.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "X\tEscreve o resto deste arquivo, ignorando erros ortográficos e inicia o " "próximo arquivo.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" "S\tSai imediatamente. Pede por confirmação. Deixa o arquivo inalterado.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tSuspende o programa. Reinicie com o comando fg.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tMostra essa tela de ajuda.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Pressione espaço para continuar -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "s" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Substituir por: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "u" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Não foi possível atualizar o dicionário pessoal." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "r" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Nova palavra (raiz): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Palavra modelo (uma palavra similar do dicionário): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "A palavra modelo deve estar no dicionário. Pressione qualquer tecla!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "t" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "s" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Tem certeza que você deseja descartar suas alterações? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "s" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Não foi possível criar o arquivo temp" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Não foi possível abrir o arquivo de saída" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Uso: hunspell [OPÇÃO]... [ARQUIVO]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Verifica a ortografia de cada ARQUIVO. Sem ARQUIVO, verifica a entrada " "padrão.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\tverifica apenas o primeiro campo em linhas (delimitador = " "tabulação)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tinterface pipe do Ispell\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" " --check-url\tverifica URLs, endereços de e-mail e caminhos de diretórios\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tverifica apóstrofo tipográfico de Unicode\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\tusa os dicionários d (d2 etc.)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tmostra os dicionários disponíveis\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\texibe apenas palavras ou linhas corretas\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\texibe esta ajuda e sai\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tformato de arquivo de entrada HTML\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i cod\tcodificação de entrada\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\texibe palavras com erro ortográfico\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\texibe linhas com erro ortográfico\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tanalisa as palavras do texto de entrada\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tformato de arquivo de entrada nroff/troff\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tformato de arquivo de entrada OpenDocument (ODF ou Flat ODF)\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p dic\tdefine um dicionário personalizado\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\tavisa sobre possíveis erros (palavras raras)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P senha\tdefine senha para dicionários criptografados\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\tenraíza as palavras do texto de entrada\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tsufixa palavras do texto de entrada\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tformato de arquivo de entrada TeX/LaTeX\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\texibe o número de versão\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\texibe o número de versão compatível com Ispell\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\texibe palavras com erros ortográficos (= linhas) de entrada de uma " "palavra/linha.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tformato de arquivo de entrada XML\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Exemplo: hunspell -d pt_BR arq.txt # verificação ortográfica interativa\n" " hunspell -i utf-8 arq.txt # verifica arquivo codificado em " "UTF-8\n" " hunspell -l *.odt # exibe erros ortográficos em " "arquivos ODF\n" "\n" " # Correção rápida de documentos ODF por criação de dicionário " "pessoal\n" "\n" " # 1 Faça uma lista reduzida de palavras com erro de escrita e " "desconhecidas:\n" "\n" " hunspell -l *.odt | sort | uniq >palavras\n" "\n" " # 2 Exclua palavras com erros ortográficos do arquivo por um editor " "de texto.\n" " # 3 Use esse dicionário pessoal para corrigir as palavras " "excluídas:\n" "\n" " hunspell -p palavras *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Relatórios de erro: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Copyright (C) 2002-2014 László Németh. Licença: MPL/GPL/LGPL.\n" "\n" "Baseado na biblioteca Myspell do OpenOffice.org.\n" "Copyright do Myspell (C) Kevin Hendricks, 2001-2002, Licença: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Esse é um software livre; veja o código-fonte para condições de cópia.\n" "Há NENHUMA garantia; nem mesmo para COMERCIABILIDADE ou ADEQUAÇÃO PARA\n" "UM PROPÓSITO PARTICULAR, na extensão permitida pela lei.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "CAMINHO DE PESQUISA:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "DICIONÁRIOS DISPONÍVEIS (caminho não é obrigatório para opção -d):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "DICIONÁRIO CARREGADO:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "erro - %s excede o limite de dicionários.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" "Não foi possível arquivos de dicionário ou afixos para o diretório chamado " "\"%s\".\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hunspell foi compilado sem a interface de usuário Ncurses.\n" hunspell-1.7.2/po/uz.po0000664000175000017500000003602314353370167011727 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.7.1\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-12-01 12:48+0000\n" "Last-Translator: Akmal Xushvaqov \n" "Language-Team: Uzbek \n" "Language: uz\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "xato - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "xato - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "xato - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "tmp katalogi yaratilmadi" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Fayl ochilmadi" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "%s ochilmadi.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "xato - HOME oʻzgaruvchisi mavjud emas\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Qator %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "TAQIQLANGAN!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Imlo xatomi?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tFayl: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[PROBEL] A)lmash Q)abul Qoʻy)ish K)ichik A)sos chiQ)ish Tu(g)atish yoki " "yordam uchun ?\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Lugʻatda boʻlmagan soʻz uchrasa u ekranning birinchi\n" "qatorida koʻrsatiladi. Agar lugʻatda oʻxshash soʻzlar boʻlsa,\n" "ular raqamlar ostida roʻyxati beriladi Toʻliq soʻzni almashtirishingiz\n" "yoki taklif qilinganlardan birini tanlashingiz mumkin.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Buyruqlar:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "R\tXato soʻzni toʻliq almashtirish\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Space\tBu soʻzni faqat bir marta qabul qilish.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tSoʻzni seans oxirigacha qabul qilish.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tSoʻzni qabul qilish va shaxsiy lugʻatga joylash.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" "U\tQabul qilish va soʻzni kichik harfi bilan shaxsiy lugʻatga qoʻshish.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "S\tSoʻzning asosi va modelini soʻrash va ularni shaxsiy lugʻatga saqlash.\n" "\tAsos soʻz modelining qoʻshimchalari bilan ham qabul qilinadi.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tTavsiya qilingan soʻzlarning biriga almashtirish.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "X\tImlo xatolariga eʼtibor bermasdan ushbu faylning qolgan qismini yozish va " "keyingi faylni boshlash.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "Q\tTezda chiqish. Tasdiqlash soʻraladi. Fayl oʻzgarmasdan qoladi.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tDasturni toʻxtatish. fg buyrugʻi bilan qayta boshlanadi.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tBu yordam matnini koʻrsatish.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Davom etish uchun Probel tugmasini bosing -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "r" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Almashtirish: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "u" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Shaxsiy lugʻat yangilanmadi." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "s" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Yangi soʻz (asos): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Model soʻz (lugʻatdagi soʻz bilan bir xil): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "Model soʻz lugʻatda boʻlishi kerak. Istalgan tugmani bosing!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "x" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "q" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Oʻzgarishlarni rad qilishni xohlaysizmi? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "y" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Vaqtinchalik fayl yaratilmadi" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Chiqish fayli ochilmadi" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Foydalanish: hunspell [PARAMETR]... [FAYL]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Har bir FAYL imlosini tekshirish. Agar FAYL koʻrsatilmasa, standart kiritish " "tekshiriladi.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\tqatordagi faqat birinchi maydonni tekshirish (ajratkich = " "tabulyator)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tIspell kanal interfeysi\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" " --check-url\tURL, e-mail manzillari va fayllar jild yoʻllarini tekshirish\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tUnicode tipografik apostrofni tekshirish\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\td (d2 va boshqa) lugʻatlardan foydalanish\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tmavjud lugʻatlarni koʻrsatish\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\tfaqat toʻgʻri soʻz yoki qatorlarni chop etish\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tyordam koʻrsatish va chiqish\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tHTML kirish fayli formati\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i enc\tkiruvchi shifrlash\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\txato soʻzlarni koʻrsatish\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\txato soʻzlar bor qatorlarni koʻrsatish\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tkiruvchi matn soʻzlarini tashxis qilish\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tnroff/troff kiruvchi fayl formati\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tOpenDocument (ODF yoki Flat ODF) kiruvchi fayl formati\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p dict\tfoydalanuvchi lugʻatini ulash\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr "" " -r\t\tehtimoliy xatolar (kam uchraydigan soʻzlar) boʻyicha ogohlantirish\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P password\tshifrlangan lugʻatlar uchun parol oʻrnatish\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\tsoʻzlarni matndan lugʻat shakliga oʻtkazish\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tkiruvchi matn soʻzlari uchun soʻz shakllarini yaratish\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tTeX/LaTeX kiruvchi fayl formati\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\tversiya raqamini koʻrsatish\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\tIspell versiyasi bilan mosligini koʻrsatish\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr " -w\t\tXato soʻzlarni koʻrsatish (kirish – qatorda bitta soʻz).\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tXML kiruvchi fayl formati\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Namuna: hunspell -d uz_UZ fayl.txt # interaktiv tekshirish\n" " hunspell -i utf-8 fayl.txt # UTF-8 shifrdagi faylni tekshirish\n" " hunspell -l *.odt # ODF fayldagi xato soʻzlarni " "koʻrsatish\n" "\n" " # Foydalanuvchi lugʻatini yaratish orqali ODF fayllarini tez " "tuzatish\n" "\n" " # 1 Nomaʼlum soʻzlar va notoʻgʻri yozilgan soʻzlar roʻyxatini " "tuzing:\n" "\n" " hunspell -l *.odt | sort | uniq >soʻz\n" "\n" " # 2 Matn muharririda fayldan notoʻgʻri yozilgan soʻzlarni " "oʻchiring.\n" " # 3 Xatolarni tuzatish uchun ushbu lugʻatdan foydalaning:\n" "\n" " hunspell -p soʻz *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Nosozlik hisobotlari: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Copyright (C) 2002-2014 László Németh. Litsenziya: MPL/GPL/LGPL.\n" "\n" "OpenOffice.org Myspell kutubxonasi asosida.\n" "Myspell: copyright (C) Kevin Hendricks, 2001-2002, Litsenziya: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Bu bepul dasturiy taʼminot; nusxa koʻchirish shartlari uning manba kodlarida " "koʻrsatilgan.\n" "Litsenziya hech qanday kafolat bermaydi; xususan, qonun doirasida\n" "muayyan maqsadni bajarish yoki yaroqlilik kafolatlari boʻyicha.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "QIDIRUV YOʻLI:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "MAVJUD LUGʻATLAR (-d uchun yoʻl kerak emas):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "YUKLANGAN LUGʻAT:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "xato - %s lugʻat cheklovidan oshib ketdi.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "\"%s\" uchun lugʻat yoki qoʻshimchalar fayli ochilmadi.\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hunspell Ncurses interaktiv interfeysisiz tuzilgan.\n" hunspell-1.7.2/po/es.po0000664000175000017500000003655314353370167011710 00000000000000# Spanish translation of hunspell. # Copyright (C) 2016 Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # Adolfo Jayme Barrientos , 2016. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:08+0000\n" "Last-Translator: Toni Estévez \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "error: iconv_open: %s → %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "error: iconv: %s → %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "error: iconv_open: UTF-8 → %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "No se puede crear la carpeta «tmp»" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "No se puede abrir el archivo de entrada" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "No se puede abrir «%s».\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "error: falta la variable HOME\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Línea %d: %s → " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "¡PROHIBIDO!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "¿Error ortográfico?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tArchivo: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[ESP.] R)eemp. A)cepta I)nserta M)inús. B)ase T)ermina O)mite o ? para " "ayuda\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Siempre que se halle una palabra que no esté en el diccionario\n" "esta aparecerá en el primer renglón de la pantalla. Si el diccionario\n" "contiene palabras similares, se enumerarán como opciones.\n" "Podrá elegir entre sustituir la palabra completamente,\n" "o bien, elegir una de las palabras sugeridas.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Las órdenes son:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "R\tReemplazar la palabra mal escrita por completo.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Espacio\tAceptar la palabra solo por esta vez.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tAceptar la palabra por el resto de esta sesión.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tAceptar la palabra y añadirla a su diccionario privado.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "M\tAceptar y añadir versión en minúsculas al diccionario privado.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "B\tSolicitar una base (raíz o tema) y una palabra modelo y guardarlas en el " "dicc. privado.\n" "\tLa base se aceptará también con los afijos de la palabra modelo.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0–n\tReemplazar por una de las palabras sugeridas.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "O\tGrabar el resto de este archivo saltándose los errores y comenzar con el " "próximo.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" "T\tFinalizar de inmediato. Solicita confirmación. Deja el archivo sin " "modificar.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tSuspender el programa. Reinícielo con la orden «fg».\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tMostrar esta pantalla de ayuda.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Oprima Espacio para continuar -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "r" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Reemplazar por: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "m" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "No se puede actualizar el diccionario personal." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "b" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Palabra nueva (base): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Palabra modelo (una palabra de diccionario similar): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" "La palabra modelo debe existir en el diccionario. Oprima cualquier tecla." #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "o" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "t" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "¿Confirma que quiere descartar sus cambios? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "s" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "No se puede crear el archivo temporal" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "No se puede abrir el archivo de salida" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Uso: hunspell [OPCIÓN]… [ARCHIVO]…\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Revisar la ortografía del ARCHIVO. Sin ARCHIVO, revisar la entrada " "estándar.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\trevisar solo el primer campo en los renglones (delimitador = " "tabulador)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tInterfaz de canalización de Ispell\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" " --check-url\trevisar URL, direcciones de correo y rutas de carpetas\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\trevisar apóstrofo tipográfico de Unicode\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,…]\tusar diccionarios d (d2, etc.)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tmostrar los diccionarios disponibles\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\tmostrar solo palabras o renglones correctos\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tmostrar esta ayuda y salir\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tformato de archivo de entrada HTML\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i enc\tcodificación de entrada\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\tmostrar las palabras mal escritas\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\tmostrar renglones con palabras mal escritas\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tanalizar las palabras del texto de entrada\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tformato de archivo de entrada nroff/troff\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tformato de archivo de ent. OpenDocument (ODF u ODF plano)\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p dict\testablecer diccionario personalizado dict\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\talertar de faltas posibles (palabras inusuales)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P password\testablecer contraseña para diccionarios cifrados\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\tseparar las bases en el texto de entrada\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tsufijar las palabras en el texto de entrada\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tformato de archivo de entrada TeX/LaTeX\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\tmostrar el número de versión\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\tmostrar número de versión compatible con Ispell\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\tmostrar palabras mal escritas (= renglones) de una entrada de " "palabra/renglón.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tformato de archivo de entrada XML\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Ejemplo: hunspell -d es_MX archivo.txt # revisión interactiva\n" " hunspell -i utf-8 archivo.txt # revisar archivo codificado en " "UTF-8\n" " hunspell -l *.odt # ver palabras erróneas en archivos " "ODF\n" "\n" " # Corrección rápida de documentos ODF mediante creación de dicc. " "personales\n" "\n" " # 1 Haga una lista breve de palabras mal escritas y desconocidas:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Elimine las palabras mal escritas del archivo con un editor de " "textos.\n" " # 3 Use este diccionario personal para corregir las palabras " "eliminadas:\n" "\n" " hunspell -p words *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Informes de errores: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Derechos de autor © 2002–2014 László Németh. Licencia: MPL/GPL/LGPL.\n" "\n" "Basado en la biblioteca Myspell de OpenOffice.org.\n" "Derechos de autor de Myspell © Kevin Hendricks, 2001–2002; licencia: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Este programa es libre; consulte las condiciones de copia en el código " "fuente. NO hay\n" "garantías, ni siquiera las de COMERCIABILIDAD o APTITUD PARA ALGÚN FIN " "PARTICULAR,\n" "en la medida en que lo permitan las leyes.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "RUTA DE BÚSQUEDA:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "DICCIONARIOS DISPONIBLES (ruta no obligatoria si usa la opción -d):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "DICCIONARIO CARGADO:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "error: %s supera el límite del diccionario.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "No se pueden abrir los archivos de afijos o de diccionario de «%s».\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hunspell se ha compilado sin la interfaz de usuario Ncurses.\n" hunspell-1.7.2/po/ru.po0000664000175000017500000004274514353370167011727 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:09+0000\n" "Last-Translator: Bogdan Khomutsky \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "ошибка - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "ошибка - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "ошибка - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Ошибка создания временной директории" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Ошибка открытия файла" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Ошибка открытия %s\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "ошибка - отсутствует переменная HOME\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Строка %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "ЗАПРЕЩЕНО!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Орфографическая ошибка?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s Файл: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[ПРОБЕЛ] З)амен П)ринять в(С)тавить М)ал О)снов В)ыйти за(К)ончить или ? для " "справки\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Всякий раз, когда встречается слово, которого нет в словаре\n" "оно будет отображено в первой строке экрана. Если в словаре\n" "содержатся любые похожие слова, они будут перечислены\n" "под номерами. Вы можете заменить слово полностью или\n" "выбрать одно из предложенных.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Команды:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "R\tЗаменить полностью слово с ошибкой.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Пробел\tПринять это слово только один раз.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tПринимать слово до конца сеанса.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tПринять слово и поместить в собственный словарь.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "U\tПринять и добавить слово строчными буквами в собственный словарь.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "S\tСпросить основу и образец слова и сохранить их в собственном словаре.\n" "\tОснова будет считаться приемлемой, если использованы аффиксы модели " "слова.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tЗаменить одним из предложенных слов.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "X\tЗаписать остальную часть этого файла, игнорируя орфографические ошибки, и " "начать следующий файл.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" "Q\tВыйти немедленно. Спрашивает подтверждение. Оставляет файл без " "изменений.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tПриостановить программу. Продолжение по команде fg.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tПоказать этот справочный текст.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Для продолжения нажмите Пробел -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "r" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Заменить на: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "u" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Не удалось обновить словарь пользователя." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "s" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Новое слово (слов. форма): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Слово-образец (из словаря): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "Образец слова должен быть в словаре! Нажмите любую клавишу!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "x" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "q" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Вы хотите отказаться от изменений? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "y" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Не удалось создать временный файл" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Не удалось открыть выходной файл" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Использование: hunspell [ПАРАМЕТР]... [ФАЙЛ]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Проверка орфографии каждого ФАЙЛА. Если ФАЙЛ не указан, то стандартный " "ввод.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\tпроверять только первое поле в строке (разделитель = табулятор)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tканальный интерфейс Ispell\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr " --check-url\tпроверка адресов URL, эл. почты и имен файлов\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tпроверка типографского апострофа\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d сл[,сл2,...]\tиспользовать словари сл (сл2 и т.д.)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tпоказать доступные словари\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\tпечать только правильных слов/строк\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tвывести справку и выйти\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tвходной файл HTML\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i код\tвходная кодировка\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\tпечать неправильных слов\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\tпечать строк с ошибками\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tанализ слов входного текста\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tвходной файл nroff/troff\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tвходной файл OpenDocument (ODF или Flat ODF)\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p слов\tподключить пользовательский СЛОВарь\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\tпредупреждать о редких словах\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P password\tустановить пароль для зашифрованных словарей\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\tпривести слова из текста к словарной форме\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tгенерация словоформ для слов входного текста\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tвходной файл TeX/LaTeX\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\tвывод номера версии\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\tпечать совместимой с Ispell версии\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr " -w\t\tпечать слов с ошибками (вход - одно слово на строке).\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tвходной файл XML\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Пример: hunspell -d ru_RU файл.txt # интерактивная проверка\n" " hunspell -i utf-8 файл.txt # проверка файла в кодировке UTF-8\n" " hunspell -l *.odt # печать слов с ошибками из файлов " "ODF\n" "\n" " # Быстрое исправление файлов ODF путём создания пользовательского " "словаря\n" "\n" " # 1 Создайте список неизвестных слов и слов с ошибками:\n" "\n" " hunspell -l *.odt | sort | uniq >слова\n" "\n" " # 2 Удалите слова с ошибками из файла в текстовом редакторе.\n" " # 3 Используйте этот словарь для исправления ошибок:\n" "\n" " hunspell -p слова *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Баг-трекер: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Copyright (C) 2002-2014 Ласло Немет. Лицензия: MPL/GPL/LGPL.\n" "\n" "Основано на библиотеке Myspell из OpenOffice.org.\n" "Myspell: copyright (C) Кевин Хендрикс, 2001-2002, Лицензия: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Это свободное программное обеспечение; условия копирования изложены в его " "исходных кодах.\n" "Лицензия не предусматривает никаких гарантий; в частности гарантий " "работоспособности или пригодности\n" "для определенной цели, в рамках законодательства.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "ПУТЬ ПОИСКА:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "ДОСТУПНЫЕ СЛОВАРИ (для -d путь не обязателен):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "ЗАГРУЖЕН СЛОВАРЬ:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "ошибка - %s превосходит предел словарей.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "Не удалось открыть файл словаря или аффиксов для \"%s\".\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hunspell был собран без интерактивного интерфейса Ncurses.\n" hunspell-1.7.2/po/hu.po0000664000175000017500000003653214353370167011712 00000000000000# Hungarian translation of hunspell. # Copyright (C) 2005 Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # Laszlo Nemeth , 2005. # Laszlo Dvornik , 2005. # msgid "" msgstr "" "Project-Id-Version: hunspell\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:08+0000\n" "Last-Translator: flekken \n" "Language-Team: Hungarian \n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "hiba - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "hiba - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "hiba - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "A tmp könyvtár nem hozható létre" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Nem lehet megnyitni a bemeneti állományt" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Nem lehet megnyitni a(z) %s-t.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "hiba - nincs definiálva a HOME környezeti változó\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "%d. sor: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "TILTOTT!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Helyesírási hiba?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tÁllomány: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "Szóköz=tovább C)sere J)ó F)elvesz K)isbetűvel T)ő M)égsem V)ége ?" "=Súgó\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "A hibás, vagy fel nem ismert szavak az első sorban jelennek meg.\n" "Amennyiben van javítási javaslat, az számozott lista formájában\n" "jelenik meg. A sorszám leütésével választhatunk ki ezek közül\n" "egyet, de megadhatunk akár egy új szót is.\n" "Részletes leírás a program lehetőségeiről: man hunspell.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Billentyűparancsok: \n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "C\tA hibás szó kicserélése egy megadott szóra.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Szóköz\tA szó egyszeri átugrása változtatás nélkül.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "J\tA szó minden előfordulását jónak tekinti a program futása során.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "" "F\tA szót felveszi a saját szótárba, így új indításkor is ismerni fogja.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "K\tMint az előző, de a szót kisbetűsen veszi fel a saját szótárba.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "T\tSzótő és mintaszó bekérése és saját szótárban való tárolása.\n" "\tA tő felveheti a mintául megadott szó toldalékait is.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tCserélje le a javasolt szavak egyikére.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "X\tMentse az eddigi javításokat a helyesírási hibák figyelmen kívül " "hagyásával, és váltson a következő fájlra.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "M\tKilép a javítások mentése nélkül, de előtte megerősítést kér.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tA program felfüggesztése. Újraindítás fg paranccsal.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tEnnek a leírásnak a megjelenítése.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Továbblépés a szóköz billentyű leütésével -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "c" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Csere: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "k" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "f" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Nem lehet frissíteni a saját szótárat." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "j" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "t" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Új szó(tő): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Mintaszó (egy hasonló szótári szó): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" "A mintaszónak szerepelnie kell a szótárban. Nyomjon meg egy billentyűt!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "v" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "m" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Kilép a módosítások mentése nélkül (i/n)? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "i" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Nem lehet létrehozni átmeneti állományt" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Nem lehet megnyitni a kimeneti állományt" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Használat: hunspell [KAPCSOLÓ]... [ÁLLOMÁNY]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Az ÁLLOMÁNY(OK) (ennek hiányában a szabványos bemenet) helyesírását " "ellenőrzi.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\tcsak az első mezőt ellenőrzi a sorban (mezőhatároló = tabulátor)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tIspell-szerű csőfelület\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr " --check-url\tURL-ek, e-mail címek és útvonalak ellenőrzése\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tUnicode tipográfiai aposztróf ellenőrzése\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\ta d (d2 stb.) nevű szótárat használja\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\taz elérhető szótárak kilistázása\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\tkiírja a bemenet helyes szavait vagy sorait\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tkiírja ezt a leírást\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tHTML bemeneti formátum\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i kód\tbemeneti karakterkódolás\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\tkiírja a hibás szavakat\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\tkiírja a hibás sorokat\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tszövegszavak morfológiai elemzése\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tnroff/troff bemeneti formátum\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tOpenDocument (ODF vagy Flat ODF) bemeneti formátum\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p tár\ta tár nevű saját szótárat használja\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\tlehetséges hibák (ritka szavak) jelzése\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P jelszó\tJelszó megadása a titkosított szótárakhoz\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\tszövegszavak tövezése\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tszövegszavak tövezése\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tTeX/LaTeX bemeneti formátum\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\tkiírja a változat számát\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\tkiírja a változat számát Ispell-szerűen\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr " -w\t\tkiírja a hibás szavakat a soronként egy szavas bemenetből.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tXML bemeneti formátum\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Példák: hunspell -d en_US szöveg.txt # interaktív helyesírás-ellenőrzés\n" " hunspell -i utf-8 szöveg.txt # UTF-8-as karakterkódolású állomány " "ellenőrzése\n" " hunspell -l *.odt # kiírja az ODF dokumentumok hibás " "szavait\n" "\n" " # ODF dokumentumok gyors javítása saját szótár létrehozásával\n" "\n" " # 1. Készítsünk csökkentett szólistát a hibás és ismeretlen " "szavakból:\n" "\n" " hunspell -l *.odt | sort | uniq >szavak\n" "\n" " # 2. Töröljük a hibás szavakat az állományból egy " "szövegszerkesztővel.\n" " # 3. Használjuk ezt saját szótárként a törölt szavak javításához:\n" "\n" " hunspell -p szavak *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Hibajelzés: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Copyright (C) 2002-2014 Németh László. Licenc: MPL/GPL/LGPL.\n" "\n" "Az OpenOffice.org Myspell programkönyvtárán alapul.\n" "MySpell copyright (C) Kevin Hendricks, 2001-2002, Licenc: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Ez egy szabad szoftver: lásd a forráskódot a licencfeltételekről.\n" "NINCS garancia, még az eladhatóságra vagy valamely célra való\n" "alkalmazhatóságra sem.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "KERESÉSI ÚTVONAL:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "ELÉRHETŐ SZÓTÁRAK (az útvonal nem kötelező a -d kapcsolónál):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "BETÖLTÖTT SZÓTÁR:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "hiba - %s meghaladja a szótárlimitet.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "Nem lehet megnyitni a ragozási vagy a szótárállományt (szótár: %s).\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "A Hunspell Ncurses felhasználói felület nélkül lett fordítva.\n" hunspell-1.7.2/po/tg.po0000664000175000017500000004374214353370167011711 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # Victor Ibragimov , 2017. # msgid "" msgstr "" "Project-Id-Version: Tajik Hunspell\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:08+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Tajik \n" "Language: tg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "хато - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "хато - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "хато - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Феҳристи tmp эҷод карда намешавад" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Файли inputfile кушода намешавад" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "%s кушода намешавад.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "хато - тағйирёбандаи HOME вуҷуд надорад\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Хати %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "МАМНӮЪ!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Имло хато дорад?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tФайл: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Ҳар вақте ки калима берун аз луғат пайдо мешавад,\n" "он дар якум сатри экран чоп карда мешавад. Агар луғат\n" "дорои калимаҳои монанд бошад, онҳо бо рақам дар рӯйхат\n" "намоиш дода мешаванд. Шумо метавонед калимаро комилан иваз кунед\n" "ё ин ки онро бо яке аз калимаҳои пешниҳодшуда иваз намоед.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Фармонҳо:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "И\tИваз кардани ҳамаи калимаҳо бо хатоҳо.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Фосила\tКалимаро танҳо ин дафъа қабул кунед.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "К\tКалимаро танҳо то анҷоми ин ҷаласа қабул кунед.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tКалимаро қабул кунед ва онро ба луғати шахсӣ гузоред.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" "U\tВариантҳоро бо калимаҳои хурд қабул кунед ва ба луғати шахсӣ гузоред.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "S\tКалимаҳои асосӣ ва намунавиро дархост кунед ва онҳоро ба луғати шахсӣ " "гузоред.\n" "\tКалимаҳои асосӣ инчунин бо аффиксҳои калимаҳои намунавӣ қабул карда " "мешаванд.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tИваз кардан бо яке аз калимаҳои пешниҳодшуда.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "X\tФайлро то охир сабт намоед, хатоҳои имлоро нодида гузаронед ва файли " "навбатиро кушоед.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" "Х\tДарҳол хомӯш кунед. Тасдиқкуниро дархост мекунад. Файлро бетағйир " "мемонад.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tТаваққуф кардани барнома. Бо фармони fg бозоғозӣ кунед.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tНамоиш додани ин экрани кумакрасон.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Барои идома тугмаи ФОСИЛА-ро пахш намоед -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "r" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Иваз кардан бо: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "u" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Луғати шахсӣ нав карда намешавад." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "s" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Калимаи нав (асос): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Калимаи намунавӣ (калимаи намунавии луғат): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "Калимаи намунавӣ бояд дар луғат бошад. Ягон тугмаро пахш намоед!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "x" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "q" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Шумо мутмин ҳастед, ки мехоҳед тағйироти худро бекор кунед? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "y" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Файли tempfile эҷод карда намешавад" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Файли outputfile эҷод карда намешавад" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Тарзи истифода: hunspell [OPTION]... [FILE]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Санҷиши имло дар ҳар як ФАЙЛ. Бе ФАЙЛ, вуруди стандартиро санҷед.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\tтанҳо майдони якуми сатрҳоро санҷед (маҳдудкунанда= табулятор)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tИнтерфейси хати Ispell\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" " --check-url\tсуроғаҳои URL, суроғаҳои почтаи электронӣ ва масирҳои " "луғатҳоро тафтиш мекунад\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tапострофи матбаавии Unicode-ро тафтиш мекунад\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\tлуғатҳоро (d2 ва ғайра) истифода мебарад\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tлуғатҳои дастрасро намоиш медиҳад\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\tтанҳо сатрҳо ё калимаҳои дурустро чоп мекунад\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tин кумакро намоиш диҳед ва бароед\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tФормати файли вурудии HTML\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i enc\tрамзгузории вуруд\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\tкалимаҳоро бо хатоҳо чоп мекунад\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\tсатрҳоро бо хатоҳо чоп мекунад\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tкалимаҳои матни вурудиро таҳлил мекунад\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tФормати файли вурудии nroff/troff\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tФайли формати вурудии OpenDocument (ODF ё ODF Оддӣ)\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p dict\tлуғати фармоишии dict-ро танзим мекунад\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr "" " -r\t\tдар бораи хатоҳои имконпазир (калимаҳои камёб) ҳушдор мекунад\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P password\tбарои луғатҳои рамздор паролро танзим мекунад\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\tкалимаҳоро аз матни вурудӣ ба вуҷуд меорад\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tба калимаҳо аз матни вурудӣ пасвандҳоро илова мекунад\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tФормати файли вурудии TeX/LaTeX\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\tрақами версияро чоп мекунад\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\tрақами версияи мувофиқи Ispell-ро чоп мекунад\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\tкалимаҳоро бо хатоҳо (= хатҳо) яз як калима/хати вурудӣ чоп " "мекунад.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tФормати файли вурудии XML\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Мисол: hunspell -d en_US file.txt # санҷиши имлои интерактивӣ\n" " hunspell -i utf-8 file.txt # файли рамздори UTF-8-ро тафтиш " "мекунад\n" " hunspell -l *.odt # калимаҳоро бо хатоҳо аз файлҳои ODF " "оп мекунад\n" "\n" " # Ислоҳи тезкор дар ҳуҷҷатҳои ODF тавассути эҷодкунии луғатҳои " "шахсӣ\n" "\n" " # 1 Рӯйхати кутоҳро аз калимаҳои номаълум ё хатоҳо эҷод кунед:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Калимаҳоро бо хатоҳо аз файл тавассути муҳаррири матн нест " "кунед.\n" " # 3 Барои ислоҳ кардани калимаҳои нестшуда аз ин луғати шахсӣ " "истифода баред:\n" "\n" " hunspell -p words *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Гузоришҳо дар бораи хатоҳо: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Ҳуқуқи муаллиф (C) 2002-2014 László Németh. Иҷозатнома: MPL/GPL/LGPL.\n" "\n" "Дар асоси китобхонаи Myspell аз OpenOffice.org.\n" "Ҳуқуқи муаллифи Myspell (C) Kevin Hendricks, 2001-2002, Иҷозатнома: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Ин нарамафзори ройгон аст. Барои қоидаҳои нусхабардорӣ ба манбаъ нигаред. " "Ягон\n" "кафолат дода намешавад; ва инчунин барои мақсадҳои ФУРӮШӢ ё МУВОФИҚАТ БА " "МАҚСАДИ МАХСУС,\n" "дар ҳудуди қонунгузорӣ, ягон кафолат дода намешавад.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "МАСИРИ ҶУСТУҶӮ:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "ЛУҒАТҲОИ ДАСТРАС (масир барои имкони -d ҳатмӣ нест):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "ЛУҒАЛИ БОРШУДА:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "хато - %s маҳдудияти луғатро меафзояд.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "Файлҳо affix ё dic барои луғати \"%s\" кушода намешавад.\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hunspell бе интерфейси графикии Ncurses таҳия карда шудааст.\n" hunspell-1.7.2/po/ca.po0000664000175000017500000003671414353370167011663 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:09+0000\n" "Last-Translator: Robert Antoni Buj Gelonch \n" "Language-Team: Catalan \n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "error: iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "error: iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "error: iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "No es pot crear el directori temporal" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "No es pot obrir el fitxer d'entrada" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "No es pot obrir %s.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "error: falta la variable HOME\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Línia %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "PROHIBIT!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Error ortogràfic?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tFitxer: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[ESPAI] S)ubstitueix A)ccepta I)nsereix M)inúscules A(r)rel S(u)rt T)anca " "o ? per a l'ajuda\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Sempre que es trobi una paraula que no estigui al diccionari\n" "s'imprimeix a la primera línia de la pantalla. Si el diccionari\n" "conté paraules semblants, es llisten amb un número al\n" "costat de cadascuna. Teniu l'opció de substituir la paraula\n" "completament o triar una de les paraules suggerides.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Les ordres són:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "R\tSubstitueix completament la paraula mal escrita.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Espai\tAccepta la paraula només aquesta vegada.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tAccepta la paraula per al que queda d'aquesta sessió.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tAccepta la paraula i la posa al vostre diccionari privat.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "U\tAccepta i afegeix la versió en minúscules al diccionari privat.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "S\tDemana una arrel i una paraula model i emmagatzema-ho al diccionari " "privat.\n" "\tL'arrel també serà acceptada amb els afixes de la paraula model.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tSubstitueix amb una de les paraules suggerides.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "X\tEscriu el que queda d'aquest fitxer, ignorant els errors ortogràfics, i " "comença amb el següent fitxer.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" "Q\tSurt immediatament. Demana la confirmació. Deixa el fitxer sense " "modificar.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tSuspèn el programa. Reinicia amb l'ordre fg.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tMostra aquesta pantalla d'ajuda.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- premeu espai per continuar -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "s" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Substitueix amb: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "m" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "No es pot actualitzar el diccionari personal." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "r" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Paraula nova (arrel): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Paraula model (similar a una paraula de diccionari): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "La paraula model ha d'estar al diccionari. Premeu qualsevol tecla!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "t" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "u" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Esteu segur que voleu llençar els vostres canvis? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "s" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "No es pot crear el fitxer temporal" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "No es pot obrir el fitxer de sortida" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Ús: hunspell [OPCIÓ]... [FITXER]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Comprova l'ortografia per a cada FITXER. Sense el FITXER, comprova l'entrada " "estàndard.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\tcomprova només el primer camp a les línies (delimitador = " "tabulador)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tinterfície de canonada d'ispell\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" " --check-url\tcomprova les URL, les adreces de correu electrònic i els " "camins als directoris\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tcomprova l'apòstrof tipogràfic d'Unicode\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\tutilitza els diccionaris d (d2 etc.)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tmostra els diccionaris disponibles\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\timprimeix només les paraules o les línies correctes\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tmostra aquesta ajuda i surt\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tformat de fitxer d'entrada HTML\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i enc\tcodificació de l'entrada\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\timprimeix les paraules mal escrites\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\timprimeix les línies amb les paraules mal escrites\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tanalitza les paraules del text d'entrada\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tformat de fitxer d'entrada nroff/troff\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tformat de fitxer d'entrada OpenDocument (ODF normal o pla)\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p dict\testableix dict com a diccionari personalitzat\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\tadverteix dels errors potencials (paraules estranyes)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr "" " -P contrasenya\testableix la contrasenya per als diccionaris xifrats\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\tarrel de les paraules del text d'entrada\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tparaules de sufix del text d'entrada\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tformat de fitxer d'entrada TeX/LaTeX\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\timprimeix el número de versió\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\timprimeix el número de versió compatible d'Ispell\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\timprimeix les paraules mal escrites (= línies) des d'una entrada de " "paraula/línia.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tformat de fitxer d'entrada XML\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Exemple: hunspell -d en_US file.txt # comprovació interactiva\n" " hunspell -i utf-8 file.txt # comprova el fitxer amb codificació " "UTF-8\n" " hunspell -l *.odt # imprimeix les paraules mal escrites " "dels fitxers ODF\n" "\n" " # Correcció ràpida dels documents ODF mitjançant la creació del " "diccionari personal\n" "\n" " # 1 Creeu una llista reduïda de les paraules mal escrites i " "desconegudes:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Elimineu les paraules mal escrites del fitxer amb un editor de " "text.\n" " # 3 Utilitzeu aquest diccionari personal per corregir les paraules " "eliminades:\n" "\n" " hunspell -p words *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Informes d'errors: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Drets d'autor (C) 2002-2014 László Németh. Llicència: MPL/GPL/LGPL.\n" "\n" "Està basat amb la biblioteca Myspell d'OpenOffice.org.\n" "Drets d'autor de Myspell (C) Kevin Hendricks, 2001-2002, Llicència: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Aquest és programari lliure; vegeu el codi font per les condicions de " "còpia.\n" "No hi ha CAP garantia; ni tan sols de COMERCIABILITAT o ADEQUACIÓ\n" "PER A UN PROPÒSIT PARTICULAR, en la mesura permesa per la llei.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "CAMÍ DE CERCA:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "DICCIONARIS DISPONIBLES (el camí no és obligatori per a l'opció -d):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "DICCIONARI CARREGAT:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "error: %s supera el límit del diccionari.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" "No es poden obrir els fitxers d'afix o de diccionari per al diccionari " "anomenat «%s».\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hunspell s'ha compilat sense la interfície d'usuari de Ncurses.\n" hunspell-1.7.2/po/ka.gmo0000664000175000017500000003702014353370170012020 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}n% 1sGi\M5kThMCFmfF;mkW W [!w!b%"R"R"w.##i$U%\e%%}&TS'W'c(7d((W6)])g)T*aQ+0d0{81E11~223P33}'4 4E4* 6Y765667e488A; <<v<()=-R=0=P=>>>> > >>1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.7.1 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-11-02 08:35+0000 Last-Translator: Temuri Doghonadze Language-Team: Georgian Language: ka MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.14.2-dev %s ფაილი: %s -- გასაგრძელებლად დააჭირეთ გამოტოვებას -- ბრძანებებია: [SPACE] R)პასუხი A)თანხმობა I)ჩასა U)ncap S)tem Q)გასვლა (X)გასვლა ან ?, დახმარებისთვის --check-apostrophe უნიკოდის ტიპოგრაფული აპოსტროფის შემოწმება --check-url URL-ების, ელფოსტის მისამართებისა და საქაღალდის ბილიკების შემოწმება and directory paths -1 ფაილებში მხოლოდ პირველი ველის შემოწმება (გამყოფი = ტაბულაცია) -D ხელმისაწვდომი ლექსიკონების ჩვენება -G მხოლოდ გამართული სიტყვებისა და ხაზების გამოტანა -H HTML შეყვანის ფაილის ფორმატი -L მართლწერის შეცდომის მქონე სიტყვების შემცველი ხაზების გამოტანა -O შეყვანის ფაილის ფორმატი OpenDocument (ODF ან Flat ODF) -P პაროლი დაშიფრული ლექსკონების პაროლის დაყენება -S შეყვანილი ტექსტის სუფიქსი სიტყვები -X XML შეყვანის ფაილის ფორმატი -a Ispell-ის ფაიფის ინტერფეისი -d d[,d2,...] d (d2 და სხვ.) ლექსიკონების გამოყენება -h, --help ამ დახმარების გამოტანა და გასვლა -i enc შეყვანის კოდირება -l შეცდომის შემცველი სიტყვების გამოტანა -m შეყვანილი ტექსტის სიტყვების ანალიზი -n შეყვანის ფაილის ფორმატის nroff/troff -p dict საკუთარი ლექსიკონის მითითება -r პოტენციური შეცდომების შესახებ გაფრთხილება (იშვიათი სიტყვები) -s შეყვანილი ტექსტის სიტყვების ფუძე -t TeX/LaTeX შეყვანის ფაილის ფორმატი -v, --version ვერსიის ნომრის გამოტანა -vv Ispell -თან თავსებადი ვერსიის ნომრის გამოტანა -w მართლწერის შეცდომის მქონე სიტყვების გამოტანა (= ხაზები) ერთსიტყვიანი/ერთხაზიანი შეყვანიდან. 0-n რომელიმე ნარჩევი სიტყვით ჩანაცვლება. ? დახმარების ამ ეკრანის ჩვენება. A სიტყვის ამ სესიის ბოლომდე მიღება. ხელმისაწვდომი ლექსიკონები (-d პარამეტრისთვის ბილიკი აუცილებელი არაა): დარწმუნებული ბრძანდებით, რო გნებავთ, მოიშოროთ თქვენს მიერ შეტანილი ცვლილებები? შეცდომის ანგარიშები: http://hunspell.github.io/ დროებითი ფაილის შექმნის შეცდომადროებითი საქაღალდის შექმნის შეცდომა%s-ის გახსნის შეცდომა. აფიქსის ან ლექსიკონის ფაილის, სახელად "%s", გახსნის შეცდომა. შეყვანის ფაილის გახსნის შეცდომაგამოსატანი ფაილის გახსნის შეცდომაპირადი ლექსიკონის განახლების შეცდომა.თითოეული ფაილის მართლწერის შემოწმება. თუ ის მითითებული არაა, სტანდარტული შეყვანა შემოწმდება. მაგალითი: hunspell -d en_US file.txt # მართლწერის ინტერაქტიური შემოწმება hunspell -i utf-8 file.txt # UTF-8 კოდირებული ფაილის შემოწმება hunspell -l *.odt # მართლწერის შეცდომების მქონე სიტყვების შემოწმება ODF ფაილებში # სწრაფად ჩაასწორეთ თქვენი ODF დოკუმენტები თქვენი პირადი ლექსიკონის შექმნის საშუალებით # 1 მართლწერის შეცდომების ან უცნობი სიტყვების შემცირებული სიის შექმნა: hunspell -l *.odt | sort | uniq >words # 2 ფაილში მართლწერის შეცდომების მქონე სიტყვების წაშლა. # 3 წაშლილი სიტყვების ჩასასწორებლად მითითებული პირადი ლექსიკონის გამოყენება: hunspell -p words *.odt აკრძალულია!Hunspell-ი Ncruses ინტერფეისის გარეშეა აგებული. I სიტყვის მიღება და პირად ლექსიკონში ჩამატება. ჩატვირთულია ლექსიკონი: %s %s ხაზი %d: %s -> მოდელი სიტყვა (ან მსგავსი სიტყვა ლექსიკონიდან): მოდელი სიტყვა აუცილებელია, ლექსიკონში იყოს. დააჭირეთ ნებისმიერ ღილაკს!ახალი სიტყვა (ფუძე): Q დაუყოვნებლივ გასვლა. ითხოვს უფლებას. ფაილი უცვლელი დარჩება. R შეცდომით დაწერილი სიტყვის სრულად ჩანაცვლება. ჩანაცვლება: S ფუძისა და მოდელი სიტყვის კითხვა და მათი პირად ლექსიკონში შენახვა. ფუძე მისაღებია მოდელი სიტყვის აფიქსებითაც მისაღებია. ძებნის ბილიკი: %s Space სიტყვის მხოლოდ ამჯერად მიღება. მართლწერის შეცდომა?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U მიღება და მისი დაბალი რეგისტრის ვერსიის პირად ლექსიკონში შენახვა. გამოყენება: hunspell [პარამეტრები]... [ფაილი]... როცა ნაპოვნია სიტყვა, რომელიც ლექსიკონში არაა, ის ეკრანის პირველ ხაზზეა ნაჩვენები. თუ ლექსიკონი რამე მსგავს სიტყვებს შეიცავს, ისინი თავისი ნომრებით გვერდიგვერდ არიან ნაჩვენები. გაქვთ შესაძლებლობა, შეცვალოთ სიტყვა სრულად, ან შემოთავაზებულიდან აირჩიოთ. X დარჩენილი ფაილის ჩაწერა, მართლწერის იგნორირება და შემდეგი ფაილის დაწყება. ^Z პროგრამის შეჩერება. გაგრძელებისთვის გამოიყენეთ ბრძანება fg. aშეცდომა - %s ლექსიკონის ლიმიტს გადაცილებულია. შეცდომა - iconv: %s -> %s შეცდომა - iconv_open: %s -> %s შეცდომა - iconv_open: UTF-8 -> %s შეცდომა - ცვლადი HOME არ არსებობს iqrsuxyhunspell-1.7.2/po/da.po0000664000175000017500000003542014353370167011655 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:08+0000\n" "Last-Translator: jan madsen \n" "Language-Team: Danish \n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "fejl - iconv_open: %s-> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "fejl - iconv: %s-> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "fejl - iconv_open: UTF-8-> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Kan ikke oprette midlertidig mappe" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Ikke kan åbne inputfilen" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Kan ikke åbne %s.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "fejl - mangler HOME-variabel\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Linje %d: %s-> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "FORBUDT!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Stavefejl?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tFil: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[MELLEMRUM] E)rstat A)ccepter I)ndsæt U)ncap S)tamme afslu(T) (F)orlad " "eller ? for hjælp\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Når der bliver fundet et ord som ikke er i ordbogen, så\n" "udskrives på det på den første linje på skærmen. Hvis\n" "ordbogen indeholder lignende ord, vises de med et tal\n" "ved siden af. Du har mulighed for at erstatte hele ordet,\n" "eller vælge en af de foreslåede ord.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Kommandoerne er:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "R\tErstat det forkert stavede ord fuldstændigt.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Mellemrum\tAccepter kun ordet denne gang.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tAccepter ordet i resten af sessionen.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tAccepter ordet og læg det i din private ordbog.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "U\tAccepter og tilføj version med små bogstaver til privat ordbog.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "S\tSpørg et stamme- og et modelord og gem dem i den private ordbog.\n" "\tStammen accepteres også med modelordets affikser.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tErstat med et af de foreslåede ord.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "X\tSkriv resten af filen, hvorved forkert stavede ord ignoreres, og start på " "næste fil.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" "Q\tAfslut med det samme. Spørger om bekræftelse. Foretager ikke ændringer i " "filerne.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tSuspender programmet. Genstart med fg-kommandoen.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tVis denne hjælp skærm.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Tryk på mellemrum for at fortsætte -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "e" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Erstat med: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "u" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Kan ikke opdatere personlig ordbog." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "s" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Nyt ord (stamme): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Modelord (et lignende ordbogsord): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "Modelord skal være i ordbogen. Tryk på en vilkårlig tast!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "f" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "t" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Er du sikker på, at du vil forkaste dine ændringer? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "j" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Kan ikke oprette midlertid fil" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Kan ikke åbne outputfil" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Anvendelse: hunspell [TILVALG] ... [FIL] ...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Kontrollere stavningen af hver FIL. Uden FIL tjekkes standardinput.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr " -1\t\ttjek kun linjernes første felt (afgrænser = tabulator)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tIspell's pipe-grænseflade\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr " --check-url\ttjek URL'er, e-mailadresser og mappestier\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\ttjek Unicode-typografisk apostrof\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2, ...]\tbrug ordbøgerne d (d2 osv.)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tvis tilgængelige ordbøger\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\tudskriv kun korrekte ord eller linjer\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tvis denne hjælp og afslut\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tformat for HTML-inputfil\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i kod\tinputkodning\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l \t\tudskriv forkert stavede ord\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L \t\tudskriv linjerne med forkert stavede ord\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tanalyser ordene i inputteksten\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tformat for nroff-/troff-inputfil\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tformat for OpenDocument-inputfil (ODF eller fladt ODF)\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p ordbog\tindstil ordbog til tilpasset ordbog\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\tadvar om potentielle fejltagelser (sjælden ord)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P adgangskode\tindstil adgangskode for krypterede ordbøger\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\tstam ordene i inputteksten\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tsuffiks ordene i inputteksten\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tformat for TeX-/LaTeX-inputfil\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\tudskriv versionsnummer\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\tudskriv Ispell-kompatibelt versionsnummer\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\tudskriv forkert stavede ord (= linje) fra et ord-/linjeinput.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tformat for XML-inputfil\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Eksempel: hunspell -d da_DK fil.txt # interaktiv stavning\n" " hunspell -i utf-8 fil.txt # tjek UTF-8-kodet fil\n" " hunspell -l *.odt # udskriv forkert stavede ord fra " "ODF-filer\n" "\n" " # Hurtig rettelse af ODF-dokumenter ved oprettelse af personlig " "ordbog\n" "\n" " # 1 Lav en reduceret liste fra forkert stavede og ukendte ord:\n" "\n" " hunspell -l *.odt | sort | uniq >ord\n" "\n" " # 2 Slet forkert stavede ord fra filen med en tekstredigering.\n" " # 3 Brug denne personlige ordbog til at rette de slettede ord:\n" "\n" " hunspell -p ord *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Fejlrapporter: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Ophavsret (C) 2002-2014 László Németh. Licens: MPL/GPL/LGPL.\n" "\n" "Baseret på OpenOffice.org's Myspell-bibliotek.\n" "Myspell's ophavsret (C) Kevin Hendricks, 2001-2002, licens: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Dette er fri software - se kildekoden for kopieringsbetingelser. Der er " "INGEN\n" "garanti, selv ikke for SALGBARHED eller EGNETHED TIL ET BESTEMT FORMÅL,\n" "i det omfang det er tilladt af gældende lov.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "SØGESTI:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "TILGÆNGELIGE ORDBØGER (stien er ikke obligatorisk for -d-tilvalget):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "INDLÆST ORDBOG:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "fejl - %s overskrider ordbogsgrænse.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" "Kan ikke åbne affiks- eller ordbogsfiler til ordbogen med navnet \"%s\".\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hunspell blev kompileret uden Ncurses-brugerflade.\n" hunspell-1.7.2/po/ta.po0000664000175000017500000002502714353370167011677 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-10-24 15:13+0000\n" "Last-Translator: K.B.Dharun Krishna \n" "Language-Team: Tamil \n" "Language: ta\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14.2-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "பிழை - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "பிழை - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "" #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "" #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "" #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "" #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "" #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "" #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr "" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr "" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr "" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr "" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr "" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr "" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr "" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr "" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr "" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr "" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr "" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr "" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr "" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "" #: src/tools/hunspell.cxx:1895 msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "" hunspell-1.7.2/po/de.po0000664000175000017500000003706714353370167011672 00000000000000# German translation of hunspell. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # Benjamin Weis , 2017. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:08+0000\n" "Last-Translator: Anonymous \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14-dev\n" "X-Language: de_DE\n" "X-Source-Language: C\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "Fehler - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "Fehler - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "Fehler - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Verzeichnis tmp kann nicht erstellt werden" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Eingabedatei kann nicht geöffnet werden" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "%s kann nicht geöffnet werden.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "Fehler - fehlende HOME-Variable\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Zeile %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "VERBOTEN!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Rechtschreibfehler?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tDatei: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[LEERTASTE] E)rsetzen A)nnehmen E(I)nfügen K)leinschreiben Ab(L)eiten " "S)chließen B)eenden oder ? für Hilfe\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Immer wenn ein Wort gefunden wird, das nicht im Wörterbuch\n" "steht, wird es in der ersten Zeile des Bildschirms ausgegeben.\n" "Wenn das Wörterbuch irgendwelche ähnlichen Wörter enthält,\n" "wird jedes neben einer Nummer aufgelistet. Sie haben die\n" "Möglichkeit, das Wort vollständig zu ersetzen oder eines der\n" "vorgeschlagenen Wörter auszuwählen.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Befehle sind:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "R\tFalsch geschriebenes Wort vollständig ersetzen.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Leertaste\tWort nur dieses Mal übernehmen.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tWort für den Rest dieser Sitzung übernehmen.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tWort übernehmen und in Ihr privates Wörterbuch legen.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" "k\tÜbernehmen und kleingeschriebene Version zum privaten Wörterbuch " "hinzufügen.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "S\tNach einen Wortstamm und einem Musterwort fragen und im privaten " "Wörterbuch speichern.\n" "\tDer Wortstamm wird auch mit den Affixen des Musterwortes übernommen.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tMit einem der vorgeschlagenen Wörter ersetzen.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "B\tRest dieser Datei schreiben, Rechtschreibfehler ignorieren und nächste " "Datei starten.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" "S\tSofort schließen. Bittet um Bestätigung. Lässt Datei ungeändert zurück.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tProgramm unterbrechen. Mit Befehl fg neu starten.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tDiesen Hilfebildschirm anzeigen.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Zum Fortfahren Leertaste drücken -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "e" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Ersetzen mit: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "k" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Persönliches Wörterbuch kann nicht aktualisiert werden." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "l" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Neues Wort (Wortstamm): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Musterwort (ein ähnliches Wörterbuchwort): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "Musterwort muss im Wörterbuch sein. Drücken Sie eine beliebige Taste!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "b" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "s" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Sind Sie sicher, dass Sie Ihre Änderungen wegwerfen möchten? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "j" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Temporäre Datei kann nicht erstellt werden" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Ausgabedatei kann nicht erstellt werden" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Aufruf: hunspell [OPTION]... [DATEI]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Rechtschreibung jeder DATEI überprüfen. Ohne DATEI die Standardeingabe " "überprüfen.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\tnur das erste Feld bei Zeilen überprüfen (Trennzeichen = Tabulator)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tPipe-Schnittstelle von Ispell\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr " --check-url\tURLs, E-Mail-Adressen und Verzeichnispfade überprüfen\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tTypografischen Unicode-Apostroph überprüfen\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\td (d2 usw.) Wörterbücher verwenden\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tverfügbare Wörterbücher anzeigen\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\tnur korrekte Wörter oder Zeilen ausgeben\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tdiese Hilfe anzeigen und beenden\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tHTML Eingabedateiformat\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i enc\tEingabekodierung\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\tfalsch geschriebene Wörter ausgeben\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\tZeilen mit falsch geschriebenen Wörtern ausgeben\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tWörter des Eingabetextes analysieren\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tnroff/troff Eingabedateiformat\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tOpenDocument (ODF oder Flat ODF) Eingabedateiformat\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p dict\tbenutzerdefiniertes Wörterbuch dict festlegen\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\tvor den möglichen Fehlern warnen (seltene Wörter)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P password\tPasswort für verschlüsselte Wörterbücher festlegen\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\tWorte des eingegebenen Textes ableiten\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tWörter des Eingabetextes anhängen\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tTeX/Latex Eingabedateiformat\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\tVersionsnummer ausgeben\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\tIspell-kompatible Versionsnummer ausgeben\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\tfalsch geschriebene Wörter (= Zeilen) von einer Wort-/Zeileneingabe " "ausgeben.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tXML Eingabedateiformat\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Beispiel: hunspell -d en_US Datei.txt # interaktive Rechtschreibung\n" " hunspell -i utf-8 Datei.txt # UTF-8-kodierte Datei überprüfen\n" " hunspell -l *.odt # falsch geschriebene Wörter aus ODF-" "Dateien ausgeben\n" "\n" " # Schnelle Korrektur von ODF-Dokumenten durch persönliche " "Wörterbucherstellung\n" "\n" " # 1. Erstellen Sie eine reduzierte Liste aus falsch geschriebenen " "und unbekannten Wörtern:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2. Löschen Sie falsch geschriebene Wörter aus der Datei durch " "einen Texteditor.\n" " # 3. Verwenden Sie dieses persönliche Wörterbuch, um die gelöschten " "Wörter zu korrigieren:\n" "\n" " hunspell -p words *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Fehlerberichte: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Copyright (C) 2002-2014 László Németh. Lizenz: MPL/GPL/LGPL.\n" "\n" "Basiert auf der Myspell-Bibliothek von OpenOffice.org.\n" "Copyright von Myspell (C) Kevin Hendricks, 2001-2002, Lizenz: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Dies ist freie Software; siehe die Quelle für Bedingungen zur " "Vervielfältigung.\n" "Es gibt keine Gewährleistung; nicht einmal für MARKTFÄHIGKEIT oder EIGNUNG " "FÜR\n" "EINEN BESTIMMTEN ZWECK, soweit gesetzlich zulässig.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "PFAD SUCHEN:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" "VERFÜGBARE WÖRTERBÜCHER (Pfad ist für Option -d nicht zwingend " "erforderlich):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "GELADENES WÖRTERBUCH:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "Fehler - %s überschreitet Wörterbuchbegrenzung.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" "Affix oder Wörterbuchdateien für ein Wörterbuch namens \"%s\" können nicht " "geöffnet werden.\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hunspell wurde ohne Ncurses-Benutzeroberfläche kompiliert.\n" hunspell-1.7.2/po/zh_Hant.po0000664000175000017500000002531714353370167012670 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-11-02 08:35+0000\n" "Last-Translator: ifurther \n" "Language-Team: Chinese (Traditional) \n" "Language: zh_Hant\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 4.14.2-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "無法建立暫存資料夾" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "無法開啟輸入的檔案" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "無法開啟 %s\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "錯誤 - 缺少HOME的變數\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "" #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\t檔案: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "r" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "" #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "u" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "無法更新個人詞典。" #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "s" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "" #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "" #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "你確定要放棄你的更改嗎 " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "y" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "無法創建臨時文件" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "無法打開輸出文件" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr "" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr "" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr "" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr "" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr "" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr "" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr "" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr "" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr "" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr "" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr "" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr "" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr "" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "" #: src/tools/hunspell.cxx:1895 msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "" hunspell-1.7.2/po/ie.gmo0000664000175000017500000002042214353370170012020 00000000000000FLa|!G2:z?>"4(W(766T-s(+ $- %R 2x " % . -# Q 0k 2 (   # @3 "t B 5 ;:W(4B,*o6&Gn:&K-.\%^  #M >ZGE''.O~"5A8!W/y)"%"<1_3#/9(S#|4,-$0'U}P1HYc :AD`4qHD *Oz0%VCi&F6 R 0T   ! # !!! ! !!!E:@<=+B.D8F#0$32C4%& !6/ "7 ,19;( '-5)A>?* -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Cannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:09+0000 Last-Translator: Anonymous Language-Team: Occidental Language: ie MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.14-dev -- Tippa SPACIE por continuar -- Comandes disponibil: [SPACIE] R)empl A)ccpt I)nsrt M)inusc radi(C)a F)inir T)erminar ?) Auxilie --check-apostrophe controlar li tipografic apostrof Unicode --check-url controlar URL- e E-post-adresses, e rutes de fil-sistema -1 controlar solmen li unesim camp in li linea (delimitat p/TABs) -D monstar disponibil dictionariums -G printar solmen correct paroles o lineas -H file in li formate HTML --L printar lineas con errores -O file in li formate OpenDocument (ODF/Plan-ODF) -P contrasgn assignar li contrasigne por ciffrat dictionariums -X file in li formate XML -a Interfacie canal de Ispell -d d[,d2,...] usar dictionariums d (d2 etc.) -h, --help monstrar li auxilie e salir -i cod codification del file -l printar paroles con errores -m analisar li paroles in li file -n file in formate nroff/troff -p dict usar li personal dictionarium «dict» -r advertir pri potential errores (rar paroles) -t file in li formate TeX/LaTeX -v, --version monstrar li numeró de version -vv monstrar li nró de version compatibil con Ispell 0-n Remplazzar per un del suggestiones. ? Monstrar ti-ci ecran de auxilie. A Accepter li parole por li reste de ti-ci session. Esque vu vole forjettar vor modificationes? Raportar errores: http://hunspell.github.io/ Ne successat crear un temporari fileNe successat crear un temporari fólderNe successat aperter %s. Ne successat aperter li file de affixe o de dictionarium por dictionarium "%s". Ne successar actualisar li personal dictionarium.Controlar li ortografia de chascun FILE. Sin FILE, controlar li STDIN. Exemple: hunspell -d ie file.txt # control interactiv hunspell -i utf-8 file.txt # controlar un file in codification UTF-8 hunspell -l *.odt # printar errari paroles ex files ODF # Rapid correction de documentes ODF per creation de un personal dict. # 1 Crea un reductet liste de ínconosset e errari paroles: hunspell -l *.odt | sort | uniq >paroles # 2 Delete li errari paroles ex li file per un redactor de textus. # 3 Usa ta-ci dictionarium por correcter li removet paroles: hunspell -p paroles *.odt PROHIBIT!Hunspell esset compilat sin interfacie de usator Ncurses. I Accepter li parole e adjunter it in vor personal dictionarium. CARGAT DICTIONARIUM: %s %s Linea %d: %s -> Modell-parole (un simil parole ex li dictionarium): Li modell-parole deve exister in li dictionarium. [Presse alquel clave.]Nov parole (radice/base): T Terminar ínmediatmen. Demandar confirmation. Ne modificar files. R Remplazzar li errari parole completmen. Remplazzar per: C Demandar un radice e un modell-parole e adjunter les al pers. dict. Li radice va esser acceptat con li affixes del modell-parole. RUTE DE SERCHA: %s Spacie Accepter li parole solmen por ti-ci vez. Ortografic errore?M Accepter e adjunter li parole scrit in minuscules al pers. dict. Usage: hunspell [OPTION]... [FILE]... F Scrir li reste del file ínchangeat e comensar con li sequent file. ^Z Suspender li programma. Reiniciar med commande fg. aerrore - %s supera li límite del dictionarium. errore - iconv: %s -> %s errore - iconv_open: %s -> %s errore - iconv_open: UTF-8 -> %s errore - variabile HOME es mancant itrcmfyhunspell-1.7.2/po/an.gmo0000664000175000017500000002442614353370167012037 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}x$]@!HbP,6)`4D4/.*^&8($)72a17605/f.9S1S"4H,&-S%#V%9&_/X "?"?",#G#4X#F##C#%6$\$n$%/ %P%c%G+&(s& &m'4+(`(-b((( (() ) )))))1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:09+0000 Last-Translator: Juan Pablo Martínez Language-Team: Aragonese Language: an MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.14-dev %s Fichero: %s -- Escribe espacio pa continar -- Las ordens son: [ESPACIO] S)ubstituyir A)cceptar I)nsertar M)inusclas R)adiz S(a)lir Z)arrar u ? pa l'aduya --check-apostrophe compreba l'apostrofo tipografico d'Unicode --check-url check URLs, adrezas de correu-e y camins d'os directorios -1 comprebar no más lo primer campo de cada linia (delimitador = tabulador) -D amostrar los diccionarios disponibles -G imprentar nomás las parolas u linias correctas -H formato de fichero HTML -L imprentar las linias con parolas mal escritas -O formato de fichero de dentrada OpenDocument (ODF or Flat ODF) -P clau estableix la clau pa diccionarios cifraus -S parolas de sufixo d'o texto de dentrada -X formato de fichero de dentrada XML -a Interficie de tubería d'Ispell -d d[,d2,...] fer servir los diccionarios d (d2 etc.) -h, --help amuestra esta aduya y sale -i enc codificación d'a dentrada -l imprentar las parolas mal escritas -m analisar las parolas d'o texto de dentrada -n formato de fichero de dentrada nroff/troff -p dict estableix dict como diccionario personalizau -r alvierte de posibles errors (parolas estranyas) -s radiz d'as parolas d'o texto de dentrada -t formato de fichero de dentrada TeX/LaTeX -v, --version escribe lo numero de versión -vv escribo lo numero de versión compatible d'Ispell -w imprenta las parolas mal escritas (= linias) d'una dentrada de parola/linia. 0-n Substituyir con una d'as parolas sucheridas. ? Amuestra esta pantalla d'aduya. A Acceptar la parola en o que queda d'esta sesión. DICCIONARIOS DISPONIBLES (lo camín no ye obligatorio pa la opcion -d): Yes seguro que queretz aventar los cambios? Reportes d'error: http://hunspell.github.io/ No se puede crear lo fichero temporalNo se puede crear un directorio tmpNo se puede ubrir %s. No se pueden ubrir los fichers d'afixo u de diccionari pa lo diccionario clamau "%s". No puedo ubrir lo fichero de dentradaNo se puede crear lo fichero de salidaNo se puede actualizar lo diccionario personal.Comprebación ortografica de cada FICHERO. Sin FICHERO, compreba la dentrada standard. Eixemplo: hunspell -d en_US file.txt # corrección interactiva hunspell -i utf-8 file.txt # compreba lo fichero con codificación UTF-8 hunspell -l *.odt # emprenta las parolas masl escritas de fichers ODF # Corrección rapida de documentos ODF por creación de diccionario personal # 1 Fe una lista reducida a partir d'as parolas mal escritas y desconoixidas: hunspell -l *.odt | sort | uniq >words # 2 Borra las parolas mal escritas d'o fichero con un editor de texto. # 3 Usa este diccionario personal pa apanyar las parolas borradas: hunspell -p words *.odt PROHIBIU!Hunspell s'ha compilau sin la interficie d'usuario de Ncurses. I Acceptar la parola, y meter-la en o tuyo diccionario privau. DICCIONARIO CARGAU: %s %s Linia %d: %s -> Parola modelo (una parola similar d'o diccionario): La parola modelo ha d'estar en o diccionario. Preta qualsequier tecla.Nueva parola (base u radiz): Q Sale agora. Demanda confirmación. Deixa lo fichero sin cambiar. S Substituyir la parola mal escrita. Substituyir con: B Demandar una base u radiz y una parola modelo pa alzar-las en o diccionario privau. La radiz será accpetada tamién con os afixos d'a parola modelo. CAMÍN DE BUSQUEDA: %s Espacio Acceptar la parola nomás esta vegada. Error ortografica?Esto ye software libre; mire en o codigo fuent las condicions de copia. NO i hai garantía; ni sisquiera de COMERCIABILIDAT u ADEQUACIÓN PA UN OBCHECTIVO PARTICULAR, en a mida permitida per la lei. U Acceptar y anyadir la versión en minusclas ta lo diccionari privau. USO: hunspell [OPCIÓN]... [FICHERO]... Siempre que se trobe una parola que no siga en o diccionario s'imprentará en a primer linia d'a pantalla. Si lo diccionario contién parolas pareixidas, se listan con un numero a lo costau de cadaúna. Tiens la opación de substituyir la parola u bien triar una d'as parolas sucheridas. X Escribir la resta d'esta fichero, ignorando las parolas mal escritas, y encomenzar con o siguient fichero. ^Z Suspender lo programa. Reiniciar con a orden fg. aerror - %s supera lo limite d'o diccionario. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - falta la variable HOME iasbmashunspell-1.7.2/po/insert-header.sin0000644000175000017500000000124013422074107014154 00000000000000# Sed script that inserts the file called HEADER before the header entry. # # At each occurrence of a line starting with "msgid ", we execute the following # commands. At the first occurrence, insert the file. At the following # occurrences, do nothing. The distinction between the first and the following # occurrences is achieved by looking at the hold space. /^msgid /{ x # Test if the hold space is empty. s/m/m/ ta # Yes it was empty. First occurrence. Read the file. r HEADER # Output the file's contents by reading the next line. But don't lose the # current line while doing this. g N bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } hunspell-1.7.2/po/Rules-quot0000644000175000017500000000340014167247117012724 00000000000000# Special Makefile rules for English message catalogs with quotation marks. DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot .SUFFIXES: .insert-header .po-update-en en@quot.po-create: $(MAKE) en@quot.po-update en@boldquot.po-create: $(MAKE) en@boldquot.po-update en@quot.po-update: en@quot.po-update-en en@boldquot.po-update: en@boldquot.po-update-en .insert-header.po-update-en: @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ ll=`echo $$lang | sed -e 's/@.*//'`; \ LC_ALL=C; export LC_ALL; \ cd $(srcdir); \ if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "creation of $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi en@quot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header en@boldquot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header mostlyclean: mostlyclean-quot mostlyclean-quot: rm -f *.insert-header hunspell-1.7.2/po/ky.gmo0000664000175000017500000000220014353370170012040 00000000000000 l  &1ASl r-$ ;#\   %s File: %s Can't open %s. Can't open inputfileFORBIDDEN!Line %d: %s -> Spelling mistake?error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s Project-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:09+0000 Last-Translator: Ilyas Bakirov Language-Team: Kyrgyz Language: ky MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.14-dev %s Файл: %s Ачуу катасы %s. Файлды ачууда ката чыктыТЫЮ САЛЫНГАН!Сап %d: %s -> Орфографиялык ката?ката - iconv: %s -> %s ката - iconv_open: %s -> %s ката - iconv_open: UTF-8 -> %s hunspell-1.7.2/po/fy.po0000664000175000017500000003616714353370167011720 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:08+0000\n" "Last-Translator: Wim Benes \n" "Language-Team: Frisian \n" "Language: fy\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "flater - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "flater - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "flater - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Kin tydlike map net oanmeitsje" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Kin ynfierbestân net iepenje" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Kin %s net iepenje.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "flater - fariabele HOME ûntbrekt\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Rigel %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "FERBEAN!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Staveringsflater?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tBestân: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[SPAASJE] feR)fange A)kseptearje Y)nfoegje lysteL)etters S)tam ôF)slute " "sT)opje, ? foar help\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Wannear in wurd fûn wurdt dat net yn it wurdboek\n" "stiet, wurdt it op de earste rigel fan it skerm toand. As\n" "it wurdboek lykweardige wurden befettet, wurde dizze mei\n" "ien nûmer neist inoar toand. Do kinst it wurd folslein\n" "ferfange, of ien fan de oanrekommandearre wurden kieze.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Opdrachten binne:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "R\tFerfang it ferkeard stavere wurd folslein.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Spaasje\tAkseptearje it wurd ien kear.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tAkseptearje it wurd foar de rest fan dizze sesje.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tAkseptearje it wurd en bewarje it yn dyn persoanlike wurdboek.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" "L\tAkseptearje en bewarje in ferzje yn lytse letters yn dyn persoanlike " "wurdboek.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "S\tFreegje om in stam en in modelwurd en bewarje se op yn it persoanlike " "wurdboek.\n" "\tDe stam sil akseptearre wurde mei de affiksen fan it modelwurd.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tFerfang troch ien fan de oanrekommandearre wurden.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "T\tSkriuw de rest fan dit bestân, negearje ferkeard spelde wurden, en begjin " "mei it folgjende bestân.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "F\tDaliks ôfslute. Freget befêstiging. Bestannen bliuwe net wizige.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tProgramma pauzearje. Start opnij mei fg-opdracht.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tToan dit helpskerm.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Druk op spaasjebalke om troch te gean -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "r" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Ferfang mei: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "l" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Kin persoanlik wurdboek net bywurkje." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "s" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Nij wurd (stam): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Modelwurd (in fergelykber wurdboekwurd): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" "Modelwurd moat yn it wurdboek stean. Druk op in toets om troch te gean!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "t" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "f" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Bisto wis datsto dyn wizigingen fuortsmite wolst? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "j" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Kin tydlik bestân net oanmeitsje" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Kin útfierbestân net iepenje" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Brûk: hunspell [OPSJE]... [BESTÂN]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Kontrolearje de stavering fan elk BESTÂN. Sûnder BESTÂND wurdt " "standertynfier kontrolearre.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\tkontrolearje inkeld earste fjild yn rigels (skiedingsteken = tab)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tpipe-interface fan Ispell\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr " --check-url\tkontrolearje URL's, e-mailadressen en mappaden\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tkontrolearje typografyske Unicode-apostrof\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\tbrûk wurdboeken d (d2, ensfh.)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\ttoan beskikbere wurdboeken\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\ttoan inkeld korrekte wurden of rigels\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\ttoan dizze help en stopje\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tHTML-ynfierbestânsformaat\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i cod\tynfierkodearring\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\ttoan ferkeard stavere wurden\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\ttoan rigels mei ferkeard stavere wurden\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tanalysearje de wurden fan de ynfiertekst\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tnroff-/troff-ynfierbestânsformaat\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tOpenDocument (ODF of platte ODF)-ynfierbestânsformaat\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p wdbk\tstel oanpast wurdboek yn\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr "" " -r\t\ttoan warskôging foar mooglike flaters (net gebrûklike wurden)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P wachtwurd\tstel wachtwurd foar fersifere wurdboeken yn\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\ttoan stam fan wurden fan ynfiertekst\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\ttoan suffiks fan wurden fan ynfiertekst\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tTeX-/LaTeX-ynfierbestânsformaat\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\ttoan ferzjenûmer\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\ttoan Ispell-kompatibel ferzjenûmer\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\ttoan ferkeard stavere wurden (= rigels) fan ynfier fan ien wurd/" "rigel.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tXML-ynfierbestânsformaat\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Foarbyld: hunspell -d fy_NL bestân.txt # ynteraktive stavering\n" " hunspell -i utf-8 bestân.txt # kontrolearje bestân yn UTF-8-" "kodearring\n" " hunspell -l *.odt # toan ferkeard stavere wurden yn ODF-" "bestannen\n" "\n" " # Flugge ferbettering fan ODF-dokuminten troch oanmeitsjen fan " "persoanlik wurdboek\n" "\n" " # 1 Meitsje in redusearre list fan ferkeard stavere en ûnbekende " "wurden:\n" "\n" " hunspell -l *.odt | sort | uniq >wurden\n" "\n" " # 2 Smyt ferkeard stavere wurden fuort út it bestân mei in " "tekstferwurker.\n" " # 3 Brûk dit persoanlike wurdboek om de ferkeard stavere wurden te " "ferbetterjen:\n" "\n" " hunspell -p wurden *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Flatermeldingen: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Auteursrjocht © 2002-2014 László Németh. Lisinsje: MPL/GPL/LGPL.\n" "\n" "Basearred op de Myspell-biblioteek fan OpenOffice.org.\n" "Myspell-auteursrjocht © Kevin Hendricks, 2001-2002. Lisinsje: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Dit is frije software; besjoch de boarnekoade foar kopiearbetingsten. Der " "is GJIN\n" "garânsje, sels net foar FERHANNELBERHEID of GESKIKTHEID FOAR IN BEPAALD " "DOEL,\n" "foar safier tastien troch de wet.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "SYKPAAD:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "BESKIKBERE WURDBOEKEN (paad is net ferplichte foar opsje -d):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "YNLADEN WURDBOEK:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "flater - %s giet oer wurdboeklimyt.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" "Kin affiks- of wurdboekbestannen foar wurdboek neamd ‘%s’ net iepenje.\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hunspell is kompilearre sûnder de Ncurses-brûkersynterface.\n" hunspell-1.7.2/po/es_EU.po0000664000175000017500000002470514353370167012275 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:09+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Basque \n" "Language: es_EU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "" #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "" #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "" #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "" #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "" #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "" #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr "" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr "" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr "" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr "" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr "" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr "" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr "" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr "" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr "" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr "" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr "" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr "" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr "" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "" #: src/tools/hunspell.cxx:1895 msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "" hunspell-1.7.2/po/ru.gmo0000664000175000017500000003062414353370170012056 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}B)T]zp9I%#o2Ac#3U 9v.5;*QS|>V(f5BdHm=>R3 @ 0 > E7!!}!`!("<)"Mf""fB#&_&\''z''1'l'.Y((D)Y)q)*L*,*+|,IT--u/a+00H00$0'1@E111111111GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:09+0000 Last-Translator: Bogdan Khomutsky Language-Team: Russian Language: ru MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; X-Generator: Weblate 4.14-dev %s Файл: %s -- Для продолжения нажмите Пробел -- Команды: [ПРОБЕЛ] З)амен П)ринять в(С)тавить М)ал О)снов В)ыйти за(К)ончить или ? для справки --check-apostrophe проверка типографского апострофа --check-url проверка адресов URL, эл. почты и имен файлов -1 проверять только первое поле в строке (разделитель = табулятор) -D показать доступные словари -G печать только правильных слов/строк -H входной файл HTML -L печать строк с ошибками -O входной файл OpenDocument (ODF или Flat ODF) -P password установить пароль для зашифрованных словарей -S генерация словоформ для слов входного текста -X входной файл XML -a канальный интерфейс Ispell -d сл[,сл2,...] использовать словари сл (сл2 и т.д.) -h, --help вывести справку и выйти -i код входная кодировка -l печать неправильных слов -m анализ слов входного текста -n входной файл nroff/troff -p слов подключить пользовательский СЛОВарь -r предупреждать о редких словах -s привести слова из текста к словарной форме -t входной файл TeX/LaTeX -v, --version вывод номера версии -vv печать совместимой с Ispell версии -w печать слов с ошибками (вход - одно слово на строке). 0-n Заменить одним из предложенных слов. ? Показать этот справочный текст. A Принимать слово до конца сеанса. ДОСТУПНЫЕ СЛОВАРИ (для -d путь не обязателен): Вы хотите отказаться от изменений? Баг-трекер: http://hunspell.github.io/ Не удалось создать временный файлОшибка создания временной директорииОшибка открытия %s Не удалось открыть файл словаря или аффиксов для "%s". Ошибка открытия файлаНе удалось открыть выходной файлНе удалось обновить словарь пользователя.Проверка орфографии каждого ФАЙЛА. Если ФАЙЛ не указан, то стандартный ввод. Пример: hunspell -d ru_RU файл.txt # интерактивная проверка hunspell -i utf-8 файл.txt # проверка файла в кодировке UTF-8 hunspell -l *.odt # печать слов с ошибками из файлов ODF # Быстрое исправление файлов ODF путём создания пользовательского словаря # 1 Создайте список неизвестных слов и слов с ошибками: hunspell -l *.odt | sort | uniq >слова # 2 Удалите слова с ошибками из файла в текстовом редакторе. # 3 Используйте этот словарь для исправления ошибок: hunspell -p слова *.odt ЗАПРЕЩЕНО!Hunspell был собран без интерактивного интерфейса Ncurses. I Принять слово и поместить в собственный словарь. ЗАГРУЖЕН СЛОВАРЬ: %s %s Строка %d: %s -> Слово-образец (из словаря): Образец слова должен быть в словаре! Нажмите любую клавишу!Новое слово (слов. форма): Q Выйти немедленно. Спрашивает подтверждение. Оставляет файл без изменений. R Заменить полностью слово с ошибкой. Заменить на: S Спросить основу и образец слова и сохранить их в собственном словаре. Основа будет считаться приемлемой, если использованы аффиксы модели слова. ПУТЬ ПОИСКА: %s Пробел Принять это слово только один раз. Орфографическая ошибка?Это свободное программное обеспечение; условия копирования изложены в его исходных кодах. Лицензия не предусматривает никаких гарантий; в частности гарантий работоспособности или пригодности для определенной цели, в рамках законодательства. U Принять и добавить слово строчными буквами в собственный словарь. Использование: hunspell [ПАРАМЕТР]... [ФАЙЛ]... Всякий раз, когда встречается слово, которого нет в словаре оно будет отображено в первой строке экрана. Если в словаре содержатся любые похожие слова, они будут перечислены под номерами. Вы можете заменить слово полностью или выбрать одно из предложенных. X Записать остальную часть этого файла, игнорируя орфографические ошибки, и начать следующий файл. ^Z Приостановить программу. Продолжение по команде fg. aошибка - %s превосходит предел словарей. ошибка - iconv: %s -> %s ошибка - iconv_open: %s -> %s ошибка - iconv_open: UTF-8 -> %s ошибка - отсутствует переменная HOME iqrsuxyhunspell-1.7.2/po/oc.gmo0000664000175000017500000001131314353370170012023 000000000000003GLhiyG"(>(\-(+1$]%%-02G(z" :!\v*& : &W ~            *  I% )o 2 ) ) * 4K *  ) . 0#0T-* 3=37q))+2C v@1 ?S.sW/?A\"|2 "&3#!0 ()-.+'%*$/ ,1  %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -X XML input file format -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -v, --version print version number 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open inputfileCannot update personal dictionary.FORBIDDEN!I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> New word (stem): R Replace the misspelled word completely. Replace with: SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... aerror - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-09-28 21:18+0000 Last-Translator: Quentin PAGÈS Language-Team: Occitan Language: oc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n > 1; X-Generator: Weblate 4.14.1 %s Fichièr : %s -- Quichatz sus espaci per contunhar -- Las comandas son : [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it o ? per l'ajuda -D aficha los diccionaris disponibles -G aficha pas que los mots o linhas corrèctas -H fichièr en entrada al format HTML -L imprimir los mots mal ortografiats -X fichièr en entrada al format HTML -d d[,d2,...] utiliza los diccionaris d (d2 etc.) -h, --help aficha aquesta ajuda e quita -i enc encodatge en entrada -l imprimir los mots mal ortografiats -m analisa los mots del tèxte en entrada -n format de fichièr en entrada nroff/troff -p dico declara dico coma diccionari personal -v, --version aficha lo numèro de version 0-n Remplaça per un dels mots suggerits. ? Aficha aqueste ecran d'ajuda. A Accèpta lo mot per la rèsta d'aquesta session. Volètz vertadièrament abandonar vòstras modificacions ? Senhalar los problèmas : http://hunspell.github.io/ Impossible de crear lo fichièr temporariImpossible de crear un dossièr temporariImpossible de dobrir %s. Impossible de dobrir lo fichièr en entradaImpossible de metre a jorn lo diccionari personal.DEFENDUT !I Accèpta lo mot e lo plaça dins vòstre diccionari personal. DICCIONARI CARGAT : %s %s Linha %d : %s -> Mot novèl (radical) : R Remplaça completament lo mot mal ortografiat. Remplaçar per : EMPLAÇAMENT DE RECÈRCA : %s Espaci Accèpta lo mot aqueste còp solament. Fauta d'ortografia ?U Accèpta lo mot e n'apond una version en minuscula dins vòstre diccionari personal. Sintaxi : hunspell [OPCION]... [FICHIÈR]... aerror : iconv: %s -> %s error : iconv_open: %s -> %s error - iconv_open : UTF-8 -> %s error - variabla HOME mancanta iqrsuxhunspell-1.7.2/po/ca.gmo0000664000175000017500000002460014353370167012016 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}#^@(^iM)<@&}:AF!,h&'5)#D*h0-8<+0h+0;[24#9H!3j."%X+#$-ZV #A #<L###5#B#0$OG$3$$$p%0%%%D&&&('l1(1((+(()3)S)r)t)v)x)z)|)~)1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:09+0000 Last-Translator: Robert Antoni Buj Gelonch Language-Team: Catalan Language: ca MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.14-dev %s Fitxer: %s -- premeu espai per continuar -- Les ordres són: [ESPAI] S)ubstitueix A)ccepta I)nsereix M)inúscules A(r)rel S(u)rt T)anca o ? per a l'ajuda --check-apostrophe comprova l'apòstrof tipogràfic d'Unicode --check-url comprova les URL, les adreces de correu electrònic i els camins als directoris -1 comprova només el primer camp a les línies (delimitador = tabulador) -D mostra els diccionaris disponibles -G imprimeix només les paraules o les línies correctes -H format de fitxer d'entrada HTML -L imprimeix les línies amb les paraules mal escrites -O format de fitxer d'entrada OpenDocument (ODF normal o pla) -P contrasenya estableix la contrasenya per als diccionaris xifrats -S paraules de sufix del text d'entrada -X format de fitxer d'entrada XML -a interfície de canonada d'ispell -d d[,d2,...] utilitza els diccionaris d (d2 etc.) -h, --help mostra aquesta ajuda i surt -i enc codificació de l'entrada -l imprimeix les paraules mal escrites -m analitza les paraules del text d'entrada -n format de fitxer d'entrada nroff/troff -p dict estableix dict com a diccionari personalitzat -r adverteix dels errors potencials (paraules estranyes) -s arrel de les paraules del text d'entrada -t format de fitxer d'entrada TeX/LaTeX -v, --version imprimeix el número de versió -vv imprimeix el número de versió compatible d'Ispell -w imprimeix les paraules mal escrites (= línies) des d'una entrada de paraula/línia. 0-n Substitueix amb una de les paraules suggerides. ? Mostra aquesta pantalla d'ajuda. A Accepta la paraula per al que queda d'aquesta sessió. DICCIONARIS DISPONIBLES (el camí no és obligatori per a l'opció -d): Esteu segur que voleu llençar els vostres canvis? Informes d'errors: http://hunspell.github.io/ No es pot crear el fitxer temporalNo es pot crear el directori temporalNo es pot obrir %s. No es poden obrir els fitxers d'afix o de diccionari per al diccionari anomenat «%s». No es pot obrir el fitxer d'entradaNo es pot obrir el fitxer de sortidaNo es pot actualitzar el diccionari personal.Comprova l'ortografia per a cada FITXER. Sense el FITXER, comprova l'entrada estàndard. Exemple: hunspell -d en_US file.txt # comprovació interactiva hunspell -i utf-8 file.txt # comprova el fitxer amb codificació UTF-8 hunspell -l *.odt # imprimeix les paraules mal escrites dels fitxers ODF # Correcció ràpida dels documents ODF mitjançant la creació del diccionari personal # 1 Creeu una llista reduïda de les paraules mal escrites i desconegudes: hunspell -l *.odt | sort | uniq >words # 2 Elimineu les paraules mal escrites del fitxer amb un editor de text. # 3 Utilitzeu aquest diccionari personal per corregir les paraules eliminades: hunspell -p words *.odt PROHIBIT!Hunspell s'ha compilat sense la interfície d'usuari de Ncurses. I Accepta la paraula i la posa al vostre diccionari privat. DICCIONARI CARREGAT: %s %s Línia %d: %s -> Paraula model (similar a una paraula de diccionari): La paraula model ha d'estar al diccionari. Premeu qualsevol tecla!Paraula nova (arrel): Q Surt immediatament. Demana la confirmació. Deixa el fitxer sense modificar. R Substitueix completament la paraula mal escrita. Substitueix amb: S Demana una arrel i una paraula model i emmagatzema-ho al diccionari privat. L'arrel també serà acceptada amb els afixes de la paraula model. CAMÍ DE CERCA: %s Espai Accepta la paraula només aquesta vegada. Error ortogràfic?Aquest és programari lliure; vegeu el codi font per les condicions de còpia. No hi ha CAP garantia; ni tan sols de COMERCIABILITAT o ADEQUACIÓ PER A UN PROPÒSIT PARTICULAR, en la mesura permesa per la llei. U Accepta i afegeix la versió en minúscules al diccionari privat. Ús: hunspell [OPCIÓ]... [FITXER]... Sempre que es trobi una paraula que no estigui al diccionari s'imprimeix a la primera línia de la pantalla. Si el diccionari conté paraules semblants, es llisten amb un número al costat de cadascuna. Teniu l'opció de substituir la paraula completament o triar una de les paraules suggerides. X Escriu el que queda d'aquest fitxer, ignorant els errors ortogràfics, i comença amb el següent fitxer. ^Z Suspèn el programa. Reinicia amb l'ordre fg. aerror: %s supera el límit del diccionari. error: iconv: %s -> %s error: iconv_open: %s -> %s error: iconv_open: UTF-8 -> %s error: falta la variable HOME iusrmtshunspell-1.7.2/po/pt.gmo0000664000175000017500000002437414353370170012060 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}i%}Z?KSN)2/K0{EJ*=*h(.$"/3.c126-./\+5\/K{-N70P/)G.A-p3T?' g"5q"<""#;#FO##N#<#:$K$$+$+%?%F &)P&8z&b'5(L(*N(y(((((((((((1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:09+0000 Last-Translator: ssantos Language-Team: Portuguese Language: pt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n > 1; X-Generator: Weblate 4.14-dev %s Ficheiro: %s -- Tecle espaço para continuar -- Os comandos são: [ESPAÇO] R)epor A)ceitar I)nserir U)ncap T)ronco C)oncluir S)air, ou ? para obter ajuda --check-apostrophe verificar apóstrofo tipográfico unicode --check-url verifica URLs, endereços de e-mail e caminho de diretórios -1 verificar apenas o primeiro campo em linhas (delimitador = tabulação) -D exibe os dicionários disponíveis -G exibe apenas as palavras ou linhas corretas -H HTML Formato de ficheiro de entrada HTML -L Imprimir palavras com erros ortográficos -O formato de ficheiro de entrada OpenDocument (ODF ou ODF plana) -P palavra-passe definir palavra-passe para dicionários criptografados -S sufixo palavras do texto de entrada -X formato de ficheiro de entrada XML -a Interface de tubulação do Ispell -d d[,d2,...] usar dicionários d (d2, etc) -h, --help exibe esta ajuda e sai -i enc Codificação de entrada -l Imprimir palavras com erros ortográficos -m Analisar as palavras do texto de entrada -n formato de ficheiro de entrada nroff/troff -p dict definir dicionário personalizado dict -r alertar sobre erros potenciais (raras palavras) -s tronco das palavras do texto de entrada -t formato de ficheiro de entrada TeX/LaTeX -v, --version exibe o número da versão -vv exibe o número da versão Ispell compatível -w imprimir palavras com erros ortográficos (= linhas) de uma palavra/linha de entrada. 0-n Substituir por uma das palavras sugeridas. ? Mostrar este ecrã de ajuda. A Aceitar a palavra para o resto da sessão. DICIONÁRIOS DISPONÍVEIS (o caminho não é obrigatório para a opção -d): Tem certeza que deseja descartar as suas alterações? Relatório de erros: http://hunspell.github.io/ Não foi possível criar o ficheiro temporárioNão foi possível criar o diretório tmpNão foi possível abrir %s. Não é possível abrir apor ou ficheiros de dicionário chamado "%s". Não foi possível abrir o ficheiro de entradaNão foi possível abrir o ficheiro de saídaNão foi possível atualizar o dicionário pessoal.Verifica a ortografia de cada FICHEIRO. Sem FICHEIRO, verifique a entrada padrão. Exemplo: hunspell -d pt_PT ficheiro.txt # interativo ortográfico hunspell-eu utf-8 ficheiro.txt # verifique a codificação UTF-8 do ficheiro hunspell-l *.odt # imprimir ortográficos de ficheiros ODF # Rápida correção de documentos ODF pelo dicionário pessoal de criação # 1 Faça uma lista reduzida de erros ortográficos e palavras desconhecidas: hunspell -l *.odt | sort | uniq >palavras # 2 Eliminar erros ortográficos do ficheiro com um editor de texto. # 3 Utilize este dicionário pessoal para corrigir as palavras apagadas: hunspell -p palavras *.odt PROIBIDO!O Hunspell foi compilado sem a interface do Ncurses. I Aceitar a palavra e colocá-la no dicionário particular. DICIONÁRIO CARREGADO: %s %s Linha %d: %s -> Palavra de modelo (uma palavra do dicionário semelhante): Palavra de modelo deve estar no dicionário. Pressione qualquer tecla!Palavra nova (tronco): C Sair imediatamente. Vai pedir uma confirmação. Deixa ficheiro inalterado. R Substituir manualmente a palavra com erros ortográficos. Substituir por: T Solicitar um tronco e um modelo da palavra e armazená-las no dicionário particular. O tronco também será aceite com os afixos do modelo da palavra. CAMINHO DE PESQUISA: %s Espaço Aceitar a palavra apenas esta vez. Erro de ortografia?Este é um software livre; veja o código fonte para as condições de cópia. NÃO HÁ GARANTIAS; nem mesmo para COMERCIALIZAÇÃO ou ADAPTAÇÃO PARA UM FIM ESPECÍFICO, na medida permitida por lei. U Aceitar e adicionar a versão minúscula ao dicionário particular. Uso: hunspell [OPÇÃO]... [FICHEIRO]... Sempre que é encontrada uma palavra que não está no dicionário ela será mostrada na primeira linha do ecrã. Se o dicionário contiver palavras semelhantes, elas serão listadas com um número ao lado. O utilizador tem a opção de substituir a palavra manualmente, ou escolher uma das palavras sugeridas. S Escrever o resto deste ficheiro ignorando os erros de ortografia e iniciar o próximo ficheiro. ^Z Suspender o programa. Reiniciar com o comando fg. aerro - %s excede o limite do dicionário. erro - iconv: %s -> %s erro - iconv_open: %s -> %s erro - iconv_open: UTF-8 -> %s erro - variável HOME em falta icrtusshunspell-1.7.2/po/ckb.gmo0000664000175000017500000000305714353370167012175 00000000000000<2 " =HXjy(m]:%/DU"!#%')+-     Commands are: Are you sure you want to throw away your changes? Can't create tmp dirCan't open %s. Cannot update personal dictionary.FORBIDDEN!Line %d: %s -> New word (stem): Replace with: Spelling mistake?aiqsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:09+0000 Last-Translator: Jwtiyar Nariman Language-Team: Kurdish (Central) Language: ckb MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.14-dev فرمانەکان بریتین لە: ئایا تۆ دڵنیایت کە دەتەوێت گۆڕانکارییەکان بنێریت؟ ناتوانرێت ڕێڕەوی tmp درووستبکرێتناتوانێت %s بکاتەوە. ناوتانرێت فەرهەنگی کەسی نوێبکرێتەوە.ڕێگەپێنەدراوە!دێڕی %d: %s -> وشەی نوێ (stem): جێگۆڕکێ بکە لەگەڵ: هەڵەی ڕێنووس؟aiqsuxyhunspell-1.7.2/po/nl_BE.po0000664000175000017500000003642514353370167012256 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:09+0000\n" "Last-Translator: Nathan \n" "Language-Team: Dutch (Belgium) \n" "Language: nl_BE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "fout - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "fout - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "fout - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Kan tijdelijke map niet aanmaken" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Kan invoerbestand niet openen" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Kan %s niet openen.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "fout - variabele HOME ontbreekt\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Regel %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "VERBODEN!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Spelfout?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tBestand: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[SPATIE] veR)vangen A)anvaarden I)nvoegen kleineL)etters S)tam aF)sluiten " "sT)oppen, ? voor hulp\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Wanneer dat een woord wordt gevonden dat niet in het woordenboek\n" "staat, wordt het op de eerste regel van het scherm getoond. Als het\n" "woordenboek gelijkaardige woorden bevat, worden deze met\n" "een nummer naast mekaar getoond. Ge kunt het woord volledig\n" "vervangen, of een van de aanbevolen woorden kiezen.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Opdrachten zijn:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "R\tVervangt het verkeerd gespelde woord volledig.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Spatie\tAanvaardt het woord eenmalig.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tAanvaardt het woord voor de rest van deze sessie.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tAanvaardt het woord en bewaart het in uw persoonlijk woordenboek.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" "L\tAanvaardt en bewaart een versie in kleine letters in uw persoonlijk " "woordenboek.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "S\tVraagt voor een stam en een modelwoord en slaat ze op in het persoonlijk " "woordenboek.\n" "\tDe stam zal aanvaard worden met de affixen van het modelwoord.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tVervangt door een van de aanbevolen woorden.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "T\tSchrijft de rest van dit bestand, negeert verkeerde gespelde woorden, en " "begint met het volgend bestand.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" "F\tOnmiddellijk afsluiten. Vraagt voor bevestiging. Bestanden blijven " "ongewijzigd.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tProgramma pauzeren. Start opnieuw met fg-opdracht.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tToont dit hulpscherm.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Drukt op spatie voor verder te gaan -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "r" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Vervangen door: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "l" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Kan persoonlijk woordenboek niet bijwerken." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "s" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Nieuw woord (stam): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Modelwoord (een vergelijkbaar woordenboekwoord): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" "Modelwoord moet in het woordenboek staan. Drukt op een toets voor verder te " "gaan!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "t" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "f" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Zijt ge zeker dat ge uw wijzigingen wilt verwerpen? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "j" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Kan tijdelijk bestand niet aanmaken" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Kan uitvoerbestand niet openen" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Gebruik: hunspell [OPTIE]... [BESTAND]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Controleert de spelling van elk BESTAND. Zonder BESTAND wordt " "standaardinvoer gecontroleerd.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\tcontroleert enkel eerste veld in regels (scheidingsteken = tab)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tpipe-interface van Ispell\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr " --check-url\tcontroleert URL's, e-mailadressen en mappaden\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tcontroleert typografischen Unicode-apostrof\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\tgebruikt woordenboeken d (d2, enz.)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\ttoont beschikbare woordenboeken\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\ttoont enkel juste woorden of regels\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\ttoont deze hulp en stopt\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tHTML-invoerbestandsformaat\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i cod\tinvoerscodering\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\ttoont verkeerd gespelde woorden\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\ttoont regels met verkeerd gespelde woorden\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tanalyseert de woorden van den invoertekst\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tnroff-/troff-invoerbestandsformaat\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tOpenDocument (ODF of platten ODF)-invoerbestandsformaat\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p wdbk\tstelt aangepast woordenboek in\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr "" " -r\t\ttoont waarschuwing voor mogelijke fouten (ongebruikelijke woorden)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P paswoord\tstelt paswoord voor versleutelde woordenboeken in\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\ttoont stam van woorden van invoertekst\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\ttoont suffix van woorden van invoertekst\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tTeX-/LaTeX-invoerbestandsformaat\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\ttoond versienummer\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\ttoont Ispell-compatibel versienummer\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\ttoont verkeerd gespelde woorden (= regels) van invoer van één woord/" "regel.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tXML-invoerbestandsformaat\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Voorbeeld: hunspell -d nl_BE bestand.txt # interactieve spelling\n" " hunspell -i utf-8 bestand.txt # controleert bestand in UTF-8-" "codering\n" " hunspell -l *.odt # toont verkeerd gespelde woorden in " "ODF-bestanden\n" "\n" " # Rappe verbetering van ODF-documenten door aanmaken van " "persoonlijk woordenboek\n" "\n" " # 1 Maakt ne gereduceerde lijst van verkeerd gespelde en onbekende " "woorden:\n" "\n" " hunspell -l *.odt | sort | uniq >woorden\n" "\n" " # 2 Verwijdert verkeerd gespelde woorden uit het bestand met nen " "tekstverwerker.\n" " # 3 Gebruikt dit persoonlijk woordenboek voor de verkeerd gespelde " "woorden te verbeteren:\n" "\n" " hunspell -p woorden *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Foutmeldingen: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Auteursrecht © 2002-2014 László Németh. Licentie: MPL/GPL/LGPL.\n" "\n" "Gebaseerd op de Myspell-bibliotheek van OpenOffice.org.\n" "Myspell-auteursrecht © Kevin Hendricks, 2001-2002. Licentie: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Dit is vrije software; bekijkt de broncode voor kopieervoorwaarden. Der is " "GEEN\n" "garantie, zelfs niet voor VERHANDELBAARHEID of GESCHIKTHEID VOOR EEN BEPAALD " "DOEL,\n" "voorzover toegelaten door de wet.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "ZOEKPAD:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "BESCHIKBARE WOORDENBOEKEN (pad is niet verplicht voor optie -d):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "INGELADEN WOORDENBOEK:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "fout - %s overschrijdt woordenboeklimiet.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" "Kan affix- of woordenboekbestanden voor woordenboek genaamd \"%s\" niet " "openen.\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hunspell is gecompileerd zonder den Ncurses-gebruikersinterface.\n" hunspell-1.7.2/po/gl.gmo0000664000175000017500000002447614353370170012042 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}{)P@J\L)8*W/DA09*j&3*"$>0c1-1.&-U/<X.I!x0F--@*n*a,B+o,]& "8"9#@#[#5l#@##U#/P$$$%0'%X%k%HV&2&/&X(0[((-(((()0)2)4)6)8):)<)1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:09+0000 Last-Translator: Adolfo Jayme Barrientos Language-Team: Galician Language: gl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.14-dev %s Ficheiro: %s -- Escriba un espazo para continuar -- As ordes son: [ESPAZO] S)ubs A)ceptar I)nserir M)inus R)aíz O)mitir (S)aír ou ? para axuda --check-apostrophe comproba o apóstrofo tipográfico Unicode --check-url comproba os URL, enderezos de correo e rutas de directorios -1 revisar soamente o primeiro campo en liñas (delimitador = tabulador) -D amosar os dicionario dispoñíbeis -G imprimir soamente as palabras correctas ou liñas -H Formato HTML de ficheiro de entrada -L imprimir as liñas con palabras marcadas -O Formato do ficheiro de entrada OpenDocument (ODF ou Flat ODF) -P contrasinal definir o contrasinal para dicionarios cifrados -S sufixos das palabras do texto de entrada -X Formato do ficheiro de entrada XML -a Interface da tubaría de Ispell -d d[,d2,...] utilice os dicionarios d (d2 etc.) -h, --help presentar esta axuda e saír -i enc codificación de entrada -l imprimir as palabras marcadas -m analizar as palabras do texto de entrada -n nroff/troff formato do ficheiro de entrada -p dict definir o dicionario personalizado -r aviso de potenciais erros (palabras raras) -s raíz das palabras do texto de entrada -t Formato do ficheiro de texto TeX/LaTeX -v, --version imprimir o número da versión -vv imprimir o número da versión compatíbel de Ispell -w imprimir as palabras marcadas (= liñas) a partir dunha palabra/liña de entrada. 0-n Substituír cunha das palabras suxeridas. ? Amosar esta pantalla de axuda. A Aceptar a palabra para o resto desta sesión. DICIONARIOS DISPOÑÍBEIS (a ruta non é obrigatoria coa opción -d): Confirma que quere desbotar os seus cambios? Informes de erro: http://hunspell.github.io/ Non foi posíbel crear o ficheiro temporalNon foi posíbel crear o cartafol temporalNon foi posíbel abrir %s. Non é posíbel abrir o ficheiro de afixos ou os de dicionario para o dicionario co nome «%s». Non foi posíbel abrir o ficheiro de entradaNon foi posíbel abrir o ficheiro de saídaNon se pode actualizar o dicionario persoal.Revisar a corrección de cada FICHEIRO. De non haber FICHEIRO, revisar a entrada estándar. Exemplo: hunspell -d en_US file.txt # revisión interactiva hunspell -i utf-8 file.txt # comprobar o ficheiro codificado en UTF-8 hunspell -l *.odt # imprimir as palabras marcadas dos ficheiros ODF # Arranxar rapidamente documentos ODF mediante a creación dun dicionario persoal # 1 Facer unha lista reducida a partir das palabras marcadas e descoñecidas: hunspell -l *.odt | sort | uniq >words # 2 Eliminar as palabras marcadas do ficheiro mediante un editor de texto. # 3 Utilice este dicionario persoal para arranxar as palabras eliminadas: hunspell -p words *.odt PROHIBIDO!Hunspell compilouse sen a interface de usuario Ncurses. I Aceptar a palabra e poñela no seu dicionario privado. DICIONARIO CARGADO: %s %s Liña %d: %s -> Palabra modelo (unha palabra similar do dicionario): A palabra modelo debe estar no dicionario. Prema calquera tecla!Nova palabra (raíz): Q Saír inmediatamente. Pedir confirmación. Deixar o ficheiro sen realizar cambios. S Substituír a palabra marcada completamente. Substituír con: S Pedir unha raíz e unha palabra modelo e gardala no dicionario privado. A raíz aceptará tamén os afixos da palabra modelo. RUTA DE BUSCA: %s Espazo Aceptar a palabra soamente por esta vez. Erro de revisión?Isto é software libre; vexa a orixe para comprender os dereitos de copia. NON hai garantía; tanto no caso de utilización MERCANTIL coma no de ADECUACIÓN PARA UN PROPÓSITO PARTICULAR, ata o límite do permitido pola lexislación. U Aceptar e engadir unha versión en minúsculas no dicionario privado. Utilización: hunspell [OPCIÓN]... [FICHEIRO]... Cando se atopa unha palabra que non está no dicionario imprímese na primeira liña da pantalla. Se o dicionario contén algunha palabra semellante, lístase cun número próximo a cada unha delas. Desde aí, vostede ten a opción de substituír a palabra completamente ou escoller unha das suxeridas. X Escribir o resto deste ficheiro, ignorando as marcadas e comezar o seguinte ficheiro. ^Z Suspender o programa. Reiniciar coa orde fg. aerro - %s excédese o límite do dicionario. erro - iconv: %s -> %s erro - iconv_open: %s -> %s erro - iconv_open: UTF-8 -> %s erro - falta a variábel HOME iqrsuxyhunspell-1.7.2/po/pa.gmo0000664000175000017500000000552514353370170012032 00000000000000 hiyG '$9^w Vq:SWk$ $ ' K     %s File: %s Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help Can't create tmp dirCan't open %s. Can't open inputfileFORBIDDEN!Line %d: %s -> Spelling mistake?Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable Project-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-11-04 15:53+0000 Last-Translator: Dharam Veer Sharma Language-Team: Punjabi Language: pa MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n > 1; X-Generator: Weblate 4.14.2-dev %s ਫ਼ਾਇਲ: %s ਕਮਾਡਾਂ ਹਨ: [SPACE] R)epl A)ਮਨਜ਼ੂਰ I)ਪਾਓ U)ਬਿਨਾਂ-ਕੈਪ S)ਸਟੀਮ Q)ਛੱਡੋ (X)ਬਾਹਰ ਜਾਂ ਮਦਦ ਲਈ ? ਆਰਜ਼ੀ ਡਾਇਰੈਕਟਰੀ ਬਣਾਈ ਨਹੀਂ ਜਾ ਸਕਦੀ%s ਖੋਲ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕਦੀ। ਇਨਪੁਟ-ਫ਼ਾਇਲ ਖੋਲ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕਦੀਲੁਕਵਾਂ!ਲਾਈਨ %d: %s -> ਸ਼ਬਦ-ਜੋੜ ਗ਼ਲਤੀ?ਜਦੋਂ ਵੀ ਕੋਈ ਅਜਿਹਾ ਸ਼ਬਦ ਮਿਲਦਾ ਹੈ ਜੋ ਸ਼ਬਦਕੋਸ਼ ਵਿੱਚ ਨਹੀਂ ਹੈ ਇਹ ਸਕਰੀਨ ਦੀ ਪਹਿਲੀ ਲਾਈਨ 'ਤੇ ਛਾਪਿਆ ਜਾਂਦਾ ਹੈ। ਜੇਕਰ ਸ਼ਬਦਕੋਸ਼ ਵਿੱਚ ਕੋਈ ਵੀ ਸਮਾਨ ਸ਼ਬਦ ਨਹੀਂ ਹੈ, ਉਹ ਹਰ ਇੱਕ ਦੇ ਅੱਗੇ ਇੱਕ ਨੰਬਰ ਦੇ ਨਾਲ ਸੂਚੀਬੱਧ ਕੀਤੇ ਜਾਂਦੇ ਹਨ. ਤੁਹਾਡੇ ਕੋਲ ਪੂਰੀ ਤਰ੍ਹਾਂ, ਜਾਂ ਸੁਝਾਏ ਗਏ ਸ਼ਬਦਾਂ ਵਿੱਚੋਂ ਇੱਕ ਨੂੰ ਚੁਣ ਕੇ ਸ਼ਬਦ ਨੂੰ ਬਦਲਣ ਦਾ ਵਿਕਲਪ ਹੈ । ਗਲਤੀ - iconv: %s -> %s ਗਲਤੀ - iconv_open: %s -> %s ਗਲਤੀ - iconv_open: UTF-8 -> %s ਗਲਤੀ - HOME ਵੇਰੀਬਲ ਮੌਜੂਦ ਨਹੀਂ ਹੈ hunspell-1.7.2/po/ky.po0000664000175000017500000002533214353370167011715 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:09+0000\n" "Last-Translator: Ilyas Bakirov \n" "Language-Team: Kyrgyz \n" "Language: ky\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "ката - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "ката - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "ката - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Файлды ачууда ката чыкты" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Ачуу катасы %s.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Сап %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "ТЫЮ САЛЫНГАН!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Орфографиялык ката?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tФайл: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "" #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "" #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "" #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "" #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "" #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr "" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr "" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr "" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr "" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr "" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr "" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr "" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr "" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr "" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr "" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr "" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr "" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr "" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "" #: src/tools/hunspell.cxx:1895 msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "" hunspell-1.7.2/po/ckb.po0000664000175000017500000002562114353370167012032 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:09+0000\n" "Last-Translator: Jwtiyar Nariman \n" "Language-Team: Kurdish (Central) \n" "Language: ckb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "ناتوانرێت ڕێڕەوی tmp درووستبکرێت" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "ناتوانێت %s بکاتەوە.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "دێڕی %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "ڕێگەپێنەدراوە!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "هەڵەی ڕێنووس؟" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "فرمانەکان بریتین لە:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "جێگۆڕکێ بکە لەگەڵ: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "u" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "ناوتانرێت فەرهەنگی کەسی نوێبکرێتەوە." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "s" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "وشەی نوێ (stem): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "" #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "x" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "q" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "ئایا تۆ دڵنیایت کە دەتەوێت گۆڕانکارییەکان بنێریت؟ " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "y" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr "" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr "" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr "" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr "" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr "" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr "" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr "" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr "" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr "" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr "" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr "" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr "" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr "" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr "" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr "" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr "" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "" #: src/tools/hunspell.cxx:1895 msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "" hunspell-1.7.2/po/pt.po0000664000175000017500000003644614353370167011725 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:09+0000\n" "Last-Translator: ssantos \n" "Language-Team: Portuguese \n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "erro - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "erro - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "erro - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Não foi possível criar o diretório tmp" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Não foi possível abrir o ficheiro de entrada" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Não foi possível abrir %s.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "erro - variável HOME em falta\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Linha %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "PROIBIDO!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Erro de ortografia?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tFicheiro: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[ESPAÇO] R)epor A)ceitar I)nserir U)ncap T)ronco C)oncluir S)air, ou ? para " "obter ajuda\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Sempre que é encontrada uma palavra que não está no dicionário\n" "ela será mostrada na primeira linha do ecrã. Se o dicionário\n" "contiver palavras semelhantes, elas serão listadas com um \n" "número ao lado. O utilizador tem a opção de substituir a palavra\n" "manualmente, ou escolher uma das palavras sugeridas.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Os comandos são:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "R\tSubstituir manualmente a palavra com erros ortográficos.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Espaço\tAceitar a palavra apenas esta vez.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tAceitar a palavra para o resto da sessão.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tAceitar a palavra e colocá-la no dicionário particular.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "U\tAceitar e adicionar a versão minúscula ao dicionário particular.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "T\tSolicitar um tronco e um modelo da palavra e armazená-las no dicionário " "particular.\n" "O tronco também será aceite com os afixos do modelo da palavra.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tSubstituir por uma das palavras sugeridas.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "S\tEscrever o resto deste ficheiro ignorando os erros de ortografia e " "iniciar o próximo ficheiro.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" "C\tSair imediatamente. Vai pedir uma confirmação. Deixa ficheiro " "inalterado.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z Suspender o programa. Reiniciar com o comando fg.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tMostrar este ecrã de ajuda.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Tecle espaço para continuar -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "r" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Substituir por: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "u" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Não foi possível atualizar o dicionário pessoal." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "t" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Palavra nova (tronco): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Palavra de modelo (uma palavra do dicionário semelhante): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "Palavra de modelo deve estar no dicionário. Pressione qualquer tecla!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "s" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "c" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Tem certeza que deseja descartar as suas alterações? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "s" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Não foi possível criar o ficheiro temporário" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Não foi possível abrir o ficheiro de saída" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Uso: hunspell [OPÇÃO]... [FICHEIRO]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Verifica a ortografia de cada FICHEIRO. Sem FICHEIRO, verifique a entrada " "padrão.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\tverificar apenas o primeiro campo em linhas (delimitador = " "tabulação)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\tInterface de tubulação do Ispell\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" " --check-url\tverifica URLs, endereços de e-mail e caminho de diretórios\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tverificar apóstrofo tipográfico unicode\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...] usar dicionários d (d2, etc)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\texibe os dicionários disponíveis\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\texibe apenas as palavras ou linhas corretas\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\texibe esta ajuda e sai\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H HTML\t\tFormato de ficheiro de entrada HTML\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i enc\tCodificação de entrada\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\tImprimir palavras com erros ortográficos\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\tImprimir palavras com erros ortográficos\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m\tAnalisar as palavras do texto de entrada\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tformato de ficheiro de entrada nroff/troff\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr "" " -O\t\tformato de ficheiro de entrada OpenDocument (ODF ou ODF plana)\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p dict \tdefinir dicionário personalizado dict\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\talertar sobre erros potenciais (raras palavras)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr "" " -P palavra-passe\tdefinir palavra-passe para dicionários criptografados\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s\ttronco das palavras do texto de entrada\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S\t\tsufixo palavras do texto de entrada\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tformato de ficheiro de entrada TeX/LaTeX\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\texibe o número da versão\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\texibe o número da versão Ispell compatível\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\timprimir palavras com erros ortográficos (= linhas) de uma palavra/" "linha de entrada.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tformato de ficheiro de entrada XML\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Exemplo: hunspell -d pt_PT ficheiro.txt # interativo ortográfico\n" "hunspell-eu utf-8 ficheiro.txt # verifique a codificação UTF-8 do ficheiro\n" "hunspell-l *.odt # imprimir ortográficos de ficheiros ODF\n" "\n" "# Rápida correção de documentos ODF pelo dicionário pessoal de criação\n" "\n" "# 1 Faça uma lista reduzida de erros ortográficos e palavras desconhecidas:\n" "\n" "hunspell -l *.odt | sort | uniq >palavras\n" "\n" "# 2 Eliminar erros ortográficos do ficheiro com um editor de texto.\n" "# 3 Utilize este dicionário pessoal para corrigir as palavras apagadas:\n" "\n" "hunspell -p palavras *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Relatório de erros: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Copyright (C) 2002-2014 László Németh. Licença: MPL/GPL/LGPL.\n" "\n" "Baseado na biblioteca Myspell do OpenOffice.org.\n" "Direitos autorais do Myspell (C) Kevin Hendricks, 2001-2002, Licença: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Este é um software livre; veja o código fonte para as condições de cópia. " "NÃO HÁ\n" "GARANTIAS; nem mesmo para COMERCIALIZAÇÃO ou ADAPTAÇÃO PARA UM FIM " "ESPECÍFICO,\n" "na medida permitida por lei.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "CAMINHO DE PESQUISA:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "" "DICIONÁRIOS DISPONÍVEIS (o caminho não é obrigatório para a opção -d):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "DICIONÁRIO CARREGADO:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "erro - %s excede o limite do dicionário.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "Não é possível abrir apor ou ficheiros de dicionário chamado \"%s\".\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "O Hunspell foi compilado sem a interface do Ncurses.\n" hunspell-1.7.2/po/de.gmo0000664000175000017500000002473714353370170012030 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}*oCQFL*)0T8:E+^$5.3+N-z%9:.C#r(1U4G#|1R?%+e+* _ (i'9XM #<$#:a###-#G#A$OZ$3$$$%+%%%R&('X7'Y(5( )2")U)o)!) ))))))))1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:08+0000 Last-Translator: Anonymous Language-Team: German Language: de MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.14-dev X-Language: de_DE X-Source-Language: C %s Datei: %s -- Zum Fortfahren Leertaste drücken -- Befehle sind: [LEERTASTE] E)rsetzen A)nnehmen E(I)nfügen K)leinschreiben Ab(L)eiten S)chließen B)eenden oder ? für Hilfe --check-apostrophe Typografischen Unicode-Apostroph überprüfen --check-url URLs, E-Mail-Adressen und Verzeichnispfade überprüfen -1 nur das erste Feld bei Zeilen überprüfen (Trennzeichen = Tabulator) -D verfügbare Wörterbücher anzeigen -G nur korrekte Wörter oder Zeilen ausgeben -H HTML Eingabedateiformat -L Zeilen mit falsch geschriebenen Wörtern ausgeben -O OpenDocument (ODF oder Flat ODF) Eingabedateiformat -P password Passwort für verschlüsselte Wörterbücher festlegen -S Wörter des Eingabetextes anhängen -X XML Eingabedateiformat -a Pipe-Schnittstelle von Ispell -d d[,d2,...] d (d2 usw.) Wörterbücher verwenden -h, --help diese Hilfe anzeigen und beenden -i enc Eingabekodierung -l falsch geschriebene Wörter ausgeben -m Wörter des Eingabetextes analysieren -n nroff/troff Eingabedateiformat -p dict benutzerdefiniertes Wörterbuch dict festlegen -r vor den möglichen Fehlern warnen (seltene Wörter) -s Worte des eingegebenen Textes ableiten -t TeX/Latex Eingabedateiformat -v, --version Versionsnummer ausgeben -vv Ispell-kompatible Versionsnummer ausgeben -w falsch geschriebene Wörter (= Zeilen) von einer Wort-/Zeileneingabe ausgeben. 0-n Mit einem der vorgeschlagenen Wörter ersetzen. ? Diesen Hilfebildschirm anzeigen. A Wort für den Rest dieser Sitzung übernehmen. VERFÜGBARE WÖRTERBÜCHER (Pfad ist für Option -d nicht zwingend erforderlich): Sind Sie sicher, dass Sie Ihre Änderungen wegwerfen möchten? Fehlerberichte: http://hunspell.github.io/ Temporäre Datei kann nicht erstellt werdenVerzeichnis tmp kann nicht erstellt werden%s kann nicht geöffnet werden. Affix oder Wörterbuchdateien für ein Wörterbuch namens "%s" können nicht geöffnet werden. Eingabedatei kann nicht geöffnet werdenAusgabedatei kann nicht erstellt werdenPersönliches Wörterbuch kann nicht aktualisiert werden.Rechtschreibung jeder DATEI überprüfen. Ohne DATEI die Standardeingabe überprüfen. Beispiel: hunspell -d en_US Datei.txt # interaktive Rechtschreibung hunspell -i utf-8 Datei.txt # UTF-8-kodierte Datei überprüfen hunspell -l *.odt # falsch geschriebene Wörter aus ODF-Dateien ausgeben # Schnelle Korrektur von ODF-Dokumenten durch persönliche Wörterbucherstellung # 1. Erstellen Sie eine reduzierte Liste aus falsch geschriebenen und unbekannten Wörtern: hunspell -l *.odt | sort | uniq >words # 2. Löschen Sie falsch geschriebene Wörter aus der Datei durch einen Texteditor. # 3. Verwenden Sie dieses persönliche Wörterbuch, um die gelöschten Wörter zu korrigieren: hunspell -p words *.odt VERBOTEN!Hunspell wurde ohne Ncurses-Benutzeroberfläche kompiliert. I Wort übernehmen und in Ihr privates Wörterbuch legen. GELADENES WÖRTERBUCH: %s %s Zeile %d: %s -> Musterwort (ein ähnliches Wörterbuchwort): Musterwort muss im Wörterbuch sein. Drücken Sie eine beliebige Taste!Neues Wort (Wortstamm): S Sofort schließen. Bittet um Bestätigung. Lässt Datei ungeändert zurück. R Falsch geschriebenes Wort vollständig ersetzen. Ersetzen mit: S Nach einen Wortstamm und einem Musterwort fragen und im privaten Wörterbuch speichern. Der Wortstamm wird auch mit den Affixen des Musterwortes übernommen. PFAD SUCHEN: %s Leertaste Wort nur dieses Mal übernehmen. Rechtschreibfehler?Dies ist freie Software; siehe die Quelle für Bedingungen zur Vervielfältigung. Es gibt keine Gewährleistung; nicht einmal für MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK, soweit gesetzlich zulässig. k Übernehmen und kleingeschriebene Version zum privaten Wörterbuch hinzufügen. Aufruf: hunspell [OPTION]... [DATEI]... Immer wenn ein Wort gefunden wird, das nicht im Wörterbuch steht, wird es in der ersten Zeile des Bildschirms ausgegeben. Wenn das Wörterbuch irgendwelche ähnlichen Wörter enthält, wird jedes neben einer Nummer aufgelistet. Sie haben die Möglichkeit, das Wort vollständig zu ersetzen oder eines der vorgeschlagenen Wörter auszuwählen. B Rest dieser Datei schreiben, Rechtschreibfehler ignorieren und nächste Datei starten. ^Z Programm unterbrechen. Mit Befehl fg neu starten. aFehler - %s überschreitet Wörterbuchbegrenzung. Fehler - iconv: %s -> %s Fehler - iconv_open: %s -> %s Fehler - iconv_open: UTF-8 -> %s Fehler - fehlende HOME-Variable iselkbjhunspell-1.7.2/po/tg.gmo0000664000175000017500000003152114353370170012037 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}gS{Gd,z0F[4N?Rdk{4+XHK+CR];Px=V9 DGVXd D Z!]]!m!N)":x";"$"X#4m#<#=#w$$ L(bZ(d(#")F)PZ)u)"!*D*J*+%:+ `,P,,,.< /G/K1g1U2DW22 2#2E2C3E3G3I3K3M3O31GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: Tajik Hunspell Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:08+0000 Last-Translator: Anonymous Language-Team: Tajik Language: tg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Weblate 4.14-dev %s Файл: %s -- Барои идома тугмаи ФОСИЛА-ро пахш намоед -- Фармонҳо: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe апострофи матбаавии Unicode-ро тафтиш мекунад --check-url суроғаҳои URL, суроғаҳои почтаи электронӣ ва масирҳои луғатҳоро тафтиш мекунад -1 танҳо майдони якуми сатрҳоро санҷед (маҳдудкунанда= табулятор) -D луғатҳои дастрасро намоиш медиҳад -G танҳо сатрҳо ё калимаҳои дурустро чоп мекунад -H Формати файли вурудии HTML -L сатрҳоро бо хатоҳо чоп мекунад -O Файли формати вурудии OpenDocument (ODF ё ODF Оддӣ) -P password барои луғатҳои рамздор паролро танзим мекунад -S ба калимаҳо аз матни вурудӣ пасвандҳоро илова мекунад -X Формати файли вурудии XML -a Интерфейси хати Ispell -d d[,d2,...] луғатҳоро (d2 ва ғайра) истифода мебарад -h, --help ин кумакро намоиш диҳед ва бароед -i enc рамзгузории вуруд -l калимаҳоро бо хатоҳо чоп мекунад -m калимаҳои матни вурудиро таҳлил мекунад -n Формати файли вурудии nroff/troff -p dict луғати фармоишии dict-ро танзим мекунад -r дар бораи хатоҳои имконпазир (калимаҳои камёб) ҳушдор мекунад -s калимаҳоро аз матни вурудӣ ба вуҷуд меорад -t Формати файли вурудии TeX/LaTeX -v, --version рақами версияро чоп мекунад -vv рақами версияи мувофиқи Ispell-ро чоп мекунад -w калимаҳоро бо хатоҳо (= хатҳо) яз як калима/хати вурудӣ чоп мекунад. 0-n Иваз кардан бо яке аз калимаҳои пешниҳодшуда. ? Намоиш додани ин экрани кумакрасон. К Калимаро танҳо то анҷоми ин ҷаласа қабул кунед. ЛУҒАТҲОИ ДАСТРАС (масир барои имкони -d ҳатмӣ нест): Шумо мутмин ҳастед, ки мехоҳед тағйироти худро бекор кунед? Гузоришҳо дар бораи хатоҳо: http://hunspell.github.io/ Файли tempfile эҷод карда намешавадФеҳристи tmp эҷод карда намешавад%s кушода намешавад. Файлҳо affix ё dic барои луғати "%s" кушода намешавад. Файли inputfile кушода намешавадФайли outputfile эҷод карда намешавадЛуғати шахсӣ нав карда намешавад.Санҷиши имло дар ҳар як ФАЙЛ. Бе ФАЙЛ, вуруди стандартиро санҷед. Мисол: hunspell -d en_US file.txt # санҷиши имлои интерактивӣ hunspell -i utf-8 file.txt # файли рамздори UTF-8-ро тафтиш мекунад hunspell -l *.odt # калимаҳоро бо хатоҳо аз файлҳои ODF оп мекунад # Ислоҳи тезкор дар ҳуҷҷатҳои ODF тавассути эҷодкунии луғатҳои шахсӣ # 1 Рӯйхати кутоҳро аз калимаҳои номаълум ё хатоҳо эҷод кунед: hunspell -l *.odt | sort | uniq >words # 2 Калимаҳоро бо хатоҳо аз файл тавассути муҳаррири матн нест кунед. # 3 Барои ислоҳ кардани калимаҳои нестшуда аз ин луғати шахсӣ истифода баред: hunspell -p words *.odt МАМНӮЪ!Hunspell бе интерфейси графикии Ncurses таҳия карда шудааст. I Калимаро қабул кунед ва онро ба луғати шахсӣ гузоред. ЛУҒАЛИ БОРШУДА: %s %s Хати %d: %s -> Калимаи намунавӣ (калимаи намунавии луғат): Калимаи намунавӣ бояд дар луғат бошад. Ягон тугмаро пахш намоед!Калимаи нав (асос): Х Дарҳол хомӯш кунед. Тасдиқкуниро дархост мекунад. Файлро бетағйир мемонад. И Иваз кардани ҳамаи калимаҳо бо хатоҳо. Иваз кардан бо: S Калимаҳои асосӣ ва намунавиро дархост кунед ва онҳоро ба луғати шахсӣ гузоред. Калимаҳои асосӣ инчунин бо аффиксҳои калимаҳои намунавӣ қабул карда мешаванд. МАСИРИ ҶУСТУҶӮ: %s Фосила Калимаро танҳо ин дафъа қабул кунед. Имло хато дорад?Ин нарамафзори ройгон аст. Барои қоидаҳои нусхабардорӣ ба манбаъ нигаред. Ягон кафолат дода намешавад; ва инчунин барои мақсадҳои ФУРӮШӢ ё МУВОФИҚАТ БА МАҚСАДИ МАХСУС, дар ҳудуди қонунгузорӣ, ягон кафолат дода намешавад. U Вариантҳоро бо калимаҳои хурд қабул кунед ва ба луғати шахсӣ гузоред. Тарзи истифода: hunspell [OPTION]... [FILE]... Ҳар вақте ки калима берун аз луғат пайдо мешавад, он дар якум сатри экран чоп карда мешавад. Агар луғат дорои калимаҳои монанд бошад, онҳо бо рақам дар рӯйхат намоиш дода мешаванд. Шумо метавонед калимаро комилан иваз кунед ё ин ки онро бо яке аз калимаҳои пешниҳодшуда иваз намоед. X Файлро то охир сабт намоед, хатоҳои имлоро нодида гузаронед ва файли навбатиро кушоед. ^Z Таваққуф кардани барнома. Бо фармони fg бозоғозӣ кунед. aхато - %s маҳдудияти луғатро меафзояд. хато - iconv: %s -> %s хато - iconv_open: %s -> %s хато - iconv_open: UTF-8 -> %s хато - тағйирёбандаи HOME вуҷуд надорад iqrsuxyhunspell-1.7.2/po/da.gmo0000664000175000017500000002340214353370170012010 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}f-u\78L?",05=f>% !).K(z#&'0-7^"%'1D9)~(G65*l"H6P#iER&!3/!3c!!!#!<! "W3"0" "x" B#)P# z##DK$-$ $Y%5%&[&&]&&&&&&&&&&&'1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:08+0000 Last-Translator: jan madsen Language-Team: Danish Language: da MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.14-dev %s Fil: %s -- Tryk på mellemrum for at fortsætte -- Kommandoerne er: [MELLEMRUM] E)rstat A)ccepter I)ndsæt U)ncap S)tamme afslu(T) (F)orlad eller ? for hjælp --check-apostrophe tjek Unicode-typografisk apostrof --check-url tjek URL'er, e-mailadresser og mappestier -1 tjek kun linjernes første felt (afgrænser = tabulator) -D vis tilgængelige ordbøger -G udskriv kun korrekte ord eller linjer -H format for HTML-inputfil -L udskriv linjerne med forkert stavede ord -O format for OpenDocument-inputfil (ODF eller fladt ODF) -P adgangskode indstil adgangskode for krypterede ordbøger -S suffiks ordene i inputteksten -X format for XML-inputfil -a Ispell's pipe-grænseflade -d d[,d2, ...] brug ordbøgerne d (d2 osv.) -h, --help vis denne hjælp og afslut -i kod inputkodning -l udskriv forkert stavede ord -m analyser ordene i inputteksten -n format for nroff-/troff-inputfil -p ordbog indstil ordbog til tilpasset ordbog -r advar om potentielle fejltagelser (sjælden ord) -s stam ordene i inputteksten -t format for TeX-/LaTeX-inputfil -v, --version udskriv versionsnummer -vv udskriv Ispell-kompatibelt versionsnummer -w udskriv forkert stavede ord (= linje) fra et ord-/linjeinput. 0-n Erstat med et af de foreslåede ord. ? Vis denne hjælp skærm. A Accepter ordet i resten af sessionen. TILGÆNGELIGE ORDBØGER (stien er ikke obligatorisk for -d-tilvalget): Er du sikker på, at du vil forkaste dine ændringer? Fejlrapporter: http://hunspell.github.io/ Kan ikke oprette midlertid filKan ikke oprette midlertidig mappeKan ikke åbne %s. Kan ikke åbne affiks- eller ordbogsfiler til ordbogen med navnet "%s". Ikke kan åbne inputfilenKan ikke åbne outputfilKan ikke opdatere personlig ordbog.Kontrollere stavningen af hver FIL. Uden FIL tjekkes standardinput. Eksempel: hunspell -d da_DK fil.txt # interaktiv stavning hunspell -i utf-8 fil.txt # tjek UTF-8-kodet fil hunspell -l *.odt # udskriv forkert stavede ord fra ODF-filer # Hurtig rettelse af ODF-dokumenter ved oprettelse af personlig ordbog # 1 Lav en reduceret liste fra forkert stavede og ukendte ord: hunspell -l *.odt | sort | uniq >ord # 2 Slet forkert stavede ord fra filen med en tekstredigering. # 3 Brug denne personlige ordbog til at rette de slettede ord: hunspell -p ord *.odt FORBUDT!Hunspell blev kompileret uden Ncurses-brugerflade. I Accepter ordet og læg det i din private ordbog. INDLÆST ORDBOG: %s %s Linje %d: %s-> Modelord (et lignende ordbogsord): Modelord skal være i ordbogen. Tryk på en vilkårlig tast!Nyt ord (stamme): Q Afslut med det samme. Spørger om bekræftelse. Foretager ikke ændringer i filerne. R Erstat det forkert stavede ord fuldstændigt. Erstat med: S Spørg et stamme- og et modelord og gem dem i den private ordbog. Stammen accepteres også med modelordets affikser. SØGESTI: %s Mellemrum Accepter kun ordet denne gang. Stavefejl?Dette er fri software - se kildekoden for kopieringsbetingelser. Der er INGEN garanti, selv ikke for SALGBARHED eller EGNETHED TIL ET BESTEMT FORMÅL, i det omfang det er tilladt af gældende lov. U Accepter og tilføj version med små bogstaver til privat ordbog. Anvendelse: hunspell [TILVALG] ... [FIL] ... Når der bliver fundet et ord som ikke er i ordbogen, så udskrives på det på den første linje på skærmen. Hvis ordbogen indeholder lignende ord, vises de med et tal ved siden af. Du har mulighed for at erstatte hele ordet, eller vælge en af de foreslåede ord. X Skriv resten af filen, hvorved forkert stavede ord ignoreres, og start på næste fil. ^Z Suspender programmet. Genstart med fg-kommandoen. afejl - %s overskrider ordbogsgrænse. fejl - iconv: %s-> %s fejl - iconv_open: %s-> %s fejl - iconv_open: UTF-8-> %s fejl - mangler HOME-variabel itesufjhunspell-1.7.2/po/ta.gmo0000664000175000017500000000126014353370170012026 000000000000004L`azk$error - iconv: %s -> %s error - iconv_open: %s -> %s Project-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-10-24 15:13+0000 Last-Translator: K.B.Dharun Krishna Language-Team: Tamil Language: ta MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.14.2-dev பிழை - iconv: %s -> %s பிழை - iconv_open: %s -> %s hunspell-1.7.2/po/LINGUAS0000664000175000017500000000031414352160534011742 00000000000000# Set of available languages. an ca ckb cs da de de_CH eo es es_EU fr fy gl hr hu hy ie is it kab ky mk nb_NO nl nl_BE oc pa pl pt pt_BR pt_PT ru si sl sv ta tg tr tt uk zh_Hant fa zh_Hans el ka lt ar uz hunspell-1.7.2/po/mk.gmo0000664000175000017500000000102114353370170012024 00000000000000$,89Project-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:08+0000 Last-Translator: Anonymous Language-Team: Macedonian Language: mk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n==1 || n%10==1 ? 0 : 1; X-Generator: Weblate 4.14-dev hunspell-1.7.2/po/nl.po0000664000175000017500000003635014353370167011705 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:08+0000\n" "Last-Translator: Pander \n" "Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "fout - iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "fout - iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "fout - iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Kan tijdelijke map niet aanmaken" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Kan invoerbestand niet openen" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Kan %s niet openen.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "fout - variabele HOME ontbreekt\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Regel %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "VERBODEN!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Spelfout?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tBestand: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[SPATIE] veR)vangen A)anvaarden I)nvoegen kleineL)etters S)tam aF)sluiten " "sT)oppen, ? voor hulp\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Als er een woord is aangetroffen dat niet in het woordenboek\n" "staat, wordt het op de eerste regel van het scherm getoond. Als\n" "het woordenboek gelijkaardige woorden bevat, worden deze met\n" "een nummer naast elkaar getoond. Je kunt het woord volledig\n" "vervangen of één van de aanbevolen woorden kiezen.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Opdrachten zijn:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "R\tVervang het verkeerd gespelde woord volledig.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Spatie\tAanvaard het woord eenmalig.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tAanvaard het woord voor de rest van deze sessie.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tAanvaard het woord en bewaar het in je persoonlijke woordenboek.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "" "L\tAanvaard en bewaar een versie in kleine letters in je persoonlijke " "woordenboek.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "S\tVraag om een stam en modelwoord en sla ze op in je persoonlijke " "woordenboek.\n" "\tDe stam zal aanvaard worden met de affixen van het modelwoord.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tVervang door één van de aanbevolen woorden.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "T\tSchrijf de rest van dit bestand weg, negeer verkeerde gespelde woorden, " "en begin met het volgende bestand.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" "F\tSluit onmiddellijk af; vraagt om bevestiging. Bestanden blijven " "ongewijzigd.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tPauzeer het programma. Start opnieuw met fg-opdracht.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tToon dit hulpscherm.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Druk op spatie om door te gaan -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "r" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Vervangen door: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "l" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Kan persoonlijk woordenboek niet bijwerken." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "s" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Nieuw woord (stam): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Modelwoord (een vergelijkbaar woordenboekwoord): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" "Het modelwoord moet in het woordenboek staan. Druk op een toets om door te " "gaan!" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "t" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "f" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Weet je zeker dat je de wijzigingen wilt verwerpen? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "j" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Kan tijdelijk bestand niet aanmaken" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Kan uitvoerbestand niet openen" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Gebruik: hunspell [OPTIE]... [BESTAND]...\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Controleer de spelling van elk BESTAND. Zonder BESTAND wordt de " "standaardinvoer gecontroleerd.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\tcontroleer enkel het eerste veld van regels (scheidingsteken = tab)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tpipe-interface van Ispell\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr " --check-url\tcontroleer url's, e-mailadressen en mappaden\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tcontroleer typografische Unicode-apostrof\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\tgebruik woordenboeken d (d2, enz.)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\ttoon beschikbare woordenboeken\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\ttoon enkel juiste woorden of regels\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\ttoon deze hulp en sluit af\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tHTML-invoerbestandsformaat\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i cod\tinvoercodering\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\ttoon verkeerd gespelde woorden\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\ttoon regels met verkeerd gespelde woorden\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tanalyseer de woorden van de invoertekst\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tnroff-/troff-invoerbestandsformaat\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tOpenDocument (ODF of platte ODF)-invoerbestandsformaat\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p wdbk\tstel aangepast woordenboek in\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr "" " -r\t\ttoon waarschuwing bij mogelijke fouten (ongebruikelijke woorden)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P wachtwoord\tstel wachtwoord in van versleutelde woordenboeken\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\ttoon stam van woorden van invoertekst\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\ttoon suffix van woorden van invoertekst\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tTeX-/LaTeX-invoerbestandsformaat\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\ttoon versienummer\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\ttoon Ispell-compatibel versienummer\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\ttoon verkeerd gespelde woorden (= regels) van invoer van één woord/" "regel.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tXML-invoerbestandsformaat\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Voorbeeld: hunspell -d nl_BE bestand.txt # interactieve spelling\n" " hunspell -i utf-8 bestand.txt # controleer bestand in UTF-8-" "codering\n" " hunspell -l *.odt # toon verkeerd gespelde woorden in " "ODF-bestanden\n" "\n" " # Snelle verbetering van ODF-documenten door aanmaken van " "persoonlijk woordenboek\n" "\n" " # 1 Maak een gereduceerde lijst van verkeerd gespelde en onbekende " "woorden:\n" "\n" " hunspell -l *.odt | sort | uniq >woorden\n" "\n" " # 2 Verwijder verkeerd gespelde woorden uit het bestand met een " "tekstverwerker.\n" " # 3 Gebruik dit persoonlijke woordenboek om de verkeerd gespelde " "woorden te verbeteren:\n" "\n" " hunspell -p woorden *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Foutmeldingen: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Auteursrecht © 2002-2014 László Németh. Licentie: MPL/GPL/LGPL.\n" "\n" "Gebaseerd op de Myspell-bibliotheek van OpenOffice.org.\n" "Myspell-auteursrecht © Kevin Hendricks, 2001-2002. Licentie: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Dit is vrije software; bekijk de broncode voor kopieervoorwaarden. Er is " "GEEN\n" "garantie, zelfs niet voor VERHANDELBAARHEID of GESCHIKTHEID VOOR EEN BEPAALD " "DOEL,\n" "voorzover toegestaan door de wet.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "ZOEKPAD:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "BESCHIKBARE WOORDENBOEKEN (pad is niet verplicht voor optie -d):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "INGELADEN WOORDENBOEK:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "fout - %s overschrijdt het woordenboeklimiet.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" "Kan affix- of woordenboekbestanden van het woordenboek '%s' niet openen.\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hunspell is gecompileerd zonder de Ncurses-gebruikersinterface.\n" hunspell-1.7.2/po/kab.gmo0000664000175000017500000001375314353370170012171 000000000000008O G?b>"(-(Kt-(-!O0i2"3BV :(4 M B_ *  &i  : & $ K) -u        " $ & ( * 5 ASS8@!.='l8!,+H,g2!%$)Nl!('@;0Ct-I?3V !$FCW([*0[]y#!/7'.-   % 0&5 ,#(86)"2 +$3*41 %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. Are you sure you want to throw away your changes? Can't create tempfileCan't create tmp dirCan't open %s. Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. FORBIDDEN!I Accept the word, and put it in your private dictionary. Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. Space Accept the word this time only. Spelling mistake?U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:09+0000 Last-Translator: Selyan Sliman Amiri Language-Team: Kabyle Language: kab MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n > 1; X-Generator: Weblate 4.14-dev %s Afaylu: %s -- Senned ɣef usekkil ilem akken ad tkemmleḍ -- Tludna d tigi: [TALLUNT] S)emselsi Q)bel G)er A)meẓyan aẓa(R) E)ǧǧ F)feɣ neɣ ? i tallelt Senqed tansiwin URL, tansiwin n yimayl akked ikaramen -1 senqed kan urti amezwaru n yal izirig (anabraz = tarigla) -D Sken imawalen yellan -G sken-d kan awalen neɣ izirigen imeɣta -H amasal n ufaylu n unekcum s HTML -L sken-d izirigen s wawalen ur nuri ara akken iwata -a agrudem n usuddes n Ispell -d d[,d2,...] semres imawalen d (d2 etc.) -h, --help sken-d talllelt-a sakin ffeɣ -i enc asettengel n unekcum -l sken-d awalen ur nuri ara akken iwata 0-n Selselsi s yiwen seg wawalen i d-yettwasuren. ? Sken agli-a n tallelt. A Qbel awal i tɣimit i d-yegran Tebɣiḍ ad tzegleḍ ibeddilen-ik? Ur izmir ara ad yernu afaylu askudanur izmir ara ad yernu tmp dirUr uizmir ara ad yeldi %s Ur izmir ara ad d-yeldi inputfileUr izmir ara ad d-yeldi afaylu n tuffɣaUr izmir ara ad ileqqem amawal udmawal.Senqed tira n yal AFAYLU. War AFAYLU, senqed tuffɣa tamewert. YEGDEL!I Qbel awal, sakin sers-it deg umawal-ik uslig. Izirig %d: %s -> Taneɣruft n wawal (awal icuban deg umawal): Taneɣruft n wawal issefk ad tili deg umawal. Senned ɣef yiwet tqeffalt!Awal amaynut (aẓar): Q Ffeɣ tura. Ad isuter asentem. Ad yeǧǧ afaylu akken yella. S Semselsi meṛṛa awal ur nuri ara akken iwata. Semselsi s: S Suter aẓar akked tneɣruft n wawal sakin sekles-iten deg umawal udmawan. Aẓar ad yettwaqbel daɣen s yiwṣilen n tneɣruft n wawal. Tallunt Qbel awal tikkelt-a kan. Tuccḍa n tira?U Qbel daɣen rnu lqem s usekkil meẓẓiyen ɣer umawal udmawan. Aseqdec: hunspell [OPTION]... [FILE]... Ticki awal yettwafen maca ulac-it deg umawal ad d-iban deg yizirig amezwaru deg ugdil. Ma yella amawal igber awalen yettemcabin, ad d-banen s wuṭṭun ara d-qablen yal awal. Tzemreḍ ad temselsiḍ maṛṛa awal, neɣ ad tferneḍ yiwen seg wawalen i d-yettwasumren. X Aru ayen i d-yeqqimen deg ufaylu, zgel tuccḍiqin n tira, sakin bdu afaylu i d-iteddun. ^Z Sefsex ahil. Ales asenker s tladna fg. atuccḍa - iconv: %s -> %s tuccḍa- iconv_open: %s -> %s tuccḍa - iconv_open: UTF-8 -> %s tuccḍa - amutti HOME ulac-it iqrsuxihunspell-1.7.2/po/es_EU.gmo0000664000175000017500000000077714353370170012436 00000000000000$,89Project-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:09+0000 Last-Translator: Anonymous Language-Team: Basque Language: es_EU MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.14-dev hunspell-1.7.2/po/POTFILES.in0000644000175000017500000000027313422074107012471 00000000000000# List of source files containing translatable strings. # Copyright (C) 1995, 1996 Free Software Foundation, Inc. # Package source files src/tools/hunspell.cxx # end of file POTFILE.in hunspell-1.7.2/po/tt.gmo0000664000175000017500000000134714353370170012057 00000000000000<\pq  #error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s Project-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:09+0000 Last-Translator: Anonymous Language-Team: Tatar Language: tt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Weblate 4.14-dev хата - iconv: %s -> %s хата - iconv_open: %s -> %s хата - iconv_open: UTF-8 -> %s hunspell-1.7.2/po/quot.sed0000644000175000017500000000023113422074107012373 00000000000000s/"\([^"]*\)"/“\1”/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“”/""/g hunspell-1.7.2/po/nl_BE.gmo0000664000175000017500000002431414353370170012406 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}t,aA*<lF&*!B1d>@0!G i4&&1')Y)I.'&#N,rS1%4>As4*# 9ZNo+^' >"AH"D"""1"Q0##R#1#$-$ $%$ $%S%*&.I&kx'6'(*(H(`(}( ((((((((1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:09+0000 Last-Translator: Nathan Language-Team: Dutch (Belgium) Language: nl_BE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.14-dev %s Bestand: %s -- Drukt op spatie voor verder te gaan -- Opdrachten zijn: [SPATIE] veR)vangen A)anvaarden I)nvoegen kleineL)etters S)tam aF)sluiten sT)oppen, ? voor hulp --check-apostrophe controleert typografischen Unicode-apostrof --check-url controleert URL's, e-mailadressen en mappaden -1 controleert enkel eerste veld in regels (scheidingsteken = tab) -D toont beschikbare woordenboeken -G toont enkel juste woorden of regels -H HTML-invoerbestandsformaat -L toont regels met verkeerd gespelde woorden -O OpenDocument (ODF of platten ODF)-invoerbestandsformaat -P paswoord stelt paswoord voor versleutelde woordenboeken in -S toont suffix van woorden van invoertekst -X XML-invoerbestandsformaat -a pipe-interface van Ispell -d d[,d2,...] gebruikt woordenboeken d (d2, enz.) -h, --help toont deze hulp en stopt -i cod invoerscodering -l toont verkeerd gespelde woorden -m analyseert de woorden van den invoertekst -n nroff-/troff-invoerbestandsformaat -p wdbk stelt aangepast woordenboek in -r toont waarschuwing voor mogelijke fouten (ongebruikelijke woorden) -s toont stam van woorden van invoertekst -t TeX-/LaTeX-invoerbestandsformaat -v, --version toond versienummer -vv toont Ispell-compatibel versienummer -w toont verkeerd gespelde woorden (= regels) van invoer van één woord/regel. 0-n Vervangt door een van de aanbevolen woorden. ? Toont dit hulpscherm. A Aanvaardt het woord voor de rest van deze sessie. BESCHIKBARE WOORDENBOEKEN (pad is niet verplicht voor optie -d): Zijt ge zeker dat ge uw wijzigingen wilt verwerpen? Foutmeldingen: http://hunspell.github.io/ Kan tijdelijk bestand niet aanmakenKan tijdelijke map niet aanmakenKan %s niet openen. Kan affix- of woordenboekbestanden voor woordenboek genaamd "%s" niet openen. Kan invoerbestand niet openenKan uitvoerbestand niet openenKan persoonlijk woordenboek niet bijwerken.Controleert de spelling van elk BESTAND. Zonder BESTAND wordt standaardinvoer gecontroleerd. Voorbeeld: hunspell -d nl_BE bestand.txt # interactieve spelling hunspell -i utf-8 bestand.txt # controleert bestand in UTF-8-codering hunspell -l *.odt # toont verkeerd gespelde woorden in ODF-bestanden # Rappe verbetering van ODF-documenten door aanmaken van persoonlijk woordenboek # 1 Maakt ne gereduceerde lijst van verkeerd gespelde en onbekende woorden: hunspell -l *.odt | sort | uniq >woorden # 2 Verwijdert verkeerd gespelde woorden uit het bestand met nen tekstverwerker. # 3 Gebruikt dit persoonlijk woordenboek voor de verkeerd gespelde woorden te verbeteren: hunspell -p woorden *.odt VERBODEN!Hunspell is gecompileerd zonder den Ncurses-gebruikersinterface. I Aanvaardt het woord en bewaart het in uw persoonlijk woordenboek. INGELADEN WOORDENBOEK: %s %s Regel %d: %s -> Modelwoord (een vergelijkbaar woordenboekwoord): Modelwoord moet in het woordenboek staan. Drukt op een toets voor verder te gaan!Nieuw woord (stam): F Onmiddellijk afsluiten. Vraagt voor bevestiging. Bestanden blijven ongewijzigd. R Vervangt het verkeerd gespelde woord volledig. Vervangen door: S Vraagt voor een stam en een modelwoord en slaat ze op in het persoonlijk woordenboek. De stam zal aanvaard worden met de affixen van het modelwoord. ZOEKPAD: %s Spatie Aanvaardt het woord eenmalig. Spelfout?Dit is vrije software; bekijkt de broncode voor kopieervoorwaarden. Der is GEEN garantie, zelfs niet voor VERHANDELBAARHEID of GESCHIKTHEID VOOR EEN BEPAALD DOEL, voorzover toegelaten door de wet. L Aanvaardt en bewaart een versie in kleine letters in uw persoonlijk woordenboek. Gebruik: hunspell [OPTIE]... [BESTAND]... Wanneer dat een woord wordt gevonden dat niet in het woordenboek staat, wordt het op de eerste regel van het scherm getoond. Als het woordenboek gelijkaardige woorden bevat, worden deze met een nummer naast mekaar getoond. Ge kunt het woord volledig vervangen, of een van de aanbevolen woorden kiezen. T Schrijft de rest van dit bestand, negeert verkeerde gespelde woorden, en begint met het volgend bestand. ^Z Programma pauzeren. Start opnieuw met fg-opdracht. afout - %s overschrijdt woordenboeklimiet. fout - iconv: %s -> %s fout - iconv_open: %s -> %s fout - iconv_open: UTF-8 -> %s fout - variabele HOME ontbreekt ifrsltjhunspell-1.7.2/po/es.gmo0000664000175000017500000002441714353370170012042 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}u&O@EUN+2)I2s@@3()\*/(" (-2V0460&.W/9V4G"|3E-0G%x$F'%&M/tP x"=";""#5.#Id##Q#2$J$[$$.%A%W%D/&(t&)&V';(Z(-\((( (()))) ) ) )1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:08+0000 Last-Translator: Toni Estévez Language-Team: Spanish Language: es MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.14-dev %s Archivo: %s -- Oprima Espacio para continuar -- Las órdenes son: [ESP.] R)eemp. A)cepta I)nserta M)inús. B)ase T)ermina O)mite o ? para ayuda --check-apostrophe revisar apóstrofo tipográfico de Unicode --check-url revisar URL, direcciones de correo y rutas de carpetas -1 revisar solo el primer campo en los renglones (delimitador = tabulador) -D mostrar los diccionarios disponibles -G mostrar solo palabras o renglones correctos -H formato de archivo de entrada HTML -L mostrar renglones con palabras mal escritas -O formato de archivo de ent. OpenDocument (ODF u ODF plano) -P password establecer contraseña para diccionarios cifrados -S sufijar las palabras en el texto de entrada -X formato de archivo de entrada XML -a Interfaz de canalización de Ispell -d d[,d2,…] usar diccionarios d (d2, etc.) -h, --help mostrar esta ayuda y salir -i enc codificación de entrada -l mostrar las palabras mal escritas -m analizar las palabras del texto de entrada -n formato de archivo de entrada nroff/troff -p dict establecer diccionario personalizado dict -r alertar de faltas posibles (palabras inusuales) -s separar las bases en el texto de entrada -t formato de archivo de entrada TeX/LaTeX -v, --version mostrar el número de versión -vv mostrar número de versión compatible con Ispell -w mostrar palabras mal escritas (= renglones) de una entrada de palabra/renglón. 0–n Reemplazar por una de las palabras sugeridas. ? Mostrar esta pantalla de ayuda. A Aceptar la palabra por el resto de esta sesión. DICCIONARIOS DISPONIBLES (ruta no obligatoria si usa la opción -d): ¿Confirma que quiere descartar sus cambios? Informes de errores: http://hunspell.github.io/ No se puede crear el archivo temporalNo se puede crear la carpeta «tmp»No se puede abrir «%s». No se pueden abrir los archivos de afijos o de diccionario de «%s». No se puede abrir el archivo de entradaNo se puede abrir el archivo de salidaNo se puede actualizar el diccionario personal.Revisar la ortografía del ARCHIVO. Sin ARCHIVO, revisar la entrada estándar. Ejemplo: hunspell -d es_MX archivo.txt # revisión interactiva hunspell -i utf-8 archivo.txt # revisar archivo codificado en UTF-8 hunspell -l *.odt # ver palabras erróneas en archivos ODF # Corrección rápida de documentos ODF mediante creación de dicc. personales # 1 Haga una lista breve de palabras mal escritas y desconocidas: hunspell -l *.odt | sort | uniq >words # 2 Elimine las palabras mal escritas del archivo con un editor de textos. # 3 Use este diccionario personal para corregir las palabras eliminadas: hunspell -p words *.odt ¡PROHIBIDO!Hunspell se ha compilado sin la interfaz de usuario Ncurses. I Aceptar la palabra y añadirla a su diccionario privado. DICCIONARIO CARGADO: %s %s Línea %d: %s → Palabra modelo (una palabra de diccionario similar): La palabra modelo debe existir en el diccionario. Oprima cualquier tecla.Palabra nueva (base): T Finalizar de inmediato. Solicita confirmación. Deja el archivo sin modificar. R Reemplazar la palabra mal escrita por completo. Reemplazar por: B Solicitar una base (raíz o tema) y una palabra modelo y guardarlas en el dicc. privado. La base se aceptará también con los afijos de la palabra modelo. RUTA DE BÚSQUEDA: %s Espacio Aceptar la palabra solo por esta vez. ¿Error ortográfico?Este programa es libre; consulte las condiciones de copia en el código fuente. NO hay garantías, ni siquiera las de COMERCIABILIDAD o APTITUD PARA ALGÚN FIN PARTICULAR, en la medida en que lo permitan las leyes. M Aceptar y añadir versión en minúsculas al diccionario privado. Uso: hunspell [OPCIÓN]… [ARCHIVO]… Siempre que se halle una palabra que no esté en el diccionario esta aparecerá en el primer renglón de la pantalla. Si el diccionario contiene palabras similares, se enumerarán como opciones. Podrá elegir entre sustituir la palabra completamente, o bien, elegir una de las palabras sugeridas. O Grabar el resto de este archivo saltándose los errores y comenzar con el próximo. ^Z Suspender el programa. Reinícielo con la orden «fg». aerror: %s supera el límite del diccionario. error: iconv: %s → %s error: iconv_open: %s → %s error: iconv_open: UTF-8 → %s error: falta la variable HOME itrbmoshunspell-1.7.2/po/pt_BR.gmo0000664000175000017500000002445214353370170012440 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \})QA+LmM*/3)c)C9+5)a0$"+$/P0-40.E+t9Y.4c/J:07'h(U--,[3Q "<":"0#N#5_#E##I#;;$w$$%,)%V%i%A;&(}&?&\'3C(w(+y((((!()) )")$)&)()1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:08+0000 Last-Translator: Deleted User Language-Team: Portuguese (Brazil) Language: pt_BR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n > 1; X-Generator: Weblate 4.14-dev %s Arquivo: %s -- Pressione espaço para continuar -- Os comandos são: [ESPAÇO] S)ubst A)ceit I)nserir min(U)s R)aiz S)air (T)erminar ou ? para ajuda --check-apostrophe verifica apóstrofo tipográfico de Unicode --check-url verifica URLs, endereços de e-mail e caminhos de diretórios -1 verifica apenas o primeiro campo em linhas (delimitador = tabulação) -D mostra os dicionários disponíveis -G exibe apenas palavras ou linhas corretas -H formato de arquivo de entrada HTML -L exibe linhas com erro ortográfico -O formato de arquivo de entrada OpenDocument (ODF ou Flat ODF) -P senha define senha para dicionários criptografados -S sufixa palavras do texto de entrada -X formato de arquivo de entrada XML -a interface pipe do Ispell -d d[,d2,...] usa os dicionários d (d2 etc.) -h, --help exibe esta ajuda e sai -i cod codificação de entrada -l exibe palavras com erro ortográfico -m analisa as palavras do texto de entrada -n formato de arquivo de entrada nroff/troff -p dic define um dicionário personalizado -r avisa sobre possíveis erros (palavras raras) -s enraíza as palavras do texto de entrada -t formato de arquivo de entrada TeX/LaTeX -v, --version exibe o número de versão -vv exibe o número de versão compatível com Ispell -w exibe palavras com erros ortográficos (= linhas) de entrada de uma palavra/linha. 0-n Substitui com uma das palavras sugeridas. ? Mostra essa tela de ajuda. A Aceita a palavra para o resto dessa sessão. DICIONÁRIOS DISPONÍVEIS (caminho não é obrigatório para opção -d): Tem certeza que você deseja descartar suas alterações? Relatórios de erro: http://hunspell.github.io/ Não foi possível criar o arquivo tempNão foi possível criar diretório tempNão foi possível abrir %s. Não foi possível arquivos de dicionário ou afixos para o diretório chamado "%s". Não foi possível abrir o arquivo de entradaNão foi possível abrir o arquivo de saídaNão foi possível atualizar o dicionário pessoal.Verifica a ortografia de cada ARQUIVO. Sem ARQUIVO, verifica a entrada padrão. Exemplo: hunspell -d pt_BR arq.txt # verificação ortográfica interativa hunspell -i utf-8 arq.txt # verifica arquivo codificado em UTF-8 hunspell -l *.odt # exibe erros ortográficos em arquivos ODF # Correção rápida de documentos ODF por criação de dicionário pessoal # 1 Faça uma lista reduzida de palavras com erro de escrita e desconhecidas: hunspell -l *.odt | sort | uniq >palavras # 2 Exclua palavras com erros ortográficos do arquivo por um editor de texto. # 3 Use esse dicionário pessoal para corrigir as palavras excluídas: hunspell -p palavras *.odt PROIBIDO!Hunspell foi compilado sem a interface de usuário Ncurses. I Aceita a palavra e a coloca em seu dicionário privado. DICIONÁRIO CARREGADO: %s %s Linha %d: %s -> Palavra modelo (uma palavra similar do dicionário): A palavra modelo deve estar no dicionário. Pressione qualquer tecla!Nova palavra (raiz): S Sai imediatamente. Pede por confirmação. Deixa o arquivo inalterado. S Substitui completamente a palavra com erro ortográfico. Substituir por: S Pede uma raiz e uma palavra modelo e as armazena no dicionário privado. A raiz também será aceita com afixos da palavra modelo. CAMINHO DE PESQUISA: %s Espaço Aceita a palavra somente dessa vez. Erro ortográfico?Esse é um software livre; veja o código-fonte para condições de cópia. Há NENHUMA garantia; nem mesmo para COMERCIABILIDADE ou ADEQUAÇÃO PARA UM PROPÓSITO PARTICULAR, na extensão permitida pela lei. U Aceita e adiciona a versão minúscula ao dicionário privado. Uso: hunspell [OPÇÃO]... [ARQUIVO]... Sempre que se descobre que uma palavra não está no dicionário, ela é impressa na primeira linha da tela. Se o dicionário contiver quaisquer palavras similares, elas são listadas com um número ao lado de cada uma. Você tem a opção de substituir completamente a palavra, ou escolher uma das palavras sugeridas. X Escreve o resto deste arquivo, ignorando erros ortográficos e inicia o próximo arquivo. ^Z Suspende o programa. Reinicie com o comando fg. aerro - %s excede o limite de dicionários. erro - iconv: %s -> %s erro - iconv_open: %s -> %s erro - iconv_open: UTF-8 -> %s erro - faltando a variável HOME issrutshunspell-1.7.2/po/stamp-po0000664000175000017500000000001214353370170012373 00000000000000timestamp hunspell-1.7.2/po/ChangeLog0000644000175000017500000000030613422074107012463 000000000000002017-10-22 gettextize * Makefile.in.in: Upgrade to gettext-0.19.8.1. 2016-11-02 gettextize * Makefile.in.in: Upgrade to gettext-0.19.7. hunspell-1.7.2/po/eo.gmo0000664000175000017500000002350714353370170012035 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}{$\>$McG!.J/h93,3 Q*r.%- $9,^0," &,KS23B&5i( " L#!p!&Kj' !-!@! "%"(6":_""C""#%#####$A$*$%g&1k&&#&&& &'9';'='?'A'C'E'1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:09+0000 Last-Translator: phlostically Language-Team: Esperanto Language: eo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.14-dev %s Dosiero: %s -- Klavu spaceton por daŭrigi -- Jen la komandoj: [SPACETO] aN)stataŭigi A)kcepti E)nmeti M)inuskligi T)igo ĉe(S)i e(L)iri aŭ ? por helpo --check-apostrophe kontroli Unikodan tipografian apostrofon --check-url kontroli retadresojn, retpoŝtajn adresojn, kaj dosierindikojn -1 kontrolu nur la unuan kampon en linioj (apartigilo = tabeligilo) -D montri haveblajn vortarojn -G montri nur ĝustajn vortojn aŭ liniojn -H eniga dosierformo HTML -L montri liniojn kun misliterumitaj vortoj -O eniga dosierformo OpenDocument (ODF aŭ Plata ODF) -P pasvorto uzi pasvorton por ĉifritaj vortaroj -S sufiksigi vortojn de la eniga teksto -X eniga dosierformo XML -a dukta interfaco de Ispell -d d[,d2,...] uzi vortarojn d (d2 ktp.) -h, --help montri ĉi tiun helpon kaj eliri -i enk eniga enkodigo -l montri misliterumitajn vortojn -m analizi la vortojn de la eniga teksto -n eniga dosierformo nroff/troff -p vrtr uzi vrtr kiel laŭmendan vortaron -r averti pri eblaj eraroj (maloftaj vortoj) -s tigigi la vortojn de la eniga teksto -t eniga dosierformo TeX/LaTeX -v, --version montri version -vv montri Ispell-kongruan version -w montri misliterumitajn vortojn (= liniojn) el unu vorto/linia enigo. 0-n Anstataŭigi per unu el la sugestataj vortoj. ? Montri ĉi tiun helpekranon. A Akcepti la vorton dum la resto de ĉi tiu sesio. HAVEBLAJ VORTAROJ (dosierindiko ne estas deviga por la opcio -d): Ĉu vi certas, ke vi volas forĵeti viajn ŝanĝojn? Cimraportoj: http://hunspell.github.io/ Ne eblas krei portempan dosieronNe eblas krei portempan dosierujonNe povas malfermi %s. Ne eblas malfermi afiksajn aŭ vortarajn dosierojn por vortaro nomita "%s". Ne povas malfermi enigan dosieronNe eblas malfermi eligan dosieronNe povas ĝisdatigi personan vortaron.Kontrolu ortografion de ĉiu DOSIERO. Sen DOSIERO, kontrolu ĉefenigujon. Ekzemplo: hunspell -d eo dosiero.txt # interaga korektado hunspell -i utf-8 file.txt # kontrolu UTF-8-enkodigitan dosieron hunspell -l *.odt # montru misliterumitajn vortojn en ODF-dosieroj # Rapida riparo de ODF-dokumentoj per kreo de persona vortaro # 1 Faru reduktitan liston el misliterumitaj kaj nekonataj vortoj: hunspell -l *.odt | sort | uniq >vortoj # 2 Forigu misliterumitajn vortojn en la dosiero per tekstredaktilo. # 3 Uzu ĉi tiun personan vortaron por koreki la forigitajn vortojn: hunspell -p vortoj *.odt FORBARITA!Hunspell estis tradukita sen fasado Ncurses. E Akcepti la vorton, kaj enmeti ĝin en vian privatan vortaron. ŜARGIS VORTARON: %s %s Linio %d: %s -> Modela vorto (simila vorto en vortaro): Modela vorto devas esti en la vortaro. Premu ajnan klavon!Nova vorto (tigo): S Tuj ĉesi. Demandos por konfirmo. Lasos la dosieron neŝanĝita. N Anstataŭigi la vorton tute. Anstataŭigi per: T Demandi por tigo kaj modela vorto kaj konservi ilin en la privata vortaro. La tigo akceptiĝos ankaŭ kun la afiksoj de la modela vorto. SERĈA DOSIERINDIKO: %s Spaceto Akceptu la vorton unufoje. Ortografia eraro?Ĉi tiu estas libera programaro; vidu la fonton por kopiaj kondiĉoj. NE ekzistas garantio; eĉ ne por VENDEBLO aŭ TAŬGECO POR SPECIFA CELO, laŭeble laŭ la leĝo. M Akcepti kaj enmeti minuskligitan version en privatan vortaron. Uzado: hunspell [OPCIO] ... [DOSIERO] ... Kiam ajn troviĝas vorto ne en la vortaro, ĝi montriĝas en la unua linio de la ekrano. Se la vortaro enhavas similajn vortojn, ili montriĝas numerite. Vi povas aŭ tute anstataŭigi la vorton, aŭ elekti unu el la proponitaj vortoj. L Skribi la reston de ĉi tiu dosiero, ignorante ortografiajn erarojn, kaj komenci la sekvan dosieron. ^Z Suspendi programon. Rekomencu per komando fg. aeraro - %s superas vortaran limon. eraro - iconv: %s -> %s eraro - iconv_open: %s -> %s eraro - iconv_open: UTF-8 -> %s eraro - mankas variablo HOME esntmljhunspell-1.7.2/po/it.gmo0000664000175000017500000002425714353370170012051 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}&M@/NpL% 02%c+-:-%L!r.) -*,X4/K*60aCF/M4dJ!.%5,[8&$/%NU B"IL":"""3"?1#q#I#"##$$/$%%G%%$&J&Pd'>''-'$(>(!](!((((((((1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:08+0000 Last-Translator: Anonymous Language-Team: Italian Language: it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.14-dev X-Launchpad-Export-Date: 2009-08-12 13:40+0000 %s File: %s -- Premere spazio per continuare -- I comandi sono: [SPAZIO] S)ost A)ccet I)nser T)ogli cap O)rig C)hiudi E)sci o ? per l'aiuto --check-apostrophe controlla apostrofo tipografico di Unicode --check-url Controlla gli URL, indirizzi email e i percorsi delle directory -1 Controlla solo il primo campo nelle righe (delimitatore = tabulatore) -D Mostra i dizionari disponibili -G Stampa solo le righe o le parole corrette -H Formato del file di input HTML -L Stampa le righe con le parole errate -n Formato del file di input ODF/Flat ODF -P password Imposta la password per i dizionari cifrati -S suffissa le parole del testo di input -H Formato del file di input XML -a Interfaccia pipe di Ispell -d d[,d2,...] Usa i dizionari d (d2 ecc...) -h, --help Mostra questo aiuto ed esce -i cod Codifica dell'input -l Stampa le parole errate -m Analizza le parole del testo in input -n Formato del file di input nroff/troff -p diz Imposta diz come dizionario personalizzato -r avvisa di possibili errori (parole rare) -s Recupera la parte principale (stem) delle parole del testo di input -t Formato del file di input TeX/LaTeX -v, --version Stampa il numero della versione -vv Stampa il numero della versione di compatibilità di Ispell -w Stampa le parole errate (= righe) da una parola o riga di input 0-n Sostituisce con una delle parole suggerite ? Mostra questo aiuto A Accetta la parola per il resto di questa sessione Dizionari disponibili (il percorso non è obbligatorio per l'opzione -d): Scartare veramente le modifiche? Per segnalare bug: http://hunspell.github.io/ Impossibile creare il file temporaneoImpossibile creare la cartella temporanea %sImpossibile aprire %s. Impossibile aprire i file di affisso o dizionario (%s). Impossibile aprire il file di input %sImpossibile aprire il file di outputImpossibile aggiornare il dizionario personale.Controlla l'ortografia di ogni FILE. Senza FILE controlla lo standard input. Esempio: hunspell -d en_US file.txt # controllo ortografico interattivo hunspell -i utf-8 file.txt # controlla file codificato in UTF-8 hunspell -l *.odt # stampa parole con errori ortografici dai file ODF # Correzione rapida dei documenti ODF tramite creazione di dizionari personali # 1 Crea una lista ridotta da parole con errori ortografici e sconosciute: hunspell -l *.odt | sort | uniq >words # 2 Elimina parole con errori ortografici dal file con un editor di testo. # 3 Utilizza questo dizionario privato per aggiustare le parole eliminate: hunspell -p words *.odt PROIBITO!Hunspell è stato compilato senza il supporto per l'interfaccia Ncurses. I Accetta la parola e la inserisce nel dizionario privato Dizionario caricato: %s %s Riga %d: %s -> Parola modello (una parola simile dal dizionario): La parola modello deve essere nel dizionario. Premere un tasto.Nuova parole (radice): Q Chiude immediatamente, chiede conferma e lascia il file non modificato R Sostituisce la parola sbagliata Sostituisci con: S Chiede la parte principale e il modello di una parola e li archivia nel dizionario privato; la parte principale viene accettata anche con gli affissi della parola modello Percorso di ricerca: %s Spazio Accetta la parola solo per questa volta Errore ortografico?Questo è software libero; consultare i sorgenti per le condizioni di copia. Non c'è ALCUNA garanzia, nemmeno quella di COMMERCIABILITÀ o PER UN PARTICOLARE SCOPO, nei limiti permessi dalla legge. U Accetta la parola e la inserisce in minuscolo nel dizionario privato Uso: hunspell [OPZIONI]... [FILE]... Quando viene trovata una parola non presente nel dizionario viene stampata sulla prima riga dello schermo. Se il dizionario contiene parole simili, vengono elencate con un numero a fianco di ognuna. È possibile sostituire la parola completamente o scegliere uno dei suggerimenti. X Scrive il resto del file ignorando gli errori e inizia con il file successivo ^Z Sospende il programma; per riavviarlo, usare il comando fg aerrore - %s supera il limite del dizionario. errore - iconv: %s -> %s errore - iconv_open: %s -> %s errore - iconv_open: UTF-8 -> %s errore - variabile HOME mancante icsoteshunspell-1.7.2/po/el.gmo0000664000175000017500000003242014353370170012024 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}W"Znv9S=4QNrgU602g9U1*=\O=J(\si9:?t?d| D j&!!h"@{"?">">;#z#W$Dq$`$%%)i)n*'**K*++v+U/,!,,*-W-"..Q./;|0+02d34L 4V4$v4'47444555 5 51GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.7.1 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-09-12 08:20+0000 Last-Translator: Fotios Kolytoumpas Language-Team: Greek Language: el MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 4.14.1-dev %s Αρχείο: %s -- Πληκτρολογήστε διάστημα για να συνεχίσετε -- Οι εντολές είναι: [ΔΙΆΣΤΗΜΑ] Ν)Αντικατάσταση Α)Αποδοχή Π)Προσθήκη Ζ)Πεζά Θ)Θέμα Κ)Κλείσιμο Ξ)Έξοδος ή ? για βοήθεια --check-apostrophe έλεγχος τυπογραφικής αποστρόφου Unicode --check-url έλεγχος URLs, διευθύνσεων e-mail και διαδρομών καταλόγων -1 έλεγχος μόνο του πρώτου πεδίου στις γραμμές (διαχωριστής = Tab) -D προβολή διαθέσιμων λεξικών -G εμφάνιση μόνο των σωστών λέξεων ή γραμμών -H Μορφή αρχείου εισόδου HTML -L εμφάνιση γραμμών με ανορθόγραφες λέξεις -O αρχείο εισόδου μορφής OpenDocument (ODF ή Flat ODF) -P password ορισμός κωδικού πρόσβασης για κρυπτογραφημένα λεξικά -S προσθήκη επιθεμάτων από το αρχείο εισόδου -X αρχείου εισόδου μορφής XML -a Διεπαφή σωλήνων του Ispell -d d[,d2,...] χρήση d (d2 κλπ.) λεξικών -h, --help εμφάνιση αυτής της βοήθειας και έξοδος -i enc κωδικοποίηση εισόδου -l εμφάνιση ανορθόγραφων λέξεων -m ανάλυση των λέξεων του αρχείου εισόδου -n αρχείου εισόδου μορφής nroff/troff -p dict ορισμός προσαρμοσμένου λεξικού dict -r προειδοποίηση για πιθανά λάθη (σπάνιες λέξεις) -s αποθήκευση των λέξεων του κειμένου εισόδου ως θέματα -t αρχείο εισόδου μορφής TeX/LaTeX -v, --version εμφάνιση αριθμού έκδωσης -vv εμφάνιση συμβατής έκδοσης Ispell -w εμφάνιση ανορθόγραφων λέξεων (= γραμμές) από μία λέξη ή γραμμή εισόδου. 0-n Αντικαταστήστε με μία από τις προτεινόμενες λέξεις. ? Εμφάνιση αυτής της οθόνης βοήθειας. A Αποδεχτείτε τη λέξη για το υπόλοιπο αυτής της συνεδρίας. ΔΙΑΘΈΣΙΜΑ ΛΕΞΙΚΆ (η διαδρομή δεν είναι υποχρεωτική για την επιλογή -d): Είστε σίγουροι ότι θέλετε να απορρίψετε τις αλλαγές σας; Αναφορές σφαλμάτων: http://hunspell.github.io/ Δεν είναι δυνατή η δημιουργία tempfileΔεν είναι δυνατή η δημιουργία tmp dirΔεν είναι δυνατό το άνοιγμα του %s. Δεν είναι δυνατό το άνοιγμα αρχείων επιθέματος ή λεξικού, για το λεξικό με το όνομα "%s". Δεν είναι δυνατό το άνοιγμα του αρχείου εισόδουΔεν είναι δυνατό το άνοιγμα του outputfileΔεν είναι δυνατή η ενημέρωση του προσωπικού λεξικού.Έλεγχος ορθογραφίας κάθε ΑΡΧΕΊΟΥ. Χωρίς ΑΡΧΕΊΟ, έλεγχος της κανονικής εισόδου. Παράδειγμα: hunspell -d en_US file.txt # διαδραστική ορθογραφία hunspell -i utf-8 file.txt # έλεγχος αρχείου με κωδικοποίηση UTF-8 hunspell -l *.odt # εμφάνιση ανορθόγραφων λέξεων αρχείων ODF # Γρήγορη διόρθωση εγγράφων ODF με τη δημιουργία προσωπικού λεξικού # 1 Δημιουργήστε μια μειωμένη λίστα από ανορθόγραφες και άγνωστες λέξεις: hunspell -l *.odt | sort | uniq >words # 2 Διαγράψτε τις ανορθόγραφες λέξεις του αρχείου με έναν επεξεργαστή κειμένου. # 3 Χρησιμοποιήστε αυτό το προσωπικό λεξικό για να διορθώσετε τις διαγραμμένες λέξεις: hunspell -p words *.odt ΑΠΑΓΟΡΕΥΜΈΝΟ!Το Hunspell έχει μεταγλωττιστεί χωρίς τη διεπαφή χρήστη Ncurses. Π Αποδεχτείτε τη λέξη και βάλτε την στο ιδιωτικό σας λεξικό. ΦΟΡΤΩΜΈΝΟ ΛΕΞΙΚΌ: %s %s Γραμμή %d: %s -> Πρότυπη λέξη (μια παρόμοια λέξη λεξικού): Η πρότυπη λέξη πρέπει να υπάρχει στο λεξικό. Πατήστε οποιοδήποτε πλήκτρο!Νέα λέξη (θέμα): Ξ Άμεση έξοδος. Ζητάει επιβεβαίωση. Αφήνει το αρχείο αμετάβλητο. Ν Αντικαταστήστε πλήρως την ανορθόγραφη λέξη. Αντικατάσταση με: Θ Ζητήστε ένα θέμα και μια πρότυπη λέξη και αποθηκεύστε τα στο ιδιωτικό λεξικό. Το θέμα θα γίνει δεκτό και με τα επιθέματα της πρότυπης λέξης. ΔΙΑΔΡΟΜΉ ΑΝΑΖΉΤΗΣΗΣ: %s Διάστημα Αποδεχτείτε τη λέξη μόνο αυτή τη φορά. Ορθογραφικό λάθος?Αυτό είναι ελεύθερο λογισμικό; δείτε την πηγή για τους όρους αντιγραφής. ΔΕΝ υπάρχει ΚΑΜΊΑ εγγύηση; ούτε καν για την ΕΜΠΟΡΕΥΣΙΜΌΤΗΤΑ ή την ΚΑΤΑΛΛΗΛΌΤΗΤΑ ΓΙΑ ΈΝΑΝ ΣΥΓΚΕΚΡΙΜΈΝΟ ΣΚΟΠΌ, στο βαθμό που επιτρέπεται από το νόμο. Ζ) Αποδεχτείτε τη λέξη και προσθέστε πεζά γράμματα για αυτήν στο ιδιωτικό λεξικό. Χρήση: hunspell [ΕΠΙΛΟΓΉ]... [ΑΡΧΕΊΟ]... Κάθε φορά που βρίσκεται μια λέξη που δεν υπάρχει στο λεξικό τυπώνεται στην πρώτη γραμμή της οθόνης. Αν το λεξικό περιέχει οποιεσδήποτε παρόμοιες λέξεις, παρατίθενται με έναν αριθμό δίπλα στην καθεμία. Έχετε την επιλογή να αντικαταστήσετε τη λέξη εντελώς ή να επιλέξετε μία από τις προτεινόμενες λέξεις. Κ Γράψτε το υπόλοιπο αυτού του αρχείου, αγνοώντας τα ορθογραφικά λάθη και ξεκινήστε το επόμενο αρχείο. ^Z Αναστολή προγράμματος. Επανεκκίνηση με την εντολή fg. ασφάλμα - %s υπερβαίνει το όριο του λεξικού. σφάλμα - iconv: %s -> %s σφάλμα - iconv_open: %s -> %s σφάλμα - iconv_open: UTF-8 -> %s σφάλμα - λείπει η μεταβλητή HOME πκνθζξνhunspell-1.7.2/po/nb_NO.po0000664000175000017500000003540314353370167012265 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:09+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Norwegian Bokmål \n" "Language: nb_NO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "feil - iconv_open: %s → %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "feil - iconv: %s → %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "feil - iconv_open: UTF-8 → %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Kan ikke opprette midlertidig mappe" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Kan ikke åpne inndatafil" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Kan ikke åpne %s.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "feil - manglende HOME-variabel\n" #: src/tools/hunspell.cxx:863 #, fuzzy, c-format msgid "Line %d: %s -> " msgstr "Linje %d: %s → " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "FORBUDT!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Skrivefeil?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tFil: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[MELLOMROM] E)rstatt G)odta I)nnlem F)jern sperring S)tamme A)vslutt L)ukk " "eller ? for hjelp\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Når et ord blir funnet som ikke finnes i ordboken\n" "blir skrevet på første linje av skjermen. Hvis ordboken\n" "inneholder noen lignende ord, vil de bli opplistet med et nummer\n" "ved siden av hvert av dem. Du har valget med å erstatte ordet\n" "fullstendig, eller velge ett av de foreslåtte ordene.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Kommandoene er:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "E\tErstatt feilstavet ord fullstendig.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Mellomrom\tGodta ordet kun denne ene gangen.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "G\tGodta ordet for resten av økten.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tGodta ordet, og innlem det i din egen ordbok.\n" #: src/tools/hunspell.cxx:1289 #, fuzzy msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "F\tGodta og legg til versjon med små bokstaver til i privat ordbok.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "S\tBe om stamme (grunnord) og ett modellord å lagre dem i privat ordbok.\n" "\tGrunnordet vil bli godtatt også med affiks av modellordet.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tErstatt med en av de foreslåtte ordene.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "X\tSkriv resten av denne filen, uten å ta hensyn til feilstaving, og start " "neste fil.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "Q\tAvslutt umiddelbart. Spør om bekreftelse. Levner filer uendret.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "^Z\tSett program på pause. Start på ny med fg-kommando.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tViser denne hjelpeskjermen.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Trykk mellomrom for å fortsette -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "e" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Erstatt med: " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "f" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "s" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Kan ikke oppdatere personlig ordbok." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "g" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "s" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Nytt ord (grunnord): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Modellord (eller lignende ordboksord: " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "Modellordet må være i ordboken. Trykk en tast." #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "l" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Er du sikker på at du vil forkaste endringene dine? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "j" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Kan ikke opprette mal" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Kan ikke åpne utdatafil" #: src/tools/hunspell.cxx:1826 #, fuzzy msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Bruk: hunspell [VALG]… [FIL]…\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Sjekk staving av hver FIL. Uten FIL, sjekk forvalgt inndata.\n" "\n" #: src/tools/hunspell.cxx:1829 #, fuzzy msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr " -1\t\tkun sjekk første felt i linjer (avskiller = tabulator)\n" #: src/tools/hunspell.cxx:1831 #, fuzzy msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\tIspells rør-grensesnitt\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr " --check-url\tsjekk nettadresser, e-postadresser og mappestier\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tsjekk Unicode-typografisk apostrof\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d d[,d2,...]\tbruk d (d2 etc.) ordbøker\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tvis tilgjengelige ordbøker\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\tkun skriv riktige ord eller linjer\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tvis denne hjelpeteksten og avslutt\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tHTML-inndatafilformat\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i enc\tinndatakoding\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\tskriv ut feilstavede ord\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\tskriver ut linjer med feilstavede ord\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tanalyser ord i inndatateksten\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tnroff/troff-inndatafilformat\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr " -O\t\tOpenDocument (ODF eller Flat ODF)-inndatafilformat\n" #: src/tools/hunspell.cxx:1854 #, fuzzy msgid " -p dict\tset dict custom dictionary\n" msgstr " -p dict\tsett egendefinert dict-ordbok\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\tadvar om potensielle feil (sjeldne ord)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P password\tsett passord for krypterte ordbøker\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\tgrunnordene i inndatateksten\n" #: src/tools/hunspell.cxx:1861 #, fuzzy msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tendelsesord i inndatateksten\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tTeX/LaTeX-inndatafilformat\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\tskriv ut versjonsnummer\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\tskriv ut Ispell-kompatibelt versjonsnummer\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\tskriv ut feilstavede ord (= linjer) fra ett ord/linje -inndata.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tXML-inndatafilformat\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Eksempel: hunspell -d nb_NO fil.txt # interaktiv staving\n" " hunspell -i utf-8 file.txt # sjekk UTF-8-kodet fil\n" " hunspell -l *.odt # skriv ut feilstavede ord i ODF-" "filer\n" "\n" " # Rask fiks for ODF-dokumenter gjennom opprettelse av personlig " "ordbok\n" "\n" " # 1 Lag en redusert liste av feilstavede og ukjente ord:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Slett feilstavede ord i filen med en tekstbehandler.\n" " # 3 Bruk denne personlige ordboken til å fikse de slettede ordene:\n" "\n" " hunspell -p words *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Feilrapporter: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Kopirett © 2002-2014 László Németh. Lisens: MPL/GPL/LGPL.\n" "\n" "Basert på OpenOffice.org sitt Myspell-bibliotek.\n" "Myspell-kopirett © Kevin Hendricks, 2001-2002, Lisens: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Dette er fri programvare; sjekk kilden for kopieringsvilkår. Det kommer " "IKKE\n" "med noen garanti; selv ikke om SALGBARHET eller FORMÅLSTJENLIGHET,\n" "sålangt det tillates av loven.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "SØKESTI:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "TILGJENGELIGE ORDBØKER (sti er ikke påkrevd for -d -valget):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "INNLASTET ORDBOK:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "error - %s overskrider ordboksgrensen.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" "Kan ikke åpne affiks- eller ordboks-filer for ordbok ved navn \"%s\".\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "Hynspell har blitt kompilert uten Ncurses-brukergrensesnitt.\n" hunspell-1.7.2/po/pt_PT.gmo0000664000175000017500000002442714353370170012462 00000000000000Ok G:B?}>"(H(f76&% C -b (   + $ %A 2g ( " % . A; -}  0 > 25 (h    @  " "8 B[ 5 ;:Vp(4B*3^m& 2D:&7$^K-%%> \}%Z?,KlN)21/d0EJ *V*(.$")/L.|126-G/u+5\/d-N710i/)G.Z-3TA@ "5"<""#;.#Fj##N#<$U$f$%+%F%Z%F$&)k&8&b'51(g(*i((((( ) ) )))))1GJK2M/D#@*9;L$HFNE%:4B")A,<>6 - ?. 075& (38+CO!=' I %s File: %s -- Type space to continue -- Commands are: [SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help --check-apostrophe check Unicode typographic apostrophe --check-url check URLs, e-mail addresses and directory paths -1 check only first field in lines (delimiter = tabulator) -D show available dictionaries -G print only correct words or lines -H HTML input file format -L print lines with misspelled words -O OpenDocument (ODF or Flat ODF) input file format -P password set password for encrypted dictionaries -S suffix words of the input text -X XML input file format -a Ispell's pipe interface -d d[,d2,...] use d (d2 etc.) dictionaries -h, --help display this help and exit -i enc input encoding -l print misspelled words -m analyze the words of the input text -n nroff/troff input file format -p dict set dict custom dictionary -r warn of the potential mistakes (rare words) -s stem the words of the input text -t TeX/LaTeX input file format -v, --version print version number -vv print Ispell compatible version number -w print misspelled words (= lines) from one word/line input. 0-n Replace with one of the suggested words. ? Show this help screen. A Accept the word for the rest of this session. AVAILABLE DICTIONARIES (path is not mandatory for -d option): Are you sure you want to throw away your changes? Bug reports: http://hunspell.github.io/ Can't create tempfileCan't create tmp dirCan't open %s. Can't open affix or dictionary files for dictionary named "%s". Can't open inputfileCan't open outputfileCannot update personal dictionary.Check spelling of each FILE. Without FILE, check standard input. Example: hunspell -d en_US file.txt # interactive spelling hunspell -i utf-8 file.txt # check UTF-8 encoded file hunspell -l *.odt # print misspelled words of ODF files # Quick fix of ODF documents by personal dictionary creation # 1 Make a reduced list from misspelled and unknown words: hunspell -l *.odt | sort | uniq >words # 2 Delete misspelled words of the file by a text editor. # 3 Use this personal dictionary to fix the deleted words: hunspell -p words *.odt FORBIDDEN!Hunspell has been compiled without Ncurses user interface. I Accept the word, and put it in your private dictionary. LOADED DICTIONARY: %s %s Line %d: %s -> Model word (a similar dictionary word): Model word must be in the dictionary. Press any key!New word (stem): Q Quit immediately. Asks for confirmation. Leaves file unchanged. R Replace the misspelled word completely. Replace with: S Ask a stem and a model word and store them in the private dictionary. The stem will be accepted also with the affixes of the model word. SEARCH PATH: %s Space Accept the word this time only. Spelling mistake?This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. U Accept and add lowercase version to private dictionary. Usage: hunspell [OPTION]... [FILE]... Whenever a word is found that is not in the dictionary it is printed on the first line of the screen. If the dictionary contains any similar words, they are listed with a number next to each one. You have the option of replacing the word completely, or choosing one of the suggested words. X Write the rest of this file, ignoring misspellings, and start next file. ^Z Suspend program. Restart with fg command. aerror - %s exceeds dictionary limit. error - iconv: %s -> %s error - iconv_open: %s -> %s error - iconv_open: UTF-8 -> %s error - missing HOME variable iqrsuxyProject-Id-Version: hunspell 1.5.0 Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues PO-Revision-Date: 2022-08-25 15:09+0000 Last-Translator: José Vieira Language-Team: Portuguese (Portugal) Language: pt_PT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n > 1; X-Generator: Weblate 4.14-dev %s Ficheiro: %s -- Tecle espaço para continuar -- Os comandos são: [ESPAÇO] R)epor A)ceitar I)nserir U)ncap T)ronco C)oncluir S)air, ou ? para obter ajuda --check-apostrophe verificar apóstrofo tipográfico unicode --check-url verifica URLs, endereços de e-mail e caminho de diretórios -1 verificar apenas o primeiro campo em linhas (delimitador = tabulação) -D exibe os dicionários disponíveis -G exibe apenas as palavras ou linhas corretas -H HTML Formato de ficheiro de entrada HTML -L Imprimir palavras com erros ortográficos -O formato de ficheiro de entrada OpenDocument (ODF ou ODF plana) -P palavra-passe definir palavra-passe para dicionários criptografados -S sufixo palavras do texto de entrada -X formato de ficheiro de entrada XML -a Interface de tubulação do Ispell -d d[,d2,...] usar dicionários d (d2, etc) -h, --help exibe esta ajuda e sai -i enc Codificação de entrada -l Imprimir palavras com erros ortográficos -m Analisar as palavras do texto de entrada -n formato de ficheiro de entrada nroff/troff -p dict definir dicionário personalizado dict -r alertar sobre erros potenciais (raras palavras) -s tronco das palavras do texto de entrada -t formato de ficheiro de entrada TeX/LaTeX -v, --version exibe o número da versão -vv exibe o número da versão Ispell compatível -w imprimir palavras com erros ortográficos (= linhas) de uma palavra/linha de entrada. 0-n Substituir por uma das palavras sugeridas. ? Mostrar este ecrã de ajuda. A Aceitar a palavra para o resto da sessão. DICIONÁRIOS DISPONÍVEIS (o caminho não é obrigatório para a opção -d): Tem certeza que deseja descartar as suas alterações? Relatório de erros: http://hunspell.github.io/ Não foi possível criar o ficheiro temporárioNão foi possível criar o diretório tmpNão foi possível abrir %s. Não é possível abrir apor ou ficheiros de dicionário chamado "%s". Não foi possível abrir o ficheiro de entradaNão foi possível abrir o ficheiro de saídaNão foi possível atualizar o dicionário pessoal.Verifica a ortografia de cada FICHEIRO. Sem FICHEIRO, verifique a entrada padrão. Exemplo: hunspell -d pt_PT ficheiro.txt # interativo ortográfico hunspell-eu utf-8 ficheiro.txt # verifique a codificação UTF-8 do ficheiro hunspell-l *.odt # imprimir ortográficos de ficheiros ODF # Rápida correção de documentos ODF pelo dicionário pessoal de criação # 1 Faça uma lista reduzida de erros ortográficos e palavras desconhecidas: hunspell -l *.odt | sort | uniq >palavras # 2 Eliminar erros ortográficos do ficheiro com um editor de texto. # 3 Utilize este dicionário pessoal para corrigir as palavras excluídas: hunspell -p palavras *.odt PROIBIDO!O Hunspell foi compilado sem a interface do Ncurses. I Aceitar a palavra e colocá-la no dicionário particular. DICIONÁRIO CARREGADO: %s %s Linha %d: %s -> Palavra de modelo (uma palavra do dicionário semelhante): Palavra de modelo deve estar no dicionário. Pressione qualquer tecla!Palavra nova (tronco): C Sair imediatamente. Vai pedir uma confirmação. Deixa ficheiro inalterado. R Substituir manualmente a palavra com erros ortográficos. Substituir por: T Solicitar um tronco e um modelo da palavra e armazená-las no dicionário particular. O tronco também será aceite com os afixos do modelo da palavra. CAMINHO DE PESQUISA: %s Espaço Aceitar a palavra apenas esta vez. Erro de ortografia?Este é um software livre; veja o código fonte para as condições de cópia. NÃO HÁ GARANTIAS; nem mesmo para COMERCIALIZAÇÃO ou ADAPTAÇÃO PARA UM FIM ESPECÍFICO, na medida permitida por lei. U Aceitar e adicionar a versão minúscula ao dicionário particular. Uso: hunspell [OPÇÃO]... [FICHEIRO]... Sempre que é encontrada uma palavra que não está no dicionário ela será mostrada na primeira linha do ecrã. Se o dicionário contiver palavras semelhantes, elas serão listadas com um número ao lado. O utilizador tem a opção de substituir a palavra manualmente, ou escolher uma das palavras sugeridas. S Escrever o resto deste ficheiro ignorando os erros de ortografia e iniciar o próximo ficheiro. ^Z Suspender o programa. Reiniciar com o comando fg. aerro - %s excede o limite do dicionário. erro - iconv: %s -> %s erro - iconv_open: %s -> %s erro - iconv_open: UTF-8 -> %s erro - variável HOME em falta icrtusshunspell-1.7.2/po/cs.po0000664000175000017500000003660314353370167011702 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the hunspell package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hunspell 1.5.0\n" "Report-Msgid-Bugs-To: https://github.com/hunspell/hunspell/issues\n" "POT-Creation-Date: 2022-12-29 20:54+0100\n" "PO-Revision-Date: 2022-08-25 15:08+0000\n" "Last-Translator: Pavel Borecki \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Generator: Weblate 4.14-dev\n" #: src/tools/hunspell.cxx:261 src/tools/hunspell.cxx:378 #, c-format msgid "error - iconv_open: %s -> %s\n" msgstr "chyba – iconv_open: %s -> %s\n" #: src/tools/hunspell.cxx:275 #, c-format msgid "error - iconv: %s -> %s\n" msgstr "chyba – iconv: %s -> %s\n" #: src/tools/hunspell.cxx:319 src/tools/hunspell.cxx:341 #, c-format msgid "error - iconv_open: UTF-8 -> %s\n" msgstr "chyba – iconv_open: UTF-8 -> %s\n" #: src/tools/hunspell.cxx:680 src/tools/hunspell.cxx:1592 msgid "Can't create tmp dir" msgstr "Nedaří se vytvořit složku tmp (dočasnou)" #: src/tools/hunspell.cxx:691 src/tools/hunspell.cxx:703 #: src/tools/hunspell.cxx:1575 src/tools/hunspell.cxx:1605 #: src/tools/hunspell.cxx:1618 msgid "Can't open inputfile" msgstr "Nedaří se otevřít vstupní soubor" #: src/tools/hunspell.cxx:693 src/tools/hunspell.cxx:1607 #: src/tools/hunspell.cxx:2006 src/tools/hunspell.cxx:2181 #: src/tools/hunspell.cxx:2198 #, c-format msgid "Can't open %s.\n" msgstr "Nedaří se otevřít %s.\n" #: src/tools/hunspell.cxx:773 src/tools/hunspell.cxx:1362 #: src/tools/hunspell.cxx:1474 #, c-format msgid "error - missing HOME variable\n" msgstr "chyba – chybí proměnná HOME\n" #: src/tools/hunspell.cxx:863 #, c-format msgid "Line %d: %s -> " msgstr "Řádek %d: %s -> " #: src/tools/hunspell.cxx:1143 msgid "FORBIDDEN!" msgstr "ZAKÁZÁNO!" #: src/tools/hunspell.cxx:1145 msgid "Spelling mistake?" msgstr "Pravopisná chyba?" #: src/tools/hunspell.cxx:1147 #, c-format msgid "" "\t%s\t\tFile: %s\n" "\n" msgstr "" "\t%s\t\tSoubor: %s\n" "\n" #. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly #. in your translation and translate the standalone letter accordingly later #. #: src/tools/hunspell.cxx:1206 msgid "" "\n" "[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n" msgstr "" "\n" "[MEZERA] N)ahradit P)řijmout V)ložit M)alými písmeny K)ořen O)pustit " "(U)končit nebo ? pro nápovědu\n" #: src/tools/hunspell.cxx:1275 msgid "" "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n" msgstr "" "Když se narazí na slovo, které není ve slovníku,\n" "je vypsáno na prvním řádku obrazovky. Pokud slovník\n" "obsahuje podobná slova, jsou vypsána společně s čísly\n" "těchto voleb. Slovo můžete úplně nahradit, nebo zvolit\n" "z těch doporučených.\n" #: src/tools/hunspell.cxx:1281 msgid "" "\n" "Commands are:\n" "\n" msgstr "" "\n" "Příkazy jsou:\n" "\n" #: src/tools/hunspell.cxx:1282 msgid "R\tReplace the misspelled word completely.\n" msgstr "R\tÚplně nahradit zkomolené slovo.\n" #: src/tools/hunspell.cxx:1283 msgid "Space\tAccept the word this time only.\n" msgstr "Space\tPřijmout toto slovo pouze pro jednou.\n" #: src/tools/hunspell.cxx:1285 msgid "A\tAccept the word for the rest of this session.\n" msgstr "A\tPřijmout slovo pro zbytek této relace.\n" #: src/tools/hunspell.cxx:1287 msgid "I\tAccept the word, and put it in your private dictionary.\n" msgstr "I\tPřijmout slovo a přidat ho do osobního slovníku.\n" #: src/tools/hunspell.cxx:1289 msgid "U\tAccept and add lowercase version to private dictionary.\n" msgstr "U\tPřijmout a přidat verzi s malými písmeny do osobního slovníku.\n" #: src/tools/hunspell.cxx:1291 msgid "" "S\tAsk a stem and a model word and store them in the private dictionary.\n" "\tThe stem will be accepted also with the affixes of the model word.\n" msgstr "" "S\tZeptat se na kořen a modelové slovo a uložit je do osobního slovníku.\n" "\tKořen bude přijímán také s příponami jaké má modelové slovo.\n" #: src/tools/hunspell.cxx:1295 msgid "0-n\tReplace with one of the suggested words.\n" msgstr "0-n\tNahradit jedním z navržených slov.\n" #: src/tools/hunspell.cxx:1297 msgid "" "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n" msgstr "" "X\tZapsat zbytek souboru, přičemž ignorovat pravopisné chyby a začít nový " "soubor.\n" #: src/tools/hunspell.cxx:1300 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n" msgstr "" "Q\tOkamžitě ukončit. Zeptá se na potvrzení. Ponechá soubor nezměněný.\n" #: src/tools/hunspell.cxx:1302 msgid "^Z\tSuspend program. Restart with fg command.\n" msgstr "CTRL+Z\tUspat program. Restartujte příkazem fg.\n" #: src/tools/hunspell.cxx:1303 msgid "?\tShow this help screen.\n" msgstr "?\tZobrazit tuto nápovědu.\n" #: src/tools/hunspell.cxx:1304 msgid "" "\n" "-- Type space to continue -- \n" msgstr "" "\n" "-- Pokračujte stisknutím mezerníku -- \n" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "R)epl" before #: src/tools/hunspell.cxx:1316 msgid "r" msgstr "n" #: src/tools/hunspell.cxx:1325 msgid "Replace with: " msgstr "Nahradit (čím): " #. TRANSLATORS: translate these letters according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "U)ncap" and I)nsert before #: src/tools/hunspell.cxx:1349 src/tools/hunspell.cxx:1385 msgid "u" msgstr "m" #: src/tools/hunspell.cxx:1350 src/tools/hunspell.cxx:1385 msgid "i" msgstr "i" #: src/tools/hunspell.cxx:1378 src/tools/hunspell.cxx:1490 #, c-format msgid "Cannot update personal dictionary." msgstr "Nedaří se aktualizovat osobní slovník." #: src/tools/hunspell.cxx:1386 msgid "a" msgstr "a" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "S)tem" before #: src/tools/hunspell.cxx:1394 msgid "s" msgstr "k" #: src/tools/hunspell.cxx:1409 msgid "New word (stem): " msgstr "Nové slovo (kořen): " #: src/tools/hunspell.cxx:1437 msgid "Model word (a similar dictionary word): " msgstr "Modelové slovo (podobné slovo ze slovníku): " #: src/tools/hunspell.cxx:1497 msgid "Model word must be in the dictionary. Press any key!" msgstr "" "Je třeba, aby modelové slovo bylo ve slovníku. Pokračujte stisknutím " "libovolné klávesy." #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "e(X)it" before #: src/tools/hunspell.cxx:1507 msgid "x" msgstr "o" #. TRANSLATORS: translate this letter according to the shortcut letter #. used #. previously in the translation of "Q)uit" before #: src/tools/hunspell.cxx:1513 msgid "q" msgstr "u" #: src/tools/hunspell.cxx:1516 msgid "Are you sure you want to throw away your changes? " msgstr "Opravdu chcete zahodit provedené změny? " #. TRANSLATORS: translate this letter according to the shortcut #. * letter y)es #: src/tools/hunspell.cxx:1519 msgid "y" msgstr "a" #: src/tools/hunspell.cxx:1628 msgid "Can't create tempfile" msgstr "Nedaří se vytvořit dočasný soubor" #: src/tools/hunspell.cxx:1673 msgid "Can't open outputfile" msgstr "Nedaří se otevřít výstupní soubor" #: src/tools/hunspell.cxx:1826 msgid "Usage: hunspell [OPTION]... [FILE]...\n" msgstr "Použití: hunspell [VOLBA]… [SOUBOR]…\n" #: src/tools/hunspell.cxx:1827 msgid "" "Check spelling of each FILE. Without FILE, check standard input.\n" "\n" msgstr "" "Zkontrolovat překlepy v každém ze SOUBOR. Pokud není SOUBOR zadán, " "zkontrolovat standardní vstup.\n" "\n" #: src/tools/hunspell.cxx:1829 msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n" msgstr "" " -1\t\tkontrolovat pouze první sloupec z každého řádku (oddělovač sloupců " "je tabulátor)\n" #: src/tools/hunspell.cxx:1831 msgid " -a\t\tIspell's pipe interface\n" msgstr " -a\t\trozhraní roury (pipe) pro Ispell\n" #: src/tools/hunspell.cxx:1832 msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n" msgstr "" " --check-url\tzkontrolovat URL adresy, e-mailové adresy a popisy umístění v " "souborovém systému\n" #: src/tools/hunspell.cxx:1837 msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n" msgstr " --check-apostrophe\tzkontrolovat správné Unicode apostrofy\n" #: src/tools/hunspell.cxx:1839 msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n" msgstr " -d s[,s2,…]\tpoužít slovníky s (s2 atd.)\n" #: src/tools/hunspell.cxx:1840 msgid " -D\t\tshow available dictionaries\n" msgstr " -D\t\tzobrazit které slovníky jsou k dispozici\n" #: src/tools/hunspell.cxx:1841 msgid " -G\t\tprint only correct words or lines\n" msgstr " -G\t\tvypsat pouze slova či řádky, které jsou v pořádku\n" #: src/tools/hunspell.cxx:1842 msgid " -h, --help\tdisplay this help and exit\n" msgstr " -h, --help\tzobrazit tuto nápovědu a skončit\n" #: src/tools/hunspell.cxx:1843 msgid " -H\t\tHTML input file format\n" msgstr " -H\t\tHTML formát vstupního souboru\n" #: src/tools/hunspell.cxx:1844 msgid " -i enc\tinput encoding\n" msgstr " -i enc\tznaková sada vstupu (encoding)\n" #: src/tools/hunspell.cxx:1845 msgid " -l\t\tprint misspelled words\n" msgstr " -l\t\tvypsat zkomolená slova\n" #: src/tools/hunspell.cxx:1846 msgid " -L\t\tprint lines with misspelled words\n" msgstr " -L\t\tvypsat řádky se zkomolenými slovy\n" #: src/tools/hunspell.cxx:1848 msgid " -m \t\tanalyze the words of the input text\n" msgstr " -m \t\tanalyzovat slova vstupního textu\n" #: src/tools/hunspell.cxx:1849 msgid " -n\t\tnroff/troff input file format\n" msgstr " -n\t\tvstupní soubor je ve formátu nroff/troff\n" #: src/tools/hunspell.cxx:1853 msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n" msgstr "" " -O\t\tvstupní soubor je ve formátu OpenDocument (ODF nebo Flat ODF)\n" #: src/tools/hunspell.cxx:1854 msgid " -p dict\tset dict custom dictionary\n" msgstr " -p slovn\tnastavit vlastní slovník\n" #: src/tools/hunspell.cxx:1856 msgid " -r\t\twarn of the potential mistakes (rare words)\n" msgstr " -r\t\tvarovat o potenciálních chybách (zřídka používaná slova)\n" #: src/tools/hunspell.cxx:1859 msgid " -P password\tset password for encrypted dictionaries\n" msgstr " -P heslo\tnastavit heslo k šifrovaným slovníkům\n" #: src/tools/hunspell.cxx:1860 msgid " -s \t\tstem the words of the input text\n" msgstr " -s \t\tkořeny slov vstupního textu\n" #: src/tools/hunspell.cxx:1861 msgid " -S \t\tsuffix words of the input text\n" msgstr " -S \t\tpřípony slov vstupního textu\n" #: src/tools/hunspell.cxx:1862 msgid " -t\t\tTeX/LaTeX input file format\n" msgstr " -t\t\tvstupní soubor je ve formátu TeX/LaTeX\n" #: src/tools/hunspell.cxx:1863 msgid " -v, --version\tprint version number\n" msgstr " -v, --version\tvypsat číslo verze\n" #: src/tools/hunspell.cxx:1865 msgid " -vv\t\tprint Ispell compatible version number\n" msgstr " -vv\t\tvypsat číslo verze kompatibilního Ispell\n" #: src/tools/hunspell.cxx:1866 msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n" msgstr "" " -w\t\tvypsat zkomolená slova (= řádky) ze slovního/řádkového vstupu.\n" #: src/tools/hunspell.cxx:1868 msgid "" " -X\t\tXML input file format\n" "\n" msgstr "" " -X\t\tvstupní soubor je ve formátu XML\n" "\n" #: src/tools/hunspell.cxx:1872 msgid "" "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded file\n" " hunspell -l *.odt # print misspelled words of ODF " "files\n" "\n" " # Quick fix of ODF documents by personal dictionary creation\n" "\n" " # 1 Make a reduced list from misspelled and unknown words:\n" "\n" " hunspell -l *.odt | sort | uniq >words\n" "\n" " # 2 Delete misspelled words of the file by a text editor.\n" " # 3 Use this personal dictionary to fix the deleted words:\n" "\n" " hunspell -p words *.odt\n" "\n" msgstr "" "Příklady: hunspell -d cs_CZ soubor.txt # interaktivní kontrola\n" " hunspell -i utf-8 soubor.txt # zkontrolovat soubor se znak. " "sadou UTF-8\n" " hunspell -l *.odt # vypsat zkomolená slova v ODF " "souborech\n" "\n" " # Rychlá oprava ODF dokumentů vytvořením osobního slovníku\n" "\n" " # 1 Vytvořte zhuštěný seznam zkomolených a neznámých slov:\n" "\n" " hunspell -l *.odt | sort | uniq >slova\n" "\n" " # 2 V souboru slova smažte zkomolená slova.\n" " # 3 Vzniklý osobní slovník použijte pro opravu v něm smazaných " "slov:\n" "\n" " hunspell -p slova *.odt\n" "\n" #: src/tools/hunspell.cxx:1887 msgid "Bug reports: http://hunspell.github.io/\n" msgstr "Hlášení chyb: http://hunspell.github.io/\n" #: src/tools/hunspell.cxx:1895 #, fuzzy msgid "" "\n" "Copyright (C) 2002-2022 László Németh. License: MPL/GPL/LGPL.\n" "\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n" "\n" msgstr "" "\n" "Copyright (C) 2002-2014 László Németh. Licence: MPL/GPL/LGPL.\n" "\n" "Založeno na softwarové knihovně Myspell z projektu OpenOffice.org.\n" "Myspell copyright (C) Kevin Hendricks, 2001-2002, Licence: BSD.\n" "\n" #: src/tools/hunspell.cxx:1900 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n" msgstr "" "Toto je svobodný software – viz podmínky kopírování uvedené ve zdrojových " "kódech.\n" "NENÍ poskytována žádná záruka, ani PRODEJNOSTI nebo VHODNOSTI PRO KONKRÉTNÍ\n" "ÚČEL, v rozsahu, jaký umožňuje legislativa.\n" #: src/tools/hunspell.cxx:2077 #, c-format msgid "" "SEARCH PATH:\n" "%s\n" msgstr "" "POPIS PROHLEDÁVANÉHO UMÍSTĚNÍ:\n" "%s\n" #: src/tools/hunspell.cxx:2081 msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n" msgstr "SLOVNÍKY K DISPOZICI (popis umístění není pro volbu -d povinný):\n" #: src/tools/hunspell.cxx:2095 src/tools/hunspell.cxx:2115 #, c-format msgid "" "LOADED DICTIONARY:\n" "%s\n" "%s\n" msgstr "" "NAČTENÝ SLOVNÍK:\n" "%s\n" "%s\n" #: src/tools/hunspell.cxx:2118 #, c-format msgid "error - %s exceeds dictionary limit.\n" msgstr "chyba – %s překračuje limit pro slovník.\n" #: src/tools/hunspell.cxx:2124 #, c-format msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n" msgstr "" "Nedaří se otevřít soubory s příponami nebo slovníky pro slovník nazvaný " "„%s“.\n" #: src/tools/hunspell.cxx:2211 msgid "Hunspell has been compiled without Ncurses user interface.\n" msgstr "" "Hunspell byl sestaven (zkompilován) bez podpory uživatelského rozhraní v " "Ncurses.\n" hunspell-1.7.2/compile0000755000175000017500000001624513424262414011664 00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: hunspell-1.7.2/tests/0000775000175000017500000000000014353370323011523 500000000000000hunspell-1.7.2/tests/opentaal_keepcase.dic0000644000175000017500000000005013565705656015577 000000000000005 tv-/KB -tv/KE word/C NATO-/B -NATO/E hunspell-1.7.2/tests/flag.aff0000644000175000017500000000017613565705656013053 00000000000000# base 1-character flags SFX A Y 1 SFX A 0 s/123 . SFX 1 Y 1 SFX 1 0 bar . SFX 2 Y 1 SFX 2 0 baz . PFX 3 Y 1 PFX 3 0 un . hunspell-1.7.2/tests/2970242.aff0000644000175000017500000000010213565705656012760 00000000000000CHECKCOMPOUNDPATTERN 1 CHECKCOMPOUNDPATTERN /a /b COMPOUNDFLAG c hunspell-1.7.2/tests/allcaps2.dic0000644000175000017500000000003113565705656013634 000000000000003 iPod/s iPodos/* ipodos hunspell-1.7.2/tests/checkcompoundpattern4.good0000644000175000017500000000002313565705656016631 00000000000000sUryOdayaM pErunna hunspell-1.7.2/tests/nosuggest.wrong0000644000175000017500000000002513565705656014551 00000000000000foox foobarx barfoox hunspell-1.7.2/tests/ignoresug.good0000644000175000017500000000007413565705656014335 00000000000000ինչ ի՞նչ մնաս մնա՜ս որտեղ որտե՞ղ hunspell-1.7.2/tests/i53643.good0000664000175000017500000000021714352145424013153 000000000000001 12 123 1234 12345 123456 1234567 1.1 1.12 1.123 1.1234 1.12345 1.123456 12.1 123.12 1234.123 12345.1234 123456.12345 1234567.123456 4,2 42-42hunspell-1.7.2/tests/complexprefixesutf.dic0000644000175000017500000000002113565705656016066 000000000000001 ⲟⲩⲣⲟ/B hunspell-1.7.2/tests/hu.aff0000644000175000017500000000200313565705656012545 00000000000000SET UTF-8 LANG hu_HU # words with flag Y can form compound words COMPOUNDFLAG Y # min. word length in compounds: # allow 2-letter words COMPOUNDMIN 2 # max. word count in compounds COMPOUNDWORDMAX 2 # exception for Hungarian: # allow more words in a compound, than COMPOUNDWORDMAX, # if syllable count of the compound is 6 or less COMPOUNDSYLLABLE 6 aáeéiíoóöőuúüű # test case for commit 1fada01 "fix other regression in compounding" REP 1 REP kor _kor CHECKCOMPOUNDREP # to check word breaking WORDCHARS - BREAK 1 BREAK - # to check COMPOUNDFORBIDFLAG and spec. Hungarian compounding COMPOUNDPERMITFLAG + COMPOUNDFORBIDFLAG ! # SFX F suffix "-ó" is allowed in compounds by COMPOUNDPERMITFLAG, # but the generated word form "forró" is forbidden in compound # by the dictionary item "forró" with COMPOUNDFORBIDFLAG # # Exception: in special Hungarian "moving rule" (hard-wired to the # flag "F" in a LANG_hu code), "forró" can be in similar compounds: # "forróvíz-tartály" SFX S Y 1 SFX S 0 ó/Y+ . hunspell-1.7.2/tests/opentaal_forbiddenword1.aff0000644000175000017500000000013613565705656016732 00000000000000TRY r FORBIDDENWORD F COMPOUNDRULE 2 COMPOUNDRULE WW COMPOUNDRULE WWW SFX S Y 1 SFX S 0 s . hunspell-1.7.2/tests/compoundrule8.wrong0000644000175000017500000000003413565705656015337 000000000000001th 2th 3th 10001th 10011st hunspell-1.7.2/tests/morph.aff0000644000175000017500000000032413565705656013262 00000000000000# example for morphological analysis, stemming and generation PFX P Y 1 PFX P 0 un . dp:pfx_un sp:un SFX S Y 1 SFX S 0 s . is:plur SFX Q Y 1 SFX Q 0 s . is:sg_3 SFX R Y 1 SFX R 0 able/PS . ds:der_able hunspell-1.7.2/tests/map.aff0000644000175000017500000000023613565705656012714 00000000000000# With MAP suggestion, Hunspell can add missing accents to a word. # switch off ngram suggestion for testing MAXNGRAMSUGS 0 MAP 3 MAP u MAP o MAP (ss) hunspell-1.7.2/tests/compoundrule5.wrong0000644000175000017500000000000413565705656015331 00000000000000.25 hunspell-1.7.2/tests/base_utf.dic0000644000175000017500000000036013565705656013730 0000000000000028 created/U create/XKVNGADS imply/GNSDX natural/PUY like/USPBY convey/BDGS look/GZRDS text hello said sawyer NASA rotten day tomorrow seven FAQ/SM can’t doesn’t etc won’t lip text horrifying speech suggest uncreate/V Hunspell İzmir hunspell-1.7.2/tests/colons_in_words.dic0000644000175000017500000000001613565705656015337 000000000000002 c:a S:t foo hunspell-1.7.2/tests/reputf.aff0000644000175000017500000000024313565705656013442 00000000000000# With REP suggestions, we can fix typical language specific misspellings. SET UTF-8 # switch off ngram suggestion for testing MAXNGRAMSUGS 0 REP 1 REP oo őő hunspell-1.7.2/tests/slash.dic0000644000175000017500000000005313565705656013251 000000000000004 / 1\/2 http:\/\/ \/usr\/share\/myspell\/ hunspell-1.7.2/tests/limit-multiple-compounding.aff0000664000175000017500000000044214353360473017415 00000000000000# "foo+bar" accepted, but not "foo+bar+baz" # because 3-or-more-word compounds got a typo check, i.e. # "foobarbaz" is rejected, because it is a typo of the dictionary word "goobarbaz" # (but not "foobar" as typo of the dictionary word "goobar") TRY esianrtolcdugmphbyfvkwz' COMPOUNDFLAG x hunspell-1.7.2/tests/checksharps.dic0000644000175000017500000000010513565705656014433 000000000000006 mig/k Aussto Absto. Auenabmessung Prozessionsstrae Auenmae hunspell-1.7.2/tests/compoundaffix.aff0000644000175000017500000000013513565705656014777 00000000000000COMPOUNDFLAG X PFX P Y 1 PFX P 0 pre . SFX S Y 1 SFX S 0 suf . hunspell-1.7.2/tests/conditionalprefix.aff0000644000175000017500000000022013565705656015651 00000000000000PFX P Y 1 PFX P 0 un . ip:un SFX S Y 1 SFX S 0 s . is:PL SFX Q Y 1 SFX Q 0 s . is:3SGV SFX R Y 1 SFX R 0 able/PS . ds:DER_V_ADJ_ABLE hunspell-1.7.2/tests/1975530.good0000644000175000017500000000002713565705656013166 00000000000000أرى أيار ترى hunspell-1.7.2/tests/alias2.aff0000644000175000017500000000032613565705656013312 00000000000000# aliases for flag vectors (AF) and morphological descriptions (AM) # AB -> 1 # A -> 2 AF 2 AF AB AF A AM 3 AM is:affix_x AM ds:affix_y AM po:noun xx:other_data SFX A Y 1 SFX A 0 x . 1 SFX B Y 1 SFX B 0 y/2 . 2 hunspell-1.7.2/tests/compoundaffix.wrong0000644000175000017500000000004713565705656015401 00000000000000foosufbar fooprebarsuf prefooprebarsuf hunspell-1.7.2/tests/ngram_utf_fix.aff0000644000175000017500000000055613565705656014774 00000000000000# Test fix of suffixed ngram suggestions with UTF-8 encoding and long flags. # Based on Vitaly Piryatinsky's bug report and example. SET UTF-8 FLAG num PFX 101 Y 1 PFX 101 0 пред . SFX 1381 Y 1 SFX 1381 0 о . SFX 2000 Y 3 SFX 2000 0 ам . SFX 2000 0 ами . SFX 2000 0 ах . SFX 2022 Y 4 SFX 2022 0 а . SFX 2022 0 у . SFX 2022 0 ом . SFX 2022 0 е . hunspell-1.7.2/tests/opentaal_forbiddenword2.good0000644000175000017500000000004713565705656017130 00000000000000fooword wordbar barwordfoo barwordfoos hunspell-1.7.2/tests/opentaal_forbiddenword2.sug0000644000175000017500000000001313565705656016767 00000000000000barwordfoo hunspell-1.7.2/tests/ignoreutf.dic0000644000175000017500000000015113565705656014140 000000000000009 طِير فَتحة ضُمة كِسرة فتحًتان ضمتانٌ كسرتاٍن شدّة سكوْن hunspell-1.7.2/tests/compoundaffix.dic0000644000175000017500000000002213565705656014775 000000000000002 foo/XPS bar/XPS hunspell-1.7.2/tests/fogemorpheme.dic0000644000175000017500000000002413565705656014612 000000000000002 gata/A kontoret/X hunspell-1.7.2/tests/checkcompoundpattern.dic0000644000175000017500000000004613565705656016361 000000000000004 knny/A nyels/A hossz/A szmts/A hunspell-1.7.2/tests/allcaps.wrong0000644000175000017500000000003713565705656014155 00000000000000Openoffice.org Unicef Unicef's hunspell-1.7.2/tests/maputf.dic0000644000175000017500000000004213565705656013431 000000000000003 Frühstück tükörfúró groß hunspell-1.7.2/tests/reputf.sug0000644000175000017500000000000613565705656013501 00000000000000főő hunspell-1.7.2/tests/alias2.dic0000644000175000017500000000001213565705656013305 000000000000001 foo/1 3 hunspell-1.7.2/tests/complexprefixesutf.good0000644000175000017500000000010213565705656016257 00000000000000ⲟⲩⲣⲟ ⲙⲉⲧⲟⲩⲣⲟ ⲧⲉⲕⲙⲉⲧⲟⲩⲣⲟ hunspell-1.7.2/tests/1748408-2.dic0000664000175000017500000000000614352145647013126 00000000000000dummy hunspell-1.7.2/tests/oconv2.aff0000644000175000017500000000017413565705656013346 00000000000000# tests OCONV conversion of root and morphes output SET UTF-8 ICONV 1 ICONV a ei OCONV 1 OCONV ei a SFX A Y 1 SFX A 0 s . hunspell-1.7.2/tests/forbiddenword.dic0000664000175000017500000000007014352145511014747 000000000000005 foo/S foo/YX bar/YS bars/X foos/X kg Kg/X KG/X cm Cm/Xhunspell-1.7.2/tests/affixes.aff0000644000175000017500000000017113565705656013562 00000000000000# simple example for affix compression (see Hunspell(4)) PFX A Y 1 PFX A 0 re . SFX B Y 2 SFX B 0 ed [^y] SFX B y ied y hunspell-1.7.2/tests/fogemorpheme.good0000644000175000017500000000003313565705656015003 00000000000000gata kontoret gatukontoret hunspell-1.7.2/tests/1748408-4.dic0000664000175000017500000000000614352145647013130 00000000000000dummy hunspell-1.7.2/tests/oconv2.test0000755000175000017500000000012413565705656013567 00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME -i utf-8 hunspell-1.7.2/tests/rep.wrong0000644000175000017500000000012213565705656013317 00000000000000phorm fantom vacashun vacashuns alot un'alunno foo foobars barfoos vinteún autos hunspell-1.7.2/tests/compoundaffix2.aff0000644000175000017500000000016613565705656015065 00000000000000COMPOUNDFLAG X COMPOUNDPERMITFLAG Y PFX P Y 1 PFX P 0 pre/Y . SFX S Y 1 SFX S 0 suf/Y . hunspell-1.7.2/tests/condition.dic0000644000175000017500000000005613565705656014130 000000000000005 ofo/SP entertain/Q nianretne/R ra/Z wry/TU hunspell-1.7.2/tests/needaffix3.wrong0000644000175000017500000000000513565705656014545 00000000000000foos hunspell-1.7.2/tests/checkcompoundrep.dic0000644000175000017500000000003713565705656015472 000000000000003 szer/A vz/A szerviz kocsi/A hunspell-1.7.2/tests/encoding.aff0000644000175000017500000000002013565705656013714 00000000000000SET ISO-8859-15 hunspell-1.7.2/tests/map.sug0000644000175000017500000000004013565705656012747 00000000000000Frühstück tükörfúró groß hunspell-1.7.2/tests/IJ.sug0000644000175000017500000000001113565705656012472 00000000000000IJs, ijs hunspell-1.7.2/tests/compoundrule3.wrong0000644000175000017500000000032513565705656015335 00000000000000aa aaa aaaa aab aaab aaaab abb aabb aaabbb bb bbb bbbb aaab abcc abbc abbcc aabc aabcc aabbc aabbcc aaabbbccc acc aac aacc aaaccc bcc bbc bbcc bbbccc cc ccc cccccc abcc ba aaabaaa bbaaa aaaaba bbbbbaa cba cab acb hunspell-1.7.2/tests/reputf.wrong0000644000175000017500000000000413565705656014035 00000000000000foo hunspell-1.7.2/tests/korean.aff0000644000175000017500000000001213565705656013406 00000000000000SET UTF-8 hunspell-1.7.2/tests/i54633.dic0000644000175000017500000000001113565705656012766 000000000000001 diter hunspell-1.7.2/tests/utf8_bom2.aff0000644000175000017500000000006413565705656013743 00000000000000SET UTF-8 # removing byte order mark from dic file hunspell-1.7.2/tests/ignoresug.dic0000644000175000017500000000003513565705656014141 000000000000003 ինչ մնաս որտեղ hunspell-1.7.2/tests/warn.aff0000644000175000017500000000030513565705656013103 00000000000000# WARN flag # The signed word, and its suffixed forms result warning message in command-line #Use to forbid the words with flag WARN #FORBIDWARN WARN W SFX A Y 1 SFX A 0 s . REP 1 REP foo bar hunspell-1.7.2/tests/breakdefault.good0000644000175000017500000000006413565705656014763 00000000000000foo bar foo- -foo scot-free foo-bar foo-bar-foo-bar hunspell-1.7.2/tests/compoundrule8.good0000644000175000017500000000022113565705656015131 000000000000001st 2nd 3rd 4th 5th 6th 7th 8th 9th 10th 11th 12th 13th 14th 15th 16th 17th 18th 19th 20th 21st 22nd 23rd 24th 25th 100th 1000th 10001st 10011th hunspell-1.7.2/tests/opentaal_keepcase.wrong0000644000175000017500000000011313565705656016174 00000000000000TV-word Tv-word word-TV word-Tv wordword-TV TV-word-TV Nato-word word-nato hunspell-1.7.2/tests/needaffix.dic0000644000175000017500000000002013565705656014062 000000000000002 foo/YXA bar/Y hunspell-1.7.2/tests/oconv.aff0000644000175000017500000000063513565705656013266 00000000000000# output conversion SET UTF-8 # Testing also whitespace and comments. OCONV 7 # space, space OCONV a A # tab, space, space OCONV á Á # tab, tab, space OCONV b B # tab, tab, tab OCONV c C # 2xspace, 2xspace, 2xtab OCONV d D # tab+space, space+tab, space OCONV e E # OCONV é É # Only comment. Note that line above ends with space+tab. # space # 2xspace # tab # 2xtab # space+tab # tab+space hunspell-1.7.2/tests/ph.aff0000644000175000017500000000130713565705656012546 00000000000000# new suggestion methods of Hunspell 1.7: # ph: for dictionary-based suggestions. # # For example, suggestions for "wich" # with this test dictonary: # # Hunspell 1.3.3 # wich # & wich 4 0: winch, witch, which, wish # # Hunspell 1.6.2 # wich # & wich 4 0: which, witch, winch, wish # # Suggestions will be limited for # the dictionary words with the same ph: field, # and for non-ngram suggestions. # # Order of the ph: suggestions for the # same mispelling, eg. wich -> which, witch # follows the order of the words in the dictionary: # # which ph:wich # witch ph:witch # # switch off ngram suggestions to check only # ph: based suggestions MAXNGRAMSUGS 0 TRY esianrtolcdugmphbyfvkwzESIANRTOLCDUGMPHBYFVKWZ'- hunspell-1.7.2/tests/allcaps3.good0000644000175000017500000000012713565705656014034 00000000000000UNESCO Unesco UNESCO's Unesco's UNESCO'S NASA Nasa NASA's Nasa's NASA'S ACTS acts Acts hunspell-1.7.2/tests/encoding.good0000644000175000017500000000003213565705656014113 00000000000000cœur œuvre CŒUR ŒUVRE hunspell-1.7.2/tests/complexprefixes2.good0000644000175000017500000000004313565705656015626 00000000000000ouro metouro tekmetouro ouro_test_ hunspell-1.7.2/tests/checkcompoundpattern3.dic0000644000175000017500000000003413565705656016441 000000000000004 foo/A boo/AX bar/A ban/AY hunspell-1.7.2/tests/utf8_bom.aff0000644000175000017500000000007113565705656013657 00000000000000SET UTF-8 # removing byte order mark from affix file hunspell-1.7.2/tests/timelimit.dic0000644000175000017500000000002513565705656014133 000000000000004 0/Y 00/Y 000/Y 1/Y hunspell-1.7.2/tests/2970242.dic0000644000175000017500000000002613565705656012770 000000000000003 foo/ac bar/c baz/bc hunspell-1.7.2/tests/phone.dic0000644000175000017500000000015713565705656013255 0000000000000010 Brasilia brassily Brazilian brilliance brilliancy brilliant brain brass Churchillian xxxxxxxxxx ph:Brasilia hunspell-1.7.2/tests/checksharps.good0000644000175000017500000000023213565705656014625 00000000000000müßig Müßig MÜSSIG Ausstoß Abstoß. Außenabmessung Prozessionsstraße Außenmaße AUSSTOSS ABSTOSS. AUSSENABMESSUNG PROZESSIONSSTRASSE AUSSENMASSE hunspell-1.7.2/tests/dotless_i.dic0000644000175000017500000000003213565705656014121 000000000000003 iç ışık Diyarbakır hunspell-1.7.2/tests/base.wrong0000644000175000017500000000012213565705656013443 00000000000000loooked texxt hlelo seid rottenday tomorow seeeven Nasa horrorfying peech sugesst hunspell-1.7.2/tests/forbiddenword.wrong0000664000175000017500000000004014352145511015341 00000000000000bars foos foobar barfoo Kg KG Cmhunspell-1.7.2/tests/limit-multiple-compounding.dic0000664000175000017500000000004514353360217017413 000000000000003 foo/x bar/x baz/x goobar goobarbaz hunspell-1.7.2/tests/i35725.aff0000644000175000017500000000604113565705656012775 00000000000000# Ngram suggestions # - fix case problem # - detect character swapping (keep only these suggestions) # - lesser suggestions # - weight with common subsequence algorithm # - suggest uppercased words # 2007-02-05: # now not neighbour character replacements and character movings are # detected by not ngram suggestions, too. # OpenOffice.org's en_US.aff file SET ISO8859-1 TRY esianrtolcdugmphbyfvkwzESIANRTOLCDUGMPHBYFVKWZ' WORDCHARS ' PFX A Y 1 PFX A 0 re . PFX I Y 1 PFX I 0 in . PFX U Y 1 PFX U 0 un . PFX C Y 1 PFX C 0 de . PFX E Y 1 PFX E 0 dis . PFX F Y 1 PFX F 0 con . PFX K Y 1 PFX K 0 pro . SFX V N 2 SFX V e ive e SFX V 0 ive [^e] SFX N Y 3 SFX N e ion e SFX N y ication y SFX N 0 en [^ey] SFX X Y 3 SFX X e ions e SFX X y ications y SFX X 0 ens [^ey] SFX H N 2 SFX H y ieth y SFX H 0 th [^y] SFX Y Y 1 SFX Y 0 ly . SFX G Y 2 SFX G e ing e SFX G 0 ing [^e] SFX J Y 2 SFX J e ings e SFX J 0 ings [^e] SFX D Y 4 SFX D 0 d e SFX D y ied [^aeiou]y SFX D 0 ed [^ey] SFX D 0 ed [aeiou]y SFX T N 4 SFX T 0 st e SFX T y iest [^aeiou]y SFX T 0 est [aeiou]y SFX T 0 est [^ey] SFX R Y 4 SFX R 0 r e SFX R y ier [^aeiou]y SFX R 0 er [aeiou]y SFX R 0 er [^ey] SFX Z Y 4 SFX Z 0 rs e SFX Z y iers [^aeiou]y SFX Z 0 ers [aeiou]y SFX Z 0 ers [^ey] SFX S Y 4 SFX S y ies [^aeiou]y SFX S 0 s [aeiou]y SFX S 0 es [sxzh] SFX S 0 s [^sxzhy] SFX P Y 3 SFX P y iness [^aeiou]y SFX P 0 ness [aeiou]y SFX P 0 ness [^y] SFX M Y 1 SFX M 0 's . SFX B Y 3 SFX B 0 able [^aeiou] SFX B 0 able ee SFX B e able [^aeiou]e SFX L Y 1 SFX L 0 ment . REP 88 REP a ei REP ei a REP a ey REP ey a REP ai ie REP ie ai REP are air REP are ear REP are eir REP air are REP air ere REP ere air REP ere ear REP ere eir REP ear are REP ear air REP ear ere REP eir are REP eir ere REP ch te REP te ch REP ch ti REP ti ch REP ch tu REP tu ch REP ch s REP s ch REP ch k REP k ch REP f ph REP ph f REP gh f REP f gh REP i igh REP igh i REP i uy REP uy i REP i ee REP ee i REP j di REP di j REP j gg REP gg j REP j ge REP ge j REP s ti REP ti s REP s ci REP ci s REP k cc REP cc k REP k qu REP qu k REP kw qu REP o eau REP eau o REP o ew REP ew o REP oo ew REP ew oo REP ew ui REP ui ew REP oo ui REP ui oo REP ew u REP u ew REP oo u REP u oo REP u oe REP oe u REP u ieu REP ieu u REP ue ew REP ew ue REP uff ough REP oo ieu REP ieu oo REP ier ear REP ear ier REP ear air REP air ear REP w qu REP qu w REP z ss REP ss z REP shun tion REP shun sion REP shun cion hunspell-1.7.2/tests/IJ.dic0000644000175000017500000000001613565705656012440 000000000000001 ijs/i Ijs/* hunspell-1.7.2/tests/complexprefixes.aff0000644000175000017500000000020613565705656015351 00000000000000# set twofold prefix stripping # Coptic example by Moheb Mekhaiel COMPLEXPREFIXES PFX A Y 1 PFX A 0 tek . PFX B Y 1 PFX B 0 met/A . hunspell-1.7.2/tests/i35725.wrong0000644000175000017500000000013413565705656013372 00000000000000permenant pernament pernemant Permenant Pernament Pernemant unesco Unesco unesco's Unesco's hunspell-1.7.2/tests/digits_in_words.dic0000644000175000017500000000006713565705656015333 0000000000000011 0/a 1/a 2/a 3/a 4/a 5/a 6/a 7/a 8/a 9/a -jährig/bc hunspell-1.7.2/tests/1748408-4.aff0000664000175000017500000000007414352145647013132 00000000000000# Crashtest for bug 1748408. AF 2000 INVALID something else hunspell-1.7.2/tests/compoundrule3.good0000644000175000017500000000002313565705656015124 00000000000000a b c ab abc ac bc hunspell-1.7.2/tests/i54980.aff0000644000175000017500000000013413565705656012776 00000000000000# ISO-8859-15 (extended latin-1) support for French, Finnish and EURO symbol SET ISO8859-15 hunspell-1.7.2/tests/ph2.dic0000644000175000017500000000030213565705656012625 000000000000009 foo ph:bar ph:baz foo bar ph:foobar word/Y ph:baz stem/Y ph: ph: forbidden/Y root/YA forbidden root/A ph:forbiddenroot pretty/B ph:prity* foobarö/B ph:fubarő* happy/B ph:hepy ph:hepi->happi hunspell-1.7.2/tests/compoundrule7.aff0000644000175000017500000000027113565705656014741 00000000000000# English ordinal numbers (parenthesized long flags) FLAG long WORDCHARS 0123456789 COMPOUNDMIN 1 ONLYINCOMPOUND cc COMPOUNDRULE 2 COMPOUNDRULE (nn)*(11)(tt) COMPOUNDRULE (nn)*(mm)(pp) hunspell-1.7.2/tests/opentaal_keepcase.good0000644000175000017500000000004413565705656015773 00000000000000tv-word word-tv NATO-word word-NATO hunspell-1.7.2/tests/checkcompoundcase2.dic0000644000175000017500000000001613565705656015676 000000000000002 o/A o/A hunspell-1.7.2/tests/checkcompoundtriple.dic0000644000175000017500000000003513565705656016201 000000000000004 foo/A opera/A eel/A bare/A hunspell-1.7.2/tests/maputf.wrong0000644000175000017500000000003213565705656014025 00000000000000Fruhstuck tukorfuro gross hunspell-1.7.2/tests/encoding.dic0000644000175000017500000000001513565705656013723 000000000000002 cur uvre hunspell-1.7.2/tests/checksharpsutf.aff0000644000175000017500000000013313565705656015150 00000000000000# test - SS special capitalizing in UTF-8 SET UTF-8 CHECKSHARPS WORDCHARS ß. KEEPCASE k hunspell-1.7.2/tests/ph.sug0000644000175000017500000000017613565705656012613 00000000000000a lot in spite, inspire what what Wednesday Wednesday Wednesday Wednesday which, witch, winch, wish Oh, my gosh! OH, MY GOSH! hunspell-1.7.2/tests/checkcompoundcase.wrong0000644000175000017500000000002513565705656016211 00000000000000fooBar BAZBar BAZfoo hunspell-1.7.2/tests/1695964.wrong0000644000175000017500000000002113565705656013376 00000000000000Mall Malle Malls hunspell-1.7.2/tests/checkcompounddup.aff0000644000175000017500000000011313565705656015464 00000000000000# Forbid compound word with triple letters CHECKCOMPOUNDDUP COMPOUNDFLAG A hunspell-1.7.2/tests/ph2.sug0000644000175000017500000000021013565705656012662 00000000000000foo foo, word foo bar wordstem stemword stemwordstem forbidden root forbidden root's pretty prettiest foobarö foobarőt happy happiest hunspell-1.7.2/tests/needaffix2.dic0000644000175000017500000000007513565705656014156 000000000000004 foo st:foo id:1 foo/YX st:foo id:2 foo/Y st:foo id:3 bar/Y hunspell-1.7.2/tests/1975530.dic0000644000175000017500000000002613565705656012774 000000000000002 أرى/x أيار/x hunspell-1.7.2/tests/circumfix.dic0000644000175000017500000000002013565705656014122 000000000000001 nagy/C po:adj hunspell-1.7.2/tests/simplifiedtriple.wrong0000644000175000017500000000001113565705656016073 00000000000000glasssko hunspell-1.7.2/tests/ignore.good0000644000175000017500000000006413565705656013615 00000000000000example expression xmpl xprssn reexpression rxprssn hunspell-1.7.2/tests/alias3.morph0000644000175000017500000000034513565705656013705 00000000000000> ouro analyze(ouro) = [stem_1] ouro:ts > metouro analyze(metouro) = affix_2/ ouro:ts [stem_1] > tekmetouro analyze(tekmetouro) = affix_1/ affix_2/ ouro:ts [stem_1] > ouro_test_ analyze(ouro_test_) = [stem_1] ouro:ts /suffix_1 hunspell-1.7.2/tests/map.wrong0000644000175000017500000000003213565705656013306 00000000000000Fruhstuck tukorfuro gross hunspell-1.7.2/tests/nosuggest.good0000644000175000017500000000002213565705656014342 00000000000000foo foobar barfoo hunspell-1.7.2/tests/compoundrule5.aff0000644000175000017500000000017413565705656014741 00000000000000# number + percent SET UTF-8 COMPOUNDMIN 1 COMPOUNDRULE 2 COMPOUNDRULE N*%? COMPOUNDRULE NN*.NN*%? WORDCHARS 0123456789‰. hunspell-1.7.2/tests/timelimit.good0000644000175000017500000000002713565705656014326 000000000000001000000000000000000000 hunspell-1.7.2/tests/i54633.sug0000644000175000017500000000002013565705656013025 00000000000000éditer Éditer hunspell-1.7.2/tests/complexprefixes2.aff0000644000175000017500000000026713565705656015442 00000000000000# complex prefixes with morphological analysis COMPLEXPREFIXES WORDCHARS _ PFX A Y 1 PFX A 0 tek . affix_1/ PFX B Y 1 PFX B 0 met/A . affix_2/ SFX C Y 1 SFX C 0 _test_ . /suffix_1 hunspell-1.7.2/tests/maputf.aff0000644000175000017500000000025613565705656013435 00000000000000# With MAP suggestion, Hunspell can add missing accents to a word. SET UTF-8 # switch off ngram suggestion for testing MAXNGRAMSUGS 0 MAP 3 MAP uúü MAP öóo MAP ß(ss) hunspell-1.7.2/tests/checkcompoundcase2.wrong0000644000175000017500000000001313565705656016270 00000000000000áoóÓoá hunspell-1.7.2/tests/IJ.good0000644000175000017500000000001013565705656012623 00000000000000ijs IJs hunspell-1.7.2/tests/i68568.wrong0000644000175000017500000000005213565705656013404 00000000000000sant'elia sant'Elia Sant'elia Sant' SANT' hunspell-1.7.2/tests/1706659.dic0000644000175000017500000000003613565705656013001 000000000000003 arbeits/v scheu/Aw farbig/A hunspell-1.7.2/tests/timelimit.aff0000644000175000017500000000005213565705656014130 00000000000000WORDCHARS 01 COMPOUNDMIN 1 COMPOUNDFLAG Y hunspell-1.7.2/tests/Makefile.in0000664000175000017500000013026014353370322013511 00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/visibility.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ check recheck distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` RECHECK_LOGS = $(TEST_LOGS) TEST_SUITE_LOG = test-suite.log LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.dic.log=.log) DIC_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver DIC_LOG_COMPILE = $(DIC_LOG_COMPILER) $(AM_DIC_LOG_FLAGS) \ $(DIC_LOG_FLAGS) DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/test-driver DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CURSESLIB = @CURSESLIB@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HUNSPELL_VERSION_MAJOR = @HUNSPELL_VERSION_MAJOR@ HUNSPELL_VERSION_MINOR = @HUNSPELL_VERSION_MINOR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ READLINELIB = @READLINELIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = suggestiontest TEST_EXTENSIONS = .dic AM_TESTS_ENVIRONMENT = export HUNSPELL=$(top_builddir)/src/tools/hunspell; \ export ANALYZE=$(top_builddir)/src/tools/analyze; \ export LIBTOOL=$(top_builddir)/libtool; DIC_LOG_COMPILER = $(top_srcdir)/tests/test.sh TESTS = \ affixes.dic \ condition.dic \ condition_utf.dic \ base.dic \ base_utf.dic \ allcaps.dic \ allcaps_utf.dic \ allcaps2.dic \ allcaps3.dic \ keepcase.dic \ dotless_i.dic \ i58202.dic \ map.dic \ rep.dic \ sug.dic \ sug2.dic \ wordpair.dic \ sugutf.dic \ phone.dic \ ph.dic \ ph2.dic \ flag.dic \ flaglong.dic \ flagnum.dic \ flagutf8.dic \ slash.dic \ forbiddenword.dic \ nosuggest.dic \ alias.dic \ alias2.dic \ alias3.dic \ breakdefault.dic \ break.dic \ needaffix.dic \ needaffix2.dic \ needaffix3.dic \ needaffix4.dic \ needaffix5.dic \ circumfix.dic \ fogemorpheme.dic \ onlyincompound.dic \ complexprefixes.dic \ complexprefixes2.dic \ complexprefixesutf.dic \ conditionalprefix.dic \ zeroaffix.dic \ utf8.dic \ utf8_bom.dic \ utf8_bom2.dic \ utf8_nonbmp.test \ compoundflag.dic \ compoundrule.dic \ compoundrule2.dic \ compoundrule3.dic \ compoundrule4.dic \ compoundrule5.dic \ compoundrule6.dic \ compoundrule7.dic \ compoundrule8.dic \ compoundaffix.dic \ compoundaffix2.dic \ compoundaffix3.dic \ compoundforbid.dic \ checkcompounddup.dic \ checkcompoundtriple.dic \ simplifiedtriple.dic \ checkcompoundrep.dic \ checkcompoundrep2.dic \ checkcompoundcase2.dic \ checkcompoundcaseutf.dic \ checkcompoundpattern.dic \ checkcompoundpattern2.dic \ checkcompoundpattern3.dic \ checkcompoundpattern4.dic \ utfcompound.dic \ checksharps.dic \ checksharpsutf.dic \ germancompounding.dic \ germancompoundingold.dic \ i35725.dic \ i53643.dic \ i54633.dic \ i54980.dic \ maputf.dic \ reputf.dic \ ignore.dic \ ignoreutf.dic \ right_to_left_mark.dic \ 1592880.dic \ 1695964.dic \ 1463589.dic \ 1463589_utf.dic \ IJ.dic \ i68568.dic \ i68568utf.dic \ 1706659.dic \ 1748408-1.dic \ 1748408-2.dic \ 1748408-3.dic \ 1748408-4.dic \ digits_in_words.dic \ colons_in_words.dic \ ngram_utf_fix.dic \ morph.dic \ 1975530.dic \ fullstrip.dic \ iconv.dic \ iconv2.dic \ oconv.dic \ oconv2.dic \ encoding.dic \ korean.dic \ opentaal_forbiddenword1.dic \ opentaal_forbiddenword2.dic \ opentaal_keepcase.dic \ arabic.dic \ 2970240.dic \ 2970242.dic \ breakoff.dic \ opentaal_cpdpat.dic \ opentaal_cpdpat2.dic \ 2999225.dic \ onlyincompound2.dic \ forceucase.dic \ nepali.dic \ hu.dic \ warn.dic \ timelimit.dic \ ignoresug.dic \ limit-multiple-compounding.dic EXTRA_DIST = \ test.sh \ affixes.aff \ affixes.dic \ affixes.good \ condition.aff \ condition.dic \ condition.good \ condition.wrong \ condition_utf.aff \ condition_utf.dic \ condition_utf.good \ condition_utf.wrong \ base.aff \ base.dic \ base.good \ base.sug \ base.wrong \ base_utf.aff \ base_utf.dic \ base_utf.good \ base_utf.sug \ base_utf.wrong \ allcaps.aff \ allcaps.dic \ allcaps.good \ allcaps.sug \ allcaps.wrong \ allcaps2.aff \ allcaps2.dic \ allcaps2.good \ allcaps2.sug \ allcaps2.wrong \ allcaps3.aff \ allcaps3.dic \ allcaps3.good \ allcaps3.wrong \ allcaps_utf.aff \ allcaps_utf.dic \ allcaps_utf.good \ allcaps_utf.sug \ allcaps_utf.wrong \ keepcase.aff \ keepcase.dic \ keepcase.good \ keepcase.sug \ keepcase.wrong \ dotless_i.aff \ dotless_i.dic \ dotless_i.good \ dotless_i.wrong \ map.aff \ map.dic \ map.sug \ map.wrong \ rep.aff \ rep.dic \ rep.sug \ rep.wrong \ sug.aff \ sug.dic \ sug.sug \ sug.wrong \ sug2.aff \ sug2.dic \ sug2.sug \ sug2.wrong \ wordpair.aff \ wordpair.dic \ wordpair.wrong \ sugutf.aff \ sugutf.dic \ sugutf.sug \ sugutf.wrong \ phone.aff \ phone.dic \ phone.sug \ phone.wrong \ ph.aff \ ph.dic \ ph.sug \ ph.wrong \ ph2.aff \ ph2.dic \ ph2.sug \ ph2.wrong \ alias.aff \ alias.dic \ alias.good \ alias2.aff \ alias2.dic \ alias2.good \ alias2.morph \ alias3.aff \ alias3.dic \ alias3.good \ alias3.morph \ break.aff \ break.dic \ break.good \ break.wrong \ breakdefault.aff \ breakdefault.dic \ breakdefault.good \ breakdefault.sug \ breakdefault.wrong \ circumfix.aff \ circumfix.dic \ circumfix.good \ circumfix.morph \ circumfix.wrong \ fogemorpheme.aff \ fogemorpheme.dic \ fogemorpheme.good \ fogemorpheme.wrong \ onlyincompound.aff \ onlyincompound.dic \ onlyincompound.good \ onlyincompound.sug \ onlyincompound.wrong \ forbiddenword.aff \ forbiddenword.dic \ forbiddenword.good \ forbiddenword.wrong \ nosuggest.aff \ nosuggest.dic \ nosuggest.good \ nosuggest.sug \ nosuggest.wrong \ germancompounding.aff \ germancompounding.dic \ germancompounding.good \ germancompounding.wrong \ germancompoundingold.aff \ germancompoundingold.dic \ germancompoundingold.good \ germancompoundingold.wrong \ needaffix2.aff \ needaffix2.dic \ needaffix2.good \ needaffix2.morph \ needaffix3.aff \ needaffix3.dic \ needaffix3.good \ needaffix3.wrong \ needaffix4.aff \ needaffix4.dic \ needaffix4.good \ needaffix5.aff \ needaffix5.dic \ needaffix5.good \ needaffix5.wrong \ needaffix.aff \ needaffix.dic \ needaffix.good \ needaffix.wrong \ zeroaffix.aff \ zeroaffix.dic \ zeroaffix.good \ zeroaffix.morph \ utf8.aff \ utf8.dic \ utf8.good \ utf8_bom.aff \ utf8_bom.dic \ utf8_bom.good \ utf8_bom2.aff \ utf8_bom2.dic \ utf8_bom2.good \ utf8_nonbmp.aff \ utf8_nonbmp.dic \ utf8_nonbmp.good \ utf8_nonbmp.sug \ utf8_nonbmp.wrong \ utfcompound.aff \ utfcompound.dic \ utfcompound.good \ utfcompound.wrong \ compoundflag.aff \ compoundflag.dic \ compoundflag.good \ compoundflag.wrong \ compoundrule.aff \ compoundrule.dic \ compoundrule.good \ compoundrule.wrong \ compoundrule2.aff \ compoundrule2.dic \ compoundrule2.good \ compoundrule2.wrong \ compoundrule3.aff \ compoundrule3.dic \ compoundrule3.good \ compoundrule3.wrong \ compoundrule4.aff \ compoundrule4.dic \ compoundrule4.good \ compoundrule4.wrong \ compoundrule5.aff \ compoundrule5.dic \ compoundrule5.good \ compoundrule5.morph \ compoundrule5.wrong \ compoundrule6.aff \ compoundrule6.dic \ compoundrule6.good \ compoundrule6.wrong \ compoundrule7.aff \ compoundrule7.dic \ compoundrule7.good \ compoundrule7.wrong \ compoundrule8.aff \ compoundrule8.dic \ compoundrule8.good \ compoundrule8.wrong \ compoundaffix.aff \ compoundaffix.dic \ compoundaffix.good \ compoundaffix.wrong \ compoundaffix2.aff \ compoundaffix2.dic \ compoundaffix2.good \ compoundaffix3.aff \ compoundaffix3.dic \ compoundaffix3.good \ compoundaffix3.wrong \ compoundforbid.aff \ compoundforbid.dic \ compoundforbid.good \ compoundforbid.wrong \ checkcompounddup.aff \ checkcompounddup.dic \ checkcompounddup.good \ checkcompounddup.wrong \ checkcompoundcase.aff \ checkcompoundcase.dic \ checkcompoundcase.good \ checkcompoundcase.wrong \ checkcompoundcase2.aff \ checkcompoundcase2.dic \ checkcompoundcase2.good \ checkcompoundcase2.wrong \ checkcompoundcaseutf.aff \ checkcompoundcaseutf.dic \ checkcompoundcaseutf.good \ checkcompoundcaseutf.wrong \ checkcompoundrep.aff \ checkcompoundrep.dic \ checkcompoundrep.good \ checkcompoundrep.wrong \ checkcompoundrep2.aff \ checkcompoundrep2.dic \ checkcompoundrep2.good \ checkcompoundtriple.aff \ checkcompoundtriple.dic \ checkcompoundtriple.good \ checkcompoundtriple.wrong \ simplifiedtriple.aff \ simplifiedtriple.dic \ simplifiedtriple.good \ simplifiedtriple.wrong \ checkcompoundpattern.aff \ checkcompoundpattern.dic \ checkcompoundpattern.good \ checkcompoundpattern.wrong \ checkcompoundpattern2.aff \ checkcompoundpattern2.dic \ checkcompoundpattern2.good \ checkcompoundpattern2.wrong \ checkcompoundpattern3.aff \ checkcompoundpattern3.dic \ checkcompoundpattern3.good \ checkcompoundpattern3.wrong \ checkcompoundpattern4.aff \ checkcompoundpattern4.dic \ checkcompoundpattern4.good \ checkcompoundpattern4.wrong \ checksharps.aff \ checksharps.dic \ checksharps.good \ checksharps.sug \ checksharps.wrong \ checksharpsutf.aff \ checksharpsutf.dic \ checksharpsutf.good \ checksharpsutf.sug \ checksharpsutf.wrong \ conditionalprefix.aff \ conditionalprefix.dic \ conditionalprefix.good \ conditionalprefix.morph \ conditionalprefix.wrong \ flaglong.aff \ flaglong.dic \ flaglong.good \ flagnum.aff \ flagnum.dic \ flagnum.good \ flag.aff \ flag.dic \ flag.good \ flagutf8.aff \ flagutf8.dic \ flagutf8.good \ complexprefixes.aff \ complexprefixes.dic \ complexprefixes.good \ complexprefixes.wrong \ complexprefixes2.aff \ complexprefixes2.dic \ complexprefixes2.good \ complexprefixesutf.aff \ complexprefixesutf.dic \ complexprefixesutf.good \ complexprefixesutf.wrong \ i35725.aff \ i35725.dic \ i35725.good \ i35725.sug \ i35725.wrong \ i53643.aff \ i53643.dic \ i53643.good \ i53643.wrong \ i54633.aff \ i54633.dic \ i54633.good \ i54633.sug \ i54633.wrong \ i54980.aff \ i54980.dic \ i54980.good \ i58202.aff \ i58202.dic \ i58202.good \ i58202.sug \ i58202.wrong \ maputf.aff \ maputf.dic \ maputf.sug \ maputf.wrong \ reputf.aff \ reputf.dic \ reputf.sug \ reputf.wrong \ slash.aff \ slash.dic \ slash.good \ ignore.aff \ ignore.dic \ ignore.good \ ignoreutf.aff \ ignoreutf.dic \ ignoreutf.good \ right_to_left_mark.aff \ right_to_left_mark.dic \ right_to_left_mark.good \ 1592880.aff \ 1592880.dic \ 1592880.good \ 1695964.aff \ 1695964.dic \ 1695964.sug \ 1695964.wrong \ 1463589.aff \ 1463589.dic \ 1463589.sug \ 1463589.wrong \ 1463589_utf.aff \ 1463589_utf.dic \ 1463589_utf.sug \ 1463589_utf.wrong \ IJ.aff \ IJ.dic \ IJ.good \ IJ.sug \ IJ.wrong \ i68568.aff \ i68568.dic \ i68568.wrong \ i68568utf.aff \ i68568utf.dic \ i68568utf.wrong \ 1706659.aff \ 1706659.dic \ 1706659.wrong \ 1748408-1.aff \ 1748408-1.dic \ 1748408-1.good \ 1748408-2.aff \ 1748408-2.dic \ 1748408-2.good \ 1748408-3.aff \ 1748408-3.dic \ 1748408-3.good \ 1748408-4.aff \ 1748408-4.dic \ 1748408-4.good \ digits_in_words.aff \ digits_in_words.dic \ digits_in_words.wrong \ colons_in_words.aff \ colons_in_words.dic \ ngram_utf_fix.aff \ ngram_utf_fix.dic \ ngram_utf_fix.good \ ngram_utf_fix.sug \ ngram_utf_fix.wrong \ morph.aff \ morph.dic \ morph.good \ morph.morph \ 1975530.aff \ 1975530.dic \ 1975530.good \ 1975530.wrong \ fullstrip.aff \ fullstrip.dic \ fullstrip.good \ iconv.aff \ iconv.dic \ iconv.good \ iconv2.aff \ iconv2.dic \ iconv2.good \ oconv.aff \ oconv.dic \ oconv.good \ oconv.sug \ oconv.wrong \ oconv2.aff \ oconv2.dic \ oconv2.good \ oconv2.morph \ oconv2.root \ oconv2.test \ encoding.aff \ encoding.dic \ encoding.good \ opentaal_forbiddenword1.aff \ opentaal_forbiddenword1.dic \ opentaal_forbiddenword1.good \ opentaal_forbiddenword1.sug \ opentaal_forbiddenword1.wrong \ opentaal_forbiddenword2.aff \ opentaal_forbiddenword2.dic \ opentaal_forbiddenword2.good \ opentaal_forbiddenword2.sug \ opentaal_forbiddenword2.wrong \ opentaal_forbiddenword2.aff \ opentaal_forbiddenword2.dic \ opentaal_forbiddenword2.good \ opentaal_forbiddenword2.sug \ opentaal_forbiddenword2.wrong \ opentaal_keepcase.aff \ opentaal_keepcase.dic \ opentaal_keepcase.good \ opentaal_keepcase.sug \ opentaal_keepcase.wrong \ arabic.aff \ arabic.dic \ arabic.wrong \ 2970240.aff \ 2970240.dic \ 2970240.good \ 2970240.wrong \ 2970242.aff \ 2970242.dic \ 2970242.good \ 2970242.wrong \ breakoff.aff \ breakoff.dic \ breakoff.good \ breakoff.wrong \ opentaal_cpdpat.aff \ opentaal_cpdpat.dic \ opentaal_cpdpat.good \ opentaal_cpdpat.wrong \ opentaal_cpdpat2.aff \ opentaal_cpdpat2.dic \ opentaal_cpdpat2.good \ opentaal_cpdpat2.wrong \ 2999225.aff \ 2999225.dic \ 2999225.good \ korean.aff \ korean.dic \ korean.good \ korean.wrong \ onlyincompound2.aff \ onlyincompound2.dic \ onlyincompound2.good \ onlyincompound2.wrong \ forceucase.aff \ forceucase.dic \ forceucase.good \ forceucase.sug \ forceucase.wrong \ nepali.aff \ nepali.dic \ nepali.good \ hu.aff \ hu.dic \ hu.good \ warn.aff \ warn.dic \ warn.good \ timelimit.aff \ timelimit.dic \ timelimit.good \ timelimit.wrong \ ignoresug.aff \ ignoresug.dic \ ignoresug.good \ ignoresug.morph \ limit-multiple-compounding.aff \ limit-multiple-compounding.dic \ limit-multiple-compounding.good \ limit-multiple-compounding.wrong \ \ utf8_nonbmp.test all: all-recursive .SUFFIXES: .SUFFIXES: .dic .dic$(EXEEXT) .log .trs $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ if test -n "$(PACKAGE_BUGREPORT)"; then \ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? utf8_nonbmp.test.log: utf8_nonbmp.test @p='utf8_nonbmp.test'; \ b='utf8_nonbmp.test'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .dic.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(DIC_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_DIC_LOG_DRIVER_FLAGS) $(DIC_LOG_DRIVER_FLAGS) -- $(DIC_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.dic$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(DIC_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_DIC_LOG_DRIVER_FLAGS) $(DIC_LOG_DRIVER_FLAGS) -- $(DIC_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) check-am install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-TESTS check-am clean clean-generic clean-libtool \ clean-local cscopelist-am ctags ctags-am distclean \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ recheck tags tags-am uninstall uninstall-am .PRECIOUS: Makefile clean-local: -rm -rf testSubDir # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: hunspell-1.7.2/tests/compoundrule3.dic0000644000175000017500000000001713565705656014736 000000000000003 a/A b/B c/C hunspell-1.7.2/tests/i68568.dic0000644000175000017500000000001113565705656013002 000000000000001 Elia/a hunspell-1.7.2/tests/checkcompounddup.dic0000644000175000017500000000001613565705656015471 000000000000002 foo/A bar/A hunspell-1.7.2/tests/2970240.wrong0000644000175000017500000000002013565705656013355 00000000000000lastmiddlefirst hunspell-1.7.2/tests/oconv.dic0000644000175000017500000000003213565705656013260 000000000000003 bébé dádá aábcdeé hunspell-1.7.2/tests/base_utf.sug0000644000175000017500000000016613565705656013773 00000000000000looked, look text hello said rotten day, rotten-day, rotten tomorrow seven NASA horrifying speech suggest Imply IMPLY hunspell-1.7.2/tests/warn.dic0000644000175000017500000000001513565705656013104 000000000000001 foo/WA bar hunspell-1.7.2/tests/germancompounding.good0000644000175000017500000000055313565705656016051 00000000000000Computer Computern Arbeit Arbeits- Computerarbeit Computerarbeits- Arbeitscomputer Computercomputer Computercomputern Arbeitscomputern Computerarbeitscomputer Computerarbeitscomputern Arbeitscomputercomputer Computercomputerarbeit Arbeitscomputerarbeit Arbeitsarbeitsarbeit Computerarbeitsarbeit Computerarbeits-Computer Computerarbeits-Computern Computer-Arbeit hunspell-1.7.2/tests/allcaps_utf.sug0000644000175000017500000000003713565705656014475 00000000000000OpenOffice.org UNICEF UNICEF's hunspell-1.7.2/tests/iconv.aff0000644000175000017500000000027313565705656013256 00000000000000# input conversion (accept comma acuted letters also with cedilla, # as de facto replacement of the Romanian standard) SET UTF-8 ICONV 4 ICONV ş ș ICONV ţ ț ICONV Ş Ș ICONV Ţ Ț hunspell-1.7.2/tests/conditionalprefix.wrong0000644000175000017500000000002113565705656016250 00000000000000undrink undrinks hunspell-1.7.2/tests/ph.wrong0000644000175000017500000000010413565705656013140 00000000000000alot inspite whta waht wensday wendsay Wensday Wendsay wich omg OMG hunspell-1.7.2/tests/allcaps2.good0000644000175000017500000000003013565705656014024 00000000000000iPod IPOD ipodos IPODOS hunspell-1.7.2/tests/needaffix5.aff0000644000175000017500000000022313565705656014151 00000000000000# on affixes NEEDAFFIX X SFX A Y 2 SFX A 0 suf/B . SFX A 0 pseudosuf/XB . SFX B Y 1 SFX B 0 bar . PFX C Y 2 PFX C 0 pre . PFX C 0 pseudopre/X . hunspell-1.7.2/tests/allcaps.sug0000644000175000017500000000003713565705656013617 00000000000000OpenOffice.org UNICEF UNICEF's hunspell-1.7.2/tests/1463589.wrong0000644000175000017500000000007713565705656013405 00000000000000kuhlschrank kuehlschrank kühlschrank Kuhlschrank Kuehlschrank hunspell-1.7.2/tests/checkcompoundrep2.dic0000664000175000017500000000002614353255247015544 000000000000002 fa/x ajtó/x fojtó hunspell-1.7.2/tests/1463589_utf.sug0000644000175000017500000000010113565705656013711 00000000000000Kühlschrank Kühlschrank Kühlschrank Kühlschrank Kühlschrank hunspell-1.7.2/tests/checksharps.aff0000644000175000017500000000010713565705656014432 00000000000000# test - SS special capitalizing CHECKSHARPS WORDCHARS . KEEPCASE k hunspell-1.7.2/tests/opentaal_forbiddenword2.aff0000644000175000017500000000007513565705656016735 00000000000000TRY r FORBIDDENWORD F COMPOUNDFLAG W SFX S Y 1 SFX S 0 s . hunspell-1.7.2/tests/breakoff.aff0000644000175000017500000000017013565705656013713 00000000000000# switch off default word break at hyphens and n-dashes by BREAK 0 SET UTF-8 MAXNGRAMSUGS 0 WORDCHARS - TRY ot BREAK 0 hunspell-1.7.2/tests/utf8.aff0000644000175000017500000000020113565705656013015 00000000000000SET UTF-8 SFX A Y 7 SFX A 0 őő . SFX A 0 ő o SFX A 0 ő ó SFX A ó ő ó SFX A ó őoo ó SFX A o őo o SFX A 0 ó [abcdó] hunspell-1.7.2/tests/nosuggest.sug0000644000175000017500000000000013565705656014204 00000000000000hunspell-1.7.2/tests/zeroaffix.dic0000644000175000017500000000003413565705656014133 000000000000002 foo/XA "un alunno" REP ^vinten$ vinte_e_un REP s 's SFX A Y 1 SFX A 0 's . WORDCHARS ' hunspell-1.7.2/tests/breakoff.dic0000644000175000017500000000003713565705656013720 000000000000003 foo bar free scott scot-free hunspell-1.7.2/tests/breakoff.good0000644000175000017500000000002213565705656014103 00000000000000foo bar scot-free hunspell-1.7.2/tests/utfcompound.aff0000644000175000017500000000004713565705656014502 00000000000000SET UTF-8 COMPOUNDMIN 3 COMPOUNDFLAG A hunspell-1.7.2/tests/base.sug0000644000175000017500000000015213565705656013110 00000000000000looked, look text hello said rotten day, rotten-day, rotten tomorrow seven NASA horrifying speech suggest hunspell-1.7.2/tests/digits_in_words.wrong0000644000175000017500000000001113565705656015715 00000000000000-jährig hunspell-1.7.2/tests/flaglong.good0000644000175000017500000000007213565705656014122 00000000000000foo foos foosbar foosbaz unfoo unfoos unfoosbar unfoosbaz hunspell-1.7.2/tests/break.good0000644000175000017500000000021613565705656013415 00000000000000foo bar fox-bax foo-bar foo–bar foo-bar-foo-bar foo-bar–foo-bar bar-baz baz-foo foo-bar-foo-bar-foo-bar-foo-bar-foo-bar e-mail e-mail-foo hunspell-1.7.2/tests/wordpair.aff0000644000175000017500000000020213565705656013757 00000000000000# a dictionary word pair separated by space # will avoid its recognition without space # at compound word analysis COMPOUNDFLAG Y hunspell-1.7.2/tests/conditionalprefix.good0000644000175000017500000000007313565705656016053 00000000000000drink drinks drinkable drinkables undrinkable undrinkables hunspell-1.7.2/tests/oconv2.root0000644000175000017500000000000313565705656013564 00000000000000aa hunspell-1.7.2/tests/keepcase.sug0000644000175000017500000000005413565705656013757 00000000000000foo foo Bar Bar, baz. baz. baz. Quux. Quux. hunspell-1.7.2/tests/checkcompoundcase2.aff0000644000175000017500000000007013565705656015673 00000000000000# check extended ascii CHECKCOMPOUNDCASE COMPOUNDFLAG A hunspell-1.7.2/tests/sugutf.aff0000644000175000017500000000063513565705656013457 00000000000000# new suggestion methods of Hunspell 1.5: # capitalization: nasa -> NASA # long swap: permenant -> permanent # long mov: Ghandi -> Gandhi # double two characters: vacacation -> vacation # space with REP: "alot" -> "a lot" ("a lot" need to be in the dic file.) SET UTF-8 # switch off ngram suggestion for testing MAXNGRAMSUGS 0 REP 1 REP alot a_lot KEY qwertzuiop|asdfghjkl|yxcvbnm|aq WORDCHARS . FORBIDDENWORD ? hunspell-1.7.2/tests/arabic.wrong0000644000175000017500000000000313565705656013750 00000000000000ـ hunspell-1.7.2/tests/1463589.aff0000644000175000017500000000017213565705656013001 00000000000000# capitalized ngram suggestion test data for # Sf.net Bug ID 1463589, reported by Frederik Fouvry. MAXNGRAMSUGS 1 LANG de hunspell-1.7.2/tests/condition_utf.good0000644000175000017500000000032513565705656015176 00000000000000óőó óőósuf1 pre1óőó óőósuf2 pre2óőó óőósuf3 pre3óőó óőósuf6 pre6óőó óőósuf7 pre7óőó óőósuf10 pre10óőó óőósuf13 pre13óőó óőósuf14 pre14óőó óőósuf16 pre16óőó hunspell-1.7.2/tests/forceucase.wrong0000644000175000017500000000002113565705656014646 00000000000000foobaz foobarbaz hunspell-1.7.2/tests/compoundrule.aff0000644000175000017500000000005613565705656014653 00000000000000COMPOUNDMIN 1 COMPOUNDRULE 1 COMPOUNDRULE ABC hunspell-1.7.2/tests/forbiddenword.good0000664000175000017500000000001514352145511015137 00000000000000foo bar kg cmhunspell-1.7.2/tests/1695964.aff0000644000175000017500000000032013565705656013000 00000000000000# fix NEEDAFFIX homonym suggestion. # Sf.net Bug ID 1695964, reported by Björn Jacke. TRY esianrtolcdugmphbyfvkwESIANRTOLCDUGMPHBYFVKW MAXNGRAMSUGS 0 NEEDAFFIX h SFX S Y 1 SFX S 0 s . SFX e Y 1 SFX e 0 e . hunspell-1.7.2/tests/conditionalprefix.morph0000644000175000017500000000120413565705656016245 00000000000000> drink analyze(drink) = st:drink po:verb analyze(drink) = st:drink po:noun stem(drink) = drink > drinks analyze(drinks) = st:drink po:verb is:3SGV analyze(drinks) = st:drink po:noun is:PL stem(drinks) = drink > drinkable analyze(drinkable) = st:drink po:verb ds:DER_V_ADJ_ABLE stem(drinkable) = drinkable > drinkables analyze(drinkables) = st:drink po:verb ds:DER_V_ADJ_ABLE is:PL stem(drinkables) = drinkable > undrinkable analyze(undrinkable) = ip:un st:drink po:verb ds:DER_V_ADJ_ABLE stem(undrinkable) = drinkable > undrinkables analyze(undrinkables) = ip:un st:drink po:verb ds:DER_V_ADJ_ABLE is:PL stem(undrinkables) = drinkable hunspell-1.7.2/tests/1748408-1.dic0000664000175000017500000000000614352145647013125 00000000000000dummy hunspell-1.7.2/tests/utf8_bom2.dic0000644000175000017500000000001713565705656013744 000000000000001 apéritif hunspell-1.7.2/tests/alias.dic0000644000175000017500000000001013565705656013221 000000000000001 foo/1 hunspell-1.7.2/tests/needaffix2.good0000644000175000017500000000002713565705656014344 00000000000000foo bar foobar barfoo hunspell-1.7.2/tests/sug2.dic0000644000175000017500000000010213565705656013012 0000000000000011 a lot a lot alto in spite in spite inspire scot free scot-free hunspell-1.7.2/tests/morph.good0000644000175000017500000000047313565705656013463 00000000000000drink drinks drinkable drinkables undrinkable undrinkables drank drunk phenomenon phenomena drink eat drink eats drink ate drink eaten drink eatable drink eatables drink phenomena drinks eat drinks eats drinks ate drinks eaten drinks eatable drinks eatables drinks phenomena undrinkable phenomena phenomenon drinks hunspell-1.7.2/tests/checkcompoundpattern4.aff0000644000175000017500000000027613565705656016447 00000000000000# sandhi in Telugu writing system, based on the Kiran Chittella's example COMPOUNDFLAG x COMPOUNDMIN 1 CHECKCOMPOUNDPATTERN 2 CHECKCOMPOUNDPATTERN a/A u/A O CHECKCOMPOUNDPATTERN u/B u/B u hunspell-1.7.2/tests/alias.good0000644000175000017500000000002413565705656013417 00000000000000foo foox fooy fooyx hunspell-1.7.2/tests/right_to_left_mark.good0000644000175000017500000000031713565705656016176 00000000000000‏ط‏ي‏ر ‏ف‏ت‏ح‏ة ‏ض‏م‏ة ‏ك‏س‏ر‏ة ‏ف‏ت‏ح‏ت‏ا‏ن ‏ض‏م‏ت‏ا‏ن ‏ك‏س‏ر‏ت‏ا‏ن ‏ش‏د‏ة ‏س‏ك‏و‏ن hunspell-1.7.2/tests/ngram_utf_fix.good0000644000175000017500000000001713565705656015160 00000000000000человек hunspell-1.7.2/tests/utfcompound.good0000644000175000017500000000005613565705656014676 00000000000000foobar barfoo foobarfoo fóóáár áárfóó hunspell-1.7.2/tests/ngram_utf_fix.dic0000644000175000017500000000003713565705656014771 000000000000001 человек/2022,2000,101 hunspell-1.7.2/tests/1463589.sug0000644000175000017500000000010113565705656013033 00000000000000Kühlschrank Kühlschrank Kühlschrank Kühlschrank Kühlschrank hunspell-1.7.2/tests/utf8_nonbmp.good0000644000175000017500000000004113565705656014564 00000000000000𐏑 𐏒 𐏒𐏑 𐏒𐏒 hunspell-1.7.2/tests/ignore.dic0000644000175000017500000000002413565705656013420 000000000000002 xmpl expression/A hunspell-1.7.2/tests/i58202.wrong0000644000175000017500000000011713565705656013366 00000000000000fOO BAr baz BOo foobar fooBar Foobar FooBar fooBaz FooBaz Bazfoo BazFoo BazBoo hunspell-1.7.2/tests/right_to_left_mark.dic0000644000175000017500000000015113565705656016001 000000000000009 طِير فَتحة ضُمة كِسرة فتحًتان ضمتانٌ كسرتاٍن شدّة سكوْن hunspell-1.7.2/tests/compoundforbid.aff0000644000175000017500000000054313565705656015152 00000000000000# Dictionary words with COMPOUNDFORBIDFLAG are # removed from the beginning and middle of # compound words, overriding the effect of # COMPOUNDPERMITFLAG. # # See compoundaffix3 test for basic usage # of COMPOUNDFORBIDFLAG. COMPOUNDFLAG X COMPOUNDPERMITFLAG Y COMPOUNDFORBIDFLAG Z SFX S Y 2 SFX S 0 bar/YX . SFX S 0 baz/YX . hunspell-1.7.2/tests/compoundaffix3.wrong0000644000175000017500000000011313565705656015456 00000000000000prefoobarsuf foosufbar fooprebar foosufprebar fooprebarsuf prefooprebarsuf hunspell-1.7.2/tests/opentaal_forbiddenword2.dic0000644000175000017500000000004413565705656016734 000000000000003 foo/WS word/W bar/WS foowordbar/FShunspell-1.7.2/tests/checkcompoundcase.dic0000644000175000017500000000003013565705656015610 000000000000004 foo/A Bar/A BAZ/A -/A hunspell-1.7.2/tests/compoundforbid.wrong0000644000175000017500000000004413565705656015546 00000000000000fooexample examplefoo foobazexample hunspell-1.7.2/tests/compoundaffix3.good0000644000175000017500000000004313565705656015254 00000000000000foo foofoo prefoo foosuf prefoosuf hunspell-1.7.2/tests/opentaal_cpdpat.wrong0000644000175000017500000000002013565705656015664 00000000000000schoonheidsport hunspell-1.7.2/tests/alias3.good0000644000175000017500000000004313565705656013503 00000000000000ouro metouro tekmetouro ouro_test_ hunspell-1.7.2/tests/needaffix3.aff0000644000175000017500000000012713565705656014152 00000000000000# neeadaffix on affixes NEEDAFFIX X SFX A Y 1 SFX A 0 s/XB . SFX B Y 1 SFX B 0 baz . hunspell-1.7.2/tests/alias3.dic0000644000175000017500000000001413565705656013310 000000000000001 ouro/BC 4 hunspell-1.7.2/tests/1706659.aff0000644000175000017500000000031113565705656012772 00000000000000# test COMPOUNDRULE bug reported by Björn Jacke SET ISO8859-1 TRY esijanrtolcdugmphbyfvkwqxz SFX A Y 5 SFX A 0 e . SFX A 0 er . SFX A 0 en . SFX A 0 em . SFX A 0 es . COMPOUNDRULE 1 COMPOUNDRULE vw hunspell-1.7.2/tests/ngram_utf_fix.sug0000644000175000017500000000001713565705656015026 00000000000000человек hunspell-1.7.2/tests/utf8_nonbmp.wrong0000644000175000017500000000003413565705656014772 00000000000000𐏑𐏒𐏒 𐏑𐏒𐏒 hunspell-1.7.2/tests/i58202.good0000644000175000017500000000005013565705656013156 00000000000000foo bar Foo Bar Baz Boo FOO BAR BAZ BOO hunspell-1.7.2/tests/flaglong.dic0000644000175000017500000000001313565705656013724 000000000000001 foo/zx09 hunspell-1.7.2/tests/keepcase.aff0000644000175000017500000000006313565705656013715 00000000000000# keep case in signed words KEEPCASE A WORDCHARS . hunspell-1.7.2/tests/checkcompoundtriple.wrong0000644000175000017500000000002113565705656016571 00000000000000fooopera bareeel hunspell-1.7.2/tests/i53643.dic0000644000175000017500000000000613565705656012772 000000000000001 foo hunspell-1.7.2/tests/morph.dic0000644000175000017500000000046013565705656013266 000000000000009 drink/S po:noun drink/RQ po:verb al:drank al:drunk ts:present drank po:verb st:drink is:past_1 drunk po:verb st:drink is:past_2 eat/RQ po:verb al:ate al:eaten ts:present ate po:verb st:eat is:past_1 eaten po:verb st:eat is:past_2 phenomenon po:noun al:phenomena phenomena po:noun st:phenomenon is:plur hunspell-1.7.2/tests/condition_utf.dic0000644000175000017500000000001413565705656015000 000000000000001 óőó/SP hunspell-1.7.2/tests/1592880.dic0000644000175000017500000000002513565705656012776 000000000000003 weg/Qoz weg/P wege hunspell-1.7.2/tests/digits_in_words.aff0000644000175000017500000000040213565705656015321 00000000000000# Digits in words, handled by COMPOUNDRULE. # 1-jährig, 2-jährig, 100-jährig etc. SET UTF-8 COMPOUNDMIN 1 # recognize ab, aab, aaab etc. compounds (a=digits, b=-jährig, see dic file) COMPOUNDRULE 1 COMPOUNDRULE a*b ONLYINCOMPOUND c WORDCHARS 0123456789- hunspell-1.7.2/tests/1695964.dic0000644000175000017500000000002113565705656013001 000000000000002 Mull/he Mull/S hunspell-1.7.2/tests/flagnum.dic0000644000175000017500000000002013565705656013562 000000000000001 foo/999,54321 hunspell-1.7.2/tests/utf8_nonbmp.aff0000644000175000017500000000001213565705656014366 00000000000000SET UTF-8 hunspell-1.7.2/tests/1975530.wrong0000644000175000017500000000001113565705656013363 00000000000000تيار hunspell-1.7.2/tests/alias2.morph0000644000175000017500000000050613565705656013703 00000000000000> foo analyze(foo) = st:foo po:noun xx:other_data stem(foo) = foo > foox analyze(foox) = st:foo po:noun xx:other_data is:affix_x stem(foox) = foo > fooy analyze(fooy) = st:foo po:noun xx:other_data ds:affix_y stem(fooy) = fooy > fooyx analyze(fooyx) = st:foo po:noun xx:other_data ds:affix_y is:affix_x stem(fooyx) = fooy hunspell-1.7.2/tests/conditionalprefix.dic0000644000175000017500000000004313565705656015657 000000000000002 drink/RQ po:verb drink/S po:noun hunspell-1.7.2/tests/zeroaffix.aff0000644000175000017500000000022513565705656014132 00000000000000PSEUDOROOT X COMPOUNDFLAG Y SFX A Y 1 SFX A 0 0 . > SFX B Y 1 SFX B 0 0 . > SFX C Y 2 SFX C 0 0/XAB . SFX C 0 baz/XAB . hunspell-1.7.2/tests/alias3.aff0000644000175000017500000000032013565705656013305 00000000000000# morph. aliases with complex prefixes COMPLEXPREFIXES WORDCHARS _ AM 4 AM affix_1/ AM affix_2/ AM /suffix_1 AM [stem_1] PFX A Y 1 PFX A 0 tek . 1 PFX B Y 1 PFX B 0 met/A . 2 SFX C Y 1 SFX C 0 _test_ . 3 hunspell-1.7.2/tests/korean.dic0000644000175000017500000000004213565705656013414 000000000000002 들어오세요 안녕하세요 hunspell-1.7.2/tests/dotless_i.good0000644000175000017500000000007313565705656014317 00000000000000Diyarbakır DİYARBAKIR iç İç ışık Işık İÇ IŞIK hunspell-1.7.2/tests/opentaal_cpdpat2.aff0000644000175000017500000000065713565705656015366 00000000000000# Test file based on OpenTaal's Dutch dictionary, coded by Ruud Baars WORDCHARS - NOSPLITSUGS FLAG long COMPOUNDBEGIN Ca COMPOUNDMIDDLE Cb COMPOUNDEND Cc COMPOUNDPERMITFLAG Cp ONLYINCOMPOUND Cx CHECKCOMPOUNDPATTERN 2 CHECKCOMPOUNDPATTERN 0/Ch /Xs CHECKCOMPOUNDPATTERN 0/Xm /Xm SFX CA Y 2 SFX CA 0 /CaCp . SFX CA 0 -/CaCp . SFX CB Y 2 SFX CB 0 /CbCp . SFX CB 0 -/CbCp . SFX Ch Y 2 SFX Ch 0 s/CaCbCxCp . SFX Ch 0 s-/CaCbCcCp . hunspell-1.7.2/tests/compoundrule4.wrong0000644000175000017500000000003413565705656015333 000000000000001th 2th 3th 10001th 10011st hunspell-1.7.2/tests/germancompounding.dic0000644000175000017500000000005513565705656015655 000000000000004 Arbeit/A- Computer/BC- -/W Arbeitsnehmer/Z hunspell-1.7.2/tests/oconv2.morph0000644000175000017500000000006013565705656013731 00000000000000> aas analyze(aas) = st:aa fl:A stem(aas) = aa hunspell-1.7.2/tests/base_utf.wrong0000644000175000017500000000014013565705656014321 00000000000000loooked texxt hlelo seid rottenday tomorow seeeven Nasa horrorfying peech sugesst İmply İMPLY hunspell-1.7.2/tests/condition.wrong0000644000175000017500000000027713565705656014532 00000000000000ofosuf4 pre4ofo ofosuf5 pre5ofo ofosuf8 pre8ofo ofosuf9 pre9ofo ofosuf11 pre10ofo pre11ofo ofosuf12 pre12ofo ofosuf15 pre15ofo ofosuf17 pre17ofo ofosuf18 pre18ofo entertainning gninnianretne hunspell-1.7.2/tests/complexprefixes2.dic0000644000175000017500000000002413565705656015434 000000000000001 ouro/BC [stem_1] hunspell-1.7.2/tests/oconv.sug0000644000175000017500000000003013565705656013315 00000000000000BÉBÉ DÁDÁ AÁBCDEÉ hunspell-1.7.2/tests/compoundrule6.aff0000644000175000017500000000011013565705656014730 00000000000000COMPOUNDMIN 1 COMPOUNDRULE 2 COMPOUNDRULE A*A COMPOUNDRULE A*AAB*BBBC*C hunspell-1.7.2/tests/zeroaffix.good0000644000175000017500000000001713565705656014325 00000000000000bar foo barbaz hunspell-1.7.2/tests/phone.sug0000644000175000017500000000010113565705656013301 00000000000000Brasilia, Xxxxxxxxxx, Brilliant, Brazilian, Brassily, Brilliance hunspell-1.7.2/tests/checksharps.sug0000644000175000017500000000002113565705656014467 00000000000000MÜSSIG, müßig hunspell-1.7.2/tests/allcaps3.aff0000644000175000017500000000011713565705656013637 00000000000000# homonym support WORDCHARS ' SFX s N 1 SFX s 0 s . SFX S N 1 SFX S 0 's . hunspell-1.7.2/tests/compoundrule8.aff0000644000175000017500000000031313565705656014737 00000000000000# English ordinal numbers (parenthesized numerical flags) FLAG num WORDCHARS 0123456789 COMPOUNDMIN 1 ONLYINCOMPOUND 1000 COMPOUNDRULE 2 COMPOUNDRULE (1001)*(1002)(2001) COMPOUNDRULE (1001)*(2002)(2000) hunspell-1.7.2/tests/ph2.wrong0000644000175000017500000000021013565705656013220 00000000000000bar baz foobar bazstem stembaz stembazstem forbiddenroot forbiddenroot's rootforbiddenroot prity pritiest fubarö fubarőt hepy hepiest hunspell-1.7.2/tests/opentaal_forbiddenword2.wrong0000644000175000017500000000006613565705656017335 00000000000000foowordbar foowordbars foowordba foowordbas barwodfoo hunspell-1.7.2/tests/breakdefault.aff0000644000175000017500000000013213565705656014563 00000000000000# default word break at hyphens and n-dashes SET UTF-8 MAXNGRAMSUGS 0 WORDCHARS - TRY ot hunspell-1.7.2/tests/onlyincompound2.good0000644000175000017500000000003113565705656015463 00000000000000foo foopseudo pseudosfoo hunspell-1.7.2/tests/sug.sug0000644000175000017500000000020013565705656012766 00000000000000NASA Gandhi grateful permanent vacation a lot, lot in spite, inspire permanent. Vacation have which Gandhi McDonald permanent hunspell-1.7.2/tests/1975530.aff0000644000175000017500000000010213565705656012764 00000000000000SET UTF-8 IGNORE ٌٍَُِّْـ PFX x N 1 PFX x أ ت أ[^ي] hunspell-1.7.2/tests/i68568.aff0000644000175000017500000000015013565705656013003 00000000000000# Sant'Elia -> SANT'ELIA (Italian) # OpenOffice.org Issue 68658 PFX a Y 1 PFX a 0 Sant' E WORDCHARS ' hunspell-1.7.2/tests/allcaps3.wrong0000644000175000017500000000003413565705656014235 00000000000000unesco unesco's nasa nasa's hunspell-1.7.2/tests/germancompoundingold.wrong0000644000175000017500000000160113565705656016747 00000000000000computer computern arbeit Arbeits arbeits ComputerArbeit ComputernArbeit Computernarbeit ComputerArbeits Arbeitcomputer Arbeitcomputern ArbeitsComputer ArbeitsComputern Computerarbeitcomputer ComputerArbeitcomputer ComputerArbeitscomputer Computerarbeitcomputern ComputerArbeitcomputern ComputerArbeitscomputern Arbeitscomputerarbeits Arbeitscomputernarbeits Computerarbeits-computer Arbeitsnehmer computers computern computernarbeit computernArbeit computerArbeit computerArbeits arbeitcomputer arbeitsComputer computerarbeitcomputer computerArbeitcomputer computerArbeitscomputer arbeitscomputerarbeits computerarbeits-computer arbeitsnehmer computernarbeit computernArbeit arbeits- computerarbeit computerarbeits- arbeitscomputer arbeitscomputern computerarbeitscomputer computerarbeitscomputern computerarbeitscomputers arbeitscomputerarbeit computerarbeits-Computer computerarbeits-Computern hunspell-1.7.2/tests/i53643.aff0000644000175000017500000000007013565705656012770 00000000000000# check numbers with separators WORDCHARS 0123456789.-, hunspell-1.7.2/tests/needaffix4.good0000644000175000017500000000002713565705656014346 00000000000000foo bar foobar barfoo hunspell-1.7.2/tests/1463589.dic0000644000175000017500000000001613565705656013001 000000000000001 Khlschrank hunspell-1.7.2/tests/sugutf.wrong0000644000175000017500000000014713565705656014055 00000000000000nasa Ghandi greatful permenant vacacation alot permanent.Vacation ahev hwihc GAndhi Mcdonald permqnent hunspell-1.7.2/tests/germancompoundingold.aff0000644000175000017500000000320213565705656016346 00000000000000# German compounding # handle special casing of German sharp s CHECKSHARPS # compound flags COMPOUNDBEGIN U COMPOUNDMIDDLE V COMPOUNDEND W # Prefixes are allowed at the beginning of compounds, # suffixes are allowed at the end of compounds by default: # (prefix)?(root)+(affix)? # Affixes with COMPOUNDPERMITFLAG may be inside of compounds. COMPOUNDPERMITFLAG P # for German fogemorphemes (Fuge-element) # Hint: ONLYINCOMPOUND is not required everywhere, but the # checking will be a little faster with it. ONLYINCOMPOUND X # for decapitalizing nouns with fogemorphemes CIRCUMFIX Y # for handling Fuge-elements with dashes (Arbeits-) # dash will be a special word COMPOUNDMIN 1 WORDCHARS - # compound settings and fogemorpheme for `Arbeit' SFX A Y 3 SFX A 0 s/UPX . SFX A 0 s/VPXDY . SFX A 0 0/WXDY . # compound settings for `Computer' SFX B Y 2 SFX B 0 0/UPX . SFX B 0 0/VWPXDY . # a suffix for `Computer' SFX C Y 2 SFX C 0 n . SFX C 0 n/WXDY . # for forbid exceptions (*Arbeitsnehmer) FORBIDDENWORD Z # dash prefix for compounds with dash (Arbeits-Computer) PFX - Y 2 PFX - 0 -/PUVW . PFX - 0 -/PY . # decapitalizing prefix # circumfix for positioning in compounds PFX D Y 29 PFX D A a/PXY A PFX D /PXY PFX D B b/PXY B PFX D C c/PXY C PFX D D d/PXY D PFX D E e/PXY E PFX D F f/PXY F PFX D G g/PXY G PFX D H h/PXY H PFX D I i/PXY I PFX D J j/PXY J PFX D K k/PXY K PFX D L l/PXY L PFX D M m/PXY M PFX D N n/PXY N PFX D O o/PXY O PFX D /PXY PFX D P p/PXY P PFX D Q q/PXY Q PFX D R r/PXY R PFX D S s/PXY S PFX D T t/PXY T PFX D U u/PXY U PFX D /PXY PFX D V v/PXY V PFX D W w/PXY W PFX D X x/PXY X PFX D Y y/PXY Y PFX D Z z/PXY Z hunspell-1.7.2/tests/breakdefault.wrong0000664000175000017500000000005414352145424015152 00000000000000scot sco-free fo-bar foo-fo-bar foo-foo-fo -hunspell-1.7.2/tests/break.aff0000644000175000017500000000020313565705656013215 00000000000000# word break points test, recursive break at dash and n-dash SET UTF-8 BREAK 2 BREAK - BREAK – WORDCHARS -– FORBIDDENWORD ! hunspell-1.7.2/tests/1748408-3.good0000664000175000017500000000000014352145647013312 00000000000000hunspell-1.7.2/tests/1592880.good0000644000175000017500000000001713565705656013170 00000000000000weg wege wegen hunspell-1.7.2/tests/nosuggest.dic0000644000175000017500000000001713565705656014155 000000000000001 foo/AB bar/B hunspell-1.7.2/tests/compoundrule2.dic0000644000175000017500000000001713565705656014735 000000000000003 a/A b/B c/C hunspell-1.7.2/tests/1748408-4.good0000664000175000017500000000000014352145647013313 00000000000000hunspell-1.7.2/tests/needaffix.wrong0000644000175000017500000000000413565705656014461 00000000000000foo hunspell-1.7.2/tests/compoundrule4.good0000664000175000017500000000023114352145424015112 000000000000001st 2nd 3rd 4th 5th 6th 7th 8th 9th 10th 11th 12th 13th 14th 15th 16th 17th 18th 19th 20th 21st 22nd 23rd 24th 25th 100th 1000th 10001st 10011th 1ST 42NDhunspell-1.7.2/tests/opentaal_cpdpat.aff0000644000175000017500000000032213565705656015271 00000000000000FLAG long COMPOUNDBEGIN Ca COMPOUNDMIDDLE Cb COMPOUNDEND Cc COMPOUNDPERMITFLAG Cp ONLYINCOMPOUND Cx CHECKCOMPOUNDPATTERN 1 CHECKCOMPOUNDPATTERN /Ch /Xs SFX Ch Y 2 SFX Ch 0 s/CaCbCxCp . SFX Ch 0 s-/CaCbCcCp . hunspell-1.7.2/tests/alias.aff0000644000175000017500000000016313565705656013227 00000000000000# aliases for flag vectors (AF) # AB -> 1 # A -> 2 AF 2 AF AB AF A SFX A Y 1 SFX A 0 x . SFX B Y 1 SFX B 0 y/2 . hunspell-1.7.2/tests/needaffix2.morph0000644000175000017500000000042713565705656014545 00000000000000> foo analyze(foo) = st:foo id:1 analyze(foo) = st:foo id:3 stem(foo) = foo > bar analyze(bar) = st:bar stem(bar) = bar > foobar analyze(foobar) = pa:foo st:foo id:3 pa:bar stem(foobar) = foo > barfoo analyze(barfoo) = pa:bar st:bar pa:foo st:foo id:3 stem(barfoo) = barfoo hunspell-1.7.2/tests/compoundrule3.aff0000644000175000017500000000006113565705656014732 00000000000000COMPOUNDMIN 1 COMPOUNDRULE 1 COMPOUNDRULE A?B?C? hunspell-1.7.2/tests/compoundrule5.morph0000644000175000017500000000163413565705656015334 00000000000000> 10% analyze(10%) = pa:1 st:1 po:num pa:0 st:0 po:num pa:% st:% po:sign_percent stem(10%) = 10% > 0.2% analyze(0.2%) = pa:0 st:0 po:num pa:. st:. po:sign_dot pa:2 st:2 po:num pa:% st:% po:sign_percent stem(0.2%) = 0.2% > 0.20% analyze(0.20%) = pa:0 st:0 po:num pa:. st:. po:sign_dot pa:2 st:2 po:num pa:0 st:0 po:num pa:% st:% po:sign_percent stem(0.20%) = 0.20% > 123.4561‰ analyze(123.4561‰) = pa:1 st:1 po:num pa:2 st:2 po:num pa:3 st:3 po:num pa:. st:. po:sign_dot pa:4 st:4 po:num pa:5 st:5 po:num pa:6 st:6 po:num pa:1 st:1 po:num pa:‰ st:‰ po:sign_per_mille stem(123.4561‰) = 123.4561‰ > 10 analyze(10) = pa:1 st:1 po:num pa:0 st:0 po:num stem(10) = 10 > 0000 analyze(0000) = pa:0 st:0 po:num pa:0 st:0 po:num pa:0 st:0 po:num pa:0 st:0 po:num stem(0000) = 0000 > 10.25 analyze(10.25) = pa:1 st:1 po:num pa:0 st:0 po:num pa:. st:. po:sign_dot pa:2 st:2 po:num pa:5 st:5 po:num stem(10.25) = 10.25 hunspell-1.7.2/tests/circumfix.wrong0000644000175000017500000000002513565705656014524 00000000000000legnagy legeslegnagy hunspell-1.7.2/tests/i54633.wrong0000644000175000017500000000001613565705656013370 00000000000000editer Editer hunspell-1.7.2/tests/checkcompoundcase.good0000644000175000017500000000004713565705656016011 00000000000000Barfoo foo-Bar foo-BAZ BAZ-foo BAZ-Bar hunspell-1.7.2/tests/fullstrip.dic0000644000175000017500000000002713565705656014164 000000000000002 andare/A riandare/A hunspell-1.7.2/tests/base_utf.good0000644000175000017500000000035413565705656014124 00000000000000created uncreate uncreated imply implied unnatural conveyed sawyer NASA FAQs can’t doesn’t won’t Created Hello HELLO NASA etc. etc HELLO lip. text. NASA. Text. TEXT. Hunspell. HUNSPELL. İzmir İZMİR İzmir. İZMİR. Imply IMPLY hunspell-1.7.2/tests/colons_in_words.aff0000644000175000017500000000016313565705656015337 00000000000000# Colons in Finnish and Swedish words. Problem reported by Lars Aronsson. # Parsing test (src/parsers) WORDCHARS : hunspell-1.7.2/tests/ph2.aff0000644000175000017500000000141013565705656012623 00000000000000# switch off ngram suggestion to test # usage of ph: dictionary fields in REP # suggestions SET UTF-8 MAXNGRAMSUGS 0 # test in compounds, too COMPOUNDFLAG Y # test also dictionary items with space, # and forbidden compounding, if there is # a ph: field with that compound as # mispelling in the dictionary CHECKCOMPOUNDREP # test in compound word with affixes SFX A Y 1 SFX A 0 's . # when the ph: field ends with the character *, # strip last character of the pattern and the replacement # to match in REP suggestions also at character changes, # for example, "pretty ph:prity*" results "prit->prett" # REP replacement instead of "prity->pretty", to get # prity->pretty and pritiest->prettiest suggestions. SFX B Y 2 SFX B y iest [^aeiou]y SFX B ö őt ö WORDCHARS ' hunspell-1.7.2/tests/1463589_utf.aff0000644000175000017500000000022613565705656013657 00000000000000# capitalized ngram suggestion test data (Unicode version) for # Sf.net Bug ID 1463589, reported by Frederik Fouvry. SET UTF-8 MAXNGRAMSUGS 1 LANG de hunspell-1.7.2/tests/2999225.good0000644000175000017500000000001613565705656013174 00000000000000foobar foobaz hunspell-1.7.2/tests/checkcompoundpattern3.wrong0000644000175000017500000000007613565705656017044 00000000000000booban boobanfoo fozar fozarfoo fozan fozanfoo bozar bozarfoo hunspell-1.7.2/tests/germancompounding.wrong0000644000175000017500000000160113565705656016250 00000000000000computer computern arbeit Arbeits arbeits ComputerArbeit ComputernArbeit Computernarbeit ComputerArbeits Arbeitcomputer Arbeitcomputern ArbeitsComputer ArbeitsComputern Computerarbeitcomputer ComputerArbeitcomputer ComputerArbeitscomputer Computerarbeitcomputern ComputerArbeitcomputern ComputerArbeitscomputern Arbeitscomputerarbeits Arbeitscomputernarbeits Computerarbeits-computer Arbeitsnehmer computers computern computernarbeit computernArbeit computerArbeit computerArbeits arbeitcomputer arbeitsComputer computerarbeitcomputer computerArbeitcomputer computerArbeitscomputer arbeitscomputerarbeits computerarbeits-computer arbeitsnehmer computernarbeit computernArbeit arbeits- computerarbeit computerarbeits- arbeitscomputer arbeitscomputern computerarbeitscomputer computerarbeitscomputern computerarbeitscomputers arbeitscomputerarbeit computerarbeits-Computer computerarbeits-Computern hunspell-1.7.2/tests/opentaal_keepcase.aff0000644000175000017500000000014213565705656015576 00000000000000KEEPCASE K COMPOUNDBEGIN B COMPOUNDEND E COMPOUNDFLAG C COMPOUNDMIN 1 WORDCHARS - BREAK 1 BREAK # hunspell-1.7.2/tests/breakdefault.sug0000644000175000017500000000006013565705656014625 00000000000000scott scot-free foo-bar foo-foo-bar foo-foo-foo hunspell-1.7.2/tests/condition_utf.aff0000644000175000017500000000212213565705656014777 00000000000000SET UTF-8 WORDCHARS 0123456789 SFX S N 18 SFX S 0 suf1 . SFX S 0 suf2 ó SFX S 0 suf3 [áéóú] SFX S 0 suf4 [^ó] SFX S 0 suf5 [^áéóú] SFX S 0 suf6 őó SFX S 0 suf7 ő[áéóú] SFX S 0 suf8 ő[^ó] SFX S 0 suf9 ő[^áéóú] SFX S 0 suf10 [áéóőú]ó SFX S 0 suf11 [^ő]ó SFX S 0 suf12 [^áéóőú]ó SFX S 0 suf13 [áéőú][^ú] SFX S 0 suf14 [^ú][áéóú] SFX S 0 suf15 [áéóú][^áéőú] SFX S 0 suf16 [^áéóú][^áéőú] SFX S 0 suf17 [áéóú][bcdfgkmnóprstvz] SFX S 0 suf18 [áéóú]ó PFX P N 18 PFX P 0 pre1 . PFX P 0 pre2 ó PFX P 0 pre3 [áéóú] PFX P 0 pre4 [^ó] PFX P 0 pre5 [^áéóú] PFX P 0 pre6 óő PFX P 0 pre7 ó[áéőú] PFX P 0 pre8 ó[^ő] PFX P 0 pre9 ó[^áéóőú] PFX P 0 pre10 [áéóőú]ő PFX P 0 pre11 [^ó]ő PFX P 0 pre12 [^áéóőú]ő PFX P 0 pre13 [áéóú][áéőú] PFX P 0 pre14 [áéóú][^áéóú] PFX P 0 pre15 [áéóú][^áéőú] PFX P 0 pre16 [^áéőú][^áéóú] PFX P 0 pre17 [bcdfgkmnóprstvz][áéóú] PFX P 0 pre18 ó[áéóú] hunspell-1.7.2/tests/simplifiedtriple.aff0000644000175000017500000000021013565705656015474 00000000000000# Forbid compound word with triple letters CHECKCOMPOUNDTRIPLE # Allow simplified forms SIMPLIFIEDTRIPLE COMPOUNDMIN 2 COMPOUNDFLAG A hunspell-1.7.2/tests/base.dic0000644000175000017500000000034313565705656013053 0000000000000028 created/U create/XKVNGADS imply/GNSDX natural/PUY like/USPBY convey/BDGS look/GZRDS text hello said sawyer NASA rotten day tomorrow seven FAQ/SM can't doesn't etc won't lip text horrifying speech suggest uncreate/V Hunspell hunspell-1.7.2/tests/breakoff.wrong0000644000175000017500000000004713565705656014316 00000000000000foo- -foo foo-bar foo-bar-foo-bar scot hunspell-1.7.2/tests/oconv.wrong0000644000175000017500000000002213565705656013654 00000000000000béb dád aábcde hunspell-1.7.2/tests/hu.good0000644000175000017500000000041013565705656012741 00000000000000majomkenyér majomkenyérfa majomkenyérfaág majomkenyérvirág kenyérfavirág sárkányfogvetemény kortárs e-mail-cím Batthyány Strattmann Strattmann-nal Batthyány-Strattmann Batthyány-Strattmann-nal áll álló forr forró állóvíz forróvíz-tartály hunspell-1.7.2/tests/opentaal_forbiddenword1.wrong0000644000175000017500000000006613565705656017334 00000000000000foowordbar foowordbars foowordba foowordbas barwodfoo hunspell-1.7.2/tests/opentaal_cpdpat.good0000644000175000017500000000002113565705656015461 00000000000000schoonheidssport hunspell-1.7.2/tests/onlyincompound2.wrong0000644000175000017500000000003513565705656015673 00000000000000pseudos foopseudos pseudofoo hunspell-1.7.2/tests/affixes.good0000644000175000017500000000005413565705656013756 00000000000000hello try tried work worked rework reworked hunspell-1.7.2/tests/IJ.aff0000644000175000017500000000015713565705656012443 00000000000000# check bad capitalisation of Dutch letter IJ. TRY i FORBIDDENWORD * PFX i N 1 PFX i ij IJ ij REP 1 REP ij IJ hunspell-1.7.2/tests/utf8_nonbmp.test0000755000175000017500000000012213565705656014616 00000000000000#!/bin/sh DIR="`dirname $0`" NAME="${0%.test}" "$DIR"/test.sh "$NAME" -i utf-8 -1 hunspell-1.7.2/tests/checksharpsutf.dic0000644000175000017500000000011513565705656015153 000000000000006 müßig/k Ausstoß Abstoß. Außenabmessung Prozessionsstraße Außenmaße hunspell-1.7.2/tests/i35725.sug0000644000175000017500000000021013565705656013027 00000000000000permanent, preferment permanent, ornament permanent Permanent, Preferment Permanent, Ornament Permanent UNESCO UNESCO UNESCO's UNESCO's hunspell-1.7.2/tests/needaffix5.good0000644000175000017500000000022213565705656014344 00000000000000foo prefoo foosuf prefoosuf foosufbar prefoosufbar pseudoprefoosuf pseudoprefoosufbar pseudoprefoopseudosufbar prefoopseudosuf prefoopseudosufbar hunspell-1.7.2/tests/compoundrule7.dic0000644000175000017500000000027013565705656014743 0000000000000022 0/nnmm 1/nn11 2/nnmm 3/nnmm 4/nnmm 5/nnmm 6/nnmm 7/nnmm 8/nnmm 9/nnmm 0th/pptt 1st/pp 1th/ttcc 2nd/pp 2th/ttcc 3rd/pp 3th/ttcc 4th/pptt 5th/pptt 6th/pptt 7th/pptt 8th/pptt 9th/pptt hunspell-1.7.2/tests/checksharpsutf.wrong0000644000175000017500000000001013565705656015542 00000000000000MÜßIG hunspell-1.7.2/tests/compoundrule.wrong0000644000175000017500000000031113565705656015245 00000000000000ba aaabaaa bbaaa aaaaba bbbbbaa aa aaa aaaa ab aab aaab aaaab abb aabb aaabbb bb bbb bbbb aaab abcc abbc abbcc aabc aabcc aabbc aabbcc aaabbbccc ac aac aacc aaaccc bc bcc bbc bbcc bbbccc cc ccc cccccc hunspell-1.7.2/tests/compoundrule6.wrong0000644000175000017500000000005013565705656015333 00000000000000abc abbbbbccccccc aabbccccccc aabbbbbbb hunspell-1.7.2/tests/checkcompoundcaseutf.aff0000644000175000017500000000005313565705656016331 00000000000000SET UTF-8 CHECKCOMPOUNDCASE COMPOUNDFLAG A hunspell-1.7.2/tests/allcaps_utf.aff0000644000175000017500000000006013565705656014427 00000000000000SET UTF-8 WORDCHARS '. SFX S N 1 SFX S 0 's . hunspell-1.7.2/tests/zeroaffix.morph0000644000175000017500000000053213565705656014524 00000000000000> bar analyze(bar) = st:bar > analyze(bar) = st:bar analyze(bar) = st:bar > analyze(bar) = st:bar > stem(bar) = bar > foo analyze(foo) = st:foo stem(foo) = foo > barbaz analyze(barbaz) = st:bar > analyze(barbaz) = st:bar > stem(barbaz) = bar hunspell-1.7.2/tests/checkcompoundpattern2.good0000644000175000017500000000002113565705656016625 00000000000000barfoo fozar fur hunspell-1.7.2/tests/utf8_bom.dic0000644000175000017500000000001413565705656013657 000000000000001 apéritif hunspell-1.7.2/tests/ignoresug.aff0000644000175000017500000000054313565705656014142 00000000000000# Ignore punctuation marks used inside of Armenian words, and produce correct # suggestion (see issue #570). However, "suggestion test" cannot be used because # words in `.wrong` file are not wrong realy, so it leads to an error. # Therefore, we apply "morphological analysis" which has a similar result. SET UTF-8 WORDCHARS ֊՛՜՞՚ IGNORE ֊՛՜՞՚ hunspell-1.7.2/tests/i54980.dic0000644000175000017500000000001513565705656012777 000000000000002 cur uvre hunspell-1.7.2/tests/1748408-2.good0000664000175000017500000000000014352145647013311 00000000000000hunspell-1.7.2/tests/complexprefixesutf.aff0000644000175000017500000000033513565705656016073 00000000000000# Coptic example by Moheb Mekhaiel # Encoded with the new Coptic character encoding of Unicode 4.1 SET UTF-8 # set twofold prefix stripping COMPLEXPREFIXES PFX A Y 1 PFX A 0 ⲧⲉⲕ . PFX B Y 1 PFX B 0 ⲙⲉⲧ/A . hunspell-1.7.2/tests/phone.aff0000644000175000017500000001774513565705656013265 00000000000000# phonetic suggestions by PHONE and optional ph field of dictionary words # Documentationo of PHONE: http://aspell.net/man-html/Phonetic-Code.html # phonetic_english.h - phonetic transformation rules for use with phonetic.c # Copyright (C) 2000 Björn Jacke # # This rule set is based on Lawrence Phillips original metaphone # algorithm with modifications made by Michael Kuhn in his # C implantation, more modifications by Björn Jacke when # converting the algorithm to a rule set and minor # touch ups by Kevin Atkinson # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License version 2.1 as published by the Free Software Foundation; # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Björn Jacke may be reached by email at bjoern.jacke@gmx.de # # Changelog: # # 2000-01-05 Björn Jacke # - first version with translation rules derived from # metaphone.cc distributed with aspell 0.28.3 # - "TH" is now representated as "@" because "0" is a # meta character # - removed TH(!vowel) --> T; always use TH --> # instead # - dropped "^AE" -> "E" (redundant) # - "ing" is transformed to "N", not "NK" # - "SCH(EO)" transforms to "SK" now # - added R --> SILENT if (after a vowel) and no (vowel or # "y" follows) like in "Marcy" or "abort" # - H is SILENT in RH at beginning of words # - H is SILENT if vowel leads and "Y" follows # - some ".OUGH.." --> ...F exceptions added # - "^V" transforms to "W" # 2000-01-07 Kevin Atkinson # Converted from header to data file. # # 2007-08-23 László Németh # Add PHONE header and PHONE keywords # # version 1.1 PHONE 105 PHONE AH(AEIOUY)-^ *H PHONE AR(AEIOUY)-^ *R PHONE A(HR)^ * PHONE A^ * PHONE AH(AEIOUY)- H PHONE AR(AEIOUY)- R PHONE A(HR) _ PHONE BB- _ PHONE B B PHONE CQ- _ PHONE CIA X PHONE CH X PHONE C(EIY)- S PHONE CK K PHONE COUGH^ KF PHONE CC< C PHONE C K PHONE DG(EIY) K PHONE DD- _ PHONE D T PHONE < E PHONE EH(AEIOUY)-^ *H PHONE ER(AEIOUY)-^ *R PHONE E(HR)^ * PHONE ENOUGH^$ *NF PHONE E^ * PHONE EH(AEIOUY)- H PHONE ER(AEIOUY)- R PHONE E(HR) _ PHONE FF- _ PHONE F F PHONE GN^ N PHONE GN$ N PHONE GNS$ NS PHONE GNED$ N PHONE GH(AEIOUY)- K PHONE GH _ PHONE GG9 K PHONE G K PHONE H H PHONE IH(AEIOUY)-^ *H PHONE IR(AEIOUY)-^ *R PHONE I(HR)^ * PHONE I^ * PHONE ING6 N PHONE IH(AEIOUY)- H PHONE IR(AEIOUY)- R PHONE I(HR) _ PHONE J K PHONE KN^ N PHONE KK- _ PHONE K K PHONE LAUGH^ LF PHONE LL- _ PHONE L L PHONE MB$ M PHONE MM M PHONE M M PHONE NN- _ PHONE N N PHONE OH(AEIOUY)-^ *H PHONE OR(AEIOUY)-^ *R PHONE O(HR)^ * PHONE O^ * PHONE OH(AEIOUY)- H PHONE OR(AEIOUY)- R PHONE O(HR) _ PHONE PH F PHONE PN^ N PHONE PP- _ PHONE P P PHONE Q K PHONE RH^ R PHONE ROUGH^ RF PHONE RR- _ PHONE R R PHONE SCH(EOU)- SK PHONE SC(IEY)- S PHONE SH X PHONE SI(AO)- X PHONE SS- _ PHONE S S PHONE TI(AO)- X PHONE TH @ PHONE TCH-- _ PHONE TOUGH^ TF PHONE TT- _ PHONE T T PHONE UH(AEIOUY)-^ *H PHONE UR(AEIOUY)-^ *R PHONE U(HR)^ * PHONE U^ * PHONE UH(AEIOUY)- H PHONE UR(AEIOUY)- R PHONE U(HR) _ PHONE V^ W PHONE V F PHONE WR^ R PHONE WH^ W PHONE W(AEIOU)- W PHONE X^ S PHONE X KS PHONE Y(AEIOU)- Y PHONE ZZ- _ PHONE Z S #The rules in a different view: # # Exceptions: # # Beginning of word: "gn", "kn-", "pn-", "wr-" ----> drop first letter # "Aebersold", "Gnagy", "Knuth", "Pniewski", "Wright" # # Beginning of word: "x" ----> change to "s" # as in "Deng Xiaopeng" # # Beginning of word: "wh-" ----> change to "w" # as in "Whalen" # Beginning of word: leading vowels are transformed to "*" # # "[crt]ough" and "enough" are handled separately because of "F" sound # # # A --> A at beginning # _ otherwise # # B --> B unless at the end of word after "m", as in "dumb", "McComb" # # C --> X (sh) if "-cia-" or "-ch-" # S if "-ci-", "-ce-", or "-cy-" # SILENT if "-sci-", "-sce-", or "-scy-", or "-cq-" # K otherwise, including in "-sch-" # # D --> K if in "-dge-", "-dgy-", or "-dgi-" # T otherwise # # E --> A at beginnig # _ SILENT otherwise # # F --> F # # G --> SILENT if in "-gh-" and not at end or before a vowel # in "-gn" or "-gned" or "-gns" # in "-dge-" etc., as in above rule # K if before "i", or "e", or "y" if not double "gg" # # K otherwise (incl. "GG"!) # # H --> SILENT if after vowel and no vowel or "Y" follows # or after "-ch-", "-sh-", "-ph-", "-th-", "-gh-" # or after "rh-" at beginning # H otherwise # # I --> A at beginning # _ SILENT otherwise # # J --> K # # K --> SILENT if after "c" # K otherwise # # L --> L # # M --> M # # N --> N # # O --> A at beginning # _ SILENT otherwise # # P --> F if before "h" # P otherwise # # Q --> K # # R --> SILENT if after vowel and no vowel or "Y" follows # R otherwise # # S --> X (sh) if before "h" or in "-sio-" or "-sia-" # SK if followed by "ch(eo)" (SCH(EO)) # S otherwise # # T --> X (sh) if "-tia-" or "-tio-" # 0 (th) if before "h" # silent if in "-tch-" # T otherwise # # U --> A at beginning # _ SILENT otherwise # # V --> V if first letter of word # F otherwise # # W --> SILENT if not followed by a vowel # W if followed by a vowel # # X --> KS # # Y --> SILENT if not followed by a vowel # Y if followed by a vowel # # Z --> S hunspell-1.7.2/tests/compoundrule2.wrong0000644000175000017500000000005413565705656015333 00000000000000ba aaabaaa bbaaa aaaaba bbbbbaa cba cab acb hunspell-1.7.2/tests/reputf.dic0000644000175000017500000000001013565705656013435 000000000000001 főő hunspell-1.7.2/tests/allcaps.dic0000664000175000017500000000004314352145424013541 000000000000002 OpenOffice.org UNICEF/S Afrique/Lhunspell-1.7.2/tests/sugutf.dic0000644000175000017500000000010513565705656013452 0000000000000010 NASA Gandhi grateful permanent vacation a lot have which McDonald hunspell-1.7.2/tests/test.sh0000775000175000017500000001323514352145647012775 00000000000000#!/bin/bash # ##### BEGIN LICENSE BLOCK ##### # Version: MPL 1.1/GPL 2.0/LGPL 2.1 # # Copyright (C) 2002-2022 Németh László # # The contents of this file are subject to the Mozilla Public License Version # 1.1 (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS IS" basis, # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License # for the specific language governing rights and limitations under the # License. # # Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. # # Alternatively, the contents of this file may be used under the terms of # either the GNU General Public License Version 2 or later (the "GPL"), or # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), # in which case the provisions of the GPL or the LGPL are applicable instead # of those above. If you wish to allow use of your version of this file only # under the terms of either the GPL or the LGPL, and not to allow others to # use your version of this file under the terms of the MPL, indicate your # decision by deleting the provisions above and replace them with the notice # and other provisions required by the GPL or the LGPL. If you do not delete # the provisions above, a recipient may use your version of this file under # the terms of any one of the MPL, the GPL or the LGPL. # ##### END LICENSE BLOCK ##### # set -x # uncomment for debugging set -o pipefail export LC_ALL="C" function check_valgrind_log () { if [[ "$VALGRIND" != "" && -f $TEMPDIR/test.pid* ]]; then log=$(ls $TEMPDIR/test.pid*) if ! grep -q 'ERROR SUMMARY: 0 error' $log; then echo "Fail in $NAME $1 checking detected by Valgrind" echo "$log Valgrind log file moved to $TEMPDIR/badlogs" mv $log $TEMPDIR/badlogs exit 1 fi if grep -q 'LEAK SUMMARY' $log; then echo "Memory leak in $NAME $1 checking detected by Valgrind" echo "$log Valgrind log file moved to $TEMPDIR/badlogs" mv $log $TEMPDIR/badlogs exit 1 fi rm -f $log fi } TEMPDIR=./testSubDir NAME="${1%.dic}" shift ENCODING=UTF-8 #io encoding passed with -i if [[ "$1" == "-i" && -n "$2" ]]; then ENCODING="$2" shift 2 fi shopt -s expand_aliases [[ "$HUNSPELL" = "" ]] && HUNSPELL="$(dirname $0)"/../src/tools/hunspell [[ "$ANALYZE" = "" ]] && ANALYZE="$(dirname $0)"/../src/tools/analyze [[ "$LIBTOOL" = "" ]] && LIBTOOL="$(dirname $0)"/../libtool alias hunspell='"$LIBTOOL" --mode=execute "$HUNSPELL"' alias analyze='"$LIBTOOL" --mode=execute "$ANALYZE"' if [[ "$VALGRIND" != "" ]]; then mkdir $TEMPDIR 2> /dev/null || : rm -f $TEMPDIR/test.pid* || : mkdir $TEMPDIR/badlogs 2> /dev/null || : alias hunspell='"$LIBTOOL" --mode=execute valgrind --tool=$VALGRIND --leak-check=yes --show-reachable=yes --log-file=$TEMPDIR/test.pid "$HUNSPELL"' alias analyze='"$LIBTOOL" --mode=execute valgrind --tool=$VALGRIND --leak-check=yes --show-reachable=yes --log-file=$TEMPDIR/test.pid "$ANALYZE"' fi CR=$(printf "\r") in_dict="$NAME" if [[ ! -f "$in_dict.dic" ]]; then echo "Dictionary $in_dict.dic does not exists" exit 3 fi # Tests good words in_file="$in_dict.good" if [[ -f $in_file ]]; then out=$(hunspell -l -i "$ENCODING" "$@" -d "$in_dict" < "$in_file" \ | tr -d "$CR") if [[ $? -ne 0 ]]; then exit 2; fi if [[ "$out" != "" ]]; then echo "=============================================" echo "Fail in $NAME.good. Good words recognised as wrong:" echo "$out" exit 1 fi fi check_valgrind_log "good words" # Tests bad words in_file="$in_dict.wrong" if [[ -f $in_file ]]; then out=$(hunspell -G -i "$ENCODING" "$@" -d "$in_dict" < "$in_file" \ | tr -d "$CR") #strip carriage return for mingw builds if [[ $? -ne 0 ]]; then exit 2; fi if [[ "$out" != "" ]]; then echo "=============================================" echo "Fail in $NAME.wrong. Bad words recognised as good:" echo "$out" exit 1 fi fi check_valgrind_log "bad words" # Tests good words' root in_file="$in_dict.good" expected_file="$in_dict.root" if [[ -f $expected_file ]]; then # Extract the root words of the affixed words, after '+' out=$(hunspell -d "$in_dict" < "$in_file" | grep -a '^+ ' \ | sed 's/^+ //') if [[ $? -ne 0 ]]; then exit 2; fi expected=$(<"$expected_file") if [[ "$out" != "$expected" ]]; then echo "=============================================" echo "Fail in $NAME.root. Bad analysis?" diff "$expected_file" <(echo "$out") | grep '^<' | sed 's/^..//' exit 1 fi fi check_valgrind_log "root" # Tests morphological analysis in_file="$in_dict.good" expected_file="$in_dict.morph" if [[ -f $expected_file ]]; then #in=$(sed 's/ $//' "$in_file") #passes without this. out=$(analyze "$in_dict.aff" "$in_dict.dic" "$in_file" \ | tr -d "$CR") #strip carige return for mingw builds if [[ $? -ne 0 ]]; then exit 2; fi expected=$(<"$expected_file") if [[ "$out" != "$expected" ]]; then echo "=============================================" echo "Fail in $NAME.morph. Bad analysis?" diff "$expected_file" <(echo "$out") | grep '^<' | sed 's/^..//' exit 1 fi fi check_valgrind_log "morphological analysis" # Tests suggestions in_file=$in_dict.wrong expected_file=$in_dict.sug if [[ -f $expected_file ]]; then out=$(hunspell -i "$ENCODING" "$@" -a -d "$in_dict" <"$in_file" | \ { grep -a '^&' || true; } | sed 's/^[^:]*: //') if [[ $? -ne 0 ]]; then exit 2; fi expected=$(<"$expected_file") if [[ "$out" != "$expected" ]]; then echo "=============================================" echo "Fail in $NAME.sug. Bad suggestion?" diff "$expected_file" <(echo "$out") exit 1 fi fi check_valgrind_log "suggestion" hunspell-1.7.2/tests/checkcompoundpattern3.aff0000664000175000017500000000027014352145424016424 00000000000000# forbid compounds with spec. pattern at word bound and allow modified form # (for Indian languages) COMPOUNDFLAG A CHECKCOMPOUNDPATTERN 1 CHECKCOMPOUNDPATTERN o/X b/Y z COMPOUNDMIN 1 hunspell-1.7.2/tests/iconv2.aff0000644000175000017500000000021513565705656013334 00000000000000# The longer input pattern should be used if matched ICONV 6 ICONV Da DA ICONV Ga GA ICONV Gag GAG ICONV Gagg GAGG ICONV Na NA ICONV Nan NAN hunspell-1.7.2/tests/limit-multiple-compounding.good0000664000175000017500000000013414353360160017600 00000000000000foobar foobaz barfoo bazfoo barbaz bazbar foobazbar barfoobaz bazfoobar barbazfoo bazbarfoo hunspell-1.7.2/tests/nepali.dic0000644000175000017500000000006613565705656013413 000000000000004 अलम् क्यार न्न र्‌य hunspell-1.7.2/tests/iconv.good0000644000175000017500000000005213565705656013445 00000000000000Chișinău Chişinău Țepes Ţepes Ş ţ hunspell-1.7.2/tests/i68568utf.dic0000644000175000017500000000001113565705656013521 000000000000001 Bár/a hunspell-1.7.2/tests/onlyincompound.good0000644000175000017500000000004313565705656015404 00000000000000foo pseudofoo foopseudo foopseudos hunspell-1.7.2/tests/checkcompoundcase2.good0000644000175000017500000000002613565705656016070 00000000000000áoóáoó Óoááoó hunspell-1.7.2/tests/complexprefixes.wrong0000644000175000017500000000002313565705656015746 00000000000000tekouro mettekouro hunspell-1.7.2/tests/germancompounding.aff0000644000175000017500000000305313565705656015653 00000000000000# German compounding # handle special casing of German sharp s CHECKSHARPS # compound flags COMPOUNDBEGIN U COMPOUNDMIDDLE V COMPOUNDEND W # Prefixes are allowed at the beginning of compounds, # suffixes are allowed at the end of compounds by default: # (prefix)?(root)+(affix)? # Affixes with COMPOUNDPERMITFLAG may be inside of compounds. COMPOUNDPERMITFLAG P # for German fogemorphemes (Fuge-element) # Hint: ONLYINCOMPOUND is not required everywhere, but the # checking will be a little faster with it. ONLYINCOMPOUND X # forbid uppercase characters at compound word bounds CHECKCOMPOUNDCASE # for handling Fuge-elements with dashes (Arbeits-) # dash will be a special word COMPOUNDMIN 1 WORDCHARS - # compound settings and fogemorpheme for `Arbeit' SFX A Y 3 SFX A 0 s/UPX . SFX A 0 s/VPDX . SFX A 0 0/WXD . SFX B Y 2 SFX B 0 0/UPX . SFX B 0 0/VWXDP . # a suffix for `Computer' SFX C Y 1 SFX C 0 n/WD . # for forbid exceptions (*Arbeitsnehmer) FORBIDDENWORD Z # dash prefix for compounds with dash (Arbeits-Computer) PFX - Y 1 PFX - 0 -/P . # decapitalizing prefix # circumfix for positioning in compounds PFX D Y 29 PFX D A a/PX A PFX D /PX PFX D B b/PX B PFX D C c/PX C PFX D D d/PX D PFX D E e/PX E PFX D F f/PX F PFX D G g/PX G PFX D H h/PX H PFX D I i/PX I PFX D J j/PX J PFX D K k/PX K PFX D L l/PX L PFX D M m/PX M PFX D N n/PX N PFX D O o/PX O PFX D /PX PFX D P p/PX P PFX D Q q/PX Q PFX D R r/PX R PFX D S s/PX S PFX D T t/PX T PFX D U u/PX U PFX D /PX PFX D V v/PX V PFX D W w/PX W PFX D X x/PX X PFX D Y y/PX Y PFX D Z z/PX Z hunspell-1.7.2/tests/checksharps.wrong0000664000175000017500000000002014352145424015010 00000000000000MÜßIG Müssig hunspell-1.7.2/tests/forceucase.aff0000644000175000017500000000007713565705656014261 00000000000000# force capitalized compound TRY F FORCEUCASE A COMPOUNDFLAG C hunspell-1.7.2/tests/keepcase.dic0000644000175000017500000000003513565705656013717 000000000000004 foo/A Bar/A baz./A Quux./A hunspell-1.7.2/tests/ignoreutf.aff0000644000175000017500000000033613565705656014142 00000000000000# Arabic test for feature ignoring diacritics SET UTF-8 # Arabic diacritics (harakat): # sukun, shadda, kasra, damma, fatha, kasratan, dammantan, fathatan (left to right) IGNORE ًٌٍَُِّْ WORDCHARS ًٌٍَُِّْ hunspell-1.7.2/tests/base_utf.aff0000644000175000017500000000565113565705656013735 00000000000000# OpenOffice.org’s en_US.aff file # with Unicode apostrophe: ’ SET UTF-8 TRY esianrtolcdugmphbyfvkwzESIANRTOLCDUGMPHBYFVKWZ' MAXNGRAMSUGS 1 WORDCHARS .'’ PFX A Y 1 PFX A 0 re . PFX I Y 1 PFX I 0 in . PFX U Y 1 PFX U 0 un . PFX C Y 1 PFX C 0 de . PFX E Y 1 PFX E 0 dis . PFX F Y 1 PFX F 0 con . PFX K Y 1 PFX K 0 pro . SFX V N 2 SFX V e ive e SFX V 0 ive [^e] SFX N Y 3 SFX N e ion e SFX N y ication y SFX N 0 en [^ey] SFX X Y 3 SFX X e ions e SFX X y ications y SFX X 0 ens [^ey] SFX H N 2 SFX H y ieth y SFX H 0 th [^y] SFX Y Y 1 SFX Y 0 ly . SFX G Y 2 SFX G e ing e SFX G 0 ing [^e] SFX J Y 2 SFX J e ings e SFX J 0 ings [^e] SFX D Y 4 SFX D 0 d e SFX D y ied [^aeiou]y SFX D 0 ed [^ey] SFX D 0 ed [aeiou]y SFX T N 4 SFX T 0 st e SFX T y iest [^aeiou]y SFX T 0 est [aeiou]y SFX T 0 est [^ey] SFX R Y 4 SFX R 0 r e SFX R y ier [^aeiou]y SFX R 0 er [aeiou]y SFX R 0 er [^ey] SFX Z Y 4 SFX Z 0 rs e SFX Z y iers [^aeiou]y SFX Z 0 ers [aeiou]y SFX Z 0 ers [^ey] SFX S Y 4 SFX S y ies [^aeiou]y SFX S 0 s [aeiou]y SFX S 0 es [sxzh] SFX S 0 s [^sxzhy] SFX P Y 3 SFX P y iness [^aeiou]y SFX P 0 ness [aeiou]y SFX P 0 ness [^y] SFX M Y 1 SFX M 0 's . SFX B Y 3 SFX B 0 able [^aeiou] SFX B 0 able ee SFX B e able [^aeiou]e SFX L Y 1 SFX L 0 ment . REP 88 REP a ei REP ei a REP a ey REP ey a REP ai ie REP ie ai REP are air REP are ear REP are eir REP air are REP air ere REP ere air REP ere ear REP ere eir REP ear are REP ear air REP ear ere REP eir are REP eir ere REP ch te REP te ch REP ch ti REP ti ch REP ch tu REP tu ch REP ch s REP s ch REP ch k REP k ch REP f ph REP ph f REP gh f REP f gh REP i igh REP igh i REP i uy REP uy i REP i ee REP ee i REP j di REP di j REP j gg REP gg j REP j ge REP ge j REP s ti REP ti s REP s ci REP ci s REP k cc REP cc k REP k qu REP qu k REP kw qu REP o eau REP eau o REP o ew REP ew o REP oo ew REP ew oo REP ew ui REP ui ew REP oo ui REP ui oo REP ew u REP u ew REP oo u REP u oo REP u oe REP oe u REP u ieu REP ieu u REP ue ew REP ew ue REP uff ough REP oo ieu REP ieu oo REP ier ear REP ear ier REP ear air REP air ear REP w qu REP qu w REP z ss REP ss z REP shun tion REP shun sion REP shun cion McDonalds’sá/w McDonald’sszá/g3) st:McDonald’s po:noun_prs is:TRANS McDonald’sszal/g4) st:McDonald’s po:noun_prs is:INSTR McDonald’ssal/w hunspell-1.7.2/tests/i53643.wrong0000644000175000017500000000002413565705656013367 000000000000001..2 1,,2 1.,2 1,.2 hunspell-1.7.2/tests/condition.good0000644000175000017500000000032413565705656014317 00000000000000ofo ofosuf1 pre1ofo ofosuf2 pre2ofo ofosuf3 pre3ofo ofosuf6 pre6ofo ofosuf7 pre7ofo ofosuf10 ofosuf13 pre13ofo ofosuf14 pre14ofo ofosuf16 pre16ofo entertain entertaining gninianretne ér éram érach wries unwry hunspell-1.7.2/tests/flag.good0000644000175000017500000000007213565705656013242 00000000000000foo foos foosbar foosbaz unfoo unfoos unfoosbar unfoosbaz hunspell-1.7.2/tests/germancompoundingold.dic0000644000175000017500000000005513565705656016354 000000000000004 Arbeit/A- Computer/BC- -/W Arbeitsnehmer/Z hunspell-1.7.2/tests/base.aff0000644000175000017500000000530513565705656013053 00000000000000# OpenOffice.org's en_US.aff file SET ISO8859-1 TRY esianrtolcdugmphbyfvkwz' WORDCHARS .' PFX A Y 1 PFX A 0 re . PFX I Y 1 PFX I 0 in . PFX U Y 1 PFX U 0 un . PFX C Y 1 PFX C 0 de . PFX E Y 1 PFX E 0 dis . PFX F Y 1 PFX F 0 con . PFX K Y 1 PFX K 0 pro . SFX V N 2 SFX V e ive e SFX V 0 ive [^e] SFX N Y 3 SFX N e ion e SFX N y ication y SFX N 0 en [^ey] SFX X Y 3 SFX X e ions e SFX X y ications y SFX X 0 ens [^ey] SFX H N 2 SFX H y ieth y SFX H 0 th [^y] SFX Y Y 1 SFX Y 0 ly . SFX G Y 2 SFX G e ing e SFX G 0 ing [^e] SFX J Y 2 SFX J e ings e SFX J 0 ings [^e] SFX D Y 4 SFX D 0 d e SFX D y ied [^aeiou]y SFX D 0 ed [^ey] SFX D 0 ed [aeiou]y SFX T N 4 SFX T 0 st e SFX T y iest [^aeiou]y SFX T 0 est [aeiou]y SFX T 0 est [^ey] SFX R Y 4 SFX R 0 r e SFX R y ier [^aeiou]y SFX R 0 er [aeiou]y SFX R 0 er [^ey] SFX Z Y 4 SFX Z 0 rs e SFX Z y iers [^aeiou]y SFX Z 0 ers [aeiou]y SFX Z 0 ers [^ey] SFX S Y 4 SFX S y ies [^aeiou]y SFX S 0 s [aeiou]y SFX S 0 es [sxzh] SFX S 0 s [^sxzhy] SFX P Y 3 SFX P y iness [^aeiou]y SFX P 0 ness [aeiou]y SFX P 0 ness [^y] SFX M Y 1 SFX M 0 's . SFX B Y 3 SFX B 0 able [^aeiou] SFX B 0 able ee SFX B e able [^aeiou]e SFX L Y 1 SFX L 0 ment . REP 88 REP a ei REP ei a REP a ey REP ey a REP ai ie REP ie ai REP are air REP are ear REP are eir REP air are REP air ere REP ere air REP ere ear REP ere eir REP ear are REP ear air REP ear ere REP eir are REP eir ere REP ch te REP te ch REP ch ti REP ti ch REP ch tu REP tu ch REP ch s REP s ch REP ch k REP k ch REP f ph REP ph f REP gh f REP f gh REP i igh REP igh i REP i uy REP uy i REP i ee REP ee i REP j di REP di j REP j gg REP gg j REP j ge REP ge j REP s ti REP ti s REP s ci REP ci s REP k cc REP cc k REP k qu REP qu k REP kw qu REP o eau REP eau o REP o ew REP ew o REP oo ew REP ew oo REP ew ui REP ui ew REP oo ui REP ui oo REP ew u REP u ew REP oo u REP u oo REP u oe REP oe u REP u ieu REP ieu u REP ue ew REP ew ue REP uff ough REP oo ieu REP ieu oo REP ier ear REP ear ier REP ear air REP air ear REP w qu REP qu w REP z ss REP ss z REP shun tion REP shun sion REP shun cion hunspell-1.7.2/tests/opentaal_forbiddenword1.sug0000644000175000017500000000001313565705656016766 00000000000000barwordfoo hunspell-1.7.2/tests/1748408-1.good0000664000175000017500000000000014352145647013310 00000000000000hunspell-1.7.2/tests/i35725.dic0000644000175000017500000000027313565705656013001 0000000000000015 endangerment/SM ferment/FSCM preferment/SM impermanent/Y permanent/YSP semipermanent/Y empowerment/MS supermen tournament/MS ornamental/SY ornament/GSDM supernatant pimpernel UNESCO/M hunspell-1.7.2/tests/2970240.dic0000644000175000017500000000003213565705656012763 000000000000003 first/c middle/c last/c hunspell-1.7.2/tests/break.dic0000644000175000017500000000004713565705656013226 000000000000006 foo bar baz fox-bax foo-baz/! e-mail hunspell-1.7.2/tests/iconv2.dic0000644000175000017500000000003013565705656013332 000000000000004 GAG GAGGNA GANA NANDA hunspell-1.7.2/tests/sugutf.sug0000644000175000017500000000015413565705656013515 00000000000000NASA Gandhi grateful permanent vacation a lot, lot permanent. Vacation have which Gandhi McDonald permanent hunspell-1.7.2/tests/1748408-2.aff0000664000175000017500000000007414352145647013130 00000000000000# Crashtest for bug 1748408. AF 2000 INVALID something else hunspell-1.7.2/tests/compoundaffix2.dic0000644000175000017500000000002213565705656015057 000000000000002 foo/XPS bar/XPS hunspell-1.7.2/tests/needaffix2.aff0000644000175000017500000000003313565705656014145 00000000000000NEEDAFFIX X COMPOUNDFLAG Y hunspell-1.7.2/tests/checkcompounddup.good0000644000175000017500000000005713565705656015667 00000000000000barfoo foobar foofoobar foobarfoo barfoobarfoo hunspell-1.7.2/tests/1463589_utf.wrong0000644000175000017500000000007713565705656014263 00000000000000kuhlschrank kuehlschrank kühlschrank Kuhlschrank Kuehlschrank hunspell-1.7.2/tests/slash.good0000644000175000017500000000004213565705656013440 00000000000000/ 1/2 http:// /usr/share/myspell/ hunspell-1.7.2/tests/2970240.good0000644000175000017500000000002013565705656013151 00000000000000firstmiddlelast hunspell-1.7.2/tests/utf8_nonbmp.dic0000644000175000017500000000011513565705656014375 000000000000004 # Old Persian numbers (1-4), source: Wikipedia 𐏑 𐏒 𐏒𐏑 𐏒𐏒 hunspell-1.7.2/tests/checkcompoundcaseutf.good0000644000175000017500000000002613565705656016525 00000000000000áoóáoó Óoááoó hunspell-1.7.2/tests/compoundrule4.aff0000644000175000017500000000020113565705656014727 00000000000000# English ordinal numbers WORDCHARS 0123456789 COMPOUNDMIN 1 ONLYINCOMPOUND c COMPOUNDRULE 2 COMPOUNDRULE n*1t COMPOUNDRULE n*mp hunspell-1.7.2/tests/forbiddenword.aff0000644000175000017500000000034113565705656014764 00000000000000# FORBIDDENWORD flag # The signed word, and its suffixed forms are all forbidden, # excepts with root homonyms. # Useful for forbidding bad suffixed forms or compounds. FORBIDDENWORD X COMPOUNDFLAG Y SFX A Y 1 SFX A 0 s . hunspell-1.7.2/tests/compoundaffix.good0000644000175000017500000000006013565705656015170 00000000000000foo foofoo prefoo foosuf prefoosuf prefoobarsuf hunspell-1.7.2/tests/forceucase.good0000644000175000017500000000005613565705656014452 00000000000000foo bar baz foobar Foobaz foobazbar Foobarbaz hunspell-1.7.2/tests/dotless_i.aff0000644000175000017500000000002213565705656014115 00000000000000SET UTF-8 LANG tr hunspell-1.7.2/tests/arabic.dic0000644000175000017500000000000513565705656013355 000000000000001 ب hunspell-1.7.2/tests/sug.aff0000644000175000017500000000121013565705656012726 00000000000000# new suggestion methods of Hunspell 1.5: # capitalization: nasa -> NASA # long swap: permenant -> permanent # long mov: Ghandi -> Gandhi # double two characters: vacacation -> vacation # space with REP: "alot" -> "a lot" ("a lot" need to be in the dic file.) # # Note: see test "ph" for the newer and # more simple method to handle common misspellings, # for example, alot->a lot, inspite->in spite, # (that is giving the best suggestion, and limiting # ngram/phonetic suggestion) # switch off ngram suggestion for testing MAXNGRAMSUGS 0 REP 2 REP alot a_lot REP inspite in_spite KEY qwertzuiop|asdfghjkl|yxcvbnm|aq WORDCHARS .- FORBIDDENWORD ? hunspell-1.7.2/tests/simplifiedtriple.good0000644000175000017500000000002213565705656015671 00000000000000glass sko glassko hunspell-1.7.2/tests/compoundaffix3.aff0000644000175000017500000000016613565705656015066 00000000000000COMPOUNDFLAG X COMPOUNDFORBIDFLAG Z PFX P Y 1 PFX P 0 pre/Z . SFX S Y 1 SFX S 0 suf/Z . hunspell-1.7.2/tests/fogemorpheme.wrong0000644000175000017500000000003713565705656015213 00000000000000gatu gatakontoret kontoretgatu hunspell-1.7.2/tests/complexprefixes.good0000644000175000017500000000003013565705656015540 00000000000000ouro metouro tekmetouro hunspell-1.7.2/tests/breakdefault.dic0000644000175000017500000000003713565705656014572 000000000000003 foo bar free scott scot-free hunspell-1.7.2/tests/maputf.sug0000644000175000017500000000004013565705656013466 00000000000000Frühstück tükörfúró groß hunspell-1.7.2/tests/wordpair.wrong0000644000175000017500000000001513565705656014361 00000000000000compoundword hunspell-1.7.2/tests/1706659.wrong0000644000175000017500000000005513565705656013377 00000000000000arbeitsfarbig arbeitsfarbige arbeitsfarbiger hunspell-1.7.2/tests/needaffix.good0000644000175000017500000000002113565705656014254 00000000000000bar foos barfoos hunspell-1.7.2/tests/checkcompoundrep.aff0000644000175000017500000000043113565705656015465 00000000000000// forbid compound word, if it is also a non-compound word with a REP fault // In example: Hungarian `szervz' (szer+vz) compound word is forbidden, because // this word is also a dictionary word (szerviz) with typical fault (i->) CHECKCOMPOUNDREP COMPOUNDFLAG A REP 1 REP i hunspell-1.7.2/tests/timelimit.wrong0000644000175000017500000000003013565705656014524 000000000000001000000000000000000000x hunspell-1.7.2/tests/utfcompound.wrong0000644000175000017500000000006713565705656015104 00000000000000xyyz fooxy xyfoo fooxybar ééőő fóóéé őőáár hunspell-1.7.2/tests/opentaal_forbiddenword1.good0000644000175000017500000000003313565705656017122 00000000000000fooword wordbar barwordfoo hunspell-1.7.2/tests/compoundflag.aff0000644000175000017500000000003613565705656014613 00000000000000COMPOUNDMIN 3 COMPOUNDFLAG A hunspell-1.7.2/tests/iconv2.good0000644000175000017500000000002613565705656013530 00000000000000GaNa Gag GaggNa NanDa hunspell-1.7.2/tests/checksharpsutf.sug0000644000175000017500000000002113565705656015206 00000000000000MÜSSIG, müßig hunspell-1.7.2/tests/needaffix4.dic0000644000175000017500000000005313565705656014154 000000000000004 foo/X [1] foo/Y [2] foo/YX [3] bar/Y [4] hunspell-1.7.2/tests/suggestiontest/0000775000175000017500000000000014353370323014612 500000000000000hunspell-1.7.2/tests/suggestiontest/List_of_common_misspellings.txt0000644000175000017500000024132213422074107023032 00000000000000# source: http://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines # released under the Creative Commons Attribution-Share-Alike License 3.0 # http://creativecommons.org/licenses/by-sa/3.0/ abandonned abandoned aberation aberration abilties abilities abilty ability abondon abandon abondoned abandoned abondoning abandoning abondons abandons aborigene aborigine abortificant abortifacient abreviated abbreviated abreviation abbreviation abritrary arbitrary absense absence absolutly absolutely absorbsion absorption absorbtion absorption abundacies abundances abundancies abundances abundunt abundant abutts abuts acadamy academy acadmic academic accademic academic accademy academy acccused accused accelleration acceleration accension accession, ascension acceptence acceptance acceptible acceptable accessable accessible accidentaly accidentally accidently accidentally acclimitization acclimatization acommodate accommodate accomadate accommodate accomadated accommodated accomadates accommodates accomadating accommodating accomadation accommodation accomadations accommodations accomdate accommodate accomodate accommodate accomodated accommodated accomodates accommodates accomodating accommodating accomodation accommodation accomodations accommodations accompanyed accompanied accordeon accordion accordian accordion accoring according accoustic acoustic accquainted acquainted accross across accussed accused acedemic academic acheive achieve acheived achieved acheivement achievement acheivements achievements acheives achieves acheiving achieving acheivment achievement acheivments achievements achievment achievement achievments achievements achive achieve, archive achived achieved, archived achivement achievement achivements achievements acknowldeged acknowledged acknowledgeing acknowledging ackward awkward, backward acomplish accomplish acomplished accomplished acomplishment accomplishment acomplishments accomplishments acording according acordingly accordingly acquaintence acquaintance acquaintences acquaintances acquiantence acquaintance acquiantences acquaintances acquited acquitted activites activities activly actively actualy actually acuracy accuracy acused accused acustom accustom acustommed accustomed adavanced advanced adbandon abandon additinally additionally additionaly additionally addmission admission addopt adopt addopted adopted addoptive adoptive addres address, adders addresable addressable addresed addressed addresing addressing addressess addresses addtion addition addtional additional adecuate adequate adhearing adhering adherance adherence admendment amendment admininistrative administrative adminstered administered adminstrate administrate adminstration administration adminstrative administrative adminstrator administrator admissability admissibility admissable admissible admited admitted admitedly admittedly adn and adolecent adolescent adquire acquire adquired acquired adquires acquires adquiring acquiring adres address adresable addressable adresing addressing adress address adressable addressable adressed addressed adressing addressing, dressing adventrous adventurous advertisment advertisement advertisments advertisements advesary adversary adviced advised aeriel aerial aeriels aerials afair affair afficianados aficionados afficionado aficionado afficionados aficionados affilate affiliate affilliate affiliate affort afford, effort aforememtioned aforementioned againnst against agains against agaisnt against aganist against aggaravates aggravates aggreed agreed aggreement agreement aggregious egregious aggresive aggressive agian again agianst against agin again agina again, angina aginst against agravate aggravate agre agree agred agreed agreeement agreement agreemnt agreement agregate aggregate agregates aggregates agreing agreeing agression aggression agressive aggressive agressively aggressively agressor aggressor agricuture agriculture agrieved aggrieved ahev have ahppen happen ahve have aicraft aircraft aiport airport airbourne airborne aircaft aircraft aircrafts aircraft airporta airports airrcraft aircraft aisian asian albiet albeit alchohol alcohol alchoholic alcoholic alchol alcohol alcholic alcoholic alcohal alcohol alcoholical alcoholic aledge allege aledged alleged aledges alleges alege allege aleged alleged alegience allegiance algebraical algebraic algorhitms algorithms algoritm algorithm algoritms algorithms alientating alienating alledge allege alledged alleged alledgedly allegedly alledges alleges allegedely allegedly allegedy allegedly allegely allegedly allegence allegiance allegience allegiance allign align alligned aligned alliviate alleviate allopone allophone allopones allophones allready already allthough although alltime all-time alltogether altogether almsot almost alochol alcohol alomst almost alot a lot, allot alotted allotted alowed allowed alowing allowing alreayd already alse else alsot also alternitives alternatives altho although althought although altough although alusion allusion, illusion alwasy always alwyas always amalgomated amalgamated amatuer amateur amature armature, amateur amendmant amendment amerliorate ameliorate amke make amking making ammend amend ammended amended ammendment amendment ammendments amendments ammount amount ammused amused amoung among amoungst amongst amung among analagous analogous analitic analytic analogeous analogous anarchim anarchism anarchistm anarchism anbd and ancestory ancestry ancilliary ancillary androgenous androgynous androgeny androgyny anihilation annihilation aniversary anniversary annoint anoint annointed anointed annointing anointing annoints anoints annouced announced annualy annually annuled annulled anohter another anomolies anomalies anomolous anomalous anomoly anomaly anonimity anonymity anounced announced ansalisation nasalisation ansalization nasalization ansestors ancestors antartic antarctic anthromorphization anthropomorphization anual annual, anal anulled annulled anwsered answered anyhwere anywhere anyother any other anytying anything aparent apparent aparment apartment apenines apennines, Apennines aplication application aplied applied apolegetics apologetics apon upon, apron apparant apparent apparantly apparently appart apart appartment apartment appartments apartments appealling appealing, appalling appeareance appearance appearence appearance appearences appearances appenines apennines, Apennines apperance appearance apperances appearances applicaiton application applicaitons applications appologies apologies appology apology apprearance appearance apprieciate appreciate approachs approaches appropiate appropriate appropraite appropriate appropropiate appropriate approproximate approximate approxamately approximately approxiately approximately approximitely approximately aprehensive apprehensive apropriate appropriate aproximate approximate aproximately approximately aquaintance acquaintance aquainted acquainted aquiantance acquaintance aquire acquire aquired acquired aquiring acquiring aquisition acquisition aquitted acquitted aranged arranged arangement arrangement arbitarily arbitrarily arbitary arbitrary archaelogists archaeologists archaelogy archaeology archaoelogy archeology, archaeology archaology archeology, archaeology archeaologist archeologist, archaeologist archeaologists archeologists, archaeologists archetect architect archetects architects archetectural architectural archetecturally architecturally archetecture architecture archiac archaic archictect architect archimedian archimedean architechturally architecturally architechture architecture architechtures architectures architectual architectural archtype archetype archtypes archetypes aready already areodynamics aerodynamics argubly arguably arguement argument arguements arguments arised arose arival arrival armamant armament armistace armistice aroud around arrangment arrangement arrangments arrangements arround around artical article artice article articel article artifical artificial artifically artificially artillary artillery arund around asetic ascetic asign assign aslo also asociated associated asorbed absorbed asphyxation asphyxiation assasin assassin assasinate assassinate assasinated assassinated assasinates assassinates assasination assassination assasinations assassinations assasined assassinated assasins assassins assassintation assassination assemple assemble assertation assertion asside aside assisnate assassinate assit assist assitant assistant assocation association assoicate associate assoicated associated assoicates associates assosication assassination asssassans assassins assualt assault assualted assaulted assymetric asymmetric assymetrical asymmetrical asteriod asteroid asthetic aesthetic asthetical aesthetical asthetically aesthetically asume assume aswell as well atain attain atempting attempting atheistical atheistic athenean athenian atheneans athenians athiesm atheism athiest atheist atorney attorney atribute attribute atributed attributed atributes attributes attaindre attainder, attained attemp attempt attemped attempted attemt attempt attemted attempted attemting attempting attemts attempts attendence attendance attendent attendant attendents attendants attened attended attension attention attitide attitude attributred attributed attrocities atrocities audeince audience auromated automated austrailia Australia austrailian Australian auther author authobiographic autobiographic authobiography autobiography authorative authoritative authorites authorities authorithy authority authoritiers authorities authoritive authoritative authrorities authorities autochtonous autochthonous autoctonous autochthonous automaticly automatically automibile automobile automonomous autonomous autor author autority authority auxilary auxiliary auxillaries auxiliaries auxillary auxiliary auxilliaries auxiliaries auxilliary auxiliary availablity availability availaible available availble available availiable available availible available avalable available avalance avalanche avaliable available avation aviation avengence a vengeance averageed averaged avilable available awared awarded awya away baceause because backgorund background backrounds backgrounds bakc back banannas bananas bandwith bandwidth bankrupcy bankruptcy banruptcy bankruptcy baout about, bout basicaly basically basicly basically bcak back beachead beachhead beacuse because beastiality bestiality beatiful beautiful beaurocracy bureaucracy beaurocratic bureaucratic beautyfull beautiful becamae became becasue because beccause because becomeing becoming becomming becoming becouse because becuase because bedore before befoer before beggin begin, begging begginer beginner begginers beginners beggining beginning begginings beginnings beggins begins begining beginning beginnig beginning behavour behavior, behaviour beleagured beleaguered beleif belief beleive believe beleived believed beleives believes beleiving believing beligum belgium belive believe belived believed belives believes, beliefs belligerant belligerent bellweather bellwether bemusemnt bemusement beneficary beneficiary beng being benificial beneficial benifit benefit benifits benefits bergamont bergamot Bernouilli Bernoulli beseige besiege beseiged besieged beseiging besieging betwen between beween between bewteen between bilateraly bilaterally billingualism bilingualism binominal binomial bizzare bizarre blaim blame blaimed blamed blessure blessing Blitzkreig Blitzkrieg boaut bout, boat, about bodydbuilder bodybuilder bombardement bombardment bombarment bombardment bondary boundary Bonnano Bonanno borke broke boundry boundary bouyancy buoyancy bouyant buoyant boyant buoyant Brasillian Brazilian breakthough breakthrough breakthroughts breakthroughs breif brief breifly briefly brethen brethren bretheren brethren briliant brilliant brillant brilliant brimestone brimstone Britian Britain Brittish British broacasted broadcast broadacasting broadcasting broady broadly Buddah Buddha buisness business buisnessman businessman buoancy buoyancy buring burying, burning, burin, during burried buried busineses business, businesses busness business bussiness business cacuses caucuses cahracters characters calaber caliber calander calendar, calender, colander calculs calculus calenders calendars caligraphy calligraphy caluclate calculate caluclated calculated caluculate calculate caluculated calculated calulate calculate calulated calculated Cambrige Cambridge camoflage camouflage campain campaign campains campaigns candadate candidate candiate candidate candidiate candidate cannister canister cannisters canisters cannnot cannot cannonical canonical cannotation connotation cannotations connotations cant cannot, can not, can't caost coast caperbility capability Capetown Cape Town capible capable captial capital captued captured capturd captured carachter character caracterized characterized carcas carcass, Caracas carefull careful careing caring carismatic charismatic Carmalite Carmelite carmel caramel, carmel-by-the-sea carniverous carnivorous carreer career carrers careers Carribbean Caribbean Carribean Caribbean cartdridge cartridge Carthagian Carthaginian carthographer cartographer cartilege cartilage cartilidge cartilage cartrige cartridge casette cassette casion caisson cassawory cassowary cassowarry cassowary casulaties casualties casulaty casualty catagories categories catagorized categorized catagory category catergorize categorize catergorized categorized Cataline Catiline, Catalina cathlic catholic catholocism catholicism catterpilar caterpillar catterpilars caterpillars cattleship battleship causalities casualties Ceasar Caesar Celcius Celsius cellpading cellpadding cementary cemetery cemetarey cemetery cemetaries cemeteries cemetary cemetery cencus census censur censor, censure cententenial centennial centruies centuries centruy century ceratin certain, keratin cerimonial ceremonial cerimonies ceremonies cerimonious ceremonious cerimony ceremony ceromony ceremony certainity certainty certian certain cervial cervical, servile, serval chalenging challenging challange challenge challanged challenged challege challenge Champange Champagne changable changeable charachter character charactor character charachters characters charactersistic characteristic charactors characters charasmatic charismatic charaterized characterized chariman chairman charistics characteristics chasr chaser, chase cheif chief chemcial chemical chemcially chemically chemestry chemistry chemicaly chemically childbird childbirth childen children choosen chosen chracter character chuch church churchs churches Cincinatti Cincinnati Cincinnatti Cincinnati circulaton circulation circumsicion circumcision circut circuit ciricuit circuit ciriculum curriculum civillian civilian claer clear claerer clearer claerly clearly claimes claims clas class clasic classic clasical classical clasically classically cleareance clearance clera clear, sclera clincial clinical clinicaly clinically cmo com cmoputer computer co-incided coincided coctail cocktail coform conform cognizent cognizant coincedentally coincidentally colaborations collaborations colateral collateral colelctive collective collaberative collaborative collecton collection collegue colleague collegues colleagues collonade colonnade collonies colonies collony colony collosal colossal colonizators colonizers comander commander, commandeer comando commando comandos commandos comany company comapany company comback comeback combanations combinations combinatins combinations combusion combustion comdemnation condemnation comemmorates commemorates comemoretion commemoration comision commission comisioned commissioned comisioner commissioner comisioning commissioning comisions commissions comission commission comissioned commissioned comissioner commissioner comissioning commissioning comissions commissions comited committed comiting committing comitted committed comittee committee comitting committing commandoes commandos commedic comedic commemerative commemorative commemmorate commemorate commemmorating commemorating commerical commercial commerically commercially commericial commercial commericially commercially commerorative commemorative comming coming comminication communication commision commission commisioned commissioned commisioner commissioner commisioning commissioning commisions commissions commited committed commitee committee commiting committing committe committee committment commitment committments commitments commmemorated commemorated commongly commonly commonweath commonwealth commuications communications commuinications communications communciation communication communiation communication communites communities compability compatibility comparision comparison comparisions comparisons comparitive comparative comparitively comparatively compatabilities compatibilities compatability compatibility compatable compatible compatablities compatibilities compatablity compatibility compatiable compatible compatiblities compatibilities compatiblity compatibility compeitions competitions compensantion compensation competance competence competant competent competative competitive competion competition, completion competitiion competition competive competitive competiveness competitiveness comphrehensive comprehensive compitent competent completedthe completed the completelyl completely completetion completion complier compiler componant component comprable comparable comprimise compromise compulsary compulsory compulsery compulsory computarized computerized concensus consensus concider consider concidered considered concidering considering conciders considers concieted conceited concieved conceived concious conscious conciously consciously conciousness consciousness condamned condemned condemmed condemned condidtion condition condidtions conditions conditionsof conditions of conected connected conection connection conesencus consensus confidental confidential confidentally confidentially confids confides configureable configurable confortable comfortable congradulations congratulations congresional congressional conived connived conjecutre conjecture conjuction conjunction Conneticut Connecticut conotations connotations conquerd conquered conquerer conqueror conquerers conquerors conqured conquered conscent consent consciouness consciousness consdider consider consdidered considered consdiered considered consectutive consecutive consenquently consequently consentrate concentrate consentrated concentrated consentrates concentrates consept concept consequentually consequently consequeseces consequences consern concern conserned concerned conserning concerning conservitive conservative consiciousness consciousness consicousness consciousness considerd considered consideres considered consious conscious consistant consistent consistantly consistently consituencies constituencies consituency constituency consituted constituted consitution constitution consitutional constitutional consolodate consolidate consolodated consolidated consonent consonant consonents consonants consorcium consortium conspiracys conspiracies conspiriator conspirator constaints constraints constanly constantly constarnation consternation constatn constant constinually continually constituant constituent constituants constituents constituion constitution constituional constitutional consttruction construction constuction construction consulant consultant consumate consummate consumated consummated contaiminate contaminate containes contains contamporaries contemporaries contamporary contemporary contempoary contemporary contemporaneus contemporaneous contempory contemporary contendor contender contined continued continous continuous continously continuously continueing continuing contravercial controversial contraversy controversy contributer contributor contributers contributors contritutions contributions controled controlled controling controlling controll control controlls controls controvercial controversial controvercy controversy controveries controversies controversal controversial controversey controversy controvertial controversial controvery controversy contruction construction conveinent convenient convenant covenant convential conventional convertables convertibles convertion conversion conveyer conveyor conviced convinced convienient convenient coordiantion coordination coorperation cooperation, corporation coorperations corporations copmetitors competitors coputer computer copywrite copyright coridal cordial cornmitted committed corosion corrosion corparate corporate corperations corporations correcters correctors correponding corresponding correposding corresponding correspondant correspondent correspondants correspondents corridoors corridors corrispond correspond corrispondant correspondent corrispondants correspondents corrisponded corresponded corrisponding corresponding corrisponds corresponds costitution constitution coucil council coudl could, cloud councellor councillor, counselor, councilor councellors councillors, counselors, councilors counries countries countains contains countires countries coururier courier, couturier coverted converted, covered, coveted cpoy coy, copy creaeted created creedence credence critereon criterion criterias criteria criticists critics critising criticising, criticizing critisising criticising critisism criticism critisisms criticisms critisize criticise, criticize critisized criticised, criticized critisizes criticises, criticizes critisizing criticising, criticizing critized criticized critizing criticizing crockodiles crocodiles crowm crown crtical critical crticised criticised crucifiction crucifixion crusies cruises crystalisation crystallisation culiminating culminating cumulatative cumulative curch church curcuit circuit currenly currently curriculem curriculum cxan cyan cyclinder cylinder dael deal, dial, dahl dalmation dalmatian damenor demeanor Dardenelles Dardanelles dacquiri daiquiri debateable debatable decendant descendant decendants descendants decendent descendant decendents descendants decideable decidable decidely decidedly decieved deceived decison decision decomissioned decommissioned decomposit decompose decomposited decomposed decompositing decomposing decomposits decomposes decress decrees decribe describe decribed described decribes describes decribing describing dectect detect defendent defendant defendents defendants deffensively defensively deffine define deffined defined definance defiance definate definite definately definitely definatly definitely definetly definitely definining defining definit definite definitly definitely definiton definition defintion definition degrate degrade delagates delegates delapidated dilapidated delerious delirious delevopment development deliberatly deliberately delusionally delusively demenor demeanor demographical demographic demolision demolition demorcracy democracy demostration demonstration denegrating denigrating densly densely deparment department deparments departments deparmental departmental dependance dependence dependancy dependency dependant dependent deram dram, dream deriviated derived derivitive derivative derogitory derogatory descendands descendants descibed described descision decision descisions decisions descriibes describes descripters descriptors descripton description desctruction destruction descuss discuss desgined designed deside decide desigining designing desinations destinations desintegrated disintegrated desintegration disintegration desireable desirable desitned destined desktiop desktop desorder disorder desoriented disoriented desparate desperate, disparate despatched dispatched despict depict despiration desperation dessicated desiccated dessigned designed destablized destabilized destory destroy detailled detailed detatched detached deteoriated deteriorated deteriate deteriorate deterioriating deteriorating determinining determining detremental detrimental devasted devastated develope develop developement development developped developed develpment development devels delves devestated devastated devestating devastating devide divide devided divided devistating devastating devolopement development diablical diabolical diamons diamonds diaster disaster dichtomy dichotomy diconnects disconnects dicover discover dicovered discovered dicovering discovering dicovers discovers dicovery discovery dicussed discussed didnt didn't diea idea, die dieing dying, dyeing dieties deities diety deity diferent different diferrent different differentiatiations differentiations differnt different difficulity difficulty diffrent different dificulties difficulties dificulty difficulty dimenions dimensions dimention dimension dimentional dimensional dimentions dimensions dimesnional dimensional diminuitive diminutive diosese diocese diphtong diphthong diphtongs diphthongs diplomancy diplomacy dipthong diphthong dipthongs diphthongs dirived derived disagreeed disagreed disapeared disappeared disapointing disappointing disappearred disappeared disaproval disapproval disasterous disastrous disatisfaction dissatisfaction disatisfied dissatisfied disatrous disastrous discontentment discontent discribe describe discribed described discribes describes discribing describing disctinction distinction disctinctive distinctive disemination dissemination disenchanged disenchanted disiplined disciplined disobediance disobedience disobediant disobedient disolved dissolved disover discover dispair despair disparingly disparagingly dispence dispense dispenced dispensed dispencing dispensing dispicable despicable dispite despite dispostion disposition disproportiate disproportionate disputandem disputandum disricts districts dissagreement disagreement dissapear disappear dissapearance disappearance dissapeared disappeared dissapearing disappearing dissapears disappears dissappear disappear dissappears disappears dissappointed disappointed dissarray disarray dissobediance disobedience dissobediant disobedient dissobedience disobedience dissobedient disobedient distiction distinction distingish distinguish distingished distinguished distingishes distinguishes distingishing distinguishing distingquished distinguished distrubution distribution distruction destruction distructive destructive ditributed distributed diversed diverse, diverged divice device divison division divisons divisions doccument document doccumented documented doccuments documents docrines doctrines doctines doctrines documenatry documentary doens does doesnt doesn't doign doing dominaton domination dominent dominant dominiant dominant donig doing dosen't doesn't doub doubt, daub doulbe double dowloads downloads dramtic dramatic draughtman draughtsman Dravadian Dravidian dreasm dreams driectly directly drnik drink druming drumming drummless drumless dupicate duplicate durig during durring during duting during dyas dryas eahc each ealier earlier earlies earliest earnt earned ecclectic eclectic eceonomy economy ecidious deciduous eclispe eclipse ecomonic economic ect etc eearly early efel evil effeciency efficiency effecient efficient effeciently efficiently efficency efficiency efficent efficient efficently efficiently efford effort, afford effords efforts, affords effulence effluence eigth eighth, eight eiter either elction election electic eclectic, electric electon election, electron electrial electrical electricly electrically electricty electricity elementay elementary eleminated eliminated eleminating eliminating eles eels eletricity electricity elicided elicited eligable eligible elimentary elementary ellected elected elphant elephant embarass embarrass embarassed embarrassed embarassing embarrassing embarassment embarrassment embargos embargoes embarras embarrass embarrased embarrassed embarrasing embarrassing embarrasment embarrassment embezelled embezzled emblamatic emblematic eminate emanate eminated emanated emision emission emited emitted emiting emitting emition emission, emotion emmediately immediately emmigrated emigrated emminent eminent, imminent emminently eminently emmisaries emissaries emmisarries emissaries emmisarry emissary emmisary emissary emmision emission emmisions emissions emmited emitted emmiting emitting emmitted emitted emmitting emitting emnity enmity emperical empirical emphaised emphasised emphsis emphasis emphysyma emphysema empirial empirical, imperial emprisoned imprisoned enameld enameled enchancement enhancement encouraing encouraging encryptiion encryption encylopedia encyclopedia endevors endeavors endevour endeavour endig ending endolithes endoliths enduce induce ened need enflamed inflamed enforceing enforcing engagment engagement engeneer engineer engeneering engineering engieneer engineer engieneers engineers enlargment enlargement enlargments enlargements Enlish English, enlist enourmous enormous enourmously enormously ensconsed ensconced entaglements entanglements enteratinment entertainment entitity entity entitlied entitled entrepeneur entrepreneur entrepeneurs entrepreneurs enviorment environment enviormental environmental enviormentally environmentally enviorments environments enviornment environment enviornmental environmental enviornmentalist environmentalist enviornmentally environmentally enviornments environments enviroment environment enviromental environmental enviromentalist environmentalist enviromentally environmentally enviroments environments envolutionary evolutionary envrionments environments enxt next epidsodes episodes epsiode episode equialent equivalent equilibium equilibrium equilibrum equilibrium equiped equipped equippment equipment equitorial equatorial equivelant equivalent equivelent equivalent equivilant equivalent equivilent equivalent equivlalent equivalent erally orally, really eratic erratic eratically erratically eraticly erratically erested arrested, erected errupted erupted esential essential esitmated estimated esle else especialy especially essencial essential essense essence essentail essential essentialy essentially essentual essential essesital essential estabishes establishes establising establishing ethnocentricm ethnocentrism ethose those, ethos Europian European Europians Europeans Eurpean European Eurpoean European evenhtually eventually eventally eventually eventially eventually eventualy eventually everthing everything everytime every time everyting everything eveyr every evidentally evidently exagerate exaggerate exagerated exaggerated exagerates exaggerates exagerating exaggerating exagerrate exaggerate exagerrated exaggerated exagerrates exaggerates exagerrating exaggerating examinated examined exampt exempt exapansion expansion excact exact excange exchange excecute execute excecuted executed excecutes executes excecuting executing excecution execution excedded exceeded excelent excellent excell excel excellance excellence excellant excellent excells excels excercise exercise exchanching exchanging excisted existed exculsivly exclusively execising exercising exection execution exectued executed exeedingly exceedingly exelent excellent exellent excellent exemple example exept except exeptional exceptional exerbate exacerbate exerbated exacerbated exerciese exercises exerpt excerpt exerpts excerpts exersize exercise exerternal external exhalted exalted exhibtion exhibition exibition exhibition exibitions exhibitions exicting exciting exinct extinct existance existence existant existent existince existence exliled exiled exludes excludes exmaple example exonorate exonerate exoskelaton exoskeleton expalin explain expeced expected expecially especially expeditonary expeditionary expeiments experiments expell expel expells expels experiance experience experianced experienced expiditions expeditions expierence experience explaination explanation explaning explaining explictly explicitly exploititive exploitative explotation exploitation expropiated expropriated expropiation expropriation exressed expressed extemely extremely extention extension extentions extensions extered exerted extermist extremist extint extinct, extant extradiction extradition extraterrestial extraterrestrial extraterrestials extraterrestrials extravagent extravagant extrememly extremely extremeophile extremophile extremly extremely extrordinarily extraordinarily extrordinary extraordinary eyar year, eyas eyars years, eyas eyasr years, eyas faciliate facilitate faciliated facilitated faciliates facilitates facilites facilities facillitate facilitate facinated fascinated facist fascist familes families familliar familiar famoust famous fanatism fanaticism Farenheit Fahrenheit fatc fact faught fought favoutrable favourable feasable feasible Febuary February fedreally federally feromone pheromone fertily fertility fianite finite fianlly finally ficticious fictitious fictious fictitious fidn find fiel feel, field, file, phial fiels feels, fields, files, phials fiercly fiercely fightings fighting filiament filament fimilies families finacial financial finaly finally financialy financially firends friends firts flirts, first fisionable fissionable flamable flammable flawess flawless fleed fled, freed Flemmish Flemish florescent fluorescent flourescent fluorescent fluorish flourish follwoing following folowing following fomed formed fomr from, form fonetic phonetic fontrier fontier foootball football forbad forbade forbiden forbidden foreward foreword forfiet forfeit forhead forehead foriegn foreign Formalhaut Fomalhaut formallize formalize formallized formalized formaly formally formelly formerly formidible formidable formost foremost forsaw foresaw forseeable foreseeable fortelling foretelling forunner forerunner foucs focus foudn found fougth fought foundaries foundries foundary foundry Foundland Newfoundland fourties forties fourty forty fouth fourth foward forward fucntion function fucntioning functioning Fransiscan Franciscan Fransiscans Franciscans freind friend freindly friendly frequentily frequently frome from fromed formed froniter frontier fufill fulfill fufilled fulfilled fulfiled fulfilled fundametal fundamental fundametals fundamentals funguses fungi funtion function furuther further futher further futhermore furthermore futhroc futhark, futhorc gae game, Gael, gale galatic galactic Galations Galatians gallaxies galaxies galvinized galvanized Gameboy Game Boy ganerate generate ganes games ganster gangster garantee guarantee garanteed guaranteed garantees guarantees garnison garrison gauarana guaraná gaurantee guarantee gauranteed guaranteed gaurantees guarantees gaurd guard, gourd gaurentee guarantee gaurenteed guaranteed gaurentees guarantees geneological genealogical geneologies genealogies geneology genealogy generaly generally generatting generating genialia genitalia geographicial geographical geometrician geometer geometricians geometers gerat great Ghandi Gandhi glight flight gnawwed gnawed godess goddess godesses goddesses Godounov Godunov gogin going, Gauguin goign going gonig going Gothenberg Gothenburg Gottleib Gottlieb gouvener governor govement government govenment government govenrment government goverance governance goverment government govermental governmental governer governor governmnet government govorment government govormental governmental govornment government gracefull graceful graet great grafitti graffiti gramatically grammatically grammaticaly grammatically grammer grammar grat great gratuitious gratuitous greatful grateful greatfully gratefully greif grief gridles griddles gropu group grwo grow Guaduloupe Guadalupe, Guadeloupe Guadulupe Guadalupe, Guadeloupe guage gauge guarentee guarantee guarenteed guaranteed guarentees guarantees Guatamala Guatemala Guatamalan Guatemalan guerilla guerrilla guerillas guerrillas guerrila guerrilla guerrilas guerrillas guidence guidance Guilia Giulia Guilio Giulio Guiness Guinness Guiseppe Giuseppe gunanine guanine gurantee guarantee guranteed guaranteed gurantees guarantees guttaral guttural gutteral guttural habaeus habeas habeus habeas Habsbourg Habsburg haemorrage haemorrhage haev have, heave Hallowean Hallowe'en, Halloween halp help hapen happen hapened happened hapening happening happend happened happended happened happenned happened harased harassed harases harasses harasment harassment harasments harassments harassement harassment harras harass harrased harassed harrases harasses harrasing harassing harrasment harassment harrasments harassments harrassed harassed harrasses harassed harrassing harassing harrassment harassment harrassments harassments hasnt hasn't haviest heaviest headquater headquarter headquarer headquarter headquatered headquartered headquaters headquarters healthercare healthcare heared heard heathy healthy Heidelburg Heidelberg heigher higher heirarchy hierarchy heiroglyphics hieroglyphics helment helmet helpfull helpful helpped helped hemmorhage hemorrhage herad heard, Hera heridity heredity heroe hero heros heroes hertzs hertz hesistant hesitant heterogenous heterogeneous hieght height hierachical hierarchical hierachies hierarchies hierachy hierarchy hierarcical hierarchical hierarcy hierarchy hieroglph hieroglyph hieroglphs hieroglyphs higer higher higest highest higway highway hillarious hilarious himselv himself hinderance hindrance hinderence hindrance hindrence hindrance hipopotamus hippopotamus hismelf himself histocompatability histocompatibility historicians historians hitsingles hit singles holliday holiday homestate home state homogeneize homogenize homogeneized homogenized honory honorary horrifing horrifying hosited hoisted hospitible hospitable hounour honour housr hours, house howver however hsitorians historians hstory history hten then, hen, the htere there, here htey they htikn think hting thing htink think htis this humer humor, humour humerous humorous, humerus huminoid humanoid humoural humoral humurous humorous husban husband hvae have hvaing having hvea have, heave hwihc which hwile while hwole whole hydogen hydrogen hydropile hydrophile hydropilic hydrophilic hydropobe hydrophobe hydropobic hydrophobic hygeine hygiene hypocracy hypocrisy hypocrasy hypocrisy hypocricy hypocrisy hypocrit hypocrite hypocrits hypocrites iconclastic iconoclastic idaeidae idea idaes ideas idealogies ideologies idealogy ideology identicial identical identifers identifiers ideosyncratic idiosyncratic idesa ideas, ides idiosyncracy idiosyncrasy Ihaca Ithaca illegimacy illegitimacy illegitmate illegitimate illess illness illiegal illegal illution illusion ilness illness ilogical illogical imagenary imaginary imagin imagine imaginery imaginary, imagery imanent eminent, imminent imcomplete incomplete imediately immediately imense immense imigrant emigrant, immigrant imigrated emigrated, immigrated imigration emigration, immigration iminent eminent, imminent, immanent immediatley immediately immediatly immediately immidately immediately immidiately immediately immitate imitate immitated imitated immitating imitating immitator imitator immunosupressant immunosuppressant impecabbly impeccably impedence impedance implamenting implementing impliment implement implimented implemented imploys employs importamt important imprioned imprisoned imprisonned imprisoned improvision improvisation improvments improvements inablility inability inaccessable inaccessible inadiquate inadequate inadquate inadequate inadvertant inadvertent inadvertantly inadvertently inagurated inaugurated inaguration inauguration inappropiate inappropriate inaugures inaugurates inbalance imbalance inbalanced imbalanced inbetween between incarcirated incarcerated incidentially incidentally incidently incidentally inclreased increased includ include includng including incompatabilities incompatibilities incompatability incompatibility incompatable incompatible incompatablities incompatibilities incompatablity incompatibility incompatiblities incompatibilities incompatiblity incompatibility incompetance incompetence incompetant incompetent incomptable incompatible incomptetent incompetent inconsistant inconsistent incorperation incorporation incorportaed incorporated incorprates incorporates incorruptable incorruptible incramentally incrementally increadible incredible incredable incredible inctroduce introduce inctroduced introduced incuding including incunabla incunabula indefinately indefinitely indefineable undefinable indefinitly indefinitely indentical identical indepedantly independently indepedence independence independance independence independant independent independantly independently independece independence independendet independent indictement indictment indigineous indigenous indipendence independence indipendent independent indipendently independently indespensible indispensable indespensable indispensable indispensible indispensable indisputible indisputable indisputibly indisputably indite indict individualy individually indpendent independent indpendently independently indulgue indulge indutrial industrial indviduals individuals inefficienty inefficiently inevatible inevitable inevitible inevitable inevititably inevitably infalability infallibility infallable infallible infectuous infectious infered inferred infilitrate infiltrate infilitrated infiltrated infilitration infiltration infinit infinite inflamation inflammation influencial influential influented influenced infomation information informtion information infrantryman infantryman infrigement infringement ingenius ingenious ingreediants ingredients inhabitans inhabitants inherantly inherently inheritage heritage, inheritance inheritence inheritance inital initial initally initially initation initiation initiaitive initiative inlcuding including inmigrant immigrant inmigrants immigrants innoculated inoculated inocence innocence inofficial unofficial inot into inpeach impeach inpolite impolite inprisonment imprisonment inproving improving insectiverous insectivorous insensative insensitive inseperable inseparable insistance insistence insitution institution insitutions institutions inspite in spite, inspire instade instead instatance instance institue institute instuction instruction instuments instruments instutionalized institutionalized instutions intuitions insurence insurance intelectual intellectual inteligence intelligence inteligent intelligent intenational international intepretation interpretation intepretator interpretor interational international interbread interbreed, interbred interchangable interchangeable interchangably interchangeably intercontinetal intercontinental intered interred, interned interelated interrelated interferance interference interfereing interfering intergrated integrated intergration integration interm interim internation international interpet interpret interrim interim interrugum interregnum intertaining entertaining interupt interrupt intervines intervenes intevene intervene intial initial intially initially intrduced introduced intrest interest introdued introduced intruduced introduced intrusted entrusted intutive intuitive intutively intuitively inudstry industry inumerable enumerable, innumerable inventer inventor invertibrates invertebrates investingate investigate involvment involvement irelevent irrelevant iresistable irresistible iresistably irresistibly iresistible irresistible iresistibly irresistibly iritable irritable iritated irritated ironicly ironically irregardless regardless irrelevent irrelevant irreplacable irreplaceable irresistable irresistible irresistably irresistibly isnt isn't Israelies Israelis issueing issuing itnroduced introduced iunior junior iwll will iwth with Japanes Japanese jaques jacques jeapardy jeopardy jewllery jewellery Johanine Johannine Jospeh Joseph jouney journey journied journeyed journies journeys jstu just jsut just Juadaism Judaism Juadism Judaism judical judicial judisuary judiciary juducial judicial juristiction jurisdiction juristictions jurisdictions kindergarden kindergarten klenex kleenex knifes knives knive knife knowlege knowledge knowlegeable knowledgeable knwo know knwos knows konw know konws knows kwno know labatory lavatory, laboratory labled labelled, labeled labratory laboratory laguage language laguages languages larg large largst largest larrry larry lastr last lattitude latitude launchs launch launhed launched lavae larvae layed laid lazyness laziness leaded led leage league leanr lean, learn, leaner leathal lethal lefted left legitamate legitimate legitmate legitimate leibnitz leibniz lenght length leran learn lerans learns lieuenant lieutenant leutenant lieutenant levetate levitate levetated levitated levetates levitates levetating levitating levle level liasion liaison liason liaison liasons liaisons libary library libell libel libguistic linguistic libguistics linguistics libitarianisn libertarianism lible libel, liable lieing lying liek like liekd liked liesure leisure lieved lived liftime lifetime lightyear light year lightyears light years likelyhood likelihood linnaena linnaean lippizaner lipizzaner liquify liquefy liscense license, licence lisence license, licence lisense license, licence listners listeners litature literature literture literature littel little litterally literally liuke like livley lively lmits limits loev love lonelyness loneliness longitudonal longitudinal lonley lonely lonly lonely, only loosing losing lotharingen lothringen lsat last lukid likud lveo love lvoe love Lybia Libya mackeral mackerel magasine magazine magincian magician magnificient magnificent magolia magnolia mailny mainly maintainance maintenance maintainence maintenance maintance maintenance maintenence maintenance maintinaing maintaining maintioned mentioned majoroty majority maked marked, made makse makes Malcom Malcolm maltesian Maltese mamal mammal mamalian mammalian managable manageable, manageably managment management manisfestations manifestations manoeuverability maneuverability manouver maneuver, manoeuvre manouverability maneuverability, manoeuvrability, manoeuverability manouverable maneuverable, manoeuvrable manouvers maneuvers, manoeuvres mantained maintained manuever maneuver, manoeuvre manuevers maneuvers, manoeuvres manufacturedd manufactured manufature manufacture manufatured manufactured manufaturing manufacturing manuver maneuver mariage marriage marjority majority markes marks marketting marketing marmelade marmalade marrage marriage marraige marriage marrtyred martyred marryied married Massachussets Massachusetts Massachussetts Massachusetts massmedia mass media masterbation masturbation mataphysical metaphysical materalists materialist mathamatics mathematics mathematican mathematician mathematicas mathematics matheticians mathematicians mathmatically mathematically mathmatician mathematician mathmaticians mathematicians mccarthyst mccarthyist mchanics mechanics meaninng meaning mear wear, mere, mare mechandise merchandise medacine medicine medeival medieval medevial medieval mediciney mediciny medievel medieval mediterainnean mediterranean Mediteranean Mediterranean meerkrat meerkat melieux milieux membranaphone membranophone memeber member menally mentally meranda veranda, Miranda mercentile mercantile messanger messenger messenging messaging metalic metallic metalurgic metallurgic metalurgical metallurgical metalurgy metallurgy metamorphysis metamorphosis metaphoricial metaphorical meterologist meteorologist meterology meteorology methaphor metaphor methaphors metaphors Michagan Michigan micoscopy microscopy midwifes midwives mileau milieu milennia millennia milennium millennium mileu milieu miliary military milion million miliraty military millenia millennia millenial millennial millenialism millennialism millenium millennium millepede millipede millioniare millionaire millitary military millon million miltary military minature miniature minerial mineral miniscule minuscule ministery ministry minstries ministries minstry ministry minumum minimum mirrorred mirrored miscelaneous miscellaneous miscellanious miscellaneous miscellanous miscellaneous mischeivous mischievous mischevious mischievous mischievious mischievous misdameanor misdemeanor misdameanors misdemeanors misdemenor misdemeanor misdemenors misdemeanors misfourtunes misfortunes misile missile Misouri Missouri mispell misspell mispelled misspelled mispelling misspelling missen mizzen Missisipi Mississippi Missisippi Mississippi missle missile missonary missionary misterious mysterious mistery mystery misteryous mysterious mkae make mkaes makes mkaing making mkea make moderm modem modle model moent moment moeny money mohammedans muslims moil mohel moleclues molecules momento memento monestaries monasteries monestary monastery, monetary monickers monikers monolite monolithic Monserrat Montserrat montains mountains montanous mountainous monts months montypic monotypic moreso more, more so morgage mortgage Morisette Morissette Morrisette Morissette morroccan moroccan morrocco morocco morroco morocco mosture moisture motiviated motivated mounth month movei movie movment movement mroe more mucuous mucous muder murder mudering murdering muhammadan muslim multicultralism multiculturalism multipled multiplied multiplers multipliers munbers numbers muncipalities municipalities muncipality municipality munnicipality municipality muscels mussels, muscles muscial musical muscician musician muscicians musicians mutiliated mutilated myraid myriad mysef myself mysogynist misogynist mysogyny misogyny mysterous mysterious Mythraic Mithraic naieve naive Napoleonian Napoleonic naturaly naturally naturely naturally naturual natural naturually naturally Nazereth Nazareth neccesarily necessarily neccesary necessary neccessarily necessarily neccessary necessary neccessities necessities necesarily necessarily necesary necessary necessiate necessitate neglible negligible negligable negligible negociate negotiate negociation negotiation negociations negotiations negotation negotiation neice niece, nice neigborhood neighborhood neigbour neighbour, neighbor neigbourhood neighbourhood neigbouring neighbouring, neighboring neigbours neighbours, neighbors neolitic neolithic nessasarily necessarily nessecary necessary nestin nesting neverthless nevertheless newletters newsletters Newyorker New Yorker nickle nickel nightfa;; nightfall nightime nighttime nineth ninth ninteenth nineteenth ninties 1990s ninty ninety nkow know nkwo know nmae name noncombatents noncombatants nonsence nonsense nontheless nonetheless noone no one norhern northern northen northern northereastern northeastern notabley notably noteable notable noteably notably noteriety notoriety noth north nothern northern noticable noticeable noticably noticeably noticeing noticing noticible noticeable notwhithstanding notwithstanding noveau nouveau nowdays nowadays nowe now nto not nucular nuclear nuculear nuclear nuisanse nuisance Nullabour Nullarbor numberous numerous Nuremburg Nuremberg nusance nuisance nutritent nutrient nutritents nutrients nuturing nurturing obediance obedience obediant obedient obession obsession obssessed obsessed obstacal obstacle obstancles obstacles obstruced obstructed ocasion occasion ocasional occasional ocasionally occasionally ocasionaly occasionally ocasioned occasioned ocasions occasions ocassion occasion ocassional occasional ocassionally occasionally ocassionaly occasionally ocassioned occasioned ocassions occasions occaison occasion occassion occasion occassional occasional occassionally occasionally occassionaly occasionally occassioned occasioned occassions occasions occationally occasionally occour occur occurance occurrence occurances occurrences occured occurred occurence occurrence occurences occurrences occuring occurring occurr occur occurrance occurrence occurrances occurrences octohedra octahedra octohedral octahedral octohedron octahedron ocuntries countries ocuntry country ocurr occur ocurrance occurrence ocurred occurred ocurrence occurrence offcers officers offcially officially offereings offerings offical official officals officials offically officially officaly officially officialy officially offred offered oftenly often oging going, ogling omision omission omited omitted omiting omitting omlette omelette ommision omission ommited omitted ommiting omitting ommitted omitted ommitting omitting omniverous omnivorous omniverously omnivorously omre more onot note, not onyl only openess openness oponent opponent oportunity opportunity opose oppose oposite opposite oposition opposition oppenly openly oppinion opinion opponant opponent oppononent opponent oppositition opposition oppossed opposed opprotunity opportunity opression oppression opressive oppressive opthalmic ophthalmic opthalmologist ophthalmologist opthalmology ophthalmology opthamologist ophthalmologist optmizations optimizations optomism optimism orded ordered organim organism organiztion organization orgin origin, organ orginal original orginally originally orginize organise oridinarily ordinarily origanaly originally originall original, originally originaly originally originially originally originnally originally origional original orignally originally orignially originally otehr other ouevre oeuvre overshaddowed overshadowed overthere over there overwelming overwhelming overwheliming overwhelming owrk work owudl would oxigen oxygen oximoron oxymoron paide paid paitience patience palce place, palace paleolitic paleolithic paliamentarian parliamentarian Palistian Palestinian Palistinian Palestinian Palistinians Palestinians pallete palette pamflet pamphlet pamplet pamphlet pantomine pantomime Papanicalou Papanicolaou paralel parallel paralell parallel paralelly parallelly paralely parallelly parallely parallelly paranthesis parenthesis paraphenalia paraphernalia parellels parallels parituclar particular parliment parliament parrakeets parakeets parralel parallel parrallel parallel parrallell parallel parrallelly parallelly parrallely parallelly partialy partially particually particularly particualr particular particuarly particularly particularily particularly particulary particularly pary party pased passed pasengers passengers passerbys passersby pasttime pastime pastural pastoral paticular particular pattented patented pavillion pavilion payed paid peacefuland peaceful and peageant pageant peculure peculiar pedestrain pedestrian peice piece Peloponnes Peloponnesus penatly penalty penerator penetrator penisula peninsula penisular peninsular penninsula peninsula penninsular peninsular pennisula peninsula pensinula peninsula peom poem peoms poems peopel people peotry poetry perade parade percepted perceived percieve perceive percieved perceived perenially perennially perfomers performers performence performance performes performed, performs perhasp perhaps perheaps perhaps perhpas perhaps peripathetic peripatetic peristent persistent perjery perjury perjorative pejorative permanant permanent permenant permanent permenantly permanently permissable permissible perogative prerogative peronal personal perosnality personality perphas perhaps perpindicular perpendicular perseverence perseverance persistance persistence persistant persistent personel personnel, personal personell personnel personnell personnel persuded persuaded persue pursue persued pursued persuing pursuing persuit pursuit persuits pursuits pertubation perturbation pertubations perturbations pessiary pessary petetion petition Pharoah Pharaoh phenomenom phenomenon phenomenonal phenomenal phenomenonly phenomenally phenomonenon phenomenon phenomonon phenomenon phenonmena phenomena Philipines Philippines philisopher philosopher philisophical philosophical philisophy philosophy Phillipine Philippine Phillipines Philippines Phillippines Philippines phillosophically philosophically philospher philosopher philosphies philosophies philosphy philosophy Phonecian Phoenecian phongraph phonograph phylosophical philosophical physicaly physically pich pitch pilgrimmage pilgrimage pilgrimmages pilgrimages pinapple pineapple pinnaple pineapple pinoneered pioneered plagarism plagiarism planation plantation planed planned plantiff plaintiff plateu plateau plausable plausible playright playwright playwrite playwright playwrites playwrights pleasent pleasant plebicite plebiscite plesant pleasant poeoples peoples poety poetry poisin poison polical political polinator pollinator polinators pollinators politican politician politicans politicians poltical political polute pollute poluted polluted polutes pollutes poluting polluting polution pollution polyphonyic polyphonic polysaccaride polysaccharide polysaccharid polysaccharide pomegranite pomegranate pomotion promotion poportional proportional popoulation population popularaty popularity populare popular populer popular portayed portrayed portraing portraying Portugese Portuguese portuguease portuguese posess possess posessed possessed posesses possesses posessing possessing posession possession posessions possessions posion poison positon position, positron possable possible possably possibly posseses possesses possesing possessing possesion possession possessess possesses possibile possible possibilty possibility possiblility possibility possiblilty possibility possiblities possibilities possiblity possibility possition position Postdam Potsdam posthomous posthumous postion position postive positive potatos potatoes portait portrait potrait portrait potrayed portrayed poulations populations poverful powerful poweful powerful powerfull powerful practial practical practially practically practicaly practically practicioner practitioner practicioners practitioners practicly practically practioner practitioner practioners practitioners prairy prairie prarie prairie praries prairies pratice practice preample preamble precedessor predecessor preceed precede preceeded preceded preceeding preceding preceeds precedes precentage percentage precice precise precisly precisely precurser precursor predecesors predecessors predicatble predictable predicitons predictions predomiantly predominately prefered preferred prefering preferring preferrably preferably pregancies pregnancies preiod period preliferation proliferation premeire premiere premeired premiered premillenial premillennial preminence preeminence premission permission Premonasterians Premonstratensians preocupation preoccupation prepair prepare prepartion preparation prepatory preparatory preperation preparation preperations preparations preriod period presedential presidential presense presence presidenital presidential presidental presidential presitgious prestigious prespective perspective prestigeous prestigious prestigous prestigious presumabely presumably presumibly presumably pretection protection prevelant prevalent preverse perverse previvous previous pricipal principal priciple principle priestood priesthood primarly primarily primative primitive primatively primitively primatives primitives primordal primordial priveledges privileges privelege privilege priveleged privileged priveleges privileges privelige privilege priveliged privileged priveliges privileges privelleges privileges privilage privilege priviledge privilege priviledges privileges privledge privilege privte private probabilaty probability probablistic probabilistic probablly probably probalibity probability probaly probably probelm problem proccess process proccessing processing procede proceed, precede proceded proceeded, preceded procedes proceeds, precedes procedger procedure proceding proceeding, preceding procedings proceedings proceedure procedure proces process processer processor proclaimation proclamation proclamed proclaimed proclaming proclaiming proclomation proclamation profesion profusion, profession profesor professor professer professor proffesed professed proffesion profession proffesional professional proffesor professor profilic prolific progessed progressed programable programmable progrom pogrom, program progroms pogroms, programs prohabition prohibition prologomena prolegomena prominance prominence prominant prominent prominantly prominently prominately prominently, predominately promiscous promiscuous promotted promoted pronomial pronominal pronouced pronounced pronounched pronounced pronounciation pronunciation proove prove prooved proved prophacy prophecy propietary proprietary propmted prompted propoganda propaganda propogate propagate propogates propagates propogation propagation propostion proposition propotions proportions propper proper propperly properly proprietory proprietary proseletyzing proselytizing protaganist protagonist protaganists protagonists protocal protocol protoganist protagonist protrayed portrayed protruberance protuberance protruberances protuberances prouncements pronouncements provacative provocative provded provided provicial provincial provinicial provincial provisonal provisional provisiosn provision proximty proximity pseudononymous pseudonymous pseudonyn pseudonym psuedo pseudo psycology psychology psyhic psychic publicaly publicly puchasing purchasing Pucini Puccini Puertorrican Puerto Rican Puertorricans Puerto Ricans pumkin pumpkin puritannical puritanical purposedly purposely purpotedly purportedly pursuade persuade pursuaded persuaded pursuades persuades pususading persuading puting putting pwoer power pyscic psychic qtuie quite, quiet quantaty quantity quantitiy quantity quarantaine quarantine Queenland Queensland questonable questionable quicklyu quickly quinessential quintessential quitted quit quizes quizzes qutie quite, quiet rabinnical rabbinical racaus raucous radiactive radioactive radify ratify raelly really rarified rarefied reaccurring recurring reacing reaching reacll recall readmition readmission realitvely relatively realsitic realistic realtions relations realy really realyl really reasearch research rebiulding rebuilding rebllions rebellions rebounce rebound reccomend recommend reccomendations recommendations reccomended recommended reccomending recommending reccommend recommend reccommended recommended reccommending recommending reccuring recurring receeded receded receeding receding receivedfrom received from recepient recipient recepients recipients receving receiving rechargable rechargeable reched reached recide reside recided resided recident resident recidents residents reciding residing reciepents recipients reciept receipt recieve receive recieved received reciever receiver recievers receivers recieves receives recieving receiving recipiant recipient recipiants recipients recived received recivership receivership recogise recognise recogize recognize recomend recommend recomended recommended recomending recommending recomends recommends recommedations recommendations reconaissance reconnaissance reconcilation reconciliation reconized recognized reconnaissence reconnaissance recontructed reconstructed recordproducer record producer recquired required recrational recreational recrod record recuiting recruiting recuring recurring recurrance recurrence rediculous ridiculous reedeming redeeming reenforced reinforced refect reflect refedendum referendum referal referral refered referred referiang referring refering referring refernces references referrence reference referrs refers reffered referred refference reference refrence reference refrences references refrers refers refridgeration refrigeration refridgerator refrigerator refromist reformist refusla refusal regardes regards regluar regular reguarly regularly regulaion regulation regulaotrs regulators regularily regularly rehersal rehearsal reicarnation reincarnation reigining reigning reknown renown reknowned renowned rela real relaly really relatiopnship relationship relativly relatively relected reelected releive relieve releived relieved releiver reliever releses releases relevence relevance relevent relevant reliablity reliability relient reliant religeous religious religous religious religously religiously relinqushment relinquishment relitavely relatively relized realised, realized relpacement replacement remaing remaining remeber remember rememberable memorable rememberance remembrance remembrence remembrance remenant remnant remenicent reminiscent reminent remnant reminescent reminiscent reminscent reminiscent reminsicent reminiscent rendevous rendezvous rendezous rendezvous renedered rende renewl renewal rentors renters reoccurrence recurrence reorganision reorganisation repatition repetition, repartition repentence repentance repentent repentant repeteadly repeatedly repetion repetition repid rapid reponse response reponsible responsible reportadly reportedly represantative representative representive representative representives representatives reproducable reproducible reprtoire repertoire repsectively respectively reptition repetition requirment requirement requred required resaurant restaurant resembelance resemblance resembes resembles resemblence resemblance resevoir reservoir resignement resignment resistable resistible resistence resistance resistent resistant respectivly respectively responce response responibilities responsibilities responisble responsible responnsibilty responsibility responsability responsibility responsibile responsible responsibilites responsibilities responsiblity responsibility ressemblance resemblance ressemble resemble ressembled resembled ressemblence resemblance ressembling resembling resssurecting resurrecting ressurect resurrect ressurected resurrected ressurection resurrection ressurrection resurrection restaraunt restaurant restaraunteur restaurateur restaraunteurs restaurateurs restaraunts restaurants restauranteurs restaurateurs restauration restoration restauraunt restaurant resteraunt restaurant resteraunts restaurants resticted restricted restraunt restraint, restaurant resturant restaurant resturaunt restaurant resurecting resurrecting retalitated retaliated retalitation retaliation retreive retrieve returnd returned revaluated reevaluated reveral reversal reversable reversible revolutionar revolutionary rewitten rewritten rewriet rewrite rhymme rhyme rhythem rhythm rhythim rhythm rhytmic rhythmic rigeur rigueur, rigour, rigor rigourous rigorous rininging ringing rised rose Rockerfeller Rockefeller rococco rococo rocord record roomate roommate rougly roughly rucuperate recuperate rudimentatry rudimentary rulle rule runing running runnung running russina Russian Russion Russian rwite write rythem rhythm rythim rhythm rythm rhythm rythmic rhythmic rythyms rhythms sacrafice sacrifice sacreligious sacrilegious sacrifical sacrificial saftey safety safty safety salery salary sanctionning sanctioning sandwhich sandwich Sanhedrim Sanhedrin santioned sanctioned sargant sergeant sargeant sergeant sasy says, sassy satelite satellite satelites satellites Saterday Saturday Saterdays Saturdays satisfactority satisfactorily satric satiric satrical satirical satrically satirically sattelite satellite sattelites satellites saught sought saveing saving saxaphone saxophone scaleable scalable scandanavia Scandinavia scaricity scarcity scavanged scavenged schedual schedule scholarhip scholarship scholarstic scholastic, scholarly scientfic scientific scientifc scientific scientis scientist scince science scinece science scirpt script scoll scroll screenwrighter screenwriter scrutinity scrutiny scuptures sculptures seach search seached searched seaches searches secceeded seceded, succeeded seceed succeed, secede seceeded succeeded, seceded secratary secretary secretery secretary sedereal sidereal seeked sought segementation segmentation seguoys segues seige siege seing seeing seinor senior seldomly seldom senarios scenarios sence sense senstive sensitive sensure censure seperate separate seperated separated seperately separately seperates separates seperating separating seperation separation seperatism separatism seperatist separatist sepina subpoena sepulchure sepulchre, sepulcher sepulcre sepulchre, sepulcher sergent sergeant settelement settlement settlment settlement severeal several severley severely severly severely sevice service shaddow shadow shamen shaman, shamans sheat sheath, sheet, cheat sheild shield sherif sheriff shineing shining shiped shipped shiping shipping shopkeeepers shopkeepers shorly shortly shortwhile short while shoudl should shoudln should, shouldn't shouldnt shouldn't shreak shriek shrinked shrunk sicne since sideral sidereal sieze seize, size siezed seized, sized siezing seizing, sizing siezure seizure siezures seizures siginificant significant signficant significant signficiant significant signfies signifies signifantly significantly significently significantly signifigant significant signifigantly significantly signitories signatories signitory signatory similarily similarly similiar similar similiarity similarity similiarly similarly simmilar similar simpley simply simplier simpler simultanous simultaneous simultanously simultaneously sincerley sincerely singsog singsong sinse sines, since Sionist Zionist Sionists Zionists Sixtin Sistine Skagerak Skagerrak skateing skating slaugterhouses slaughterhouses slowy slowly smae same smealting smelting smoe some sneeks sneaks snese sneeze socalism socialism socities societies soem some sofware software sohw show soilders soldiers solatary solitary soley solely soliders soldiers soliliquy soliloquy soluable soluble somene someone somtimes sometimes somwhere somewhere sophicated sophisticated sorceror sorcerer sorrounding surrounding sotry story sotyr satyr, story soudn sound soudns sounds sould could, should, sold sountrack soundtrack sourth south sourthern southern souvenier souvenir souveniers souvenirs soveits soviets sovereignity sovereignty soverign sovereign soverignity sovereignty soverignty sovereignty spainish Spanish speach speech specfic specific speciallized specialised, specialized specif specific, specify specifiying specifying speciman specimen spectauclar spectacular spectaulars spectaculars spects aspects, expects spectum spectrum speices species spendour splendour spermatozoan spermatozoon spoace space sponser sponsor sponsered sponsored spontanous spontaneous sponzored sponsored spoonfulls spoonfuls sppeches speeches spreaded spread sprech speech spred spread spriritual spiritual spritual spiritual sqaure square stablility stability stainlees stainless staion station standars standards stange strange startegic strategic startegies strategies startegy strategy stateman statesman statememts statements statment statement steriods steroids sterotypes stereotypes stilus stylus stingent stringent stiring stirring stirrs stirs stlye style stong strong stopry story storeis stories storise stories stornegst strongest stoyr story stpo stop stradegies strategies stradegy strategy strat start, strata stratagically strategically streemlining streamlining stregth strength strenghen strengthen strenghened strengthened strenghening strengthening strenght strength strenghten strengthen strenghtened strengthened strenghtening strengthening strengtened strengthened strenous strenuous strictist strictest strikely strikingly strnad strand stroy story, destroy structual structural stubborness stubbornness stucture structure stuctured structured studdy study studing studying stuggling struggling sturcture structure subcatagories subcategories subcatagory subcategory subconsiously subconsciously subjudgation subjugation submachne submachine subpecies subspecies subsidary subsidiary subsiduary subsidiary subsquent subsequent subsquently subsequently substace substance substancial substantial substatial substantial substituded substituted substract subtract substracted subtracted substracting subtracting substraction subtraction substracts subtracts subtances substances subterranian subterranean suburburban suburban succceeded succeeded succcesses successes succedded succeeded succeded succeeded succeds succeeds succesful successful succesfully successfully succesfuly successfully succesion succession succesive successive successfull successful successully successfully succsess success succsessfull successful suceed succeed suceeded succeeded suceeding succeeding suceeds succeeds sucesful successful sucesfully successfully sucesfuly successfully sucesion succession sucess success sucesses successes sucessful successful sucessfull successful sucessfully successfully sucessfuly successfully sucession succession sucessive successive sucessor successor sucessot successor sucide suicide sucidial suicidal sufferage suffrage sufferred suffered sufferring suffering sufficent sufficient sufficently sufficiently sumary summary sunglases sunglasses suop soup superceeded superseded superintendant superintendent suphisticated sophisticated suplimented supplemented supose suppose suposed supposed suposedly supposedly suposes supposes suposing supposing supplamented supplemented suppliementing supplementing suppoed supposed supposingly supposedly suppy supply supress suppress supressed suppressed supresses suppresses supressing suppressing suprise surprise suprised surprised suprising surprising suprisingly surprisingly suprize surprise suprized surprised suprizing surprising suprizingly surprisingly surfce surface surley surly, surely suround surround surounded surrounded surounding surrounding suroundings surroundings surounds surrounds surplanted supplanted surpress suppress surpressed suppressed surprize surprise surprized surprised surprizing surprising surprizingly surprisingly surrended surrounded, surrendered surrepetitious surreptitious surrepetitiously surreptitiously surreptious surreptitious surreptiously surreptitiously surronded surrounded surrouded surrounded surrouding surrounding surrundering surrendering surveilence surveillance surveill surveil surveyer surveyor surviver survivor survivers survivors survivied survived suseptable susceptible suseptible susceptible suspention suspension swaer swear swaers swears swepth swept swiming swimming syas says symetrical symmetrical symetrically symmetrically symetry symmetry symettric symmetric symmetral symmetric symmetricaly symmetrically synagouge synagogue syncronization synchronization synonomous synonymous synonymns synonyms synphony symphony syphyllis syphilis sypmtoms symptoms syrap syrup sysmatically systematically sytem system sytle style tabacco tobacco tahn than taht that talekd talked targetted targeted targetting targeting tast taste tath that tattooes tattoos taxanomic taxonomic taxanomy taxonomy teached taught techician technician techicians technicians techiniques techniques technitian technician technnology technology technolgy technology teh the tehy they telelevision television televsion television telphony telephony temerature temperature temparate temperate temperarily temporarily temperment temperament tempertaure temperature temperture temperature temprary temporary tenacle tentacle tenacles tentacles tendacy tendency tendancies tendencies tendancy tendency tennisplayer tennis player tepmorarily temporarily terrestial terrestrial terriories territories terriory territory territorist terrorist territoy territory terroist terrorist testiclular testicular tghe the thast that, that's theather theater, theatre theese these theif thief theives thieves themselfs themselves themslves themselves ther there, their, the therafter thereafter therby thereby theri their thgat that thge the thier their thign thing thigns things thigsn things thikn think thikning thinking, thickening thikns thinks thiunk think thn then thna than thne then thnig thing thnigs things thoughout throughout threatend threatened threatning threatening threee three threshhold threshold thrid third throrough thorough throughly thoroughly throught thought, through, throughout througout throughout thru through thsi this thsoe those thta that thyat that tiem time, Tim tihkn think tihs this timne time tiome time, tome tje the tjhe the tjpanishad upanishad tkae take tkaes takes tkaing taking tlaking talking tobbaco tobacco todays today's todya today toghether together tolerence tolerance Tolkein Tolkien tomatos tomatoes tommorow tomorrow tommorrow tomorrow tongiht tonight toriodal toroidal tormenters tormentors torpeados torpedoes torpedos torpedoes tothe to the toubles troubles tounge tongue tourch torch, touch towords towards towrad toward tradionally traditionally traditionaly traditionally traditionnal traditional traditition tradition tradtionally traditionally trafficed trafficked trafficing trafficking trafic traffic trancendent transcendent trancending transcending tranform transform tranformed transformed transcendance transcendence transcendant transcendent transcendentational transcendental transcripting transcribing, transcription transending transcending transesxuals transsexuals transfered transferred transfering transferring transformaton transformation transistion transition translater translator translaters translators transmissable transmissible transporation transportation tremelo tremolo tremelos tremolos triguered triggered triology trilogy troling trolling troup troupe troups troupes, troops truely truly trustworthyness trustworthiness turnk turnkey, trunk Tuscon Tucson tust trust twelth twelfth twon town twpo two tyhat that tyhe they typcial typical typicaly typically tyranies tyrannies tyrany tyranny tyrranies tyrannies tyrrany tyranny ubiquitious ubiquitous uise use Ukranian Ukrainian ultimely ultimately unacompanied unaccompanied unahppy unhappy unanymous unanimous unathorised unauthorised unavailible unavailable unballance unbalance unbeleivable unbelievable uncertainity uncertainty unchallengable unchallengeable unchangable unchangeable uncompetive uncompetitive unconcious unconscious unconciousness unconsciousness unconfortability discomfort uncontitutional unconstitutional unconvential unconventional undecideable undecidable understoon understood undesireable undesirable undetecable undetectable undoubtely undoubtedly undreground underground uneccesary unnecessary unecessary unnecessary unequalities inequalities unforetunately unfortunately unforgetable unforgettable unforgiveable unforgivable unfortunatley unfortunately unfortunatly unfortunately unfourtunately unfortunately unihabited uninhabited unilateraly unilaterally unilatreal unilateral unilatreally unilaterally uninterruped uninterrupted uninterupted uninterrupted UnitesStates UnitedStates univeral universal univeristies universities univeristy university universtiy university univesities universities univesity university unkown unknown unlikey unlikely unmanouverable unmaneuverable, unmanoeuvrable unmistakeably unmistakably unneccesarily unnecessarily unneccesary unnecessary unneccessarily unnecessarily unneccessary unnecessary unnecesarily unnecessarily unnecesary unnecessary unoffical unofficial unoperational nonoperational unoticeable unnoticeable unplease displease unplesant unpleasant unprecendented unprecedented unprecidented unprecedented unrepentent unrepentant unrepetant unrepentant unrepetent unrepentant unsed used, unused, unsaid unsubstanciated unsubstantiated unsuccesful unsuccessful unsuccesfully unsuccessfully unsuccessfull unsuccessful unsucesful unsuccessful unsucesfuly unsuccessfully unsucessful unsuccessful unsucessfull unsuccessful unsucessfully unsuccessfully unsuprised unsurprised unsuprising unsurprising unsuprisingly unsurprisingly unsuprized unsurprised unsuprizing unsurprising unsuprizingly unsurprisingly unsurprized unsurprised unsurprizing unsurprising unsurprizingly unsurprisingly untill until untranslateable untranslatable unuseable unusable unusuable unusable unviersity university unwarrented unwarranted unweildly unwieldy unwieldly unwieldy upcomming upcoming upgradded upgraded usally usually useage usage usefull useful usefuly usefully useing using usualy usually ususally usually vaccum vacuum vaccume vacuum vacinity vicinity vaguaries vagaries vaieties varieties vailidty validity valetta valletta valuble valuable valueable valuable varations variations varient variant variey variety varing varying varities varieties varity variety vasall vassal vasalls vassals vegatarian vegetarian vegitable vegetable vegitables vegetables vegtable vegetable vehicule vehicle vell well venemous venomous vengance vengeance vengence vengeance verfication verification verison version verisons versions vermillion vermilion versitilaty versatility versitlity versatility vetween between veyr very vigeur vigueur, vigour, vigor vigilence vigilance vigourous vigorous villian villain villification vilification villify vilify villin villi, villain, villein vincinity vicinity violentce violence virutal virtual virtualy virtually virutally virtually visable visible visably visibly visting visiting vistors visitors vitories victories volcanoe volcano voleyball volleyball volontary voluntary volonteer volunteer volonteered volunteered volonteering volunteering volonteers volunteers volounteer volunteer volounteered volunteered volounteering volunteering volounteers volunteers vreity variety vrey very vriety variety vulnerablility vulnerability vyer very vyre very waht what wanna want to warantee warranty wardobe wardrobe warrent warrant warrriors warriors wasnt wasn't wass was watn want wayword wayward weaponary weaponry weas was wehn when weild wield, wild weilded wielded wendsay Wednesday wensday Wednesday wereabouts whereabouts whant want whants wants whcih which wheras whereas wherease whereas whereever wherever whic which whihc which whith with whlch which whn when wholey wholly wholy wholly, holy whta what whther whether wich which, witch widesread widespread wief wife wierd weird wiew view wih with wiht with wille will willingless willingness wirting writing withdrawl withdrawal, withdraw witheld withheld withing within withold withhold witht with witn with wiull will wnat want wnated wanted wnats wants wohle whole wokr work wokring working wonderfull wonderful workststion workstation worls world wordlwide worldwide worshipper worshiper worshipping worshiping worstened worsened woudl would wresters wrestlers wriet write writen written wroet wrote wrok work wroking working ws was wtih with wupport support xenophoby xenophobia yaching yachting yatch yacht yeasr years yeild yield yeilding yielding Yementite Yemenite, Yemeni yearm year yera year yeras years yersa years youseff yousef youself yourself ytou you yuo you joo you zeebra zebra [[Category:Wikipedia tools]] hunspell-1.7.2/tests/suggestiontest/Makefile.in0000664000175000017500000003163414353370163016610 00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/suggestiontest ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/visibility.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CURSESLIB = @CURSESLIB@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HUNSPELL_VERSION_MAJOR = @HUNSPELL_VERSION_MAJOR@ HUNSPELL_VERSION_MINOR = @HUNSPELL_VERSION_MINOR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ READLINELIB = @READLINELIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = \ List_of_common_misspellings.txt \ Makefile.orig \ prepare \ README \ test all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/suggestiontest/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/suggestiontest/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: hunspell-1.7.2/tests/suggestiontest/prepare0000755000175000017500000000241213422074107016110 00000000000000#!/bin/bash # Check common misspellings # input file format: # word->word1, ... # Source: http://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines hunspell=../../src/tools/hunspell hlang=${HUNSPELL:-en_US} alang=${ASPELL:-en_US} input=${INPUT:-List_of_common_misspellings.txt} # remove bad words recognised by Hunspell as good cat $input | sed 's/[-]>/ /' | $hunspell -d $hlang -1 -L | # remove items with dash for Aspell grep '^[^-]* ' | # remove spaces from end of lines sed 's/ *$//' >$input.1 # remove bad words recognised by Aspell as good cut -f 1 -d ' ' $input.1 | aspell -l $alang --list | awk 'FILENAME=="-"{a[$1]=1;next}a[$1]{print$0}' - $input.1 | # change commas with tabs sed 's/, */ /g' >$input.2 # remove lines with unrecognised suggestions (except suggestion with spaces) cut -d ' ' -f 2- $input.2 | tr "\t" "\n" | grep -v ' ' >x.1 cat x.1 | $hunspell -l -d $hlang >x.2 cat x.1 | aspell -l $alang --list >>x.2 cat x.2 | awk 'BEGIN{FS="\t"} FILENAME=="-"{a[$1]=1;next}a[$2]!=1 && a[$3]!=1{print $0}' - $input.2 >$input.3 cut -f 1 -d ' ' $input.3 | aspell -l $alang -a | grep -v ^$ | sed -n '2,$p' | sed 's/^.*: //;s/, / /g' >$input.4 cat $input.3 | $hunspell -d $hlang -a -1 | grep -v ^$ | sed -n '2,$p' | sed 's/^.*: //;s/, / /g' >$input.5 hunspell-1.7.2/tests/suggestiontest/Makefile.orig0000644000175000017500000000012313422074107017120 00000000000000all: ./prepare ./test single: ./prepare2 ./test clean: rm *.[1-5] result.* hunspell-1.7.2/tests/suggestiontest/README0000644000175000017500000000066713422074107015416 00000000000000source of text data: Wikipedia http://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines For testing Hunspell you need the extended en_US dictionary with phonetic table: http://hunspell.sourceforge.net/en_US.zip test: make -f Makefile.orig test only with Hunspell: make -f Makefile.orig single test with different input file and dictionaries: INPUT=dutchlist.txt HUNSPELL=nl_NL ASPELL=nl make -f Makefile.orig hunspell-1.7.2/tests/suggestiontest/test0000755000175000017500000000165413422074107015440 00000000000000#!/bin/bash # Check common misspellings # input file format: # word->word1, ... # Source: http://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines input=${INPUT:-List_of_common_misspellings.txt} function check() { cat $1 | awk 'BEGIN{maxord=0;FS="\t"}FILENAME=="-"{for (i=1; i<=NF; i++){a[NR,$(i)]=i};max=NR;next}{x1=a[NR-max,$2];x2=a[NR-max,$3];sug++;if($3)sug++;if (!x1&&!x2){mis2++;misrow=misrow"\n"$0};if(!x1||($3 && !x2))mis++;ord+=x1+x2;}END{ print "Missed rows", misrow; print "=======================================" print maxord, "max. suggestion for a word"; print max, "input rows"; print mis2, "missing rows"; print sug, "expected suggestions"; print mis, "missing suggestions"; print ord/(sug-mis), "average ranking"; }' - $2 } test -f $input.4 && check $input.4 $input.3 >result.aspell check $input.5 $input.3 >result.hunspell test -f result.aspell && tail -6 result.aspell tail -6 result.hunspell hunspell-1.7.2/tests/suggestiontest/Makefile.am0000644000175000017500000000013113422074107016554 00000000000000EXTRA_DIST= \ List_of_common_misspellings.txt \ Makefile.orig \ prepare \ README \ test hunspell-1.7.2/tests/needaffix3.dic0000644000175000017500000000001013565705656014144 000000000000002 foo/A hunspell-1.7.2/tests/checkcompoundpattern.aff0000644000175000017500000000022313565705656016353 00000000000000# forbid compounds with spec. pattern at word bounds COMPOUNDFLAG A CHECKCOMPOUNDPATTERN 2 CHECKCOMPOUNDPATTERN nny ny CHECKCOMPOUNDPATTERN ssz sz hunspell-1.7.2/tests/1748408-3.aff0000664000175000017500000000001014352145647013117 00000000000000AM 2000 hunspell-1.7.2/tests/hu.dic0000644000175000017500000000033213565705656012553 0000000000000020 majom/Y kenyér/Y fa/Y ág/Y virág/Y sárkány/Y fog/Y vetemény/Y iskola/Y tej/Y akció/Y devon/Y kor/Y társ/Y devon kor e-mail cím Strattmann Strattmann-nal Batthyány áll/S forr/S víz/Y tartály/Y forró/F! hunspell-1.7.2/tests/circumfix.aff0000644000175000017500000000044613565705656014133 00000000000000# circumfixes: ~ obligate prefix/suffix combinations # superlative in Hungarian: leg- (prefix) AND -bb (suffix) CIRCUMFIX X PFX A Y 1 PFX A 0 leg/X . PFX B Y 1 PFX B 0 legesleg/X . SFX C Y 3 SFX C 0 obb . is:COMPARATIVE SFX C 0 obb/AX . is:SUPERLATIVE SFX C 0 obb/BX . is:SUPERSUPERLATIVE hunspell-1.7.2/tests/morph.morph0000644000175000017500000000327413565705656013662 00000000000000> drink analyze(drink) = st:drink po:noun analyze(drink) = st:drink po:verb al:drank al:drunk ts:present stem(drink) = drink > drinks analyze(drinks) = st:drink po:verb al:drank al:drunk ts:present is:sg_3 analyze(drinks) = st:drink po:noun is:plur stem(drinks) = drink > drinkable analyze(drinkable) = st:drink po:verb al:drank al:drunk ts:present ds:der_able stem(drinkable) = drinkable > drinkables analyze(drinkables) = st:drink po:verb al:drank al:drunk ts:present ds:der_able is:plur stem(drinkables) = drinkable > undrinkable analyze(undrinkable) = dp:pfx_un sp:un st:drink po:verb al:drank al:drunk ts:present ds:der_able stem(undrinkable) = undrinkable > undrinkables analyze(undrinkables) = dp:pfx_un sp:un st:drink po:verb al:drank al:drunk ts:present ds:der_able is:plur stem(undrinkables) = undrinkable > drank analyze(drank) = po:verb st:drink is:past_1 stem(drank) = drink > drunk analyze(drunk) = po:verb st:drink is:past_2 stem(drunk) = drink > phenomenon analyze(phenomenon) = st:phenomenon po:noun al:phenomena stem(phenomenon) = phenomenon > phenomena analyze(phenomena) = po:noun st:phenomenon is:plur stem(phenomena) = phenomenon generate(drink, eat) = drink generate(drink, eats) = drinks generate(drink, ate) = drank generate(drink, eaten) = drunk generate(drink, eatable) = drinkable generate(drink, eatables) = drinkables generate(drink, phenomena) = drinks generate(drinks, eat) = drink generate(drinks, eats) = drinks generate(drinks, ate) = drank generate(drinks, eaten) = drunk generate(drinks, eatable) = drinkable generate(drinks, eatables) = drinkables generate(drinks, phenomena) = drinks generate(undrinkable, phenomena) = undrinkables generate(phenomenon, drinks) = phenomena hunspell-1.7.2/tests/iconv.dic0000644000175000017500000000003213565705656013252 000000000000004 Chișinău Țepes ț Ș hunspell-1.7.2/tests/checkcompoundrep.wrong0000644000175000017500000000004513565705656016066 00000000000000szervíz szervízkocsi kocsiszervíz hunspell-1.7.2/tests/right_to_left_mark.aff0000644000175000017500000000046613565705656016007 00000000000000# Arabic test for feature ignoring diacritics and RLM (U+200F, RIGHT-TO-LEFT-MARK) # (Extended version of the test "ignoreutf") SET UTF-8 # Arabic diacritics (harakat): # sukun, shadda, kasra, damma, fatha, kasratan, dammantan, fathatan (left to right) IGNORE ًٌٍَُِّْ‏ WORDCHARS ًٌٍَُِّْ‏ hunspell-1.7.2/tests/utf8_bom.good0000644000175000017500000000002613565705656014053 00000000000000apéritif APÉRITIF hunspell-1.7.2/tests/ngram_utf_fix.wrong0000644000175000017500000000004213565705656015362 00000000000000времячко человеко hunspell-1.7.2/tests/map.dic0000644000175000017500000000003313565705656012712 000000000000003 Frhstck tkrfr gro hunspell-1.7.2/tests/korean.good0000644000175000017500000000004013565705656013603 00000000000000들어오세요 안녕하세요 hunspell-1.7.2/tests/circumfix.good0000644000175000017500000000005013565705656014316 00000000000000nagy nagyobb legnagyobb legeslegnagyobb hunspell-1.7.2/tests/i58202.sug0000644000175000017500000000013513565705656013030 00000000000000foo, Boo Bar Baz Boo foo bar foo Bar Foo bar Foo Bar foo Baz Foo Baz Baz foo Baz Foo Baz Boo hunspell-1.7.2/tests/checksharpsutf.good0000644000175000017500000000023213565705656015344 00000000000000müßig Müßig MÜSSIG Ausstoß Abstoß. Außenabmessung Prozessionsstraße Außenmaße AUSSTOSS ABSTOSS. AUSSENABMESSUNG PROZESSIONSSTRASSE AUSSENMASSE hunspell-1.7.2/tests/needaffix5.dic0000644000175000017500000000001113565705656014147 000000000000001 foo/AC hunspell-1.7.2/tests/rep.dic0000644000175000017500000000012113565705656012721 0000000000000010 form phantom vacation vacations a lot un alunno bar barbars vinte e un auto/A hunspell-1.7.2/tests/oconv2.good0000644000175000017500000000000413565705656013532 00000000000000aas hunspell-1.7.2/tests/onlyincompound.aff0000644000175000017500000000016013565705656015210 00000000000000# words only in compounds (see also fogemorpheme example) ONLYINCOMPOUND O COMPOUNDFLAG A SFX B Y 1 SFX B 0 s . hunspell-1.7.2/tests/limit-multiple-compounding.wrong0000664000175000017500000000001214353357752020014 00000000000000foobarbaz hunspell-1.7.2/tests/warn.good0000644000175000017500000000001113565705656013271 00000000000000foo foos hunspell-1.7.2/tests/compoundforbid.dic0000644000175000017500000000003313565705656015147 000000000000003 foo/S example/X foobaz/Z hunspell-1.7.2/tests/compoundforbid.good0000644000175000017500000000005013565705656015337 00000000000000foo example foobar foobaz foobarexample hunspell-1.7.2/tests/utfcompound.dic0000644000175000017500000000006613565705656014506 000000000000008 foo/A bar/A fóó/A áár/A xy/A yz/A éé/A őő/A hunspell-1.7.2/tests/checkcompoundrep2.aff0000664000175000017500000000122214353261120015523 00000000000000# check fix of regression of commit ce8071b9d3312b3599714fc36fcc3fac11cdae97: # Return value of string.find() was ignored in AffixMgr::cpdrep_check(), # applying REP replacements at all positions before the last matching position. # # For example a regression in Hungarian spell checking: # # Correct closed compound word "fa+ajtó" was rejected: the ó -> o replacement # applied on the second character position, replacing "aa" with "o" there # (2-character length of UTF-8 character "ó"), and the result "fojtó" # is a correct dictionary word, which was the reason for rejection. SET UTF-8 COMPOUNDMIN 2 COMPOUNDFLAG x CHECKCOMPOUNDREP REP 1 REP ó o hunspell-1.7.2/tests/compoundrule2.aff0000644000175000017500000000006113565705656014731 00000000000000COMPOUNDMIN 1 COMPOUNDRULE 1 COMPOUNDRULE A*B*C* hunspell-1.7.2/tests/allcaps2.aff0000644000175000017500000000017713565705656013644 00000000000000# forbidden all caps words are case sensitive # iPod -> ipodos ("iPodic" in Hungarian) FORBIDDENWORD * SFX s N 1 SFX s 0 os . hunspell-1.7.2/tests/1748408-1.aff0000664000175000017500000000035414352145647013130 00000000000000# Crashtest for bug 1748408. Parsing an alias file with # more than (4096 / sizeof(void*)) elements would crash when trying to # pre-allocate the array of pointers. # The Hungarian dictionary that caught this had ~1500 entries. AF 2000 hunspell-1.7.2/tests/circumfix.morph0000644000175000017500000000053413565705656014522 00000000000000> nagy analyze(nagy) = st:nagy po:adj stem(nagy) = nagy > nagyobb analyze(nagyobb) = st:nagy po:adj is:COMPARATIVE stem(nagyobb) = nagy > legnagyobb analyze(legnagyobb) = fl:A st:nagy po:adj is:SUPERLATIVE stem(legnagyobb) = nagy > legeslegnagyobb analyze(legeslegnagyobb) = fl:B st:nagy po:adj is:SUPERSUPERLATIVE stem(legeslegnagyobb) = nagy hunspell-1.7.2/tests/condition.aff0000644000175000017500000000250113565705656014122 00000000000000SET ISO8859-2 WORDCHARS 0123456789 SFX S N 18 SFX S 0 suf1 . SFX S 0 suf2 o SFX S 0 suf3 [aeou] SFX S 0 suf4 [^o] SFX S 0 suf5 [^aeou] SFX S 0 suf6 fo SFX S 0 suf7 f[aeou] SFX S 0 suf8 f[^o] SFX S 0 suf9 f[^aeou] SFX S 0 suf10 [aefu]o SFX S 0 suf11 [^f]o SFX S 0 suf12 [^aefu]o SFX S 0 suf13 [aefu][^aefu] SFX S 0 suf14 [^aeou][aeou] SFX S 0 suf15 [aeou][^aefu] SFX S 0 suf16 [^aeou][^aefu] SFX S 0 suf17 [aeou][bcdfgkmnoprstvz] SFX S 0 suf18 [aeou]o SFX Q N 2 SFX Q 0 ning [^aeio][aeiou]n SFX Q 0 ing [aeio][aeiou][bcdfgkmnprstvz] SFX T N 1 SFX T y ies .[^aeiou]y PFX U N 1 PFX U 0 un wr. SFX Z Y 3 SFX Z 0 ch [].a SFX Z 0 m [].a SFX Z a 0 [].a PFX P N 18 PFX P 0 pre1 . PFX P 0 pre2 o PFX P 0 pre3 [aeou] PFX P 0 pre4 [^o] PFX P 0 pre5 [^aeou] PFX P 0 pre6 of PFX P 0 pre7 o[aefou] PFX P 0 pre8 o[^f] PFX P 0 pre9 o[^aefu] PFX P 0 pre10 [aefu]o PFX P 0 pre11 [^f]o PFX P 0 pre12 [^aefou]o PFX P 0 pre13 [aeou][aefu] PFX P 0 pre14 [aeou][^aeou] PFX P 0 pre15 [aeou][^aefu] PFX P 0 pre16 [^aefu][^aeou] PFX P 0 pre17 [bcdfgkmnoprstvz][aeou] PFX P 0 pre18 o[aeou] PFX R N 2 PFX R 0 gnin n[aeiou][^aeio] PFX R 0 gni [bcdfgkmnprstvz][aeiou][aeio] hunspell-1.7.2/tests/onlyincompound.sug0000644000175000017500000000000013565705656015243 00000000000000hunspell-1.7.2/tests/flagutf8.aff0000644000175000017500000000023513565705656013656 00000000000000# UTF-8 flags FLAG UTF-8 SFX A Y 1 SFX A 0 s/ÖüÜ . #SFX A 0 s/ÖüÖÜ . SFX Ö Y 1 SFX Ö 0 bar . SFX ü Y 1 SFX ü 0 baz . PFX Ü Y 1 PFX Ü 0 un . hunspell-1.7.2/tests/1748408-3.dic0000664000175000017500000000000614352145647013127 00000000000000dummy hunspell-1.7.2/tests/checkcompoundtriple.good0000644000175000017500000000006413565705656016374 00000000000000operafoo operaeel operabare eelbare eelfoo eelopera hunspell-1.7.2/tests/needaffix4.aff0000644000175000017500000000003313565705656014147 00000000000000NEEDAFFIX X COMPOUNDFLAG Y hunspell-1.7.2/tests/i54980.good0000644000175000017500000000003213565705656013167 00000000000000cœur œuvre CŒUR ŒUVRE hunspell-1.7.2/tests/sug2.aff0000644000175000017500000000117013565705656013015 00000000000000# new suggestion methods of Hunspell 1.7: # dictionary word pairs with spaces or dashes # got top priority, and removes other not # "good" (uppercase, REP, ph:) suggestions: # # "alot" -> "a lot" # # Note: use ph: at the dictionary word pair # with space or dash to keep the other not # "good" suggestions, for example # # a lot ph:alot # # results "alot" -> "a lot", "alto", "slot"... # switch off ngram suggestion for testing MAXNGRAMSUGS 0 KEY qwertzuiop|asdfghjkl|yxcvbnm|aq # Note: TRY with a letter "a" or "-" needs for # checking dictionary word pairs with dashes TRY esianrtolcdugmphbyfvkwz' WORDCHARS .- FORBIDDENWORD ? hunspell-1.7.2/tests/forceucase.dic0000644000175000017500000000002513565705656014255 000000000000003 foo/C bar/C baz/CA hunspell-1.7.2/tests/onlyincompound2.dic0000644000175000017500000000002213565705656015272 000000000000002 foo/A pseudo/AB hunspell-1.7.2/tests/dotless_i.wrong0000644000175000017500000000005513565705656014523 00000000000000Diyarbakir DIYARBAKIR Iç İşık IÇ İŞIK hunspell-1.7.2/tests/flagutf8.dic0000644000175000017500000000001213565705656013652 000000000000001 foo/AÜ hunspell-1.7.2/tests/sug2.wrong0000644000175000017500000000002613565705656013414 00000000000000alot inspite scotfree hunspell-1.7.2/tests/i68568utf.wrong0000644000175000017500000000005213565705656014123 00000000000000foó'bár foó'Bár Foó'bár foó' FOÓ' hunspell-1.7.2/tests/allcaps2.wrong0000644000175000017500000000001413565705656014232 00000000000000ipod iPodos hunspell-1.7.2/tests/needaffix5.wrong0000644000175000017500000000006013565705656014550 00000000000000pseudoprefoo foopseudosuf pseudoprefoopseudosuf hunspell-1.7.2/tests/allcaps_utf.good0000644000175000017500000000006013565705656014623 00000000000000OpenOffice.org OPENOFFICE.ORG UNICEF's UNICEF'S hunspell-1.7.2/tests/compoundrule.dic0000644000175000017500000000002013565705656014645 000000000000003 a/A b/B c/BC hunspell-1.7.2/tests/fullstrip.good0000644000175000017500000000006713565705656014361 00000000000000andare vado va andiamo riandare rivado riva riandiamo hunspell-1.7.2/tests/nepali.aff0000644000175000017500000000030513565705656013404 00000000000000SET UTF-8 IGNORE ￰ WORDCHARS ःािीॉॊोौॎॏॕॖॗ‌‍ ICONV 5 ICONV ‌_ ‌ ICONV र्‌य र्‌य ICONV र्‌व र्‌व ICONV ‌ ￰ ICONV ‍_ ￰ hunspell-1.7.2/tests/checkcompoundpattern3.good0000644000175000017500000000010413565705656016630 00000000000000bozan barfoo banfoo banbar foobar fooban foobanbar boobar boobarfoo hunspell-1.7.2/tests/compoundaffix3.dic0000644000175000017500000000002213565705656015060 000000000000002 foo/XPS bar/XPS hunspell-1.7.2/tests/nepali.good0000644000175000017500000000006413565705656013602 00000000000000न्न न्‌न अलम्‍ र्‌य hunspell-1.7.2/tests/allcaps.aff0000664000175000017500000000023714352145647013552 00000000000000# check uppercase forms of allcaps word + affix and words with mixed casing WORDCHARS '. SFX S N 1 SFX S 0 's . PFX L N 1 PFX L 0 L' . hunspell-1.7.2/tests/korean.wrong0000644000175000017500000000001513565705656014011 00000000000000들어오세 hunspell-1.7.2/tests/checkcompoundcase.aff0000644000175000017500000000013313565705656015611 00000000000000# forbid upper case letters at word bounds in compounding CHECKCOMPOUNDCASE COMPOUNDFLAG A hunspell-1.7.2/tests/opentaal_cpdpat2.dic0000644000175000017500000000005113565705656015355 00000000000000100 test/CACBCc zout/CACBXm suiker/CACBXmhunspell-1.7.2/tests/utf8.good0000644000175000017500000000006713565705656013223 00000000000000foo foó fooőő fooő foóő foő foőo foőoo foóó hunspell-1.7.2/tests/checkcompoundpattern2.aff0000644000175000017500000000033713565705656016443 00000000000000# forbid compounds with spec. pattern at word bound and allow modificated form # (for German and Indian languages) COMPOUNDFLAG A CHECKCOMPOUNDPATTERN 2 CHECKCOMPOUNDPATTERN o b z CHECKCOMPOUNDPATTERN oo ba u COMPOUNDMIN 1 hunspell-1.7.2/tests/opentaal_cpdpat2.wrong0000644000175000017500000000001713565705656015754 00000000000000zoutsuikertest hunspell-1.7.2/tests/opentaal_cpdpat2.good0000644000175000017500000000002013565705656015542 00000000000000zout-suikertest hunspell-1.7.2/tests/keepcase.wrong0000644000175000017500000000004613565705656014316 00000000000000Foo FOO BAR bar Baz. BAZ. quux. QUUX. hunspell-1.7.2/tests/utf8_nonbmp.sug0000644000175000017500000000004613565705656014437 00000000000000𐏒𐏑, 𐏒𐏒 𐏒𐏑, 𐏒𐏒 hunspell-1.7.2/tests/complexprefixes.dic0000644000175000017500000000001213565705656015347 000000000000001 ouro/B hunspell-1.7.2/tests/opentaal_cpdpat.dic0000644000175000017500000000004313565705656015274 000000000000003 schoonheid/Ch port/CcXs sport/Cc hunspell-1.7.2/tests/flaglong.aff0000644000175000017500000000021613565705656013726 00000000000000# 2-character flags FLAG long SFX zx Y 1 SFX zx 0 s/g?1G09 . SFX g? Y 1 SFX g? 0 bar . SFX 1G Y 1 SFX 1G 0 baz . PFX 09 Y 1 PFX 09 0 un . hunspell-1.7.2/tests/break.wrong0000644000175000017500000000020213565705656013614 00000000000000fox bax -foo bar- fox-bar foo-bax foo–bax fox–bar foo-bar-fox-bar foo-bax-foo-bar foo-bar–fox-bar foo-bax–foo-bar foo-baz hunspell-1.7.2/tests/i68568utf.aff0000644000175000017500000000016213565705656013525 00000000000000# Sant'Elia -> SANT'ELIA (Italian) # OpenOffice.org Issue 68658 SET UTF-8 PFX a Y 1 PFX a 0 Foó' B WORDCHARS ' hunspell-1.7.2/tests/utf8_bom2.good0000644000175000017500000000002613565705656014135 00000000000000apéritif APÉRITIF hunspell-1.7.2/tests/onlyincompound.wrong0000644000175000017500000000001713565705656015611 00000000000000pseudo pseudos hunspell-1.7.2/tests/i58202.dic0000644000175000017500000000002213565705656012764 000000000000004 foo bar Baz Boo hunspell-1.7.2/tests/allcaps3.dic0000644000175000017500000000005513565705656013643 000000000000004 UNESCO/S Unesco/S Nasa/S NASA/S ACTS act/s hunspell-1.7.2/tests/slash.aff0000644000175000017500000000010013565705656013237 00000000000000# slashes in words (\/) # (only for tokenization) WORDCHARS /: hunspell-1.7.2/tests/1592880.aff0000644000175000017500000000042713565705656013001 00000000000000# fix homonym handling for German dictionary project, # reported by Björn Jacke (sf.net Bug ID 1592880). SET ISO8859-1 SFX N Y 1 SFX N 0 n . SFX S Y 1 SFX S 0 s . SFX P Y 1 SFX P 0 en . SFX Q Y 2 SFX Q 0 e . SFX Q 0 en . COMPOUNDEND z COMPOUNDPERMITFLAG c ONLYINCOMPOUND o hunspell-1.7.2/tests/checkcompoundpattern.good0000644000175000017500000000003713565705656016552 00000000000000könnyszámítás hossznyelés hunspell-1.7.2/tests/allcaps.good0000664000175000017500000000010414352145424013730 00000000000000OpenOffice.org OPENOFFICE.ORG UNICEF's UNICEF'S L'AFRIQUE L'Afrique hunspell-1.7.2/tests/compoundrule6.dic0000644000175000017500000000001713565705656014741 000000000000003 a/A b/B c/C hunspell-1.7.2/tests/i54633.aff0000644000175000017500000000011113565705656012764 00000000000000# Missing capitalized suggestion for capitalized bad words SET ISO8859-1 hunspell-1.7.2/tests/opentaal_keepcase.sug0000644000175000017500000000017213565705656015643 00000000000000Tv-word, Tv- word, Word Tv- word, Word word -tv, word-tv, word word -tv, word-tv, word wordword-tv Tv-word-tv NATO- -NATO hunspell-1.7.2/tests/compoundrule5.good0000644000175000017500000000005113565705656015127 0000000000000010% 0.2% 0.20% 123.4561‰ 10 0000 10.25 hunspell-1.7.2/tests/arabic.aff0000644000175000017500000000011113565705656013350 00000000000000SET UTF-8 TRY أ IGNORE ٌٍَُِّْ PFX Aa Y 1 PFX Aa 0 0/X0 أ[^ي] hunspell-1.7.2/tests/complexprefixesutf.wrong0000644000175000017500000000006513565705656016473 00000000000000ⲧⲉⲕⲟⲩⲣⲟ ⲙⲉⲧⲧⲉⲕⲟⲩⲣⲟ hunspell-1.7.2/tests/1463589_utf.dic0000644000175000017500000000001713565705656013660 000000000000001 Kühlschrank hunspell-1.7.2/tests/2999225.dic0000644000175000017500000000002513565705656013003 000000000000003 foo/aA bar/b baz/B hunspell-1.7.2/tests/IJ.wrong0000644000175000017500000000000413565705656013032 00000000000000Ijs hunspell-1.7.2/tests/checkcompoundrep.good0000644000175000017500000000002313565705656015656 00000000000000vízszer szerkocsi hunspell-1.7.2/tests/compoundrule4.dic0000644000175000017500000000021513565705656014737 0000000000000022 0/nm 1/n1 2/nm 3/nm 4/nm 5/nm 6/nm 7/nm 8/nm 9/nm 0th/pt 1st/p 1th/tc 2nd/p 2th/tc 3rd/p 3th/tc 4th/pt 5th/pt 6th/pt 7th/pt 8th/pt 9th/pt hunspell-1.7.2/tests/wordpair.dic0000644000175000017500000000004213565705656013764 000000000000003 word/Y compound/Y compound word hunspell-1.7.2/tests/allcaps_utf.dic0000644000175000017500000000003213565705656014431 000000000000002 OpenOffice.org UNICEF/S hunspell-1.7.2/tests/checkcompoundtriple.aff0000644000175000017500000000011613565705656016176 00000000000000# Forbid compound word with triple letters CHECKCOMPOUNDTRIPLE COMPOUNDFLAG A hunspell-1.7.2/tests/ignoresug.morph0000644000175000017500000000066613565705656014541 00000000000000> ինչ analyze(ինչ) = st:ինչ stem(ինչ) = ինչ > ի՞նչ analyze(ի՞նչ) = st:ինչ stem(ի՞նչ) = ինչ > մնաս analyze(մնաս) = st:մնաս stem(մնաս) = մնաս > մնա՜ս analyze(մնա՜ս) = st:մնաս stem(մնա՜ս) = մնաս > որտեղ analyze(որտեղ) = st:որտեղ stem(որտեղ) = որտեղ > որտե՞ղ analyze(որտե՞ղ) = st:որտեղ stem(որտե՞ղ) = որտեղ hunspell-1.7.2/tests/i58202.aff0000644000175000017500000000007613565705656012772 00000000000000# case suggestions MAXNGRAMSUGS 0 # capitalise baz->Baz TRY B hunspell-1.7.2/tests/opentaal_forbiddenword1.dic0000644000175000017500000000004413565705656016733 000000000000004 foo/W word/W bar/WS foowordbar/FS hunspell-1.7.2/tests/nosuggest.aff0000644000175000017500000000025713565705656014160 00000000000000# don't suggest word with NOSUGGEST flag (for example vulgar or obscene words) # See OpenOffice.org Issue #55498 # (nosuggest.sug is an empty file) NOSUGGEST A COMPOUNDFLAG B hunspell-1.7.2/tests/compoundrule.good0000644000175000017500000000001013565705656015035 00000000000000abc acc hunspell-1.7.2/tests/germancompoundingold.good0000644000175000017500000000035613565705656016551 00000000000000Computer Computern Arbeit Arbeits- Computerarbeit Computerarbeits- Arbeitscomputer Arbeitscomputern Computerarbeitscomputer Computerarbeitscomputern Arbeitscomputerarbeit Computerarbeits-Computer Computerarbeits-Computern Computer-Arbeit hunspell-1.7.2/tests/base.good0000664000175000017500000000030614352145424013227 00000000000000created uncreate uncreated imply implied unnatural conveyed sawyer NASA FAQs can't doesn't won't Created Hello HELLO NASA etc. etc HELLO lip. text. NASA. Text. TEXT. Hunspell. HUNSPELL. HUNSPELL... hunspell-1.7.2/tests/checkcompoundpattern.wrong0000644000175000017500000000010513565705656016752 00000000000000könnynyelés hosszszámítás hosszkönnynyelés könnynyeléshossz hunspell-1.7.2/tests/ignoreutf.good0000644000175000017500000000013613565705656014334 00000000000000طير فتحة ضمة كسرة فتحتان ضمتان كسرتان شدة سكون hunspell-1.7.2/tests/flagnum.good0000644000175000017500000000007213565705656013762 00000000000000foo foos foosbar foosbaz unfoo unfoos unfoosbar unfoosbaz hunspell-1.7.2/tests/fullstrip.aff0000644000175000017500000000061213565705656014161 00000000000000# FULLSTRIP option: Hunspell can strip full words by affix rules # see OpenOffice.org Issue #80145 # test data from Davide Prina FULLSTRIP SET ISO8859-15 TRY aioertnsclmdpgubzfvhàq'ACMSkBGPLxEyRTVòIODNwFéùèìjUZKHWJYQX SFX A Y 3 # verbo andare (verb to go) SFX A andare vado andare # io vado (I go) SFX A andare va andare # tu vai (you go) SFX A are iamo andare # noi andiamo (we go) hunspell-1.7.2/tests/flagnum.aff0000644000175000017500000000023613565705656013570 00000000000000# numerical flags FLAG num SFX 999 Y 1 SFX 999 0 s/214,216,54321 . SFX 214 Y 1 SFX 214 0 bar . SFX 216 Y 1 SFX 216 0 baz . PFX 54321 Y 1 PFX 54321 0 un . hunspell-1.7.2/tests/onlyincompound2.aff0000644000175000017500000000040013565705656015267 00000000000000# affixes only in compounds (see also fogemorpheme example) ONLYINCOMPOUND O COMPOUNDFLAG A COMPOUNDPERMITFLAG P SFX B Y 1 SFX B 0 s/OP . # obligate fogemorpheme by forbidding the stem (0) in compounds CHECKCOMPOUNDPATTERN 1 CHECKCOMPOUNDPATTERN 0/B /A hunspell-1.7.2/tests/onlyincompound.dic0000644000175000017500000000002313565705656015211 000000000000002 foo/A pseudo/OAB hunspell-1.7.2/tests/fogemorpheme.aff0000644000175000017500000000030713565705656014613 00000000000000# fogemorphemes: special morphemes in compounds # # Swedish example: # gata + kontoret = gatukontoret COMPOUNDFLAG X COMPOUNDBEGIN Y ONLYINCOMPOUND Z COMPOUNDPERMITFLAG P SFX A Y 1 SFX A a u/YPZ . hunspell-1.7.2/tests/needaffix3.good0000644000175000017500000000001413565705656014341 00000000000000foo foosbaz hunspell-1.7.2/tests/keepcase.good0000644000175000017500000000002313565705656014105 00000000000000foo Bar baz. Quux. hunspell-1.7.2/tests/ph.dic0000644000175000017500000000023413565705656012547 000000000000008 a lot ph:alot in spite ph:inspite inspire what ph:whta ph:waht Wednesday ph:wendsay ph:wensday which ph:wich witch ph:wich winch wish Oh, my gosh! ph:omg hunspell-1.7.2/tests/compoundflag.wrong0000644000175000017500000000003213565705656015207 00000000000000xyyz fooxy xyfoo fooxybar hunspell-1.7.2/tests/2970240.aff0000644000175000017500000000014013565705656012760 00000000000000# test words with three parts CHECKCOMPOUNDPATTERN 1 CHECKCOMPOUNDPATTERN le fi COMPOUNDFLAG c hunspell-1.7.2/tests/2970242.good0000644000175000017500000000004313565705656013160 00000000000000foobar barfoo bazfoo barbaz bazbar hunspell-1.7.2/tests/alias2.good0000644000175000017500000000002413565705656013501 00000000000000foo foox fooy fooyx hunspell-1.7.2/tests/compoundrule7.wrong0000644000175000017500000000003413565705656015336 000000000000001th 2th 3th 10001th 10011st hunspell-1.7.2/tests/Makefile.am0000664000175000017500000002751614353370302013507 00000000000000## Process this file with automake to create Makefile.in SUBDIRS = suggestiontest TEST_EXTENSIONS = .dic AM_TESTS_ENVIRONMENT = export HUNSPELL=$(top_builddir)/src/tools/hunspell; \ export ANALYZE=$(top_builddir)/src/tools/analyze; \ export LIBTOOL=$(top_builddir)/libtool; DIC_LOG_COMPILER = $(top_srcdir)/tests/test.sh TESTS = \ affixes.dic \ condition.dic \ condition_utf.dic \ base.dic \ base_utf.dic \ allcaps.dic \ allcaps_utf.dic \ allcaps2.dic \ allcaps3.dic \ keepcase.dic \ dotless_i.dic \ i58202.dic \ map.dic \ rep.dic \ sug.dic \ sug2.dic \ wordpair.dic \ sugutf.dic \ phone.dic \ ph.dic \ ph2.dic \ flag.dic \ flaglong.dic \ flagnum.dic \ flagutf8.dic \ slash.dic \ forbiddenword.dic \ nosuggest.dic \ alias.dic \ alias2.dic \ alias3.dic \ breakdefault.dic \ break.dic \ needaffix.dic \ needaffix2.dic \ needaffix3.dic \ needaffix4.dic \ needaffix5.dic \ circumfix.dic \ fogemorpheme.dic \ onlyincompound.dic \ complexprefixes.dic \ complexprefixes2.dic \ complexprefixesutf.dic \ conditionalprefix.dic \ zeroaffix.dic \ utf8.dic \ utf8_bom.dic \ utf8_bom2.dic \ utf8_nonbmp.test \ compoundflag.dic \ compoundrule.dic \ compoundrule2.dic \ compoundrule3.dic \ compoundrule4.dic \ compoundrule5.dic \ compoundrule6.dic \ compoundrule7.dic \ compoundrule8.dic \ compoundaffix.dic \ compoundaffix2.dic \ compoundaffix3.dic \ compoundforbid.dic \ checkcompounddup.dic \ checkcompoundtriple.dic \ simplifiedtriple.dic \ checkcompoundrep.dic \ checkcompoundrep2.dic \ checkcompoundcase2.dic \ checkcompoundcaseutf.dic \ checkcompoundpattern.dic \ checkcompoundpattern2.dic \ checkcompoundpattern3.dic \ checkcompoundpattern4.dic \ utfcompound.dic \ checksharps.dic \ checksharpsutf.dic \ germancompounding.dic \ germancompoundingold.dic \ i35725.dic \ i53643.dic \ i54633.dic \ i54980.dic \ maputf.dic \ reputf.dic \ ignore.dic \ ignoreutf.dic \ right_to_left_mark.dic \ 1592880.dic \ 1695964.dic \ 1463589.dic \ 1463589_utf.dic \ IJ.dic \ i68568.dic \ i68568utf.dic \ 1706659.dic \ 1748408-1.dic \ 1748408-2.dic \ 1748408-3.dic \ 1748408-4.dic \ digits_in_words.dic \ colons_in_words.dic \ ngram_utf_fix.dic \ morph.dic \ 1975530.dic \ fullstrip.dic \ iconv.dic \ iconv2.dic \ oconv.dic \ oconv2.dic \ encoding.dic \ korean.dic \ opentaal_forbiddenword1.dic \ opentaal_forbiddenword2.dic \ opentaal_keepcase.dic \ arabic.dic \ 2970240.dic \ 2970242.dic \ breakoff.dic \ opentaal_cpdpat.dic \ opentaal_cpdpat2.dic \ 2999225.dic \ onlyincompound2.dic \ forceucase.dic \ nepali.dic \ hu.dic \ warn.dic \ timelimit.dic \ ignoresug.dic \ limit-multiple-compounding.dic clean-local: -rm -rf testSubDir EXTRA_DIST = \ test.sh \ affixes.aff \ affixes.dic \ affixes.good \ condition.aff \ condition.dic \ condition.good \ condition.wrong \ condition_utf.aff \ condition_utf.dic \ condition_utf.good \ condition_utf.wrong \ base.aff \ base.dic \ base.good \ base.sug \ base.wrong \ base_utf.aff \ base_utf.dic \ base_utf.good \ base_utf.sug \ base_utf.wrong \ allcaps.aff \ allcaps.dic \ allcaps.good \ allcaps.sug \ allcaps.wrong \ allcaps2.aff \ allcaps2.dic \ allcaps2.good \ allcaps2.sug \ allcaps2.wrong \ allcaps3.aff \ allcaps3.dic \ allcaps3.good \ allcaps3.wrong \ allcaps_utf.aff \ allcaps_utf.dic \ allcaps_utf.good \ allcaps_utf.sug \ allcaps_utf.wrong \ keepcase.aff \ keepcase.dic \ keepcase.good \ keepcase.sug \ keepcase.wrong \ dotless_i.aff \ dotless_i.dic \ dotless_i.good \ dotless_i.wrong \ map.aff \ map.dic \ map.sug \ map.wrong \ rep.aff \ rep.dic \ rep.sug \ rep.wrong \ sug.aff \ sug.dic \ sug.sug \ sug.wrong \ sug2.aff \ sug2.dic \ sug2.sug \ sug2.wrong \ wordpair.aff \ wordpair.dic \ wordpair.wrong \ sugutf.aff \ sugutf.dic \ sugutf.sug \ sugutf.wrong \ phone.aff \ phone.dic \ phone.sug \ phone.wrong \ ph.aff \ ph.dic \ ph.sug \ ph.wrong \ ph2.aff \ ph2.dic \ ph2.sug \ ph2.wrong \ alias.aff \ alias.dic \ alias.good \ alias2.aff \ alias2.dic \ alias2.good \ alias2.morph \ alias3.aff \ alias3.dic \ alias3.good \ alias3.morph \ break.aff \ break.dic \ break.good \ break.wrong \ breakdefault.aff \ breakdefault.dic \ breakdefault.good \ breakdefault.sug \ breakdefault.wrong \ circumfix.aff \ circumfix.dic \ circumfix.good \ circumfix.morph \ circumfix.wrong \ fogemorpheme.aff \ fogemorpheme.dic \ fogemorpheme.good \ fogemorpheme.wrong \ onlyincompound.aff \ onlyincompound.dic \ onlyincompound.good \ onlyincompound.sug \ onlyincompound.wrong \ forbiddenword.aff \ forbiddenword.dic \ forbiddenword.good \ forbiddenword.wrong \ nosuggest.aff \ nosuggest.dic \ nosuggest.good \ nosuggest.sug \ nosuggest.wrong \ germancompounding.aff \ germancompounding.dic \ germancompounding.good \ germancompounding.wrong \ germancompoundingold.aff \ germancompoundingold.dic \ germancompoundingold.good \ germancompoundingold.wrong \ needaffix2.aff \ needaffix2.dic \ needaffix2.good \ needaffix2.morph \ needaffix3.aff \ needaffix3.dic \ needaffix3.good \ needaffix3.wrong \ needaffix4.aff \ needaffix4.dic \ needaffix4.good \ needaffix5.aff \ needaffix5.dic \ needaffix5.good \ needaffix5.wrong \ needaffix.aff \ needaffix.dic \ needaffix.good \ needaffix.wrong \ zeroaffix.aff \ zeroaffix.dic \ zeroaffix.good \ zeroaffix.morph \ utf8.aff \ utf8.dic \ utf8.good \ utf8_bom.aff \ utf8_bom.dic \ utf8_bom.good \ utf8_bom2.aff \ utf8_bom2.dic \ utf8_bom2.good \ utf8_nonbmp.aff \ utf8_nonbmp.dic \ utf8_nonbmp.good \ utf8_nonbmp.sug \ utf8_nonbmp.wrong \ utfcompound.aff \ utfcompound.dic \ utfcompound.good \ utfcompound.wrong \ compoundflag.aff \ compoundflag.dic \ compoundflag.good \ compoundflag.wrong \ compoundrule.aff \ compoundrule.dic \ compoundrule.good \ compoundrule.wrong \ compoundrule2.aff \ compoundrule2.dic \ compoundrule2.good \ compoundrule2.wrong \ compoundrule3.aff \ compoundrule3.dic \ compoundrule3.good \ compoundrule3.wrong \ compoundrule4.aff \ compoundrule4.dic \ compoundrule4.good \ compoundrule4.wrong \ compoundrule5.aff \ compoundrule5.dic \ compoundrule5.good \ compoundrule5.morph \ compoundrule5.wrong \ compoundrule6.aff \ compoundrule6.dic \ compoundrule6.good \ compoundrule6.wrong \ compoundrule7.aff \ compoundrule7.dic \ compoundrule7.good \ compoundrule7.wrong \ compoundrule8.aff \ compoundrule8.dic \ compoundrule8.good \ compoundrule8.wrong \ compoundaffix.aff \ compoundaffix.dic \ compoundaffix.good \ compoundaffix.wrong \ compoundaffix2.aff \ compoundaffix2.dic \ compoundaffix2.good \ compoundaffix3.aff \ compoundaffix3.dic \ compoundaffix3.good \ compoundaffix3.wrong \ compoundforbid.aff \ compoundforbid.dic \ compoundforbid.good \ compoundforbid.wrong \ checkcompounddup.aff \ checkcompounddup.dic \ checkcompounddup.good \ checkcompounddup.wrong \ checkcompoundcase.aff \ checkcompoundcase.dic \ checkcompoundcase.good \ checkcompoundcase.wrong \ checkcompoundcase2.aff \ checkcompoundcase2.dic \ checkcompoundcase2.good \ checkcompoundcase2.wrong \ checkcompoundcaseutf.aff \ checkcompoundcaseutf.dic \ checkcompoundcaseutf.good \ checkcompoundcaseutf.wrong \ checkcompoundrep.aff \ checkcompoundrep.dic \ checkcompoundrep.good \ checkcompoundrep.wrong \ checkcompoundrep2.aff \ checkcompoundrep2.dic \ checkcompoundrep2.good \ checkcompoundtriple.aff \ checkcompoundtriple.dic \ checkcompoundtriple.good \ checkcompoundtriple.wrong \ simplifiedtriple.aff \ simplifiedtriple.dic \ simplifiedtriple.good \ simplifiedtriple.wrong \ checkcompoundpattern.aff \ checkcompoundpattern.dic \ checkcompoundpattern.good \ checkcompoundpattern.wrong \ checkcompoundpattern2.aff \ checkcompoundpattern2.dic \ checkcompoundpattern2.good \ checkcompoundpattern2.wrong \ checkcompoundpattern3.aff \ checkcompoundpattern3.dic \ checkcompoundpattern3.good \ checkcompoundpattern3.wrong \ checkcompoundpattern4.aff \ checkcompoundpattern4.dic \ checkcompoundpattern4.good \ checkcompoundpattern4.wrong \ checksharps.aff \ checksharps.dic \ checksharps.good \ checksharps.sug \ checksharps.wrong \ checksharpsutf.aff \ checksharpsutf.dic \ checksharpsutf.good \ checksharpsutf.sug \ checksharpsutf.wrong \ conditionalprefix.aff \ conditionalprefix.dic \ conditionalprefix.good \ conditionalprefix.morph \ conditionalprefix.wrong \ flaglong.aff \ flaglong.dic \ flaglong.good \ flagnum.aff \ flagnum.dic \ flagnum.good \ flag.aff \ flag.dic \ flag.good \ flagutf8.aff \ flagutf8.dic \ flagutf8.good \ complexprefixes.aff \ complexprefixes.dic \ complexprefixes.good \ complexprefixes.wrong \ complexprefixes2.aff \ complexprefixes2.dic \ complexprefixes2.good \ complexprefixesutf.aff \ complexprefixesutf.dic \ complexprefixesutf.good \ complexprefixesutf.wrong \ i35725.aff \ i35725.dic \ i35725.good \ i35725.sug \ i35725.wrong \ i53643.aff \ i53643.dic \ i53643.good \ i53643.wrong \ i54633.aff \ i54633.dic \ i54633.good \ i54633.sug \ i54633.wrong \ i54980.aff \ i54980.dic \ i54980.good \ i58202.aff \ i58202.dic \ i58202.good \ i58202.sug \ i58202.wrong \ maputf.aff \ maputf.dic \ maputf.sug \ maputf.wrong \ reputf.aff \ reputf.dic \ reputf.sug \ reputf.wrong \ slash.aff \ slash.dic \ slash.good \ ignore.aff \ ignore.dic \ ignore.good \ ignoreutf.aff \ ignoreutf.dic \ ignoreutf.good \ right_to_left_mark.aff \ right_to_left_mark.dic \ right_to_left_mark.good \ 1592880.aff \ 1592880.dic \ 1592880.good \ 1695964.aff \ 1695964.dic \ 1695964.sug \ 1695964.wrong \ 1463589.aff \ 1463589.dic \ 1463589.sug \ 1463589.wrong \ 1463589_utf.aff \ 1463589_utf.dic \ 1463589_utf.sug \ 1463589_utf.wrong \ IJ.aff \ IJ.dic \ IJ.good \ IJ.sug \ IJ.wrong \ i68568.aff \ i68568.dic \ i68568.wrong \ i68568utf.aff \ i68568utf.dic \ i68568utf.wrong \ 1706659.aff \ 1706659.dic \ 1706659.wrong \ 1748408-1.aff \ 1748408-1.dic \ 1748408-1.good \ 1748408-2.aff \ 1748408-2.dic \ 1748408-2.good \ 1748408-3.aff \ 1748408-3.dic \ 1748408-3.good \ 1748408-4.aff \ 1748408-4.dic \ 1748408-4.good \ digits_in_words.aff \ digits_in_words.dic \ digits_in_words.wrong \ colons_in_words.aff \ colons_in_words.dic \ ngram_utf_fix.aff \ ngram_utf_fix.dic \ ngram_utf_fix.good \ ngram_utf_fix.sug \ ngram_utf_fix.wrong \ morph.aff \ morph.dic \ morph.good \ morph.morph \ 1975530.aff \ 1975530.dic \ 1975530.good \ 1975530.wrong \ fullstrip.aff \ fullstrip.dic \ fullstrip.good \ iconv.aff \ iconv.dic \ iconv.good \ iconv2.aff \ iconv2.dic \ iconv2.good \ oconv.aff \ oconv.dic \ oconv.good \ oconv.sug \ oconv.wrong \ oconv2.aff \ oconv2.dic \ oconv2.good \ oconv2.morph \ oconv2.root \ oconv2.test \ encoding.aff \ encoding.dic \ encoding.good \ opentaal_forbiddenword1.aff \ opentaal_forbiddenword1.dic \ opentaal_forbiddenword1.good \ opentaal_forbiddenword1.sug \ opentaal_forbiddenword1.wrong \ opentaal_forbiddenword2.aff \ opentaal_forbiddenword2.dic \ opentaal_forbiddenword2.good \ opentaal_forbiddenword2.sug \ opentaal_forbiddenword2.wrong \ opentaal_forbiddenword2.aff \ opentaal_forbiddenword2.dic \ opentaal_forbiddenword2.good \ opentaal_forbiddenword2.sug \ opentaal_forbiddenword2.wrong \ opentaal_keepcase.aff \ opentaal_keepcase.dic \ opentaal_keepcase.good \ opentaal_keepcase.sug \ opentaal_keepcase.wrong \ arabic.aff \ arabic.dic \ arabic.wrong \ 2970240.aff \ 2970240.dic \ 2970240.good \ 2970240.wrong \ 2970242.aff \ 2970242.dic \ 2970242.good \ 2970242.wrong \ breakoff.aff \ breakoff.dic \ breakoff.good \ breakoff.wrong \ opentaal_cpdpat.aff \ opentaal_cpdpat.dic \ opentaal_cpdpat.good \ opentaal_cpdpat.wrong \ opentaal_cpdpat2.aff \ opentaal_cpdpat2.dic \ opentaal_cpdpat2.good \ opentaal_cpdpat2.wrong \ 2999225.aff \ 2999225.dic \ 2999225.good \ korean.aff \ korean.dic \ korean.good \ korean.wrong \ onlyincompound2.aff \ onlyincompound2.dic \ onlyincompound2.good \ onlyincompound2.wrong \ forceucase.aff \ forceucase.dic \ forceucase.good \ forceucase.sug \ forceucase.wrong \ nepali.aff \ nepali.dic \ nepali.good \ hu.aff \ hu.dic \ hu.good \ warn.aff \ warn.dic \ warn.good \ timelimit.aff \ timelimit.dic \ timelimit.good \ timelimit.wrong \ ignoresug.aff \ ignoresug.dic \ ignoresug.good \ ignoresug.morph \ limit-multiple-compounding.aff \ limit-multiple-compounding.dic \ limit-multiple-compounding.good \ limit-multiple-compounding.wrong \ \ utf8_nonbmp.test hunspell-1.7.2/tests/simplifiedtriple.dic0000644000175000017500000000002013565705656015476 000000000000002 glass/A sko/A hunspell-1.7.2/tests/phone.wrong0000644000175000017500000000001313565705656013641 00000000000000Brasillian hunspell-1.7.2/tests/needaffix.aff0000644000175000017500000000006413565705656014067 00000000000000NEEDAFFIX X COMPOUNDFLAG Y SFX A Y 1 SFX A 0 s/Y . hunspell-1.7.2/tests/oconv2.dic0000644000175000017500000000001113565705656013337 000000000000001 eiei/A hunspell-1.7.2/tests/utf8.dic0000644000175000017500000000001713565705656013025 000000000000002 foo/A foó/A hunspell-1.7.2/tests/rep.sug0000644000175000017500000000010713565705656012764 00000000000000form phantom vacation a lot, lot un alunno bar vinte e un auto's, auto hunspell-1.7.2/tests/compoundaffix2.good0000644000175000017500000000012013565705656015247 00000000000000foo prefoo foosuf prefoosuf prefoobarsuf foosufbar fooprebarsuf prefooprebarsuf hunspell-1.7.2/tests/2970242.wrong0000644000175000017500000000000713565705656013364 00000000000000foobaz hunspell-1.7.2/tests/checkcompoundpattern4.dic0000644000175000017500000000004613565705656016445 000000000000004 sUrya/Ax udayaM/Ax pEru/Bx unna/Bx hunspell-1.7.2/tests/i54633.good0000644000175000017500000000002013565705656013157 00000000000000éditer Éditer hunspell-1.7.2/tests/checkcompoundrep2.good0000664000175000017500000000003114353255550015726 00000000000000fa ajtó ajtófa faajtó hunspell-1.7.2/tests/2999225.aff0000644000175000017500000000007713565705656013007 00000000000000COMPOUNDRULE 1 COMPOUNDRULE ab COMPOUNDBEGIN A COMPOUNDEND B hunspell-1.7.2/tests/flag.dic0000644000175000017500000000001113565705656013042 000000000000001 foo/A3 hunspell-1.7.2/tests/compoundrule8.dic0000644000175000017500000000044213565705656014745 0000000000000022 0/1001,2002 1/1001,1002 2/1001,2002 3/1001,2002 4/1001,2002 5/1001,2002 6/1001,2002 7/1001,2002 8/1001,2002 9/1001,2002 0th/2000,2001 1st/2000 1th/2001,1000 2nd/2000 2th/2001,1000 3rd/2000 3th/2001,1000 4th/2000,2001 5th/2000,2001 6th/2000,2001 7th/2000,2001 8th/2000,2001 9th/2000,2001 hunspell-1.7.2/tests/flagutf8.good0000644000175000017500000000007213565705656014051 00000000000000foo foos foosbar foosbaz unfoo unfoos unfoosbar unfoosbaz hunspell-1.7.2/tests/compoundrule6.good0000644000175000017500000000004313565705656015131 00000000000000aa aaaaaa aabbbc aaaaabbbbbbcccccc hunspell-1.7.2/tests/affixes.dic0000644000175000017500000000002613565705656013564 000000000000003 hello try/B work/AB hunspell-1.7.2/tests/compoundflag.dic0000644000175000017500000000003013565705656014610 000000000000004 foo/A bar/A xy/A yz/A hunspell-1.7.2/tests/ignore.aff0000644000175000017500000000015013565705656013415 00000000000000# ignore characters in words (for Arabic Harakat or Hebrew niqqud) IGNORE aeiou PFX A Y 1 PFX A 0 re . hunspell-1.7.2/tests/compoundflag.good0000644000175000017500000000003013565705656015001 00000000000000foobar barfoo foobarfoo hunspell-1.7.2/tests/forceucase.sug0000644000175000017500000000002113565705656014310 00000000000000Foobaz Foobarbaz hunspell-1.7.2/tests/checkcompounddup.wrong0000644000175000017500000000003313565705656016065 00000000000000foofoo foofoofoo foobarbar hunspell-1.7.2/tests/sug.wrong0000644000175000017500000000022513565705656013333 00000000000000nasa Ghandi greatful permenant vacacation alot inspite permanent.Vacation ahev hwihc GAndhi Mcdonald permqnent permanent-vacation permqnent-vacation hunspell-1.7.2/tests/compoundrule2.good0000644000175000017500000000026613565705656015134 00000000000000aa aaa aaaa ab aab aaab aaaab abb aabb aaabbb bb bbb bbbb aaab abc abcc abbc abbcc aabc aabcc aabbc aabbcc aaabbbccc ac acc aac aacc aaaccc bc bcc bbc bbcc bbbccc cc ccc cccccc abcc hunspell-1.7.2/tests/oconv.good0000644000175000017500000000001613565705656013453 00000000000000bébé dádá hunspell-1.7.2/tests/condition_utf.wrong0000644000175000017500000000032013565705656015375 00000000000000óőósuf4 pre4óőó óőósuf5 pre5óőó óőósuf8 pre8óőó óőósuf9 pre9óőó óőósuf11 pre11óőó óőósuf12 pre12óőó óőósuf15 pre15óőó óőósuf17 óőósuf18 pre17óőó pre18óőó hunspell-1.7.2/tests/allcaps2.sug0000644000175000017500000000001413565705656013674 00000000000000iPod ipodos hunspell-1.7.2/tests/compoundrule5.dic0000644000175000017500000000025513565705656014744 0000000000000013 0/N po:num 1/N po:num 2/N po:num 3/N po:num 4/N po:num 5/N po:num 6/N po:num 7/N po:num 8/N po:num 9/N po:num ./. po:sign_dot %/% po:sign_percent ‰/% po:sign_per_mille hunspell-1.7.2/tests/allcaps_utf.wrong0000644000175000017500000000003713565705656015033 00000000000000Openoffice.org Unicef Unicef's hunspell-1.7.2/tests/i35725.good0000644000175000017500000000001213565705656013161 00000000000000permanent hunspell-1.7.2/tests/sug.dic0000644000175000017500000000015313565705656012736 0000000000000013 NASA Gandhi grateful permanent vacation a lot have which McDonald permanent-vacation/? in spite inspire hunspell-1.7.2/tests/checkcompoundcaseutf.dic0000644000175000017500000000002213565705656016330 000000000000002 áoó/A Óoá/A hunspell-1.7.2/tests/checkcompoundcaseutf.wrong0000644000175000017500000000001313565705656016725 00000000000000áoóÓoá hunspell-1.7.2/tests/1695964.sug0000644000175000017500000000002113565705656013040 00000000000000Mull Mulle Mulls hunspell-1.7.2/tests/checkcompoundpattern2.dic0000644000175000017500000000001613565705656016440 000000000000002 foo/A bar/A hunspell-1.7.2/tests/checkcompoundpattern2.wrong0000644000175000017500000000000713565705656017035 00000000000000foobar hunspell-1.7.2/tests/sug2.sug0000644000175000017500000000003113565705656013052 00000000000000a lot in spite scot-free hunspell-1.7.2/aclocal.m40000664000175000017500000013254514353370162012154 00000000000000# generated automatically by aclocal 1.15.1 -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # intlmacosx.m4 serial 5 (gettext-0.18.2) dnl Copyright (C) 2004-2014, 2016 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Checks for special options needed on Mac OS X. dnl Defines INTL_MACOSX_LIBS. AC_DEFUN([gt_INTL_MACOSX], [ dnl Check for API introduced in Mac OS X 10.2. AC_CACHE_CHECK([for CFPreferencesCopyAppValue], [gt_cv_func_CFPreferencesCopyAppValue], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[CFPreferencesCopyAppValue(NULL, NULL)]])], [gt_cv_func_CFPreferencesCopyAppValue=yes], [gt_cv_func_CFPreferencesCopyAppValue=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) fi dnl Check for API introduced in Mac OS X 10.3. AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[CFLocaleCopyCurrent();]])], [gt_cv_func_CFLocaleCopyCurrent=yes], [gt_cv_func_CFLocaleCopyCurrent=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFLocaleCopyCurrent = yes; then AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1], [Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi AC_SUBST([INTL_MACOSX_LIBS]) ]) # Copyright (C) 2002-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.15.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.15.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Copyright (C) 2003-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_MKDIR_P # --------------- # Check for 'mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl FIXME we are no longer going to remove this! adjust warning dnl FIXME message accordingly. AC_DIAGNOSE([obsolete], [$0: this macro is deprecated, and will soon be removed. You should use the Autoconf-provided 'AC][_PROG_MKDIR_P' macro instead, and use '$(MKDIR_P)' instead of '$(mkdir_p)'in your Makefile.am files.]) dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/ax_cxx_compile_stdcxx.m4]) m4_include([m4/ax_cxx_compile_stdcxx_11.m4]) m4_include([m4/gettext.m4]) m4_include([m4/iconv.m4]) m4_include([m4/lib-ld.m4]) m4_include([m4/lib-link.m4]) m4_include([m4/lib-prefix.m4]) m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) m4_include([m4/nls.m4]) m4_include([m4/po.m4]) m4_include([m4/progtest.m4]) m4_include([m4/visibility.m4]) hunspell-1.7.2/AUTHORS0000644000175000017500000000136713565705656011375 00000000000000Author: László Németh MySpell's (Hunspell's code base) author: Kevin Hendricks Maintainer, distinguished contributor: Caolán McNamara Author of rule-based transformation code for phonetic suggestions (PHONE/phonet.cxx, used by English dictionaries): Björn Jacke Hunspell/MySpell code base is result of work of several contributors. See git log, ./THANKS, ./Changelog, ./Changelog.O, MySpell's README and CONTRIBUTORS files for their contributions. Note: Following contributors are not owners and not representatives of Hunspell, and they haven't got permission from Hunspell's author to act on the behalf of Hunspell project: Sander van Geloven, Dimitri Mijoski If you would like to support Hunspell, join the development or contact the author. hunspell-1.7.2/config.rpath0000755000175000017500000004401214167247117012617 00000000000000#! /bin/sh # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable. # # Copyright 1996-2010 Free Software Foundation, Inc. # Taken from GNU libtool, 2001 # Originally by Gordon Matzigkeit , 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld # should be set by the caller. # # The set of defined variables is at the end of this script. # Known limitations: # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer # than 256 bytes, otherwise the compiler driver will dump core. The only # known workaround is to choose shorter directory names for the build # directory and/or the installation directory. # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a shrext=.so host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # Code taken from libtool.m4's _LT_CC_BASENAME. for cc_temp in $CC""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` # Code taken from libtool.m4's _LT_COMPILER_PIC. wl= if test "$GCC" = yes; then wl='-Wl,' else case "$host_os" in aix*) wl='-Wl,' ;; darwin*) case $cc_basename in xlc*) wl='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) ;; hpux9* | hpux10* | hpux11*) wl='-Wl,' ;; irix5* | irix6* | nonstopux*) wl='-Wl,' ;; newsos6) ;; linux* | k*bsd*-gnu) case $cc_basename in ecc*) wl='-Wl,' ;; icc* | ifort*) wl='-Wl,' ;; lf95*) wl='-Wl,' ;; pgcc | pgf77 | pgf90) wl='-Wl,' ;; ccc*) wl='-Wl,' ;; como) wl='-lopt=' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) wl='-Wl,' ;; esac ;; esac ;; osf3* | osf4* | osf5*) wl='-Wl,' ;; rdos*) ;; solaris*) wl='-Wl,' ;; sunos4*) wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3*) wl='-Wl,' ;; sysv4*MP*) ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) wl='-Wl,' ;; unicos*) wl='-Wl,' ;; uts4*) ;; esac fi # Code taken from libtool.m4's _LT_LINKER_SHLIBS. hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no case "$host_os" in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. # Unlike libtool, we use -rpath here, not --rpath, since the documented # option of GNU ld is called -rpath, not --rpath. hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' case "$host_os" in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we cannot use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then : else ld_shlibs=no fi ;; interix[3-9]*) hardcode_direct=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; netbsd*) ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' else ld_shlibs=no fi ;; esac ;; sunos4*) hardcode_direct=yes ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then hardcode_libdir_flag_spec= fi else case "$host_os" in aix3*) # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac fi hardcode_direct=yes hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac fi # Begin _LT_AC_SYS_LIBPATH_AIX. echo 'int main () { return 0; }' > conftest.c ${CC} ${LDFLAGS} conftest.c -o conftest aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` fi if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib" fi rm -f conftest.c conftest # End _LT_AC_SYS_LIBPATH_AIX. if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' else hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" fi fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi[45]*) ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' libext=lib ;; darwin* | rhapsody*) hardcode_direct=no if test "$GCC" = yes ; then : else case $cc_basename in xlc*) ;; *) ld_shlibs=no ;; esac fi ;; dgux*) hardcode_libdir_flag_spec='-L$libdir' ;; freebsd1*) ld_shlibs=no ;; freebsd2.2*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; freebsd2*) hardcode_direct=yes hardcode_minus_L=yes ;; freebsd* | dragonfly*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; hpux9*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; hpux10*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no ;; *) hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; newsos6) hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then hardcode_libdir_flag_spec='${wl}-rpath,$libdir' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) hardcode_libdir_flag_spec='-R$libdir' ;; *) hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; osf3*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) if test "$GCC" = yes; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else # Both cc and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; solaris*) hardcode_libdir_flag_spec='-R$libdir' ;; sunos4*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes ;; sysv4) case $host_vendor in sni) hardcode_direct=yes # is this really true??? ;; siemens) hardcode_direct=no ;; motorola) hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac ;; sysv4.3*) ;; sysv4*MP*) if test -d /usr/nec; then ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ;; sysv5* | sco3.2v5* | sco5v6*) hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator=':' ;; uts4*) hardcode_libdir_flag_spec='-L$libdir' ;; *) ld_shlibs=no ;; esac fi # Check dynamic linker characteristics # Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. # Unlike libtool.m4, here we don't care about _all_ names of the library, but # only about the one the linker finds when passed -lNAME. This is the last # element of library_names_spec in libtool.m4, or possibly two of them if the # linker has special search rules. library_names_spec= # the last element of library_names_spec in libtool.m4 libname_spec='lib$name' case "$host_os" in aix3*) library_names_spec='$libname.a' ;; aix[4-9]*) library_names_spec='$libname$shrext' ;; amigaos*) library_names_spec='$libname.a' ;; beos*) library_names_spec='$libname$shrext' ;; bsdi[45]*) library_names_spec='$libname$shrext' ;; cygwin* | mingw* | pw32* | cegcc*) shrext=.dll library_names_spec='$libname.dll.a $libname.lib' ;; darwin* | rhapsody*) shrext=.dylib library_names_spec='$libname$shrext' ;; dgux*) library_names_spec='$libname$shrext' ;; freebsd1*) ;; freebsd* | dragonfly*) case "$host_os" in freebsd[123]*) library_names_spec='$libname$shrext$versuffix' ;; *) library_names_spec='$libname$shrext' ;; esac ;; gnu*) library_names_spec='$libname$shrext' ;; hpux9* | hpux10* | hpux11*) case $host_cpu in ia64*) shrext=.so ;; hppa*64*) shrext=.sl ;; *) shrext=.sl ;; esac library_names_spec='$libname$shrext' ;; interix[3-9]*) library_names_spec='$libname$shrext' ;; irix5* | irix6* | nonstopux*) library_names_spec='$libname$shrext' case "$host_os" in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; *) libsuff= shlibsuff= ;; esac ;; esac ;; linux*oldld* | linux*aout* | linux*coff*) ;; linux* | k*bsd*-gnu) library_names_spec='$libname$shrext' ;; knetbsd*-gnu) library_names_spec='$libname$shrext' ;; netbsd*) library_names_spec='$libname$shrext' ;; newsos6) library_names_spec='$libname$shrext' ;; nto-qnx*) library_names_spec='$libname$shrext' ;; openbsd*) library_names_spec='$libname$shrext$versuffix' ;; os2*) libname_spec='$name' shrext=.dll library_names_spec='$libname.a' ;; osf3* | osf4* | osf5*) library_names_spec='$libname$shrext' ;; rdos*) ;; solaris*) library_names_spec='$libname$shrext' ;; sunos4*) library_names_spec='$libname$shrext$versuffix' ;; sysv4 | sysv4.3*) library_names_spec='$libname$shrext' ;; sysv4*MP*) library_names_spec='$libname$shrext' ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) library_names_spec='$libname$shrext' ;; uts4*) library_names_spec='$libname$shrext' ;; esac sed_quote_subst='s/\(["`$\\]\)/\\\1/g' escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` shlibext=`echo "$shrext" | sed -e 's,^\.,,'` escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' < is the original author and now maintainer of the MySpell codebase. Recent additions include ngram support, and related character maps to help improve and create suggestions for very poorly spelled words. Please send any and all contributions or improvements to him or to dev@lingucomponent.openoffice.org. David Einstein (Deinst@world.std.com) developed an almost complete rewrite of MySpell for use by the Mozilla project. David and I are now working on parallel development tracks to help our respective projects (Mozilla and OpenOffice.org) and we will maintain full affix file and dictionary file compatibility and work on merging our versions of MySpell back into a single tree. David has been a significant help in improving MySpell. Németh László is the author of the Hungarian dictionary and he developed and contributed extensive changes to MySpell including ... * code to support compound words in MySpell * fixed numerous problems with encoding case conversion tables. * designed/developed replacement tables to improve suggestions * changed affix file parsing to trees to greatly speed loading * removed the need for malloc/free pairs in suffix_check which speeds up spell checking in suffix rich languages by 20% Davide Prina , Giuseppe Modugno , Gianluca Turconi all from the it_IT OpenOffice.org team performed an extremely detailed code review of MySpell and generated fixes for bugs, leaks, and speedup improvements. Simon Brouwer for fixes and enhancements that have greatly improved MySpell auggestions * n-gram suggestions for an initcap word have an init. cap. * fix for too many n-gram suggestions from specialized dictionary, * fix for long suggestions rather than close ones in case of dictionaries with many compound words (kompuuter) * optionally disabling split-word suggestions (controlled by NOSPLITSUGS line in affix file) Special Thanks to all others who have either contributed ideas or testing for MySpell Thanks, Kevin Hendricks kevin.hendricks@sympatico.ca hunspell-1.7.2/ABOUT-NLS0000644000175000017500000027215514167247117011551 000000000000001 Notes on the Free Translation Project *************************************** Free software is going international! The Free Translation Project is a way to get maintainers of free software, translators, and users all together, so that free software will gradually become able to speak many languages. A few packages already provide translations for their messages. If you found this `ABOUT-NLS' file inside a distribution, you may assume that the distributed package does use GNU `gettext' internally, itself available at your nearest GNU archive site. But you do _not_ need to install GNU `gettext' prior to configuring, installing or using this package with messages translated. Installers will find here some useful hints. These notes also explain how users should proceed for getting the programs to use the available translations. They tell how people wanting to contribute and work on translations can contact the appropriate team. When reporting bugs in the `intl/' directory or bugs which may be related to internationalization, you should tell about the version of `gettext' which is used. The information can be found in the `intl/VERSION' file, in internationalized packages. 1.1 Quick configuration advice ============================== If you want to exploit the full power of internationalization, you should configure it using ./configure --with-included-gettext to force usage of internationalizing routines provided within this package, despite the existence of internationalizing capabilities in the operating system where this package is being installed. So far, only the `gettext' implementation in the GNU C library version 2 provides as many features (such as locale alias, message inheritance, automatic charset conversion or plural form handling) as the implementation here. It is also not possible to offer this additional functionality on top of a `catgets' implementation. Future versions of GNU `gettext' will very likely convey even more functionality. So it might be a good idea to change to GNU `gettext' as soon as possible. So you need _not_ provide this option if you are using GNU libc 2 or you have installed a recent copy of the GNU gettext package with the included `libintl'. 1.2 INSTALL Matters =================== Some packages are "localizable" when properly installed; the programs they contain can be made to speak your own native language. Most such packages use GNU `gettext'. Other packages have their own ways to internationalization, predating GNU `gettext'. By default, this package will be installed to allow translation of messages. It will automatically detect whether the system already provides the GNU `gettext' functions. If not, the included GNU `gettext' library will be used. This library is wholly contained within this package, usually in the `intl/' subdirectory, so prior installation of the GNU `gettext' package is _not_ required. Installers may use special options at configuration time for changing the default behaviour. The commands: ./configure --with-included-gettext ./configure --disable-nls will, respectively, bypass any pre-existing `gettext' to use the internationalizing routines provided within this package, or else, _totally_ disable translation of messages. When you already have GNU `gettext' installed on your system and run configure without an option for your new package, `configure' will probably detect the previously built and installed `libintl.a' file and will decide to use this. This might not be desirable. You should use the more recent version of the GNU `gettext' library. I.e. if the file `intl/VERSION' shows that the library which comes with this package is more recent, you should use ./configure --with-included-gettext to prevent auto-detection. The configuration process will not test for the `catgets' function and therefore it will not be used. The reason is that even an emulation of `gettext' on top of `catgets' could not provide all the extensions of the GNU `gettext' library. Internationalized packages usually have many `po/LL.po' files, where LL gives an ISO 639 two-letter code identifying the language. Unless translations have been forbidden at `configure' time by using the `--disable-nls' switch, all available translations are installed together with the package. However, the environment variable `LINGUAS' may be set, prior to configuration, to limit the installed set. `LINGUAS' should then contain a space separated list of two-letter codes, stating which languages are allowed. 1.3 Using This Package ====================== As a user, if your language has been installed for this package, you only have to set the `LANG' environment variable to the appropriate `LL_CC' combination. If you happen to have the `LC_ALL' or some other `LC_xxx' environment variables set, you should unset them before setting `LANG', otherwise the setting of `LANG' will not have the desired effect. Here `LL' is an ISO 639 two-letter language code, and `CC' is an ISO 3166 two-letter country code. For example, let's suppose that you speak German and live in Germany. At the shell prompt, merely execute `setenv LANG de_DE' (in `csh'), `export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). This can be done from your `.login' or `.profile' file, once and for all. You might think that the country code specification is redundant. But in fact, some languages have dialects in different countries. For example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The country code serves to distinguish the dialects. The locale naming convention of `LL_CC', with `LL' denoting the language and `CC' denoting the country, is the one use on systems based on GNU libc. On other systems, some variations of this scheme are used, such as `LL' or `LL_CC.ENCODING'. You can get the list of locales supported by your system for your language by running the command `locale -a | grep '^LL''. Not all programs have translations for all languages. By default, an English message is shown in place of a nonexistent translation. If you understand other languages, you can set up a priority list of languages. This is done through a different environment variable, called `LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' for the purpose of message handling, but you still need to have `LANG' set to the primary language; this is required by other parts of the system libraries. For example, some Swedish users who would rather read translations in German than English for when Swedish is not available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. Special advice for Norwegian users: The language code for Norwegian bokma*l changed from `no' to `nb' recently (in 2003). During the transition period, while some message catalogs for this language are installed under `nb' and some older ones under `no', it's recommended for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and older translations are used. In the `LANGUAGE' environment variable, but not in the `LANG' environment variable, `LL_CC' combinations can be abbreviated as `LL' to denote the language's main dialect. For example, `de' is equivalent to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' (Portuguese as spoken in Portugal) in this context. 1.4 Translating Teams ===================== For the Free Translation Project to be a success, we need interested people who like their own language and write it well, and who are also able to synergize with other translators speaking the same language. Each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, `http://translationproject.org/', in the "Teams" area. If you'd like to volunteer to _work_ at translating messages, you should become a member of the translating team for your own language. The subscribing address is _not_ the same as the list itself, it has `-request' appended. For example, speakers of Swedish can send a message to `sv-request@li.org', having this message body: subscribe Keep in mind that team members are expected to participate _actively_ in translations, or at solving translational difficulties, rather than merely lurking around. If your team does not exist yet and you want to start one, or if you are unsure about what to do or how to get started, please write to `coordinator@translationproject.org' to reach the coordinator for all translator teams. The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skills are praised more than programming skills, here. 1.5 Available Packages ====================== Languages are not equally supported in all packages. The following matrix shows the current state of internationalization, as of May 2010. The matrix shows, in regard of each package, for which languages PO files have been submitted to translation coordination, with a translation percentage of at least 50%. Ready PO files af am ar as ast az be be@latin bg bn_IN bs ca crh +---------------------------------------------------+ a2ps | [] [] | aegis | | ant-phone | | anubis | | aspell | [] [] | bash | | bfd | | bibshelf | [] | binutils | | bison | | bison-runtime | [] | bluez-pin | [] [] | bombono-dvd | | buzztard | | cflow | | clisp | | coreutils | [] [] | cpio | | cppi | | cpplib | [] | cryptsetup | | dfarc | | dialog | [] [] | dico | | diffutils | [] | dink | | doodle | | e2fsprogs | [] | enscript | [] | exif | | fetchmail | [] | findutils | [] | flex | [] | freedink | | gas | | gawk | [] [] | gcal | [] | gcc | | gettext-examples | [] [] [] [] | gettext-runtime | [] [] [] | gettext-tools | [] [] | gip | [] | gjay | | gliv | [] | glunarclock | [] [] | gnubiff | | gnucash | [] | gnuedu | | gnulib | | gnunet | | gnunet-gtk | | gnutls | | gold | | gpe-aerial | | gpe-beam | | gpe-bluetooth | | gpe-calendar | | gpe-clock | [] | gpe-conf | | gpe-contacts | | gpe-edit | | gpe-filemanager | | gpe-go | | gpe-login | | gpe-ownerinfo | [] | gpe-package | | gpe-sketchbook | | gpe-su | [] | gpe-taskmanager | [] | gpe-timesheet | [] | gpe-today | [] | gpe-todo | | gphoto2 | | gprof | [] | gpsdrive | | gramadoir | | grep | | grub | [] [] | gsasl | | gss | | gst-plugins-bad | [] | gst-plugins-base | [] | gst-plugins-good | [] | gst-plugins-ugly | [] | gstreamer | [] [] [] | gtick | | gtkam | [] | gtkorphan | [] | gtkspell | [] [] [] | gutenprint | | hello | [] | help2man | | hylafax | | idutils | | indent | [] [] | iso_15924 | | iso_3166 | [] [] [] [] [] [] [] [] | iso_3166_2 | | iso_4217 | | iso_639 | [] [] [] [] [] | iso_639_3 | [] | jwhois | | kbd | | keytouch | [] | keytouch-editor | | keytouch-keyboa... | [] | klavaro | [] | latrine | | ld | [] | leafpad | [] [] | libc | [] [] | libexif | () | libextractor | | libgnutls | | libgpewidget | | libgpg-error | | libgphoto2 | | libgphoto2_port | | libgsasl | | libiconv | [] | libidn | | lifelines | | liferea | [] [] | lilypond | | linkdr | [] | lordsawar | | lprng | | lynx | [] | m4 | | mailfromd | | mailutils | | make | | man-db | | man-db-manpages | | minicom | | mkisofs | | myserver | | nano | [] [] | opcodes | | parted | | pies | | popt | | psmisc | | pspp | [] | pwdutils | | radius | [] | recode | [] [] | rosegarden | | rpm | | rush | | sarg | | screem | | scrollkeeper | [] [] [] | sed | [] [] | sharutils | [] [] | shishi | | skencil | | solfege | | solfege-manual | | soundtracker | | sp | | sysstat | | tar | [] | texinfo | | tin | | unicode-han-tra... | | unicode-transla... | | util-linux-ng | [] | vice | | vmm | | vorbis-tools | | wastesedge | | wdiff | | wget | [] [] | wyslij-po | | xchat | [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] | +---------------------------------------------------+ af am ar as ast az be be@latin bg bn_IN bs ca crh 6 0 2 3 19 1 11 3 28 3 1 38 5 cs da de el en en_GB en_ZA eo es et eu fa fi +-------------------------------------------------+ a2ps | [] [] [] [] [] [] [] [] | aegis | [] [] [] | ant-phone | [] () | anubis | [] [] [] | aspell | [] [] [] [] [] | bash | [] [] [] [] | bfd | [] [] | bibshelf | [] [] [] [] | binutils | [] [] | bison | [] [] [] | bison-runtime | [] [] [] [] [] | bluez-pin | [] [] [] [] [] [] [] | bombono-dvd | [] [] | buzztard | [] [] [] | cflow | [] [] [] | clisp | [] [] [] [] | coreutils | [] [] [] [] | cpio | [] | cppi | [] | cpplib | [] [] [] | cryptsetup | [] | dfarc | [] [] [] [] | dialog | [] [] [] [] [] | dico | | diffutils | [] [] [] [] [] [] [] | dink | [] [] [] | doodle | [] | e2fsprogs | [] [] [] | enscript | [] [] [] | exif | () [] [] [] | fetchmail | [] [] () [] [] [] | findutils | [] [] [] [] | flex | [] [] [] | freedink | [] [] [] [] | gas | [] | gawk | [] [] [] | gcal | [] | gcc | [] [] | gettext-examples | [] [] [] [] [] | gettext-runtime | [] [] [] [] [] | gettext-tools | [] [] [] | gip | [] [] [] [] [] | gjay | [] [] | gliv | [] [] [] [] | glunarclock | [] [] [] | gnubiff | () | gnucash | [] () () () () () | gnuedu | [] [] | gnulib | [] [] [] | gnunet | | gnunet-gtk | [] | gnutls | [] [] | gold | [] [] | gpe-aerial | [] [] [] [] [] | gpe-beam | [] [] [] [] [] | gpe-bluetooth | [] [] [] | gpe-calendar | [] [] | gpe-clock | [] [] [] [] [] | gpe-conf | [] [] [] [] | gpe-contacts | [] [] [] [] | gpe-edit | [] [] [] | gpe-filemanager | [] [] [] [] | gpe-go | [] [] [] [] [] | gpe-login | [] [] [] | gpe-ownerinfo | [] [] [] [] [] | gpe-package | [] [] [] [] | gpe-sketchbook | [] [] [] [] [] | gpe-su | [] [] [] [] [] | gpe-taskmanager | [] [] [] [] [] | gpe-timesheet | [] [] [] [] [] | gpe-today | [] [] [] [] [] | gpe-todo | [] [] [] [] | gphoto2 | [] [] () [] [] [] [] | gprof | [] [] [] [] | gpsdrive | [] [] [] | gramadoir | [] [] [] | grep | [] [] | grub | [] [] [] | gsasl | [] [] | gss | [] | gst-plugins-bad | [] [] [] [] [] [] | gst-plugins-base | [] [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] [] | gstreamer | [] [] [] [] [] [] | gtick | [] () [] [] | gtkam | [] [] () [] [] | gtkorphan | [] [] [] [] | gtkspell | [] [] [] [] [] [] [] [] | gutenprint | [] [] [] [] | hello | [] [] [] [] [] | help2man | [] [] | hylafax | [] [] | idutils | [] [] [] | indent | [] [] [] [] [] [] [] [] | iso_15924 | [] () [] [] [] | iso_3166 | [] [] [] () [] [] [] () [] | iso_3166_2 | () | iso_4217 | [] [] [] () [] [] [] | iso_639 | [] [] [] () [] [] [] | iso_639_3 | | jwhois | [] [] | kbd | [] [] [] [] [] | keytouch | [] [] [] | keytouch-editor | [] [] [] | keytouch-keyboa... | [] [] | klavaro | [] [] [] [] | latrine | [] () [] | ld | [] [] [] | leafpad | [] [] [] [] [] [] [] | libc | [] [] [] [] [] | libexif | [] [] () | libextractor | | libgnutls | [] | libgpewidget | [] [] [] | libgpg-error | [] [] | libgphoto2 | [] () | libgphoto2_port | [] () [] | libgsasl | [] | libiconv | [] [] [] [] [] [] | libidn | [] [] [] [] | lifelines | [] () | liferea | [] [] [] [] [] | lilypond | [] [] [] [] | linkdr | [] [] [] [] | lordsawar | [] | lprng | | lynx | [] [] [] [] | m4 | [] [] [] [] [] | mailfromd | | mailutils | [] | make | [] [] [] [] | man-db | | man-db-manpages | | minicom | [] [] [] [] [] | mkisofs | [] | myserver | | nano | [] [] [] [] | opcodes | [] [] [] | parted | [] [] | pies | | popt | [] [] [] [] [] [] | psmisc | [] [] [] [] | pspp | [] | pwdutils | [] | radius | [] | recode | [] [] [] [] [] [] [] | rosegarden | () () () () | rpm | [] [] [] | rush | | sarg | | screem | | scrollkeeper | [] [] [] [] [] [] | sed | [] [] [] [] [] [] [] | sharutils | [] [] [] [] [] | shishi | | skencil | [] () [] | solfege | [] [] [] [] | solfege-manual | [] [] | soundtracker | [] [] [] | sp | [] | sysstat | [] [] [] [] | tar | [] [] [] [] [] | texinfo | [] [] [] | tin | [] [] | unicode-han-tra... | | unicode-transla... | | util-linux-ng | [] [] [] [] [] | vice | () () | vmm | [] | vorbis-tools | [] [] | wastesedge | [] | wdiff | [] [] [] | wget | [] [] [] [] | wyslij-po | [] | xchat | [] [] [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] [] [] | +-------------------------------------------------+ cs da de el en en_GB en_ZA eo es et eu fa fi 64 105 117 18 1 8 0 28 89 18 19 0 104 fr ga gl gu he hi hr hu hy id is it ja ka kn +------------------------------------------------+ a2ps | [] [] [] | aegis | [] [] | ant-phone | [] [] | anubis | [] [] [] | aspell | [] [] [] [] | bash | [] [] [] | bfd | [] [] | bibshelf | [] [] [] [] | binutils | [] [] | bison | [] [] [] | bison-runtime | [] [] [] [] [] | bluez-pin | [] [] [] [] [] [] [] | bombono-dvd | | buzztard | [] | cflow | [] [] | clisp | [] | coreutils | [] [] [] [] [] | cpio | [] [] [] | cppi | [] | cpplib | [] [] | cryptsetup | [] [] [] | dfarc | [] [] | dialog | [] [] [] [] [] [] [] | dico | | diffutils | [] [] [] [] [] [] [] [] | dink | [] | doodle | [] [] | e2fsprogs | [] [] | enscript | [] [] [] [] | exif | [] [] [] [] [] | fetchmail | [] [] [] [] | findutils | [] [] [] [] [] | flex | [] [] | freedink | [] [] | gas | [] [] | gawk | [] [] [] [] () [] | gcal | [] | gcc | [] | gettext-examples | [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] | gettext-tools | [] [] [] [] | gip | [] [] [] [] [] | gjay | | gliv | () | glunarclock | [] [] [] | gnubiff | () [] () | gnucash | () () () () [] | gnuedu | [] [] | gnulib | [] [] [] [] [] | gnunet | | gnunet-gtk | [] | gnutls | [] [] | gold | [] | gpe-aerial | [] [] | gpe-beam | [] [] [] | gpe-bluetooth | [] [] [] | gpe-calendar | [] | gpe-clock | [] [] [] [] | gpe-conf | [] [] [] | gpe-contacts | [] [] [] | gpe-edit | [] [] | gpe-filemanager | [] [] [] | gpe-go | [] [] [] [] | gpe-login | [] [] | gpe-ownerinfo | [] [] [] [] | gpe-package | [] [] | gpe-sketchbook | [] [] [] | gpe-su | [] [] [] [] [] | gpe-taskmanager | [] [] [] [] | gpe-timesheet | [] [] [] [] | gpe-today | [] [] [] [] [] [] | gpe-todo | [] [] | gphoto2 | [] [] [] [] [] | gprof | [] [] [] | gpsdrive | [] [] [] | gramadoir | [] [] [] | grep | [] | grub | [] [] [] | gsasl | [] [] [] [] | gss | [] [] [] [] | gst-plugins-bad | [] [] [] [] | gst-plugins-base | [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] | gstreamer | [] [] [] [] | gtick | [] [] [] [] | gtkam | [] [] [] [] [] | gtkorphan | [] [] [] | gtkspell | [] [] [] [] [] [] [] [] | gutenprint | [] [] [] | hello | [] [] | help2man | [] | hylafax | [] | idutils | [] [] [] [] [] | indent | [] [] [] [] [] [] [] | iso_15924 | () [] [] | iso_3166 | () [] [] [] [] [] [] [] [] [] [] | iso_3166_2 | () [] [] [] | iso_4217 | () [] [] [] [] | iso_639 | () [] [] [] [] [] [] [] | iso_639_3 | () [] [] | jwhois | [] [] [] [] | kbd | [] [] | keytouch | [] [] [] [] [] | keytouch-editor | [] [] [] [] | keytouch-keyboa... | [] [] [] [] | klavaro | [] [] | latrine | [] [] | ld | [] [] [] | leafpad | [] [] [] [] [] [] () | libc | [] [] [] [] | libexif | | libextractor | | libgnutls | [] [] | libgpewidget | [] [] [] | libgpg-error | [] [] | libgphoto2 | [] [] [] | libgphoto2_port | [] [] [] | libgsasl | [] [] [] [] | libiconv | [] [] [] [] [] | libidn | [] [] [] | lifelines | () | liferea | [] [] [] [] | lilypond | [] | linkdr | [] [] [] [] | lordsawar | | lprng | [] | lynx | [] [] [] [] [] | m4 | [] [] [] [] [] | mailfromd | | mailutils | [] [] | make | [] [] [] [] [] [] [] [] | man-db | [] [] | man-db-manpages | [] | minicom | [] [] [] [] | mkisofs | [] [] [] | myserver | | nano | [] [] [] [] [] | opcodes | [] [] [] | parted | [] [] [] [] | pies | | popt | [] [] [] [] [] [] [] [] | psmisc | [] [] | pspp | | pwdutils | [] [] | radius | [] [] | recode | [] [] [] [] [] [] [] | rosegarden | () () () () | rpm | [] [] | rush | | sarg | [] | screem | [] [] | scrollkeeper | [] [] [] | sed | [] [] [] [] [] [] [] | sharutils | [] [] [] [] [] [] | shishi | [] | skencil | [] | solfege | [] [] [] | solfege-manual | [] [] | soundtracker | [] [] | sp | [] () | sysstat | [] [] [] [] | tar | [] [] [] [] [] [] | texinfo | [] [] [] [] | tin | [] | unicode-han-tra... | | unicode-transla... | [] [] | util-linux-ng | [] [] [] [] [] | vice | () () () | vmm | [] | vorbis-tools | [] | wastesedge | () () | wdiff | | wget | [] [] [] [] [] [] [] | wyslij-po | [] [] | xchat | [] [] [] [] [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] | +------------------------------------------------+ fr ga gl gu he hi hr hu hy id is it ja ka kn 121 53 20 4 8 2 5 53 2 120 5 83 66 0 4 ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne +-----------------------------------------------+ a2ps | [] | aegis | | ant-phone | | anubis | [] [] | aspell | [] | bash | | bfd | | bibshelf | [] [] | binutils | | bison | [] | bison-runtime | [] [] [] [] [] | bluez-pin | [] [] [] [] [] | bombono-dvd | | buzztard | | cflow | | clisp | | coreutils | [] | cpio | | cppi | | cpplib | | cryptsetup | | dfarc | [] | dialog | [] [] [] [] [] | dico | | diffutils | [] [] | dink | | doodle | | e2fsprogs | | enscript | | exif | [] | fetchmail | | findutils | | flex | | freedink | [] | gas | | gawk | | gcal | | gcc | | gettext-examples | [] [] [] [] | gettext-runtime | [] | gettext-tools | [] | gip | [] [] | gjay | | gliv | | glunarclock | [] | gnubiff | | gnucash | () () () () | gnuedu | | gnulib | | gnunet | | gnunet-gtk | | gnutls | [] | gold | | gpe-aerial | [] | gpe-beam | [] | gpe-bluetooth | [] [] | gpe-calendar | [] | gpe-clock | [] [] [] [] [] | gpe-conf | [] [] | gpe-contacts | [] [] | gpe-edit | [] | gpe-filemanager | [] [] | gpe-go | [] [] [] | gpe-login | [] | gpe-ownerinfo | [] [] | gpe-package | [] [] | gpe-sketchbook | [] [] | gpe-su | [] [] [] [] [] [] | gpe-taskmanager | [] [] [] [] [] [] | gpe-timesheet | [] [] | gpe-today | [] [] [] [] | gpe-todo | [] [] | gphoto2 | | gprof | [] | gpsdrive | | gramadoir | | grep | | grub | | gsasl | | gss | | gst-plugins-bad | [] [] | gst-plugins-base | [] [] | gst-plugins-good | [] [] | gst-plugins-ugly | [] [] [] [] [] | gstreamer | | gtick | | gtkam | [] | gtkorphan | [] [] | gtkspell | [] [] [] [] [] [] [] | gutenprint | | hello | [] [] [] | help2man | | hylafax | | idutils | | indent | | iso_15924 | [] [] | iso_3166 | [] [] () [] [] [] [] [] | iso_3166_2 | | iso_4217 | [] [] | iso_639 | [] [] | iso_639_3 | [] | jwhois | [] | kbd | | keytouch | [] | keytouch-editor | [] | keytouch-keyboa... | [] | klavaro | [] | latrine | [] | ld | | leafpad | [] [] [] | libc | [] | libexif | | libextractor | | libgnutls | [] | libgpewidget | [] [] | libgpg-error | | libgphoto2 | | libgphoto2_port | | libgsasl | | libiconv | | libidn | | lifelines | | liferea | | lilypond | | linkdr | | lordsawar | | lprng | | lynx | | m4 | | mailfromd | | mailutils | | make | [] | man-db | | man-db-manpages | | minicom | [] | mkisofs | | myserver | | nano | [] [] | opcodes | | parted | | pies | | popt | [] [] [] | psmisc | | pspp | | pwdutils | | radius | | recode | | rosegarden | | rpm | | rush | | sarg | | screem | | scrollkeeper | [] [] | sed | | sharutils | | shishi | | skencil | | solfege | [] | solfege-manual | | soundtracker | | sp | | sysstat | [] | tar | [] | texinfo | [] | tin | | unicode-han-tra... | | unicode-transla... | | util-linux-ng | | vice | | vmm | | vorbis-tools | | wastesedge | | wdiff | | wget | [] | wyslij-po | | xchat | [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] | +-----------------------------------------------+ ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne 20 5 10 1 12 48 4 2 2 4 24 10 19 3 1 nl nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr +---------------------------------------------------+ a2ps | [] [] [] [] [] [] [] [] | aegis | [] [] [] | ant-phone | [] [] | anubis | [] [] [] | aspell | [] [] [] [] [] | bash | [] [] | bfd | [] | bibshelf | [] [] | binutils | [] [] | bison | [] [] [] | bison-runtime | [] [] [] [] [] [] [] | bluez-pin | [] [] [] [] [] [] [] [] | bombono-dvd | [] () | buzztard | [] [] | cflow | [] | clisp | [] [] | coreutils | [] [] [] [] [] [] | cpio | [] [] [] | cppi | [] | cpplib | [] | cryptsetup | [] | dfarc | [] | dialog | [] [] [] [] | dico | [] | diffutils | [] [] [] [] [] [] | dink | () | doodle | [] [] | e2fsprogs | [] [] | enscript | [] [] [] [] [] | exif | [] [] [] () [] | fetchmail | [] [] [] [] | findutils | [] [] [] [] [] | flex | [] [] [] [] [] | freedink | [] [] | gas | | gawk | [] [] [] [] | gcal | | gcc | [] | gettext-examples | [] [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] [] | gip | [] [] [] [] [] | gjay | | gliv | [] [] [] [] [] [] | glunarclock | [] [] [] [] [] | gnubiff | [] () | gnucash | [] () () () | gnuedu | [] | gnulib | [] [] [] [] | gnunet | | gnunet-gtk | | gnutls | [] [] | gold | | gpe-aerial | [] [] [] [] [] [] [] | gpe-beam | [] [] [] [] [] [] [] | gpe-bluetooth | [] [] | gpe-calendar | [] [] [] [] | gpe-clock | [] [] [] [] [] [] [] [] | gpe-conf | [] [] [] [] [] [] [] | gpe-contacts | [] [] [] [] [] | gpe-edit | [] [] [] | gpe-filemanager | [] [] [] | gpe-go | [] [] [] [] [] [] [] [] | gpe-login | [] [] | gpe-ownerinfo | [] [] [] [] [] [] [] [] | gpe-package | [] [] | gpe-sketchbook | [] [] [] [] [] [] [] | gpe-su | [] [] [] [] [] [] [] [] | gpe-taskmanager | [] [] [] [] [] [] [] [] | gpe-timesheet | [] [] [] [] [] [] [] [] | gpe-today | [] [] [] [] [] [] [] [] | gpe-todo | [] [] [] [] [] | gphoto2 | [] [] [] [] [] [] [] [] | gprof | [] [] [] | gpsdrive | [] [] | gramadoir | [] [] | grep | [] [] [] [] | grub | [] [] [] | gsasl | [] [] [] [] | gss | [] [] [] | gst-plugins-bad | [] [] [] [] [] | gst-plugins-base | [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] [] [] | gtkam | [] [] [] [] [] [] | gtkorphan | [] | gtkspell | [] [] [] [] [] [] [] [] [] [] | gutenprint | [] [] | hello | [] [] [] [] | help2man | [] [] | hylafax | [] | idutils | [] [] [] [] [] | indent | [] [] [] [] [] [] [] | iso_15924 | [] [] [] [] | iso_3166 | [] [] [] [] [] () [] [] [] [] [] [] [] [] | iso_3166_2 | [] [] [] | iso_4217 | [] [] [] [] [] [] [] [] | iso_639 | [] [] [] [] [] [] [] [] [] | iso_639_3 | [] [] | jwhois | [] [] [] [] | kbd | [] [] [] | keytouch | [] [] [] | keytouch-editor | [] [] [] | keytouch-keyboa... | [] [] [] | klavaro | [] [] | latrine | [] [] | ld | | leafpad | [] [] [] [] [] [] [] [] [] | libc | [] [] [] [] | libexif | [] [] () [] | libextractor | | libgnutls | [] [] | libgpewidget | [] [] [] | libgpg-error | [] [] | libgphoto2 | [] [] | libgphoto2_port | [] [] [] [] | libgsasl | [] [] [] [] [] | libiconv | [] [] [] [] [] | libidn | [] [] | lifelines | [] [] | liferea | [] [] [] [] [] () () [] | lilypond | [] | linkdr | [] [] [] | lordsawar | | lprng | [] | lynx | [] [] [] | m4 | [] [] [] [] [] | mailfromd | [] | mailutils | [] | make | [] [] [] [] | man-db | [] [] [] | man-db-manpages | [] [] [] | minicom | [] [] [] [] | mkisofs | [] [] [] | myserver | | nano | [] [] [] [] | opcodes | [] [] | parted | [] [] [] [] | pies | [] | popt | [] [] [] [] | psmisc | [] [] [] | pspp | [] [] | pwdutils | [] | radius | [] [] [] | recode | [] [] [] [] [] [] [] [] | rosegarden | () () | rpm | [] [] [] | rush | [] [] | sarg | | screem | | scrollkeeper | [] [] [] [] [] [] [] [] | sed | [] [] [] [] [] [] [] [] [] | sharutils | [] [] [] [] | shishi | [] | skencil | [] [] | solfege | [] [] [] [] | solfege-manual | [] [] [] | soundtracker | [] | sp | | sysstat | [] [] [] [] | tar | [] [] [] [] | texinfo | [] [] [] [] | tin | [] | unicode-han-tra... | | unicode-transla... | | util-linux-ng | [] [] [] [] [] | vice | [] | vmm | [] | vorbis-tools | [] [] | wastesedge | [] | wdiff | [] [] | wget | [] [] [] [] [] [] [] | wyslij-po | [] [] [] | xchat | [] [] [] [] [] [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] [] | +---------------------------------------------------+ nl nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr 135 10 4 7 105 1 29 61 47 91 3 55 47 8 37 sv sw ta te tg th tr uk vi wa zh_CN zh_HK zh_TW +---------------------------------------------------+ a2ps | [] [] [] [] [] | 27 aegis | [] | 9 ant-phone | [] [] [] [] | 9 anubis | [] [] [] [] | 15 aspell | [] [] [] | 20 bash | [] [] | 11 bfd | [] | 6 bibshelf | [] [] [] | 16 binutils | [] [] | 8 bison | [] [] | 12 bison-runtime | [] [] [] [] [] [] | 29 bluez-pin | [] [] [] [] [] [] [] [] | 37 bombono-dvd | [] | 4 buzztard | [] | 7 cflow | [] [] [] | 9 clisp | | 10 coreutils | [] [] [] [] | 22 cpio | [] [] [] [] [] [] | 13 cppi | [] [] | 5 cpplib | [] [] [] [] [] [] | 13 cryptsetup | [] [] | 7 dfarc | [] | 9 dialog | [] [] [] [] [] [] [] | 30 dico | [] | 2 diffutils | [] [] [] [] [] [] | 30 dink | | 4 doodle | [] [] | 7 e2fsprogs | [] [] [] | 11 enscript | [] [] [] [] | 17 exif | [] [] [] | 16 fetchmail | [] [] [] | 17 findutils | [] [] [] [] [] | 20 flex | [] [] [] [] | 15 freedink | [] | 10 gas | [] | 4 gawk | [] [] [] [] | 18 gcal | [] [] | 5 gcc | [] [] [] | 7 gettext-examples | [] [] [] [] [] [] [] | 34 gettext-runtime | [] [] [] [] [] [] [] | 30 gettext-tools | [] [] [] [] [] [] | 22 gip | [] [] [] [] | 22 gjay | [] | 3 gliv | [] [] [] | 14 glunarclock | [] [] [] [] [] | 19 gnubiff | [] [] | 4 gnucash | () [] () () | 9 gnuedu | [] [] | 7 gnulib | [] [] [] [] | 16 gnunet | [] | 1 gnunet-gtk | [] [] [] | 5 gnutls | [] [] [] | 10 gold | [] | 4 gpe-aerial | [] [] [] | 18 gpe-beam | [] [] [] | 19 gpe-bluetooth | [] [] [] | 13 gpe-calendar | [] [] [] [] | 12 gpe-clock | [] [] [] [] [] | 28 gpe-conf | [] [] [] [] | 20 gpe-contacts | [] [] [] | 17 gpe-edit | [] [] [] | 12 gpe-filemanager | [] [] [] [] | 16 gpe-go | [] [] [] [] [] | 25 gpe-login | [] [] [] | 11 gpe-ownerinfo | [] [] [] [] [] | 25 gpe-package | [] [] [] | 13 gpe-sketchbook | [] [] [] | 20 gpe-su | [] [] [] [] [] | 30 gpe-taskmanager | [] [] [] [] [] | 29 gpe-timesheet | [] [] [] [] [] | 25 gpe-today | [] [] [] [] [] [] | 30 gpe-todo | [] [] [] [] | 17 gphoto2 | [] [] [] [] [] | 24 gprof | [] [] [] | 15 gpsdrive | [] [] [] | 11 gramadoir | [] [] [] | 11 grep | [] [] [] | 10 grub | [] [] [] | 14 gsasl | [] [] [] [] | 14 gss | [] [] [] | 11 gst-plugins-bad | [] [] [] [] | 22 gst-plugins-base | [] [] [] [] [] | 24 gst-plugins-good | [] [] [] [] [] | 25 gst-plugins-ugly | [] [] [] [] [] | 29 gstreamer | [] [] [] [] | 22 gtick | [] [] [] | 13 gtkam | [] [] [] | 20 gtkorphan | [] [] [] | 14 gtkspell | [] [] [] [] [] [] [] [] [] | 45 gutenprint | [] | 10 hello | [] [] [] [] [] [] | 21 help2man | [] [] | 7 hylafax | [] | 5 idutils | [] [] [] [] | 17 indent | [] [] [] [] [] [] | 30 iso_15924 | () [] () [] [] | 16 iso_3166 | [] [] () [] [] () [] [] [] () | 53 iso_3166_2 | () [] () [] | 9 iso_4217 | [] () [] [] () [] [] | 26 iso_639 | [] [] [] () [] () [] [] [] [] | 38 iso_639_3 | [] () | 8 jwhois | [] [] [] [] [] | 16 kbd | [] [] [] [] [] | 15 keytouch | [] [] [] | 16 keytouch-editor | [] [] [] | 14 keytouch-keyboa... | [] [] [] | 14 klavaro | [] | 11 latrine | [] [] [] | 10 ld | [] [] [] [] | 11 leafpad | [] [] [] [] [] [] | 33 libc | [] [] [] [] [] | 21 libexif | [] () | 6 libextractor | [] | 1 libgnutls | [] [] [] | 9 libgpewidget | [] [] [] | 14 libgpg-error | [] [] [] | 9 libgphoto2 | [] [] | 8 libgphoto2_port | [] [] [] [] | 13 libgsasl | [] [] [] | 13 libiconv | [] [] [] [] | 21 libidn | () [] [] | 11 lifelines | [] | 4 liferea | [] [] [] | 21 lilypond | [] | 7 linkdr | [] [] [] [] [] | 17 lordsawar | | 1 lprng | [] | 3 lynx | [] [] [] [] | 17 m4 | [] [] [] [] | 19 mailfromd | [] [] | 3 mailutils | [] | 5 make | [] [] [] [] | 21 man-db | [] [] [] | 8 man-db-manpages | | 4 minicom | [] [] | 16 mkisofs | [] [] | 9 myserver | | 0 nano | [] [] [] [] | 21 opcodes | [] [] [] | 11 parted | [] [] [] [] [] | 15 pies | [] [] | 3 popt | [] [] [] [] [] [] | 27 psmisc | [] [] | 11 pspp | | 4 pwdutils | [] [] | 6 radius | [] [] | 9 recode | [] [] [] [] | 28 rosegarden | () | 0 rpm | [] [] [] | 11 rush | [] [] | 4 sarg | | 1 screem | [] | 3 scrollkeeper | [] [] [] [] [] | 27 sed | [] [] [] [] [] | 30 sharutils | [] [] [] [] [] | 22 shishi | [] | 3 skencil | [] [] | 7 solfege | [] [] [] [] | 16 solfege-manual | [] | 8 soundtracker | [] [] [] | 9 sp | [] | 3 sysstat | [] [] | 15 tar | [] [] [] [] [] [] | 23 texinfo | [] [] [] [] | 16 tin | | 4 unicode-han-tra... | | 0 unicode-transla... | | 2 util-linux-ng | [] [] [] [] | 20 vice | () () | 1 vmm | [] | 4 vorbis-tools | [] | 6 wastesedge | | 2 wdiff | [] [] | 7 wget | [] [] [] [] [] | 26 wyslij-po | [] [] | 8 xchat | [] [] [] [] [] [] | 36 xdg-user-dirs | [] [] [] [] [] [] [] [] [] | 60 xkeyboard-config | [] [] [] [] | 25 +---------------------------------------------------+ 84 teams sv sw ta te tg th tr uk vi wa zh_CN zh_HK zh_TW 178 domains 119 1 3 2 0 10 66 50 155 17 97 7 41 2610 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are used for implementing regional variants of languages, or language dialects. For a PO file in the matrix above to be effective, the package to which it applies should also have been internationalized and distributed as such by its maintainer. There might be an observable lag between the mere existence a PO file and its wide availability in a distribution. If May 2010 seems to be old, you may fetch a more recent copy of this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date matrix with full percentage details can be found at `http://translationproject.org/extra/matrix.html'. 1.6 Using `gettext' in new packages =================================== If you are writing a freely available program and want to internationalize it you are welcome to use GNU `gettext' in your package. Of course you have to respect the GNU Library General Public License which covers the use of the GNU `gettext' library. This means in particular that even non-free programs can use `libintl' as a shared library, whereas only free software can use `libintl' as a static library or use modified versions of `libintl'. Once the sources are changed appropriately and the setup can handle the use of `gettext' the only thing missing are the translations. The Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact `coordinator@translationproject.org' to make the `.pot' files available to the translation teams. hunspell-1.7.2/config.guess0000755000175000017500000012637313424262414012632 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2018 Free Software Foundation, Inc. timestamp='2018-02-24' # 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 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Options: -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 1992-2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > "$dummy.c" ; for c in cc gcc c89 c99 ; do if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "$UNAME_SYSTEM" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval "$set_cc_for_build" cat <<-EOF > "$dummy.c" #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" # If ldd exists, use it to detect musl libc. if command -v ldd >/dev/null && \ ldd --version 2>&1 | grep -q ^musl then LIBC=musl fi ;; esac # 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 tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ "/sbin/$sysctl" 2>/dev/null || \ "/usr/sbin/$sysctl" 2>/dev/null || \ echo unknown)` case "$UNAME_MACHINE_ARCH" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` machine="${arch}${endian}"-unknown ;; *) machine="$UNAME_MACHINE_ARCH"-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case "$UNAME_MACHINE_ARCH" in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval "$set_cc_for_build" if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case "$UNAME_MACHINE_ARCH" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "$UNAME_VERSION" in Debian*) release='-gnu' ;; *) release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "$machine-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" exit ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" exit ;; *:MidnightBSD:*:*) echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" exit ;; *:ekkoBSD:*:*) echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" exit ;; *:SolidBSD:*:*) echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd"$UNAME_RELEASE" exit ;; *:MirBSD:*:*) echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" exit ;; *:Sortix:*:*) echo "$UNAME_MACHINE"-unknown-sortix exit ;; *:Redox:*:*) echo "$UNAME_MACHINE"-unknown-redox exit ;; mips:OSF1:*.*) echo mips-dec-osf1 exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo "$UNAME_MACHINE"-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo "$UNAME_MACHINE"-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix"$UNAME_RELEASE" exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux"$UNAME_RELEASE" exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval "$set_cc_for_build" SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos"$UNAME_RELEASE" exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos"$UNAME_RELEASE" ;; sun4) echo sparc-sun-sunos"$UNAME_RELEASE" ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos"$UNAME_RELEASE" exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint"$UNAME_RELEASE" exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint"$UNAME_RELEASE" exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint"$UNAME_RELEASE" exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint"$UNAME_RELEASE" exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint"$UNAME_RELEASE" exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint"$UNAME_RELEASE" exit ;; m68k:machten:*:*) echo m68k-apple-machten"$UNAME_RELEASE" exit ;; powerpc:machten:*:*) echo powerpc-apple-machten"$UNAME_RELEASE" exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix"$UNAME_RELEASE" exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix"$UNAME_RELEASE" exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix"$UNAME_RELEASE" exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval "$set_cc_for_build" sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos"$UNAME_RELEASE" exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] then if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ [ "$TARGET_BINARY_INTERFACE"x = x ] then echo m88k-dg-dgux"$UNAME_RELEASE" else echo m88k-dg-dguxbcs"$UNAME_RELEASE" fi else echo i586-dg-dgux"$UNAME_RELEASE" fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval "$set_cc_for_build" sed 's/^ //' << EOF > "$dummy.c" #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi echo "$IBM_ARCH"-ibm-aix"$IBM_REV" exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` case "$UNAME_MACHINE" in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "$sc_cpu_version" in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "$sc_kernel_bits" in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if [ "$HP_ARCH" = "" ]; then eval "$set_cc_for_build" sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ "$HP_ARCH" = hppa2.0w ] then eval "$set_cc_for_build" # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi echo "$HP_ARCH"-hp-hpux"$HPUX_REV" exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux"$HPUX_REV" exit ;; 3050*:HI-UX:*:*) eval "$set_cc_for_build" sed 's/^ //' << EOF > "$dummy.c" #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo "$UNAME_MACHINE"-unknown-osf1mk else echo "$UNAME_MACHINE"-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi"$UNAME_RELEASE" exit ;; *:BSD/OS:*:*) echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case "$UNAME_PROCESSOR" in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" exit ;; i*:CYGWIN*:*) echo "$UNAME_MACHINE"-pc-cygwin exit ;; *:MINGW64*:*) echo "$UNAME_MACHINE"-pc-mingw64 exit ;; *:MINGW*:*) echo "$UNAME_MACHINE"-pc-mingw32 exit ;; *:MSYS*:*) echo "$UNAME_MACHINE"-pc-msys exit ;; i*:PW*:*) echo "$UNAME_MACHINE"-pc-pw32 exit ;; *:Interix*:*) case "$UNAME_MACHINE" in x86) echo i586-pc-interix"$UNAME_RELEASE" exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix"$UNAME_RELEASE" exit ;; IA64) echo ia64-unknown-interix"$UNAME_RELEASE" exit ;; esac ;; i*:UWIN*:*) echo "$UNAME_MACHINE"-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; *:GNU:*:*) # the GNU system echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" exit ;; i*86:Minix:*:*) echo "$UNAME_MACHINE"-pc-minix exit ;; aarch64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arm*:Linux:*:*) eval "$set_cc_for_build" if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi else echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf fi fi exit ;; avr32*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; cris:Linux:*:*) echo "$UNAME_MACHINE"-axis-linux-"$LIBC" exit ;; crisv32:Linux:*:*) echo "$UNAME_MACHINE"-axis-linux-"$LIBC" exit ;; e2k:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; frv:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; hexagon:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; i*86:Linux:*:*) echo "$UNAME_MACHINE"-pc-linux-"$LIBC" exit ;; ia64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; k1om:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m32r*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m68*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval "$set_cc_for_build" sed 's/^ //' << EOF > "$dummy.c" #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`" test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; } ;; mips64el:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-"$LIBC" exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; padre:Linux:*:*) echo sparc-unknown-linux-"$LIBC" exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-"$LIBC" exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; *) echo hppa-unknown-linux-"$LIBC" ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-"$LIBC" exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-"$LIBC" exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-"$LIBC" exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-"$LIBC" exit ;; riscv32:Linux:*:* | riscv64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" exit ;; sh64*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sh*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; tile*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; vax:Linux:*:*) echo "$UNAME_MACHINE"-dec-linux-"$LIBC" exit ;; x86_64:Linux:*:*) if objdump -f /bin/sh | grep -q elf32-x86-64; then echo "$UNAME_MACHINE"-pc-linux-"$LIBC"x32 else echo "$UNAME_MACHINE"-pc-linux-"$LIBC" fi exit ;; xtensa*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo "$UNAME_MACHINE"-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo "$UNAME_MACHINE"-unknown-stop exit ;; i*86:atheos:*:*) echo "$UNAME_MACHINE"-unknown-atheos exit ;; i*86:syllable:*:*) echo "$UNAME_MACHINE"-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos"$UNAME_RELEASE" exit ;; i*86:*DOS:*:*) echo "$UNAME_MACHINE"-pc-msdosdjgpp exit ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" else echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}" exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" else echo "$UNAME_MACHINE"-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos"$UNAME_RELEASE" exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos"$UNAME_RELEASE" exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos"$UNAME_RELEASE" exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos"$UNAME_RELEASE" exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv"$UNAME_RELEASE" exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo "$UNAME_MACHINE"-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo "$UNAME_MACHINE"-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux"$UNAME_RELEASE" exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv"$UNAME_RELEASE" else echo mips-unknown-sysv"$UNAME_RELEASE" fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux"$UNAME_RELEASE" exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux"$UNAME_RELEASE" exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux"$UNAME_RELEASE" exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux"$UNAME_RELEASE" exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux"$UNAME_RELEASE" exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux"$UNAME_RELEASE" exit ;; SX-ACE:SUPER-UX:*:*) echo sxace-nec-superux"$UNAME_RELEASE" exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody"$UNAME_RELEASE" exit ;; *:Rhapsody:*:*) echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval "$set_cc_for_build" if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_PPC >/dev/null then UNAME_PROCESSOR=powerpc fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-*:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk"$UNAME_RELEASE" exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk"$UNAME_RELEASE" exit ;; NSR-*:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk"$UNAME_RELEASE" exit ;; NSV-*:NONSTOP_KERNEL:*:*) echo nsv-tandem-nsk"$UNAME_RELEASE" exit ;; NSX-*:NONSTOP_KERNEL:*:*) echo nsx-tandem-nsk"$UNAME_RELEASE" exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo "$UNAME_MACHINE"-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux"$UNAME_RELEASE" exit ;; *:DragonFly:*:*) echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "$UNAME_MACHINE" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" exit ;; i*86:rdos:*:*) echo "$UNAME_MACHINE"-pc-rdos exit ;; i*86:AROS:*:*) echo "$UNAME_MACHINE"-pc-aros exit ;; x86_64:VMkernel:*:*) echo "$UNAME_MACHINE"-unknown-esx exit ;; amd64:Isilon\ OneFS:*:*) echo x86_64-unknown-onefs exit ;; esac echo "$0: unable to guess system type" >&2 case "$UNAME_MACHINE:$UNAME_SYSTEM" in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&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-functions 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: hunspell-1.7.2/COPYING.MPL0000644000175000017500000006223313422074107011764 00000000000000 MOZILLA PUBLIC LICENSE Version 1.1 --------------- 1. Definitions. 1.0.1. "Commercial Use" means distribution or otherwise making the Covered Code available to a third party. 1.1. "Contributor" means each entity that creates or contributes to the creation of Modifications. 1.2. "Contributor Version" means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor. 1.3. "Covered Code" means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof. 1.4. "Electronic Distribution Mechanism" means a mechanism generally accepted in the software development community for the electronic transfer of data. 1.5. "Executable" means Covered Code in any form other than Source Code. 1.6. "Initial Developer" means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A. 1.7. "Larger Work" means a work which combines Covered Code or portions thereof with code not governed by the terms of this License. 1.8. "License" means this document. 1.8.1. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein. 1.9. "Modifications" means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is: A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications. B. Any new file that contains any part of the Original Code or previous Modifications. 1.10. "Original Code" means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License. 1.10.1. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor. 1.11. "Source Code" means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge. 1.12. "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. 2. Source Code License. 2.1. The Initial Developer Grant. The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims: (a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, and/or as part of a Larger Work; and (b) under Patents Claims infringed by the making, using or selling of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Code (or portions thereof). (c) the licenses granted in this Section 2.1(a) and (b) are effective on the date Initial Developer first distributes Original Code under the terms of this License. (d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for code that You delete from the Original Code; 2) separate from the Original Code; or 3) for infringements caused by: i) the modification of the Original Code or ii) the combination of the Original Code with other software or devices. 2.2. Contributor Grant. Subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license (a) under intellectual property rights (other than patent or trademark) Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger Work; and (b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor (or portions thereof); and 2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination). (c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first makes Commercial Use of the Covered Code. (d) Notwithstanding Section 2.2(b) above, no patent license is granted: 1) for any code that Contributor has deleted from the Contributor Version; 2) separate from the Contributor Version; 3) for infringements caused by: i) third party modifications of Contributor Version or ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code in the absence of Modifications made by that Contributor. 3. Distribution Obligations. 3.1. Application of License. The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5. 3.2. Availability of Source Code. Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party. 3.3. Description of Modifications. You must cause all Covered Code to which You contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code. 3.4. Intellectual Property Matters (a) Third Party Claims. If Contributor has knowledge that a license under a third party's intellectual property rights is required to exercise the rights granted by such Contributor under Sections 2.1 or 2.2, Contributor must include a text file with the Source Code distribution titled "LEGAL" which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If Contributor obtains such knowledge after the Modification is made available as described in Section 3.2, Contributor shall promptly modify the LEGAL file in all copies Contributor makes available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained. (b) Contributor APIs. If Contributor's Modifications include an application programming interface and Contributor has knowledge of patent licenses which are reasonably necessary to implement that API, Contributor must also include this information in the LEGAL file. (c) Representations. Contributor represents that, except as disclosed pursuant to Section 3.4(a) above, Contributor believes that Contributor's Modifications are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the rights conveyed by this License. 3.5. Required Notices. You must duplicate the notice in Exhibit A in each file of the Source Code. If it is not possible to put such notice in a particular Source Code file due to its structure, then You must include such notice in a location (such as a relevant directory) where a user would be likely to look for such a notice. If You created one or more Modification(s) You may add your name as a Contributor to the notice described in Exhibit A. You must also duplicate this License in any documentation for the Source Code where You describe recipients' rights or ownership rights relating to Covered Code. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer. 3.6. Distribution of Executable Versions. You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code or ownership rights under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer. 3.7. Larger Works. You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code. 4. Inability to Comply Due to Statute or Regulation. If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. 5. Application of this License. This License applies to code to which the Initial Developer has attached the notice in Exhibit A and to related Covered Code. 6. Versions of the License. 6.1. New Versions. Netscape Communications Corporation ("Netscape") may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number. 6.2. Effect of New Versions. Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Netscape. No one other than Netscape has the right to modify the terms applicable to Covered Code created under this License. 6.3. Derivative Works. If You create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), You must (a) rename Your license so that the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", "MPL", "NPL" or any confusingly similar phrase do not appear in your license (except to note that your license differs from this License) and (b) otherwise make it clear that Your version of the license contains terms which differ from the Mozilla Public License and Netscape Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.) 7. DISCLAIMER OF WARRANTY. COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. 8. TERMINATION. 8.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. 8.2. If You initiate litigation by asserting a patent infringement claim (excluding declatory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You file such action is referred to as "Participant") alleging that: (a) such Participant's Contributor Version directly or indirectly infringes any patent, then any and all rights granted by such Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively, unless if within 60 days after receipt of notice You either: (i) agree in writing to pay Participant a mutually agreeable reasonable royalty for Your past and future use of Modifications made by such Participant, or (ii) withdraw Your litigation claim with respect to the Contributor Version against such Participant. If within 60 days of notice, a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Participant to You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of the 60 day notice period specified above. (b) any software, hardware, or device, other than such Participant's Contributor Version, directly or indirectly infringes any patent, then any rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are revoked effective as of the date You first made, used, sold, distributed, or had made, Modifications made by that Participant. 8.3. If You assert a patent infringement claim against Participant alleging that such Participant's Contributor Version directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license. 8.4. In the event of termination under Sections 8.1 or 8.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or any distributor hereunder prior to termination shall survive termination. 9. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. 10. U.S. GOVERNMENT END USERS. The Covered Code is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein. 11. MISCELLANEOUS. This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in the United States of America, any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California, with venue lying in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. 12. RESPONSIBILITY FOR CLAIMS. As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability. 13. MULTIPLE-LICENSED CODE. Initial Developer may designate portions of the Covered Code as "Multiple-Licensed". "Multiple-Licensed" means that the Initial Developer permits you to utilize portions of the Covered Code under Your choice of the NPL or the alternative licenses, if any, specified by the Initial Developer in the file described in Exhibit A. EXHIBIT A -Mozilla Public License. ``The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. The Original Code is ______________________________________. The Initial Developer of the Original Code is ________________________. Portions created by ______________________ are Copyright (C) ______ _______________________. All Rights Reserved. Contributor(s): ______________________________________. Alternatively, the contents of this file may be used under the terms of the _____ license (the "[___] License"), in which case the provisions of [______] License are applicable instead of those above. If you wish to allow use of your version of this file only under the terms of the [____] License and not to allow others to use your version of this file under the MPL, indicate your decision by deleting the provisions above and replace them with the notice and other provisions required by the [___] License. If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the [___] License." [NOTE: The text of this Exhibit A may differ slightly from the text of the notices in the Source Code files of the Original Code. You should use the text of this Exhibit A rather than the text found in the Original Code Source Code for Your Modifications.] hunspell-1.7.2/missing0000755000175000017500000001533013424262414011677 00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2014 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: hunspell-1.7.2/README0000664000175000017500000002507714352145647011204 00000000000000# About Hunspell Hunspell is a free spell checker and morphological analyzer library and command-line tool, licensed under LGPL/GPL/MPL tri-license. Hunspell is used by LibreOffice office suite, free browsers, like Mozilla Firefox and Google Chrome, and other tools and OSes, like Linux distributions and macOS. It is also a command-line tool for Linux, Unix-like and other OSes. It is designed for quick and high quality spell checking and correcting for languages with word-level writing system, including languages with rich morphology, complex word compounding and character encoding. Hunspell interfaces: Ispell-like terminal interface using Curses library, Ispell pipe interface, C++/C APIs and shared library, also with existing language bindings for other programming languages. Hunspell's code base comes from OpenOffice.org's MySpell library, developed by Kevin Hendricks (originally a C++ reimplementation of spell checking and affixation of Geoff Kuenning's International Ispell from scratch, later extended with eg. n-gram suggestions), see http://lingucomponent.openoffice.org/MySpell-3.zip, and its README, CONTRIBUTORS and license.readme (here: license.myspell) files. Main features of Hunspell library, developed by László Németh: - Unicode support - Highly customizable suggestions: word-part replacement tables and stem-level phonetic and other alternative transcriptions to recognize and fix all typical misspellings, don't suggest offensive words etc. - Complex morphology: dictionary and affix homonyms; twofold affix stripping to handle inflectional and derivational morpheme groups for agglutinative languages, like Azeri, Basque, Estonian, Finnish, Hungarian, Turkish; 64 thousand affix classes with arbitrary number of affixes; conditional affixes, circumfixes, fogemorphemes, zero morphemes, virtual dictionary stems, forbidden words to avoid overgeneration etc. - Handling complex compounds (for example, for Finno-Ugric, German and Indo-Aryan languages): recognizing compounds made of arbitrary number of words, handle affixation within compounds etc. - Custom dictionaries with affixation - Stemming - Morphological analysis (in custom item and arrangement style) - Morphological generation - SPELLML XML API over plain spell() API function for easier integration of stemming, morpological generation and custom dictionaries with affixation - Language specific algorithms, like special casing of Azeri or Turkish dotted i and German sharp s, and special compound rules of Hungarian. Main features of Hunspell command line tool, developed by László Németh: - Reimplementation of quick interactive interface of Geoff Kuenning's Ispell - Parsing formats: text, OpenDocument, TeX/LaTeX, HTML/SGML/XML, nroff/troff - Custom dictionaries with optional affixation, specified by a model word - Multiple dictionary usage (for example hunspell -d en_US,de_DE,de_medical) - Various filtering options (bad or good words/lines) - Morphological analysis (option -m) - Stemming (option -s) See man hunspell, man 3 hunspell, man 5 hunspell for complete manual. Translations: Hunspell has been translated into several languages already. If your language is missing or incomplete, please use [Weblate](https://hosted.weblate.org/engage/hunspell/) to help translate Hunspell. Stanje prijevoda # Dependencies Build only dependencies: g++ make autoconf automake autopoint libtool Runtime dependencies: | | Mandatory | Optional | |---------------|------------------|------------------| |libhunspell | | | |hunspell tool | libiconv gettext | ncurses readline | # Compiling on GNU/Linux and Unixes We first need to download the dependencies. On Linux, `gettext` and `libiconv` are part of the standard library. On other Unixes we need to manually install them. For Ubuntu: sudo apt install autoconf automake autopoint libtool Then run the following commands: autoreconf -vfi ./configure make sudo make install sudo ldconfig For dictionary development, use the `--with-warnings` option of configure. For interactive user interface of Hunspell executable, use the `--with-ui` option. Optional developer packages: - ncurses (need for --with-ui), eg. libncursesw5 for UTF-8 - readline (for fancy input line editing, configure parameter: --with-readline) In Ubuntu, the packages are: libncurses5-dev libreadline-dev # Compiling on OSX and macOS On macOS for compiler always use `clang` and not `g++` because Homebrew dependencies are build with that. brew install autoconf automake libtool gettext brew link gettext --force Then run: autoreconf -vfi ./configure make # Compiling on Windows ## Compiling with Mingw64 and MSYS2 Download Msys2, update everything and install the following packages: pacman -S base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-libtool Open Mingw-w64 Win64 prompt and compile the same way as on Linux, see above. ## Compiling in Cygwin environment Download and install Cygwin environment for Windows with the following extra packages: - make - automake - autoconf - libtool - gcc-g++ development package - ncurses, readline (for user interface) - iconv (character conversion) Then compile the same way as on Linux. Cygwin builds depend on Cygwin1.dll. # Debugging It is recommended to install a debug build of the standard library: libstdc++6-6-dbg For debugging we need to create a debug build and then we need to start `gdb`. ./configure CXXFLAGS='-g -O0 -Wall -Wextra' make ./libtool --mode=execute gdb src/tools/hunspell You can also pass the `CXXFLAGS` directly to `make` without calling `./configure`, but we don't recommend this way during long development sessions. If you like to develop and debug with an IDE, see documentation at https://github.com/hunspell/hunspell/wiki/IDE-Setup # Testing Testing Hunspell (see tests in tests/ subdirectory): make check or with Valgrind debugger: make check VALGRIND=[Valgrind_tool] make check For example: make check VALGRIND=memcheck make check # Documentation features and dictionary format: man 5 hunspell man hunspell hunspell -h http://hunspell.github.io/ # Usage After compiling and installing (see INSTALL) you can run the Hunspell spell checker (compiled with user interface) with a Hunspell or Myspell dictionary: hunspell -d en_US text.txt or without interface: hunspell hunspell -d en_GB -l Linking with Hunspell static library: g++ -lhunspell-1.7 example.cxx # or better, use pkg-config g++ $(pkg-config --cflags --libs hunspell) example.cxx # Installing Hunspell (vcpkg) Alternatively, you can build and install hunspell using [vcpkg](https://github.com/Microsoft/vcpkg/) dependency manager: git clone https://github.com/Microsoft/vcpkg.git cd vcpkg ./bootstrap-vcpkg.sh ./vcpkg integrate install ./vcpkg install hunspell The hunspell port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository. ## Dictionaries Hunspell (MySpell) dictionaries: - https://wiki.documentfoundation.org/Language_support_of_LibreOffice - http://cgit.freedesktop.org/libreoffice/dictionaries - http://extensions.libreoffice.org - https://extensions.openoffice.org - https://wiki.openoffice.org/wiki/Dictionaries Aspell dictionaries (conversion: man 5 hunspell): - ftp://ftp.gnu.org/gnu/aspell/dict László Németh, nemeth at numbertext org hunspell-1.7.2/NEWS0000664000175000017500000006754014352145647011024 000000000000002022-08-22: Hunspell 1.7.1 release: - Merge chromium fix for #714 OOB string write in hunspell - Merge firefox fix for #756 various issues parsing incomplete aff files - Fix #492 crash with hunspell -l -r - Merge in weblate translations 2018-11-12: Hunspell 1.7.0 release: New features and bug fixes by Lszl Nmeth, supported by FSF.hu Foundation: - No annoying suggestion times any more, especially in languages with compound word handling and complex morphology. By adding balanced multi-level time limits, now the guaranteed suggestion time is there within half a second, not seconds (nor dozen of seconds or more in extreme cases) for longer misspellings, too. - add SPELLML support for run-time dictionary extension with optional affixation of user words. See new "Grammar By" feature of language-specific user dictionaries of LibreOffice 6.0: News: https://wiki.documentfoundation.org/ReleaseNotes/6.0#.E2.80.9CGrammar_By.E2.80.9D_spell_checking Screencast with English example: https://www.youtube.com/watch?v=EsS3gaBTfOo Screencast with German example: https://www.youtube.com/watch?v=aYVFDqCUb6I - Improved, highly customizable suggestions on level of dictionary words: Pronunciations and typical misspellings defined by optional "ph:" fields of the dictionary words are used not only in n-gram suggestions, but as elements of the REP replacement list getting the highest priority in normal suggestions, also giving the best suggestions for short words, too. More information: see "ph:" in man 5 hunspell. - Handling multiple word suggestions is much more easier. Like in a traditional spelling dictionary, for example, to get the correct suggestion "a lot" for the typical misspelling "alot" at the first place, now it's enough to put the following line to the dic(tionary) file: a lot - Limit compound overgeneration by dictionary based word pairs: Now it's possible to filter bad compound words by listing the correct word pairs with space in the dictionary, as in a traditional spelling dictionary. - clean-up suggestion: - no n-gram and compound word suggestions, if "good" suggestion exists, ie. uppercase, REP, ph: or dictionary word pair suggestions - word pairs are always suggested, if they exist in the dic file - word pairs have top priority in suggestions, and these are the only suggestions if there is no other good suggestion. - also dictionary word pairs separated by dash instead of space are handled specially in two-word suggestion (depending from the language) - limit bad suggestions by improved n-gram suggestion rules: don't suggest capitalized dictionary words for lower case misspellings in n-gram suggestions, except - PHONE usage, or - in the case of German, where not only proper nouns are capitalized, or - the capitalized word has special pronunciation and don't suggest if the difference of lengths of misspellings and suggestions is 5 or more characters. - Extend dotless i and dotted I rules to Crimean Tatar language Allow dotted I in dictionary, and disable bad capitalization of i. - BREAK: extended recursive word breaking algorithm to handle words or words with suffixes when they already contain word break characters, for example, "e-mail" is a dictionary word with a word break character, and it wasn't accepted before in compounds in some languages. - FORBIDDENWORD precedes BREAK: Now it's possible to forbid compound forms recognized by BREAK word breaking by adding the bad compounds to the dictionary with FORBIDDENWORD flags. - lower limit for "doubletwochars" suggestion algorithm: one of the typical misspellings recognized by Hunspell suggestion mechanism is the syllable duplication. Along the old pattern ABABA -> ABA, for example nutrITITIon -> nutrITIon, now also the simpler ABAB -> AB pattern is recognized in non-starting position, for example, regretTETEd -> regretTEd. - lower limit for longswapchar and movechar: recognized only max. 4-character distances to avoid slow and bad suggestions. - fix compound handling for new Hungarian orthography reform - Allow suggestion search for prefix + *two suffixes*: Remove artificial performance limit to get correct suggestions for relatively simple misspellings in Hungarian, etc., when the word form contains prefix and both derivative and inflectional suffixes, too: lefikszlsa -> lefixlsa Improvements for command-line Hunspell: - Remove false alarms during checking OpenDocument (ODF) documents by ignoring elements. (LibreOffice creates a lot of elements also within words during text reediting, resulted often huge amount of broken words before this fix.) - List filenames during filtering multiple files in command-line: Examples: $ hunspell -l *.odt a.odt: mispelling b.odt: egzample $ hunspell -l -G *.odt a.odt: good b.odt: words - Dictionary search by option -D doesn't wait for the standard input (fixed by Siva Mahadevan) Other improvements: - makealias dictionary compression: add option --minimize-diff to reuse free positions of alias lists to create minimal and readable diffs for alias compressed dictionaries stored in revision control systems, as dictionaries of LibreOffice. - Brazilian-Portuguese translation by Rafael Fontenelle - Catalan translation by robert dot buj at gmail - Minor bug fixes by several contributors, see git log 2017-09-03: Hunspell 1.6.2 release: - Library changes: no. Same as 1.6.1. - Command line tool: - Added German translation - Fixed bug with wrong output encoding, not respecting system locale. 2017-03-25: Hunspell 1.6.1 release: - Library changes: - Performance improvements in suggest() - Fixes regressions for Hungarian related to compounding. - Fixes regressions for Korean related to ICONV. - Command line tool: - Added Tajik translation - Fix regarding serching of OOo dicts installed in user folder - Manpages: - Fix microsoft-cp1251 to cp1251. Dicts should not use the first. - Typos. 2016-12-22: Hunspell 1.6.0 release: - Library changes: - Performance improvement in ngsuggest(), suggestions should be faster. - Revert MAXWORDLEN to 100 as in 1.3.3 for performance reasons. - MAXWORDLEN can be set during build time with -D defines. - Fix crash when word with 102 consecutive X is spelled. - Command line tool: - -D shows all loaded dictionares insted of only the first. - -D properly lists all available dictionaries on Windows. 2016-11-30: Hunspell 1.5.4 release: - Fixes the command COMPOUNDSYLLABLE used in Hungarian dictionary. 2016-11-28: Hunspell 1.5.3 release: - Removed a #include from hunspell.hxx that was creating trouble 2016-11-27: Hunspell 1.5.2 release: - Reverted full backward compatibility with 1.4 public API, again 2016-11-27: Hunspell 1.5.1 release: - Reverted full backward compatibility with 1.4 public API 2016-11-18: Hunspell 1.5.0 release: - Lot of stability fixes - Fixed compilation errors on various systems (Windows, FreeBSD) - Small performance improvement compared to 1.4.0 - The C++ API is updated to use modern C++ types (string, vector). Backward compatibility is kept for most of the functions except for the following: - get_wordchars(); - get_version(); - input_conv(string, string); - removed get_csconv(); 2016-04-15: Hunspell 1.4.0 release: - various abi changes due to moving away from char* to std::string 2014-06-02: Hunspell 1.3.3 release: - OpenDocument (ODF and Flat ODF) support (ODF needs unzip program) - various bug fixes 2011-02-02: Hunspell 1.3.2 release: - fix library versioning - improved manual 2011-02-02: Hunspell 1.3.1 release: - bug fixes 2011-01-26: Hunspell 1.2.15/1.3 release: - new features: MAXDIFF, ONLYMAXDIFF, MAXCPDSUGS, FORBIDWARN, see manual - bug fixes 2011-01-21: - new features: FORCEUCASE and WARN, see manual - new options: -r to filter potential mistakes (rare words signed by flag WARN in the dictionary) - limited and optimized suggestions 2011-01-06: Hunspell 1.2.14 release: - bug fix 2011-01-03: Hunspell 1.2.13 release: - bug fixes - improved compound handling and other improvements supported by OpenTaal Foundation, Netherlands 2010-07-15: Hunspell 1.2.12 release 2010-05-06: Hunspell 1.2.11 release: - Maintenance release bug fixes 2010-04-30: Hunspell 1.2.10 release: - Maintenance release bug fixes 2010-03-03: Hunspell 1.2.9 release: - Maintenance release bug fixes and warnings - MAP support for composed characters or character sequences 2008-11-01: Hunspell 1.2.8 release: - Default BREAK feature and better hyphenated word suggestion to accept and fix (compound) words with hyphen characters by spell checker instead of by work breaking code of OpenOffice.org. With this feature it's possible to accept hyphenated compound words, such as "scot-free", where "scot" is not a correct English word. - ICONV & OCONV: input and output conversion tables for optional character handling or using special inner format. Example: # Accepting de facto replacements of the Romanian comma acuted letters SET UTF-8 ICONV 4 ICONV ş ș ICONV ţ ț ICONV Ş Ș ICONV Ţ Ț Typical usage of ICONV/OCONV is to manage an inner format for a segmental writing system, like the Ethiopic script of the Amharic language. - Extended CHECKCOMPOUNDPATTERN to handle conpound word alternations, like sandhi feature of Telugu and other writing systems. - SIMPLIFIEDTRIPLE compound word feature: allow simplified Swedish and Norwegian compound word forms, like tillåta (till|låta) and bussjåfør (buss|sjåfør) - wordforms: word generator script for dictionary developers (Hunspell version of unmunch). - bug fixes 2008-08-15: Hunspell 1.2.7 release: - FULLSTRIP: new option for affix handling. With FULLSTRIP, affix rules can strip full words, not only one less characters. - COMPOUNDRULE works with all flag types. (COMPOUNDRULE is for pattern matching. For example, en_US dictionary of OpenOffice.org uses COMPOUNDRULE for ordinal number recognition: 1st, 2nd, 11th, 12th, 22nd, 112th, 1000122nd etc.). - optimized suggestions: - modified 1-character distance suggestion algorithms: search a TRY character in all position instead of all TRY characters in a character position (it can give more readable suggestion order, also better suggestions in the first positions, when TRY characters are sorted by frequency.) For example, suggestions for "moze": ooze, doze, Roze, maze, more etc. (Hunspell 1.2.6), maze, more, mote, ooze, mole etc. (Hunspell 1.2.7). - extended compound word checking for better COMPOUNDRULE related suggestions, for example English ordinal numbers: 121323th -> 121323rd (it needs also a th->rd REP definition). - bug fixes 2008-07-15: Hunspell 1.2.6 release: - bug fix release (fix affix rule condition checking of sk_SK dictionary, iconv support in stemming and morphological analysis of the Hunspell utility, see also Changelog) 2008-07-09: Hunspell 1.2.5 release: - bug fix release (fix affix rule condition checking of en_GB dictionary, also morphological analysis by dictionaries with two-level suffixes) 2008-06-18: Hunspell 1.2.4-2 release: - fix GCC compiler warnings 2008-06-17: Hunspell 1.2.4 release: - add free_list() for C, C++ interfaces to deallocate suggestion lists - bug fixes 2008-06-17: Hunspell 1.2.3 release: - extended XML interface to use morphological functions by standard spell checking interface, spell() and suggest(). See hunspell.3 manual page. - default dash suggestions for compound words: newword-> new word and new-word - new manual pages: hunspell.3, hzip.1, hunzip.1. - bug fixes 2008-04-12: Hunspell 1.2.2 release: - extended dictionary (dic file) support to use multiple base and special dictionaries. - new and improved options of command line hunspell: -m: morphological analysis or flag debug mode (without affix rule data it signs the flag of the affix rules) -s: stemming mode -D: list available dictionaries and search path -d: support extra dictionaries by comma separated list. Example: hunspell -d en_US,en_med,de_DE,de_med,de_geo UNESCO.txt - forbidding in personal dictionary (with asterisk, / signs affixation) - optional compressed dictionary format "hzip" for aff and dic files usage: hzip example.aff example.dic mv example.aff example.dic /tmp hunspell -d example hunzip example.aff.hz >example.aff hunzip example.dic.hz >example.dic - new affix compression tool "affixcompress": compression tool for large (millions of words) dictionaries. - support encrypted dictionaries for closed OpenOffice.org extensions or other commercial programs - improved manual - bug fixes 2007-11-01: Hunspell 1.2.1 release: - new memory efficient condition checking algorithm for affix rules - new morphological functions: - stem() for stemming - analyze() for morphological analysis - generate() for morphological generation - new demos: - analyze: stemming, morphological analysis and generation - chmorph: morphological conversion of texts 2007-09-05: Hunspell 1.1.12 release: - dictionary based phonetic suggestion for words with special or foreign pronounciation or alternative (bad) transliteration (see Changelog, tests/phone.* and manual). - improved data structure and memory optimization for dictionaries with variable count fields - bug fixes for Unicode encoding dictionaries and ngram suggestions - improved REP suggestions with space: it works without dictionary modification - updated and new project files for Windows API 2007-08-27: Hunspell 1.1.11 release: - portability fixes 2007-08-23: Hunspell 1.1.10 release: - pronounciation based suggestion using Bjrn Jacke's original Aspell phonetic transcription algorithm (http://aspell.net), relicensed under GPL/LGPL/MPL tri-license with the permission of the author - keyboard base suggestion by KEY (see manual) - better time limits for suggestion search - test environment for suggestion based on Wikipedia data - bug fixes for non standard Mozilla platforms etc. 2007-07-25: Hunspell 1.1.9 release: - better tokenization: - for URLs, mail addresses and directory paths (default: skip these tokens) - for colons in words (for Finnish and Swedish) - new examples: - affixation of personal dictionary words - digits in words - bug fixes (see ChangeLog) 2007-07-16: Hunspell 1.1.8 release: - better Mac OS X/Cygwin and Windows compatibility - fix Hunspell's Valgrind environment and memory handling errors detected by Valgrind - other bug fixes (see ChangeLog) 2007-07-06: Hunspell 1.1.7 release: - fix warning messages of OpenOffice.org build 2007-06-29: Hunspell 1.1.6 release: - check capitalization of the following word forms - words with mixed capitalisation: OpenOffice.org - OPENOFFICE.ORG - allcap words and suffixes: UNICEF's - UNICEF'S - prefixes with apostrophe and proper names: Sant'Elia - SANT'ELIA - suggestion for missing sentence spacing: something.The -> something. The - Hunspell executable: improved locale support - -i option: custom input encoding - use locale data for default dictionary names. - tools/hunspell.cxx: fix 8-bit tokenization (letters without casing, like ß or Hebrew characters now are handled well) - dictionary search path (automatic detection of OpenOffice.org directories) - DICPATH environmental variable - -D option: show directory path of loaded dictionary - patches and bug fixes for Mozilla, OpenOffice.org. 2007-03-19: Hunspell 1.1.5 release: - optimizations: 10-100% speed up, smaller code size and memory footprint (conditional experimental code and warning messages) - extended Unicode support: - non BMP Unicode characters in dictionary words and affixes (except affix rules and conditions) - support BOM sequence in aff and dic files - IGNORE feature for Arabic diacritics and other optional characters - New edit distance suggestion methods: - capitalisation: nasa -> NASA - long swap: permenant -> permanent - long move: Ghandi -> Gandhi, greatful -> grateful - double two characters: vacacation -> vacation - spaces in REP sug.: REP alot a_lot (NOTE: "a lot" must be a dictionary word) - patches and bug fixes for Mozilla, OpenOffice.org, Emacs, MinGW, Aqua, German and Arabic language, etc. 2006-02-01: Hunspell 1.1.4 release: - Improved suggestion for typical OCR bugs (missing spaces between capitalized words). For example: "aNew" -> "a New". http://qa.openoffice.org/issues/show_bug.cgi?id=58202 - tokenization fixes (fix incomplete tokenization of input texts on big-endian platforms, and locale-dependent tokenization of dictionary entries) 2006-01-06: Hunspell 1.1.3.2 release: - fix Visual C++ compiling errors 2006-01-05: Hunspell 1.1.3 release: - GPL/LGPL/MPL tri-license for Mozilla integration - Alias compression of flag sets and morphological descriptions. (For example, 16 MB Arabic dic file can be compressed to 1 MB.) - Improved suggestion. - Improved, language independent German sharp s casing with CHECKSHARPS declaration. - Unicode tokenization in Hunspell program. - Bug fixes (at new and old compound word handling methods), etc. 2005-11-11: Hunspell 1.1.2 release: - Bug fixes (MAP Unicode, COMPOUND pattern matching, ONLYINCOMPOUND suggestions) - Checked with 51 regression tests in Valgrind debugging environment, and tested with 52 OOo dictionaries on i686-pc-linux platform. 2005-11-09: Hunspell 1.1.1 release: - Compound word patterns for complex compound word handling and simple word-level lexical scanning. Ideal for checking Arabic and Roman numbers, ordinal numbers in English, affixed numbers in agglutinative languages, etc. http://qa.openoffice.org/issues/show_bug.cgi?id=53643 - Support ISO-8859-15 encoding for French (French oe ligatures are missing from the latin-1 encoding). http://qa.openoffice.org/issues/show_bug.cgi?id=54980 - Implemented a flag to forbid obscene word suggestion: http://qa.openoffice.org/issues/show_bug.cgi?id=55498 - Checked with 50 regression tests in Valgrind debugging environment, and tested with 52 OOo dictionaries. - other improvements and bug fixes (see ChangeLog) 2005-09-19: Hunspell 1.1.0 release * complete comparison with MySpell 3.2 (from OpenOffice.org 2 beta) * improved ngram suggestion with swap character detection and case insensitivity ------ examples for ngram improvement (input word and suggestions) ----- 1. pernament (instead of permanent) MySpell 3.2: tournaments, tournament, ornaments, ornament's, ornamenting, ornamented, ornament, ornamentals, ornamental, ornamentally Hunspell 1.0.9: ornamental, ornament, tournament Hunspell 1.1.0: permanent Note: swap character detection 2. PERNAMENT (instead of PERMANENT) MySpell 3.2: - Hunspell 1.0.9: - Hunspell 1.1.0: PERMANENT 3. Unesco (instead of UNESCO) MySpell 3.2: Genesco, Ionesco, Genesco's, Ionesco's, Frescoing, Fresco's, Frescoed, Fresco, Escorts, Escorting Hunspell 1.0.9: Genesco, Ionesco, Fresco Hunspell 1.1.0: UNESCO 4. siggraph's (instead of SIGGRAPH's) MySpell 3.2: serigraph's, photograph's, serigraphs, physiography's, physiography, digraphs, serigraph, stratigraphy's, stratigraphy epigraphs Hunspell 1.0.9: serigraph's, epigraph's, digraph's Hunspell 1.1.0: SIGGRAPH's --------------- end of examples -------------------- * improved testing environment with suggestion checking and memory debugging memory debugging of all tests with a simple command: VALGRIND=memcheck make check * lots of other improvements and bug fixes (see ChangeLog) 2005-08-26: Hunspell 1.0.9 release * improved related character map suggestion * improved ngram suggestion ------ examples for ngram improvement (O=old, N = new ngram suggestions) -- 1. Permenant (instead of Permanent) O: Endangerment, Ferment, Fermented, Deferment's, Empowerment, Ferment's, Ferments, Fermenting, Countermen, Weathermen N: Permanent, Supermen, Preferment Note: Ngram suggestions was case sensitive. 2. permenant (instead of permanent) O: supermen, newspapermen, empowerment, endangerment, preferments, preferment, permanent, preferment's, permanently, impermanent N: permanent, supermen, preferment Note: new suggestions are also weighted with longest common subsequence, first letter and common character positions 3. pernemant (instead of permanent) O: pimpernel's, pimpernel, pimpernels, permanently, permanents, permanent, supernatant, impermanent, semipermanent, impermanently N: permanent, supernatant, pimpernel Note: new method also prefers root word instead of not relevant affixes ('s, s and ly) 4. pernament (instead of permanent) O: tournaments, tournament, ornaments, ornament's, ornamenting, ornamented, ornament, ornamentals, ornamental, ornamentally N: ornamental, ornament, tournament Note: Both ngram methods misses here. 5. obvus (instad of obvious): O: obvious, Corvus, obverse, obviously, Jacobus, obtuser, obtuse, obviates, obviate, Travus N: obvious, obtuse, obverse Note: new method also prefers common first letters. 6. unambigus (instead of unambiguous) O: unambiguous, unambiguity, unambiguously, ambiguously, ambiguous, unambitious, ambiguities, ambiguousness N: unambiguous, unambiguity, unambitious 7. consecvence (instead of consequence) O: consecutive, consecutively, consecutiveness, nonconsecutive, consequence, consecutiveness's, convenience's, consistences, consistence N: consequence, consecutive, consecrates An example in a language with rich morphology: 8. Misisipiben (instead of Mississippiben [`in Mississippi' in Hungarian]): O: Misikdiben, Pisisediben, Misikiiben, Pisisekiben, Misikiben, Misikidiben, Misikkiben, Misikikiben, Misikimiben, Mississippiiben N: Mississippiben, Mississippiiben, Misiiben Note: Suggesting not relevant affixes was the biggest fault in ngram suggestion for languages with a lot of affixes. --------------- end of examples -------------------- * support twofold prefix cutting * lots of other improvements and bug fixes (see ChangeLog) * test Hunspell with 54 OpenOffice.org dictionaries: source: ftp://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries testing shell script: ------------------------------------------------------- for i in `ls *zip | grep '^[a-z]*_[A-Z]*[.]'` do dic=`basename $i .zip` mkdir $dic echo unzip $dic unzip -d $dic $i 2>/dev/null cd $dic echo unmunch and test $dic unmunch $dic.dic $dic.aff 2>/dev/null | awk '{print$0"\t"}' | hunspell -d $dic -l -1 >$dic.result 2>$dic.err || rm -f $dic.result cd .. done -------------------------------------------------------- test result (0 size is o.k.): $ for i in *_*/*.result; do wc -c $i; done 0 af_ZA/af_ZA.result 0 bg_BG/bg_BG.result 0 ca_ES/ca_ES.result 0 cy_GB/cy_GB.result 0 cs_CZ/cs_CZ.result 0 da_DK/da_DK.result 0 de_AT/de_AT.result 0 de_CH/de_CH.result 0 de_DE/de_DE.result 0 el_GR/el_GR.result 6 en_AU/en_AU.result 0 en_CA/en_CA.result 0 en_GB/en_GB.result 0 en_NZ/en_NZ.result 0 en_US/en_US.result 0 eo_EO/eo_EO.result 0 es_ES/es_ES.result 0 es_MX/es_MX.result 0 es_NEW/es_NEW.result 0 fo_FO/fo_FO.result 0 fr_FR/fr_FR.result 0 ga_IE/ga_IE.result 0 gd_GB/gd_GB.result 0 gl_ES/gl_ES.result 0 he_IL/he_IL.result 0 hr_HR/hr_HR.result 200694989 hu_HU/hu_HU.result 0 id_ID/id_ID.result 0 it_IT/it_IT.result 0 ku_TR/ku_TR.result 0 lt_LT/lt_LT.result 0 lv_LV/lv_LV.result 0 mg_MG/mg_MG.result 0 mi_NZ/mi_NZ.result 0 ms_MY/ms_MY.result 0 nb_NO/nb_NO.result 0 nl_NL/nl_NL.result 0 nn_NO/nn_NO.result 0 ny_MW/ny_MW.result 0 pl_PL/pl_PL.result 0 pt_BR/pt_BR.result 0 pt_PT/pt_PT.result 0 ro_RO/ro_RO.result 0 ru_RU/ru_RU.result 0 rw_RW/rw_RW.result 0 sk_SK/sk_SK.result 0 sl_SI/sl_SI.result 0 sv_SE/sv_SE.result 0 sw_KE/sw_KE.result 0 tet_ID/tet_ID.result 0 tl_PH/tl_PH.result 0 tn_ZA/tn_ZA.result 0 uk_UA/uk_UA.result 0 zu_ZA/zu_ZA.result In en_AU dictionary, there is an abbrevation with two dots (`eqn..'), but `eqn.' is missing. Presumably it is a dictionary bug. Myspell also haven't accepted it. Hungarian dictionary contains pseudoroots and forbidden words. Unmunch haven't supported these features yet, and generates bad words, too. * check affix rules and OOo dictionaries. Detected bugs in cs_CZ, es_ES, es_NEW, es_MX, lt_LT, nn_NO, pt_PT, ro_RO, sk_SK and sv_SE dictionaries). Details: -------------------------------------------------------- cs_CZ warning - incompatible stripping characters and condition: SFX D us ech [^ighk]os SFX D us y [^i]os SFX Q os ech [^ghk]es SFX M o ech [^ghkei]a SFX J m ej m SFX J m ejme m SFX J m ejte m SFX A ouit up oupit SFX A ouit upme oupit SFX A ouit upte oupit SFX A nout l [aeiouyr][^aeiouyrl][^aeiouy SFX A nout l [aeiouyr][^aeiouyrl][^aeiouy es_ES warning - incompatible stripping characters and condition: SFX W umar se [ae]husar SFX W emir iis eir es_NEW warning - incompatible stripping characters and condition: SFX I unan nen unar es_MX warning - incompatible stripping characters and condition: SFX A a ote e SFX W umar se [ae]husar SFX W emir iis eir lt_LT warning - incompatible stripping characters and condition: SFX U ti siuosi tis SFX U ti siuosi tis SFX U ti siesi tis SFX U ti siesi tis SFX U ti sis tis SFX U ti sis tis SFX U ti sims tis SFX U ti sims tis SFX U ti sits tis SFX U ti sits tis nn_NO warning - incompatible stripping characters and condition: SFX D ar rar [^fmk]er SFX U re orde ere SFX U re ort ere pt_PT warning - incompatible stripping characters and condition: SFX g os oas o SFX g os oas o ro_RO warning - bad field number: SFX L 0 le [^cg] i SFX L 0 i [cg] i SFX U 0 i [^i] ii warning - incompatible stripping characters and condition: SFX P l i l [<- there is an unnecessary tabulator here) SFX I a ii [gc] a warning - bad field number: SFX I a ii [gc] a SFX I a ei [^cg] a sk_SK warning - incompatible stripping characters and condition: SFX T a ol kla SFX T a olc kla SFX T sa l sla SFX T sa lc sla SFX R c liem c SFX R is tie mias SFX R iez iem [^i]ez SFX R iez ie [^i]ez SFX R iez ie [^i]ez SFX R iez eme [^i]ez SFX R iez ete [^i]ez SFX R iez [^i]ez SFX R iez c [^i]ez SFX R iez z [^i]ez SFX R iez me [^i]ez SFX R iez te [^i]ez sv_SE warning - bad field number: SFX C 0 net nets [^e]n -------------------------------------------------------- 2005-08-01: Hunspell 1.0.8 release - improved compound word support - fix German S handling - port MySpell files and MAP feature 2005-07-22: Hunspell 1.0.7 release 2005-07-21: new home page: http://hunspell.sourceforge.net hunspell-1.7.2/license.hunspell0000664000175000017500000000366514352145647013521 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): * David Einstein * Davide Prina * Giuseppe Modugno * Gianluca Turconi * Simon Brouwer * Noll János * Bíró Árpád * Goldman Eleonóra * Sarlós Tamás * Bencsáth Boldizsár * Halácsy Péter * Dvornik László * Gefferth András * Nagy Viktor * Varga Dániel * Chris Halls * Rene Engelhard * Bram Moolenaar * Dafydd Jones * Harri Pitkänen * Andras Timar * Tor Lillqvist * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ hunspell-1.7.2/configure0000775000175000017500000254522614353370163012232 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for hunspell 1.7.2. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: https://github.com/hunspell/hunspell/issues about your $0: system, including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # 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'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='hunspell' PACKAGE_TARNAME='hunspell' PACKAGE_VERSION='1.7.2' PACKAGE_STRING='hunspell 1.7.2' PACKAGE_BUGREPORT='https://github.com/hunspell/hunspell/issues' PACKAGE_URL='https://hunspell.github.io' ac_unique_file="config.h.in" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" gt_needs= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS READLINELIB CURSESLIB POSUB LTLIBINTL LIBINTL INTLLIBS INTL_MACOSX_LIBS XGETTEXT_EXTRA_OPTIONS MSGMERGE XGETTEXT_015 XGETTEXT GMSGFMT_015 MSGFMT_015 GMSGFMT MSGFMT GETTEXT_MACRO_VERSION USE_NLS HAVE_VISIBILITY CFLAG_VISIBILITY LTLIBICONV LIBICONV HAVE_CXX11 CXXCPP LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR DLLTOOL OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP SED LIBTOOL am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX HUNSPELL_VERSION_MINOR HUNSPELL_VERSION_MAJOR AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM EGREP GREP CPP OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_dependency_tracking enable_silent_rules enable_shared enable_static with_pic enable_fast_install with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock enable_rpath with_libiconv_prefix enable_nls with_libintl_prefix with_warnings with_ui with_readline ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP CXX CXXFLAGS CCC LT_SYS_LIBRARY_PATH CXXCPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures hunspell 1.7.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/hunspell] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names 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 case $ac_init_help in short | recursive ) echo "Configuration of hunspell 1.7.2:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --disable-rpath do not hardcode runtime library paths --disable-nls do not use Native Language Support Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir --with-warnings compile with warning messages --with-ui support Curses user interface --with-readline support fancy command input editing Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags LT_SYS_LIBRARY_PATH User-defined run-time library search path. CXXCPP 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. Report bugs to . hunspell home page: . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF hunspell configure 1.7.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## ---------------------------------------------------------- ## ## Report this to https://github.com/hunspell/hunspell/issues ## ## ---------------------------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by hunspell $as_me 1.7.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi gt_needs="$gt_needs " # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_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" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" if test "x$ac_cv_header_minix_config_h" = xyes; then : MINIX=yes else MINIX= fi if test "$MINIX" = yes; then $as_echo "#define _POSIX_SOURCE 1" >>confdefs.h $as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h $as_echo "#define _MINIX 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 $as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } if ${ac_cv_safe_to_define___extensions__+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ # define __EXTENSIONS__ 1 $ac_includes_default int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_safe_to_define___extensions__=yes else ac_cv_safe_to_define___extensions__=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 $as_echo "$ac_cv_safe_to_define___extensions__" >&6; } test $ac_cv_safe_to_define___extensions__ = yes && $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h $as_echo "#define _ALL_SOURCE 1" >>confdefs.h $as_echo "#define _GNU_SOURCE 1" >>confdefs.h $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h am__api_version='1.15' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_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 rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='hunspell' VERSION='1.7.2' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # the following 4 lines are used for pkg-check's .pc.in file HUNSPELL_VERSION_MAJOR=`echo $VERSION | cut -d"." -f1` HUNSPELL_VERSION_MINOR=`echo $VERSION | cut -d"." -f2` # Checks for programs. ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_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" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=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 case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.6' macro_revision='2.4.6' ltmain=$ac_aux_dir/ltmain.sh # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case $ECHO in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n "$lt_cv_sys_max_cmd_len"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) if test yes = "$GCC"; then reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 $as_echo "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 $as_echo_n "checking for a working dd... " >&6; } if ${ac_cv_path_lt_DD+:} false; then : $as_echo_n "(cached) " >&6 else printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then ac_path_lt_DD_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in dd; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi $ac_path_lt_DD_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_lt_DD"; then : fi else ac_cv_path_lt_DD=$lt_DD fi rm -f conftest.i conftest2.i conftest.out fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 $as_echo "$ac_cv_path_lt_DD" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 $as_echo_n "checking how to truncate binary pipes... " >&6; } if ${lt_cv_truncate_bin+:} false; then : $as_echo_n "(cached) " >&6 else printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 $as_echo "$lt_cv_truncate_bin" >&6; } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf case `/usr/bin/file conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `/usr/bin/file conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `/usr/bin/file conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[012][,.]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done func_stripname_cnf () { case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;; esac } # func_stripname_cnf # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else pic_mode=default fi # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac else enable_fast_install=yes fi shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 $as_echo_n "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. if test "${with_aix_soname+set}" = set; then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$with_aix_soname else if ${lt_cv_with_aix_soname+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_with_aix_soname=aix fi with_aix_soname=$lt_cv_with_aix_soname fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 $as_echo "$with_aix_soname" >&6; } if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o func_cc_basename $compiler cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/${ac_tool_prefix}file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC=$CC ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test no = "$hard_links"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, 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 install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='$wl--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=yes ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $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 no = "$ld_shlibs"; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct=no hardcode_direct_absolute=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' $wl-bernotok' allow_undefined_flag=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''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' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi link_all_deplibs=no else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' else archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; osf3*) if test yes = "$GCC"; 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" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$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='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='$wl-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='$wl-z,text' allow_undefined_flag='$wl-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # 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 dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # 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 # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct" && # 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 no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && test no != "$hardcode_minus_L"; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen=shl_load else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen=dlopen else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi fi fi fi fi fi ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 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; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 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; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report what library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && 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 yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&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 CC=$lt_save_CC if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu else _lt_caught_CXX_error=yes fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds reload_flag_CXX=$reload_flag reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC func_cc_basename $compiler cc_basename=$func_cc_basename_result if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test yes = "$GXX"; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test yes = "$with_gnu_ld"; then archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test ia64 = "$host_cpu"; 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 # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no ;; esac if test yes = "$GXX"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec_CXX='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. # The "-G" linker flag allows undefined symbols. no_undefined_flag_CXX='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' $wl-bernotok' allow_undefined_flag_CXX=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' fi archive_cmds_need_lc_CXX=yes archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_CXX=' ' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=yes file_list_spec_CXX='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' export_dynamic_flag_spec_CXX='$wl--export-all-symbols' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" if test yes != "$lt_cv_apple_cc_single_mod"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi else ld_shlibs_CXX=no fi ;; os2*) hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_minus_L_CXX=yes allow_undefined_flag_CXX=unsupported shrext_cmds=.dll archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes_CXX=yes ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; haiku*) archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes ;; hpux9*) hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='$wl-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='$wl-E' whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' case $host in osf3*) archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; then no_undefined_flag_CXX=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='$wl-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_CXX='$wl-z,text' allow_undefined_flag_CXX='$wl-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ '"$reload_cmds_CXX" ;; *) archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test no = "$ld_shlibs_CXX" && can_build_shared=no GCC_CXX=$GXX LD_CXX=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX=$prev$p else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX=$prev$p else postdeps_CXX="${postdeps_CXX} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$predep_objects_CXX"; then predep_objects_CXX=$p else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX=$p else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi lt_prog_compiler_pic_CXX='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static_CXX='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test no = "$hard_links"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' ;; esac ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs_CXX=no ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test no = "$ld_shlibs_CXX" && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_CXX=no else lt_cv_archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 $as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # 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 dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec_CXX='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # 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 # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test yes = "$hardcode_automatic_CXX"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct_CXX" && # 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 no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && test no != "$hardcode_minus_L_CXX"; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test relink = "$hardcode_action_CXX" || test yes = "$inherit_rpath_CXX"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" 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_config_commands="$ac_config_commands libtool" # Only expand once: for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done ax_cxx_compile_alternatives="11 0x" ax_cxx_compile_cxx11_required=false ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_success=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5 $as_echo_n "checking whether $CXX supports C++11 features by default... " >&6; } if ${ax_cv_cxx_compile_cxx11+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ // If the compiler admits that it is not ready for C++11, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201103L #error "This is not a C++11 compiler" #else namespace cxx11 { namespace test_static_assert { template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; } namespace test_final_override { struct Base { virtual void f() {} }; struct Derived : public Base { virtual void f() override {} }; } namespace test_double_right_angle_brackets { template < typename T > struct check {}; typedef check single_type; typedef check> double_type; typedef check>> triple_type; typedef check>>> quadruple_type; } namespace test_decltype { int f() { int a = 1; decltype(a) b = 2; return a + b; } } namespace test_type_deduction { template < typename T1, typename T2 > struct is_same { static const bool value = false; }; template < typename T > struct is_same { static const bool value = true; }; template < typename T1, typename T2 > auto add(T1 a1, T2 a2) -> decltype(a1 + a2) { return a1 + a2; } int test(const int c, volatile int v) { static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == false, ""); auto ac = c; auto av = v; auto sumi = ac + av + 'x'; auto sumf = ac + av + 1.0; static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == true, ""); return (sumf > 0.0) ? sumi : add(c, v); } } namespace test_noexcept { int f() { return 0; } int g() noexcept { return 0; } static_assert(noexcept(f()) == false, ""); static_assert(noexcept(g()) == true, ""); } namespace test_constexpr { template < typename CharT > unsigned long constexpr strlen_c_r(const CharT *const s, const unsigned long acc) noexcept { return *s ? strlen_c_r(s + 1, acc + 1) : acc; } template < typename CharT > unsigned long constexpr strlen_c(const CharT *const s) noexcept { return strlen_c_r(s, 0UL); } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("1") == 1UL, ""); static_assert(strlen_c("example") == 7UL, ""); static_assert(strlen_c("another\0example") == 7UL, ""); } namespace test_rvalue_references { template < int N > struct answer { static constexpr int value = N; }; answer<1> f(int&) { return answer<1>(); } answer<2> f(const int&) { return answer<2>(); } answer<3> f(int&&) { return answer<3>(); } void test() { int i = 0; const int c = 0; static_assert(decltype(f(i))::value == 1, ""); static_assert(decltype(f(c))::value == 2, ""); static_assert(decltype(f(0))::value == 3, ""); } } namespace test_uniform_initialization { struct test { static const int zero {}; static const int one {1}; }; static_assert(test::zero == 0, ""); static_assert(test::one == 1, ""); } namespace test_lambdas { void test1() { auto lambda1 = [](){}; auto lambda2 = lambda1; lambda1(); lambda2(); } int test2() { auto a = [](int i, int j){ return i + j; }(1, 2); auto b = []() -> int { return '0'; }(); auto c = [=](){ return a + b; }(); auto d = [&](){ return c; }(); auto e = [a, &b](int x) mutable { const auto identity = [](int y){ return y; }; for (auto i = 0; i < a; ++i) a += b--; return x + identity(a + b); }(0); return a + b + c + d + e; } int test3() { const auto nullary = [](){ return 0; }; const auto unary = [](int x){ return x; }; using nullary_t = decltype(nullary); using unary_t = decltype(unary); const auto higher1st = [](nullary_t f){ return f(); }; const auto higher2nd = [unary](nullary_t f1){ return [unary, f1](unary_t f2){ return f2(unary(f1())); }; }; return higher1st(nullary) + higher2nd(nullary)(unary); } } namespace test_variadic_templates { template struct sum; template struct sum { static constexpr auto value = N0 + sum::value; }; template <> struct sum<> { static constexpr auto value = 0; }; static_assert(sum<>::value == 0, ""); static_assert(sum<1>::value == 1, ""); static_assert(sum<23>::value == 23, ""); static_assert(sum<1, 2>::value == 3, ""); static_assert(sum<5, 5, 11>::value == 21, ""); static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); } // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function // because of this. namespace test_template_alias_sfinae { struct foo {}; template using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } } // namespace cxx11 #endif // __cplusplus >= 201103L _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ax_cv_cxx_compile_cxx11=yes else ax_cv_cxx_compile_cxx11=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11" >&5 $as_echo "$ax_cv_cxx_compile_cxx11" >&6; } if test x$ax_cv_cxx_compile_cxx11 = xyes; then ac_success=yes fi if test x$ac_success = xno; then for alternative in ${ax_cxx_compile_alternatives}; do for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5 $as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; } if eval \${$cachevar+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_CXX="$CXX" CXX="$CXX $switch" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ // If the compiler admits that it is not ready for C++11, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201103L #error "This is not a C++11 compiler" #else namespace cxx11 { namespace test_static_assert { template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; } namespace test_final_override { struct Base { virtual void f() {} }; struct Derived : public Base { virtual void f() override {} }; } namespace test_double_right_angle_brackets { template < typename T > struct check {}; typedef check single_type; typedef check> double_type; typedef check>> triple_type; typedef check>>> quadruple_type; } namespace test_decltype { int f() { int a = 1; decltype(a) b = 2; return a + b; } } namespace test_type_deduction { template < typename T1, typename T2 > struct is_same { static const bool value = false; }; template < typename T > struct is_same { static const bool value = true; }; template < typename T1, typename T2 > auto add(T1 a1, T2 a2) -> decltype(a1 + a2) { return a1 + a2; } int test(const int c, volatile int v) { static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == false, ""); auto ac = c; auto av = v; auto sumi = ac + av + 'x'; auto sumf = ac + av + 1.0; static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == true, ""); return (sumf > 0.0) ? sumi : add(c, v); } } namespace test_noexcept { int f() { return 0; } int g() noexcept { return 0; } static_assert(noexcept(f()) == false, ""); static_assert(noexcept(g()) == true, ""); } namespace test_constexpr { template < typename CharT > unsigned long constexpr strlen_c_r(const CharT *const s, const unsigned long acc) noexcept { return *s ? strlen_c_r(s + 1, acc + 1) : acc; } template < typename CharT > unsigned long constexpr strlen_c(const CharT *const s) noexcept { return strlen_c_r(s, 0UL); } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("1") == 1UL, ""); static_assert(strlen_c("example") == 7UL, ""); static_assert(strlen_c("another\0example") == 7UL, ""); } namespace test_rvalue_references { template < int N > struct answer { static constexpr int value = N; }; answer<1> f(int&) { return answer<1>(); } answer<2> f(const int&) { return answer<2>(); } answer<3> f(int&&) { return answer<3>(); } void test() { int i = 0; const int c = 0; static_assert(decltype(f(i))::value == 1, ""); static_assert(decltype(f(c))::value == 2, ""); static_assert(decltype(f(0))::value == 3, ""); } } namespace test_uniform_initialization { struct test { static const int zero {}; static const int one {1}; }; static_assert(test::zero == 0, ""); static_assert(test::one == 1, ""); } namespace test_lambdas { void test1() { auto lambda1 = [](){}; auto lambda2 = lambda1; lambda1(); lambda2(); } int test2() { auto a = [](int i, int j){ return i + j; }(1, 2); auto b = []() -> int { return '0'; }(); auto c = [=](){ return a + b; }(); auto d = [&](){ return c; }(); auto e = [a, &b](int x) mutable { const auto identity = [](int y){ return y; }; for (auto i = 0; i < a; ++i) a += b--; return x + identity(a + b); }(0); return a + b + c + d + e; } int test3() { const auto nullary = [](){ return 0; }; const auto unary = [](int x){ return x; }; using nullary_t = decltype(nullary); using unary_t = decltype(unary); const auto higher1st = [](nullary_t f){ return f(); }; const auto higher2nd = [unary](nullary_t f1){ return [unary, f1](unary_t f2){ return f2(unary(f1())); }; }; return higher1st(nullary) + higher2nd(nullary)(unary); } } namespace test_variadic_templates { template struct sum; template struct sum { static constexpr auto value = N0 + sum::value; }; template <> struct sum<> { static constexpr auto value = 0; }; static_assert(sum<>::value == 0, ""); static_assert(sum<1>::value == 1, ""); static_assert(sum<23>::value == 23, ""); static_assert(sum<1, 2>::value == 3, ""); static_assert(sum<5, 5, 11>::value == 21, ""); static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); } // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function // because of this. namespace test_template_alias_sfinae { struct foo {}; template using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } } // namespace cxx11 #endif // __cplusplus >= 201103L _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : eval $cachevar=yes else eval $cachevar=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXX="$ac_save_CXX" fi eval ac_res=\$$cachevar { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test x\$$cachevar = xyes; then CXX="$CXX $switch" if test -n "$CXXCPP" ; then CXXCPP="$CXXCPP $switch" fi ac_success=yes break fi done if test x$ac_success = xyes; then break fi done 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 if test x$ax_cxx_compile_cxx11_required = xtrue; then if test x$ac_success = xno; then as_fn_error $? "*** A compiler with support for C++11 language features is required." "$LINENO" 5 fi fi if test x$ac_success = xno; then HAVE_CXX11=0 { $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5 $as_echo "$as_me: No compiler with C++11 support was found" >&6;} else HAVE_CXX11=1 $as_echo "#define HAVE_CXX11 1" >>confdefs.h fi # Checks for libraries. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${acl_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$acl_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${acl_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 $as_echo_n "checking for shared library run path origin... " >&6; } if ${acl_cv_rpath+:} false; then : $as_echo_n "(cached) " >&6 else CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 $as_echo "$acl_cv_rpath" >&6; } wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. if test "${enable_rpath+set}" = set; then : enableval=$enable_rpath; : else enable_rpath=yes fi acl_libdirstem=lib acl_libdirstem2= case "$host_os" in solaris*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 $as_echo_n "checking for 64-bit host... " >&6; } if ${gl_cv_solaris_64bit+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _LP64 sixtyfour bits #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "sixtyfour bits" >/dev/null 2>&1; then : gl_cv_solaris_64bit=yes else gl_cv_solaris_64bit=no fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 $as_echo "$gl_cv_solaris_64bit" >&6; } if test $gl_cv_solaris_64bit = yes; then acl_libdirstem=lib/64 case "$host_cpu" in sparc*) acl_libdirstem2=lib/sparcv9 ;; i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; esac fi ;; *) searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; */../ | */.. ) # Better ignore directories of this form. They are misleading. ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi ;; esac test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix was given. if test "${with_libiconv_prefix+set}" = set; then : withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && ! test -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi fi LIBICONV= LTLIBICONV= INCICONV= LIBICONV_PREFIX= HAVE_LIBICONV= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='iconv ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" else LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 $as_echo_n "checking for iconv... " >&6; } if ${am_cv_func_iconv+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 $as_echo "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 $as_echo_n "checking for working iconv... " >&6; } if ${am_cv_func_iconv_works+:} false; then : $as_echo_n "(cached) " >&6 else am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do if test "$cross_compiling" = yes; then : case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifndef ICONV_CONST # define ICONV_CONST $ac_iconv_const #endif int main () { int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 1; iconv_close (cd_utf8_to_88591); } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\263"; char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 2; iconv_close (cd_ascii_to_88591); } } /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ { iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304"; static char buf[2] = { (char)0xDE, (char)0xAD }; ICONV_CONST char *inptr = input; size_t inbytesleft = 1; char *outptr = buf; size_t outbytesleft = 1; size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) result |= 4; iconv_close (cd_88591_to_utf8); } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) result |= 8; iconv_close (cd_88591_to_utf8); } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ if (/* Try standardized names. */ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) /* Try IRIX, OSF/1 names. */ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) /* Try AIX names. */ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) /* Try HP-UX names. */ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) result |= 16; return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : am_cv_func_iconv_works=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi test "$am_cv_func_iconv_works" = no || break done LIBS="$am_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 $as_echo "$am_cv_func_iconv_works" >&6; } case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then $as_echo "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 $as_echo_n "checking how to link with libiconv... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 $as_echo "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi if test "$am_cv_func_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5 $as_echo_n "checking for iconv declaration... " >&6; } if ${am_cv_proto_iconv+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : am_cv_proto_iconv_arg1="" else am_cv_proto_iconv_arg1="const" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" fi am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_proto_iconv" >&5 $as_echo " $am_cv_proto_iconv" >&6; } cat >>confdefs.h <<_ACEOF #define ICONV_CONST $am_cv_proto_iconv_arg1 _ACEOF fi # Checks for header files. for ac_header in locale.h langinfo.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Checks for typedefs, structures, and compiler characteristics. CFLAG_VISIBILITY= HAVE_VISIBILITY=0 if test -n "$GCC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the -Werror option is usable" >&5 $as_echo_n "checking whether the -Werror option is usable... " >&6; } if ${gl_cv_cc_vis_werror+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_cc_vis_werror=yes else gl_cv_cc_vis_werror=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$gl_save_CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_vis_werror" >&5 $as_echo "$gl_cv_cc_vis_werror" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5 $as_echo_n "checking for simple visibility declarations... " >&6; } if ${gl_cv_cc_visibility+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fvisibility=hidden" if test $gl_cv_cc_vis_werror = yes; then CFLAGS="$CFLAGS -Werror" fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ extern __attribute__((__visibility__("hidden"))) int hiddenvar; extern __attribute__((__visibility__("default"))) int exportedvar; extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); extern __attribute__((__visibility__("default"))) int exportedfunc (void); void dummyfunc (void) {} int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_cc_visibility=yes else gl_cv_cc_visibility=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$gl_save_CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5 $as_echo "$gl_cv_cc_visibility" >&6; } if test $gl_cv_cc_visibility = yes; then CFLAG_VISIBILITY="-fvisibility=hidden" HAVE_VISIBILITY=1 fi fi cat >>confdefs.h <<_ACEOF #define HAVE_VISIBILITY $HAVE_VISIBILITY _ACEOF # Checks for library functions. mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then : enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } GETTEXT_MACRO_VERSION=0.18 # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; *) MSGFMT_015=$MSGFMT ;; esac case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f messages.po case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGMERGE+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$localedir" || localedir='${datadir}/locale' test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= ac_config_commands="$ac_config_commands po-directories" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 $as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { CFPreferencesCopyAppValue(NULL, NULL) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_CFPreferencesCopyAppValue=yes else gt_cv_func_CFPreferencesCopyAppValue=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 $as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then $as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 $as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { CFLocaleCopyCurrent(); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_CFLocaleCopyCurrent=yes else gt_cv_func_CFLocaleCopyCurrent=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 $as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } if test $gt_cv_func_CFLocaleCopyCurrent = yes; then $as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi LIBINTL= LTLIBINTL= POSUB= case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 $as_echo_n "checking for GNU gettext in libc... " >&6; } if eval \${$gt_func_gnugettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$gt_func_gnugettext_libc=yes" else eval "$gt_func_gnugettext_libc=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$gt_func_gnugettext_libc { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 $as_echo_n "checking for iconv... " >&6; } if ${am_cv_func_iconv+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 $as_echo "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 $as_echo_n "checking for working iconv... " >&6; } if ${am_cv_func_iconv_works+:} false; then : $as_echo_n "(cached) " >&6 else am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do if test "$cross_compiling" = yes; then : case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifndef ICONV_CONST # define ICONV_CONST $ac_iconv_const #endif int main () { int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 1; iconv_close (cd_utf8_to_88591); } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\263"; char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 2; iconv_close (cd_ascii_to_88591); } } /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ { iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304"; static char buf[2] = { (char)0xDE, (char)0xAD }; ICONV_CONST char *inptr = input; size_t inbytesleft = 1; char *outptr = buf; size_t outbytesleft = 1; size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) result |= 4; iconv_close (cd_88591_to_utf8); } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) result |= 8; iconv_close (cd_88591_to_utf8); } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ if (/* Try standardized names. */ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) /* Try IRIX, OSF/1 names. */ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) /* Try AIX names. */ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) /* Try HP-UX names. */ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) result |= 16; return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : am_cv_func_iconv_works=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi test "$am_cv_func_iconv_works" = no || break done LIBS="$am_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 $as_echo "$am_cv_func_iconv_works" >&6; } case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then $as_echo "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 $as_echo_n "checking how to link with libiconv... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 $as_echo "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix was given. if test "${with_libintl_prefix+set}" = set; then : withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && ! test -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi fi LIBINTL= LTLIBINTL= INCINTL= LIBINTL_PREFIX= HAVE_LIBINTL= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 $as_echo_n "checking for GNU gettext in libintl... " >&6; } if eval \${$gt_func_gnugettext_libintl+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$gt_func_gnugettext_libintl=yes" else eval "$gt_func_gnugettext_libintl=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi eval ac_res=\$$gt_func_gnugettext_libintl { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then $as_echo "#define ENABLE_NLS 1" >>confdefs.h else USE_NLS=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 $as_echo_n "checking whether to use NLS... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 $as_echo_n "checking where the gettext function comes from... " >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 $as_echo "$gt_source" >&6; } fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 $as_echo_n "checking how to link with libintl... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 $as_echo "$LIBINTL" >&6; } for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h $as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h fi POSUB=po fi INTLLIBS="$LIBINTL" # Check whether --with-warnings was given. if test "${with_warnings+set}" = set; then : withval=$with_warnings; $as_echo "#define HUNSPELL_WARNING_ON 1" >>confdefs.h fi CURSESLIB="" # Check whether --with-ui was given. if test "${with_ui+set}" = set; then : withval=$with_ui; else with_ui=no fi if test "x$with_ui" != xno; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tparm in -lncursesw" >&5 $as_echo_n "checking for tparm in -lncursesw... " >&6; } if ${ac_cv_lib_ncursesw_tparm+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lncursesw $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char tparm (); int main () { return tparm (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ncursesw_tparm=yes else ac_cv_lib_ncursesw_tparm=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncursesw_tparm" >&5 $as_echo "$ac_cv_lib_ncursesw_tparm" >&6; } if test "x$ac_cv_lib_ncursesw_tparm" = xyes; then : CURSESLIB=-lncursesw else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tparm in -lcurses" >&5 $as_echo_n "checking for tparm in -lcurses... " >&6; } if ${ac_cv_lib_curses_tparm+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcurses $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char tparm (); int main () { return tparm (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_curses_tparm=yes else ac_cv_lib_curses_tparm=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_tparm" >&5 $as_echo "$ac_cv_lib_curses_tparm" >&6; } if test "x$ac_cv_lib_curses_tparm" = xyes; then : CURSESLIB=-lcurses else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tparm in -lncurses" >&5 $as_echo_n "checking for tparm in -lncurses... " >&6; } if ${ac_cv_lib_ncurses_tparm+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lncurses $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char tparm (); int main () { return tparm (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ncurses_tparm=yes else ac_cv_lib_ncurses_tparm=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tparm" >&5 $as_echo "$ac_cv_lib_ncurses_tparm" >&6; } if test "x$ac_cv_lib_ncurses_tparm" = xyes; then : CURSESLIB=-lncurses fi fi fi if test "$CURSESLIB" != "" ; then echo Compiling with curses user interface. for ac_header in curses.h do : ac_fn_c_check_header_mongrel "$LINENO" "curses.h" "ac_cv_header_curses_h" "$ac_includes_default" if test "x$ac_cv_header_curses_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_CURSES_H 1 _ACEOF fi done if test "$CURSESLIB" = "-lncursesw" ; then for ac_header in ncursesw/curses.h do : ac_fn_c_check_header_mongrel "$LINENO" "ncursesw/curses.h" "ac_cv_header_ncursesw_curses_h" "$ac_includes_default" if test "x$ac_cv_header_ncursesw_curses_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_NCURSESW_CURSES_H 1 _ACEOF fi done else echo "No Unicode support on interactive console. (Install Ncursesw library.)" fi $as_echo "#define HUNSPELL_WARNING_ON 1" >>confdefs.h fi fi # Check whether --with-readline was given. if test "${with_readline+set}" = set; then : withval=$with_readline; else with_readline=no fi READLINELIB="" if test "x$with_readline" != xno; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltinfo" >&5 $as_echo_n "checking for tgetent in -ltinfo... " >&6; } if ${ac_cv_lib_tinfo_tgetent+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ltinfo $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char tgetent (); int main () { return tgetent (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_tinfo_tgetent=yes else ac_cv_lib_tinfo_tgetent=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinfo_tgetent" >&5 $as_echo "$ac_cv_lib_tinfo_tgetent" >&6; } if test "x$ac_cv_lib_tinfo_tgetent" = xyes; then : TERMLIB=-ltinfo else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tparm in -lcurses" >&5 $as_echo_n "checking for tparm in -lcurses... " >&6; } if ${ac_cv_lib_curses_tparm+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcurses $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char tparm (); int main () { return tparm (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_curses_tparm=yes else ac_cv_lib_curses_tparm=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_tparm" >&5 $as_echo "$ac_cv_lib_curses_tparm" >&6; } if test "x$ac_cv_lib_curses_tparm" = xyes; then : TERMLIB=-lncurses else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5 $as_echo_n "checking for tgetent in -ltermcap... " >&6; } if ${ac_cv_lib_termcap_tgetent+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ltermcap $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char tgetent (); int main () { return tgetent (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_termcap_tgetent=yes else ac_cv_lib_termcap_tgetent=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5 $as_echo "$ac_cv_lib_termcap_tgetent" >&6; } if test "x$ac_cv_lib_termcap_tgetent" = xyes; then : TERMLIB=-ltermcap fi fi fi LDSAVE=$LDFLAGS LDFLAGS="$LDFLAGS $TERMLIB" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for readline in -lreadline" >&5 $as_echo_n "checking for readline in -lreadline... " >&6; } if ${ac_cv_lib_readline_readline+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lreadline $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char readline (); int main () { return readline (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_readline_readline=yes else ac_cv_lib_readline_readline=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_readline" >&5 $as_echo "$ac_cv_lib_readline_readline" >&6; } if test "x$ac_cv_lib_readline_readline" = xyes; then : ac_fn_c_check_header_mongrel "$LINENO" "readline/readline.h" "ac_cv_header_readline_readline_h" "$ac_includes_default" if test "x$ac_cv_header_readline_readline_h" = xyes; then : READLINELIB="-lreadline $TERMLIB" echo Using the readline library. $as_echo "#define HAVE_READLINE 1" >>confdefs.h fi fi fi ac_config_files="$ac_config_files Makefile hunspell.pc man/Makefile man/hu/Makefile po/Makefile.in src/Makefile src/hunspell/Makefile src/hunspell/hunvisapi.h src/parsers/Makefile src/tools/Makefile tests/Makefile tests/suggestiontest/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by hunspell $as_me 1.7.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to . hunspell home page: ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ hunspell config.status 1.7.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ reload_flag_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ whole_archive_flag_spec_CXX \ compiler_needs_object_CXX \ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_separator_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ compiler_lib_search_dirs_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ configure_time_dlsearch_path \ configure_time_lt_sys_library_path \ reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ prelink_cmds_CXX \ postlink_cmds_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile' # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake < 1.5. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "hunspell.pc") CONFIG_FILES="$CONFIG_FILES hunspell.pc" ;; "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; "man/hu/Makefile") CONFIG_FILES="$CONFIG_FILES man/hu/Makefile" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/hunspell/Makefile") CONFIG_FILES="$CONFIG_FILES src/hunspell/Makefile" ;; "src/hunspell/hunvisapi.h") CONFIG_FILES="$CONFIG_FILES src/hunspell/hunvisapi.h" ;; "src/parsers/Makefile") CONFIG_FILES="$CONFIG_FILES src/parsers/Makefile" ;; "src/tools/Makefile") CONFIG_FILES="$CONFIG_FILES src/tools/Makefile" ;; "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; "tests/suggestiontest/Makefile") CONFIG_FILES="$CONFIG_FILES tests/suggestiontest/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 # Copyright (C) 2014 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # The names of the tagged configurations supported by this script. available_tags='CXX ' # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec=$shared_archive_member_spec # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm into a list of symbols to manually relocate. global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name lister interface. nm_interface=$lt_lt_cv_nm_interface # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot # Command to truncate a binary pipe. lt_truncate_bin=$lt_lt_cv_truncate_bin # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain=$ac_aux_dir/ltmain.sh # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # How to create reloadable object files. reload_flag=$lt_reload_flag_CXX reload_cmds=$lt_reload_cmds_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF ;; "po-directories":C) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi hunspell-1.7.2/src/0000775000175000017500000000000014353370321011146 500000000000000hunspell-1.7.2/src/Makefile.in0000664000175000017500000004602514353370163013146 00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/visibility.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CURSESLIB = @CURSESLIB@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HUNSPELL_VERSION_MAJOR = @HUNSPELL_VERSION_MAJOR@ HUNSPELL_VERSION_MINOR = @HUNSPELL_VERSION_MINOR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ READLINELIB = @READLINELIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = hunspell parsers tools all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: hunspell-1.7.2/src/tools/0000775000175000017500000000000014353370322012307 500000000000000hunspell-1.7.2/src/tools/munch.cxx0000664000175000017500000005447514352145647014115 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /* Munch a word list and generate a smaller root word list with affixes*/ #include #include #include #include #include #include #include #include #include #include #include #include "munch.h" int main(int argc, char** argv) { int i, j, k, n; int rl, p, nwl; int al; FILE* wrdlst; FILE* afflst; char *nword, *wf, *af; char as[(MAX_PREFIXES + MAX_SUFFIXES)]; char* ap; struct hentry* ep; struct hentry* ep1; struct affent* pfxp; struct affent* sfxp; (void)argc; /* first parse the command line options */ /* arg1 - wordlist, arg2 - affix file */ if (argv[1]) { wf = mystrdup(argv[1]); } else { fprintf(stderr, "correct syntax is:\n"); fprintf(stderr, "munch word_list_file affix_file\n"); exit(1); } if (argv[2]) { af = mystrdup(argv[2]); } else { fprintf(stderr, "correct syntax is:\n"); fprintf(stderr, "munch word_list_file affix_file\n"); exit(1); } /* open the affix file */ afflst = fopen(af, "r"); if (!afflst) { fprintf(stderr, "Error - could not open affix description file\n"); exit(1); } /* step one is to parse the affix file building up the internal affix data structures */ numpfx = 0; numsfx = 0; if (parse_aff_file(afflst)) { fprintf(stderr, "Error - in affix file loading\n"); exit(1); } fclose(afflst); fprintf(stderr, "parsed in %d prefixes and %d suffixes\n", numpfx, numsfx); /* affix file is now parsed so create hash table of wordlist on the fly */ /* open the wordlist */ wrdlst = fopen(wf, "r"); if (!wrdlst) { fprintf(stderr, "Error - could not open word list file\n"); exit(1); } if (load_tables(wrdlst)) { fprintf(stderr, "Error building hash tables\n"); exit(1); } fclose(wrdlst); for (i = 0; i < tablesize; i++) { ep = &tableptr[i]; if (ep->word == NULL) continue; for (; ep != NULL; ep = ep->next) { numroots = 0; aff_chk(ep->word, strlen(ep->word)); if (numroots) { /* now there might be a number of combinations */ /* of prefixes and suffixes that might match this */ /* word. So how to choose? As a first shot look */ /* for the shortest remaining root word to */ /* to maximize the combinatorial power */ /* but be careful, do not REQUIRE a specific combination */ /* of a prefix and a suffix to generate the word since */ /* that violates the rule that the root word with just */ /* the prefix or just the suffix must also exist in the */ /* wordlist as well */ /* in fact because of the cross product issue, this not a */ /* simple choice since some combinations of previous */ /* prefixes and new suffixes may not be valid. */ /* The only way to know is to simply try them all */ rl = 1000; p = -1; for (j = 0; j < numroots; j++) { /* first collect the root word info and build up */ /* the potential new affix string */ nword = (roots[j].hashent)->word; nwl = strlen(nword); *as = '\0'; ap = as; if (roots[j].prefix) *ap++ = (roots[j].prefix)->achar; if (roots[j].suffix) *ap++ = (roots[j].suffix)->achar; if ((roots[j].hashent)->affstr) { strcpy(ap, (roots[j].hashent)->affstr); } else { *ap = '\0'; } al = strlen(as); /* now expand the potential affix string to generate */ /* all legal words and make sure they all exist in the */ /* word list */ numwords = 0; wlist[numwords].word = mystrdup(nword); wlist[numwords].pallow = 0; numwords++; n = 0; if (al) expand_rootword(nword, nwl, as); for (k = 0; k < numwords; k++) { if (lookup(wlist[k].word)) n++; free(wlist[k].word); wlist[k].word = NULL; wlist[k].pallow = 0; } /* if all exist in word list then okay */ if (n == numwords) { if (nwl < rl) { rl = nwl; p = j; } } } if (p != -1) { ep1 = roots[p].hashent; pfxp = roots[p].prefix; sfxp = roots[p].suffix; ep1->keep = 1; if (pfxp != NULL) add_affix_char(ep1, pfxp->achar); if (sfxp != NULL) add_affix_char(ep1, sfxp->achar); } else { ep->keep = 1; } } else { ep->keep = 1; } } } /* now output only the words to keep along with affixes info */ /* first count how many words that is */ k = 0; for (i = 0; i < tablesize; i++) { ep = &tableptr[i]; if (ep->word == NULL) continue; for (; ep != NULL; ep = ep->next) { if (ep->keep > 0) k++; } } fprintf(stdout, "%d\n", k); for (i = 0; i < tablesize; i++) { ep = &tableptr[i]; if (ep->word == NULL) continue; for (; ep != NULL; ep = ep->next) { if (ep->keep > 0) { if (ep->affstr != NULL) { fprintf(stdout, "%s/%s\n", ep->word, ep->affstr); } else { fprintf(stdout, "%s\n", ep->word); } } } } return 0; } int parse_aff_file(FILE* afflst) { int i, j; int numents = 0; char achar = '\0'; short ff = 0; struct affent* ptr = NULL; struct affent* nptr = NULL; char* line = (char*)malloc(MAX_LN_LEN); while (fgets(line, MAX_LN_LEN, afflst)) { mychomp(line); char ft = ' '; fprintf(stderr, "parsing line: %s\n", line); if (strncmp(line, "PFX", 3) == 0) ft = 'P'; if (strncmp(line, "SFX", 3) == 0) ft = 'S'; if (ft != ' ') { char* tp = line; char* piece; i = 0; ff = 0; while ((piece = mystrsep(&tp, ' '))) { if (*piece != '\0') { switch (i) { case 0: break; case 1: { achar = *piece; break; } case 2: { if (*piece == 'Y') ff = XPRODUCT; break; } case 3: { numents = atoi(piece); if ((numents <= 0) || ((std::numeric_limits::max() / sizeof(struct affent)) < static_cast(numents))) { fprintf(stderr, "Error: too many entries: %d\n", numents); numents = 0; } else { ptr = (struct affent*)malloc(numents * sizeof(struct affent)); ptr->achar = achar; ptr->xpflg = ff; fprintf(stderr, "parsing %c entries %d\n", achar, numents); } break; } default: break; } i++; } free(piece); } /* now parse all of the sub entries*/ nptr = ptr; for (j = 0; j < numents; j++) { if (!fgets(line, MAX_LN_LEN, afflst)) return 1; mychomp(line); tp = line; i = 0; while ((piece = mystrsep(&tp, ' '))) { if (*piece != '\0') { switch (i) { case 0: { if (nptr != ptr) { nptr->achar = ptr->achar; nptr->xpflg = ptr->xpflg; } break; } case 1: break; case 2: { nptr->strip = mystrdup(piece); nptr->stripl = strlen(nptr->strip); if (strcmp(nptr->strip, "0") == 0) { free(nptr->strip); nptr->strip = mystrdup(""); nptr->stripl = 0; } break; } case 3: { nptr->appnd = mystrdup(piece); nptr->appndl = strlen(nptr->appnd); if (strcmp(nptr->appnd, "0") == 0) { free(nptr->appnd); nptr->appnd = mystrdup(""); nptr->appndl = 0; } break; } case 4: { encodeit(nptr, piece); } fprintf(stderr, " affix: %s %d, strip: %s %d\n", nptr->appnd, nptr->appndl, nptr->strip, nptr->stripl); // no break default: break; } i++; } free(piece); } nptr++; } if (ft == 'P') { if (numpfx < MAX_PREFIXES) { ptable[numpfx].aep = ptr; ptable[numpfx].num = numents; fprintf(stderr, "ptable %d num is %d\n", numpfx, ptable[numpfx].num); numpfx++; } else { fprintf(stderr, "prefix buffer ptable is full\n"); free(ptr); } } else { if (numsfx < MAX_SUFFIXES) { stable[numsfx].aep = ptr; stable[numsfx].num = numents; fprintf(stderr, "stable %d num is %d\n", numsfx, stable[numsfx].num); numsfx++; } else { fprintf(stderr, "suffix buffer stable is full\n"); free(ptr); } } ptr = NULL; nptr = NULL; numents = 0; achar = '\0'; } } free(line); return 0; } void encodeit(struct affent* ptr, char* cs) { int nc; int neg; int grp; int n; int ec; int nm; int i, j, k; unsigned char mbr[MAX_WD_LEN]; /* now clear the conditions array */ for (i = 0; i < SET_SIZE; i++) ptr->conds[i] = (unsigned char)0; /* now parse the string to create the conds array */ nc = strlen(cs); neg = 0; /* complement indicator */ grp = 0; /* group indicator */ n = 0; /* number of conditions */ ec = 0; /* end condition indicator */ nm = 0; /* number of member in group */ i = 0; if (strcmp(cs, ".") == 0) { ptr->numconds = 0; return; } while (i < nc) { unsigned char c = *((unsigned char*)(cs + i)); if (c == '[') { grp = 1; c = 0; } if ((grp == 1) && (c == '^')) { neg = 1; c = 0; } if (c == ']') { ec = 1; c = 0; } if ((grp == 1) && (c != 0)) { *(mbr + nm) = c; nm++; c = 0; } if (c != 0) { ec = 1; } if (ec) { if (grp == 1) { if (neg == 0) { for (j = 0; j < nm; j++) { k = (unsigned int)mbr[j]; ptr->conds[k] = ptr->conds[k] | (1 << n); } } else { for (j = 0; j < SET_SIZE; j++) ptr->conds[j] = ptr->conds[j] | (1 << n); for (j = 0; j < nm; j++) { k = (unsigned int)mbr[j]; ptr->conds[k] = ptr->conds[k] & ~(1 << n); } } neg = 0; grp = 0; nm = 0; } else { /* not a group so just set the proper bit for this char */ /* but first handle special case of . inside condition */ if (c == '.') { /* wild card character so set them all */ for (j = 0; j < SET_SIZE; j++) ptr->conds[j] = ptr->conds[j] | (1 << n); } else { ptr->conds[(unsigned int)c] = ptr->conds[(unsigned int)c] | (1 << n); } } n++; ec = 0; } i++; } ptr->numconds = n; return; } /* search for a prefix */ void pfx_chk(const char* word, int len, struct affent* ep, int num) { struct affent* aent; int cond; struct hentry* hent; int i; for (aent = ep, i = num; i > 0; aent++, i--) { int tlen = len - aent->appndl; if (tlen > 0 && (aent->appndl == 0 || strncmp(aent->appnd, word, aent->appndl) == 0) && tlen + aent->stripl >= aent->numconds) { std::string tword(aent->strip); tword.append(word + aent->appndl); /* now go through the conds and make sure they all match */ unsigned char* cp = (unsigned char*)tword.c_str(); for (cond = 0; cond < aent->numconds; cond++) { if ((aent->conds[*cp++] & (1 << cond)) == 0) break; } if (cond >= aent->numconds) { if ((hent = lookup(tword.c_str())) != NULL) { if (numroots < MAX_ROOTS) { roots[numroots].hashent = hent; roots[numroots].prefix = aent; roots[numroots].suffix = NULL; numroots++; } } } } } } void suf_chk(const char* word, int len, struct affent* ep, int num, struct affent* pfxent, int cpflag) { struct affent* aent; int cond; struct hentry* hent; int i; for (aent = ep, i = num; i > 0; aent++, i--) { if ((cpflag & XPRODUCT) != 0 && (aent->xpflg & XPRODUCT) == 0) continue; int tlen = len - aent->appndl; if (tlen > 0 && (aent->appndl == 0 || strcmp(aent->appnd, (word + tlen)) == 0) && tlen + aent->stripl >= aent->numconds) { std::string tword(word); tword.resize(tlen); tword.append(aent->strip); unsigned char* cp = (unsigned char*)(tword.c_str() + tword.size()); for (cond = aent->numconds; --cond >= 0;) { if ((aent->conds[*--cp] & (1 << cond)) == 0) break; } if (cond < 0) { if ((hent = lookup(tword.c_str())) != NULL) { if (numroots < MAX_ROOTS) { roots[numroots].hashent = hent; roots[numroots].prefix = pfxent; roots[numroots].suffix = aent; numroots++; } } } } } } void aff_chk(const char* word, int len) { int i; int nh = 0; if (len < 4) return; for (i = 0; i < numpfx; i++) { pfx_chk(word, len, ptable[i].aep, ptable[i].num); } nh = numroots; if (nh > 0) { for (int j = 0; j < nh; j++) { if (roots[j].prefix->xpflg & XPRODUCT) { char* nword = mystrdup((roots[j].hashent)->word); int nwl = strlen(nword); for (i = 0; i < numsfx; i++) { suf_chk(nword, nwl, stable[i].aep, stable[i].num, roots[j].prefix, XPRODUCT); } free(nword); } } } for (i = 0; i < numsfx; i++) { suf_chk(word, len, stable[i].aep, stable[i].num, NULL, 0); } } /* lookup a root word in the hashtable */ struct hentry* lookup(const char* word) { struct hentry* dp; dp = &tableptr[hash(word)]; if (dp->word == NULL) return NULL; for (; dp != NULL; dp = dp->next) { if (strcmp(word, dp->word) == 0) return dp; } return NULL; } /* add a word to the hash table */ int add_word(char* word) { int i; struct hentry* dp; struct hentry* hp = (struct hentry*)malloc(sizeof(struct hentry)); hp->word = word; hp->affstr = NULL; hp->keep = 0; hp->next = NULL; i = hash(word); dp = &tableptr[i]; if (dp->word == NULL) { *dp = *hp; free(hp); } else { while (dp->next != NULL) dp = dp->next; dp->next = hp; } return 0; } /* load a word list and build a hash table on the fly */ int load_tables(FILE* wdlst) { char ts[MAX_LN_LEN]; int nExtra = 5; /* first read the first line of file to get hash table size */ if (!fgets(ts, MAX_LN_LEN - 1, wdlst)) return 2; mychomp(ts); tablesize = atoi(ts); if (tablesize <= 0 || (tablesize >= (std::numeric_limits::max() - 1 - nExtra) / (int)sizeof(struct hentry*))) { return 3; } tablesize += nExtra; if ((tablesize % 2) == 0) tablesize++; /* allocate the hash table */ tableptr = (struct hentry*)calloc(tablesize, sizeof(struct hentry)); if (!tableptr) return 3; /* loop thorugh all words on much list and add to hash * table and store away word and affix strings in tmpfile */ while (fgets(ts, MAX_LN_LEN - 1, wdlst)) { mychomp(ts); char* ap = mystrdup(ts); add_word(ap); } return 0; } /* the hash function is a simple load and rotate * algorithm borrowed */ int hash(const char* word) { int i; long hv = 0; for (i = 0; i < 4 && *word != 0; i++) hv = (hv << 8) | (*word++); while (*word != 0) { ROTATE(hv, ROTATE_LEN); hv ^= (*word++); } return (unsigned long)hv % tablesize; } void add_affix_char(struct hentry* ep, char ac) { int al; int i; char* tmp; if (ep->affstr == NULL) { ep->affstr = (char*)malloc(2); *(ep->affstr) = ac; *((ep->affstr) + 1) = '\0'; return; } al = strlen(ep->affstr); for (i = 0; i < al; i++) if (ac == (ep->affstr)[i]) return; tmp = (char*)calloc(al + 2, 1); memcpy(tmp, ep->affstr, (al + 1)); *(tmp + al) = ac; *(tmp + al + 1) = '\0'; free(ep->affstr); ep->affstr = tmp; return; } /* add a prefix to word */ void pfx_add(const char* word, int len, struct affent* ep, int num) { struct affent* aent; int cond; unsigned char* cp; int i; char* pp; char tword[MAX_WD_LEN]; for (aent = ep, i = num; i > 0; aent++, i--) { /* now make sure all conditions match */ if ((len > aent->stripl) && (len >= aent->numconds)) { cp = (unsigned char*)word; for (cond = 0; cond < aent->numconds; cond++) { if ((aent->conds[*cp++] & (1 << cond)) == 0) break; } if (cond >= aent->numconds) { /* we have a match so add prefix */ int tlen = 0; if (aent->appndl) { strncpy(tword, aent->appnd, MAX_WD_LEN - 1); tword[MAX_WD_LEN - 1] = '\0'; tlen += aent->appndl; } pp = tword + tlen; strcpy(pp, (word + aent->stripl)); if (numwords < MAX_WORDS) { wlist[numwords].word = mystrdup(tword); wlist[numwords].pallow = 0; numwords++; } } } } } /* add a suffix to a word */ void suf_add(const char* word, int len, struct affent* ep, int num) { struct affent* aent; int cond; unsigned char* cp; int i; char tword[MAX_WD_LEN]; char* pp; for (aent = ep, i = num; i > 0; aent++, i--) { /* if conditions hold on root word * then strip off strip string and add suffix */ if ((len > aent->stripl) && (len >= aent->numconds)) { cp = (unsigned char*)(word + len); for (cond = aent->numconds; --cond >= 0;) { if ((aent->conds[*--cp] & (1 << cond)) == 0) break; } if (cond < 0) { /* we have a matching condition */ int tlen = len; strncpy(tword, word, MAX_WD_LEN - 1); tword[MAX_WD_LEN - 1] = '\0'; if (aent->stripl) { tlen -= aent->stripl; } pp = (tword + tlen); if (aent->appndl) { strcpy(pp, aent->appnd); } else *pp = '\0'; if (numwords < MAX_WORDS) { wlist[numwords].word = mystrdup(tword); wlist[numwords].pallow = (aent->xpflg & XPRODUCT); numwords++; } } } } } int expand_rootword(const char* ts, int wl, const char* ap) { int i; int nh = 0; for (i = 0; i < numsfx; i++) { if (strchr(ap, (stable[i].aep)->achar)) { suf_add(ts, wl, stable[i].aep, stable[i].num); } } nh = numwords; if (nh > 1) { for (int j = 1; j < nh; j++) { if (wlist[j].pallow) { for (i = 0; i < numpfx; i++) { if (strchr(ap, (ptable[i].aep)->achar)) { if ((ptable[i].aep)->xpflg & XPRODUCT) { int nwl = strlen(wlist[j].word); pfx_add(wlist[j].word, nwl, ptable[i].aep, ptable[i].num); } } } } } } for (i = 0; i < numpfx; i++) { if (strchr(ap, (ptable[i].aep)->achar)) { pfx_add(ts, wl, ptable[i].aep, ptable[i].num); } } return 0; } /* strip strings into token based on single char delimiter * acts like strsep() but only uses a delim char and not * a delim string */ char* mystrsep(char** stringp, const char delim) { char* rv = NULL; char* mp = *stringp; int n = strlen(mp); if (n > 0) { char* dp = (char*)memchr(mp, (int)((unsigned char)delim), n); if (dp) { ptrdiff_t nc; *stringp = dp + 1; nc = dp - mp; rv = (char*)malloc(nc + 1); if (rv) { memcpy(rv, mp, nc); *(rv + nc) = '\0'; } } else { rv = (char*)malloc(n + 1); if (rv) { memcpy(rv, mp, n); *(rv + n) = '\0'; *stringp = mp + n; } } } return rv; } char* mystrdup(const char* s) { char* d = NULL; if (s) { int sl = strlen(s) + 1; d = (char*)malloc(sl); if (d) memcpy(d, s, sl); } return d; } void mychomp(char* s) { int k = strlen(s); if (k > 0) *(s + k - 1) = '\0'; if ((k > 1) && (*(s + k - 2) == '\r')) *(s + k - 2) = '\0'; } hunspell-1.7.2/src/tools/affixcompress0000755000175000017500000001215313422074107015024 00000000000000#!/bin/sh # affix compressor utility for Hunspell # 2008 (c) László Németh, version 0.3 # usage: affixcompress sorted_word_list_file [max_affix_rules] case $# in 0) echo \ "affixcompress - compress a huge sorted word list to Hunspell format Usage: LC_ALL=C sort word_list >sorted_word_list affixcompress sorted_word_list [max_affix_rules] Default value of max_affix_rules = 5000 Note: output may need manually added affix parameters (SET character_encoding, TRY suggestion_characters etc., see man(4) hunspell)" exit 0;; esac MAXAFFIX=${2:-5000} # profiling #AWK="pgawk --profile" AWK="awk" if which gawk; then AWK="gawk" fi rm -f $1.aff $1.dic cat $1 | $AWK ' { # calculate frequent suffixes A[$1] = 1 len = length($1) if (len > 2) { # print $1, substr($1, 1, len - 1), substr($1, len, 1) >"/dev/stderr" B[substr($1, 1, len - 1)] = substr($1, len, 1); } for(i = 2; i < len; i++) { r = substr($1, 1, i) if (i == 2) { if (prev != r) { delete A delete B print "Deleted roots: ", prev > "/dev/stderr" A[$1] = 1 } prev = r } if (A[r]) { # print $1 ": " r " és "substr($1, i + 1, len - i + 1) >"/dev/stderr" sfx[substr($1, i + 1, len - i + 1)]++ } else if (B[r] && B[r] != substr($1, i + 1, 1)) { r2 = substr($1, i + 1, len - i + 1) sfy[r2,B[r]]++ } } } END { for (i in sfx) print i, 0, sfx[i] for (i in sfy) print i, sfy[i] } ' | tr '\034' ' ' >affixcompress0.tmp sort -rnk 3 affixcompress0.tmp | $AWK '$3 >= 1{print $0}' | head -$MAXAFFIX >affixcompress1.tmp cat affixcompress1.tmp | $AWK ' function potential_roots() { # potential roots with most frequent suffixes for(word in W) if (W[word]==1) { print word >"word" len = length(word); for(i = 2; i < len; i++) { root = substr(word, 1, i) suff = substr(word, i + 1, len - i + 1) if ((W[root]!="") && (sfxfr[suff] > 100)) C[root]++ if (sfz[suff]) { l = split(sfz[suff], a) for (k=1; k <= l; k++) if ((W[root a[k]]!="") && (sfyfr[root a[k]] > 100)) { C[root a[k]]++ } } } } # calculate roots for(word in W) if (W[word]==1) { print word >"word2" len = length(word); z = 0 # choose most frequent root (maybe the original word) max = C[word] maxword = word maxsuff = 0 for(i = 2; i < len; i++) { root = substr(word, 1, i) suff = substr(word, i + 1, len - i + 1) if ((sfx[suff] != "") && (C[root] > max)) { max = C[root] maxword = root maxsuff = sfx[suff] } if (sfz[suff] != "") { l = split(sfz[suff], a) for (k=1; k <= l; k++) if (C[root a[k]] > max) { max = C[root a[k]] maxword = root a[k] maxsuff = sfy[suff,a[k]] } } } if (max > 0) { if (maxsuff > 0) print maxword, maxsuff; else print maxword A[maxword]++ z=1 } else { for(i = 2; i < len; i++) { root = substr(word, 1, i) suff = substr(word, i + 1, len - i + 1) if ((A[root] > 0) && sfx[suff]!="") { print root, sfx[suff] z = 1 break } if (sfz[suff]) { l = split(sfz[suff], a) for (k=1; k <= l; k++) if (A[root a[k]]!="") { print root a[k], sfy[suff,a[k]] z = 1 break } } } } if (z == 0) { print word A[word]++ } } delete A delete C } FILENAME == "-" { if ($2 == 0) { sfx[$1] = NR sfxfr[$1] = $3 } else { sfy[$1,$2] = NR sfyfr[$1,$2] = $3 sfz[$1] = sfz[$1] " " $2 } maxsuf = NR next } { cap = substr($1, 1, 3) if (cap != prev) { potential_roots() delete W print "Deleted class:", prev > "/dev/stderr" } prev = cap W[$1] = 1 } END { potential_roots() # write out frequent suffixes out=FILENAME ".aff" print "FLAG num" >out for (i in sfx) if (sfx[i] > 0) { print "SFX", sfx[i], "Y 1" >out print "SFX", sfx[i], "0", i, "." >out } for (i in sfy) if (sfy[i] > 0) { print "SFX", sfy[i], "Y 1" >out split(i, c, "\034"); print "SFX", sfy[i], c[2], c[1], c[2] >out } } ' - $1 >affixcompress2.tmp sort -nk 2 affixcompress2.tmp >affixcompress3.tmp cat affixcompress3.tmp | $AWK -v out="$1.dic" ' { if (A[$1]=="") A[$1]=$2; else if ($2!="") A[$1] = A[$1] "," $2 } END { for (i in A) n++ print n >out for (i in A) { if (A[i]=="") print i else print i "/" A[i] } } ' | sort >>$1.dic hunspell-1.7.2/src/tools/makealias0000755000175000017500000001227713565705656014133 00000000000000#!/bin/sh # makealias: make alias compressed dic and aff files # Author: László Németh # Version: 2019-05-10 export LC_ALL=C usage() { echo 'makealias: make alias compressed dic and aff files for faster load and smaller memory footprint Usage: makealias [--minimize-diff old_file_without_file_extension] file.dic file.aff' >/dev/stderr exit } filecheck() { if [ ! -f $1 ]; then echo File not found: $1 exit fi } case $# in 0|1|3) usage;; esac if [ "$1" = "--minimize-diff" ]; then filecheck $2.aff AWK_ARG="-v mindiff=$2.aff" shift; shift fi case $1 in *.dic) filecheck $1;; *) usage;; esac case $2 in *.aff) filecheck $2;; *) usage;; esac DIC=`basename $1 .dic` AFF=`basename $2 .aff` # Alias definitions must be between FLAG type definition and SFX/PFX lines. # copy aff content before SFX/PFX lines sed '/^[SP]FX/,$d;s/\s\+$//' $2 >"${AFF}_alias.aff" # space conversion (space separated multi-word expressions # are allowed in the dictionary) cat $1 | sed 's/ /_/g' > "${DIC}_alias.tmp.dic" awk $AWK_ARG ' BEGIN{ n=1;m=1 # make smaller and more readable diff for LibreOffice git if (mindiff != "") { n=0;m=0 # load old AF and AM fields while ((getline var < mindiff) > 0) { if (var~/^AF /) { b[n] = gensub(" #.*$", "", 1, substr(var, 4)) a[b[n]] = n n = n + 1 } if (var~/^AM /) { c[m] = substr(var, 4) a2[c[m]] = m m = m + 1 } } # reuse unused AF and AM items # first load dic while ((getline $0 < ARGV[1]) > 0) { if (match($0, "^([^ \t/]+)(/([^ \t]*))?([ \t]*(.*))?", flds)) { if (length(flds[3]) > 0) { if(a[flds[3]]) { used[flds[3]] = 1 } else if (!not_used_registered[flds[3]]) { not_used[un] = flds[3] not_used_registered[flds[3]] = 1 un++ } } if (length(flds[5]) > 0) { mfld = ltrim(flds[5]) if(a2[mfld] || not_used2[mfld]) { used2[mfld] = 1 } else if (!not_used2_registered[mfld]) { not_used2[um] = mfld not_used2_registered[mfld] = 1 um++ } } } } # load aff file while ((getline $0 < ARGV[2]) > 0) { if ($0 ~ /^[PS]FX/ && NF > 4) { if ($4 ~ /\/[^ \t]/) { split($4,t,"/") if(a[t[2]]){ used[t[2]] = 1 } else { not_used[un++] = t[2] } } if ($6 != "") { $1 = $2 = $3 = $4 = $5 = "" $0 = ltrim($0) if(a2[$0]) { used2[$0] = 1 } else { not_used2[um++] = $0 } } } } # reuse unused items j = 0 for (i=0; i < n && j < un; i++) { if (!(b[i] in used)) { b[i] = not_used[j] a[b[i]] = i used[b[i]] = 1 j++ } } j = 0 for (i=0; i < m && j < um; i++) { if (!(c[i] in used2)) { c[i] = not_used2[j] a2[c[i]] = i used2[c[i]] = 1 j++ } } } } function cutslash(st) { if (split(st,t,"/") > 1) return t[1] return st } function ltrim(st) { sub(/^ +/,"",st) gsub("[ \t]+"," ",st) return st } FILENAME ~ /.dic$/ && match($0, "^([^ \t/]+)(/([^ \t]*))?([ \t]*(.*))?", flds) { # flag vector? flags = "" if(length(flds[3]) > 0) { if (!a[flds[3]]) { a[flds[3]]=n b[n]=flds[3] n++ } flags = "/" a[flds[3]] } end = "" # morphological fields? if (length(flds[5]) > 0) { mfld = ltrim(flds[5]) if(!a2[mfld]){ a2[mfld]=m c[m]=mfld m++ } end = "\t" a2[mfld] } print flds[1] flags end next } FILENAME ~ /.aff$/ && /^[PS]FX/ && NF > 4 { if ($4 ~ /\/[^ \t]/) { split($4,t,"/") if(!a[t[2]]){ a[t[2]]=n b[n]=t[2] n++ } begin = $1 " " $2 " " $3 " " (t[1]"/"a[t[2]]) " " $5 } else { begin = $1 " " $2 " " $3 " " cutslash($4) " " $5 } end = "" if ($6 != "") { $1 = $2 = $3 = $4 = $5 = "" $0 = ltrim($0) if(!a2[$0]) { a2[$0]=m c[m]=$0 m++ } end = " " a2[$0] } print begin end >>"/dev/stderr" next } FILENAME ~ /.aff$/ { print $0 >>"/dev/stderr" } END { if (n>1) { print "AF", n-1 >>"'${AFF}_alias.aff'" for(i=1;i>"'${AFF}_alias.aff'" } if (m>1) { print "AM", m-1 >>"'${AFF}_alias.aff'" for(i=1;i>"'${AFF}_alias.aff'" } }' "${DIC}_alias.tmp.dic" $2 >"${DIC}_alias.tmp" 2>"${AFF}_alias.$$" cat "${DIC}_alias.tmp" | sed 's/_/ /g' > "${DIC}_alias.dic" sed -n '/^[SP]FX/,$p' "${AFF}_alias.$$" | sed 's/\s\+$//' >>"${AFF}_alias.aff" echo "output: ${DIC}_alias.dic, ${AFF}_alias.aff" rm ${DIC}_alias.tmp ${DIC}_alias.tmp.dic ${AFF}_alias.$$ hunspell-1.7.2/src/tools/chmorph.cxx0000664000175000017500000000760714352145647014436 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include #include #include #include "../hunspell/hunspell.hxx" #include "../parsers/textparser.hxx" #ifndef W32 using namespace std; #endif int main(int, char** argv) { FILE* f; /* first parse the command line options */ for (int i = 1; i < 6; i++) if (!argv[i]) { fprintf( stderr, "chmorph - change affixes by morphological analysis and generation\n" "correct syntax is:\nchmorph affix_file " "dictionary_file file_to_convert STRING1 STRING2\n" "STRINGS may be arbitrary parts of the morphological descriptions\n" "example: chmorph hu.aff hu.dic hu.txt SG_2 SG_3 " " (convert informal Hungarian second person texts to formal third " "person texts)\n"); exit(1); } /* open the words to check list */ f = fopen(argv[3], "r"); if (!f) { fprintf(stderr, "Error - could not open file to check\n"); exit(1); } Hunspell* pMS = new Hunspell(argv[1], argv[2]); TextParser* p = new TextParser( "qwertzuiopasdfghjklyxcvbnmQWERTZUIOPASDFGHJKLYXCVBNM"); char buf[MAXLNLEN]; while (fgets(buf, MAXLNLEN, f)) { p->put_line(buf); std::string next; while (p->next_token(next)) { std::vector pl = pMS->analyze(next); if (!pl.empty()) { int gen = 0; for (size_t i = 0; i < pl.size(); ++i) { const char* pos = strstr(pl[i].c_str(), argv[4]); if (pos) { std::string r(pl[i], pos - pl[i].c_str()); r.append(argv[5]); r.append(pos + strlen(argv[4])); pl[i] = r; gen = 1; } } if (gen) { std::vector pl2 = pMS->generate(next, pl); if (!pl2.empty()) { p->change_token(pl2[0].c_str()); // jump over the (possibly un)modified word (void)p->next_token(next); } } } } fprintf(stdout, "%s\n", p->get_line().c_str()); } delete p; fclose(f); return 0; } hunspell-1.7.2/src/tools/analyze.cxx0000664000175000017500000000724414352145647014436 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include #include #include #include "../hunspell/hunspell.hxx" #ifndef WIN32 using namespace std; #endif int main(int, char** argv) { /* first parse the command line options */ for (int i = 1; i < 3; ++i) if (!argv[i]) { fprintf(stderr, "correct syntax is:\nanalyze affix_file"); fprintf(stderr, " dictionary_file file_of_words_to_check\n"); fprintf(stderr, "use two words per line for morphological generation\n"); exit(1); } /* open the words to check list */ FILE* wtclst = fopen(argv[3], "r"); if (!wtclst) { fprintf(stderr, "Error - could not open file to check\n"); exit(1); } Hunspell* pMS = new Hunspell(argv[1], argv[2]); char buf[100]; while (fgets(buf, sizeof(buf), wtclst)) { buf[strcspn(buf, "\n")] = 0; if (*buf == '\0') continue; // morphgen demo char* s = strchr(buf, ' '); if (s) { *s = '\0'; std::vector result = pMS->generate(buf, s + 1); for (size_t i = 0; i < result.size(); ++i) { fprintf(stdout, "generate(%s, %s) = %s\n", buf, s + 1, result[i].c_str()); } if (result.empty()) fprintf(stdout, "generate(%s, %s) = NO DATA\n", buf, s + 1); } else { int dp = pMS->spell(std::string(buf)); fprintf(stdout, "> %s\n", buf); if (dp) { std::vector result = pMS->analyze(buf); for (size_t i = 0; i < result.size(); ++i) { fprintf(stdout, "analyze(%s) = %s\n", buf, result[i].c_str()); } result = pMS->stem(buf); for (size_t i = 0; i < result.size(); ++i) { fprintf(stdout, "stem(%s) = %s\n", buf, result[i].c_str()); } } else { fprintf(stdout, "Unknown word.\n"); } } } delete pMS; fclose(wtclst); return 0; } hunspell-1.7.2/src/tools/wordlist2hunspell0000644000175000017500000000316013422074107015652 00000000000000#!/bin/sh # # (C) 2008 Caolán McNamara # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # This creates a LANG_TERRITORY .aff & .dic from a wordlist. # It is only a simple wordlist spellchecking dictionary output, no # knowledge of language rules can be extrapolated to shrink the # wordlist or provide .aff rules for extending wordstems if [ $# -lt 2 ]; then echo "Usage: wordlist2hunspell wordlist_file locale" echo "e.g. wordlist2hunspell breton.words br_FR to create br_FR.dic and br_FR.aff in cwd" exit 1 fi export LANG=$2.utf8 echo "# A basic .aff for a raw wordlist, created through wordlist2hunspell" > $2.aff echo SET UTF-8 >> $2.aff #see https://bugzilla.redhat.com/show_bug.cgi?id=462184 for the "C" hacks echo TRY `sed 's/./&\n/g' $1 | sed '/^$/d' | LC_ALL=C sort -n | LC_ALL=C uniq -c | LC_ALL=C sort -rn | tr -s ' ' | cut -d ' ' -f 3 | tr -d '\n'` >> $2.aff cat $1 | sed '/^$/d' | wc -l > $2.dic LC_ALL=C sort $1 | sed '/^$/d' >> $2.dic echo Basic $2.dic and $2.aff created hunspell-1.7.2/src/tools/Makefile.in0000664000175000017500000006725414353370163014315 00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = analyze$(EXEEXT) chmorph$(EXEEXT) hunspell$(EXEEXT) \ munch$(EXEEXT) unmunch$(EXEEXT) hzip$(EXEEXT) hunzip$(EXEEXT) noinst_PROGRAMS = example$(EXEEXT) subdir = src/tools ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/visibility.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(dist_bin_SCRIPTS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) am_analyze_OBJECTS = analyze.$(OBJEXT) analyze_OBJECTS = $(am_analyze_OBJECTS) analyze_DEPENDENCIES = ../hunspell/libhunspell-1.7.la AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = am_chmorph_OBJECTS = chmorph.$(OBJEXT) chmorph_OBJECTS = $(am_chmorph_OBJECTS) chmorph_DEPENDENCIES = ../parsers/libparsers.a \ ../hunspell/libhunspell-1.7.la am_example_OBJECTS = example.$(OBJEXT) example_OBJECTS = $(am_example_OBJECTS) example_DEPENDENCIES = ../hunspell/libhunspell-1.7.la am_hunspell_OBJECTS = hunspell.$(OBJEXT) nodist_hunspell_OBJECTS = hunspell_OBJECTS = $(am_hunspell_OBJECTS) $(nodist_hunspell_OBJECTS) hunspell_DEPENDENCIES = ../parsers/libparsers.a \ ../hunspell/libhunspell-1.7.la am_hunzip_OBJECTS = hunzip.$(OBJEXT) hunzip_OBJECTS = $(am_hunzip_OBJECTS) hunzip_DEPENDENCIES = ../hunspell/libhunspell-1.7.la am_hzip_OBJECTS = hzip.$(OBJEXT) hzip_OBJECTS = $(am_hzip_OBJECTS) hzip_LDADD = $(LDADD) am_munch_OBJECTS = munch.$(OBJEXT) munch_OBJECTS = $(am_munch_OBJECTS) munch_LDADD = $(LDADD) am_unmunch_OBJECTS = unmunch.$(OBJEXT) unmunch_OBJECTS = $(am_unmunch_OBJECTS) unmunch_LDADD = $(LDADD) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } SCRIPTS = $(dist_bin_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(analyze_SOURCES) $(chmorph_SOURCES) $(example_SOURCES) \ $(hunspell_SOURCES) $(nodist_hunspell_SOURCES) \ $(hunzip_SOURCES) $(hzip_SOURCES) $(munch_SOURCES) \ $(unmunch_SOURCES) DIST_SOURCES = $(analyze_SOURCES) $(chmorph_SOURCES) \ $(example_SOURCES) $(hunspell_SOURCES) $(hunzip_SOURCES) \ $(hzip_SOURCES) $(munch_SOURCES) $(unmunch_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CURSESLIB = @CURSESLIB@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HUNSPELL_VERSION_MAJOR = @HUNSPELL_VERSION_MAJOR@ HUNSPELL_VERSION_MINOR = @HUNSPELL_VERSION_MINOR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ READLINELIB = @READLINELIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I${top_builddir}/src/hunspell -I${top_srcdir}/src/hunspell -I${top_srcdir}/src/parsers hzip_SOURCES = hzip.cxx hunzip_SOURCES = hunzip.cxx hunzip_LDADD = ../hunspell/libhunspell-1.7.la munch_SOURCES = munch.cxx munch.h unmunch_SOURCES = unmunch.cxx unmunch.h example_SOURCES = example.cxx example_LDADD = ../hunspell/libhunspell-1.7.la hunspell_SOURCES = hunspell.cxx nodist_hunspell_SOURCES = ../../config.h hunspell_LDADD = @LIBINTL@ @LIBICONV@ ../parsers/libparsers.a \ ../hunspell/libhunspell-1.7.la @CURSESLIB@ @READLINELIB@ analyze_SOURCES = analyze.cxx analyze_LDADD = ../hunspell/libhunspell-1.7.la chmorph_SOURCES = chmorph.cxx chmorph_LDADD = ../parsers/libparsers.a ../hunspell/libhunspell-1.7.la dist_bin_SCRIPTS = makealias affixcompress wordforms ispellaff2myspell wordlist2hunspell all: all-am .SUFFIXES: .SUFFIXES: .cxx .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/tools/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/tools/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list analyze$(EXEEXT): $(analyze_OBJECTS) $(analyze_DEPENDENCIES) $(EXTRA_analyze_DEPENDENCIES) @rm -f analyze$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(analyze_OBJECTS) $(analyze_LDADD) $(LIBS) chmorph$(EXEEXT): $(chmorph_OBJECTS) $(chmorph_DEPENDENCIES) $(EXTRA_chmorph_DEPENDENCIES) @rm -f chmorph$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(chmorph_OBJECTS) $(chmorph_LDADD) $(LIBS) example$(EXEEXT): $(example_OBJECTS) $(example_DEPENDENCIES) $(EXTRA_example_DEPENDENCIES) @rm -f example$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(example_OBJECTS) $(example_LDADD) $(LIBS) hunspell$(EXEEXT): $(hunspell_OBJECTS) $(hunspell_DEPENDENCIES) $(EXTRA_hunspell_DEPENDENCIES) @rm -f hunspell$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(hunspell_OBJECTS) $(hunspell_LDADD) $(LIBS) hunzip$(EXEEXT): $(hunzip_OBJECTS) $(hunzip_DEPENDENCIES) $(EXTRA_hunzip_DEPENDENCIES) @rm -f hunzip$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(hunzip_OBJECTS) $(hunzip_LDADD) $(LIBS) hzip$(EXEEXT): $(hzip_OBJECTS) $(hzip_DEPENDENCIES) $(EXTRA_hzip_DEPENDENCIES) @rm -f hzip$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(hzip_OBJECTS) $(hzip_LDADD) $(LIBS) munch$(EXEEXT): $(munch_OBJECTS) $(munch_DEPENDENCIES) $(EXTRA_munch_DEPENDENCIES) @rm -f munch$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(munch_OBJECTS) $(munch_LDADD) $(LIBS) unmunch$(EXEEXT): $(unmunch_OBJECTS) $(unmunch_DEPENDENCIES) $(EXTRA_unmunch_DEPENDENCIES) @rm -f unmunch$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(unmunch_OBJECTS) $(unmunch_LDADD) $(LIBS) install-dist_binSCRIPTS: $(dist_bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/analyze.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmorph.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/example.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hunspell.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hunzip.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hzip.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/munch.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unmunch.Po@am__quote@ .cxx.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cxx.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cxx.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool \ clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-dist_binSCRIPTS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-dist_binSCRIPTS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic clean-libtool \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-binPROGRAMS install-data \ install-data-am install-dist_binSCRIPTS install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-binPROGRAMS uninstall-dist_binSCRIPTS .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: hunspell-1.7.2/src/tools/hunspell.cxx0000664000175000017500000020756514352160534014625 00000000000000/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ // glibc < 3.0 (for mkstemp) #ifndef __USE_MISC #define __USE_MISC #endif #include #include #include #include #include #include #include "../hunspell/atypes.hxx" #include "../hunspell/hunspell.hxx" #include "../hunspell/csutil.hxx" #include "../hunspell/hunzip.hxx" #define HUNSPELL_VERSION VERSION #define INPUTLEN 50 #define HUNSPELL_PIPE_HEADING \ "@(#) International Ispell Version 3.2.06 (but really Hunspell " VERSION ")" \ "\n" #define HUNSPELL_HEADING "Hunspell " #define ODF_EXT "odt|ott|odp|otp|odg|otg|ods|ots" #define ENTITY_APOS "'" #define UTF8_APOS "\xe2\x80\x99" // for debugging only //#define LOG #define DEFAULTDICNAME "default" #ifdef WIN32 #define LIBDIR "C:\\Hunspell\\" #define USEROOODIR { "Application Data\\OpenOffice.org 2\\user\\wordbook" } #define OOODIR \ "C:\\Program files\\OpenOffice.org 2.4\\share\\dict\\ooo\\;" \ "C:\\Program files\\OpenOffice.org 2.3\\share\\dict\\ooo\\;" \ "C:\\Program files\\OpenOffice.org 2.2\\share\\dict\\ooo\\;" \ "C:\\Program files\\OpenOffice.org 2.1\\share\\dict\\ooo\\;" \ "C:\\Program files\\OpenOffice.org 2.0\\share\\dict\\ooo\\" #define HOME "%USERPROFILE%\\" #define DICBASENAME "hunspell_" #define LOGFILE "C:\\Hunspell\\log" #define DIRSEPCH '\\' #define DIRSEP "\\" #define PATHSEP ";" #ifdef __MINGW32__ #include #include #include #include #endif #include "../parsers/textparser.hxx" #include "../parsers/htmlparser.hxx" #include "../parsers/latexparser.hxx" #include "../parsers/manparser.hxx" #include "../parsers/firstparser.hxx" #include "../parsers/xmlparser.hxx" #include "../parsers/odfparser.hxx" #else // Not Windows #include #include #include #include #include "../parsers/textparser.hxx" #include "../parsers/htmlparser.hxx" #include "../parsers/latexparser.hxx" #include "../parsers/manparser.hxx" #include "../parsers/firstparser.hxx" #include "../parsers/xmlparser.hxx" #include "../parsers/odfparser.hxx" #define LIBDIR \ "/usr/share/hunspell:" \ "/usr/share/myspell:" \ "/usr/share/myspell/dicts:" \ "/Library/Spelling" #define USEROOODIR { \ ".openoffice.org/3/user/wordbook", \ ".openoffice.org2/user/wordbook", \ ".openoffice.org2.0/user/wordbook",\ "Library/Spelling" } #define OOODIR \ "/opt/openoffice.org/basis3.0/share/dict/ooo:" \ "/usr/lib/openoffice.org/basis3.0/share/dict/ooo:" \ "/opt/openoffice.org2.4/share/dict/ooo:" \ "/usr/lib/openoffice.org2.4/share/dict/ooo:" \ "/opt/openoffice.org2.3/share/dict/ooo:" \ "/usr/lib/openoffice.org2.3/share/dict/ooo:" \ "/opt/openoffice.org2.2/share/dict/ooo:" \ "/usr/lib/openoffice.org2.2/share/dict/ooo:" \ "/opt/openoffice.org2.1/share/dict/ooo:" \ "/usr/lib/openoffice.org2.1/share/dict/ooo:" \ "/opt/openoffice.org2.0/share/dict/ooo:" \ "/usr/lib/openoffice.org2.0/share/dict/ooo" #define HOME getenv("HOME") #define DICBASENAME ".hunspell_" #define LOGFILE "/tmp/hunspell.log" #define DIRSEPCH '/' #define DIRSEP "/" #define PATHSEP ":" #endif #ifdef HAVE_ICONV #include #include char text_conv[MAXLNLEN]; #endif #ifdef HAVE_LOCALE_H # include #endif #ifdef HAVE_LANGINFO_H # include #endif #ifdef ENABLE_NLS # include #else # undef gettext # define gettext(Msgid) ((const char *) (Msgid)) # undef textdomain # define textdomain(Domainname) ((const char *) (Domainname)) #endif #ifdef HAVE_CURSES_H #ifdef HAVE_NCURSESW_CURSES_H #include #else #include #endif #endif #ifdef HAVE_READLINE #include #else #define readline scanline #endif // file formats: enum { FMT_TEXT, FMT_LATEX, FMT_HTML, FMT_MAN, FMT_FIRST, FMT_XML, FMT_ODF }; // global variables std::string wordchars; char* dicpath = NULL; const w_char* wordchars_utf16 = NULL; std::vector new_wordchars_utf16; int wordchars_utf16_len; char* dicname = NULL; char* privdicname = NULL; const char* currentfilename = NULL; int modified; // modified file sign bool multiple_files; // for listing file names in pipe interface enum { NORMAL, BADWORD, // print only bad words WORDFILTER, // print only bad words from 1 word/line input BADLINE, // print only lines with bad words STEM, // stem input words ANALYZE, // analyze input words PIPE, // print only stars for LyX compatibility AUTO0, // search typical error (based on SuggestMgr::suggest()) AUTO, // automatic spelling to standard output AUTO2, // automatic spelling to standard output with sed log AUTO3, SUFFIX // print suffixes that can be attached to a given word }; // automatic spelling to standard output with gcc error format int filter_mode = NORMAL; int printgood = 0; // print only good words and lines int showpath = 0; // show detected path of the dictionary int checkurl = 0; // check URLs and mail addresses int checkapos = 0; // force typographic apostrophe int warn = 0; // warn potential mistakes (dictionary words with WARN flags) const char* ui_enc = NULL; // locale character encoding (default for I/O) const char* io_enc = NULL; // I/O character encoding #define DMAX 10 // maximal count of loaded dictionaries const char* dic_enc[DMAX]; // dictionary encoding char* path = NULL; int dmax = 0; // dictionary count // functions #ifdef HAVE_ICONV static const char* fix_encoding_name(const char* enc) { if (strcmp(enc, "TIS620-2533") == 0) enc = "TIS620"; return enc; } #endif /* change character encoding */ std::string chenc(const std::string& st, const char* enc1, const char* enc2) { #ifndef HAVE_ICONV (void)enc1; (void)enc2; return st; #else if (st.empty()) return st; if (!enc1 || !enc2 || strcmp(enc1, enc2) == 0) return st; std::string out(st.size() < 15 ? 15 : st.size(), '\0'); size_t c1(st.size()); size_t c2(out.size()); ICONV_CONST char* source = (ICONV_CONST char*) &st[0]; char* dest = &out[0]; iconv_t conv = iconv_open(fix_encoding_name(enc2), fix_encoding_name(enc1)); if (conv == (iconv_t)-1) { fprintf(stderr, gettext("error - iconv_open: %s -> %s\n"), enc2, enc1); } else { size_t res; while ((res = iconv(conv, &source, &c1, &dest, &c2)) == size_t(-1)) { if (errno == E2BIG) { //c2 is zero or close to zero size_t next_start = out.size() - c2; c2 += c1*2; out.resize(out.size() + c1*2); dest = &out[next_start]; } else break; } if (res == (size_t)-1) { fprintf(stderr, gettext("error - iconv: %s -> %s\n"), enc2, enc1); } iconv_close(conv); out.resize(dest - &out[0]); return out; } return st; #endif } TextParser* get_parser(int format, const char* extension, Hunspell* pMS) { TextParser* p = NULL; int io_utf8 = 0; const char* denc = pMS->get_dict_encoding().c_str(); #ifdef HAVE_ICONV if (io_enc) { if ((strcmp(io_enc, "UTF-8") == 0) || (strcmp(io_enc, "utf-8") == 0) || (strcmp(io_enc, "UTF8") == 0) || (strcmp(io_enc, "utf8") == 0)) { io_utf8 = 1; io_enc = "UTF-8"; } } else if (ui_enc) { io_enc = ui_enc; if (strcmp(ui_enc, "UTF-8") == 0) io_utf8 = 1; } else { io_enc = denc; if (strcmp(denc, "UTF-8") == 0) io_utf8 = 1; } if (io_utf8) { const std::vector& vec_wordchars_utf16 = pMS->get_wordchars_utf16(); const std::string& vec_wordchars = pMS->get_wordchars_cpp(); wordchars_utf16_len = vec_wordchars_utf16.size(); wordchars_utf16 = wordchars_utf16_len ? vec_wordchars_utf16.data() : NULL; if ((strcmp(denc, "UTF-8") != 0) && !vec_wordchars.empty()) { const char* wchars = vec_wordchars.c_str(); size_t c1 = vec_wordchars.size(); size_t c2 = MAXLNLEN; char* dest = text_conv; iconv_t conv = iconv_open("UTF-8", fix_encoding_name(denc)); if (conv == (iconv_t)-1) { fprintf(stderr, gettext("error - iconv_open: UTF-8 -> %s\n"), denc); wordchars_utf16 = NULL; wordchars_utf16_len = 0; } else { iconv(conv, (ICONV_CONST char**)&wchars, &c1, &dest, &c2); iconv_close(conv); u8_u16(new_wordchars_utf16, text_conv); std::sort(new_wordchars_utf16.begin(), new_wordchars_utf16.end()); wordchars_utf16 = new_wordchars_utf16.data(); wordchars_utf16_len = new_wordchars_utf16.size(); } } } else { // 8-bit input encoding // detect letters by unicodeisalpha() for tokenization char letters[MAXLNLEN]; char* pletters = letters; char ch[2]; char u8[10]; *pletters = '\0'; iconv_t conv = iconv_open("UTF-8", fix_encoding_name(io_enc)); if (conv == (iconv_t)-1) { fprintf(stderr, gettext("error - iconv_open: UTF-8 -> %s\n"), io_enc); } else { for (int i = 32; i < 256; i++) { size_t c1 = 1; size_t c2 = 10; char* dest = u8; u8[0] = '\0'; char* ch8bit = ch; ch[0] = (char)i; ch[1] = '\0'; size_t res = iconv(conv, (ICONV_CONST char**)&ch8bit, &c1, &dest, &c2); if (res != (size_t)-1) { std::vector w; u8_u16(w, std::string(u8, dest)); unsigned short idx = w.empty() ? 0 : (w[0].h << 8) + w[0].l; if (unicodeisalpha(idx)) { *pletters = (char)i; pletters++; } } } iconv_close(conv); } *pletters = '\0'; // UTF-8 wordchars -> 8 bit wordchars const std::string& vec_wordchars = pMS->get_wordchars_cpp(); size_t len = vec_wordchars.size(); if (len) { if ((strcmp(denc, "UTF-8") == 0)) { len = pMS->get_wordchars_utf16().size(); } char* dest = letters + strlen(letters); // append wordchars size_t c1 = len + 1; size_t c2 = len + 1; conv = iconv_open(fix_encoding_name(io_enc), fix_encoding_name(denc)); if (conv == (iconv_t)-1) { fprintf(stderr, gettext("error - iconv_open: %s -> %s\n"), io_enc, denc); } else { const char* wchars = vec_wordchars.c_str(); iconv(conv, (ICONV_CONST char**)&wchars, &c1, &dest, &c2); iconv_close(conv); *dest = '\0'; } } if (*letters) wordchars.assign(letters); } #else if (strcmp(denc, "UTF-8") == 0) { const std::vector& vec_wordchars_utf16 = pMS->get_wordchars_utf16(); wordchars_utf16 = (vec_wordchars_utf16.size() == 0) ? NULL : vec_wordchars_utf16.data(); wordchars_utf16_len = vec_wordchars_utf16.size(); io_utf8 = 1; } else { std::string casechars = get_casechars(denc); std::string wchars = pMS->get_wordchars_cpp(); wordchars = casechars + wchars; } io_enc = denc; #endif if (io_utf8) { switch (format) { case FMT_LATEX: p = new LaTeXParser(wordchars_utf16, wordchars_utf16_len); break; case FMT_HTML: p = new HTMLParser(wordchars_utf16, wordchars_utf16_len); break; case FMT_MAN: p = new ManParser(wordchars_utf16, wordchars_utf16_len); break; case FMT_XML: p = new XMLParser(wordchars_utf16, wordchars_utf16_len); break; case FMT_ODF: p = new ODFParser(wordchars_utf16, wordchars_utf16_len); break; case FMT_FIRST: p = new FirstParser(wordchars.c_str()); } } else { switch (format) { case FMT_LATEX: p = new LaTeXParser(wordchars.c_str()); break; case FMT_HTML: p = new HTMLParser(wordchars.c_str()); break; case FMT_MAN: p = new ManParser(wordchars.c_str()); break; case FMT_XML: p = new XMLParser(wordchars.c_str()); break; case FMT_ODF: p = new ODFParser(wordchars.c_str()); break; case FMT_FIRST: p = new FirstParser(wordchars.c_str()); } } if ((!p) && (extension)) { if ((strcmp(extension, "html") == 0) || (strcmp(extension, "htm") == 0) || (strcmp(extension, "xhtml") == 0)) { if (io_utf8) { p = new HTMLParser(wordchars_utf16, wordchars_utf16_len); } else { p = new HTMLParser(wordchars.c_str()); } } else if ((strcmp(extension, "xml") == 0)) { if (io_utf8) { p = new XMLParser(wordchars_utf16, wordchars_utf16_len); } else { p = new XMLParser(wordchars.c_str()); } } else if (((strlen(extension) == 3) && (strstr(ODF_EXT, extension) != NULL)) || ((strlen(extension) == 4) && (extension[0] == 'f') && (strstr(ODF_EXT, extension + 1) != NULL))) { if (io_utf8) { p = new ODFParser(wordchars_utf16, wordchars_utf16_len); } else { p = new ODFParser(wordchars.c_str()); } } else if (((extension[0] > '0') && (extension[0] <= '9'))) { if (io_utf8) { p = new ManParser(wordchars_utf16, wordchars_utf16_len); } else { p = new ManParser(wordchars.c_str()); } } else if ((strcmp(extension, "tex") == 0)) { if (io_utf8) { p = new LaTeXParser(wordchars_utf16, wordchars_utf16_len); } else { p = new LaTeXParser(wordchars.c_str()); } } } if (!p) { if (io_utf8) { p = new TextParser(wordchars_utf16, wordchars_utf16_len); } else { p = new TextParser(wordchars.c_str()); } } p->set_url_checking(checkurl); return p; } #ifdef LOG void log(char* message) { FILE* f = fopen(LOGFILE, "a"); if (f) { fprintf(f, "%s\n", message); fclose(f); } else { fprintf(stderr, "Logfile..."); } } #endif int putdic(const std::string& in_word, Hunspell* pMS) { std::string word = chenc(in_word, ui_enc, dic_enc[0]); std::string buf; pMS->input_conv(word.c_str(), buf); word = buf; if (word.empty()) return 0; int ret(0); size_t w = word.find('/', 1); if (w == std::string::npos) { if (word[0] == '*') ret = pMS->remove(word.substr(1)); else ret = pMS->add(word); } else { std::string affix = word.substr(w + 1); word.resize(w); if (!affix.empty() && affix[0] == '/') // word//pattern (back comp.) affix.erase(0, 1); ret = pMS->add_with_affix(word, affix); // word/pattern } return ret; } void load_privdic(const char* filename, Hunspell* pMS) { std::ifstream dic; dic.open(filename, std::ios_base::in); if (dic.is_open()) { std::string buf; while (std::getline(dic, buf)) { putdic(buf, pMS); } } } bool exist(const char* filename) { std::ifstream f; f.open(filename, std::ios_base::in); if (f.is_open()) { return true; } return false; } int save_privdic(const std::string& filename, const std::string& filename2, std::vector& w) { FILE* dic = fopen(filename.c_str(), "r"); if (dic) { fclose(dic); dic = fopen(filename.c_str(), "a"); } else { dic = fopen(filename2.c_str(), "a"); } if (!dic) return 0; for (size_t i = 0; i < w.size(); ++i) { w[i] = chenc(w[i], io_enc, ui_enc); fprintf(dic, "%s\n", w[i].c_str()); } fclose(dic); return 1; } const char* basename(const char* s, char c) { const char* p = s + strlen(s); while ((*p != c) && (p != s)) p--; if (*p == c) p++; return p; } char* mystrdup(const char* s) { char* d = NULL; if (s) { int sl = strlen(s) + 1; d = (char*)malloc(sl); if (d) memcpy(d, s, sl); } return d; } #ifdef HAVE_CURSES_H char* scanline(const char* message) { char input[INPUTLEN]; printw("%s", message); echo(); getnstr(input, INPUTLEN); noecho(); return mystrdup(input); } #endif // check words in the dictionaries (and set first checked dictionary) bool check(Hunspell** pMS, int* d, const std::string& token, int* info, std::string* root) { for (int i = 0; i < dmax; ++i) { std::string buf = chenc(token, io_enc, dic_enc[*d]); mystrrep(buf, ENTITY_APOS, "'"); if (checkapos && buf.find('\'') != std::string::npos) return false; // 8-bit encoded dictionaries need ASCII apostrophes (eg. English // dictionaries) if (strcmp(dic_enc[*d], "UTF-8") != 0) mystrrep(buf, UTF8_APOS, "'"); if ((pMS[*d]->spell(buf, info, root) && !(warn && (*info & SPELL_WARN))) || // UTF-8 encoded dictionaries with ASCII apostrophes, but without ICONV // support, // need also ASCII apostrophes (eg. French dictionaries) ((strcmp(dic_enc[*d], "UTF-8") == 0) && buf.find(UTF8_APOS) != std::string::npos && pMS[*d]->spell(mystrrep(buf, UTF8_APOS, "'"), info, root) && !(warn && (*info & SPELL_WARN)))) { return true; } if (++(*d) == dmax) *d = 0; } return false; } static bool is_zipped_odf(TextParser* parser, const char* extension) { // ODFParser and not flat ODF return dynamic_cast(parser) && (extension && extension[0] != 'f'); } static bool secure_filename(const char* filename) { const char* hasapostrophe = strchr(filename, '\''); if (hasapostrophe) return false; return true; } char* mymkdtemp(char *templ) { #ifdef WIN32 (void)templ; char *odftmpdir = tmpnam(NULL); if (!odftmpdir) { return NULL; } if (system((std::string("mkdir ") + odftmpdir).c_str()) != 0) { return NULL; } return odftmpdir; #else return mkdtemp(templ); #endif } void pipe_interface(Hunspell** pMS, int format, FILE* fileid, char* filename) { char buf[MAXLNLEN]; std::vector dicwords; int pos; int bad; int lineno = 0; int terse_mode = 0; int verbose_mode = 0; int d = 0; char* odftmpdir = NULL; std::string filename_prefix = (multiple_files) ? filename + std::string(": ") : ""; const char* extension = (filename) ? basename(filename, '.') : NULL; TextParser* parser = get_parser(format, extension, pMS[0]); char tmpdirtemplate[] = "/tmp/hunspellXXXXXX"; bool bZippedOdf = is_zipped_odf(parser, extension); // access content.xml of ODF if (bZippedOdf) { odftmpdir = mymkdtemp(tmpdirtemplate); if (!odftmpdir) { perror(gettext("Can't create tmp dir")); exit(1); } // break 1-line XML of zipped ODT documents at and // to avoid tokenization problems (fgets could stop within an XML tag) std::ostringstream sbuf; sbuf << "unzip -p \"" << filename << "\" content.xml | sed " "\"s/\\(<\\/text:p>\\|<\\/style:style>\\)\\(.\\)/\\1\\n\\2/g;s/<\\/\\?text:span[^>]*>//g\" " ">" << odftmpdir << "/content.xml"; if (!secure_filename(filename) || system(sbuf.str().c_str()) != 0) { if (secure_filename(filename)) perror(gettext("Can't open inputfile")); else fprintf(stderr, gettext("Can't open %s.\n"), filename); if (system((std::string("rmdir ") + odftmpdir).c_str()) != 0) { perror("temp dir delete failed"); } exit(1); } std::string file(odftmpdir); file.append("/content.xml"); fileid = fopen(file.c_str(), "r"); if (fileid == NULL) { perror(gettext("Can't open inputfile")); if (system((std::string("rmdir ") + odftmpdir).c_str()) != 0) { perror("temp dir delete failed"); } exit(1); } } if (filter_mode == NORMAL) { fprintf(stdout, "%s", gettext(HUNSPELL_HEADING)); fprintf(stdout, HUNSPELL_VERSION); const std::string& version = pMS[0]->get_version_cpp(); if (!version.empty()) fprintf(stdout, " - %s", version.c_str()); fprintf(stdout, "\n"); fflush(stdout); } nextline: while (fgets(buf, MAXLNLEN, fileid)) { buf[strcspn(buf, "\n")] = 0; lineno++; #ifdef LOG log(buf); #endif bad = 0; pos = 0; // execute commands if (filter_mode == PIPE) { pos = -1; switch (buf[0]) { case '%': { verbose_mode = terse_mode = 0; break; } case '!': { terse_mode = 1; break; } case '`': { verbose_mode = 1; break; } case '+': { delete parser; parser = get_parser(FMT_LATEX, NULL, pMS[0]); parser->set_url_checking(checkurl); break; } case '-': { delete parser; parser = get_parser(format, NULL, pMS[0]); break; } case '@': { putdic(buf + 1, pMS[d]); break; } case '*': { std::string word(buf + 1); dicwords.push_back(word); putdic(word, pMS[d]); break; } case '#': { std::string sbuf; if (HOME) { sbuf.append(HOME); } else { fprintf(stderr, "%s", gettext("error - missing HOME variable\n")); continue; } #ifndef WIN32 sbuf.append("/"); #endif size_t offset = sbuf.size(); if (!privdicname) { sbuf.append(DICBASENAME); sbuf.append(basename(dicname, DIRSEPCH)); } else { sbuf.append(privdicname); } if (save_privdic(sbuf.substr(offset), sbuf, dicwords)) { dicwords.clear(); } break; } case '^': { pos = 1; break; } default: { pos = 0; break; } } // end switch } // end filter_mode == PIPE if (pos >= 0) { parser->put_line(buf + pos); std::string token; while (parser->next_token(token)) { token = parser->get_word(token); mystrrep(token, ENTITY_APOS, "'"); switch (filter_mode) { case BADWORD: { int info; if (!check(pMS, &d, token, &info, NULL)) { bad = 1; if (!printgood) fprintf(stdout, "%s%s\n", filename_prefix.c_str(), token.c_str()); } else { if (printgood) fprintf(stdout, "%s%s\n", filename_prefix.c_str(), token.c_str()); } continue; } case WORDFILTER: { int info; if (!check(pMS, &d, parser->get_word(token), &info, NULL)) { if (!printgood) fprintf(stdout, "%s\n", buf); } else { if (printgood) fprintf(stdout, "%s\n", buf); } goto nextline; } case BADLINE: { int info; if (!check(pMS, &d, parser->get_word(token), &info, NULL)) { bad = 1; } continue; } case AUTO0: case AUTO: case AUTO2: case AUTO3: { FILE* f = (filter_mode == AUTO) ? stderr : stdout; int info; if (!check(pMS, &d, parser->get_word(token), &info, NULL)) { bad = 1; std::vector wlst = pMS[d]->suggest(chenc(parser->get_word(token), io_enc, dic_enc[d])); if (!wlst.empty()) { parser->change_token(chenc(wlst[0], dic_enc[d], io_enc).c_str()); if (filter_mode == AUTO3) { fprintf(f, "%s:%d: Locate: %s | Try: %s\n", currentfilename, lineno, token.c_str(), chenc(wlst[0], dic_enc[d], io_enc).c_str()); } else if (filter_mode == AUTO2) { fprintf(f, "%ds/%s/%s/g; # %s\n", lineno, token.c_str(), chenc(wlst[0], dic_enc[d], io_enc).c_str(), buf); } else { fprintf(f, gettext("Line %d: %s -> "), lineno, chenc(token, io_enc, ui_enc).c_str()); fprintf(f, "%s\n", chenc(wlst[0], dic_enc[d], ui_enc).c_str()); } } } continue; } case STEM: { std::vector result = pMS[d]->stem(chenc(token, io_enc, dic_enc[d])); for (size_t i = 0; i < result.size(); ++i) { fprintf(stdout, "%s %s\n", token.c_str(), chenc(result[i], dic_enc[d], ui_enc).c_str()); } if (result.empty() && !token.empty() && token[token.size() - 1] == '.') { token.resize(token.size() - 1); result = pMS[d]->stem(token); for (size_t i = 0; i < result.size(); ++i) { fprintf(stdout, "%s %s\n", token.c_str(), chenc(result[i], dic_enc[d], ui_enc).c_str()); } } if (result.empty()) fprintf(stdout, "%s\n", chenc(token, dic_enc[d], ui_enc).c_str()); fprintf(stdout, "\n"); continue; } case SUFFIX: { std::vector wlst = pMS[d]->suffix_suggest(token); for (size_t j = 0; j < wlst.size(); ++j) { fprintf(stdout, "Suffix Suggestions are %s \n", chenc(wlst[j], dic_enc[d], io_enc).c_str()); } fflush(stdout); continue; } case ANALYZE: { std::vector result = pMS[d]->analyze(chenc(token, io_enc, dic_enc[d])); for (size_t i = 0; i < result.size(); ++i) { fprintf(stdout, "%s %s\n", token.c_str(), chenc(result[i], dic_enc[d], ui_enc).c_str()); } if (result.empty() && !token.empty() && token[token.size() - 1] == '.') { token.resize(token.size() - 1); result = pMS[d]->analyze(token); for (size_t i = 0; i < result.size(); ++i) { fprintf(stdout, "%s %s\n", token.c_str(), chenc(result[i], dic_enc[d], ui_enc).c_str()); } } if (result.empty()) fprintf(stdout, "%s\n", chenc(token, dic_enc[d], ui_enc).c_str()); fprintf(stdout, "\n"); continue; } case PIPE: { int info; std::string root; if (check(pMS, &d, parser->get_word(token), &info, &root)) { if (!terse_mode) { if (verbose_mode) fprintf(stdout, "* %s\n", token.c_str()); else fprintf(stdout, "*\n"); } fflush(stdout); } else { int byte_offset = parser->get_tokenpos() + pos; int char_offset = 0; if (strcmp(io_enc, "UTF-8") == 0) { for (int i = 0; i < byte_offset; i++) { if ((buf[i] & 0xc0) != 0x80) char_offset++; } } else { char_offset = byte_offset; } std::vector wlst = pMS[d]->suggest(chenc(token, io_enc, dic_enc[d])); if (wlst.empty()) { fprintf(stdout, "# %s %d", token.c_str(), char_offset); } else { fprintf(stdout, "& %s %u %d: ", token.c_str(), static_cast(wlst.size()), char_offset); fprintf(stdout, "%s", chenc(wlst[0], dic_enc[d], io_enc).c_str()); } for (size_t j = 1; j < wlst.size(); ++j) { fprintf(stdout, ", %s", chenc(wlst[j], dic_enc[d], io_enc).c_str()); } fprintf(stdout, "\n"); fflush(stdout); } continue; } case NORMAL: { int info; std::string root; if (check(pMS, &d, token, &info, &root)) { if (info & SPELL_COMPOUND) { fprintf(stdout, "-\n"); } else if (!root.empty()) { fprintf(stdout, "+ %s\n", chenc(root, dic_enc[d], ui_enc).c_str()); } else { fprintf(stdout, "*\n"); } fflush(stdout); } else { int byte_offset = parser->get_tokenpos() + pos; int char_offset = 0; if (strcmp(io_enc, "UTF-8") == 0) { for (int i = 0; i < byte_offset; i++) { if ((buf[i] & 0xc0) != 0x80) char_offset++; } } else { char_offset = byte_offset; } std::vector wlst = pMS[d]->suggest(chenc(token, io_enc, dic_enc[d])); if (wlst.empty()) { fprintf(stdout, "# %s %d", chenc(token, io_enc, ui_enc).c_str(), char_offset); } else { fprintf(stdout, "& %s %u %d: ", chenc(token, io_enc, ui_enc).c_str(), static_cast(wlst.size()), char_offset); fprintf(stdout, "%s", chenc(wlst[0], dic_enc[d], ui_enc).c_str()); } for (size_t j = 1; j < wlst.size(); ++j) { fprintf(stdout, ", %s", chenc(wlst[j], dic_enc[d], ui_enc).c_str()); } fprintf(stdout, "\n"); fflush(stdout); } } } } switch (filter_mode) { case AUTO: { std::string pLine = parser->get_line(); fprintf(stdout, "%s\n", pLine.c_str()); break; } case BADLINE: { if (((printgood) && (!bad)) || (!printgood && (bad))) fprintf(stdout, "%s\n", buf); break; } case PIPE: case NORMAL: { fprintf(stdout, "\n"); fflush(stdout); break; } } } // if } // while if (bZippedOdf) { fclose(fileid); std::ostringstream sbuf; sbuf << odftmpdir << "/content.xml"; if (remove(sbuf.str().c_str()) != 0) { perror("temp file delete failed"); } sbuf.str(""); sbuf << "rmdir " << odftmpdir; if (system(sbuf.str().c_str()) != 0) { perror("temp dir delete failed"); } } delete parser; } // pipe_interface #ifdef HAVE_READLINE #ifdef HAVE_CURSES_H static const char* rltext; // set base text of input line static int set_rltext() { if (rltext) { rl_insert_text(rltext); rltext = NULL; rl_startup_hook = (rl_hook_func_t*)NULL; } return 0; } #endif // Readline escape static int rl_escape(int count, int key) { rl_delete_text(0, rl_end); rl_done = 1; return 0; } #endif #ifdef HAVE_CURSES_H int expand_tab(std::string& dest, const std::string& in_src) { dest.clear(); const char *src = in_src.c_str(); int u8 = ((ui_enc != NULL) && (strcmp(ui_enc, "UTF-8") == 0)) ? 1 : 0; int chpos = 0; for (int j = 0; (src[j] != '\0') && (src[j] != '\r'); j++) { if (src[j] == '\t') { int end = 8 - (chpos % 8); for (int k = 0; k < end; k++) { dest.push_back(' '); chpos++; } } else { dest.push_back(src[j]); if (!u8 || (src[j] & 0xc0) != 0x80) chpos++; } } return chpos; } // UTF-8-aware version of strncpy (but output is always null terminated) // What we should deal in is cursor position cells in a terminal emulator, // i.e. the number of visual columns occupied like wcwidth/wcswidth does // What we're really current doing is to deal in the number of characters, // like mbstowcs which isn't quite correct, but close enough for western // text in UTF-8 void strncpyu8(std::string& dest, const std::string& in_src, int begin, int n) { dest.clear(); const char *src = in_src.c_str(); if (n) { int u8 = ((ui_enc != NULL) && (strcmp(ui_enc, "UTF-8") == 0)) ? 1 : 0; for (int i = 0; i < begin + n;) { if (!*src) break; // source is at it's end if (!u8 || (*src & 0xc0) != 0x80) i++; // new character if (i > begin) { // copy char (w/ utf-8 bytes) dest.push_back(*src++); while (u8 && (*src & 0xc0) == 0x80) dest.push_back(*src++); } else { // skip char (w/ utf-8 bytes) ++src; while (u8 && (*src & 0xc0) == 0x80) ++src; } } } } // See strncpyu8 for gotchas int strlenu8(const std::string& in_src) { const char *src = in_src.c_str(); int u8 = ((ui_enc != NULL) && (strcmp(ui_enc, "UTF-8") == 0)) ? 1 : 0; int i = 0; while (*src) { if (!u8 || (*src & 0xc0) != 0x80) i++; ++src; } return i; } void dialogscreen(TextParser* parser, std::string& token, char* filename, int forbidden, std::vector& wlst) { int x, y; getmaxyx(stdscr, y, x); clear(); if (forbidden & SPELL_FORBIDDEN) printw(gettext("FORBIDDEN!")); else if (forbidden & SPELL_WARN) printw(gettext("Spelling mistake?")); printw(gettext("\t%s\t\tFile: %s\n\n"), chenc(token, io_enc, ui_enc).c_str(), filename); // handle long lines and tabulators std::string lines[MAXPREVLINE]; std::string prevLine; for (int i = 0; i < MAXPREVLINE; i++) { prevLine = parser->get_prevline(i); expand_tab(lines[i], chenc(prevLine, io_enc, ui_enc)); } prevLine = parser->get_prevline(0); std::string line = prevLine.substr(0, parser->get_tokenpos()); std::string line2; int tokenbeg = expand_tab(line2, chenc(line, io_enc, ui_enc)); prevLine = parser->get_prevline(0); line = prevLine.substr(0, parser->get_tokenpos() + token.size()); int tokenend = expand_tab(line2, chenc(line, io_enc, ui_enc)); int rowindex = (tokenend - 1) / x; int beginrow = rowindex - tokenbeg / x; if (beginrow >= MAXPREVLINE) beginrow = MAXPREVLINE - 1; int ri = rowindex; int prevline = 0; for (int i = 0; i < MAXPREVLINE; i++) { strncpyu8(line, lines[prevline], x * rowindex, x); mvprintw(MAXPREVLINE + 1 - i, 0, "%s", line.c_str()); const bool finished = i == MAXPREVLINE - 1; if (!finished) { rowindex--; if (rowindex == -1) { prevline++; rowindex = strlenu8(lines[prevline]) / x; } } } strncpyu8(line, lines[0], x * (ri - beginrow), tokenbeg % x); mvprintw(MAXPREVLINE + 1 - beginrow, 0, "%s", line.c_str()); attron(A_REVERSE); printw("%s", chenc(token, io_enc, ui_enc).c_str()); attroff(A_REVERSE); mvprintw(MAXPREVLINE + 2, 0, "\n"); for (size_t i = 0; i < wlst.size(); ++i) { if ((wlst.size() > 10) && (i < 10)) { printw(" 0%zu: %s\n", i, chenc(wlst[i], io_enc, ui_enc).c_str()); } else { printw(" %zu: %s\n", i, chenc(wlst[i], io_enc, ui_enc).c_str()); } } /* TRANSLATORS: the capital letters are shortcuts, mark one letter similarly in your translation and translate the standalone letter accordingly later */ mvprintw(y - 3, 0, "%s\n", gettext("\n[SPACE] R)epl A)ccept I)nsert U)ncap " "S)tem Q)uit e(X)it or ? for help\n")); } std::string lower_first_char(const std::string& token, const char* ioenc, int langnum) { std::string utf8str = chenc(token, ioenc, "UTF-8"); std::vector u; u8_u16(u, utf8str); if (!u.empty()) { unsigned short idx = (u[0].h << 8) + u[0].l; idx = unicodetolower(idx, langnum); u[0].h = (unsigned char)(idx >> 8); u[0].l = (unsigned char)(idx & 0x00FF); } std::string scratch; u16_u8(scratch, u); return chenc(scratch, "UTF-8", ioenc); } // for terminal interface int dialog(TextParser* parser, Hunspell* pMS, std::string& token, char* filename, std::vector& wlst, int forbidden) { std::vector dicwords; int c; dialogscreen(parser, token, filename, forbidden, wlst); char firstletter = '\0'; while ((c = getch())) { switch (c) { case '0': case '1': if ((firstletter == '\0') && (wlst.size() > 10)) { firstletter = c; break; } case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': modified = 1; if (firstletter == '1') { c += 10; } c -= '0'; if (c >= static_cast(wlst.size())) break; if (checkapos) { std::string sbuf(wlst[c]); mystrrep(sbuf, "'", UTF8_APOS); parser->change_token(sbuf.c_str()); } else { parser->change_token(wlst[c].c_str()); } return 0; case ' ': return 0; case '?': clear(); printw(gettext( "Whenever a word is found that is not in the dictionary\n" "it is printed on the first line of the screen. If the " "dictionary\n" "contains any similar words, they are listed with a number\n" "next to each one. You have the option of replacing the word\n" "completely, or choosing one of the suggested words.\n")); printw(gettext("\nCommands are:\n\n")); printw(gettext("R Replace the misspelled word completely.\n")); printw(gettext("Space Accept the word this time only.\n")); printw( gettext("A Accept the word for the rest of this session.\n")); printw(gettext( "I Accept the word, and put it in your private dictionary.\n")); printw(gettext( "U Accept and add lowercase version to private dictionary.\n")); printw( gettext("S\tAsk a stem and a model word and store them in the " "private dictionary.\n" "\tThe stem will be accepted also with the affixes of the " "model word.\n")); printw(gettext("0-n Replace with one of the suggested words.\n")); printw(gettext( "X Write the rest of this file, ignoring misspellings, and start " "next file.\n")); printw( gettext("Q Quit immediately. Asks for confirmation. Leaves file " "unchanged.\n")); printw(gettext("^Z Suspend program. Restart with fg command.\n")); printw(gettext("? Show this help screen.\n")); printw(gettext("\n-- Type space to continue -- \n")); while (getch() != ' ') ; // fall-through case 12: { dialogscreen(parser, token, filename, forbidden, wlst); break; } default: { /* TRANSLATORS: translate this letter according to the shortcut letter used previously in the translation of "R)epl" before */ if (c == (gettext("r"))[0]) { modified = 1; #ifdef HAVE_READLINE endwin(); rltext = ""; if (rltext && *rltext) rl_startup_hook = set_rltext; #endif char* temp = readline(gettext("Replace with: ")); #ifdef HAVE_READLINE initscr(); cbreak(); #endif if ((!temp) || (temp[0] == '\0')) { free(temp); dialogscreen(parser, token, filename, forbidden, wlst); break; } std::string i(temp); free(temp); if (checkapos) { mystrrep(i, "'", UTF8_APOS); } parser->change_token(i.c_str()); return 2; // replace } /* TRANSLATORS: translate these letters according to the shortcut letter used previously in the translation of "U)ncap" and I)nsert before */ int u_key = gettext("u")[0]; int i_key = gettext("i")[0]; if (c == u_key || c == i_key) { std::string word = (c == i_key) ? token : lower_first_char(token, io_enc, pMS->get_langnum()); dicwords.push_back(word); std::string sbuf; // save if (HOME) { sbuf.append(HOME); } else { fprintf(stderr, gettext("error - missing HOME variable\n")); break; } #ifndef WIN32 sbuf.append("/"); #endif size_t offset = sbuf.size(); if (!privdicname) { sbuf.append(DICBASENAME); sbuf.append(basename(dicname, DIRSEPCH)); } else { sbuf.append(privdicname); } if (save_privdic(sbuf.substr(offset), sbuf, dicwords)) { dicwords.clear(); } else { fprintf(stderr, gettext("Cannot update personal dictionary.")); break; } } // no break /* TRANSLATORS: translate this letter according to the shortcut letter used previously in the translation of "U)ncap" and I)nsert before */ if ((c == (gettext("u"))[0]) || (c == (gettext("i"))[0]) || (c == (gettext("a"))[0])) { modified = 1; putdic(token, pMS); return 0; } /* TRANSLATORS: translate this letter according to the shortcut letter used previously in the translation of "S)tem" before */ if (c == (gettext("s"))[0]) { modified = 1; std::string w(token); size_t n_last_of = w.find_last_of('-'); if (n_last_of != std::string::npos) { w.resize(n_last_of); } #ifdef HAVE_READLINE endwin(); rltext = w.c_str(); if (rltext && *rltext) rl_startup_hook = set_rltext; #endif char* temp = readline(gettext("New word (stem): ")); if ((!temp) || (temp[0] == '\0')) { free(temp); #ifdef HAVE_READLINE initscr(); cbreak(); #endif dialogscreen(parser, token, filename, forbidden, wlst); break; } w.assign(temp); free(temp); #ifdef HAVE_READLINE initscr(); cbreak(); #endif dialogscreen(parser, token, filename, forbidden, wlst); refresh(); #ifdef HAVE_READLINE endwin(); rltext = ""; if (rltext && *rltext) rl_startup_hook = set_rltext; #endif temp = readline(gettext("Model word (a similar dictionary word): ")); #ifdef HAVE_READLINE initscr(); cbreak(); #endif if ((!temp) || (temp[0] == '\0')) { free(temp); dialogscreen(parser, token, filename, forbidden, wlst); break; } std::string w2(temp); free(temp); std::string w3; w3.append(w); w3.append("/"); w3.append(w2); if (!putdic(w3, pMS)) { dicwords.push_back(w3); w3.clear(); w3.append(w); w3.append("-/"); w3.append(w2); w3.append("-"); if (putdic(w3, pMS)) { dicwords.push_back(w3); } // save std::string sbuf; if (HOME) { sbuf.append(HOME); } else { fprintf(stderr, gettext("error - missing HOME variable\n")); continue; } #ifndef WIN32 sbuf.append("/"); #endif size_t offset = sbuf.size(); if (!privdicname) { sbuf.append(DICBASENAME); sbuf.append(basename(dicname, DIRSEPCH)); } else { sbuf.append(privdicname); } if (save_privdic(sbuf.substr(offset), sbuf, dicwords)) { dicwords.clear(); } else { fprintf(stderr, gettext("Cannot update personal dictionary.")); break; } } else { dialogscreen(parser, token, filename, forbidden, wlst); printw(gettext( "Model word must be in the dictionary. Press any key!")); getch(); dialogscreen(parser, token, filename, forbidden, wlst); break; } return 0; } /* TRANSLATORS: translate this letter according to the shortcut letter used previously in the translation of "e(X)it" before */ if (c == (gettext("x"))[0]) { return 1; } /* TRANSLATORS: translate this letter according to the shortcut letter used previously in the translation of "Q)uit" before */ if (c == (gettext("q"))[0]) { if (modified) { printw( gettext("Are you sure you want to throw away your changes? ")); /* TRANSLATORS: translate this letter according to the shortcut * letter y)es */ if (getch() == (gettext("y"))[0]) { return -1; } dialogscreen(parser, token, filename, forbidden, wlst); break; } else { return -1; } } } } } return 0; } int interactive_line(TextParser* parser, Hunspell** pMS, char* filename, FILE* tempfile) { int dialogexit = 0; int info = 0; int d = 0; std::string token; while (parser->next_token(token)) { if (!check(pMS, &d, parser->get_word(token), &info, NULL)) { std::vector wlst; dialogscreen(parser, token, filename, info, wlst); // preview refresh(); std::string dicbuf = chenc(parser->get_word(token), io_enc, dic_enc[d]); wlst = pMS[d]->suggest(mystrrep(dicbuf, ENTITY_APOS, "'").c_str()); if (wlst.empty()) { dialogexit = dialog(parser, pMS[d], token, filename, wlst, info); } else { for (size_t j = 0; j < wlst.size(); ++j) { wlst[j] = chenc(wlst[j], dic_enc[d], io_enc); } dialogexit = dialog(parser, pMS[d], token, filename, wlst, info); } } if ((dialogexit == -1) || (dialogexit == 1)) goto ki2; } ki2: fprintf(tempfile, "%s", parser->get_line().c_str()); return dialogexit; } void interactive_interface(Hunspell** pMS, char* filename, int format) { char buf[MAXLNLEN]; char* odffilename = NULL; char* odftmpdir = NULL; // external zip works only with temporary directories // (option -j) FILE* text = fopen(filename, "r"); if (!text) { perror(gettext("Can't open inputfile")); endwin(); exit(1); } int dialogexit; int check = 1; const char* extension = basename(filename, '.'); TextParser* parser = get_parser(format, extension, pMS[0]); char tmpdirtemplate[] = "/tmp/hunspellXXXXXX"; bool bZippedOdf = is_zipped_odf(parser, extension); // access content.xml of ODF if (bZippedOdf) { odftmpdir = mymkdtemp(tmpdirtemplate); if (!odftmpdir) { perror(gettext("Can't create tmp dir")); endwin(); exit(1); } fclose(text); // break 1-line XML of zipped ODT documents at and // to avoid tokenization problems (fgets could stop within an XML tag) std::ostringstream sbuf; sbuf << "unzip -p \"" << filename << "\" content.xml | sed " "\"s/\\(<\\/text:p>\\|<\\/style:style>\\)\\(.\\)/\\1\\n\\2/g\" " ">" << odftmpdir << "/content.xml"; if (!secure_filename(filename) || system(sbuf.str().c_str()) != 0) { if (secure_filename(filename)) perror(gettext("Can't open inputfile")); else fprintf(stderr, gettext("Can't open %s.\n"), filename); endwin(); (void)system((std::string("rmdir ") + odftmpdir).c_str()); exit(1); } odffilename = filename; std::string file(odftmpdir); file.append("/content.xml"); filename = mystrdup(file.c_str()); text = fopen(filename, "r"); if (!text) { perror(gettext("Can't open inputfile")); endwin(); (void)system((std::string("rmdir ") + odftmpdir).c_str()); exit(1); } } FILE* tempfile = tmpfile(); if (!tempfile) { perror(gettext("Can't create tempfile")); delete parser; fclose(text); endwin(); exit(1); } while (fgets(buf, MAXLNLEN, text)) { if (check) { parser->put_line(buf); dialogexit = interactive_line( parser, pMS, odffilename ? odffilename : filename, tempfile); switch (dialogexit) { case -1: { clear(); refresh(); fclose(tempfile); // automatically deleted when closed if (bZippedOdf) { if (remove(filename) != 0) { perror("temp file delete failed"); } std::ostringstream sbuf; sbuf << "rmdir " << odftmpdir; if (system(sbuf.str().c_str()) != 0) { perror("temp dir delete failed"); } free(filename); } endwin(); exit(0); } case 1: { check = 0; } } } else { fprintf(tempfile, "%s", buf); } } fclose(text); if (modified) { rewind(tempfile); text = fopen(filename, "wb"); if (text == NULL) perror(gettext("Can't open outputfile")); else { size_t n; while ((n = fread(buf, 1, MAXLNLEN, tempfile)) > 0) { if (fwrite(buf, 1, n, text) != n) perror("write failed"); } fclose(text); if (bZippedOdf && odffilename) { std::ostringstream sbuf; sbuf << "zip -j '" << odffilename << "' " << filename; if (system(sbuf.str().c_str()) != 0) perror("write failed"); } } } if (bZippedOdf) { if (remove(filename) != 0) { perror("temp file delete failed"); } std::ostringstream sbuf; sbuf << "rmdir " << odftmpdir; if (system(sbuf.str().c_str()) != 0) { perror("temp dir delete failed"); } free(filename); } delete parser; fclose(tempfile); // automatically deleted when closed } #endif char* exist2(char* dir, int len, const char* name, const char* ext) { std::string buf; const char* sep = (len == 0) ? "" : DIRSEP; buf.assign(dir, len); buf.append(sep); buf.append(name); buf.append(ext); if (exist(buf.c_str())) return mystrdup(buf.c_str()); buf.append(HZIP_EXTENSION); if (exist(buf.c_str())) { buf.erase(buf.size() - strlen(HZIP_EXTENSION)); return mystrdup(buf.c_str()); } return NULL; } #if !defined(WIN32) || defined(__MINGW32__) int listdicpath(char* dir, int len) { std::string buf; const char* sep = (len == 0) ? "" : DIRSEP; buf.assign(dir, len); buf.append(sep); DIR* d = opendir(buf.c_str()); if (!d) return 0; struct dirent* de; while ((de = readdir(d))) { len = strlen(de->d_name); if ((len > 4 && strcmp(de->d_name + len - 4, ".dic") == 0) || (len > 7 && strcmp(de->d_name + len - 7, ".dic.hz") == 0)) { char* s = mystrdup(de->d_name); s[len - ((s[len - 1] == 'z') ? 7 : 4)] = '\0'; fprintf(stderr, "%s%s\n", buf.c_str(), s); free(s); } } closedir(d); return 1; } #endif // search existing path for file "name + ext" char* search(char* begin, char* name, const char* ext) { char* end = begin; while (1) { while (!((*end == *PATHSEP) || (*end == '\0'))) end++; char* res = NULL; if (name) { res = exist2(begin, int(end - begin), name, ext); } else { #if !defined(WIN32) || defined(__MINGW32__) listdicpath(begin, end - begin); #endif } if ((*end == '\0') || res) return res; end++; begin = end; } } int main(int argc, char** argv) { std::string buf; Hunspell* pMS[DMAX]; char* key = NULL; int arg_files = -1; // first filename argumentum position in argv int format = FMT_TEXT; int argstate = 0; #ifdef HAVE_LOCALE_H setlocale(LC_ALL, ""); #endif #ifdef HAVE_LANGINFO_H ui_enc = nl_langinfo(CODESET); #endif textdomain("hunspell"); //for gettext #ifdef HAVE_READLINE rl_set_key("\x1b\x1b", rl_escape, rl_get_keymap()); rl_bind_key('\t', rl_insert); #endif #ifdef LOG log("START"); #endif for (int i = 1; i < argc; i++) { #ifdef LOG log(argv[i]); #endif if (argstate == 1) { if (dicname) free(dicname); dicname = mystrdup(argv[i]); argstate = 0; } else if (argstate == 2) { if (privdicname) free(privdicname); privdicname = mystrdup(argv[i]); argstate = 0; } else if (argstate == 3) { io_enc = argv[i]; argstate = 0; } else if (argstate == 4) { key = argv[i]; argstate = 0; } else if (strcmp(argv[i], "-d") == 0) argstate = 1; else if (strcmp(argv[i], "-p") == 0) argstate = 2; else if (strcmp(argv[i], "-i") == 0) argstate = 3; else if (strcmp(argv[i], "-P") == 0) argstate = 4; else if ((strcmp(argv[i], "-h") == 0) || (strcmp(argv[i], "--help") == 0)) { fprintf(stderr, "%s", gettext("Usage: hunspell [OPTION]... [FILE]...\n")); fprintf(stderr, "%s", gettext("Check spelling of each FILE. Without FILE, " "check standard input.\n\n")); fprintf(stderr, "%s", gettext(" -1\t\tcheck only first field in lines " "(delimiter = tabulator)\n")); fprintf(stderr, "%s", gettext(" -a\t\tIspell's pipe interface\n")); fprintf(stderr, "%s", gettext(" --check-url\tcheck URLs, e-mail addresses and " "directory paths\n")); fprintf( stderr, "%s", gettext( " --check-apostrophe\tcheck Unicode typographic apostrophe\n")); fprintf(stderr, "%s", gettext(" -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n")); fprintf(stderr, "%s", gettext(" -D\t\tshow available dictionaries\n")); fprintf(stderr, "%s", gettext(" -G\t\tprint only correct words or lines\n")); fprintf(stderr, "%s", gettext(" -h, --help\tdisplay this help and exit\n")); fprintf(stderr, "%s", gettext(" -H\t\tHTML input file format\n")); fprintf(stderr, "%s", gettext(" -i enc\tinput encoding\n")); fprintf(stderr, "%s", gettext(" -l\t\tprint misspelled words\n")); fprintf(stderr, "%s", gettext(" -L\t\tprint lines with misspelled words\n")); fprintf(stderr, "%s", gettext(" -m \t\tanalyze the words of the input text\n")); fprintf(stderr, "%s", gettext(" -n\t\tnroff/troff input file format\n")); fprintf( stderr, "%s", gettext( " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n")); fprintf(stderr, "%s", gettext(" -p dict\tset dict custom dictionary\n")); fprintf(stderr, "%s", gettext(" -r\t\twarn of the potential mistakes (rare words)\n")); fprintf( stderr, "%s", gettext(" -P password\tset password for encrypted dictionaries\n")); fprintf(stderr, "%s", gettext(" -s \t\tstem the words of the input text\n")); fprintf(stderr, "%s", gettext(" -S \t\tsuffix words of the input text\n")); fprintf(stderr, "%s", gettext(" -t\t\tTeX/LaTeX input file format\n")); fprintf(stderr, "%s", gettext(" -v, --version\tprint version number\n")); fprintf(stderr, "%s", gettext(" -vv\t\tprint Ispell compatible version number\n")); fprintf(stderr, "%s", gettext(" -w\t\tprint misspelled words (= lines) from " "one word/line input.\n")); fprintf(stderr, "%s", gettext(" -X\t\tXML input file format\n\n")); fprintf( stderr, "%s", gettext( "Example: hunspell -d en_US file.txt # interactive spelling\n" " hunspell -i utf-8 file.txt # check UTF-8 encoded " "file\n" " hunspell -l *.odt # print misspelled words " "of ODF files\n\n" " # Quick fix of ODF documents by personal dictionary " "creation\n\n" " # 1 Make a reduced list from misspelled and unknown " "words:\n\n" " hunspell -l *.odt | sort | uniq >words\n\n" " # 2 Delete misspelled words of the file by a text " "editor.\n" " # 3 Use this personal dictionary to fix the deleted " "words:\n\n" " hunspell -p words *.odt\n\n")); fprintf(stderr, "%s", gettext("Bug reports: http://hunspell.github.io/\n")); exit(0); } else if ((strcmp(argv[i], "-vv") == 0) || (strcmp(argv[i], "-v") == 0) || (strcmp(argv[i], "--version") == 0)) { fprintf(stdout, "%s", gettext(HUNSPELL_PIPE_HEADING)); fprintf(stdout, "\n"); if (strcmp(argv[i], "-vv") != 0) { fprintf(stdout, "%s", gettext("\nCopyright (C) 2002-2022 L\303\241szl\303\263 " "N\303\251meth. License: MPL/GPL/LGPL.\n\n" "Based on OpenOffice.org's Myspell library.\n" "Myspell's copyright (C) Kevin Hendricks, 2001-2002, " "License: BSD.\n\n")); fprintf(stdout, "%s", gettext("This is free software; see the source for " "copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE,\n" "to the extent permitted by law.\n")); } exit(0); } else if ((strcmp(argv[i], "-a") == 0)) { filter_mode = PIPE; } else if ((strcmp(argv[i], "-m") == 0)) { /* if -a was used, don't override, i.e. keep ispell compatability ispell: Make possible root/affix combinations that aren't in the dictionary. hunspell: Analyze the words of the input text */ if (filter_mode != PIPE) filter_mode = ANALYZE; } else if ((strcmp(argv[i], "-s") == 0)) { /* if -a was used, don't override, i.e. keep ispell compatability ispell: Stop itself with a SIGTSTP signal after each line of input. hunspell: Stem the words of the input text */ if (filter_mode != PIPE) filter_mode = STEM; } else if ((strcmp(argv[i], "-S") == 0)) { if (filter_mode != PIPE) filter_mode = SUFFIX; } else if ((strcmp(argv[i], "-t") == 0)) { format = FMT_LATEX; } else if ((strcmp(argv[i], "-n") == 0)) { format = FMT_MAN; } else if ((strcmp(argv[i], "-H") == 0)) { format = FMT_HTML; } else if ((strcmp(argv[i], "-X") == 0)) { format = FMT_XML; } else if ((strcmp(argv[i], "-O") == 0)) { format = FMT_ODF; } else if ((strcmp(argv[i], "-l") == 0)) { filter_mode = BADWORD; } else if ((strcmp(argv[i], "-w") == 0)) { /* if -a was used, don't override, i.e. keep ispell compatability ispell: Specify additional characters that can be part of a word. hunspell: Print misspelled words (= lines) from one word/line input */ if (filter_mode != PIPE) filter_mode = WORDFILTER; } else if ((strcmp(argv[i], "-L") == 0)) { /* if -a was used, don't override, i.e. keep ispell compatability ispell: Number of lines of context to be shown at the bottom of the screen hunspell: Print lines with misspelled words */ if (filter_mode != PIPE) filter_mode = BADLINE; } else if ((strcmp(argv[i], "-u") == 0)) { /* if -a was used, don't override, i.e. keep ispell compatability ispell: None hunspell: Show typical misspellings */ if (filter_mode != PIPE) filter_mode = AUTO0; } else if ((strcmp(argv[i], "-U") == 0)) { /* if -a was used, don't override, i.e. keep ispell compatability ispell: None hunspell: Automatic correction of typical misspellings to stdout */ if (filter_mode != PIPE) filter_mode = AUTO; } else if ((strcmp(argv[i], "-u2") == 0)) { /* if -a was used, don't override, i.e. keep ispell compatability ispell: None hunspell: Print typical misspellings in sed format */ if (filter_mode != PIPE) filter_mode = AUTO2; } else if ((strcmp(argv[i], "-u3") == 0)) { /* if -a was used, don't override, i.e. keep ispell compatability ispell: None hunspell: Print typical misspellings in gcc error format */ if (filter_mode != PIPE) filter_mode = AUTO3; } else if ((strcmp(argv[i], "-G") == 0)) { printgood = 1; } else if ((strcmp(argv[i], "-1") == 0)) { format = FMT_FIRST; } else if ((strcmp(argv[i], "-D") == 0)) { showpath = 1; } else if ((strcmp(argv[i], "-r") == 0)) { warn = 1; } else if ((strcmp(argv[i], "--check-url") == 0)) { checkurl = 1; } else if ((strcmp(argv[i], "--check-apostrophe") == 0)) { checkapos = 1; } else if ((arg_files == -1) && ((argv[i][0] != '-') && (argv[i][0] != '\0'))) { arg_files = i; if (!exist(argv[i])) { // first check (before time-consuming dic. load) fprintf(stderr, gettext("Can't open %s.\n"), argv[i]); #ifdef HAVE_CURSES_H endwin(); #endif exit(1); } } } multiple_files = (arg_files > 0) && (argc - arg_files > 1); if (printgood && (filter_mode == NORMAL)) filter_mode = BADWORD; if (!dicname) { if (!(dicname = getenv("DICTIONARY"))) { /* * Search in order of LC_ALL, LC_MESSAGES & * LANG */ const char* tests[] = {"LC_ALL", "LC_MESSAGES", "LANG"}; for (size_t i = 0; i < sizeof(tests) / sizeof(const char*); ++i) { if ((dicname = getenv(tests[i])) && strcmp(dicname, "") != 0) { dicname = mystrdup(dicname); char* dot = strchr(dicname, '.'); if (dot) *dot = '\0'; char* at = strchr(dicname, '@'); if (at) *at = '\0'; break; } } if (dicname && ((strcmp(dicname, "C") == 0) || (strcmp(dicname, "POSIX") == 0))) { free(dicname); dicname = mystrdup("en_US"); } if (!dicname) { dicname = mystrdup(DEFAULTDICNAME); } } else { dicname = mystrdup(dicname); } } { std::string path_std_str = "."; path_std_str.append(PATHSEP); // <- check path in local directory path_std_str.append(PATHSEP); // <- check path in root directory if (getenv("DICPATH")) { path_std_str.append(getenv("DICPATH")).append(PATHSEP); } path_std_str.append(LIBDIR).append(PATHSEP); if (HOME) { const char * userooodir[] = USEROOODIR; for(size_t i = 0; i < sizeof(userooodir)/sizeof(userooodir[0]); ++i) { path_std_str += HOME; #ifndef _WIN32 path_std_str += DIRSEP; #endif path_std_str.append(userooodir[i]).append(PATHSEP); } path_std_str.append(OOODIR); } path = mystrdup(path_std_str.c_str()); } if (showpath) { fprintf(stderr, gettext("SEARCH PATH:\n%s\n"), path); fprintf( stderr, "%s", gettext( "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n")); search(path, NULL, NULL); } if (!privdicname) privdicname = mystrdup(getenv("WORDLIST")); char* dicplus = strchr(dicname, ','); if (dicplus) *dicplus = '\0'; char* aff = search(path, dicname, ".aff"); char* dic = search(path, dicname, ".dic"); if (aff && dic) { if (showpath) { fprintf(stderr, gettext("LOADED DICTIONARY:\n%s\n%s\n"), aff, dic); } pMS[0] = new Hunspell(aff, dic, key); dic_enc[0] = pMS[0]->get_dict_encoding().c_str(); dmax = 1; while (dicplus) { char* dicname2 = dicplus + 1; dicplus = strchr(dicname2, ','); if (dicplus) *dicplus = '\0'; free(aff); free(dic); aff = search(path, dicname2, ".aff"); dic = search(path, dicname2, ".dic"); if (aff && dic) { if (dmax < DMAX) { pMS[dmax] = new Hunspell(aff, dic, key); dic_enc[dmax] = pMS[dmax]->get_dict_encoding().c_str(); dmax++; if (showpath) { fprintf(stderr, gettext("LOADED DICTIONARY:\n%s\n%s\n"), aff, dic); } } else fprintf(stderr, gettext("error - %s exceeds dictionary limit.\n"), dicname2); } else if (dic) pMS[dmax - 1]->add_dic(dic); } } else { fprintf(stderr, gettext("Can't open affix or dictionary files for " "dictionary named \"%s\".\n"), dicname); exit(1); } if (showpath && -1 == arg_files) { exit(0); } /* open the private dictionaries */ if (HOME) { buf.assign(HOME); #ifndef WIN32 buf.append("/"); #endif buf.append(DICBASENAME); buf.append(basename(dicname, DIRSEPCH)); load_privdic(buf.c_str(), pMS[0]); buf.assign(HOME); #ifndef WIN32 buf.append("/"); #endif if (!privdicname) { buf.assign(DICBASENAME); buf.append(basename(dicname, DIRSEPCH)); load_privdic(buf.c_str(), pMS[0]); } else { buf.append(privdicname); load_privdic(buf.c_str(), pMS[0]); buf.assign(privdicname); load_privdic(buf.c_str(), pMS[0]); } } /* If in pipe mode, output pipe mode version string only when hunspell has properly been started. Emacs and may be others relies in the English version format. Do not gettextize. */ if (filter_mode == PIPE) { fprintf(stdout, HUNSPELL_PIPE_HEADING); fflush(stdout); } if (arg_files == -1) { pipe_interface(pMS, format, stdin, NULL); } else if (filter_mode != NORMAL) { for (int i = arg_files; i < argc; i++) { if (exist(argv[i])) { modified = 0; currentfilename = argv[i]; FILE* f = fopen(argv[i], "r"); pipe_interface(pMS, format, f, argv[i]); fclose(f); } else { fprintf(stderr, gettext("Can't open %s.\n"), argv[i]); exit(1); } } } else /*filter_mode == NORMAL*/ { #ifdef HAVE_CURSES_H initscr(); cbreak(); noecho(); nonl(); intrflush(stdscr, FALSE); for (int i = arg_files; i < argc; i++) { if (exist(argv[i])) { modified = 0; interactive_interface(pMS, argv[i], format); } else { fprintf(stderr, gettext("Can't open %s.\n"), argv[i]); endwin(); exit(1); } } clear(); refresh(); endwin(); #else fprintf( stderr, "%s", gettext( "Hunspell has been compiled without Ncurses user interface.\n")); #endif } if (dicname) free(dicname); if (privdicname) free(privdicname); if (path) free(path); if (aff) free(aff); if (dic) free(dic); for (int i = 0; i < dmax; i++) delete pMS[i]; return 0; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ hunspell-1.7.2/src/tools/hzip.cxx0000664000175000017500000002605714352145647013750 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /* hzip: file compression for sorted dictionaries with optional encryption, * algorithm: prefix-suffix encoding and 16-bit Huffman encoding */ #include #include #include #include #ifdef HAVE_UNISTD_H #include #endif /* HAVE_UNISTD_H */ #include #include #define CODELEN 65536 #define BUFSIZE 65536 #define EXTENSION ".hz" #define ESCAPE 31 #define MAGIC "hz0" #define MAGIC_ENCRYPTED "hz1" #define DESC \ "hzip - dictionary compression utility\n" \ "Usage: hzip [-h | -P password ] [file1 file2 ..]\n" \ " -P password encrypted compression\n" \ " -h display this help and exit\n" enum { code_LEAF, code_TERM, code_NODE }; struct item { unsigned short word; int count; char type; struct item* left; struct item* right; }; int fail(const char* err, const char* par) { fprintf(stderr, err, par); return 1; } void code2table(struct item* tree, char** table, char* code, int deep) { int first = 0; if (!code) { first = 1; code = (char*)malloc(CODELEN); } code[deep] = '1'; if (tree->left) code2table(tree->left, table, code, deep + 1); if (tree->type != code_NODE) { int i = tree->word; code[deep] = '\0'; if (tree->type == code_TERM) i = CODELEN; /* terminal code */ table[i] = (char*)malloc(deep + 1); strcpy(table[i], code); } code[deep] = '0'; if (tree->right) code2table(tree->right, table, code, deep + 1); if (first) free(code); } struct item* newitem(int c, struct item* l, struct item* r, int t) { struct item* ni = (struct item*)malloc(sizeof(struct item)); ni->type = t; ni->word = 0; ni->count = c; ni->left = l; ni->right = r; return ni; } /* return length of the freq array */ int get_freqdata(struct item*** dest, FILE* f, unsigned short* termword) { int freq[CODELEN]; int i, j, k, n; union { char c[2]; unsigned short word; } u; for (i = 0; i < CODELEN; i++) freq[i] = 0; while ((j = getc(f)) != -1 && (k = getc(f)) != -1) { u.c[0] = j; u.c[1] = k; freq[u.word]++; } if (j != -1) { u.c[0] = 1; u.c[1] = j; } else { u.c[0] = 0; u.c[1] = 0; } *dest = (struct item**)malloc((CODELEN + 1) * sizeof(struct item*)); if (!*dest) return -1; for (i = 0, n = 0; i < CODELEN; i++) if (freq[i]) { (*dest)[n] = newitem(freq[i], NULL, NULL, code_LEAF); (*dest)[n]->word = i; n++; } /* terminal sequence (also contains the last odd byte of the file) */ (*dest)[n] = newitem(1, NULL, NULL, code_TERM); *termword = u.word; return n + 1; } void get_codetable(struct item** l, int n, char** table) { int i; while (n > 1) { int min = 0; int mi2 = 1; for (i = 1; i < n; i++) { if (l[i]->count < l[min]->count) { mi2 = min; min = i; } else if (l[i]->count < l[mi2]->count) mi2 = i; } l[min] = newitem(l[min]->count + l[mi2]->count, l[min], l[mi2], code_NODE); for (i = mi2 + 1; i < n; i++) l[i - 1] = l[i]; n--; } code2table(l[0], table, NULL, 0); } int write_bits(FILE* f, char* bitbuf, int* bits, char* code) { while (*code) { int b = (*bits) % 8; if (!b) bitbuf[(*bits) / 8] = ((*code) - '0') << 7; else bitbuf[(*bits) / 8] |= (((*code) - '0') << (7 - b)); (*bits)++; code++; if (*bits == BUFSIZE * 8) { if (BUFSIZE != fwrite(bitbuf, 1, BUFSIZE, f)) return 1; *bits = 0; } } return 0; } int encode_file(char** table, int n, FILE* f, FILE* f2, unsigned short tw, char* key) { char bitbuf[BUFSIZE]; int i, bits = 0; unsigned char cl, ch; int cx[2]; union { char c[2]; unsigned short word; } u; char* enc = key; /* header and codes */ fprintf(f2, "%s", (key ? MAGIC_ENCRYPTED : MAGIC)); /* 3-byte HEADER */ cl = (unsigned char)(n & 0x00ff); ch = (unsigned char)(n >> 8); if (key) { unsigned char cs; for (cs = 0; *enc; enc++) cs ^= *enc; fprintf(f2, "%c", cs); /* 1-byte check sum */ enc = key; ch ^= *enc; if ((*(++enc)) == '\0') enc = key; cl ^= *enc; } fprintf(f2, "%c%c", ch, cl); /* upper and lower byte of record count */ for (i = 0; i < BUFSIZE; i++) bitbuf[i] = '\0'; for (i = 0; i < CODELEN + 1; i++) if (table[i]) { size_t nmemb; u.word = (unsigned short)i; if (i == CODELEN) u.word = tw; if (key) { if (*(++enc) == '\0') enc = key; u.c[0] ^= *enc; if (*(++enc) == '\0') enc = key; u.c[1] ^= *enc; } fprintf(f2, "%c%c", u.c[0], u.c[1]); /* 2-character code id */ bits = 0; if (write_bits(f2, bitbuf, &bits, table[i]) != 0) return 1; if (key) { if (*(++enc) == '\0') enc = key; fprintf(f2, "%c", ((unsigned char)bits) ^ *enc); for (cl = 0; cl <= bits / 8; cl++) { if (*(++enc) == '\0') enc = key; bitbuf[cl] ^= *enc; } } else fprintf(f2, "%c", (unsigned char)bits); /* 1-byte code length */ nmemb = bits / 8 + 1; if (fwrite(bitbuf, 1, bits / 8 + 1, f2) != nmemb) /* x-byte code */ return 1; } /* file encoding */ bits = 0; while ((cx[0] = getc(f)) != -1 && (cx[1] = getc(f)) != -1) { u.c[0] = cx[0]; u.c[1] = cx[1]; if (write_bits(f2, bitbuf, &bits, table[u.word]) != 0) return 1; } /* terminal suffixes */ if (write_bits(f2, bitbuf, &bits, table[CODELEN]) != 0) return 1; if (bits > 0) { size_t nmemb = bits / 8 + 1; if (fwrite(bitbuf, 1, nmemb, f2) != nmemb) return 1; } return 0; } int prefixcompress(FILE* f, FILE* tempfile) { char buf[BUFSIZE]; char buf2[BUFSIZE * 2]; char prev[BUFSIZE]; int prevlen = 0; while (fgets(buf, BUFSIZE, f)) { int i, j, k, m, c = 0; int pfx = prevlen; char* p = buf2; m = j = 0; for (i = 0; buf[i]; i++) { if ((pfx > 0) && (buf[i] == prev[i])) { j++; } else pfx = 0; } if (i > 0 && buf[i - 1] == '\n') { if (j == i) j--; /* line duplicate */ if (j > 29) j = 29; c = j; if (c == '\t') c = 30; /* common suffix */ for (; (m < i - j - 1) && (m < 15) && (prevlen - m - 2 >= 0) && buf[i - m - 2] == prev[prevlen - m - 2]; m++) ; if (m == 1) m = 0; } else { j = 0; m = -1; } for (k = j; k < i - m - 1; k++, p++) { if (((unsigned char)buf[k]) < 47 && buf[k] != '\t' && buf[k] != ' ') { *p = ESCAPE; p++; } *p = buf[k]; } if (m > 0) { *p = m + 31; /* 33-46 */ p++; } if (i > 0 && buf[i - 1] == '\n') { size_t nmemb = p - buf2 + 1; *p = c; if (fwrite(buf2, 1, nmemb, tempfile) != nmemb) return 1; } else { size_t nmemb = p - buf2; if (fwrite(buf2, 1, nmemb, tempfile) != nmemb) return 1; } memcpy(prev, buf, i); prevlen = i; } return 0; } int hzip(const char* filename, char* key) { struct item** list; char* table[CODELEN + 1]; int n; unsigned short termword; FILE* f = fopen(filename, "r"); if (!f) return fail("hzip: %s: Permission denied\n", filename); char tmpfiletemplate[] = "/tmp/hunspellXXXXXX"; mode_t mask = umask(S_IXUSR | S_IRWXG | S_IRWXO); int tempfileno = mkstemp(tmpfiletemplate); umask(mask); if (tempfileno == -1) { fclose(f); return fail("hzip: cannot create temporary file\n", NULL); } FILE *tempfile = fdopen(tempfileno, "rw"); if (!tempfile) { close(tempfileno); unlink(tmpfiletemplate); fclose(f); return fail("hzip: cannot create temporary file\n", NULL); } std::string out(filename); out.append(EXTENSION); FILE* f2 = fopen(out.c_str(), "wb"); if (!f2) { fclose(tempfile); fclose(f); unlink(tmpfiletemplate); return fail("hzip: %s: Permission denied\n", out.c_str()); } for (n = 0; n < CODELEN; n++) table[n] = NULL; if (prefixcompress(f, tempfile) != 0) { fclose(f2); fclose(tempfile); fclose(f); unlink(tmpfiletemplate); return fail("hzip: cannot write file\n", NULL); } rewind(tempfile); n = get_freqdata(&list, tempfile, &termword); get_codetable(list, n, table); rewind(tempfile); n = encode_file(table, n, tempfile, f2, termword, key); free(list); fclose(f2); fclose(tempfile); fclose(f); unlink(tmpfiletemplate); if (n != 0) return fail("hzip: cannot write file\n", NULL); return n; } int main(int argc, char** argv) { int i, j = 0; char* key = NULL; for (i = 1; i < argc; i++) { if (*(argv[i]) == '-') { if (*(argv[i] + 1) == 'h') return fail(DESC, NULL); if (*(argv[i] + 1) == 'P') { if (i + 1 == argc) return fail("hzip: missing password\n", NULL); key = argv[i + 1]; i++; continue; } return fail("hzip: no such option: %s\n", argv[i]); } else if (hzip(argv[i], key) != 0) return 1; else j = 1; } if (j == 0) return fail("hzip: need a filename parameter\n", NULL); return 0; } hunspell-1.7.2/src/tools/example.cxx0000664000175000017500000000646114352145647014426 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include #include #include #include "../hunspell/hunspell.hxx" using namespace std; int main(int argc, char** argv) { /* first parse the command line options */ if (argc < 4) { fprintf(stderr, "example (now it works with more dictionary files):\n"); fprintf(stderr, "example affix_file dictionary_file(s) file_of_words_to_check\n"); exit(1); } /* open the words to check list */ std::ifstream wtclst(argv[argc - 1], std::ios_base::in); if (!wtclst.is_open()) { fprintf(stderr, "Error - could not open file of words to check\n"); exit(1); } Hunspell* pMS = new Hunspell(argv[1], argv[2]); // load extra dictionaries if (argc > 4) for (int k = 3; k < argc - 1; ++k) pMS->add_dic(argv[k]); std::string buf; while (std::getline(wtclst, buf)) { int dp = pMS->spell(buf); if (dp) { fprintf(stdout, "\"%s\" is okay\n", buf.c_str()); fprintf(stdout, "\n"); } else { fprintf(stdout, "\"%s\" is incorrect!\n", buf.c_str()); fprintf(stdout, " suggestions:\n"); std::vector wlst = pMS->suggest(buf.c_str()); for (size_t i = 0; i < wlst.size(); ++i) { fprintf(stdout, " ...\"%s\"\n", wlst[i].c_str()); } fprintf(stdout, "\n"); } // for the same of testing this code path // do an analysis here and throw away the results pMS->analyze(buf); } delete pMS; return 0; } hunspell-1.7.2/src/tools/munch.h0000644000175000017500000001047013422074107013510 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is Hunspell, based on MySpell. * * The Initial Developers of the Original Code are * Kevin Hendricks (MySpell) and Németh László (Hunspell). * Portions created by the Initial Developers are Copyright (C) 2002-2005 * the Initial Developers. All Rights Reserved. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /* munch header file */ #define MAX_LN_LEN 200 #define MAX_WD_LEN 200 #define MAX_PREFIXES 2048 #define MAX_SUFFIXES 2048 #define MAX_ROOTS 20 #define MAX_WORDS 5000 #define ROTATE_LEN 5 #define ROTATE(v, q) \ (v) = ((v) << (q)) | (((v) >> (32 - q)) & ((1 << (q)) - 1)); #define SET_SIZE 256 #define XPRODUCT (1 << 0) /* the affix table entry */ struct affent { char* appnd; char* strip; short appndl; short stripl; char achar; char xpflg; short numconds; char conds[SET_SIZE]; }; struct affixptr { struct affent* aep; int num; }; /* the prefix and suffix table */ int numpfx; /* Number of prefixes in table */ int numsfx; /* Number of suffixes in table */ /* the prefix table */ struct affixptr ptable[MAX_PREFIXES]; /* the suffix table */ struct affixptr stable[MAX_SUFFIXES]; /* data structure to store results of lookups */ struct matches { struct hentry* hashent; /* hash table entry */ struct affent* prefix; /* Prefix used, or NULL */ struct affent* suffix; /* Suffix used, or NULL */ }; int numroots; /* number of root words found */ struct matches roots[MAX_ROOTS]; /* list of root words found */ /* hashing stuff */ struct hentry { char* word; char* affstr; struct hentry* next; int keep; }; int tablesize; struct hentry* tableptr; /* unmunch stuff */ int numwords; /* number of words found */ struct dwords { char* word; int pallow; }; struct dwords wlist[MAX_WORDS]; /* list words found */ /* the routines */ int parse_aff_file(FILE* afflst); void encodeit(struct affent* ptr, char* cs); int load_tables(FILE* wrdlst); int hash(const char*); int add_word(char*); struct hentry* lookup(const char*); void aff_chk(const char* word, int len); void pfx_chk(const char* word, int len, struct affent* ep, int num); void suf_chk(const char* word, int len, struct affent* ep, int num, struct affent* pfxent, int cpflag); void add_affix_char(struct hentry* hent, char ac); int expand_rootword(const char*, int, const char*); void pfx_add(const char* word, int len, struct affent* ep, int num); void suf_add(const char* word, int len, struct affent* ep, int num); char* mystrsep(char** stringp, const char delim); char* mystrdup(const char* s); void mychomp(char* s); hunspell-1.7.2/src/tools/hunzip.cxx0000664000175000017500000000464214352145647014307 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include #include #include #include "../hunspell/hunzip.hxx" #define DESC \ "hunzip - decompress a hzip file to the standard output\n" \ "Usage: hunzip file.hz [password]\n" int main(int argc, char** argv) { if (argc == 1 || strcmp(argv[1], "-h") == 0) { fprintf(stderr, DESC); return 1; } Hunzip h(argv[1], (argc > 2) ? argv[2] : NULL); if (!h.is_open()) return 0; std::string s; while (h.getline(s)) printf("%s", s.c_str()); return 0; } hunspell-1.7.2/src/tools/unmunch.h0000664000175000017500000000630214352145647014067 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /* unmunch header file */ #define MAX_LN_LEN 200 #define MAX_WD_LEN 200 #define MAX_PREFIXES 256 #define MAX_SUFFIXES 256 #define MAX_WORDS 500000 #define ROTATE_LEN 5 #define ROTATE(v, q) \ (v) = ((v) << (q)) | (((v) >> (32 - q)) & ((1 << (q)) - 1)); #define SET_SIZE 256 #define XPRODUCT (1 << 0) /* the affix table entry */ struct affent { char* appnd; char* strip; short appndl; short stripl; char achar; char xpflg; short numconds; char conds[SET_SIZE]; }; struct affixptr { struct affent* aep; int num; }; /* the prefix and suffix table */ int numpfx; /* Number of prefixes in table */ int numsfx; /* Number of suffixes in table */ /* the prefix table */ struct affixptr ptable[MAX_PREFIXES]; /* the suffix table */ struct affixptr stable[MAX_SUFFIXES]; int fullstrip; int numwords; /* number of words found */ struct dwords { char* word; int pallow; }; struct dwords wlist[MAX_WORDS]; /* list words found */ /* the routines */ int parse_aff_file(FILE* afflst); void encodeit(struct affent* ptr, char* cs); int expand_rootword(const char*, int, const char*); void pfx_add(const char* word, int len, struct affent* ep, int num); void suf_add(const char* word, int len, struct affent* ep, int num); char* mystrsep(char** stringp, const char delim); char* mystrdup(const char* s); void mychomp(char* s); hunspell-1.7.2/src/tools/unmunch.cxx0000664000175000017500000003525014352145647014446 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /* Un-munch a root word list with affix tags * to recreate the original word list */ #include #include #include #include #include #include #include #include #include #include #include #include "unmunch.h" int main(int argc, char** argv) { int i; int al; FILE* wrdlst; FILE* afflst; char *wf, *af; char ts[MAX_LN_LEN]; (void)argc; /* first parse the command line options */ /* arg1 - munched wordlist, arg2 - affix file */ if (argv[1]) { wf = mystrdup(argv[1]); } else { fprintf(stderr, "correct syntax is:\n"); fprintf(stderr, "unmunch dic_file affix_file\n"); exit(1); } if (argv[2]) { af = mystrdup(argv[2]); } else { fprintf(stderr, "correct syntax is:\n"); fprintf(stderr, "unmunch dic_file affix_file\n"); exit(1); } /* open the affix file */ afflst = fopen(af, "r"); if (!afflst) { fprintf(stderr, "Error - could not open affix description file\n"); exit(1); } /* step one is to parse the affix file building up the internal affix data structures */ numpfx = 0; numsfx = 0; fullstrip = 0; if (parse_aff_file(afflst)) { fprintf(stderr, "Error - in affix file loading\n"); exit(1); } fclose(afflst); fprintf(stderr, "parsed in %d prefixes and %d suffixes\n", numpfx, numsfx); /* affix file is now parsed so create hash table of wordlist on the fly */ /* open the wordlist */ wrdlst = fopen(wf, "r"); if (!wrdlst) { fprintf(stderr, "Error - could not open word list file\n"); exit(1); } /* skip over the hash table size */ if (!fgets(ts, MAX_LN_LEN - 1, wrdlst)) { fclose(wrdlst); return 2; } mychomp(ts); while (fgets(ts, MAX_LN_LEN - 1, wrdlst)) { mychomp(ts); /* split each line into word and affix char strings */ char* ap = strchr(ts, '/'); if (ap) { *ap = '\0'; ap++; al = strlen(ap); } else { al = 0; ap = NULL; } int wl = strlen(ts); numwords = 0; wlist[numwords].word = mystrdup(ts); wlist[numwords].pallow = 0; numwords++; if (al) expand_rootword(ts, wl, ap); for (i = 0; i < numwords; i++) { fprintf(stdout, "%s\n", wlist[i].word); free(wlist[i].word); wlist[i].word = NULL; wlist[i].pallow = 0; } } fclose(wrdlst); return 0; } int parse_aff_file(FILE* afflst) { int i, j; int numents = 0; char achar = '\0'; short ff = 0; struct affent* ptr = NULL; struct affent* nptr = NULL; char* line = (char*)malloc(MAX_LN_LEN); while (fgets(line, MAX_LN_LEN, afflst)) { mychomp(line); char ft = ' '; fprintf(stderr, "parsing line: %s\n", line); if (strncmp(line, "FULLSTRIP", 9) == 0) fullstrip = 1; if (strncmp(line, "PFX", 3) == 0) ft = 'P'; if (strncmp(line, "SFX", 3) == 0) ft = 'S'; if (ft != ' ') { char* tp = line; char* piece; ff = 0; i = 0; while ((piece = mystrsep(&tp, ' '))) { if (*piece != '\0') { switch (i) { case 0: break; case 1: { achar = *piece; break; } case 2: { if (*piece == 'Y') ff = XPRODUCT; break; } case 3: { numents = atoi(piece); if ((numents <= 0) || ((std::numeric_limits::max() / sizeof(struct affent)) < static_cast(numents))) { fprintf(stderr, "Error: too many entries: %d\n", numents); numents = 0; } else { ptr = (struct affent*)malloc(numents * sizeof(struct affent)); ptr->achar = achar; ptr->xpflg = ff; fprintf(stderr, "parsing %c entries %d\n", achar, numents); } break; } default: break; } i++; } free(piece); } /* now parse all of the sub entries*/ nptr = ptr; for (j = 0; j < numents; j++) { if (!fgets(line, MAX_LN_LEN, afflst)) return 1; mychomp(line); tp = line; i = 0; while ((piece = mystrsep(&tp, ' '))) { if (*piece != '\0') { switch (i) { case 0: { if (nptr != ptr) { nptr->achar = ptr->achar; nptr->xpflg = ptr->xpflg; } break; } case 1: break; case 2: { nptr->strip = mystrdup(piece); nptr->stripl = strlen(nptr->strip); if (strcmp(nptr->strip, "0") == 0) { free(nptr->strip); nptr->strip = mystrdup(""); nptr->stripl = 0; } break; } case 3: { nptr->appnd = mystrdup(piece); nptr->appndl = strlen(nptr->appnd); if (strcmp(nptr->appnd, "0") == 0) { free(nptr->appnd); nptr->appnd = mystrdup(""); nptr->appndl = 0; } if (strchr(nptr->appnd, '/')) { char* addseparator = (char*)realloc(nptr->appnd, nptr->appndl + 2); if (addseparator) { nptr->appndl++; addseparator[nptr->appndl - 1] = '|'; addseparator[nptr->appndl] = '\0'; nptr->appnd = addseparator; } } break; } case 4: { encodeit(nptr, piece); } fprintf(stderr, " affix: %s %d, strip: %s %d\n", nptr->appnd, nptr->appndl, nptr->strip, nptr->stripl); // no break default: break; } i++; } free(piece); } nptr++; } if (ptr) { if (ft == 'P') { if (numpfx < MAX_PREFIXES) { ptable[numpfx].aep = ptr; ptable[numpfx].num = numents; fprintf(stderr, "ptable %d num is %d flag %c\n", numpfx, ptable[numpfx].num, ptr->achar); numpfx++; } else { fprintf(stderr, "prefix buffer ptable is full\n"); free(ptr); } } else if (ft == 'S') { if (numsfx < MAX_SUFFIXES) { stable[numsfx].aep = ptr; stable[numsfx].num = numents; fprintf(stderr, "stable %d num is %d flag %c\n", numsfx, stable[numsfx].num, ptr->achar); numsfx++; } else { fprintf(stderr, "suffix buffer stable is full\n"); free(ptr); } } ptr = NULL; } nptr = NULL; numents = 0; achar = '\0'; } } free(line); return 0; } void encodeit(struct affent* ptr, char* cs) { int nc; int neg; int grp; int n; int ec; int nm; int i, j, k; unsigned char mbr[MAX_WD_LEN]; /* now clear the conditions array */ for (i = 0; i < SET_SIZE; i++) ptr->conds[i] = (unsigned char)0; /* now parse the string to create the conds array */ nc = strlen(cs); neg = 0; /* complement indicator */ grp = 0; /* group indicator */ n = 0; /* number of conditions */ ec = 0; /* end condition indicator */ nm = 0; /* number of member in group */ i = 0; if (strcmp(cs, ".") == 0) { ptr->numconds = 0; return; } while (i < nc) { unsigned char c = *((unsigned char*)(cs + i)); if (c == '[') { grp = 1; c = 0; } if ((grp == 1) && (c == '^')) { neg = 1; c = 0; } if (c == ']') { ec = 1; c = 0; } if ((grp == 1) && (c != 0)) { *(mbr + nm) = c; nm++; c = 0; } if (c != 0) { ec = 1; } if (ec) { if (grp == 1) { if (neg == 0) { for (j = 0; j < nm; j++) { k = (unsigned int)mbr[j]; ptr->conds[k] = ptr->conds[k] | (1 << n); } } else { for (j = 0; j < SET_SIZE; j++) ptr->conds[j] = ptr->conds[j] | (1 << n); for (j = 0; j < nm; j++) { k = (unsigned int)mbr[j]; ptr->conds[k] = ptr->conds[k] & ~(1 << n); } } neg = 0; grp = 0; nm = 0; } else { /* not a group so just set the proper bit for this char */ /* but first handle special case of . inside condition */ if (c == '.') { /* wild card character so set them all */ for (j = 0; j < SET_SIZE; j++) ptr->conds[j] = ptr->conds[j] | (1 << n); } else { ptr->conds[(unsigned int)c] = ptr->conds[(unsigned int)c] | (1 << n); } } n++; ec = 0; } i++; } ptr->numconds = n; return; } /* add a prefix to word */ void pfx_add(const char* word, int len, struct affent* ep, int num) { struct affent* aent; int cond; unsigned char* cp; int i; for (aent = ep, i = num; i > 0; aent++, i--) { /* now make sure all conditions match */ if ((len + fullstrip > aent->stripl) && (len >= aent->numconds) && ((aent->stripl == 0) || (strncmp(aent->strip, word, aent->stripl) == 0))) { cp = (unsigned char*)word; for (cond = 0; cond < aent->numconds; cond++) { if ((aent->conds[*cp++] & (1 << cond)) == 0) break; } if (cond >= aent->numconds) { std::string tword; /* we have a match so add prefix */ if (aent->appndl) { tword.append(aent->appnd); } tword.append(word + aent->stripl); if (numwords < MAX_WORDS) { wlist[numwords].word = mystrdup(tword.c_str()); wlist[numwords].pallow = 0; numwords++; } } } } } /* add a suffix to a word */ void suf_add(const char* word, int len, struct affent* ep, int num) { struct affent* aent; int cond; unsigned char* cp; int i; for (aent = ep, i = num; i > 0; aent++, i--) { /* if conditions hold on root word * then strip off strip string and add suffix */ if ((len + fullstrip > aent->stripl) && (len >= aent->numconds) && ((aent->stripl == 0) || (strcmp(aent->strip, word + len - aent->stripl) == 0))) { cp = (unsigned char*)(word + len); for (cond = aent->numconds; --cond >= 0;) { if ((aent->conds[*--cp] & (1 << cond)) == 0) break; } if (cond < 0) { /* we have a matching condition */ std::string tword(word); tword.resize(len - aent->stripl); tword.append(aent->appnd); if (numwords < MAX_WORDS) { wlist[numwords].word = mystrdup(tword.c_str()); wlist[numwords].pallow = (aent->xpflg & XPRODUCT); numwords++; } } } } } int expand_rootword(const char* ts, int wl, const char* ap) { int i; int nh = 0; for (i = 0; i < numsfx; i++) { if (strchr(ap, (stable[i].aep)->achar)) { suf_add(ts, wl, stable[i].aep, stable[i].num); } } nh = numwords; if (nh > 1) { for (int j = 1; j < nh; j++) { if (wlist[j].pallow) { for (i = 0; i < numpfx; i++) { if (strchr(ap, (ptable[i].aep)->achar)) { if ((ptable[i].aep)->xpflg & XPRODUCT) { int nwl = strlen(wlist[j].word); pfx_add(wlist[j].word, nwl, ptable[i].aep, ptable[i].num); } } } } } } for (i = 0; i < numpfx; i++) { if (strchr(ap, (ptable[i].aep)->achar)) { pfx_add(ts, wl, ptable[i].aep, ptable[i].num); } } return 0; } /* strip strings into token based on single char delimiter * acts like strsep() but only uses a delim char and not * a delim string */ char* mystrsep(char** stringp, const char delim) { char* rv = NULL; char* mp = *stringp; int n = strlen(mp); if (n > 0) { char* dp = (char*)memchr(mp, (int)((unsigned char)delim), n); if (dp) { ptrdiff_t nc; *stringp = dp + 1; nc = dp - mp; rv = (char*)malloc(nc + 1); if (rv) { memcpy(rv, mp, nc); *(rv + nc) = '\0'; } } else { rv = (char*)malloc(n + 1); if (rv) { memcpy(rv, mp, n); *(rv + n) = '\0'; *stringp = mp + n; } } } return rv; } char* mystrdup(const char* s) { char* d = NULL; if (s) { int sl = strlen(s) + 1; d = (char*)malloc(sl); if (d) memcpy(d, s, sl); } return d; } void mychomp(char* s) { int k = strlen(s); if ((k > 0) && (*(s + k - 1) == '\n')) *(s + k - 1) = '\0'; if ((k > 1) && (*(s + k - 2) == '\r')) *(s + k - 2) = '\0'; } hunspell-1.7.2/src/tools/ispellaff2myspell0000644000175000017500000003145113422074107015607 00000000000000#!/usr/bin/perl -w # -*- coding: iso-8859-1 -*- # $Id$ # # (C) 2002-2005 Agustin Martin Domingo # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . sub usage { print "ispellaff2myspell: A program to convert ispell affix tables to myspell format (C) 2002-2005 Agustin Martin Domingo License: GPL Usage: ispellaff2myspell [options] Options: --affixfile=s Affix file --bylocale Use current locale setup for upper/lowercase conversion --charset=s Use specified charset for upper/lowercase conversion (defaults to latin1) --debug Print debugging info --extraflags Allow some non alphabetic flags --lowercase=s Lowercase string --myheader=s Header file --printcomments Print commented lines in output --replacements=s Replacements file --split=i Split flags with more that i entries --uppercase=s Uppercase string --wordlist=s Still unused Currently allowed valued for charset are: latin1, latin2, latin3 This script does not create the dict file. Something like ( echo `cat mydict.words+ | wc -l`; cat mydict.words+ ) > mydict.dict should do the work, with mydict.words+ being the ispell munched wordlist "; exit; } sub debugprint { if ( $debug ){ print STDERR "@_"; } } sub shipoutflag{ my $flag_entries=scalar @flag_array; if ( $flag_entries != 0 ){ if ( $split ){ while ( @flag_array ){ my @flag_subarray=splice(@flag_array,0,$split); my $subflag_entries=scalar @flag_subarray; if ( scalar @flag_array ){ print "$myaffix $flagname $flagcombine $subflag_entries S\n"; } else { print "$myaffix $flagname $flagcombine $subflag_entries\n"; } print join("\n",@flag_subarray); print "\n\n"; } } else { print "$myaffix $flagname $flagcombine $flag_entries\n"; print join("\n",@flag_array); print "\n\n"; } } @flag_array=(); $flagname=''; $flagcombine=''; } sub mylc{ my $inputstring=shift; my $outputstring; if ( $bylocale ){ { use locale; $outputstring = lc $inputstring; } } else { if ( $charset eq "latin0" ){ $lowercase='a-z'; $uppercase='A-Z޼'; } elsif ( $charset eq "latin1" ){ $lowercase='a-z'; $uppercase='A-Z'; } elsif ( $charset eq "latin2" ){ $lowercase='a-z'; $uppercase='A-Z'; } elsif ( $charset eq "latin3" ){ $lowercase='a-z'; $uppercase='A-Z'; # } elsif ( $charset eq "other_charset" ){ # die "latin2 still unimplemented"; } else { if ( not $lowercase and not $uppercase ){ die "Unsupported charset [$charset] Explicitly use --lowercase=string and --uppercase=string options. Remember that both string must match exactly, but case changed. "; } } $outputstring=$inputstring; eval "\$outputstring=~tr/$uppercase/$lowercase/"; } return $outputstring; } sub validate_flag (){ my $flag = shift; if ($flag=~m/[a-zA-Z]+/){ return $flag; } elsif ( $hasextraflags ){ foreach ( keys %theextraflags ){ if ($flag =~ m/^$_/){ $flag =~ s/^$_//; return $flag; } } } return ''; } sub process_replacements{ my $file = shift; my @replaces = (); open (REPLACE,"< $file") || die "Error: Could not open replacements file: $file\n"; while (){ next unless m/^REP[\s\t]*\D.*/; next if m/^REP\s+[0-9]+/; s/\015\012//; s/\015//; chomp; push @replaces, $_; } close REPLACE; my $number = scalar @replaces; print "REP $number\n"; foreach ( @replaces ){ print $_ . "\n"; } } # ----------------------------------------------------------- # Now the progran start, after the functions are defined # ----------------------------------------------------------- use Getopt::Long; # Initializing option values $affixfile = ''; $bylocale = ''; $charset = ''; $debug = ''; $lowercase = ''; $myheader = ''; $printcomments = ''; $replacements = ''; $split = ''; $uppercase = ''; $wordlist = ''; $hasextraflags = ''; @flag_array = (); %theextraflags = (); # Initializing root values $rootremove = "0"; $rootname = ''; $addtoroot = ''; $comment = ''; # Initializing flag values $flagname = ''; $flagcombine = ''; $inflags = ''; GetOptions ('affixfile=s' => \$affixfile, 'bylocale' => \$bylocale, 'charset=s' => \$charset, 'debug' => \$debug, 'extraflags:s' => sub { $hasextraflags = 1; shift; $theflag = shift; $theextraflags{$theflag}++ if $theflag}, 'lowercase=s' => \$lowercase, 'myheader=s' => \$myheader, 'printcomments' => \$printcomments, 'replacements=s'=> \$replacements, 'split=i' => \$split, 'uppercase=s' => \$uppercase, 'wordlist=s' => \$wordlist) or usage; if ( not $affixfile ){ $affixfile=shift or usage; } if ( $charset and ( $lowercase or $uppercase )){ die "Error: charset and lowercase/uppercase options are incompatible. Use either charset or lowercase/uppercase options to specify the patterns " } elsif ( not $lowercase and not $uppercase and not $charset ){ $charset="latin1"; } if ( scalar(keys %theextraflags) == 0 && $hasextraflags ){ $theextraflags{"\\\\"}++; } debugprint "$affixfile $charset"; open (AFFIXFILE,"< $affixfile") || die "Error: Could not open affix file: $affixfile"; if ( $myheader ){ my $myspell_header=`cat $myheader`; print $myspell_header . "\n"; } while (){ chomp; if (/^\s*\#.*/){ debugprint "Ignoring line $.\n"; print "$_\n" if $printcomments; } elsif (/^\s*$/){ debugprint "Ignoring line $.\n"; } elsif (/^\s*prefixes/){ debugprint "Prefixes starting in line $.\n"; $affix="PFX"; } elsif (/^\s*suffixes/){ debugprint "Suffixes starting in line $.\n"; $affix="SFX"; } elsif (/^[\s\t]*flag.*/){ next if not $affix; # In case we are still in the preamble shipoutflag if $inflags; $inflags="yes"; s/^[\s\t]*flag[\s\t]*//; s/[\s\t]*:.*$//; debugprint "Found flag $_ in line $.\n"; if (/\*/){ s/[\*\s]//g; $flagcombine="Y"; debugprint "Flag renamed to $_ with combine=$flagcombine\n"; } else { $flagcombine="N"; } if ( $flagname = &validate_flag($_) ){ $myaffix = $affix; } else { $myaffix = "\# $affix"; $flagname = $_; print STDERR "Ignoring invalid flag $flagname in line $.\n"; } } elsif ( $affix and $inflags ) { ($rootname,@comments) = split('#',$_); $comment = '# ' . join('#',@comments); $rootname =~ s/\s*//g; $rootname = mylc $rootname; ($rootname,$addtoroot) = split('>',$rootname); if ( $addtoroot =~ s/^\-//g ){ ($rootremove,$addtoroot) = split(',',$addtoroot); $addtoroot = "0" unless $addtoroot; $addtoroot = "0" if ( $addtoroot eq "-"); } else { $rootremove = "0"; } $addtoroot =~ s/\\\-/\-/g; # prefix ANTI\- to anti- if ( $rootname eq '.' && $rootremove ne "0" ){ $rootname = $rootremove; } debugprint "$rootname, $addtoroot, $rootremove\n"; if ( $printcomments ){ $affix_line=sprintf("%s %s %-5s %-11s %-24s %s", $myaffix, $flagname, $rootremove, $addtoroot, $rootname, $comment); } else { $affix_line=sprintf("%s %s %-5s %-11s %s", $myaffix, $flagname, $rootremove, $addtoroot, $rootname); } $rootremove = "0"; $rootname = ''; $addtoroot = ''; $comment = ''; @comments = (); push @flag_array,$affix_line; debugprint "$affix_line\n"; } else { # } } shipoutflag; close AFFIXFILE; if ( $replacements ){ &process_replacements($replacements); } __END__ =head1 NAME B - A program to convert ispell affix tables to myspell format. =head1 SYNOPSIS ispellaff2myspell [options] --myheader your_header Options: --affixfile=s Affix file --bylocale Use current locale setup for upper/lowercase conversion --charset=s Use specified charset for upper/lowercase conversion (defaults to latin1) --debug Print debugging info --extraflags=s Allow some non alphabetic flags --lowercase=s Lowercase string --myheader=s Header file --printcomments Print commented lines in output --replacements=s Replacements file --split=i Split flags with more that i entries --uppercase=s Uppercase string =head1 DESCRIPTION B is a script that will convert ispell affix tables to myspell format in a more or less successful way. This script does not create the dict file. Something like ( echo `cat mydict.words+ | wc -l`; cat mydict.words+ ) > mydict.dict should do the work, with mydict.words+ being the munched wordlist =head1 OPTIONS =over 8 =item B<--affixfile=s> Affix file. You can put it directly in the command line. =item B<--bylocale> Use current locale setup for upper/lowercase conversion. Make sure that the selected locale match the dictionary one, or you might get into trouble. =item B<--charset=s> Use specified charset for upper/lowercase conversion (defaults to latin1). Currently allowed values for charset are: latin0, latin1, latin2, latin3. =item B<--debug> Print some debugging info. =item B<--extraflags:s> Allows some non alphabetic flags. When invoked with no value the supported flags are currently those corresponding to chars represented with the escape char B<\> as first char. B<\> will be stripped. When given with the flag prefix will allow that flag and strip the given prefix. Be careful when giving the prefix to properly escape chars, e.g. you will need B<-e "\\\\"> or B<-e '\\'> for flags like B<\[> to be stripped to B<[>. Otherwise you might even get errors. Use B<-e "^"> to allow all flags and pass them unmodified. You will need a call to -e for each flag type, e.g., B<-e "\\\\" -e "~\\\\"> (or B<-e '\\' -e '~\\'>). When a prefix is explicitely set, the default value (anything starting by B<\>) is disabled and you need to enable it explicitely as in previous example. =item B<--lowercase=s> Lowercase string. Manually set the string of lowercase chars. This requires B<--uppercase> having exactly that string but uppercase. =item B<--myheader=s> Header file. The myspell aff header. You need to write it manually. This can contain everything you want to be before the affix table =item B<--printcomments> Print commented lines in output. =item B<--replacements=file> Add a pre-defined replacements table taken from 'file' to the .aff file. Will skip lines not beginning with REP, and set the replacements number appropriately. =item B<--split=i> Split flags with more that i entries. This can be of interest for flags having a lot of entries. Will split the flag in chunks containing B entries. =item B<--uppercase=s> Uppercase string. Manually set the sring of uppercase chars. This requires B<--lowercase> having exactly that string but lowercase. =back If your encoding is currently unsupported you can send me a file with the two strings of lower and uppercase chars. Note that they must match exactly but case changed. It will look something like $lowercase='a-z'; $uppercase='A-Z'; =head1 SEE ALSO The OpenOffice.org Lingucomponent Project home page L and the document L that provides information about the basics of the myspell affix file format. You can also take a look at /usr/share/doc/libmyspell-dev/affix.readme.gz /usr/share/doc/libmyspell-dev/README.compoundwords /usr/share/doc/libmyspell-dev/README.replacetable in your Debian system. =head1 AUTHORS Agustin Martin =cut hunspell-1.7.2/src/tools/Makefile.am0000644000175000017500000000157213565705656014306 00000000000000bin_PROGRAMS=analyze chmorph hunspell munch unmunch hzip hunzip AM_CPPFLAGS=-I${top_builddir}/src/hunspell -I${top_srcdir}/src/hunspell -I${top_srcdir}/src/parsers hzip_SOURCES=hzip.cxx hunzip_SOURCES=hunzip.cxx hunzip_LDADD = ../hunspell/libhunspell-1.7.la munch_SOURCES=munch.cxx munch.h unmunch_SOURCES=unmunch.cxx unmunch.h example_SOURCES=example.cxx example_LDADD = ../hunspell/libhunspell-1.7.la hunspell_SOURCES=hunspell.cxx nodist_hunspell_SOURCES= ../../config.h hunspell_LDADD = @LIBINTL@ @LIBICONV@ ../parsers/libparsers.a \ ../hunspell/libhunspell-1.7.la @CURSESLIB@ @READLINELIB@ analyze_SOURCES=analyze.cxx analyze_LDADD = ../hunspell/libhunspell-1.7.la chmorph_SOURCES=chmorph.cxx chmorph_LDADD = ../parsers/libparsers.a ../hunspell/libhunspell-1.7.la noinst_PROGRAMS=example dist_bin_SCRIPTS=makealias affixcompress wordforms ispellaff2myspell wordlist2hunspell hunspell-1.7.2/src/tools/wordforms0000775000175000017500000000247114352145647014214 00000000000000#!/bin/sh case $# in 0|1|2) echo "Usage: wordforms [-s | -p] dictionary.aff dictionary.dic word -s: print only suffixed forms -p: print only prefixed forms "; exit 1;; esac fx=0 case $1 in -s) fx=1; shift;; -p) fx=2; shift;; esac test -h /tmp/wordforms.aff && rm /tmp/wordforms.aff ln -s "$PWD/$1" /tmp/wordforms.aff # prepared dic only with the query word echo 1 >/tmp/wordforms.dic grep "^$3/" $2 >>/tmp/wordforms.dic echo $3 | awk -v "fx=$fx" ' fx!=2 && FILENAME!="-" && /^SFX/ && NF > 4{split($4,a,"/");clen=($3=="0") ? 0 : length($3);sfx[a[1],clen]=a[1];sfxc[a[1],clen]=clen;next} fx!=1 && FILENAME!="-" && /^PFX/ && NF > 4{split($4,a,"/");clen=($3=="0") ? 0 : length($3);pfx[a[1],clen]=a[1];pfxc[a[1],clen]=clen;next} FILENAME=="-"{ wlen=length($1) if (fx==0 || fx==2) { for (j in pfx) {if (wlen<=pfxc[j]) continue; print (pfx[j]=="0" ? "" : pfx[j]) substr($1, pfxc[j]+1)} } if (fx==0 || fx==1) { for(i in sfx){clen=sfxc[i];if (wlen<=clen) continue; print substr($1, 1, wlen-clen) (sfx[i]=="0" ? "": sfx[i]) } } if (fx==0) { for (j in pfx) {if (wlen<=pfxc[j]) continue; for(i in sfx){clen=sfxc[i];if (wlen<=clen || wlen <= (clen + pfxc[j]))continue; print (pfx[j]=="0" ? "" : pfx[j]) substr($1, pfxc[j]+1, wlen-clen-pfxc[j]) (sfx[i]=="0" ? "": sfx[i]) }} } } ' /tmp/wordforms.aff - | hunspell -d /tmp/wordforms -G -l hunspell-1.7.2/src/hunspell/0000775000175000017500000000000014353370321013000 500000000000000hunspell-1.7.2/src/hunspell/filemgr.cxx0000664000175000017500000001073014352160534015074 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /* * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada * And Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. All modifications to the source code must be clearly marked as * such. Binary redistributions based on modified source code * must be clearly marked as modified versions in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include #include #include #include "filemgr.hxx" #include "csutil.hxx" int FileMgr::fail(const char* err, const char* par) { fprintf(stderr, err, par); return -1; } FileMgr::FileMgr(const char* file, const char* key) : hin(NULL), linenum(0) { in[0] = '\0'; if (!file || !strlen(file)) return; myopen(fin, file, std::ios_base::in); if (!fin.is_open()) { // check hzipped file std::string st(file); st.append(HZIP_EXTENSION); hin = new Hunzip(st.c_str(), key); } if (!fin.is_open() && !hin->is_open()) fail(MSG_OPEN, file); } FileMgr::~FileMgr() { delete hin; } bool FileMgr::getline(std::string& dest) { bool ret = false; ++linenum; if (fin.is_open()) { ret = static_cast(std::getline(fin, dest)); } else if (hin && hin->is_open()) { ret = hin->getline(dest); } if (!ret) { --linenum; } return ret; } int FileMgr::getlinenum() { return linenum; } hunspell-1.7.2/src/hunspell/hunzip.hxx0000664000175000017500000000612414352160534014773 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /* hunzip: file decompression for sorted dictionaries with optional encryption, * algorithm: prefix-suffix encoding and 16-bit Huffman encoding */ #ifndef HUNZIP_HXX_ #define HUNZIP_HXX_ #include "hunvisapi.h" #include #include #include #define BUFSIZE 65536 #define HZIP_EXTENSION ".hz" #define MSG_OPEN "error: %s: cannot open\n" #define MSG_FORMAT "error: %s: not in hzip format\n" #define MSG_MEMORY "error: %s: missing memory\n" #define MSG_KEY "error: %s: missing or bad password\n" struct bit { unsigned char c[2]; int v[2]; }; class LIBHUNSPELL_DLL_EXPORTED Hunzip { protected: std::string filename; std::ifstream fin; int bufsiz, lastbit, inc, inbits, outc; std::vector dec; // code table char in[BUFSIZE]; // input buffer char out[BUFSIZE + 1]; // Huffman-decoded buffer char line[BUFSIZE + 50]; // decoded line int getcode(const char* key); int getbuf(); int fail(const char* err, const std::string& par); public: Hunzip(const char* filename, const char* key = NULL); Hunzip(const Hunzip&) = delete; Hunzip& operator=(const Hunzip&) = delete; ~Hunzip(); bool is_open() { return fin.is_open(); } bool getline(std::string& dest); }; #endif hunspell-1.7.2/src/hunspell/suggestmgr.cxx0000664000175000017500000021315114353344306015642 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /* * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada * And Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. All modifications to the source code must be clearly marked as * such. Binary redistributions based on modified source code * must be clearly marked as modified versions in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include #include #include #include #include #include "suggestmgr.hxx" #include "htypes.hxx" #include "csutil.hxx" const w_char W_VLINE = {'\0', '|'}; #define MAX_CHAR_DISTANCE 4 SuggestMgr::SuggestMgr(const std::string& tryme, unsigned int maxn, AffixMgr* aptr) { // register affix manager and check in string of chars to // try when building candidate suggestions pAMgr = aptr; csconv = NULL; ckeyl = 0; ctryl = 0; utf8 = 0; langnum = 0; complexprefixes = 0; maxSug = maxn; nosplitsugs = 0; maxngramsugs = MAXNGRAMSUGS; maxcpdsugs = MAXCOMPOUNDSUGS; if (pAMgr) { langnum = pAMgr->get_langnum(); ckey = pAMgr->get_key_string(); nosplitsugs = pAMgr->get_nosplitsugs(); if (pAMgr->get_maxngramsugs() >= 0) maxngramsugs = pAMgr->get_maxngramsugs(); utf8 = pAMgr->get_utf8(); if (pAMgr->get_maxcpdsugs() >= 0) maxcpdsugs = pAMgr->get_maxcpdsugs(); if (!utf8) { csconv = get_current_cs(pAMgr->get_encoding()); } complexprefixes = pAMgr->get_complexprefixes(); } if (!ckey.empty()) { if (utf8) { int len = u8_u16(ckey_utf, ckey); if (len != -1) { ckeyl = len; } } else { ckeyl = ckey.size(); } } ctry = tryme; if (!ctry.empty()) { if (utf8) { int len = u8_u16(ctry_utf, ctry); if (len != -1) { ctryl = len; } } else { ctryl = ctry.size(); } } // language with possible dash usage // (latin letters or dash in TRY characters) lang_with_dash_usage = ctry.find('-') != std::string::npos || ctry.find('a') != std::string::npos; } SuggestMgr::~SuggestMgr() { pAMgr = NULL; ckeyl = 0; ctryl = 0; maxSug = 0; #ifdef MOZILLA_CLIENT delete[] csconv; #endif } void SuggestMgr::testsug(std::vector& wlst, const std::string& candidate, int cpdsuggest, int* timer, clock_t* timelimit, int& info) { if (wlst.size() == maxSug) return; const int cwrd = std::find(wlst.begin(), wlst.end(), candidate) != wlst.end() ? 0 : 1; if (cwrd) { if (int result = checkword(candidate, cpdsuggest, timer, timelimit)) { // compound word in the dictionary if (cpdsuggest == 0 && result >= 2) info |= SPELL_COMPOUND; wlst.push_back(candidate); } } } /* generate suggestions for a misspelled word * pass in address of array of char * pointers * onlycompoundsug: probably bad suggestions (need for ngram sugs, too) * return value: true, if there is a good suggestion * (REP, ph: or a dictionary word pair) */ bool SuggestMgr::suggest(std::vector& slst, const std::string& w, int* onlycompoundsug, bool test_simplesug) { int nocompoundtwowords = 0; // no second or third loops, see below std::vector word_utf; size_t nsugorig = slst.size(), oldSug = 0; std::string w2; bool good_suggestion = false; // word reversing wrapper for complex prefixes if (complexprefixes) { w2.assign(w); if (utf8) reverseword_utf(w2); else reverseword(w2); } const std::string& word = complexprefixes ? w2 : w; if (utf8) { int wl = u8_u16(word_utf, word); if (wl == -1) { return false; } } // three loops: // - the first without compounding, // - the second one with 2-word compounding, // - the third one with 3-or-more-word compounding // Run second and third loops only if: // - no ~good suggestion in the first loop // - not for testing compound words with 3 or more words (test_simplesug == false) int info = 0; for (int cpdsuggest = 0; cpdsuggest < 3 && nocompoundtwowords == 0; cpdsuggest++) { // initialize both in non-compound and compound cycles clock_t timelimit = clock(); // limit compound suggestion if (cpdsuggest > 0) oldSug = slst.size(); // suggestions for an uppercase word (html -> HTML) if (slst.size() < maxSug) { size_t i = slst.size(); if (utf8) capchars_utf(slst, word_utf, cpdsuggest, info); else capchars(slst, word, cpdsuggest, info); if (slst.size() > i) good_suggestion = true; } // perhaps we made a typical fault of spelling if ((slst.size() < maxSug) && (!cpdsuggest || (slst.size() < oldSug + maxcpdsugs))) { size_t i = slst.size(); replchars(slst, word, cpdsuggest, info); if (slst.size() > i) good_suggestion = true; } if (clock() > timelimit + TIMELIMIT_SUGGESTION) return good_suggestion; if (test_simplesug && slst.size()) return true; // perhaps we made chose the wrong char from a related set if ((slst.size() < maxSug) && (!cpdsuggest || (slst.size() < oldSug + maxcpdsugs))) { mapchars(slst, word, cpdsuggest, info); } if (clock() > timelimit + TIMELIMIT_SUGGESTION) return good_suggestion; if (test_simplesug && slst.size()) return true; // only suggest compound words when no other ~good suggestion if ((cpdsuggest == 0) && (slst.size() > nsugorig)) nocompoundtwowords = 1; // did we swap the order of chars by mistake if ((slst.size() < maxSug) && (!cpdsuggest || (slst.size() < oldSug + maxcpdsugs))) { if (utf8) swapchar_utf(slst, word_utf, cpdsuggest, info); else swapchar(slst, word, cpdsuggest, info); } if (clock() > timelimit + TIMELIMIT_SUGGESTION) return good_suggestion; if (test_simplesug && slst.size()) return true; // did we swap the order of non adjacent chars by mistake if ((slst.size() < maxSug) && (!cpdsuggest || (slst.size() < oldSug + maxcpdsugs))) { if (utf8) longswapchar_utf(slst, word_utf, cpdsuggest, info); else longswapchar(slst, word, cpdsuggest, info); } if (clock() > timelimit + TIMELIMIT_SUGGESTION) return good_suggestion; if (test_simplesug && slst.size()) return true; // did we just hit the wrong key in place of a good char (case and keyboard) if ((slst.size() < maxSug) && (!cpdsuggest || (slst.size() < oldSug + maxcpdsugs))) { if (utf8) badcharkey_utf(slst, word_utf, cpdsuggest, info); else badcharkey(slst, word, cpdsuggest, info); } if (clock() > timelimit + TIMELIMIT_SUGGESTION) return good_suggestion; if (test_simplesug && slst.size()) return true; // did we add a char that should not be there if ((slst.size() < maxSug) && (!cpdsuggest || (slst.size() < oldSug + maxcpdsugs))) { if (utf8) extrachar_utf(slst, word_utf, cpdsuggest, info); else extrachar(slst, word, cpdsuggest, info); } if (clock() > timelimit + TIMELIMIT_SUGGESTION) return good_suggestion; if (test_simplesug && slst.size()) return true; // did we forgot a char if ((slst.size() < maxSug) && (!cpdsuggest || (slst.size() < oldSug + maxcpdsugs))) { if (utf8) forgotchar_utf(slst, word_utf, cpdsuggest, info); else forgotchar(slst, word, cpdsuggest, info); } if (clock() > timelimit + TIMELIMIT_SUGGESTION) return good_suggestion; if (test_simplesug && slst.size()) return true; // did we move a char if ((slst.size() < maxSug) && (!cpdsuggest || (slst.size() < oldSug + maxcpdsugs))) { if (utf8) movechar_utf(slst, word_utf, cpdsuggest, info); else movechar(slst, word, cpdsuggest, info); } if (clock() > timelimit + TIMELIMIT_SUGGESTION) return good_suggestion; if (test_simplesug && slst.size()) return true; // did we just hit the wrong key in place of a good char if ((slst.size() < maxSug) && (!cpdsuggest || (slst.size() < oldSug + maxcpdsugs))) { if (utf8) badchar_utf(slst, word_utf, cpdsuggest, info); else badchar(slst, word, cpdsuggest, info); } if (clock() > timelimit + TIMELIMIT_SUGGESTION) return good_suggestion; if (test_simplesug && slst.size()) return true; // did we double two characters if ((slst.size() < maxSug) && (!cpdsuggest || (slst.size() < oldSug + maxcpdsugs))) { if (utf8) doubletwochars_utf(slst, word_utf, cpdsuggest, info); else doubletwochars(slst, word, cpdsuggest, info); } if (clock() > timelimit + TIMELIMIT_SUGGESTION) return good_suggestion; if (test_simplesug && slst.size()) return true; // perhaps we forgot to hit space and two words ran together // (dictionary word pairs have top priority here, so // we always suggest them, in despite of nosplitsugs, and // drop compound word and other suggestions) if (!cpdsuggest || (!nosplitsugs && slst.size() < oldSug + maxcpdsugs)) { good_suggestion = twowords(slst, word, cpdsuggest, good_suggestion, info); } if (clock() > timelimit + TIMELIMIT_SUGGESTION) return good_suggestion; // testing returns after the first loop if (test_simplesug) return slst.size() > 0; // don't need third loop, if the second loop was successful or // the first loop found a dictionary-based compound word // (we don't need more, likely worse and false 3-or-more-word compound words) if (cpdsuggest == 1 && (slst.size() > oldSug || (info & SPELL_COMPOUND))) nocompoundtwowords = 1; } // repeating ``for'' statement compounding support if (!nocompoundtwowords && (!slst.empty()) && onlycompoundsug) *onlycompoundsug = 1; return good_suggestion; } // suggestions for an uppercase word (html -> HTML) void SuggestMgr::capchars_utf(std::vector& wlst, const std::vector& word, int cpdsuggest, int& info) { std::vector candidate_utf(word); mkallcap_utf(candidate_utf, langnum); std::string candidate; u16_u8(candidate, candidate_utf); testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); } // suggestions for an uppercase word (html -> HTML) void SuggestMgr::capchars(std::vector& wlst, const std::string& word, int cpdsuggest, int& info) { std::string candidate(word); mkallcap(candidate, csconv); testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); } // suggestions for when chose the wrong char out of a related set int SuggestMgr::mapchars(std::vector& wlst, const std::string& word, int cpdsuggest, int& info) { std::string candidate; clock_t timelimit; int timer; if (word.size() < 2 || !pAMgr) return wlst.size(); const std::vector& maptable = pAMgr->get_maptable(); if (maptable.empty()) return wlst.size(); timelimit = clock(); timer = MINTIMER; return map_related(word, candidate, 0, wlst, cpdsuggest, maptable, &timer, &timelimit, 0, info); } int SuggestMgr::map_related(const std::string& word, std::string& candidate, size_t wn, std::vector& wlst, int cpdsuggest, const std::vector& maptable, int* timer, clock_t* timelimit, int depth, int& info) { if (word.size() == wn) { const int cwrd = std::find(wlst.begin(), wlst.end(), candidate) != wlst.end() ? 0 : 1; if ((cwrd) && checkword(candidate, cpdsuggest, timer, timelimit)) { if (wlst.size() < maxSug) { wlst.push_back(candidate); } } return wlst.size(); } if (depth > 16384) { *timer = 0; return wlst.size(); } int in_map = 0; for (size_t j = 0; j < maptable.size(); ++j) { for (size_t k = 0; k < maptable[j].size(); ++k) { size_t len = maptable[j][k].size(); if (len && word.compare(wn, len, maptable[j][k]) == 0) { in_map = 1; size_t cn = candidate.size(); for (size_t l = 0; l < maptable[j].size(); ++l) { candidate.resize(cn); candidate.append(maptable[j][l]); map_related(word, candidate, wn + len, wlst, cpdsuggest, maptable, timer, timelimit, depth + 1, info); if (!(*timer)) return wlst.size(); } } } } if (!in_map) { candidate.push_back(word[wn]); map_related(word, candidate, wn + 1, wlst, cpdsuggest, maptable, timer, timelimit, depth + 1, info); } return wlst.size(); } // suggestions for a typical fault of spelling, that // differs with more, than 1 letter from the right form. int SuggestMgr::replchars(std::vector& wlst, const std::string& word, int cpdsuggest, int& info) { std::string candidate; int wl = word.size(); if (wl < 2 || !pAMgr) return wlst.size(); const std::vector& reptable = pAMgr->get_reptable(); for (const auto& entry : reptable) { size_t r = 0; // search every occurence of the pattern in the word while ((r = word.find(entry.pattern, r)) != std::string::npos) { int type = (r == 0) ? 1 : 0; if (r + entry.pattern.size() == word.size()) type += 2; while (type && entry.outstrings[type].empty()) type = (type == 2 && r != 0) ? 0 : type - 1; const std::string&out = entry.outstrings[type]; if (out.empty()) { ++r; continue; } candidate.assign(word, 0, r); candidate.append(entry.outstrings[type]); candidate.append(word, r + entry.pattern.size(), std::string::npos); testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); // check REP suggestions with space size_t sp = candidate.find(' '); if (sp != std::string::npos) { size_t prev = 0; while (sp != std::string::npos) { std::string prev_chunk = candidate.substr(prev, sp - prev); if (checkword(prev_chunk, 0, NULL, NULL)) { size_t oldns = wlst.size(); std::string post_chunk = candidate.substr(sp + 1); testsug(wlst, post_chunk, cpdsuggest, NULL, NULL, info); if (oldns < wlst.size()) { wlst[wlst.size() - 1] = candidate; } } prev = sp + 1; sp = candidate.find(' ', prev); } } r++; // search for the next letter } } return wlst.size(); } // perhaps we doubled two characters // (for example vacation -> vacacation) // The recognized pattern with regex back-references: // "(.)(.)\1\2\1" or "..(.)(.)\1\2" int SuggestMgr::doubletwochars(std::vector& wlst, const std::string& word, int cpdsuggest, int& info) { size_t wl = word.size(); if (wl < 5 || !pAMgr) return wlst.size(); int state = 0; for (size_t i = 2; i < wl; ++i) { if (word[i] == word[i - 2]) { state++; if (state == 3 || (state == 2 && i >= 4)) { auto word_iter = word.begin(); std::string candidate(word_iter, word_iter + i - 1); candidate.insert(candidate.end(), word_iter + i + 1, word.end()); testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); state = 0; } } else { state = 0; } } return wlst.size(); } // perhaps we doubled two characters // (for example vacation -> vacacation) // The recognized pattern with regex back-references: // "(.)(.)\1\2\1" or "..(.)(.)\1\2" int SuggestMgr::doubletwochars_utf(std::vector& wlst, const std::vector& word, int cpdsuggest, int& info) { size_t wl = word.size(); int state = 0; if (wl < 5 || !pAMgr) return wlst.size(); for (size_t i = 2; i < wl; ++i) { if (word[i] == word[i - 2]) { state++; if (state == 3 || (state == 2 && i >= 4)) { auto word_iter = word.begin(); std::vector candidate_utf(word_iter, word_iter + i - 1); candidate_utf.insert(candidate_utf.end(), word_iter + i + 1, word.end()); std::string candidate; u16_u8(candidate, candidate_utf); testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); state = 0; } } else { state = 0; } } return wlst.size(); } // error is wrong char in place of correct one (case and keyboard related // version) int SuggestMgr::badcharkey(std::vector& wlst, const std::string& word, int cpdsuggest, int& info) { std::string candidate(word); // swap out each char one by one and try uppercase and neighbor // keyboard chars in its place to see if that makes a good word for (size_t i = 0, wl = candidate.size(); i < wl; ++i) { char tmpc = candidate[i]; // check with uppercase letters candidate[i] = csconv[((unsigned char)tmpc)].cupper; if (tmpc != candidate[i]) { testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); candidate[i] = tmpc; } // check neighbor characters in keyboard string if (ckey.empty()) continue; size_t loc = 0; while ((loc < ckeyl) && ckey[loc] != tmpc) ++loc; while (loc < ckeyl) { if ((loc > 0) && ckey[loc - 1] != '|') { candidate[i] = ckey[loc - 1]; testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); } if (((loc + 1) < ckeyl) && (ckey[loc + 1] != '|')) { candidate[i] = ckey[loc + 1]; testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); } do { loc++; } while ((loc < ckeyl) && ckey[loc] != tmpc); } candidate[i] = tmpc; } return wlst.size(); } // error is wrong char in place of correct one (case and keyboard related // version) int SuggestMgr::badcharkey_utf(std::vector& wlst, const std::vector& word, int cpdsuggest, int& info) { std::string candidate; std::vector candidate_utf(word); // swap out each char one by one and try all the tryme // chars in its place to see if that makes a good word for (size_t i = 0, wl = word.size(); i < wl; ++i) { w_char tmpc = candidate_utf[i]; // check with uppercase letters candidate_utf[i] = upper_utf(candidate_utf[i], 1); if (tmpc != candidate_utf[i]) { u16_u8(candidate, candidate_utf); testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); candidate_utf[i] = tmpc; } // check neighbor characters in keyboard string if (ckey_utf.empty()) continue; size_t loc = 0; while ((loc < ckeyl) && ckey_utf[loc] != tmpc) ++loc; while (loc < ckeyl) { if ((loc > 0) && ckey_utf[loc - 1] != W_VLINE) { candidate_utf[i] = ckey_utf[loc - 1]; u16_u8(candidate, candidate_utf); testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); } if (((loc + 1) < ckeyl) && (ckey_utf[loc + 1] != W_VLINE)) { candidate_utf[i] = ckey_utf[loc + 1]; u16_u8(candidate, candidate_utf); testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); } do { loc++; } while ((loc < ckeyl) && ckey_utf[loc] != tmpc); } candidate_utf[i] = tmpc; } return wlst.size(); } // error is wrong char in place of correct one int SuggestMgr::badchar(std::vector& wlst, const std::string& word, int cpdsuggest, int& info) { std::string candidate(word); clock_t timelimit = clock(); int timer = MINTIMER; // swap out each char one by one and try all the tryme // chars in its place to see if that makes a good word for (size_t j = 0; j < ctryl; ++j) { for (auto aI = candidate.rbegin(), aEnd = candidate.rend(); aI != aEnd; ++aI) { char tmpc = *aI; if (ctry[j] == tmpc) continue; *aI = ctry[j]; testsug(wlst, candidate, cpdsuggest, &timer, &timelimit, info); if (!timer) return wlst.size(); *aI = tmpc; } } return wlst.size(); } // error is wrong char in place of correct one int SuggestMgr::badchar_utf(std::vector& wlst, const std::vector& word, int cpdsuggest, int& info) { std::vector candidate_utf(word); std::string candidate; clock_t timelimit = clock(); int timer = MINTIMER; // swap out each char one by one and try all the tryme // chars in its place to see if that makes a good word for (size_t j = 0; j < ctryl; ++j) { for (auto aI = candidate_utf.rbegin(), aEnd = candidate_utf.rend(); aI != aEnd; ++aI) { w_char tmpc = *aI; if (tmpc == ctry_utf[j]) continue; *aI = ctry_utf[j]; u16_u8(candidate, candidate_utf); testsug(wlst, candidate, cpdsuggest, &timer, &timelimit, info); if (!timer) return wlst.size(); *aI = tmpc; } } return wlst.size(); } // error is word has an extra letter it does not need int SuggestMgr::extrachar_utf(std::vector& wlst, const std::vector& word, int cpdsuggest, int& info) { std::vector candidate_utf(word); if (candidate_utf.size() < 2) return wlst.size(); // try omitting one char of word at a time for (size_t i = 0; i < candidate_utf.size(); ++i) { size_t index = candidate_utf.size() - 1 - i; w_char tmpc = candidate_utf[index]; candidate_utf.erase(candidate_utf.begin() + index); std::string candidate; u16_u8(candidate, candidate_utf); testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); candidate_utf.insert(candidate_utf.begin() + index, tmpc); } return wlst.size(); } // error is word has an extra letter it does not need int SuggestMgr::extrachar(std::vector& wlst, const std::string& word, int cpdsuggest, int& info) { std::string candidate(word); if (candidate.size() < 2) return wlst.size(); // try omitting one char of word at a time for (size_t i = 0; i < candidate.size(); ++i) { size_t index = candidate.size() - 1 - i; char tmpc = candidate[index]; candidate.erase(candidate.begin() + index); testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); candidate.insert(candidate.begin() + index, tmpc); } return wlst.size(); } // error is missing a letter it needs int SuggestMgr::forgotchar(std::vector& wlst, const std::string& word, int cpdsuggest, int& info) { std::string candidate(word); clock_t timelimit = clock(); int timer = MINTIMER; // try inserting a tryme character before every letter (and the null // terminator) for (size_t k = 0; k < ctryl; ++k) { for (size_t i = 0; i <= candidate.size(); ++i) { size_t index = candidate.size() - i; candidate.insert(candidate.begin() + index, ctry[k]); testsug(wlst, candidate, cpdsuggest, &timer, &timelimit, info); if (!timer) return wlst.size(); candidate.erase(candidate.begin() + index); } } return wlst.size(); } // error is missing a letter it needs int SuggestMgr::forgotchar_utf(std::vector& wlst, const std::vector& word, int cpdsuggest, int& info) { std::vector candidate_utf(word); clock_t timelimit = clock(); int timer = MINTIMER; // try inserting a tryme character at the end of the word and before every // letter for (size_t k = 0; k < ctryl; ++k) { for (size_t i = 0; i <= candidate_utf.size(); ++i) { size_t index = candidate_utf.size() - i; candidate_utf.insert(candidate_utf.begin() + index, ctry_utf[k]); std::string candidate; u16_u8(candidate, candidate_utf); testsug(wlst, candidate, cpdsuggest, &timer, &timelimit, info); if (!timer) return wlst.size(); candidate_utf.erase(candidate_utf.begin() + index); } } return wlst.size(); } /* error is should have been two words * return value is true, if there is a dictionary word pair, * or there was already a good suggestion before calling * this function. */ bool SuggestMgr::twowords(std::vector& wlst, const std::string& word, int cpdsuggest, bool good, int& info) { int c2, forbidden = 0, cwrd, wl = word.size(); if (wl < 3) return false; if (langnum == LANG_hu) forbidden = check_forbidden(word); char* candidate = new char[wl + 2]; memcpy(candidate + 1, word.data(), wl); candidate[wl + 1] = 0; // split the string into two pieces after every char // if both pieces are good words make them a suggestion for (char* p = candidate + 1; p[1] != '\0'; p++) { p[-1] = *p; // go to end of the UTF-8 character while (utf8 && ((p[1] & 0xc0) == 0x80)) { *p = p[1]; p++; } if (utf8 && p[1] == '\0') break; // last UTF-8 character // Suggest only word pairs, if they are listed in the dictionary. // For example, adding "a lot" to the English dic file will // result only "alot" -> "a lot" suggestion instead of // "alto, slot, alt, lot, allot, aloft, aloe, clot, plot, blot, a lot". // Note: using "ph:alot" keeps the other suggestions: // a lot ph:alot // alot -> a lot, alto, slot... *p = ' '; if (!cpdsuggest && checkword(candidate, cpdsuggest, NULL, NULL)) { // remove not word pair suggestions if (!good) { good = true; wlst.clear(); } wlst.insert(wlst.begin(), candidate); } // word pairs with dash? if (lang_with_dash_usage) { *p = '-'; if (!cpdsuggest && checkword(candidate, cpdsuggest, NULL, NULL)) { // remove not word pair suggestions if (!good) { good = true; wlst.clear(); } wlst.insert(wlst.begin(), candidate); } } if (wlst.size() < maxSug && !nosplitsugs && !good) { *p = '\0'; int c1 = checkword(candidate, cpdsuggest, NULL, NULL); if (c1) { c2 = checkword((p + 1), cpdsuggest, NULL, NULL); if (c2) { // spec. Hungarian code (TODO need a better compound word support) if ((langnum == LANG_hu) && !forbidden && // if 3 repeating letter, use - instead of space (((p[-1] == p[1]) && (((p > candidate + 1) && (p[-1] == p[-2])) || (p[-1] == p[2]))) || // or multiple compounding, with more, than 6 syllables ((c1 == 3) && (c2 >= 2)))) *p = '-'; else *p = ' '; cwrd = std::find(wlst.begin(), wlst.end(), candidate) != wlst.end() ? 0 : 1; if (cwrd && (wlst.size() < maxSug)) wlst.emplace_back(candidate); // add two word suggestion with dash, depending on the language // Note that cwrd doesn't modified for REP twoword sugg. if ( !nosplitsugs && lang_with_dash_usage && mystrlen(p + 1) > 1 && mystrlen(candidate) - mystrlen(p) > 1) { *p = '-'; for (auto& k : wlst) { if (k == candidate) { cwrd = 0; break; } } if ((wlst.size() < maxSug) && cwrd) wlst.emplace_back(candidate); } } } } } delete[] candidate; return good; } // error is adjacent letter were swapped int SuggestMgr::swapchar(std::vector& wlst, const std::string& word, int cpdsuggest, int& info) { if (word.size() < 2) return wlst.size(); std::string candidate(word); // try swapping adjacent chars one by one for (size_t i = 0; i < candidate.size() - 1; ++i) { std::swap(candidate[i], candidate[i+1]); testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); std::swap(candidate[i], candidate[i+1]); } // try double swaps for short words // ahev -> have, owudl -> would if (candidate.size() == 4 || candidate.size() == 5) { candidate[0] = word[1]; candidate[1] = word[0]; candidate[2] = word[2]; candidate[candidate.size() - 2] = word[candidate.size() - 1]; candidate[candidate.size() - 1] = word[candidate.size() - 2]; testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); if (candidate.size() == 5) { candidate[0] = word[0]; candidate[1] = word[2]; candidate[2] = word[1]; testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); } } return wlst.size(); } // error is adjacent letter were swapped int SuggestMgr::swapchar_utf(std::vector& wlst, const std::vector& word, int cpdsuggest, int& info) { if (word.size() < 2) return wlst.size(); std::vector candidate_utf(word); std::string candidate; // try swapping adjacent chars one by one for (size_t i = 0; i < candidate_utf.size() - 1; ++i) { std::swap(candidate_utf[i], candidate_utf[i+1]); u16_u8(candidate, candidate_utf); testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); std::swap(candidate_utf[i], candidate_utf[i+1]); } // try double swaps for short words // ahev -> have, owudl -> would, suodn -> sound if (candidate_utf.size() == 4 || candidate_utf.size() == 5) { candidate_utf[0] = word[1]; candidate_utf[1] = word[0]; candidate_utf[2] = word[2]; candidate_utf[candidate_utf.size() - 2] = word[candidate_utf.size() - 1]; candidate_utf[candidate_utf.size() - 1] = word[candidate_utf.size() - 2]; u16_u8(candidate, candidate_utf); testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); if (candidate_utf.size() == 5) { candidate_utf[0] = word[0]; candidate_utf[1] = word[2]; candidate_utf[2] = word[1]; u16_u8(candidate, candidate_utf); testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); } } return wlst.size(); } // error is not adjacent letter were swapped int SuggestMgr::longswapchar(std::vector& wlst, const std::string& word, int cpdsuggest, int& info) { std::string candidate(word); // try swapping not adjacent chars one by one for (auto p = candidate.begin(); p < candidate.end(); ++p) { for (auto q = candidate.begin(); q < candidate.end(); ++q) { const auto distance = std::abs(std::distance(q, p)); if (distance > 1 && distance <= MAX_CHAR_DISTANCE) { std::swap(*p, *q); testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); std::swap(*p, *q); } } } return wlst.size(); } // error is adjacent letter were swapped int SuggestMgr::longswapchar_utf(std::vector& wlst, const std::vector& word, int cpdsuggest, int& info) { std::vector candidate_utf(word); // try swapping not adjacent chars for (auto p = candidate_utf.begin(); p < candidate_utf.end(); ++p) { for (auto q = candidate_utf.begin(); q < candidate_utf.end(); ++q) { const auto distance = std::abs(std::distance(q, p)); if (distance > 1 && distance <= MAX_CHAR_DISTANCE) { std::swap(*p, *q); std::string candidate; u16_u8(candidate, candidate_utf); testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); std::swap(*p, *q); } } } return wlst.size(); } // error is a letter was moved int SuggestMgr::movechar(std::vector& wlst, const std::string& word, int cpdsuggest, int& info) { if (word.size() < 2) return wlst.size(); std::string candidate(word); // try moving a char for (auto p = candidate.begin(); p < candidate.end(); ++p) { for (auto q = p + 1; q < candidate.end() && std::distance(p, q) <= MAX_CHAR_DISTANCE; ++q) { std::swap(*q, *(q - 1)); if (std::distance(p, q) < 2) continue; // omit swap char testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); } const auto word_iter = word.begin(); std::copy_n(word_iter, candidate.size(), candidate.begin()); } for (auto p = candidate.rbegin(), pEnd = candidate.rend() - 1; p != pEnd; ++p) { for (auto q = p + 1, qEnd = candidate.rend(); q != qEnd && std::distance(p, q) <= MAX_CHAR_DISTANCE; ++q) { std::swap(*q, *(q - 1)); if (std::distance(p, q) < 2) continue; // omit swap char testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); } const auto word_iter = word.begin(); std::copy_n(word_iter, candidate.size(), candidate.begin()); } return wlst.size(); } // error is a letter was moved int SuggestMgr::movechar_utf(std::vector& wlst, const std::vector& word, int cpdsuggest, int& info) { if (word.size() < 2) return wlst.size(); std::vector candidate_utf(word); // try moving a char for (auto p = candidate_utf.begin(); p < candidate_utf.end(); ++p) { for (auto q = p + 1; q < candidate_utf.end() && std::distance(p, q) <= MAX_CHAR_DISTANCE; ++q) { std::swap(*q, *(q - 1)); if (std::distance(p, q) < 2) continue; // omit swap char std::string candidate; u16_u8(candidate, candidate_utf); testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); } const auto word_iter = word.begin(); std::copy_n(word_iter, candidate_utf.size(), candidate_utf.begin()); } for (auto p = candidate_utf.rbegin(); p < candidate_utf.rend(); ++p) { for (auto q = p + 1; q < candidate_utf.rend() && std::distance(p, q) <= MAX_CHAR_DISTANCE; ++q) { std::swap(*q, *(q - 1)); if (std::distance(p, q) < 2) continue; // omit swap char std::string candidate; u16_u8(candidate, candidate_utf); testsug(wlst, candidate, cpdsuggest, NULL, NULL, info); } const auto word_iter = word.begin(); std::copy_n(word_iter, candidate_utf.size(), candidate_utf.begin()); } return wlst.size(); } // generate a set of suggestions for very poorly spelled words void SuggestMgr::ngsuggest(std::vector& wlst, const char* w, const std::vector& rHMgr, int captype) { int lval, sc, lp, lpphon, nonbmp = 0; // exhaustively search through all root words // keeping track of the MAX_ROOTS most similar root words struct hentry* roots[MAX_ROOTS]; char* rootsphon[MAX_ROOTS]; int scores[MAX_ROOTS]; int scoresphon[MAX_ROOTS]; for (int i = 0; i < MAX_ROOTS; i++) { roots[i] = NULL; scores[i] = -100 * i; rootsphon[i] = NULL; scoresphon[i] = -100 * i; } lp = MAX_ROOTS - 1; lpphon = MAX_ROOTS - 1; int low = NGRAM_LOWERING; std::string w2; const char* word = w; int nc; // word reversing wrapper for complex prefixes if (complexprefixes) { w2.assign(w); if (utf8) reverseword_utf(w2); else reverseword(w2); word = w2.c_str(); nc = (int)w2.size(); } else { nc = (int)strlen(word); } std::vector u8; int n = (utf8) ? u8_u16(u8, word) : nc; // set character based ngram suggestion for words with non-BMP Unicode // characters struct cs_info* origconv = csconv; if (n == -1) { utf8 = 0; // XXX not state-free if (!csconv) csconv = get_current_cs("iso88591"); // XXX not state-free n = nc; nonbmp = 1; low = 0; } struct hentry* hp = NULL; int col = -1; phonetable* ph = (pAMgr) ? pAMgr->get_phonetable() : NULL; std::string target; std::string candidate; std::vector w_candidate; if (ph) { if (utf8) { u8_u16(w_candidate, word); mkallcap_utf(w_candidate, langnum); u16_u8(candidate, w_candidate); } else { candidate.assign(word); if (!nonbmp) mkallcap(candidate, csconv); } target = phonet(candidate, *ph); // XXX phonet() is 8-bit (nc, not n) } FLAG forbiddenword = pAMgr ? pAMgr->get_forbiddenword() : FLAG_NULL; FLAG nosuggest = pAMgr ? pAMgr->get_nosuggest() : FLAG_NULL; FLAG nongramsuggest = pAMgr ? pAMgr->get_nongramsuggest() : FLAG_NULL; FLAG onlyincompound = pAMgr ? pAMgr->get_onlyincompound() : FLAG_NULL; std::vector w_word, w_target; if (utf8) { u8_u16(w_word, word); u8_u16(w_target, target); } std::string f; std::vector w_f; for (size_t i = 0; i < rHMgr.size(); ++i) { while (0 != (hp = rHMgr[i]->walk_hashtable(col, hp))) { // skip exceptions if ( // skip it, if the word length different by 5 or // more characters (to avoid strange suggestions) // (except Unicode characters over BMP) (((abs(n - hp->clen) > 4) && !nonbmp)) || // don't suggest capitalized dictionary words for // lower case misspellings in ngram suggestions, except // - PHONE usage, or // - in the case of German, where not only proper // nouns are capitalized, or // - the capitalized word has special pronunciation ((captype == NOCAP) && (hp->var & H_OPT_INITCAP) && !ph && (langnum != LANG_de) && !(hp->var & H_OPT_PHON)) || // or it has one of the following special flags ((hp->astr) && (pAMgr) && (TESTAFF(hp->astr, forbiddenword, hp->alen) || TESTAFF(hp->astr, ONLYUPCASEFLAG, hp->alen) || TESTAFF(hp->astr, nosuggest, hp->alen) || TESTAFF(hp->astr, nongramsuggest, hp->alen) || TESTAFF(hp->astr, onlyincompound, hp->alen))) ) continue; if (utf8) { u8_u16(w_f, HENTRY_WORD(hp)); int leftcommon = leftcommonsubstring(w_word, w_f); if (low) { // lowering dictionary word mkallsmall_utf(w_f, langnum); } sc = ngram(3, w_word, w_f, NGRAM_LONGER_WORSE) + leftcommon; } else { f.assign(HENTRY_WORD(hp)); int leftcommon = leftcommonsubstring(word, f.c_str()); if (low) { // lowering dictionary word mkallsmall(f, csconv); } sc = ngram(3, word, f, NGRAM_LONGER_WORSE) + leftcommon; } // check special pronunciation f.clear(); if ((hp->var & H_OPT_PHON) && copy_field(f, HENTRY_DATA(hp), MORPH_PHON)) { int sc2; if (utf8) { u8_u16(w_f, f); int leftcommon = leftcommonsubstring(w_word, w_f); if (low) { // lowering dictionary word mkallsmall_utf(w_f, langnum); } sc2 = ngram(3, w_word, w_f, NGRAM_LONGER_WORSE) + leftcommon; } else { int leftcommon = leftcommonsubstring(word, f.c_str()); if (low) { // lowering dictionary word mkallsmall(f, csconv); } sc2 = ngram(3, word, f, NGRAM_LONGER_WORSE) + leftcommon; } if (sc2 > sc) sc = sc2; } int scphon = -20000; if (ph && (sc > 2) && (abs(n - (int)hp->clen) <= 3)) { if (utf8) { u8_u16(w_candidate, HENTRY_WORD(hp)); mkallcap_utf(w_candidate, langnum); u16_u8(candidate, w_candidate); } else { candidate = HENTRY_WORD(hp); mkallcap(candidate, csconv); } f = phonet(candidate, *ph); if (utf8) { u8_u16(w_f, f); scphon = 2 * ngram(3, w_target, w_f, NGRAM_LONGER_WORSE); } else { scphon = 2 * ngram(3, target, f, NGRAM_LONGER_WORSE); } } if (sc > scores[lp]) { scores[lp] = sc; roots[lp] = hp; lval = sc; for (int j = 0; j < MAX_ROOTS; j++) if (scores[j] < lval) { lp = j; lval = scores[j]; } } if (scphon > scoresphon[lpphon]) { scoresphon[lpphon] = scphon; rootsphon[lpphon] = HENTRY_WORD(hp); lval = scphon; for (int j = 0; j < MAX_ROOTS; j++) if (scoresphon[j] < lval) { lpphon = j; lval = scoresphon[j]; } } } } // find minimum threshold for a passable suggestion // mangle original word three differnt ways // and score them to generate a minimum acceptable score std::vector w_mw; int thresh = 0; for (int sp = 1; sp < 4; sp++) { if (utf8) { w_mw = w_word; for (int k = sp; k < n; k += 4) { w_mw[k].l = '*'; w_mw[k].h = 0; } if (low) { // lowering dictionary word mkallsmall_utf(w_mw, langnum); } thresh += ngram(n, w_word, w_mw, NGRAM_ANY_MISMATCH); } else { std::string mw = word; for (int k = sp; k < n; k += 4) mw[k] = '*'; if (low) { // lowering dictionary word mkallsmall(mw, csconv); } thresh += ngram(n, word, mw, NGRAM_ANY_MISMATCH); } } thresh = thresh / 3; thresh--; // now expand affixes on each of these root words and // and use length adjusted ngram scores to select // possible suggestions char* guess[MAX_GUESS]; char* guessorig[MAX_GUESS]; int gscore[MAX_GUESS]; for (int i = 0; i < MAX_GUESS; i++) { guess[i] = NULL; guessorig[i] = NULL; gscore[i] = -100 * i; } lp = MAX_GUESS - 1; std::vector glst(MAX_WORDS); for (auto& root : roots) { if (root) { struct hentry* rp = root; f.clear(); const char *field = NULL; if ((rp->var & H_OPT_PHON) && copy_field(f, HENTRY_DATA(rp), MORPH_PHON)) field = f.c_str(); int nw = pAMgr->expand_rootword( glst.data(), MAX_WORDS, HENTRY_WORD(rp), rp->blen, rp->astr, rp->alen, word, nc, field); for (int k = 0; k < nw; k++) { if (utf8) { u8_u16(w_f, glst[k].word); int leftcommon = leftcommonsubstring(w_word, w_f); if (low) { // lowering dictionary word mkallsmall_utf(w_f, langnum); } sc = ngram(n, w_word, w_f, NGRAM_ANY_MISMATCH) + leftcommon; } else { f = glst[k].word; int leftcommon = leftcommonsubstring(word, f.c_str()); if (low) { // lowering dictionary word mkallsmall(f, csconv); } sc = ngram(n, word, f, NGRAM_ANY_MISMATCH) + leftcommon; } if (sc > thresh) { if (sc > gscore[lp]) { if (guess[lp]) { delete[] guess[lp]; if (guessorig[lp]) { delete[] guessorig[lp]; guessorig[lp] = NULL; } } gscore[lp] = sc; guess[lp] = glst[k].word; guessorig[lp] = glst[k].orig; lval = sc; for (int j = 0; j < MAX_GUESS; j++) if (gscore[j] < lval) { lp = j; lval = gscore[j]; } } else { delete[] glst[k].word; delete[] glst[k].orig; } } else { delete[] glst[k].word; delete[] glst[k].orig; } } } } glst.clear(); // now we are done generating guesses // sort in order of decreasing score bubblesort(&guess[0], &guessorig[0], &gscore[0], MAX_GUESS); if (ph) bubblesort(&rootsphon[0], NULL, &scoresphon[0], MAX_ROOTS); // weight suggestions with a similarity index, based on // the longest common subsequent algorithm and resort int is_swap = 0; int re = 0; double fact = 1.0; if (pAMgr) { int maxd = pAMgr->get_maxdiff(); if (maxd >= 0) fact = (10.0 - maxd) / 5.0; } std::vector w_gl; for (int i = 0; i < MAX_GUESS; i++) { if (guess[i]) { // lowering guess[i] std::string gl; int len; if (utf8) { len = u8_u16(w_gl, guess[i]); mkallsmall_utf(w_gl, langnum); u16_u8(gl, w_gl); } else { gl.assign(guess[i]); if (!nonbmp) mkallsmall(gl, csconv); len = strlen(guess[i]); } int _lcs = lcslen(word, gl.c_str()); // same characters with different casing if ((n == len) && (n == _lcs)) { gscore[i] += 2000; break; } // using 2-gram instead of 3, and other weightening if (utf8) { u8_u16(w_gl, gl); //w_gl is lowercase already at this point re = ngram(2, w_word, w_gl, NGRAM_ANY_MISMATCH | NGRAM_WEIGHTED); if (low) { w_f = w_word; // lowering dictionary word mkallsmall_utf(w_f, langnum); re += ngram(2, w_gl, w_f, NGRAM_ANY_MISMATCH | NGRAM_WEIGHTED); } else { re += ngram(2, w_gl, w_word, NGRAM_ANY_MISMATCH | NGRAM_WEIGHTED); } } else { //gl is lowercase already at this point re = ngram(2, word, gl, NGRAM_ANY_MISMATCH | NGRAM_WEIGHTED); if (low) { f = word; // lowering dictionary word mkallsmall(f, csconv); re += ngram(2, gl, f, NGRAM_ANY_MISMATCH | NGRAM_WEIGHTED); } else { re += ngram(2, gl, word, NGRAM_ANY_MISMATCH | NGRAM_WEIGHTED); } } int ngram_score, leftcommon_score; if (utf8) { //w_gl is lowercase already at this point ngram_score = ngram(4, w_word, w_gl, NGRAM_ANY_MISMATCH); leftcommon_score = leftcommonsubstring(w_word, w_gl); } else { //gl is lowercase already at this point ngram_score = ngram(4, word, gl, NGRAM_ANY_MISMATCH); leftcommon_score = leftcommonsubstring(word, gl.c_str()); } gscore[i] = // length of longest common subsequent minus length difference 2 * _lcs - abs((int)(n - len)) + // weight length of the left common substring leftcommon_score + // weight equal character positions (!nonbmp && commoncharacterpositions(word, gl.c_str(), &is_swap) ? 1 : 0) + // swap character (not neighboring) ((is_swap) ? 10 : 0) + // ngram ngram_score + // weighted ngrams re + // different limit for dictionaries with PHONE rules (ph ? (re < len * fact ? -1000 : 0) : (re < (n + len) * fact ? -1000 : 0)); } } bubblesort(&guess[0], &guessorig[0], &gscore[0], MAX_GUESS); // phonetic version if (ph) for (int i = 0; i < MAX_ROOTS; i++) { if (rootsphon[i]) { // lowering rootphon[i] std::string gl; int len; if (utf8) { len = u8_u16(w_gl, rootsphon[i]); mkallsmall_utf(w_gl, langnum); u16_u8(gl, w_gl); } else { gl.assign(rootsphon[i]); if (!nonbmp) mkallsmall(gl, csconv); len = strlen(rootsphon[i]); } // weight length of the left common substring int leftcommon_score; if (utf8) leftcommon_score = leftcommonsubstring(w_word, w_gl); else leftcommon_score = leftcommonsubstring(word, gl.c_str()); // heuristic weigthing of ngram scores scoresphon[i] += 2 * lcslen(word, gl) - abs((int)(n - len)) + leftcommon_score; } } if (ph) bubblesort(&rootsphon[0], NULL, &scoresphon[0], MAX_ROOTS); // copy over size_t oldns = wlst.size(); int same = 0; for (int i = 0; i < MAX_GUESS; i++) { if (guess[i]) { if ((wlst.size() < oldns + maxngramsugs) && (wlst.size() < maxSug) && (!same || (gscore[i] > 1000))) { int unique = 1; // leave only excellent suggestions, if exists if (gscore[i] > 1000) same = 1; else if (gscore[i] < -100) { same = 1; // keep the best ngram suggestions, unless in ONLYMAXDIFF mode if (wlst.size() > oldns || (pAMgr && pAMgr->get_onlymaxdiff())) { delete[] guess[i]; delete[] guessorig[i]; continue; } } for (auto& j : wlst) { // don't suggest previous suggestions or a previous suggestion with // prefixes or affixes if ((!guessorig[i] && strstr(guess[i], j.c_str())) || (guessorig[i] && strstr(guessorig[i], j.c_str())) || // check forbidden words !checkword(guess[i], 0, NULL, NULL)) { unique = 0; break; } } if (unique) { if (guessorig[i]) { wlst.emplace_back(guessorig[i]); } else { wlst.emplace_back(guess[i]); } } delete[] guess[i]; delete[] guessorig[i]; } else { delete[] guess[i]; delete[] guessorig[i]; } } } oldns = wlst.size(); if (ph) for (auto& i : rootsphon) { if (i) { if ((wlst.size() < oldns + MAXPHONSUGS) && (wlst.size() < maxSug)) { int unique = 1; for (auto& j : wlst) { // don't suggest previous suggestions or a previous suggestion with // prefixes or affixes if (strstr(i, j.c_str()) || // check forbidden words !checkword(i, 0, NULL, NULL)) { unique = 0; break; } } if (unique) { wlst.emplace_back(i); } } } } if (nonbmp) { csconv = origconv; utf8 = 1; } } // see if a candidate suggestion is spelled correctly // needs to check both root words and words with affixes // obsolote MySpell-HU modifications: // return value 2 and 3 marks compounding with hyphen (-) // `3' marks roots without suffix int SuggestMgr::checkword(const std::string& word, int cpdsuggest, int* timer, clock_t* timelimit) { // check time limit if (timer) { (*timer)--; if (!(*timer) && timelimit) { if ((clock() - *timelimit) > TIMELIMIT) return 0; *timer = MAXPLUSTIMER; } } if (pAMgr) { struct hentry* rv = NULL; int nosuffix = 0; if (cpdsuggest >= 1) { if (pAMgr->get_compound()) { struct hentry* rv2 = NULL; struct hentry* rwords[100]; // buffer for COMPOUND pattern checking int info = (cpdsuggest == 1) ? SPELL_COMPOUND_2 : 0; rv = pAMgr->compound_check(word, 0, 0, 100, 0, NULL, (hentry**)&rwords, 0, 1, &info); // EXT // TODO filter 3-word or more compound words, as in spell() // (it's too slow to call suggest() here for all possible compound words) if (rv && (!(rv2 = pAMgr->lookup(word.c_str(), word.size())) || !rv2->astr || !(TESTAFF(rv2->astr, pAMgr->get_forbiddenword(), rv2->alen) || TESTAFF(rv2->astr, pAMgr->get_nosuggest(), rv2->alen)))) return 3; // XXX obsolote categorisation + only ICONV needs affix // flag check? } return 0; } rv = pAMgr->lookup(word.c_str(), word.size()); if (rv) { if ((rv->astr) && (TESTAFF(rv->astr, pAMgr->get_forbiddenword(), rv->alen) || TESTAFF(rv->astr, pAMgr->get_nosuggest(), rv->alen) || TESTAFF(rv->astr, pAMgr->get_substandard(), rv->alen))) return 0; while (rv) { if (rv->astr && (TESTAFF(rv->astr, pAMgr->get_needaffix(), rv->alen) || TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen) || TESTAFF(rv->astr, pAMgr->get_onlyincompound(), rv->alen))) { rv = rv->next_homonym; } else break; } } else rv = pAMgr->prefix_check(word, 0, word.size(), 0); // only prefix, and prefix + suffix XXX if (rv) { nosuffix = 1; } else { rv = pAMgr->suffix_check(word, 0, word.size(), 0, NULL, FLAG_NULL, FLAG_NULL, IN_CPD_NOT); // only suffix } if (!rv && pAMgr->have_contclass()) { rv = pAMgr->suffix_check_twosfx(word, 0, word.size(), 0, NULL, FLAG_NULL); if (!rv) rv = pAMgr->prefix_check_twosfx(word, 0, word.size(), 0, FLAG_NULL); } // check forbidden words if ((rv) && (rv->astr) && (TESTAFF(rv->astr, pAMgr->get_forbiddenword(), rv->alen) || TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen) || TESTAFF(rv->astr, pAMgr->get_nosuggest(), rv->alen) || TESTAFF(rv->astr, pAMgr->get_onlyincompound(), rv->alen))) return 0; if (rv) { // XXX obsolote if ((pAMgr->get_compoundflag()) && TESTAFF(rv->astr, pAMgr->get_compoundflag(), rv->alen)) return 2 + nosuffix; return 1; } } return 0; } int SuggestMgr::check_forbidden(const std::string& word) { if (pAMgr) { struct hentry* rv = pAMgr->lookup(word.c_str(), word.size()); if (rv && rv->astr && (TESTAFF(rv->astr, pAMgr->get_needaffix(), rv->alen) || TESTAFF(rv->astr, pAMgr->get_onlyincompound(), rv->alen))) rv = NULL; size_t len = word.size(); if (!(pAMgr->prefix_check(word, 0, len, 1))) rv = pAMgr->suffix_check(word, 0, len, 0, NULL, FLAG_NULL, FLAG_NULL, IN_CPD_NOT); // prefix+suffix, suffix // check forbidden words if ((rv) && (rv->astr) && TESTAFF(rv->astr, pAMgr->get_forbiddenword(), rv->alen)) return 1; } return 0; } std::string SuggestMgr::suggest_morph(const std::string& in_w) { std::string result; struct hentry* rv = NULL; if (!pAMgr) return {}; std::string w(in_w); // word reversing wrapper for complex prefixes if (complexprefixes) { if (utf8) reverseword_utf(w); else reverseword(w); } rv = pAMgr->lookup(w.c_str(), w.size()); while (rv) { if ((!rv->astr) || !(TESTAFF(rv->astr, pAMgr->get_forbiddenword(), rv->alen) || TESTAFF(rv->astr, pAMgr->get_needaffix(), rv->alen) || TESTAFF(rv->astr, pAMgr->get_onlyincompound(), rv->alen))) { if (!HENTRY_FIND(rv, MORPH_STEM)) { result.push_back(MSEP_FLD); result.append(MORPH_STEM); result.append(w); } if (HENTRY_DATA(rv)) { result.push_back(MSEP_FLD); result.append(HENTRY_DATA2(rv)); } result.push_back(MSEP_REC); } rv = rv->next_homonym; } std::string st = pAMgr->affix_check_morph(w, 0, w.size()); if (!st.empty()) { result.append(st); } if (pAMgr->get_compound() && result.empty()) { struct hentry* rwords[100]; // buffer for COMPOUND pattern checking pAMgr->compound_check_morph(w, 0, 0, 100, 0, NULL, (hentry**)&rwords, 0, result, NULL); } line_uniq(result, MSEP_REC); return result; } static int get_sfxcount(const char* morph) { if (!morph || !*morph) return 0; int n = 0; const char* old = morph; morph = strstr(morph, MORPH_DERI_SFX); if (!morph) morph = strstr(old, MORPH_INFL_SFX); if (!morph) morph = strstr(old, MORPH_TERM_SFX); while (morph) { n++; old = morph; morph = strstr(morph + 1, MORPH_DERI_SFX); if (!morph) morph = strstr(old + 1, MORPH_INFL_SFX); if (!morph) morph = strstr(old + 1, MORPH_TERM_SFX); } return n; } /* affixation */ std::string SuggestMgr::suggest_hentry_gen(hentry* rv, const char* pattern) { std::string result; int sfxcount = get_sfxcount(pattern); if (get_sfxcount(HENTRY_DATA(rv)) > sfxcount) return result; if (HENTRY_DATA(rv)) { std::string aff = pAMgr->morphgen(HENTRY_WORD(rv), rv->blen, rv->astr, rv->alen, HENTRY_DATA(rv), pattern, 0); if (!aff.empty()) { result.append(aff); result.push_back(MSEP_REC); } } // check all allomorphs char* p = NULL; if (HENTRY_DATA(rv)) p = (char*)strstr(HENTRY_DATA2(rv), MORPH_ALLOMORPH); while (p) { p += MORPH_TAG_LEN; int plen = fieldlen(p); std::string allomorph(p, plen); struct hentry* rv2 = pAMgr->lookup(allomorph.c_str(), allomorph.size()); while (rv2) { // if (HENTRY_DATA(rv2) && get_sfxcount(HENTRY_DATA(rv2)) <= // sfxcount) { if (HENTRY_DATA(rv2)) { char* st = (char*)strstr(HENTRY_DATA2(rv2), MORPH_STEM); if (st && (strncmp(st + MORPH_TAG_LEN, HENTRY_WORD(rv), fieldlen(st + MORPH_TAG_LEN)) == 0)) { std::string aff = pAMgr->morphgen(HENTRY_WORD(rv2), rv2->blen, rv2->astr, rv2->alen, HENTRY_DATA(rv2), pattern, 0); if (!aff.empty()) { result.append(aff); result.push_back(MSEP_REC); } } } rv2 = rv2->next_homonym; } p = strstr(p + plen, MORPH_ALLOMORPH); } return result; } std::string SuggestMgr::suggest_gen(const std::vector& desc, const std::string& in_pattern) { if (desc.empty() || !pAMgr) return {}; const char* pattern = in_pattern.c_str(); std::string result2; std::string newpattern; struct hentry* rv = NULL; // search affixed forms with and without derivational suffixes while (1) { for (size_t k = 0; k < desc.size(); ++k) { std::string result; // add compound word parts (except the last one) const char* s = desc[k].c_str(); const char* part = strstr(s, MORPH_PART); if (part) { const char* nextpart = strstr(part + 1, MORPH_PART); while (nextpart) { std::string field; copy_field(field, part, MORPH_PART); result.append(field); part = nextpart; nextpart = strstr(part + 1, MORPH_PART); } s = part; } std::string tok(s); size_t pos = tok.find(" | "); while (pos != std::string::npos) { tok[pos + 1] = MSEP_ALT; pos = tok.find(" | ", pos); } std::vector pl = line_tok(tok, MSEP_ALT); for (auto& i : pl) { // remove inflectional and terminal suffixes size_t is = i.find(MORPH_INFL_SFX); if (is != std::string::npos) i.resize(is); size_t ts = i.find(MORPH_TERM_SFX); while (ts != std::string::npos) { i[ts] = '_'; ts = i.find(MORPH_TERM_SFX); } const char* st = strstr(s, MORPH_STEM); if (st) { copy_field(tok, st, MORPH_STEM); rv = pAMgr->lookup(tok.c_str(), tok.size()); while (rv) { std::string newpat(i); newpat.append(pattern); std::string sg = suggest_hentry_gen(rv, newpat.c_str()); if (sg.empty()) sg = suggest_hentry_gen(rv, pattern); if (!sg.empty()) { std::vector gen = line_tok(sg, MSEP_REC); for (auto& j : gen) { result2.push_back(MSEP_REC); result2.append(result); if (i.find(MORPH_SURF_PFX) != std::string::npos) { std::string field; copy_field(field, i, MORPH_SURF_PFX); result2.append(field); } result2.append(j); } } rv = rv->next_homonym; } } } } if (!result2.empty() || !strstr(pattern, MORPH_DERI_SFX)) break; newpattern.assign(pattern); mystrrep(newpattern, MORPH_DERI_SFX, MORPH_TERM_SFX); pattern = newpattern.c_str(); } return result2; } // generate an n-gram score comparing s1 and s2, UTF16 version int SuggestMgr::ngram(int n, const std::vector& su1, const std::vector& su2, int opt) { int nscore = 0, ns, test = 0, l1 = su1.size(), l2 = su2.size(); if (l2 == 0) return 0; for (int j = 1; j <= n; j++) { ns = 0; for (int i = 0; i <= (l1 - j); i++) { int k = 0; for (int l = 0; l <= (l2 - j); l++) { for (k = 0; k < j; k++) { if (su1[i + k] != su2[l + k]) break; } if (k == j) { ns++; break; } } if (k != j && opt & NGRAM_WEIGHTED) { ns--; test++; if (i == 0 || i == l1 - j) ns--; // side weight } } nscore = nscore + ns; if (ns < 2 && !(opt & NGRAM_WEIGHTED)) break; } ns = 0; if (opt & NGRAM_LONGER_WORSE) ns = (l2 - l1) - 2; if (opt & NGRAM_ANY_MISMATCH) ns = abs(l2 - l1) - 2; ns = (nscore - ((ns > 0) ? ns : 0)); return ns; } // generate an n-gram score comparing s1 and s2, non-UTF16 version int SuggestMgr::ngram(int n, const std::string& s1, const std::string& s2, int opt) { int nscore = 0, ns, l1, l2 = s2.size(), test = 0; if (l2 == 0) return 0; l1 = s1.size(); for (int j = 1; j <= n; j++) { ns = 0; for (int i = 0; i <= (l1 - j); i++) { //s2 is haystack, s1[i..i+j) is needle if (s2.find(s1.c_str()+i, 0, j) != std::string::npos) { ns++; } else if (opt & NGRAM_WEIGHTED) { ns--; test++; if (i == 0 || i == l1 - j) ns--; // side weight } } nscore = nscore + ns; if (ns < 2 && !(opt & NGRAM_WEIGHTED)) break; } ns = 0; if (opt & NGRAM_LONGER_WORSE) ns = (l2 - l1) - 2; if (opt & NGRAM_ANY_MISMATCH) ns = abs(l2 - l1) - 2; ns = (nscore - ((ns > 0) ? ns : 0)); return ns; } // length of the left common substring of s1 and (decapitalised) s2, UTF version int SuggestMgr::leftcommonsubstring( const std::vector& su1, const std::vector& su2) { int l1 = su1.size(), l2 = su2.size(); // decapitalize dictionary word if (complexprefixes) { if (l1 && l2 && su1[l1 - 1] == su2[l2 - 1]) return 1; } else { unsigned short idx = su2.empty() ? 0 : (unsigned short)(su2[0]), otheridx = su1.empty() ? 0 : (unsigned short)(su1[0]); if (otheridx != idx && (otheridx != unicodetolower(idx, langnum))) return 0; int i; for (i = 1; (i < l1) && (i < l2) && (su1[i] == su2[i]); i++) ; return i; } return 0; } // length of the left common substring of s1 and (decapitalised) s2, non-UTF int SuggestMgr::leftcommonsubstring( const char* s1, const char* s2) { if (complexprefixes) { int l1 = strlen(s1), l2 = strlen(s2); if (l1 && l1 <= l2 && s2[l1 - 1] == s2[l2 - 1]) return 1; } else if (csconv) { const char* olds = s1; // decapitalise dictionary word if ((*s1 != *s2) && (*s1 != csconv[((unsigned char)*s2)].clower)) return 0; do { s1++; s2++; } while ((*s1 == *s2) && (*s1 != '\0')); return (int)(s1 - olds); } return 0; } int SuggestMgr::commoncharacterpositions(const char* s1, const char* s2, int* is_swap) { int num = 0, diff = 0, diffpos[2]; *is_swap = 0; if (utf8) { std::vector su1; std::vector su2; int l1 = u8_u16(su1, s1), l2 = u8_u16(su2, s2); if (l1 <= 0 || l2 <= 0) return 0; // decapitalize dictionary word if (complexprefixes) { su2[l2 - 1] = lower_utf(su2[l2 - 1], langnum); } else { su2[0] = lower_utf(su2[0], langnum); } for (int i = 0; (i < l1) && (i < l2); i++) { if (su1[i] == su2[i]) { num++; } else { if (diff < 2) diffpos[diff] = i; diff++; } } if ((diff == 2) && (l1 == l2) && (su1[diffpos[0]] == su2[diffpos[1]]) && (su1[diffpos[1]] == su2[diffpos[0]])) *is_swap = 1; } else { size_t i; std::string t(s2); // decapitalize dictionary word if (complexprefixes) { size_t l2 = t.size(); t[l2 - 1] = csconv[(unsigned char)t[l2 - 1]].clower; } else { mkallsmall(t, csconv); } for (i = 0; i < t.size() && (*(s1 + i) != 0); ++i) { if (*(s1 + i) == t[i]) { num++; } else { if (diff < 2) diffpos[diff] = i; diff++; } } if ((diff == 2) && (*(s1 + i) == 0) && i == t.size() && (*(s1 + diffpos[0]) == t[diffpos[1]]) && (*(s1 + diffpos[1]) == t[diffpos[0]])) *is_swap = 1; } return num; } int SuggestMgr::mystrlen(const char* word) { if (utf8) { std::vector w; return u8_u16(w, word); } else return strlen(word); } // sort in decreasing order of score void SuggestMgr::bubblesort(char** rword, char** rword2, int* rsc, int n) { int m = 1; while (m < n) { int j = m; while (j > 0) { if (rsc[j - 1] < rsc[j]) { int sctmp = rsc[j - 1]; char* wdtmp = rword[j - 1]; rsc[j - 1] = rsc[j]; rword[j - 1] = rword[j]; rsc[j] = sctmp; rword[j] = wdtmp; if (rword2) { wdtmp = rword2[j - 1]; rword2[j - 1] = rword2[j]; rword2[j] = wdtmp; } j--; } else break; } m++; } } // longest common subsequence char* SuggestMgr::lcs(const char* s, const char* s2, int* l1, int* l2) { int n, m, i, j; std::vector su; std::vector su2; if (utf8) { m = u8_u16(su, s); n = u8_u16(su2, s2); } else { m = strlen(s); n = strlen(s2); } char* c = new char[(m + 1) * (n + 1)]; char* b = new char[(m + 1) * (n + 1)]; for (i = 1; i <= m; i++) c[i * (n + 1)] = 0; for (j = 0; j <= n; j++) c[j] = 0; for (i = 1; i <= m; i++) { for (j = 1; j <= n; j++) { if (((utf8) && (su[i - 1] == su2[j - 1])) || ((!utf8) && (s[i - 1] == s2[j - 1]))) { c[i * (n + 1) + j] = c[(i - 1) * (n + 1) + j - 1] + 1; b[i * (n + 1) + j] = LCS_UPLEFT; } else if (c[(i - 1) * (n + 1) + j] >= c[i * (n + 1) + j - 1]) { c[i * (n + 1) + j] = c[(i - 1) * (n + 1) + j]; b[i * (n + 1) + j] = LCS_UP; } else { c[i * (n + 1) + j] = c[i * (n + 1) + j - 1]; b[i * (n + 1) + j] = LCS_LEFT; } } } delete[] c; *l1 = m; *l2 = n; return b; } int SuggestMgr::lcslen(const char* s, const char* s2) { int m, n, len = 0; char* result = lcs(s, s2, &m, &n); int i = m, j = n; while ((i != 0) && (j != 0)) { if (result[i * (n + 1) + j] == LCS_UPLEFT) { len++; i--; j--; } else if (result[i * (n + 1) + j] == LCS_UP) { i--; } else j--; } delete[] result; return len; } int SuggestMgr::lcslen(const std::string& s, const std::string& s2) { return lcslen(s.c_str(), s2.c_str()); } hunspell-1.7.2/src/hunspell/affixmgr.hxx0000664000175000017500000003566514352160534015275 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /* * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada * And Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. All modifications to the source code must be clearly marked as * such. Binary redistributions based on modified source code * must be clearly marked as modified versions in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifndef AFFIXMGR_HXX_ #define AFFIXMGR_HXX_ #include #include #include #include "atypes.hxx" #include "baseaffix.hxx" #include "hashmgr.hxx" #include "phonet.hxx" #include "replist.hxx" // check flag duplication #define dupSFX (1 << 0) #define dupPFX (1 << 1) class PfxEntry; class SfxEntry; class AffixMgr { PfxEntry* pStart[SETSIZE]; SfxEntry* sStart[SETSIZE]; PfxEntry* pFlag[SETSIZE]; SfxEntry* sFlag[SETSIZE]; const std::vector& alldic; const HashMgr* pHMgr; std::string keystring; std::string trystring; std::string encoding; struct cs_info* csconv; int utf8; int complexprefixes; FLAG compoundflag; FLAG compoundbegin; FLAG compoundmiddle; FLAG compoundend; FLAG compoundroot; FLAG compoundforbidflag; FLAG compoundpermitflag; int compoundmoresuffixes; int checkcompounddup; int checkcompoundrep; int checkcompoundcase; int checkcompoundtriple; int simplifiedtriple; FLAG forbiddenword; FLAG nosuggest; FLAG nongramsuggest; FLAG needaffix; int cpdmin; RepList* iconvtable; RepList* oconvtable; bool parsedmaptable; std::vector maptable; bool parsedbreaktable; std::vector breaktable; bool parsedcheckcpd; std::vector checkcpdtable; int simplifiedcpd; bool parseddefcpd; std::vector defcpdtable; phonetable* phone; int maxngramsugs; int maxcpdsugs; int maxdiff; int onlymaxdiff; int nosplitsugs; int sugswithdots; int cpdwordmax; int cpdmaxsyllable; std::string cpdvowels; // vowels (for calculating of Hungarian compounding limit, std::vector cpdvowels_utf16; //vowels for UTF-8 encoding std::string cpdsyllablenum; // syllable count incrementing flag const char* pfxappnd; // BUG: not stateless const char* sfxappnd; // BUG: not stateless int sfxextra; // BUG: not stateless FLAG sfxflag; // BUG: not stateless char* derived; // BUG: not stateless SfxEntry* sfx; // BUG: not stateless PfxEntry* pfx; // BUG: not stateless int checknum; std::string wordchars; // letters + spec. word characters std::vector wordchars_utf16; std::string ignorechars; // letters + spec. word characters std::vector ignorechars_utf16; std::string version; // affix and dictionary file version string std::string lang; // language int langnum; FLAG lemma_present; FLAG circumfix; FLAG onlyincompound; FLAG keepcase; FLAG forceucase; FLAG warn; int forbidwarn; FLAG substandard; int checksharps; int fullstrip; int havecontclass; // boolean variable char contclasses[CONTSIZE]; // flags of possible continuing classes (twofold // affix) public: AffixMgr(const char* affpath, const std::vector& ptr, const char* key = NULL); ~AffixMgr(); struct hentry* affix_check(const std::string& word, int start, int len, const unsigned short needflag = (unsigned short)0, char in_compound = IN_CPD_NOT); struct hentry* prefix_check(const std::string& word, int start, int len, char in_compound, const FLAG needflag = FLAG_NULL); inline int isSubset(const char* s1, const char* s2); struct hentry* prefix_check_twosfx(const std::string& word, int start, int len, char in_compound, const FLAG needflag = FLAG_NULL); inline int isRevSubset(const char* s1, const char* end_of_s2, int len); struct hentry* suffix_check(const std::string& word, int start, int len, int sfxopts, PfxEntry* ppfx, const FLAG cclass = FLAG_NULL, const FLAG needflag = FLAG_NULL, char in_compound = IN_CPD_NOT); struct hentry* suffix_check_twosfx(const std::string& word, int start, int len, int sfxopts, PfxEntry* ppfx, const FLAG needflag = FLAG_NULL); std::string affix_check_morph(const std::string& word, int start, int len, const FLAG needflag = FLAG_NULL, char in_compound = IN_CPD_NOT); std::string prefix_check_morph(const std::string& word, int start, int len, char in_compound, const FLAG needflag = FLAG_NULL); std::string suffix_check_morph(const std::string& word, int start, int len, int sfxopts, PfxEntry* ppfx, const FLAG cclass = FLAG_NULL, const FLAG needflag = FLAG_NULL, char in_compound = IN_CPD_NOT); std::string prefix_check_twosfx_morph(const std::string& word, int start, int len, char in_compound, const FLAG needflag = FLAG_NULL); std::string suffix_check_twosfx_morph(const std::string& word, int start, int len, int sfxopts, PfxEntry* ppfx, const FLAG needflag = FLAG_NULL); std::string morphgen(const char* ts, int wl, const unsigned short* ap, unsigned short al, const char* morph, const char* targetmorph, int level); int expand_rootword(struct guessword* wlst, int maxn, const char* ts, int wl, const unsigned short* ap, unsigned short al, const char* bad, int, const char*); short get_syllable(const std::string& word); int cpdrep_check(const std::string& word, int len); int cpdwordpair_check(const std::string& word, int len); int cpdpat_check(const std::string& word, int len, hentry* r1, hentry* r2, const char affixed); int defcpd_check(hentry*** words, short wnum, hentry* rv, hentry** rwords, char all); int cpdcase_check(const std::string& word, int len); inline int candidate_check(const std::string& word); void setcminmax(int* cmin, int* cmax, const char* word, int len); struct hentry* compound_check(const std::string& word, short wordnum, short numsyllable, short maxwordnum, short wnum, hentry** words, hentry** rwords, char hu_mov_rule, char is_sug, int* info); int compound_check_morph(const std::string& word, short wordnum, short numsyllable, short maxwordnum, short wnum, hentry** words, hentry** rwords, char hu_mov_rule, std::string& result, const std::string* partresult); std::vector get_suffix_words(short unsigned* suff, int len, const std::string& root_word); struct hentry* lookup(const char* word, size_t len); const std::vector& get_reptable() const; RepList* get_iconvtable() const; RepList* get_oconvtable() const; struct phonetable* get_phonetable() const; const std::vector& get_maptable() const; const std::vector& get_breaktable() const; const std::string& get_encoding(); int get_langnum() const; const std::string& get_key_string(); const std::string& get_try_string() const; const std::string& get_wordchars() const; const std::vector& get_wordchars_utf16() const; const char* get_ignore() const; const std::vector& get_ignore_utf16() const; int get_compound() const; FLAG get_compoundflag() const; FLAG get_forbiddenword() const; FLAG get_nosuggest() const; FLAG get_nongramsuggest() const; FLAG get_substandard() const; FLAG get_needaffix() const; FLAG get_onlyincompound() const; const char* get_derived() const; const std::string& get_version() const; int have_contclass() const; int get_utf8() const; int get_complexprefixes() const; char* get_suffixed(char) const; int get_maxngramsugs() const; int get_maxcpdsugs() const; int get_maxdiff() const; int get_onlymaxdiff() const; int get_nosplitsugs() const; int get_sugswithdots(void) const; FLAG get_keepcase(void) const; FLAG get_forceucase(void) const; FLAG get_warn(void) const; int get_forbidwarn(void) const; int get_checksharps(void) const; std::string encode_flag(unsigned short aflag) const; int get_fullstrip() const; private: int parse_file(const char* affpath, const char* key); bool parse_flag(const std::string& line, unsigned short* out, FileMgr* af); bool parse_num(const std::string& line, int* out, FileMgr* af); bool parse_cpdsyllable(const std::string& line, FileMgr* af); bool parse_convtable(const std::string& line, FileMgr* af, RepList** rl, const std::string& keyword); bool parse_phonetable(const std::string& line, FileMgr* af); bool parse_maptable(const std::string& line, FileMgr* af); bool parse_breaktable(const std::string& line, FileMgr* af); bool parse_checkcpdtable(const std::string& line, FileMgr* af); bool parse_defcpdtable(const std::string& line, FileMgr* af); bool parse_affix(const std::string& line, const char at, FileMgr* af, char* dupflags); void reverse_condition(std::string&); std::string& debugflag(std::string& result, unsigned short flag); int condlen(const std::string& s); int encodeit(AffEntry& entry, const std::string& cs); int build_pfxtree(PfxEntry* pfxptr); int build_sfxtree(SfxEntry* sfxptr); int process_pfx_order(); int process_sfx_order(); PfxEntry* process_pfx_in_order(PfxEntry* ptr, PfxEntry* nptr); SfxEntry* process_sfx_in_order(SfxEntry* ptr, SfxEntry* nptr); int process_pfx_tree_to_list(); int process_sfx_tree_to_list(); int redundant_condition(char, const std::string& strip, const std::string& cond, int); void finishFileMgr(FileMgr* afflst); }; #endif hunspell-1.7.2/src/hunspell/phonet.hxx0000644000175000017500000000311313422074107014741 00000000000000/* phonetic.c - generic replacement aglogithms for phonetic transformation Copyright (C) 2000 Bjoern Jacke This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation; This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; If not, see . Changelog: 2000-01-05 Bjoern Jacke Initial Release insprired by the article about phonetic transformations out of c't 25/1999 2007-07-26 Bjoern Jacke Released under MPL/GPL/LGPL tri-license for Hunspell 2007-08-23 Laszlo Nemeth Porting from Aspell to Hunspell using C-like structs */ #ifndef PHONET_HXX_ #define PHONET_HXX_ #define HASHSIZE 256 #define MAXPHONETLEN 256 #define MAXPHONETUTF8LEN (MAXPHONETLEN * 4) #include "hunvisapi.h" struct phonetable { char utf8; std::vector rules; int hash[HASHSIZE]; }; LIBHUNSPELL_DLL_EXPORTED void init_phonet_hash(phonetable& parms); LIBHUNSPELL_DLL_EXPORTED std::string phonet(const std::string& inword, phonetable& phone); #endif hunspell-1.7.2/src/hunspell/Makefile.in0000664000175000017500000006137314353370163015003 00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = src/hunspell ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/visibility.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(libhunspell_1_7_include_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = hunvisapi.h CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" \ "$(DESTDIR)$(libhunspell_1_7_includedir)" LTLIBRARIES = $(lib_LTLIBRARIES) libhunspell_1_7_la_LIBADD = am_libhunspell_1_7_la_OBJECTS = affentry.lo affixmgr.lo csutil.lo \ filemgr.lo hashmgr.lo hunspell.lo hunzip.lo phonet.lo \ replist.lo suggestmgr.lo nodist_libhunspell_1_7_la_OBJECTS = libhunspell_1_7_la_OBJECTS = $(am_libhunspell_1_7_la_OBJECTS) \ $(nodist_libhunspell_1_7_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libhunspell_1_7_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(libhunspell_1_7_la_LDFLAGS) \ $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libhunspell_1_7_la_SOURCES) \ $(nodist_libhunspell_1_7_la_SOURCES) DIST_SOURCES = $(libhunspell_1_7_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(libhunspell_1_7_include_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/hunvisapi.h.in \ $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CURSESLIB = @CURSESLIB@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HUNSPELL_VERSION_MAJOR = @HUNSPELL_VERSION_MAJOR@ HUNSPELL_VERSION_MINOR = @HUNSPELL_VERSION_MINOR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ READLINELIB = @READLINELIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ lib_LTLIBRARIES = libhunspell-1.7.la libhunspell_1_7_includedir = $(includedir)/hunspell libhunspell_1_7_la_SOURCES = affentry.cxx affentry.hxx affixmgr.cxx affixmgr.hxx \ atypes.hxx baseaffix.hxx csutil.cxx csutil.hxx \ filemgr.cxx filemgr.hxx hashmgr.cxx hashmgr.hxx \ htypes.hxx hunspell.cxx hunspell.h hunspell.hxx \ hunzip.cxx hunzip.hxx langnum.hxx \ phonet.cxx phonet.hxx replist.cxx replist.hxx \ suggestmgr.cxx suggestmgr.hxx utf_info.hxx w_char.hxx nodist_libhunspell_1_7_la_SOURCES = hunvisapi.h libhunspell_1_7_include_HEADERS = hunspell.hxx hunspell.h hunvisapi.h \ w_char.hxx atypes.hxx libhunspell_1_7_la_LDFLAGS = -no-undefined -version-info 0:1:0 AM_CXXFLAGS = $(CFLAG_VISIBILITY) -DBUILDING_LIBHUNSPELL all: all-am .SUFFIXES: .SUFFIXES: .cxx .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/hunspell/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/hunspell/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): hunvisapi.h: $(top_builddir)/config.status $(srcdir)/hunvisapi.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libhunspell-1.7.la: $(libhunspell_1_7_la_OBJECTS) $(libhunspell_1_7_la_DEPENDENCIES) $(EXTRA_libhunspell_1_7_la_DEPENDENCIES) $(AM_V_CXXLD)$(libhunspell_1_7_la_LINK) -rpath $(libdir) $(libhunspell_1_7_la_OBJECTS) $(libhunspell_1_7_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/affentry.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/affixmgr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/csutil.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filemgr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hashmgr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hunspell.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hunzip.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/phonet.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/replist.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/suggestmgr.Plo@am__quote@ .cxx.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cxx.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cxx.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-libhunspell_1_7_includeHEADERS: $(libhunspell_1_7_include_HEADERS) @$(NORMAL_INSTALL) @list='$(libhunspell_1_7_include_HEADERS)'; test -n "$(libhunspell_1_7_includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(libhunspell_1_7_includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libhunspell_1_7_includedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libhunspell_1_7_includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(libhunspell_1_7_includedir)" || exit $$?; \ done uninstall-libhunspell_1_7_includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(libhunspell_1_7_include_HEADERS)'; test -n "$(libhunspell_1_7_includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(libhunspell_1_7_includedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libhunspell_1_7_includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-libhunspell_1_7_includeHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES \ uninstall-libhunspell_1_7_includeHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libLTLIBRARIES \ install-libhunspell_1_7_includeHEADERS install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \ uninstall-libhunspell_1_7_includeHEADERS .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: hunspell-1.7.2/src/hunspell/phonet.cxx0000664000175000017500000002040014352160534014737 00000000000000/* phonetic.c - generic replacement aglogithms for phonetic transformation Copyright (C) 2000 Bjoern Jacke This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation; This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; If not, see . Changelog: 2000-01-05 Bjoern Jacke Initial Release insprired by the article about phonetic transformations out of c't 25/1999 2007-07-26 Bjoern Jacke Released under MPL/GPL/LGPL tri-license for Hunspell 2007-08-23 Laszlo Nemeth Porting from Aspell to Hunspell using C-like structs */ #include #include #include #include #include "csutil.hxx" #include "phonet.hxx" void init_phonet_hash(phonetable& parms) { memset(parms.hash, 0xff, HASHSIZE * sizeof(int)); for (int i = 0; parms.rules[i][0] != '\0'; i += 2) { /** set hash value **/ int k = (unsigned char)parms.rules[i][0]; if (parms.hash[k] < 0) { parms.hash[k] = i; } } } // like strcpy but safe if the strings overlap // but only if dest < src static inline void strmove(char* dest, char* src) { while (*src) *dest++ = *src++; *dest = '\0'; } static int myisalpha(char ch) { if ((unsigned char)ch < 128) return isalpha(ch); return 1; } /* Do phonetic transformation. */ /* phonetic transcription algorithm */ /* see: http://aspell.net/man-html/Phonetic-Code.html */ /* convert string to uppercase before this call */ std::string phonet(const std::string& inword, phonetable& parms) { int i, k = 0, p, z, k0, n0, p0 = -333; char c; typedef unsigned char uchar; size_t len = inword.size(); if (len > MAXPHONETUTF8LEN) return {}; char word[MAXPHONETUTF8LEN + 1]; strncpy(word, inword.c_str(), MAXPHONETUTF8LEN); word[MAXPHONETUTF8LEN] = '\0'; std::string target; /** check word **/ i = z = 0; while ((c = word[i]) != '\0') { int n = parms.hash[(uchar)c]; int z0 = 0; if (n >= 0 && !parms.rules[n].empty()) { /** check all rules for the same letter **/ while (parms.rules[n][0] == c) { /** check whole string **/ k = 1; /** number of found letters **/ p = 5; /** default priority **/ const char*s = parms.rules[n].c_str(); s++; /** important for (see below) "*(s-1)" **/ while (*s != '\0' && word[i + k] == *s && !isdigit((unsigned char)*s) && strchr("(-<^$", *s) == NULL) { k++; s++; } if (*s == '(') { /** check letters in "(..)" **/ if (myisalpha(word[i + k]) // ...could be implied? && strchr(s + 1, word[i + k]) != NULL) { k++; while (*s && *s != ')') s++; if (*s == ')') s++; } } p0 = (int)*s; k0 = k; while (*s == '-' && k > 1) { k--; s++; } if (*s == '<') s++; if (isdigit((unsigned char)*s)) { /** determine priority **/ p = *s - '0'; s++; } if (*s == '^' && *(s + 1) == '^') s++; if (*s == '\0' || (*s == '^' && (i == 0 || !myisalpha(word[i - 1])) && (*(s + 1) != '$' || (!myisalpha(word[i + k0])))) || (*s == '$' && i > 0 && myisalpha(word[i - 1]) && (!myisalpha(word[i + k0])))) { /** search for followup rules, if: **/ /** parms.followup and k > 1 and NO '-' in searchstring **/ char c0 = word[i + k - 1]; n0 = parms.hash[(uchar)c0]; // if (parms.followup && k > 1 && n0 >= 0 if (k > 1 && n0 >= 0 && p0 != (int)'-' && word[i + k] != '\0' && !parms.rules[n0].empty()) { /** test follow-up rule for "word[i+k]" **/ while (parms.rules[n0][0] == c0) { /** check whole string **/ k0 = k; p0 = 5; s = parms.rules[n0].c_str(); s++; while (*s != '\0' && word[i + k0] == *s && !isdigit((unsigned char)*s) && strchr("(-<^$", *s) == NULL) { k0++; s++; } if (*s == '(') { /** check letters **/ if (myisalpha(word[i + k0]) && strchr(s + 1, word[i + k0]) != NULL) { k0++; while (*s != ')' && *s != '\0') s++; if (*s == ')') s++; } } while (*s == '-') { /** "k0" gets NOT reduced **/ /** because "if (k0 == k)" **/ s++; } if (*s == '<') s++; if (isdigit((unsigned char)*s)) { p0 = *s - '0'; s++; } if (*s == '\0' /** *s == '^' cuts **/ || (*s == '$' && !myisalpha(word[i + k0]))) { if (k0 == k) { /** this is just a piece of the string **/ n0 += 2; continue; } if (p0 < p) { /** priority too low **/ n0 += 2; continue; } /** rule fits; stop search **/ break; } n0 += 2; } /** End of "while (parms.rules[n0][0] == c0)" **/ if (p0 >= p && parms.rules[n0][0] == c0) { n += 2; continue; } } /** end of follow-up stuff **/ /** replace string **/ s = parms.rules[n + 1].c_str(); p0 = (!parms.rules[n].empty() && strchr(parms.rules[n].c_str() + 1, '<') != NULL) ? 1 : 0; if (p0 == 1 && z == 0) { /** rule with '<' is used **/ if (!target.empty() && *s != '\0' && (target[target.size()-1] == c || target[target.size()-1] == *s)) { target.erase(target.size() - 1); } z0 = 1; z = 1; k0 = 0; while (*s != '\0' && word[i + k0] != '\0') { word[i + k0] = *s; k0++; s++; } if (k > k0) strmove(&word[0] + i + k0, &word[0] + i + k); /** new "actual letter" **/ c = word[i]; } else { /** no '<' rule used **/ i += k - 1; z = 0; while (*s != '\0' && *(s + 1) != '\0' && target.size() < len) { if (target.empty() || target[target.size()-1] != *s) { target.push_back(*s); } s++; } /** new "actual letter" **/ c = *s; if (!parms.rules[n].empty() && strstr(parms.rules[n].c_str() + 1, "^^") != NULL) { if (c != '\0') { target.push_back(c); } strmove(&word[0], &word[0] + i + 1); i = 0; z0 = 1; } } break; } /** end of follow-up stuff **/ n += 2; } /** end of while (parms.rules[n][0] == c) **/ } /** end of if (n >= 0) **/ if (z0 == 0) { if (k && !p0 && target.size() < len && c != '\0') { /** condense only double letters **/ target.push_back(c); /// printf("\n setting \n"); } i++; z = 0; k = 0; } } /** end of while ((c = word[i]) != '\0') **/ return target; } /** end of function "phonet" **/ hunspell-1.7.2/src/hunspell/affentry.cxx0000664000175000017500000010413014352160534015263 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /* * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada * And Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. All modifications to the source code must be clearly marked as * such. Binary redistributions based on modified source code * must be clearly marked as modified versions in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include #include #include #include #include "affentry.hxx" #include "csutil.hxx" AffEntry::~AffEntry() { if (opts & aeLONGCOND) delete[] c.l.conds2; if (morphcode && !(opts & aeALIASM)) delete[] morphcode; if (contclass && !(opts & aeALIASF)) delete[] contclass; } PfxEntry::PfxEntry(AffixMgr* pmgr) // register affix manager : pmyMgr(pmgr), next(NULL), nexteq(NULL), nextne(NULL), flgnxt(NULL) { } // add prefix to this word assuming conditions hold std::string PfxEntry::add(const char* word, size_t len) { std::string result; if ((len > strip.size() || (len == 0 && pmyMgr->get_fullstrip())) && (len >= numconds) && test_condition(word) && (strip.empty() || (len >= strip.size() && strncmp(word, strip.c_str(), strip.size()) == 0))) { /* we have a match so add prefix */ result.assign(appnd); result.append(word + strip.size()); } return result; } inline char* PfxEntry::nextchar(char* p) { if (p) { p++; if (opts & aeLONGCOND) { // jump to the 2nd part of the condition if (p == c.conds + MAXCONDLEN_1) return c.l.conds2; // end of the MAXCONDLEN length condition } else if (p == c.conds + MAXCONDLEN) return NULL; return *p ? p : NULL; } return NULL; } inline int PfxEntry::test_condition(const std::string& s) { size_t st = 0; size_t pos = std::string::npos; // group with pos input position bool neg = false; // complementer bool ingroup = false; // character in the group if (numconds == 0) return 1; char* p = c.conds; while (1) { switch (*p) { case '\0': return 1; case '[': { neg = false; ingroup = false; p = nextchar(p); pos = st; break; } case '^': { p = nextchar(p); neg = true; break; } case ']': { if (bool(neg) == bool(ingroup)) return 0; pos = std::string::npos; p = nextchar(p); // skip the next character if (!ingroup && st < s.size()) { ++st; while ((opts & aeUTF8) && st < s.size() && (s[st] & 0xc0) == 0x80) ++st; } if (st == s.size() && p) return 0; // word <= condition break; } case '.': if (pos == std::string::npos) { // dots are not metacharacters in groups: [.] p = nextchar(p); // skip the next character ++st; while ((opts & aeUTF8) && st < s.size() && (s[st] & 0xc0) == 0x80) ++st; if (st == s.size() && p) return 0; // word <= condition break; } /* FALLTHROUGH */ default: { if (st < s.size() && s[st] == *p) { ++st; p = nextchar(p); if ((opts & aeUTF8) && (s[st - 1] & 0x80)) { // multibyte while (p && (*p & 0xc0) == 0x80) { // character if (*p != s[st]) { if (pos == std::string::npos) return 0; st = pos; break; } p = nextchar(p); ++st; } if (pos != std::string::npos && st != pos) { ingroup = true; while (p && *p != ']' && ((p = nextchar(p)) != NULL)) { } } } else if (pos != std::string::npos) { ingroup = true; while (p && *p != ']' && ((p = nextchar(p)) != NULL)) { } } } else if (pos != std::string::npos) { // group p = nextchar(p); } else return 0; } } if (!p) return 1; } } // check if this prefix entry matches struct hentry* PfxEntry::checkword(const std::string& word, int start, int len, char in_compound, const FLAG needflag) { struct hentry* he; // hash entry of root word or NULL // on entry prefix is 0 length or already matches the beginning of the word. // So if the remaining root word has positive length // and if there are enough chars in root word and added back strip chars // to meet the number of characters conditions, then test it int tmpl = len - appnd.size(); // length of tmpword if (tmpl > 0 || (tmpl == 0 && pmyMgr->get_fullstrip())) { // generate new root word by removing prefix and adding // back any characters that would have been stripped std::string tmpword(strip); tmpword.append(word, start + appnd.size(), tmpl); // now make sure all of the conditions on characters // are met. Please see the appendix at the end of // this file for more info on exactly what is being // tested // if all conditions are met then check if resulting // root word in the dictionary if (test_condition(tmpword)) { tmpl += strip.size(); if ((he = pmyMgr->lookup(tmpword.c_str(), tmpword.size())) != NULL) { do { if (TESTAFF(he->astr, aflag, he->alen) && // forbid single prefixes with needaffix flag !TESTAFF(contclass, pmyMgr->get_needaffix(), contclasslen) && // needflag ((!needflag) || TESTAFF(he->astr, needflag, he->alen) || (contclass && TESTAFF(contclass, needflag, contclasslen)))) return he; he = he->next_homonym; // check homonyms } while (he); } // prefix matched but no root word was found // if aeXPRODUCT is allowed, try again but now // ross checked combined with a suffix // if ((opts & aeXPRODUCT) && in_compound) { if ((opts & aeXPRODUCT)) { he = pmyMgr->suffix_check(tmpword, 0, tmpl, aeXPRODUCT, this, FLAG_NULL, needflag, in_compound); if (he) return he; } } } return NULL; } // check if this prefix entry matches struct hentry* PfxEntry::check_twosfx(const std::string& word, int start, int len, char in_compound, const FLAG needflag) { // on entry prefix is 0 length or already matches the beginning of the word. // So if the remaining root word has positive length // and if there are enough chars in root word and added back strip chars // to meet the number of characters conditions, then test it int tmpl = len - appnd.size(); // length of tmpword if ((tmpl > 0 || (tmpl == 0 && pmyMgr->get_fullstrip())) && (tmpl + strip.size() >= numconds)) { // generate new root word by removing prefix and adding // back any characters that would have been stripped std::string tmpword(strip); tmpword.append(word, start + appnd.size()); // now make sure all of the conditions on characters // are met. Please see the appendix at the end of // this file for more info on exactly what is being // tested // if all conditions are met then check if resulting // root word in the dictionary if (test_condition(tmpword)) { tmpl += strip.size(); // prefix matched but no root word was found // if aeXPRODUCT is allowed, try again but now // cross checked combined with a suffix if ((opts & aeXPRODUCT) && (in_compound != IN_CPD_BEGIN)) { // hash entry of root word or NULL struct hentry* he = pmyMgr->suffix_check_twosfx(tmpword, 0, tmpl, aeXPRODUCT, this, needflag); if (he) return he; } } } return NULL; } // check if this prefix entry matches std::string PfxEntry::check_twosfx_morph(const std::string& word, int start, int len, char in_compound, const FLAG needflag) { std::string result; // on entry prefix is 0 length or already matches the beginning of the word. // So if the remaining root word has positive length // and if there are enough chars in root word and added back strip chars // to meet the number of characters conditions, then test it int tmpl = len - appnd.size(); // length of tmpword if ((tmpl > 0 || (tmpl == 0 && pmyMgr->get_fullstrip())) && (tmpl + strip.size() >= numconds)) { // generate new root word by removing prefix and adding // back any characters that would have been stripped std::string tmpword(strip); tmpword.append(word, start + appnd.size()); // now make sure all of the conditions on characters // are met. Please see the appendix at the end of // this file for more info on exactly what is being // tested // if all conditions are met then check if resulting // root word in the dictionary if (test_condition(tmpword)) { tmpl += strip.size(); // prefix matched but no root word was found // if aeXPRODUCT is allowed, try again but now // ross checked combined with a suffix if ((opts & aeXPRODUCT) && (in_compound != IN_CPD_BEGIN)) { result = pmyMgr->suffix_check_twosfx_morph(tmpword, 0, tmpl, aeXPRODUCT, this, needflag); } } } return result; } // check if this prefix entry matches std::string PfxEntry::check_morph(const std::string& word, int start, int len, char in_compound, const FLAG needflag) { std::string result; // on entry prefix is 0 length or already matches the beginning of the word. // So if the remaining root word has positive length // and if there are enough chars in root word and added back strip chars // to meet the number of characters conditions, then test it int tmpl = len - appnd.size(); // length of tmpword if ((tmpl > 0 || (tmpl == 0 && pmyMgr->get_fullstrip())) && (tmpl + strip.size() >= numconds)) { // generate new root word by removing prefix and adding // back any characters that would have been stripped std::string tmpword(strip); tmpword.append(word, start + appnd.size()); // now make sure all of the conditions on characters // are met. Please see the appendix at the end of // this file for more info on exactly what is being // tested // if all conditions are met then check if resulting // root word in the dictionary if (test_condition(tmpword)) { tmpl += strip.size(); struct hentry* he; // hash entry of root word or NULL if ((he = pmyMgr->lookup(tmpword.c_str(), tmpword.size())) != NULL) { do { if (TESTAFF(he->astr, aflag, he->alen) && // forbid single prefixes with needaffix flag !TESTAFF(contclass, pmyMgr->get_needaffix(), contclasslen) && // needflag ((!needflag) || TESTAFF(he->astr, needflag, he->alen) || (contclass && TESTAFF(contclass, needflag, contclasslen)))) { if (morphcode) { result.push_back(MSEP_FLD); result.append(morphcode); } else result.append(getKey()); if (!HENTRY_FIND(he, MORPH_STEM)) { result.push_back(MSEP_FLD); result.append(MORPH_STEM); result.append(HENTRY_WORD(he)); } // store the pointer of the hash entry if (HENTRY_DATA(he)) { result.push_back(MSEP_FLD); result.append(HENTRY_DATA2(he)); } else { // return with debug information std::string flag = pmyMgr->encode_flag(getFlag()); result.push_back(MSEP_FLD); result.append(MORPH_FLAG); result.append(flag); } result.push_back(MSEP_REC); } he = he->next_homonym; } while (he); } // prefix matched but no root word was found // if aeXPRODUCT is allowed, try again but now // ross checked combined with a suffix if ((opts & aeXPRODUCT) && (in_compound != IN_CPD_BEGIN)) { std::string st = pmyMgr->suffix_check_morph(tmpword, 0, tmpl, aeXPRODUCT, this, FLAG_NULL, needflag); if (!st.empty()) { result.append(st); } } } } return result; } SfxEntry::SfxEntry(AffixMgr* pmgr) : pmyMgr(pmgr) // register affix manager , next(NULL), nexteq(NULL), nextne(NULL), flgnxt(NULL), l_morph(NULL), r_morph(NULL), eq_morph(NULL) { } // add suffix to this word assuming conditions hold std::string SfxEntry::add(const char* word, size_t len) { std::string result; /* make sure all conditions match */ if ((len > strip.size() || (len == 0 && pmyMgr->get_fullstrip())) && (len >= numconds) && test_condition(word + len, word) && (strip.empty() || (len >= strip.size() && strcmp(word + len - strip.size(), strip.c_str()) == 0))) { result.assign(word, len); /* we have a match so add suffix */ result.replace(len - strip.size(), std::string::npos, appnd); } return result; } inline char* SfxEntry::nextchar(char* p) { if (p) { p++; if (opts & aeLONGCOND) { // jump to the 2nd part of the condition if (p == c.l.conds1 + MAXCONDLEN_1) return c.l.conds2; // end of the MAXCONDLEN length condition } else if (p == c.conds + MAXCONDLEN) return NULL; return *p ? p : NULL; } return NULL; } inline int SfxEntry::test_condition(const char* st, const char* beg) { const char* pos = NULL; // group with pos input position bool neg = false; // complementer bool ingroup = false; // character in the group if (numconds == 0) return 1; char* p = c.conds; st--; int i = 1; while (1) { switch (*p) { case '\0': return 1; case '[': p = nextchar(p); pos = st; break; case '^': p = nextchar(p); neg = true; break; case ']': if (!neg && !ingroup) return 0; i++; // skip the next character if (!ingroup) { for (; (opts & aeUTF8) && (st >= beg) && (*st & 0xc0) == 0x80; st--) ; st--; } pos = NULL; neg = false; ingroup = false; p = nextchar(p); if (st < beg && p) return 0; // word <= condition break; case '.': if (!pos) { // dots are not metacharacters in groups: [.] p = nextchar(p); // skip the next character for (st--; (opts & aeUTF8) && (st >= beg) && (*st & 0xc0) == 0x80; st--) ; if (st < beg) { // word <= condition if (p) return 0; else return 1; } if ((opts & aeUTF8) && (*st & 0x80)) { // head of the UTF-8 character st--; if (st < beg) { // word <= condition if (p) return 0; else return 1; } } break; } /* FALLTHROUGH */ default: { if (*st == *p) { p = nextchar(p); if ((opts & aeUTF8) && (*st & 0x80)) { st--; while (p && (st >= beg)) { if (*p != *st) { if (!pos) return 0; st = pos; break; } // first byte of the UTF-8 multibyte character if ((*p & 0xc0) != 0x80) break; p = nextchar(p); st--; } if (pos && st != pos) { if (neg) return 0; else if (i == numconds) return 1; ingroup = true; while (p && *p != ']' && ((p = nextchar(p)) != NULL)) { } st--; } if (p && *p != ']') p = nextchar(p); } else if (pos) { if (neg) return 0; else if (i == numconds) return 1; ingroup = true; while (p && *p != ']' && ((p = nextchar(p)) != NULL)) { } // if (p && *p != ']') p = nextchar(p); st--; } if (!pos) { i++; st--; } if (st < beg && p && *p != ']') return 0; // word <= condition } else if (pos) { // group p = nextchar(p); } else return 0; } } if (!p) return 1; } } // see if this suffix is present in the word struct hentry* SfxEntry::checkword(const std::string& word, int start, int len, int optflags, PfxEntry* ppfx, const FLAG cclass, const FLAG needflag, const FLAG badflag) { struct hentry* he; // hash entry pointer PfxEntry* ep = ppfx; // if this suffix is being cross checked with a prefix // but it does not support cross products skip it if (((optflags & aeXPRODUCT) != 0) && ((opts & aeXPRODUCT) == 0)) return NULL; // upon entry suffix is 0 length or already matches the end of the word. // So if the remaining root word has positive length // and if there are enough chars in root word and added back strip chars // to meet the number of characters conditions, then test it int tmpl = len - appnd.size(); // length of tmpword // the second condition is not enough for UTF-8 strings // it checked in test_condition() if ((tmpl > 0 || (tmpl == 0 && pmyMgr->get_fullstrip())) && (tmpl + strip.size() >= numconds)) { // generate new root word by removing suffix and adding // back any characters that would have been stripped or // or null terminating the shorter string std::string tmpstring(word, start, tmpl); if (!strip.empty()) { tmpstring.append(strip); } const char* tmpword = tmpstring.c_str(); const char* endword = tmpword + tmpstring.size(); // now make sure all of the conditions on characters // are met. Please see the appendix at the end of // this file for more info on exactly what is being // tested // if all conditions are met then check if resulting // root word in the dictionary if (test_condition(endword, tmpword)) { #ifdef SZOSZABLYA_POSSIBLE_ROOTS fprintf(stdout, "%s %s %c\n", word.c_str() + start, tmpword, aflag); #endif if ((he = pmyMgr->lookup(tmpstring.c_str(), tmpstring.size())) != NULL) { do { // check conditional suffix (enabled by prefix) if ((TESTAFF(he->astr, aflag, he->alen) || (ep && ep->getCont() && TESTAFF(ep->getCont(), aflag, ep->getContLen()))) && (((optflags & aeXPRODUCT) == 0) || (ep && TESTAFF(he->astr, ep->getFlag(), he->alen)) || // enabled by prefix ((contclass) && (ep && TESTAFF(contclass, ep->getFlag(), contclasslen)))) && // handle cont. class ((!cclass) || ((contclass) && TESTAFF(contclass, cclass, contclasslen))) && // check only in compound homonyms (bad flags) (!badflag || !TESTAFF(he->astr, badflag, he->alen)) && // handle required flag ((!needflag) || (TESTAFF(he->astr, needflag, he->alen) || ((contclass) && TESTAFF(contclass, needflag, contclasslen))))) return he; he = he->next_homonym; // check homonyms } while (he); } } } return NULL; } // see if two-level suffix is present in the word struct hentry* SfxEntry::check_twosfx(const std::string& word, int start, int len, int optflags, PfxEntry* ppfx, const FLAG needflag) { PfxEntry* ep = ppfx; // if this suffix is being cross checked with a prefix // but it does not support cross products skip it if ((optflags & aeXPRODUCT) != 0 && (opts & aeXPRODUCT) == 0) return NULL; // upon entry suffix is 0 length or already matches the end of the word. // So if the remaining root word has positive length // and if there are enough chars in root word and added back strip chars // to meet the number of characters conditions, then test it int tmpl = len - appnd.size(); // length of tmpword if ((tmpl > 0 || (tmpl == 0 && pmyMgr->get_fullstrip())) && (tmpl + strip.size() >= numconds)) { // generate new root word by removing suffix and adding // back any characters that would have been stripped or // or null terminating the shorter string std::string tmpword(word, start); tmpword.resize(tmpl); tmpword.append(strip); tmpl += strip.size(); const char* beg = tmpword.c_str(); const char* end = beg + tmpl; // now make sure all of the conditions on characters // are met. Please see the appendix at the end of // this file for more info on exactly what is being // tested // if all conditions are met then recall suffix_check if (test_condition(end, beg)) { struct hentry* he; // hash entry pointer if (ppfx) { // handle conditional suffix if ((contclass) && TESTAFF(contclass, ep->getFlag(), contclasslen)) he = pmyMgr->suffix_check(tmpword, 0, tmpl, 0, NULL, (FLAG)aflag, needflag, IN_CPD_NOT); else he = pmyMgr->suffix_check(tmpword, 0, tmpl, optflags, ppfx, (FLAG)aflag, needflag, IN_CPD_NOT); } else { he = pmyMgr->suffix_check(tmpword, 0, tmpl, 0, NULL, (FLAG)aflag, needflag, IN_CPD_NOT); } if (he) return he; } } return NULL; } // see if two-level suffix is present in the word std::string SfxEntry::check_twosfx_morph(const std::string& word, int start, int len, int optflags, PfxEntry* ppfx, const FLAG needflag) { PfxEntry* ep = ppfx; std::string result; // if this suffix is being cross checked with a prefix // but it does not support cross products skip it if ((optflags & aeXPRODUCT) != 0 && (opts & aeXPRODUCT) == 0) return result; // upon entry suffix is 0 length or already matches the end of the word. // So if the remaining root word has positive length // and if there are enough chars in root word and added back strip chars // to meet the number of characters conditions, then test it int tmpl = len - appnd.size(); // length of tmpword if ((tmpl > 0 || (tmpl == 0 && pmyMgr->get_fullstrip())) && (tmpl + strip.size() >= numconds)) { // generate new root word by removing suffix and adding // back any characters that would have been stripped or // or null terminating the shorter string std::string tmpword(word, start); tmpword.resize(tmpl); tmpword.append(strip); tmpl += strip.size(); const char* beg = tmpword.c_str(); const char* end = beg + tmpl; // now make sure all of the conditions on characters // are met. Please see the appendix at the end of // this file for more info on exactly what is being // tested // if all conditions are met then recall suffix_check if (test_condition(end, beg)) { if (ppfx) { // handle conditional suffix if ((contclass) && TESTAFF(contclass, ep->getFlag(), contclasslen)) { std::string st = pmyMgr->suffix_check_morph(tmpword, 0, tmpl, 0, NULL, aflag, needflag); if (!st.empty()) { if (ppfx->getMorph()) { result.append(ppfx->getMorph()); result.push_back(MSEP_FLD); } result.append(st); mychomp(result); } } else { std::string st = pmyMgr->suffix_check_morph(tmpword, 0, tmpl, optflags, ppfx, aflag, needflag); if (!st.empty()) { result.append(st); mychomp(result); } } } else { std::string st = pmyMgr->suffix_check_morph(tmpword, 0, tmpl, 0, NULL, aflag, needflag); if (!st.empty()) { result.append(st); mychomp(result); } } } } return result; } // get next homonym with same affix struct hentry* SfxEntry::get_next_homonym(struct hentry* he, int optflags, PfxEntry* ppfx, const FLAG cclass, const FLAG needflag) { PfxEntry* ep = ppfx; FLAG eFlag = ep ? ep->getFlag() : FLAG_NULL; while (he->next_homonym) { he = he->next_homonym; if ((TESTAFF(he->astr, aflag, he->alen) || (ep && ep->getCont() && TESTAFF(ep->getCont(), aflag, ep->getContLen()))) && ((optflags & aeXPRODUCT) == 0 || TESTAFF(he->astr, eFlag, he->alen) || // handle conditional suffix ((contclass) && TESTAFF(contclass, eFlag, contclasslen))) && // handle cont. class ((!cclass) || ((contclass) && TESTAFF(contclass, cclass, contclasslen))) && // handle required flag ((!needflag) || (TESTAFF(he->astr, needflag, he->alen) || ((contclass) && TESTAFF(contclass, needflag, contclasslen))))) return he; } return NULL; } void SfxEntry::initReverseWord() { rappnd = appnd; reverseword(rappnd); } #if 0 Appendix: Understanding Affix Code An affix is either a prefix or a suffix attached to root words to make other words. Basically a Prefix or a Suffix is set of AffEntry objects which store information about the prefix or suffix along with supporting routines to check if a word has a particular prefix or suffix or a combination. The structure affentry is defined as follows: struct affentry { unsigned short aflag; // ID used to represent the affix std::string strip; // string to strip before adding affix std::string appnd; // the affix string to add char numconds; // the number of conditions that must be met char opts; // flag: aeXPRODUCT- combine both prefix and suffix char conds[SETSIZE]; // array which encodes the conditions to be met }; Here is a suffix borrowed from the en_US.aff file. This file is whitespace delimited. SFX D Y 4 SFX D 0 e d SFX D y ied [^aeiou]y SFX D 0 ed [^ey] SFX D 0 ed [aeiou]y This information can be interpreted as follows: In the first line has 4 fields Field ----- 1 SFX - indicates this is a suffix 2 D - is the name of the character flag which represents this suffix 3 Y - indicates it can be combined with prefixes (cross product) 4 4 - indicates that sequence of 4 affentry structures are needed to properly store the affix information The remaining lines describe the unique information for the 4 SfxEntry objects that make up this affix. Each line can be interpreted as follows: (note fields 1 and 2 are as a check against line 1 info) Field ----- 1 SFX - indicates this is a suffix 2 D - is the name of the character flag for this affix 3 y - the string of chars to strip off before adding affix (a 0 here indicates the NULL string) 4 ied - the string of affix characters to add 5 [^aeiou]y - the conditions which must be met before the affix can be applied Field 5 is interesting. Since this is a suffix, field 5 tells us that there are 2 conditions that must be met. The first condition is that the next to the last character in the word must *NOT* be any of the following "a", "e", "i", "o" or "u". The second condition is that the last character of the word must end in "y". So how can we encode this information concisely and be able to test for both conditions in a fast manner? The answer is found but studying the wonderful ispell code of Geoff Kuenning, et.al. (now available under a normal BSD license). If we set up a conds array of 256 bytes indexed (0 to 255) and access it using a character (cast to an unsigned char) of a string, we have 8 bits of information we can store about that character. Specifically we could use each bit to say if that character is allowed in any of the last (or first for prefixes) 8 characters of the word. Basically, each character at one end of the word (up to the number of conditions) is used to index into the conds array and the resulting value found there says whether the that character is valid for a specific character position in the word. For prefixes, it does this by setting bit 0 if that char is valid in the first position, bit 1 if valid in the second position, and so on. If a bit is not set, then that char is not valid for that postion in the word. If working with suffixes bit 0 is used for the character closest to the front, bit 1 for the next character towards the end, ..., with bit numconds-1 representing the last char at the end of the string. Note: since entries in the conds[] are 8 bits, only 8 conditions (read that only 8 character positions) can be examined at one end of a word (the beginning for prefixes and the end for suffixes. So to make this clearer, lets encode the conds array values for the first two affentries for the suffix D described earlier. For the first affentry: numconds = 1 (only examine the last character) conds['e'] = (1 << 0) (the word must end in an E) all others are all 0 For the second affentry: numconds = 2 (only examine the last two characters) conds[X] = conds[X] | (1 << 0) (aeiou are not allowed) where X is all characters *but* a, e, i, o, or u conds['y'] = (1 << 1) (the last char must be a y) all other bits for all other entries in the conds array are zero #endif hunspell-1.7.2/src/hunspell/suggestmgr.hxx0000664000175000017500000002027214353340164015645 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /* * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada * And Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. All modifications to the source code must be clearly marked as * such. Binary redistributions based on modified source code * must be clearly marked as modified versions in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifndef SUGGESTMGR_HXX_ #define SUGGESTMGR_HXX_ #define MAX_ROOTS 100 #define MAX_WORDS 100 #define MAX_GUESS 200 #define MAXNGRAMSUGS 4 #define MAXPHONSUGS 2 #define MAXCOMPOUNDSUGS 3 #define NGRAM_LONGER_WORSE (1 << 0) #define NGRAM_ANY_MISMATCH (1 << 1) #define NGRAM_LOWERING (1 << 2) #define NGRAM_WEIGHTED (1 << 3) #include "atypes.hxx" #include "affixmgr.hxx" #include "hashmgr.hxx" #include "langnum.hxx" enum { LCS_UP, LCS_LEFT, LCS_UPLEFT }; class SuggestMgr { private: std::string ckey; size_t ckeyl; std::vector ckey_utf; std::string ctry; size_t ctryl; std::vector ctry_utf; bool lang_with_dash_usage; AffixMgr* pAMgr; unsigned int maxSug; struct cs_info* csconv; int utf8; int langnum; int nosplitsugs; int maxngramsugs; int maxcpdsugs; int complexprefixes; public: SuggestMgr(const std::string& tryme, unsigned int maxn, AffixMgr* aptr); SuggestMgr(const SuggestMgr&) = delete; SuggestMgr& operator=(const SuggestMgr&) = delete; ~SuggestMgr(); bool suggest(std::vector& slst, const std::string& word, int* onlycmpdsug, // for testing compound words formed from 3 or more words: // if test_simplesug == true, suggest() doesn't suggest compound words, // and it returns with true at the first suggestion found bool test_simplesug = false); void ngsuggest(std::vector& slst, const char* word, const std::vector& rHMgr, int captype); std::string suggest_morph(const std::string& word); std::string suggest_gen(const std::vector& pl, const std::string& pattern); private: void testsug(std::vector& wlst, const std::string& candidate, int cpdsuggest, int* timer, clock_t* timelimit, int& info); int checkword(const std::string& word, int, int*, clock_t*); int check_forbidden(const std::string&); void capchars(std::vector&, const std::string&, int, int&); int replchars(std::vector&, const std::string&, int, int&); int doubletwochars(std::vector&, const std::string&, int, int&); int forgotchar(std::vector&, const std::string&, int, int&); int swapchar(std::vector&, const std::string&, int, int&); int longswapchar(std::vector&, const std::string&, int, int&); int movechar(std::vector&, const std::string&, int, int&); int extrachar(std::vector&, const std::string&, int, int&); int badcharkey(std::vector&, const std::string&, int, int&); int badchar(std::vector&, const std::string&, int, int&); bool twowords(std::vector&, const std::string&, int, bool, int&); void capchars_utf(std::vector&, const std::vector&, int, int&); int doubletwochars_utf(std::vector&, const std::vector&, int, int&); int forgotchar_utf(std::vector&, const std::vector&, int, int&); int extrachar_utf(std::vector&, const std::vector&, int, int&); int badcharkey_utf(std::vector&, const std::vector&, int, int&); int badchar_utf(std::vector&, const std::vector&, int, int&); int swapchar_utf(std::vector&, const std::vector&, int, int&); int longswapchar_utf(std::vector&, const std::vector&, int, int&); int movechar_utf(std::vector&, const std::vector&, int, int&); int mapchars(std::vector&, const std::string&, int, int&); int map_related(const std::string&, std::string&, size_t, std::vector& wlst, int, const std::vector&, int*, clock_t*, int depth, int& info); int ngram(int n, const std::vector& su1, const std::vector& su2, int opt); int ngram(int n, const std::string& s1, const std::string& s2, int opt); int mystrlen(const char* word); int leftcommonsubstring(const std::vector& su1, const std::vector& su2); int leftcommonsubstring(const char* s1, const char* s2); int commoncharacterpositions(const char* s1, const char* s2, int* is_swap); void bubblesort(char** rwd, char** rwd2, int* rsc, int n); char* lcs(const char* s, const char* s2, int* l1, int* l2); int lcslen(const char* s, const char* s2); int lcslen(const std::string& s, const std::string& s2); std::string suggest_hentry_gen(hentry* rv, const char* pattern); }; #endif hunspell-1.7.2/src/hunspell/hunspell.cxx0000664000175000017500000021062314353364750015313 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /* * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada * And Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. All modifications to the source code must be clearly marked as * such. Binary redistributions based on modified source code * must be clearly marked as modified versions in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include #include #include #include #include "affixmgr.hxx" #include "hunspell.hxx" #include "suggestmgr.hxx" #include "hunspell.h" #include "csutil.hxx" #include #include #define MAXWORDUTF8LEN (MAXWORDLEN * 3) class HunspellImpl { public: HunspellImpl(const char* affpath, const char* dpath, const char* key = NULL); HunspellImpl(const HunspellImpl&) = delete; HunspellImpl& operator=(const HunspellImpl&) = delete; ~HunspellImpl(); int add_dic(const char* dpath, const char* key = NULL); std::vector suffix_suggest(const std::string& root_word); std::vector generate(const std::string& word, const std::vector& pl); std::vector generate(const std::string& word, const std::string& pattern); std::vector stem(const std::string& word); std::vector stem(const std::vector& morph); std::vector analyze(const std::string& word); int get_langnum() const; bool input_conv(const std::string& word, std::string& dest); bool spell(const std::string& word, std::vector& candidate_stack, int* info = NULL, std::string* root = NULL); std::vector suggest(const std::string& word); std::vector suggest(const std::string& word, std::vector& suggest_candidate_stack); const std::string& get_wordchars_cpp() const; const std::vector& get_wordchars_utf16() const; const std::string& get_dict_encoding() const; int add(const std::string& word); int add_with_affix(const std::string& word, const std::string& example); int remove(const std::string& word); const std::string& get_version_cpp() const; struct cs_info* get_csconv(); int spell(const char* word, int* info = NULL, char** root = NULL); int suggest(char*** slst, const char* word); int suffix_suggest(char*** slst, const char* root_word); void free_list(char*** slst, int n); char* get_dic_encoding(); int analyze(char*** slst, const char* word); int stem(char*** slst, const char* word); int stem(char*** slst, char** morph, int n); int generate(char*** slst, const char* word, const char* word2); int generate(char*** slst, const char* word, char** desc, int n); const char* get_wordchars() const; const char* get_version() const; int input_conv(const char* word, char* dest, size_t destsize); private: AffixMgr* pAMgr; std::vector m_HMgrs; SuggestMgr* pSMgr; std::string affixpath; std::string encoding; struct cs_info* csconv; int langnum; int utf8; int complexprefixes; std::vector wordbreak; private: std::vector analyze_internal(const std::string& word); bool spell_internal(const std::string& word, std::vector& candidate_stack, int* info = NULL, std::string* root = NULL); std::vector suggest_internal(const std::string& word, std::vector& spell_candidate_stack, std::vector& suggest_candidate_stack, bool& capitalized, size_t& abbreviated, int& captype); void cleanword(std::string& dest, const std::string&, int* pcaptype, int* pabbrev); size_t cleanword2(std::string& dest, std::vector& dest_u, const std::string& src, int* pcaptype, size_t* pabbrev); void clean_ignore(std::string& dest, const std::string& src); void mkinitcap(std::string& u8); int mkinitcap2(std::string& u8, std::vector& u16); int mkinitsmall2(std::string& u8, std::vector& u16); void mkallcap(std::string& u8); int mkallsmall2(std::string& u8, std::vector& u16); struct hentry* checkword(const std::string& source, int* info, std::string* root); std::string sharps_u8_l1(const std::string& source); hentry* spellsharps(std::string& base, size_t start_pos, int, int, int* info, std::string* root); int is_keepcase(const hentry* rv); void insert_sug(std::vector& slst, const std::string& word); void cat_result(std::string& result, const std::string& st); std::vector spellml(const std::string& word); std::string get_xml_par(const std::string& par, std::string::size_type pos); std::string::size_type get_xml_pos(const std::string& s, std::string::size_type pos, const char* attr); std::vector get_xml_list(const std::string& list, std::string::size_type pos, const char* tag); int check_xml_par(const std::string& q, std::string::size_type pos, const char* attr, const char* value); }; HunspellImpl::HunspellImpl(const char* affpath, const char* dpath, const char* key) : affixpath(affpath) { csconv = NULL; utf8 = 0; complexprefixes = 0; /* first set up the hash manager */ m_HMgrs.push_back(new HashMgr(dpath, affpath, key)); /* next set up the affix manager */ /* it needs access to the hash manager lookup methods */ pAMgr = new AffixMgr(affpath, m_HMgrs, key); /* get the preferred try string and the dictionary */ /* encoding from the Affix Manager for that dictionary */ std::string try_string = pAMgr->get_try_string(); encoding = pAMgr->get_encoding(); langnum = pAMgr->get_langnum(); utf8 = pAMgr->get_utf8(); if (!utf8) csconv = get_current_cs(encoding); complexprefixes = pAMgr->get_complexprefixes(); wordbreak = pAMgr->get_breaktable(); /* and finally set up the suggestion manager */ pSMgr = new SuggestMgr(try_string, MAXSUGGESTION, pAMgr); } HunspellImpl::~HunspellImpl() { delete pSMgr; delete pAMgr; for (auto& m_HMgr : m_HMgrs) delete m_HMgr; pSMgr = NULL; pAMgr = NULL; #ifdef MOZILLA_CLIENT delete[] csconv; #endif csconv = NULL; } // load extra dictionaries int HunspellImpl::add_dic(const char* dpath, const char* key) { m_HMgrs.push_back(new HashMgr(dpath, affixpath.c_str(), key)); return 0; } // make a copy of src at dest while removing all characters // specified in IGNORE rule void HunspellImpl::clean_ignore(std::string& dest, const std::string& src) { dest.clear(); dest.assign(src); const char* ignoredchars = pAMgr ? pAMgr->get_ignore() : NULL; if (ignoredchars != NULL) { if (utf8) { const std::vector& ignoredchars_utf16 = pAMgr->get_ignore_utf16(); remove_ignored_chars_utf(dest, ignoredchars_utf16); } else { remove_ignored_chars(dest, ignoredchars); } } } // make a copy of src at destination while removing all leading // blanks and removing any trailing periods after recording // their presence with the abbreviation flag // also since already going through character by character, // set the capitalization type // return the length of the "cleaned" (and UTF-8 encoded) word size_t HunspellImpl::cleanword2(std::string& dest, std::vector& dest_utf, const std::string& src, int* pcaptype, size_t* pabbrev) { dest.clear(); dest_utf.clear(); // remove IGNORE characters from the string std::string w2; clean_ignore(w2, src); const char* q = w2.c_str(); int nl = (int)w2.size(); // first skip over any leading blanks while (*q == ' ') { ++q; nl--; } // now strip off any trailing periods (recording their presence) *pabbrev = 0; while ((nl > 0) && (*(q + nl - 1) == '.')) { nl--; (*pabbrev)++; } // if no characters are left it can't be capitalized if (nl <= 0) { *pcaptype = NOCAP; return 0; } dest.append(q, nl); nl = dest.size(); if (utf8) { u8_u16(dest_utf, dest); *pcaptype = get_captype_utf8(dest_utf, langnum); } else { *pcaptype = get_captype(dest, csconv); } return nl; } void HunspellImpl::cleanword(std::string& dest, const std::string& src, int* pcaptype, int* pabbrev) { dest.clear(); const unsigned char* q = (const unsigned char*)src.c_str(); int firstcap = 0, nl = (int)src.size(); // first skip over any leading blanks while (*q == ' ') { ++q; nl--; } // now strip off any trailing periods (recording their presence) *pabbrev = 0; while ((nl > 0) && (*(q + nl - 1) == '.')) { nl--; (*pabbrev)++; } // if no characters are left it can't be capitalized if (nl <= 0) { *pcaptype = NOCAP; return; } // now determine the capitalization type of the first nl letters int ncap = 0; int nneutral = 0; int nc = 0; if (!utf8) { while (nl > 0) { nc++; if (csconv[(*q)].ccase) ncap++; if (csconv[(*q)].cupper == csconv[(*q)].clower) nneutral++; dest.push_back(*q++); nl--; } // remember to terminate the destination string firstcap = csconv[static_cast(dest[0])].ccase; } else { std::vector t; u8_u16(t, src); for (auto& wc : t) { const auto idx = (unsigned short)wc; const auto low = unicodetolower(idx, langnum); if (idx != low) ncap++; if (unicodetoupper(idx, langnum) == low) nneutral++; } u16_u8(dest, t); if (ncap) { const auto idx = (unsigned short)t[0]; firstcap = (idx != unicodetolower(idx, langnum)); } } // now finally set the captype if (ncap == 0) { *pcaptype = NOCAP; } else if ((ncap == 1) && firstcap) { *pcaptype = INITCAP; } else if ((ncap == nc) || ((ncap + nneutral) == nc)) { *pcaptype = ALLCAP; } else if ((ncap > 1) && firstcap) { *pcaptype = HUHINITCAP; } else { *pcaptype = HUHCAP; } } void HunspellImpl::mkallcap(std::string& u8) { if (utf8) { std::vector u16; u8_u16(u16, u8); ::mkallcap_utf(u16, langnum); u16_u8(u8, u16); } else { ::mkallcap(u8, csconv); } } int HunspellImpl::mkallsmall2(std::string& u8, std::vector& u16) { if (utf8) { ::mkallsmall_utf(u16, langnum); u16_u8(u8, u16); } else { ::mkallsmall(u8, csconv); } return u8.size(); } // convert UTF-8 sharp S codes to latin 1 std::string HunspellImpl::sharps_u8_l1(const std::string& source) { std::string dest(source); mystrrep(dest, "\xC3\x9F", "\xDF"); return dest; } // recursive search for right ss - sharp s permutations hentry* HunspellImpl::spellsharps(std::string& base, size_t n_pos, int n, int repnum, int* info, std::string* root) { size_t pos = base.find("ss", n_pos); if (pos != std::string::npos && (n < MAXSHARPS)) { base[pos] = '\xC3'; base[pos + 1] = '\x9F'; hentry* h = spellsharps(base, pos + 2, n + 1, repnum + 1, info, root); if (h) return h; base[pos] = 's'; base[pos + 1] = 's'; h = spellsharps(base, pos + 2, n + 1, repnum, info, root); if (h) return h; } else if (repnum > 0) { if (utf8) return checkword(base, info, root); std::string tmp(sharps_u8_l1(base)); return checkword(tmp, info, root); } return NULL; } int HunspellImpl::is_keepcase(const hentry* rv) { return pAMgr && rv->astr && pAMgr->get_keepcase() && TESTAFF(rv->astr, pAMgr->get_keepcase(), rv->alen); } /* insert a word to the beginning of the suggestion array */ void HunspellImpl::insert_sug(std::vector& slst, const std::string& word) { slst.insert(slst.begin(), word); } bool HunspellImpl::spell(const std::string& word, std::vector& candidate_stack, int* info, std::string* root) { // something very broken if spell ends up calling itself with the same word if (std::find(candidate_stack.begin(), candidate_stack.end(), word) != candidate_stack.end()) return false; candidate_stack.push_back(word); bool r = spell_internal(word, candidate_stack, info, root); candidate_stack.pop_back(); if (r && root) { // output conversion RepList* rl = (pAMgr) ? pAMgr->get_oconvtable() : NULL; if (rl) { std::string wspace; if (rl->conv(*root, wspace)) { *root = wspace; } } } return r; } bool HunspellImpl::spell_internal(const std::string& word, std::vector& candidate_stack, int* info, std::string* root) { struct hentry* rv = NULL; int info2 = 0; if (!info) info = &info2; else *info = 0; // Hunspell supports XML input of the simplified API (see manual) if (word == SPELL_XML) return true; if (utf8) { if (word.size() >= MAXWORDUTF8LEN) return false; } else { if (word.size() >= MAXWORDLEN) return false; } int captype = NOCAP; size_t abbv = 0; size_t wl = 0; std::string scw; std::vector sunicw; // input conversion RepList* rl = pAMgr ? pAMgr->get_iconvtable() : NULL; { std::string wspace; bool convstatus = rl ? rl->conv(word, wspace) : false; if (convstatus) wl = cleanword2(scw, sunicw, wspace, &captype, &abbv); else wl = cleanword2(scw, sunicw, word, &captype, &abbv); } #ifdef MOZILLA_CLIENT // accept the abbreviated words without dots // workaround for the incomplete tokenization of Mozilla abbv = 1; #endif if (wl == 0 || m_HMgrs.empty()) return true; if (root) root->clear(); // allow numbers with dots, dashes and commas (but forbid double separators: // "..", "--" etc.) enum { NBEGIN, NNUM, NSEP }; int nstate = NBEGIN; size_t i; for (i = 0; (i < wl); i++) { if ((scw[i] <= '9') && (scw[i] >= '0')) { nstate = NNUM; } else if ((scw[i] == ',') || (scw[i] == '.') || (scw[i] == '-')) { if ((nstate == NSEP) || (i == 0)) break; nstate = NSEP; } else break; } if ((i == wl) && (nstate == NNUM)) return true; switch (captype) { case HUHCAP: /* FALLTHROUGH */ case HUHINITCAP: *info |= SPELL_ORIGCAP; /* FALLTHROUGH */ case NOCAP: rv = checkword(scw, info, root); if ((abbv) && !(rv)) { std::string u8buffer(scw); u8buffer.push_back('.'); rv = checkword(u8buffer, info, root); } break; case ALLCAP: { *info |= SPELL_ORIGCAP; rv = checkword(scw, info, root); if (rv) break; if (abbv) { std::string u8buffer(scw); u8buffer.push_back('.'); rv = checkword(u8buffer, info, root); if (rv) break; } // Spec. prefix handling for Catalan, French, Italian: // prefixes separated by apostrophe (SANT'ELIA -> Sant'+Elia). size_t apos = pAMgr ? scw.find('\'') : std::string::npos; if (apos != std::string::npos) { mkallsmall2(scw, sunicw); //conversion may result in string with different len to pre-mkallsmall2 //so re-scan if (apos != std::string::npos && apos < scw.size() - 1) { std::string part1 = scw.substr(0, apos + 1), part2 = scw.substr(apos + 1); if (utf8) { std::vector part1u, part2u; u8_u16(part1u, part1); u8_u16(part2u, part2); mkinitcap2(part2, part2u); scw = part1 + part2; sunicw = part1u; sunicw.insert(sunicw.end(), part2u.begin(), part2u.end()); rv = checkword(scw, info, root); if (rv) break; } else { mkinitcap2(part2, sunicw); scw = part1 + part2; rv = checkword(scw, info, root); if (rv) break; } mkinitcap2(scw, sunicw); rv = checkword(scw, info, root); if (rv) break; } } if (pAMgr && pAMgr->get_checksharps() && scw.find("SS") != std::string::npos) { mkallsmall2(scw, sunicw); std::string u8buffer(scw); rv = spellsharps(u8buffer, 0, 0, 0, info, root); if (!rv) { mkinitcap2(scw, sunicw); rv = spellsharps(scw, 0, 0, 0, info, root); } if ((abbv) && !(rv)) { u8buffer.push_back('.'); rv = spellsharps(u8buffer, 0, 0, 0, info, root); if (!rv) { u8buffer = std::string(scw); u8buffer.push_back('.'); rv = spellsharps(u8buffer, 0, 0, 0, info, root); } } if (rv) break; } } /* FALLTHROUGH */ case INITCAP: { // handle special capitalization of dotted I bool Idot = (utf8 && (unsigned char) scw[0] == 0xc4 && (unsigned char) scw[1] == 0xb0); *info |= SPELL_ORIGCAP; if (captype == ALLCAP) { mkallsmall2(scw, sunicw); mkinitcap2(scw, sunicw); if (Idot) scw.replace(0, 1, "\xc4\xb0"); } if (captype == INITCAP) *info |= SPELL_INITCAP; rv = checkword(scw, info, root); if (captype == INITCAP) *info &= ~SPELL_INITCAP; // forbid bad capitalization // (for example, ijs -> Ijs instead of IJs in Dutch) // use explicit forms in dic: Ijs/F (F = FORBIDDENWORD flag) if (*info & SPELL_FORBIDDEN) { rv = NULL; break; } if (rv && is_keepcase(rv) && (captype == ALLCAP)) rv = NULL; if (rv || (Idot && langnum != LANG_az && langnum != LANG_tr && langnum != LANG_crh)) break; mkallsmall2(scw, sunicw); std::string u8buffer(scw); mkinitcap2(scw, sunicw); rv = checkword(u8buffer, info, root); if (abbv && !rv) { u8buffer.push_back('.'); rv = checkword(u8buffer, info, root); if (!rv) { u8buffer = scw; u8buffer.push_back('.'); if (captype == INITCAP) *info |= SPELL_INITCAP; rv = checkword(u8buffer, info, root); if (captype == INITCAP) *info &= ~SPELL_INITCAP; if (rv && is_keepcase(rv) && (captype == ALLCAP)) rv = NULL; break; } } if (rv && is_keepcase(rv) && ((captype == ALLCAP) || // if CHECKSHARPS: KEEPCASE words with \xDF are allowed // in INITCAP form, too. !(pAMgr->get_checksharps() && ((utf8 && u8buffer.find("\xC3\x9F") != std::string::npos) || (!utf8 && u8buffer.find('\xDF') != std::string::npos))))) rv = NULL; break; } } if (rv) { if (pAMgr && pAMgr->get_warn() && rv->astr && TESTAFF(rv->astr, pAMgr->get_warn(), rv->alen)) { *info |= SPELL_WARN; if (pAMgr->get_forbidwarn()) return false; return true; } return true; } // recursive breaking at break points if (!wordbreak.empty() && !(*info & SPELL_FORBIDDEN)) { int nbr = 0; wl = scw.size(); // calculate break points for recursion limit for (auto& j : wordbreak) { size_t pos = 0; while ((pos = scw.find(j, pos)) != std::string::npos) { ++nbr; pos += j.size(); } } if (nbr >= 10) return false; // check boundary patterns (^begin and end$) for (auto& j : wordbreak) { size_t plen = j.size(); if (plen == 1 || plen > wl) continue; if (j[0] == '^' && scw.compare(0, plen - 1, j, 1, plen -1) == 0 && spell(scw.substr(plen - 1), candidate_stack)) { if (info) *info |= SPELL_COMPOUND; return true; } if (j[plen - 1] == '$' && scw.compare(wl - plen + 1, plen - 1, j, 0, plen - 1) == 0) { std::string suffix(scw.substr(wl - plen + 1)); scw.resize(wl - plen + 1); if (spell(scw, candidate_stack)) { if (info) *info |= SPELL_COMPOUND; return true; } scw.append(suffix); } } // other patterns for (auto& j : wordbreak) { size_t plen = j.size(); size_t found = scw.find(j); if ((found > 0) && (found < wl - plen)) { size_t found2 = scw.find(j, found + 1); // try to break at the second occurance // to recognize dictionary words with wordbreak if (found2 > 0 && (found2 < wl - plen)) found = found2; std::string substring(scw.substr(found + plen)); if (!spell(substring, candidate_stack)) continue; std::string suffix(scw.substr(found)); scw.resize(found); // examine 2 sides of the break point if (spell(scw, candidate_stack)) { if (info) *info |= SPELL_COMPOUND; return true; } scw.append(suffix); // LANG_hu: spec. dash rule if (langnum == LANG_hu && j == "-") { suffix = scw.substr(found + 1); scw.resize(found + 1); if (spell(scw, candidate_stack)) { if (info) *info |= SPELL_COMPOUND; return true; // check the first part with dash } scw.append(suffix); } // end of LANG specific region } } // other patterns (break at first break point) for (auto& j : wordbreak) { size_t plen = j.size(), found = scw.find(j); if ((found > 0) && (found < wl - plen)) { if (!spell(scw.substr(found + plen), candidate_stack)) continue; std::string suffix(scw.substr(found)); scw.resize(found); // examine 2 sides of the break point if (spell(scw, candidate_stack)) { if (info) *info |= SPELL_COMPOUND; return true; } scw.append(suffix); // LANG_hu: spec. dash rule if (langnum == LANG_hu && j == "-") { suffix = scw.substr(found + 1); scw.resize(found + 1); if (spell(scw, candidate_stack)) { if (info) *info |= SPELL_COMPOUND; return true; // check the first part with dash } scw.append(suffix); } // end of LANG specific region } } } return false; } struct hentry* HunspellImpl::checkword(const std::string& w, int* info, std::string* root) { std::string word; // remove IGNORE characters from the string clean_ignore(word, w); if (word.empty()) return NULL; // word reversing wrapper for complex prefixes if (complexprefixes) { if (utf8) reverseword_utf(word); else reverseword(word); } int len = word.size(); // look word in hash table struct hentry* he = NULL; for (size_t i = 0; (i < m_HMgrs.size()) && !he; ++i) { he = m_HMgrs[i]->lookup(word.c_str(), word.size()); // check forbidden and onlyincompound words if ((he) && (he->astr) && (pAMgr) && TESTAFF(he->astr, pAMgr->get_forbiddenword(), he->alen)) { if (info) *info |= SPELL_FORBIDDEN; // LANG_hu section: set dash information for suggestions if (langnum == LANG_hu) { if (pAMgr->get_compoundflag() && TESTAFF(he->astr, pAMgr->get_compoundflag(), he->alen)) { if (info) *info |= SPELL_COMPOUND; } } return NULL; } // he = next not needaffix, onlyincompound homonym or onlyupcase word while (he && (he->astr) && pAMgr && ((pAMgr->get_needaffix() && TESTAFF(he->astr, pAMgr->get_needaffix(), he->alen)) || (pAMgr->get_onlyincompound() && TESTAFF(he->astr, pAMgr->get_onlyincompound(), he->alen)) || (info && (*info & SPELL_INITCAP) && TESTAFF(he->astr, ONLYUPCASEFLAG, he->alen)))) he = he->next_homonym; } // check with affixes if (!he && pAMgr) { // try stripping off affixes he = pAMgr->affix_check(word, 0, len, 0); // check compound restriction and onlyupcase if (he && he->astr && ((pAMgr->get_onlyincompound() && TESTAFF(he->astr, pAMgr->get_onlyincompound(), he->alen)) || (info && (*info & SPELL_INITCAP) && TESTAFF(he->astr, ONLYUPCASEFLAG, he->alen)))) { he = NULL; } if (he) { if ((he->astr) && (pAMgr) && TESTAFF(he->astr, pAMgr->get_forbiddenword(), he->alen)) { if (info) *info |= SPELL_FORBIDDEN; return NULL; } if (root) { root->assign(he->word); if (complexprefixes) { if (utf8) reverseword_utf(*root); else reverseword(*root); } } // try check compound word } else if (pAMgr->get_compound()) { struct hentry* rwords[100] = {}; // buffer for COMPOUND pattern checking // first allow only 2 words in the compound int setinfo = SPELL_COMPOUND_2; if (info) setinfo |= *info; he = pAMgr->compound_check(word, 0, 0, 100, 0, NULL, (hentry**)&rwords, 0, 0, &setinfo); if (info) *info = setinfo & ~SPELL_COMPOUND_2; // if not 2-word compoud word, try with 3 or more words // (only if original info didn't forbid it) if (!he && info && !(*info & SPELL_COMPOUND_2)) { *info &= ~SPELL_COMPOUND_2; he = pAMgr->compound_check(word, 0, 0, 100, 0, NULL, (hentry**)&rwords, 0, 0, info); // accept the compound with 3 or more words only if it is // - not a dictionary word with a typo and // - not two words written separately, // - or if it's an arbitrary number accepted by compound rules (e.g. 999%) if (he && !isdigit(word[0])) { std::vector slst; if (pSMgr->suggest(slst, word, NULL, /*test_simplesug=*/true)) he = NULL; } } // LANG_hu section: `moving rule' with last dash if ((!he) && (langnum == LANG_hu) && (word[len - 1] == '-')) { std::string dup(word, 0, len - 1); he = pAMgr->compound_check(dup, -5, 0, 100, 0, NULL, (hentry**)&rwords, 1, 0, info); } // end of LANG specific region if (he) { if (root) { root->assign(he->word); if (complexprefixes) { if (utf8) reverseword_utf(*root); else reverseword(*root); } } if (info) *info |= SPELL_COMPOUND; } } } return he; } std::vector HunspellImpl::suggest(const std::string& word, std::vector& suggest_candidate_stack) { if (suggest_candidate_stack.size() > 2048 || // apply a fairly arbitrary depth limit // something very broken if suggest ends up calling itself with the same word std::find(suggest_candidate_stack.begin(), suggest_candidate_stack.end(), word) != suggest_candidate_stack.end()) { return { }; } bool capwords; size_t abbv; int captype; std::vector spell_candidate_stack; suggest_candidate_stack.push_back(word); std::vector slst = suggest_internal(word, spell_candidate_stack, suggest_candidate_stack, capwords, abbv, captype); suggest_candidate_stack.pop_back(); // word reversing wrapper for complex prefixes if (complexprefixes) { for (auto& j : slst) { if (utf8) reverseword_utf(j); else reverseword(j); } } // capitalize if (capwords) for (auto& j : slst) { mkinitcap(j); } // expand suggestions with dot(s) if (abbv && pAMgr && pAMgr->get_sugswithdots() && word.size() >= abbv) { for (auto& j : slst) { j.append(word.substr(word.size() - abbv)); } } // remove bad capitalized and forbidden forms if (pAMgr && (pAMgr->get_keepcase() || pAMgr->get_forbiddenword())) { switch (captype) { case INITCAP: case ALLCAP: { size_t l = 0; for (size_t j = 0; j < slst.size(); ++j) { if (slst[j].find(' ') == std::string::npos && !spell(slst[j], spell_candidate_stack)) { std::string s; std::vector w; if (utf8) { u8_u16(w, slst[j]); } else { s = slst[j]; } mkallsmall2(s, w); if (spell(s, spell_candidate_stack)) { slst[l] = s; ++l; } else { mkinitcap2(s, w); if (spell(s, spell_candidate_stack)) { slst[l] = s; ++l; } } } else { slst[l] = slst[j]; ++l; } } slst.resize(l); } } } // remove duplications size_t l = 0; for (size_t j = 0; j < slst.size(); ++j) { slst[l] = slst[j]; for (size_t k = 0; k < l; ++k) { if (slst[k] == slst[j]) { --l; break; } } ++l; } slst.resize(l); // output conversion RepList* rl = (pAMgr) ? pAMgr->get_oconvtable() : NULL; if (rl) { for (size_t i = 0; rl && i < slst.size(); ++i) { std::string wspace; if (rl->conv(slst[i], wspace)) { slst[i] = wspace; } } } return slst; } std::vector HunspellImpl::suggest(const std::string& word) { std::vector suggest_candidate_stack; return suggest(word, suggest_candidate_stack); } std::vector HunspellImpl::suggest_internal(const std::string& word, std::vector& spell_candidate_stack, std::vector& suggest_candidate_stack, bool& capwords, size_t& abbv, int& captype) { captype = NOCAP; abbv = 0; capwords = false; std::vector slst; int onlycmpdsug = 0; if (!pSMgr || m_HMgrs.empty()) return slst; // process XML input of the simplified API (see manual) if (word.compare(0, sizeof(SPELL_XML) - 3, SPELL_XML, sizeof(SPELL_XML) - 3) == 0) { return spellml(word); } if (utf8) { if (word.size() >= MAXWORDUTF8LEN) return slst; } else { if (word.size() >= MAXWORDLEN) return slst; } size_t wl = 0; std::string scw; std::vector sunicw; // input conversion RepList* rl = (pAMgr) ? pAMgr->get_iconvtable() : NULL; { std::string wspace; bool convstatus = rl ? rl->conv(word, wspace) : false; if (convstatus) wl = cleanword2(scw, sunicw, wspace, &captype, &abbv); else wl = cleanword2(scw, sunicw, word, &captype, &abbv); if (wl == 0) return slst; #if defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION) if (wl > 32768) return slst; #endif } bool good = false; clock_t timelimit; // initialize in every suggestion call timelimit = clock(); // check capitalized form for FORCEUCASE if (pAMgr && captype == NOCAP && pAMgr->get_forceucase()) { int info = SPELL_ORIGCAP; if (checkword(scw, &info, NULL)) { std::string form(scw); mkinitcap(form); slst.push_back(form); return slst; } } switch (captype) { case NOCAP: { good |= pSMgr->suggest(slst, scw, &onlycmpdsug); if (clock() > timelimit + TIMELIMIT_GLOBAL) return slst; if (abbv) { std::string wspace(scw); wspace.push_back('.'); good |= pSMgr->suggest(slst, wspace, &onlycmpdsug); if (clock() > timelimit + TIMELIMIT_GLOBAL) return slst; } break; } case INITCAP: { capwords = true; good |= pSMgr->suggest(slst, scw, &onlycmpdsug); if (clock() > timelimit + TIMELIMIT_GLOBAL) return slst; std::string wspace(scw); mkallsmall2(wspace, sunicw); good |= pSMgr->suggest(slst, wspace, &onlycmpdsug); if (clock() > timelimit + TIMELIMIT_GLOBAL) return slst; break; } case HUHINITCAP: capwords = true; /* FALLTHROUGH */ case HUHCAP: { good |= pSMgr->suggest(slst, scw, &onlycmpdsug); if (clock() > timelimit + TIMELIMIT_GLOBAL) return slst; // something.The -> something. The size_t dot_pos = scw.find('.'); if (dot_pos != std::string::npos) { std::string postdot = scw.substr(dot_pos + 1); int captype_; if (utf8) { std::vector postdotu; u8_u16(postdotu, postdot); captype_ = get_captype_utf8(postdotu, langnum); } else { captype_ = get_captype(postdot, csconv); } if (captype_ == INITCAP) { std::string str(scw); str.insert(dot_pos + 1, 1, ' '); insert_sug(slst, str); } } std::string wspace; if (captype == HUHINITCAP) { // TheOpenOffice.org -> The OpenOffice.org wspace = scw; mkinitsmall2(wspace, sunicw); good |= pSMgr->suggest(slst, wspace, &onlycmpdsug); if (clock() > timelimit + TIMELIMIT_GLOBAL) return slst; } wspace = scw; mkallsmall2(wspace, sunicw); if (spell(wspace, spell_candidate_stack)) insert_sug(slst, wspace); size_t prevns = slst.size(); good |= pSMgr->suggest(slst, wspace, &onlycmpdsug); if (clock() > timelimit + TIMELIMIT_GLOBAL) return slst; if (captype == HUHINITCAP) { mkinitcap2(wspace, sunicw); if (spell(wspace, spell_candidate_stack)) insert_sug(slst, wspace); good |= pSMgr->suggest(slst, wspace, &onlycmpdsug); if (clock() > timelimit + TIMELIMIT_GLOBAL) return slst; } // aNew -> "a New" (instead of "a new") for (size_t j = prevns; j < slst.size(); ++j) { const char* space = strchr(slst[j].c_str(), ' '); if (space) { size_t slen = strlen(space + 1); // different case after space (need capitalisation) if ((slen < wl) && strcmp(scw.c_str() + wl - slen, space + 1)) { std::string first(slst[j].c_str(), space + 1); std::string second(space + 1); std::vector w; if (utf8) u8_u16(w, second); mkinitcap2(second, w); // set as first suggestion slst.erase(slst.begin() + j); slst.insert(slst.begin(), first + second); } } } break; } case ALLCAP: { std::string wspace(scw); mkallsmall2(wspace, sunicw); good |= pSMgr->suggest(slst, wspace, &onlycmpdsug); if (clock() > timelimit + TIMELIMIT_GLOBAL) return slst; if (pAMgr && pAMgr->get_keepcase() && spell(wspace, spell_candidate_stack)) insert_sug(slst, wspace); mkinitcap2(wspace, sunicw); good |= pSMgr->suggest(slst, wspace, &onlycmpdsug); if (clock() > timelimit + TIMELIMIT_GLOBAL) return slst; for (auto& j : slst) { mkallcap(j); if (pAMgr && pAMgr->get_checksharps()) { if (utf8) { mystrrep(j, "\xC3\x9F", "SS"); } else { mystrrep(j, "\xDF", "SS"); } } } break; } } // LANG_hu section: replace '-' with ' ' in Hungarian if (langnum == LANG_hu) { for (auto& j : slst) { size_t pos = j.find('-'); if (pos != std::string::npos) { int info; std::string w(j.substr(0, pos)); w.append(j.substr(pos + 1)); (void)spell(w, spell_candidate_stack, &info, NULL); if ((info & SPELL_COMPOUND) && (info & SPELL_FORBIDDEN)) { j[pos] = ' '; } else j[pos] = '-'; } } } // END OF LANG_hu section // try ngram approach since found nothing good suggestion if (!good && pAMgr && (slst.empty() || onlycmpdsug) && (pAMgr->get_maxngramsugs() != 0)) { switch (captype) { case NOCAP: { pSMgr->ngsuggest(slst, scw.c_str(), m_HMgrs, NOCAP); if (clock() > timelimit + TIMELIMIT_GLOBAL) return slst; break; } /* FALLTHROUGH */ case HUHINITCAP: capwords = true; /* FALLTHROUGH */ case HUHCAP: { std::string wspace(scw); mkallsmall2(wspace, sunicw); pSMgr->ngsuggest(slst, wspace.c_str(), m_HMgrs, HUHCAP); if (clock() > timelimit + TIMELIMIT_GLOBAL) return slst; break; } case INITCAP: { capwords = true; std::string wspace(scw); mkallsmall2(wspace, sunicw); pSMgr->ngsuggest(slst, wspace.c_str(), m_HMgrs, INITCAP); if (clock() > timelimit + TIMELIMIT_GLOBAL) return slst; break; } case ALLCAP: { std::string wspace(scw); mkallsmall2(wspace, sunicw); size_t oldns = slst.size(); pSMgr->ngsuggest(slst, wspace.c_str(), m_HMgrs, ALLCAP); if (clock() > timelimit + TIMELIMIT_GLOBAL) return slst; for (size_t j = oldns; j < slst.size(); ++j) { mkallcap(slst[j]); } break; } } } // try dash suggestion (Afo-American -> Afro-American) // Note: LibreOffice was modified to treat dashes as word // characters to check "scot-free" etc. word forms, but // we need to handle suggestions for "Afo-American", etc., // while "Afro-American" is missing from the dictionary. // TODO avoid possible overgeneration size_t dash_pos = scw.find('-'); if (dash_pos != std::string::npos) { int nodashsug = 1; for (size_t j = 0; j < slst.size() && nodashsug == 1; ++j) { if (slst[j].find('-') != std::string::npos) nodashsug = 0; } size_t prev_pos = 0; bool last = false; while (!good && nodashsug && !last) { if (dash_pos == scw.size()) last = 1; std::string chunk = scw.substr(prev_pos, dash_pos - prev_pos); if (chunk != word && !spell(chunk, spell_candidate_stack)) { std::vector nlst = suggest(chunk, suggest_candidate_stack); if (clock() > timelimit + TIMELIMIT_GLOBAL) return slst; for (auto j = nlst.rbegin(); j != nlst.rend(); ++j) { std::string wspace = scw.substr(0, prev_pos); wspace.append(*j); if (!last) { wspace.append("-"); wspace.append(scw.substr(dash_pos + 1)); } int info = 0; if (pAMgr && pAMgr->get_forbiddenword()) checkword(wspace, &info, NULL); if (!(info & SPELL_FORBIDDEN)) insert_sug(slst, wspace); } nodashsug = 0; } if (!last) { prev_pos = dash_pos + 1; dash_pos = scw.find('-', prev_pos); } if (dash_pos == std::string::npos) dash_pos = scw.size(); } } return slst; } const std::string& HunspellImpl::get_dict_encoding() const { return encoding; } std::vector HunspellImpl::stem(const std::vector& desc) { std::vector slst; std::string result2; if (desc.empty()) return slst; for (const auto& i : desc) { std::string result; // add compound word parts (except the last one) const char* s = i.c_str(); const char* part = strstr(s, MORPH_PART); if (part) { const char* nextpart = strstr(part + 1, MORPH_PART); while (nextpart) { std::string field; copy_field(field, part, MORPH_PART); result.append(field); part = nextpart; nextpart = strstr(part + 1, MORPH_PART); } s = part; } std::string tok(s); size_t alt = 0; while ((alt = tok.find(" | ", alt)) != std::string::npos) { tok[alt + 1] = MSEP_ALT; } std::vector pl = line_tok(tok, MSEP_ALT); for (auto& k : pl) { // add derivational suffixes if (k.find(MORPH_DERI_SFX) != std::string::npos) { // remove inflectional suffixes const size_t is = k.find(MORPH_INFL_SFX); if (is != std::string::npos) k.resize(is); std::vector singlepl; singlepl.push_back(k); std::string sg = pSMgr->suggest_gen(singlepl, k); if (!sg.empty()) { std::vector gen = line_tok(sg, MSEP_REC); for (auto& j : gen) { result2.push_back(MSEP_REC); result2.append(result); result2.append(j); } } } else { result2.push_back(MSEP_REC); result2.append(result); if (k.find(MORPH_SURF_PFX) != std::string::npos) { std::string field; copy_field(field, k, MORPH_SURF_PFX); result2.append(field); } std::string field; copy_field(field, k, MORPH_STEM); result2.append(field); } } } slst = line_tok(result2, MSEP_REC); uniqlist(slst); return slst; } std::vector HunspellImpl::stem(const std::string& word) { return stem(analyze(word)); } const std::string& HunspellImpl::get_wordchars_cpp() const { return pAMgr->get_wordchars(); } const std::vector& HunspellImpl::get_wordchars_utf16() const { return pAMgr->get_wordchars_utf16(); } void HunspellImpl::mkinitcap(std::string& u8) { if (utf8) { std::vector u16; u8_u16(u16, u8); ::mkinitcap_utf(u16, langnum); u16_u8(u8, u16); } else { ::mkinitcap(u8, csconv); } } int HunspellImpl::mkinitcap2(std::string& u8, std::vector& u16) { if (utf8) { ::mkinitcap_utf(u16, langnum); u16_u8(u8, u16); } else { ::mkinitcap(u8, csconv); } return u8.size(); } int HunspellImpl::mkinitsmall2(std::string& u8, std::vector& u16) { if (utf8) { ::mkinitsmall_utf(u16, langnum); u16_u8(u8, u16); } else { ::mkinitsmall(u8, csconv); } return u8.size(); } int HunspellImpl::add(const std::string& word) { if (!m_HMgrs.empty()) return m_HMgrs[0]->add(word); return 0; } int HunspellImpl::add_with_affix(const std::string& word, const std::string& example) { if (!m_HMgrs.empty()) return m_HMgrs[0]->add_with_affix(word, example); return 0; } int HunspellImpl::remove(const std::string& word) { if (!m_HMgrs.empty()) return m_HMgrs[0]->remove(word); return 0; } const std::string& HunspellImpl::get_version_cpp() const { return pAMgr->get_version(); } struct cs_info* HunspellImpl::get_csconv() { return csconv; } void HunspellImpl::cat_result(std::string& result, const std::string& st) { if (!st.empty()) { if (!result.empty()) result.append("\n"); result.append(st); } } std::vector HunspellImpl::analyze(const std::string& word) { std::vector slst = analyze_internal(word); // output conversion RepList* rl = (pAMgr) ? pAMgr->get_oconvtable() : NULL; if (rl) { for (size_t i = 0; rl && i < slst.size(); ++i) { std::string wspace; if (rl->conv(slst[i], wspace)) { slst[i] = wspace; } } } return slst; } std::vector HunspellImpl::analyze_internal(const std::string& word) { std::vector candidate_stack, slst; if (!pSMgr || m_HMgrs.empty()) return slst; if (utf8) { if (word.size() >= MAXWORDUTF8LEN) return slst; } else { if (word.size() >= MAXWORDLEN) return slst; } int captype = NOCAP; size_t abbv = 0; size_t wl = 0; std::string scw; std::vector sunicw; // input conversion RepList* rl = (pAMgr) ? pAMgr->get_iconvtable() : NULL; { std::string wspace; bool convstatus = rl ? rl->conv(word, wspace) : false; if (convstatus) wl = cleanword2(scw, sunicw, wspace, &captype, &abbv); else wl = cleanword2(scw, sunicw, word, &captype, &abbv); } if (wl == 0) { if (abbv) { scw.clear(); for (wl = 0; wl < abbv; wl++) scw.push_back('.'); abbv = 0; } else return slst; } std::string result; size_t n = 0; // test numbers // LANG_hu section: set dash information for suggestions if (langnum == LANG_hu) { size_t n2 = 0; size_t n3 = 0; while ((n < wl) && (((scw[n] <= '9') && (scw[n] >= '0')) || (((scw[n] == '.') || (scw[n] == ',')) && (n > 0)))) { n++; if ((scw[n] == '.') || (scw[n] == ',')) { if (((n2 == 0) && (n > 3)) || ((n2 > 0) && ((scw[n - 1] == '.') || (scw[n - 1] == ',')))) break; n2++; n3 = n; } } if ((n == wl) && (n3 > 0) && (n - n3 > 3)) return slst; if ((n == wl) || ((n > 0) && ((scw[n] == '%') || (scw[n] == '\xB0')) && checkword(scw.substr(n), NULL, NULL))) { result.append(scw); result.resize(n - 1); if (n == wl) cat_result(result, pSMgr->suggest_morph(scw.substr(n - 1))); else { std::string chunk = scw.substr(n - 1, 1); cat_result(result, pSMgr->suggest_morph(chunk)); result.push_back('+'); // XXX SPEC. MORPHCODE cat_result(result, pSMgr->suggest_morph(scw.substr(n))); } return line_tok(result, MSEP_REC); } } // END OF LANG_hu section switch (captype) { case HUHCAP: case HUHINITCAP: case NOCAP: { cat_result(result, pSMgr->suggest_morph(scw)); if (abbv) { std::string u8buffer(scw); u8buffer.push_back('.'); cat_result(result, pSMgr->suggest_morph(u8buffer)); } break; } case INITCAP: { mkallsmall2(scw, sunicw); std::string u8buffer(scw); mkinitcap2(scw, sunicw); cat_result(result, pSMgr->suggest_morph(u8buffer)); cat_result(result, pSMgr->suggest_morph(scw)); if (abbv) { u8buffer.push_back('.'); cat_result(result, pSMgr->suggest_morph(u8buffer)); u8buffer = scw; u8buffer.push_back('.'); cat_result(result, pSMgr->suggest_morph(u8buffer)); } break; } case ALLCAP: { cat_result(result, pSMgr->suggest_morph(scw)); if (abbv) { std::string u8buffer(scw); u8buffer.push_back('.'); cat_result(result, pSMgr->suggest_morph(u8buffer)); } mkallsmall2(scw, sunicw); std::string u8buffer(scw); mkinitcap2(scw, sunicw); cat_result(result, pSMgr->suggest_morph(u8buffer)); cat_result(result, pSMgr->suggest_morph(scw)); if (abbv) { u8buffer.push_back('.'); cat_result(result, pSMgr->suggest_morph(u8buffer)); u8buffer = scw; u8buffer.push_back('.'); cat_result(result, pSMgr->suggest_morph(u8buffer)); } break; } } if (!result.empty()) { // word reversing wrapper for complex prefixes if (complexprefixes) { if (utf8) reverseword_utf(result); else reverseword(result); } return line_tok(result, MSEP_REC); } // compound word with dash (HU) I18n // LANG_hu section: set dash information for suggestions size_t dash_pos = langnum == LANG_hu ? scw.find('-') : std::string::npos; if (dash_pos != std::string::npos) { int nresult = 0; std::string part1 = scw.substr(0, dash_pos), part2 = scw.substr(dash_pos + 1); // examine 2 sides of the dash if (part2.empty()) { // base word ending with dash if (spell(part1, candidate_stack)) { std::string p = pSMgr->suggest_morph(part1); if (!p.empty()) { slst = line_tok(p, MSEP_REC); return slst; } } } else if (part2.size() == 1 && part2[0] == 'e') { // XXX (HU) -e hat. if (spell(part1, candidate_stack) && (spell("-e", candidate_stack))) { std::string st = pSMgr->suggest_morph(part1); if (!st.empty()) { result.append(st); } result.push_back('+'); // XXX spec. separator in MORPHCODE st = pSMgr->suggest_morph("-e"); if (!st.empty()) { result.append(st); } return line_tok(result, MSEP_REC); } } else { // first word ending with dash: word- XXX ??? part1.push_back(' '); nresult = spell(part1, candidate_stack); part1.erase(part1.size() - 1); if (nresult && spell(part2, candidate_stack) && ((part2.size() > 1) || ((part2[0] > '0') && (part2[0] < '9')))) { std::string st = pSMgr->suggest_morph(part1); if (!st.empty()) { result.append(st); result.push_back('+'); // XXX spec. separator in MORPHCODE } st = pSMgr->suggest_morph(part2); if (!st.empty()) { result.append(st); } return line_tok(result, MSEP_REC); } } // affixed number in correct word if (nresult && (dash_pos > 0) && (((scw[dash_pos - 1] <= '9') && (scw[dash_pos - 1] >= '0')) || (scw[dash_pos - 1] == '.'))) { n = 1; if (scw[dash_pos - n] == '.') n++; // search first not a number character to left from dash while ((dash_pos >= n) && ((scw[dash_pos - n] == '0') || (n < 3)) && (n < 6)) { n++; } if (dash_pos < n) n--; // numbers: valami1000000-hoz // examine 100000-hoz, 10000-hoz 1000-hoz, 10-hoz, // 56-hoz, 6-hoz for (; n >= 1; n--) { if (scw[dash_pos - n] < '0' || scw[dash_pos - n] > '9') { continue; } std::string chunk = scw.substr(dash_pos - n); if (checkword(chunk, NULL, NULL)) { result.append(chunk); std::string st = pSMgr->suggest_morph(chunk); if (!st.empty()) { result.append(st); } return line_tok(result, MSEP_REC); } } } } return slst; } std::vector HunspellImpl::generate(const std::string& word, const std::vector& pl) { std::vector slst; if (!pSMgr || pl.empty()) return slst; std::vector pl2 = analyze(word); int captype = NOCAP, abbv = 0; std::string cw; cleanword(cw, word, &captype, &abbv); std::string result; for (const auto& i : pl) { cat_result(result, pSMgr->suggest_gen(pl2, i)); } if (!result.empty()) { // allcap if (captype == ALLCAP) mkallcap(result); // line split slst = line_tok(result, MSEP_REC); // capitalize if (captype == INITCAP || captype == HUHINITCAP) { for (auto& str : slst) { mkinitcap(str); } } // temporary filtering of prefix related errors (eg. // generate("undrinkable", "eats") --> "undrinkables" and "*undrinks") auto it = slst.begin(); while (it != slst.end()) { std::vector candidate_stack; if (!spell(*it, candidate_stack)) { it = slst.erase(it); } else { ++it; } } } return slst; } std::vector HunspellImpl::generate(const std::string& word, const std::string& pattern) { std::vector pl = analyze(pattern); std::vector slst = generate(word, pl); uniqlist(slst); return slst; } // minimal XML parser functions std::string HunspellImpl::get_xml_par(const std::string& in_par, std::string::size_type pos) { std::string dest; if (pos == std::string::npos) return dest; const char* par = in_par.c_str() + pos; char end = *par; if (end == '>') end = '<'; else if (end != '\'' && end != '"') return dest; // bad XML for (par++; *par != '\0' && *par != end; ++par) { dest.push_back(*par); } mystrrep(dest, "<", "<"); mystrrep(dest, "&", "&"); return dest; } int HunspellImpl::get_langnum() const { return langnum; } bool HunspellImpl::input_conv(const std::string& word, std::string& dest) { RepList* rl = pAMgr ? pAMgr->get_iconvtable() : NULL; if (rl) { return rl->conv(word, dest); } dest.assign(word); return false; } // return the beginning of the element (attr == NULL) or the attribute std::string::size_type HunspellImpl::get_xml_pos(const std::string& s, std::string::size_type pos, const char* attr) { if (pos == std::string::npos) return std::string::npos; std::string::size_type endpos = s.find('>', pos); if (attr == NULL) return endpos; while (true) { pos = s.find(attr, pos); if (pos == std::string::npos || pos >= endpos) return std::string::npos; if (s[pos - 1] == ' ' || s[pos - 1] == '\n') break; pos += strlen(attr); } return pos + strlen(attr); } int HunspellImpl::check_xml_par(const std::string& q, std::string::size_type pos, const char* attr, const char* value) { const std::string cw = get_xml_par(q, get_xml_pos(q, pos, attr)); return cw == value ? 1 : 0; } std::vector HunspellImpl::get_xml_list(const std::string& list, std::string::size_type pos, const char* tag) { std::vector slst; if (pos == std::string::npos) return slst; while (true) { pos = list.find(tag, pos); if (pos == std::string::npos) break; std::string cw = get_xml_par(list, pos + strlen(tag) - 1); if (cw.empty()) { break; } slst.push_back(cw); ++pos; } return slst; } std::vector HunspellImpl::spellml(const std::string& in_word) { std::vector slst; std::string::size_type qpos = in_word.find("', qpos); if (q2pos == std::string::npos) return slst; // bad XML input q2pos = in_word.find("', q2pos)); if (!cw.empty()) slst = analyze(cw); if (slst.empty()) return slst; // convert the result to ana1ana2 format std::string r; r.append(""); for (auto entry : slst) { r.append(""); mystrrep(entry, "\t", " "); mystrrep(entry, "&", "&"); mystrrep(entry, "<", "<"); r.append(entry); r.append(""); } r.append(""); slst.clear(); slst.push_back(r); return slst; } else if (check_xml_par(in_word, qpos, "type=", "stem")) { std::string cw = get_xml_par(in_word, in_word.find('>', q2pos)); if (!cw.empty()) return stem(cw); } else if (check_xml_par(in_word, qpos, "type=", "generate")) { std::string cw = get_xml_par(in_word, in_word.find('>', q2pos)); if (cw.empty()) return slst; std::string::size_type q3pos = in_word.find("', q3pos)); if (!cw2.empty()) { return generate(cw, cw2); } } else { q2pos = in_word.find(" slst2 = get_xml_list(in_word, in_word.find('>', q2pos), ""); if (!slst2.empty()) { slst = generate(cw, slst2); uniqlist(slst); return slst; } } } } else if (check_xml_par(in_word, qpos, "type=", "add")) { std::string cw = get_xml_par(in_word, in_word.find('>', q2pos)); if (cw.empty()) return slst; std::string::size_type q3pos = in_word.find("', q3pos)); if (!cw2.empty()) { add_with_affix(cw, cw2); } else { add(cw); } } else { add(cw); } } return slst; } std::vector HunspellImpl::suffix_suggest(const std::string& root_word) { std::vector slst; struct hentry* he = NULL; int len; std::string w2; const char* word; const char* ignoredchars = pAMgr->get_ignore(); if (ignoredchars != NULL) { w2.assign(root_word); if (utf8) { const std::vector& ignoredchars_utf16 = pAMgr->get_ignore_utf16(); remove_ignored_chars_utf(w2, ignoredchars_utf16); } else { remove_ignored_chars(w2, ignoredchars); } word = w2.c_str(); len = (int)w2.size(); } else { word = root_word.c_str(); len = (int)root_word.size(); } if (!len) return slst; for (size_t i = 0; (i < m_HMgrs.size()) && !he; ++i) { he = m_HMgrs[i]->lookup(word, len); } if (he) { slst = pAMgr->get_suffix_words(he->astr, he->alen, root_word); } return slst; } namespace { // using malloc because this is for the c-api where the callers // expect to be able to use free char* stringdup(const std::string& s) { size_t sl = s.size() + 1; char* d = (char*)malloc(sl); if (d) memcpy(d, s.c_str(), sl); return d; } int munge_vector(char*** slst, const std::vector& items) { if (items.empty()) { *slst = NULL; return 0; } else { *slst = new char*[items.size()]; for (size_t i = 0; i < items.size(); ++i) (*slst)[i] = stringdup(items[i]); } return items.size(); } } int HunspellImpl::spell(const char* word, int* info, char** root) { std::string sroot; std::vector candidate_stack; bool ret = spell(word, candidate_stack, info, root ? &sroot : NULL); if (root) { if (sroot.empty()) { *root = NULL; } else { *root = stringdup(sroot); } } return ret; } int HunspellImpl::suggest(char*** slst, const char* word) { std::vector suggests = suggest(word); return munge_vector(slst, suggests); } int HunspellImpl::suffix_suggest(char*** slst, const char* root_word) { std::vector stems = suffix_suggest(root_word); return munge_vector(slst, stems); } void HunspellImpl::free_list(char*** slst, int n) { if (slst && *slst) { for (int i = 0; i < n; i++) free((*slst)[i]); delete[] *slst; *slst = NULL; } } char* HunspellImpl::get_dic_encoding() { return &encoding[0]; } int HunspellImpl::analyze(char*** slst, const char* word) { std::vector stems = analyze(word); return munge_vector(slst, stems); } int HunspellImpl::stem(char*** slst, const char* word) { std::vector stems = stem(word); return munge_vector(slst, stems); } int HunspellImpl::stem(char*** slst, char** desc, int n) { std::vector morph; morph.reserve(n); for (int i = 0; i < n; ++i) morph.emplace_back(desc[i]); std::vector stems = stem(morph); return munge_vector(slst, stems); } int HunspellImpl::generate(char*** slst, const char* word, const char* pattern) { std::vector stems = generate(word, pattern); return munge_vector(slst, stems); } int HunspellImpl::generate(char*** slst, const char* word, char** pl, int pln) { std::vector morph; morph.reserve(pln); for (int i = 0; i < pln; ++i) morph.emplace_back(pl[i]); std::vector stems = generate(word, morph); return munge_vector(slst, stems); } const char* HunspellImpl::get_wordchars() const { return get_wordchars_cpp().c_str(); } const char* HunspellImpl::get_version() const { return get_version_cpp().c_str(); } int HunspellImpl::input_conv(const char* word, char* dest, size_t destsize) { std::string d; bool ret = input_conv(word, d); if (ret && d.size() < destsize) { strncpy(dest, d.c_str(), destsize); return 1; } return 0; } Hunspell::Hunspell(const char* affpath, const char* dpath, const char* key) : m_Impl(new HunspellImpl(affpath, dpath, key)) { } Hunspell::~Hunspell() { delete m_Impl; } // load extra dictionaries int Hunspell::add_dic(const char* dpath, const char* key) { return m_Impl->add_dic(dpath, key); } bool Hunspell::spell(const std::string& word, int* info, std::string* root) { std::vector candidate_stack; return m_Impl->spell(word, candidate_stack, info, root); } std::vector Hunspell::suggest(const std::string& word) { return m_Impl->suggest(word); } std::vector Hunspell::suffix_suggest(const std::string& root_word) { return m_Impl->suffix_suggest(root_word); } const std::string& Hunspell::get_dict_encoding() const { return m_Impl->get_dict_encoding(); } std::vector Hunspell::stem(const std::vector& desc) { return m_Impl->stem(desc); } std::vector Hunspell::stem(const std::string& word) { return m_Impl->stem(word); } const std::string& Hunspell::get_wordchars_cpp() const { return m_Impl->get_wordchars_cpp(); } const std::vector& Hunspell::get_wordchars_utf16() const { return m_Impl->get_wordchars_utf16(); } int Hunspell::add(const std::string& word) { return m_Impl->add(word); } int Hunspell::add_with_affix(const std::string& word, const std::string& example) { return m_Impl->add_with_affix(word, example); } int Hunspell::remove(const std::string& word) { return m_Impl->remove(word); } const std::string& Hunspell::get_version_cpp() const { return m_Impl->get_version_cpp(); } struct cs_info* Hunspell::get_csconv() { return m_Impl->get_csconv(); } std::vector Hunspell::analyze(const std::string& word) { return m_Impl->analyze(word); } std::vector Hunspell::generate(const std::string& word, const std::vector& pl) { return m_Impl->generate(word, pl); } std::vector Hunspell::generate(const std::string& word, const std::string& pattern) { return m_Impl->generate(word, pattern); } int Hunspell::get_langnum() const { return m_Impl->get_langnum(); } bool Hunspell::input_conv(const std::string& word, std::string& dest) { return m_Impl->input_conv(word, dest); } int Hunspell::spell(const char* word, int* info, char** root) { return m_Impl->spell(word, info, root); } int Hunspell::suggest(char*** slst, const char* word) { return m_Impl->suggest(slst, word); } int Hunspell::suffix_suggest(char*** slst, const char* root_word) { return m_Impl->suffix_suggest(slst, root_word); } void Hunspell::free_list(char*** slst, int n) { m_Impl->free_list(slst, n); } char* Hunspell::get_dic_encoding() { return m_Impl->get_dic_encoding(); } int Hunspell::analyze(char*** slst, const char* word) { return m_Impl->analyze(slst, word); } int Hunspell::stem(char*** slst, const char* word) { return m_Impl->stem(slst, word); } int Hunspell::stem(char*** slst, char** desc, int n) { return m_Impl->stem(slst, desc, n); } int Hunspell::generate(char*** slst, const char* word, const char* pattern) { return m_Impl->generate(slst, word, pattern); } int Hunspell::generate(char*** slst, const char* word, char** pl, int pln) { return m_Impl->generate(slst, word, pl, pln); } const char* Hunspell::get_wordchars() const { return m_Impl->get_wordchars(); } const char* Hunspell::get_version() const { return m_Impl->get_version(); } int Hunspell::input_conv(const char* word, char* dest, size_t destsize) { return m_Impl->input_conv(word, dest, destsize); } Hunhandle* Hunspell_create(const char* affpath, const char* dpath) { return reinterpret_cast(new HunspellImpl(affpath, dpath)); } Hunhandle* Hunspell_create_key(const char* affpath, const char* dpath, const char* key) { return reinterpret_cast(new HunspellImpl(affpath, dpath, key)); } void Hunspell_destroy(Hunhandle* pHunspell) { delete reinterpret_cast(pHunspell); } int Hunspell_add_dic(Hunhandle* pHunspell, const char* dpath) { return reinterpret_cast(pHunspell)->add_dic(dpath); } int Hunspell_spell(Hunhandle* pHunspell, const char* word) { return reinterpret_cast(pHunspell)->spell(word); } char* Hunspell_get_dic_encoding(Hunhandle* pHunspell) { return reinterpret_cast(pHunspell)->get_dic_encoding(); } int Hunspell_suggest(Hunhandle* pHunspell, char*** slst, const char* word) { return reinterpret_cast(pHunspell)->suggest(slst, word); } int Hunspell_suffix_suggest(Hunhandle* pHunspell, char*** slst, const char* root_word) { return reinterpret_cast(pHunspell)->suffix_suggest(slst, root_word); } int Hunspell_analyze(Hunhandle* pHunspell, char*** slst, const char* word) { return reinterpret_cast(pHunspell)->analyze(slst, word); } int Hunspell_stem(Hunhandle* pHunspell, char*** slst, const char* word) { return reinterpret_cast(pHunspell)->stem(slst, word); } int Hunspell_stem2(Hunhandle* pHunspell, char*** slst, char** desc, int n) { return reinterpret_cast(pHunspell)->stem(slst, desc, n); } int Hunspell_generate(Hunhandle* pHunspell, char*** slst, const char* word, const char* pattern) { return reinterpret_cast(pHunspell)->generate(slst, word, pattern); } int Hunspell_generate2(Hunhandle* pHunspell, char*** slst, const char* word, char** desc, int n) { return reinterpret_cast(pHunspell)->generate(slst, word, desc, n); } /* functions for run-time modification of the dictionary */ /* add word to the run-time dictionary */ int Hunspell_add(Hunhandle* pHunspell, const char* word) { return reinterpret_cast(pHunspell)->add(word); } /* add word to the run-time dictionary with affix flags of * the example (a dictionary word): Hunspell will recognize * affixed forms of the new word, too. */ int Hunspell_add_with_affix(Hunhandle* pHunspell, const char* word, const char* example) { return reinterpret_cast(pHunspell)->add_with_affix(word, example); } /* remove word from the run-time dictionary */ int Hunspell_remove(Hunhandle* pHunspell, const char* word) { return reinterpret_cast(pHunspell)->remove(word); } void Hunspell_free_list(Hunhandle* pHunspell, char*** list, int n) { reinterpret_cast(pHunspell)->free_list(list, n); } hunspell-1.7.2/src/hunspell/filemgr.hxx0000664000175000017500000001014214352160534015076 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /* * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada * And Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. All modifications to the source code must be clearly marked as * such. Binary redistributions based on modified source code * must be clearly marked as modified versions in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* file manager class - read lines of files [filename] OR [filename.hz] */ #ifndef FILEMGR_HXX_ #define FILEMGR_HXX_ #include "hunzip.hxx" #include #include #include class FileMgr { protected: std::ifstream fin; Hunzip* hin; char in[BUFSIZE + 50]; // input buffer int fail(const char* err, const char* par); int linenum; public: FileMgr(const char* filename, const char* key = NULL); FileMgr(const FileMgr&) = delete; FileMgr& operator=(const FileMgr&) = delete; ~FileMgr(); bool getline(std::string&); int getlinenum(); }; #endif hunspell-1.7.2/src/hunspell/affentry.hxx0000664000175000017500000002110614352160534015271 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /* * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada * And Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. All modifications to the source code must be clearly marked as * such. Binary redistributions based on modified source code * must be clearly marked as modified versions in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifndef AFFIX_HXX_ #define AFFIX_HXX_ #include "atypes.hxx" #include "baseaffix.hxx" #include "affixmgr.hxx" /* A Prefix Entry */ class PfxEntry : public AffEntry { private: AffixMgr* pmyMgr; PfxEntry* next; PfxEntry* nexteq; PfxEntry* nextne; PfxEntry* flgnxt; public: explicit PfxEntry(AffixMgr* pmgr); PfxEntry(const PfxEntry&) = delete; PfxEntry& operator=(const PfxEntry&) = delete; bool allowCross() const { return ((opts & aeXPRODUCT) != 0); } struct hentry* checkword(const std::string& word, int start, int len, char in_compound, const FLAG needflag = FLAG_NULL); struct hentry* check_twosfx(const std::string& word, int start, int len, char in_compound, const FLAG needflag = FLAG_NULL); std::string check_morph(const std::string& word, int start, int len, char in_compound, const FLAG needflag = FLAG_NULL); std::string check_twosfx_morph(const std::string& word, int start, int len, char in_compound, const FLAG needflag = FLAG_NULL); FLAG getFlag() { return aflag; } const char* getKey() { return appnd.c_str(); } std::string add(const char* word, size_t len); inline int getKeyLen() { return appnd.size(); } inline const char* getMorph() { return morphcode; } inline const unsigned short* getCont() { return contclass; } inline unsigned short getContLen() { return contclasslen; } inline PfxEntry* getNext() { return next; } inline PfxEntry* getNextNE() { return nextne; } inline PfxEntry* getNextEQ() { return nexteq; } inline PfxEntry* getFlgNxt() { return flgnxt; } inline void setNext(PfxEntry* ptr) { next = ptr; } inline void setNextNE(PfxEntry* ptr) { nextne = ptr; } inline void setNextEQ(PfxEntry* ptr) { nexteq = ptr; } inline void setFlgNxt(PfxEntry* ptr) { flgnxt = ptr; } inline char* nextchar(char* p); inline int test_condition(const std::string& st); }; /* A Suffix Entry */ class SfxEntry : public AffEntry { private: SfxEntry(const SfxEntry&); SfxEntry& operator=(const SfxEntry&); private: AffixMgr* pmyMgr; std::string rappnd; SfxEntry* next; SfxEntry* nexteq; SfxEntry* nextne; SfxEntry* flgnxt; SfxEntry* l_morph; SfxEntry* r_morph; SfxEntry* eq_morph; public: explicit SfxEntry(AffixMgr* pmgr); bool allowCross() const { return ((opts & aeXPRODUCT) != 0); } struct hentry* checkword(const std::string& word, int start, int len, int optflags, PfxEntry* ppfx, const FLAG cclass, const FLAG needflag, const FLAG badflag); struct hentry* check_twosfx(const std::string& word, int start, int len, int optflags, PfxEntry* ppfx, const FLAG needflag = FLAG_NULL); std::string check_twosfx_morph(const std::string& word, int start, int len, int optflags, PfxEntry* ppfx, const FLAG needflag = FLAG_NULL); struct hentry* get_next_homonym(struct hentry* he); struct hentry* get_next_homonym(struct hentry* word, int optflags, PfxEntry* ppfx, const FLAG cclass, const FLAG needflag); FLAG getFlag() { return aflag; } const char* getKey() { return rappnd.c_str(); } std::string add(const char* word, size_t len); inline const char* getMorph() { return morphcode; } inline const unsigned short* getCont() { return contclass; } inline unsigned short getContLen() { return contclasslen; } inline const char* getAffix() { return appnd.c_str(); } inline int getKeyLen() { return appnd.size(); } inline SfxEntry* getNext() { return next; } inline SfxEntry* getNextNE() { return nextne; } inline SfxEntry* getNextEQ() { return nexteq; } inline SfxEntry* getLM() { return l_morph; } inline SfxEntry* getRM() { return r_morph; } inline SfxEntry* getEQM() { return eq_morph; } inline SfxEntry* getFlgNxt() { return flgnxt; } inline void setNext(SfxEntry* ptr) { next = ptr; } inline void setNextNE(SfxEntry* ptr) { nextne = ptr; } inline void setNextEQ(SfxEntry* ptr) { nexteq = ptr; } inline void setFlgNxt(SfxEntry* ptr) { flgnxt = ptr; } void initReverseWord(); inline char* nextchar(char* p); inline int test_condition(const char* st, const char* begin); }; #endif hunspell-1.7.2/src/hunspell/hunvisapi.h.in0000644000175000017500000000077713565705656015536 00000000000000#ifndef HUNSPELL_VISIBILITY_H_ #define HUNSPELL_VISIBILITY_H_ #if defined(HUNSPELL_STATIC) # define LIBHUNSPELL_DLL_EXPORTED #elif defined(_WIN32) # if defined(BUILDING_LIBHUNSPELL) # define LIBHUNSPELL_DLL_EXPORTED __declspec(dllexport) # else # define LIBHUNSPELL_DLL_EXPORTED __declspec(dllimport) # endif #elif defined(BUILDING_LIBHUNSPELL) && @HAVE_VISIBILITY@ # define LIBHUNSPELL_DLL_EXPORTED __attribute__((__visibility__("default"))) #else # define LIBHUNSPELL_DLL_EXPORTED #endif #endif hunspell-1.7.2/src/hunspell/atypes.hxx0000664000175000017500000001001314353270422014752 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #ifndef ATYPES_HXX_ #define ATYPES_HXX_ #ifndef HUNSPELL_WARNING #include #ifdef HUNSPELL_WARNING_ON #define HUNSPELL_WARNING fprintf #else // empty inline function to switch off warnings (instead of the C99 standard // variadic macros) static inline void HUNSPELL_WARNING(FILE*, const char*, ...) {} #endif #endif // HUNSTEM def. #define HUNSTEM #include "w_char.hxx" #include #include #include #define SETSIZE 256 #define CONTSIZE 65536 // AffEntry options #define aeXPRODUCT (1 << 0) #define aeUTF8 (1 << 1) #define aeALIASF (1 << 2) #define aeALIASM (1 << 3) #define aeLONGCOND (1 << 4) // compound options #define IN_CPD_NOT 0 #define IN_CPD_BEGIN 1 #define IN_CPD_END 2 #define IN_CPD_OTHER 3 // info options #define SPELL_COMPOUND (1 << 0) // the result is a compound word #define SPELL_FORBIDDEN (1 << 1) #define SPELL_ALLCAP (1 << 2) #define SPELL_NOCAP (1 << 3) #define SPELL_INITCAP (1 << 4) #define SPELL_ORIGCAP (1 << 5) #define SPELL_WARN (1 << 6) #define SPELL_COMPOUND_2 (1 << 7) // permit only 2 dictionary words in the compound #define MINCPDLEN 3 #define MAXCOMPOUND 10 #define MAXCONDLEN 20 #define MAXCONDLEN_1 (MAXCONDLEN - sizeof(char*)) #define MAXACC 1000 #define FLAG unsigned short #define FLAG_NULL 0x00 #define FREE_FLAG(a) a = 0 #define TESTAFF(a, b, c) (std::binary_search(a, a + c, b)) // timelimit: max. ~1/4 sec (process time on Linux) for // for a suggestion, including max. ~/10 sec for a case // sensitive plain or compound word suggestion, within // ~1/20 sec long time consuming suggestion functions #define TIMELIMIT_GLOBAL (CLOCKS_PER_SEC / 4) #define TIMELIMIT_SUGGESTION (CLOCKS_PER_SEC / 10) #define TIMELIMIT (CLOCKS_PER_SEC / 20) #define MINTIMER 100 #define MAXPLUSTIMER 100 struct guessword { char* word; bool allow; char* orig; guessword() : word(nullptr) , allow(false) , orig(nullptr) { } }; typedef std::vector mapentry; typedef std::vector flagentry; struct patentry { std::string pattern; std::string pattern2; std::string pattern3; FLAG cond; FLAG cond2; patentry() : cond(FLAG_NULL) , cond2(FLAG_NULL) { } }; #endif hunspell-1.7.2/src/hunspell/hashmgr.hxx0000664000175000017500000001541014352160534015105 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /* * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada * And Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. All modifications to the source code must be clearly marked as * such. Binary redistributions based on modified source code * must be clearly marked as modified versions in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifndef HASHMGR_HXX_ #define HASHMGR_HXX_ #include #include #include #include "htypes.hxx" #include "filemgr.hxx" #include "w_char.hxx" enum flag { FLAG_CHAR, FLAG_LONG, FLAG_NUM, FLAG_UNI }; // morphological description of a dictionary item can contain // arbitrary number "ph:" (MORPH_PHON) fields to store typical // phonetic or other misspellings of that word. // ratio of lines/lines with "ph:" in the dic file: 1/MORPH_PHON_RATIO #define MORPH_PHON_RATIO 500 class HashMgr { std::vector tableptr; flag flag_mode; int complexprefixes; int utf8; unsigned short forbiddenword; int langnum; std::string enc; std::string lang; struct cs_info* csconv; std::string ignorechars; std::vector ignorechars_utf16; std::vector aliasf; // flag vector `compression' with aliases std::vector aliasflen; std::vector aliasm; // morphological desciption `compression' with aliases // reptable created from REP table of aff file and from "ph:" fields // of the dic file. It contains phonetic and other common misspellings // (letters, letter groups and words) for better suggestions std::vector reptable; public: HashMgr(const char* tpath, const char* apath, const char* key = NULL); ~HashMgr(); struct hentry* lookup(const char* word, size_t len) const; int hash(const char* word, size_t len) const; struct hentry* walk_hashtable(int& col, struct hentry* hp) const; int add(const std::string& word); int add_with_affix(const std::string& word, const std::string& pattern); int remove(const std::string& word); int decode_flags(unsigned short** result, const std::string& flags, FileMgr* af) const; bool decode_flags(std::vector& result, const std::string& flags, FileMgr* af) const; unsigned short decode_flag(const std::string& flag) const; std::string encode_flag(unsigned short flag) const; int is_aliasf() const; int get_aliasf(int index, unsigned short** fvec, FileMgr* af) const; int is_aliasm() const; char* get_aliasm(int index) const; const std::vector& get_reptable() const; private: int get_clen_and_captype(const std::string& word, int* captype); int get_clen_and_captype(const std::string& word, int* captype, std::vector &workbuf); int load_tables(const char* tpath, const char* key); int add_word(const std::string& word, int wcl, unsigned short* ap, int al, const std::string* desc, bool onlyupcase, int captype); int load_config(const char* affpath, const char* key); bool parse_aliasf(const std::string& line, FileMgr* af); int add_hidden_capitalized_word(const std::string& word, int wcl, unsigned short* flags, int al, const std::string* dp, int captype); bool parse_aliasm(const std::string& line, FileMgr* af); bool parse_reptable(const std::string& line, FileMgr* af); int remove_forbidden_flag(const std::string& word); void free_table(); void free_flag(unsigned short* astr, short alen); }; #endif hunspell-1.7.2/src/hunspell/affixmgr.cxx0000664000175000017500000045056014353342017015262 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /* * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada * And Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. All modifications to the source code must be clearly marked as * such. Binary redistributions based on modified source code * must be clearly marked as modified versions in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include #include #include #include #include #include #include #include #include #include #include "affixmgr.hxx" #include "affentry.hxx" #include "langnum.hxx" #include "csutil.hxx" AffixMgr::AffixMgr(const char* affpath, const std::vector& ptr, const char* key) : alldic(ptr) , pHMgr(ptr[0]) { // register hash manager and load affix data from aff file csconv = NULL; utf8 = 0; complexprefixes = 0; parsedmaptable = false; parsedbreaktable = false; iconvtable = NULL; oconvtable = NULL; // allow simplified compound forms (see 3rd field of CHECKCOMPOUNDPATTERN) simplifiedcpd = 0; parsedcheckcpd = false; parseddefcpd = false; phone = NULL; compoundflag = FLAG_NULL; // permits word in compound forms compoundbegin = FLAG_NULL; // may be first word in compound forms compoundmiddle = FLAG_NULL; // may be middle word in compound forms compoundend = FLAG_NULL; // may be last word in compound forms compoundroot = FLAG_NULL; // compound word signing flag compoundpermitflag = FLAG_NULL; // compound permitting flag for suffixed word compoundforbidflag = FLAG_NULL; // compound fordidden flag for suffixed word compoundmoresuffixes = 0; // allow more suffixes within compound words checkcompounddup = 0; // forbid double words in compounds checkcompoundrep = 0; // forbid bad compounds (may be non-compound word with // a REP substitution) checkcompoundcase = 0; // forbid upper and lowercase combinations at word bounds checkcompoundtriple = 0; // forbid compounds with triple letters simplifiedtriple = 0; // allow simplified triple letters in compounds // (Schiff+fahrt -> Schiffahrt) forbiddenword = FORBIDDENWORD; // forbidden word signing flag nosuggest = FLAG_NULL; // don't suggest words signed with NOSUGGEST flag nongramsuggest = FLAG_NULL; langnum = 0; // language code (see http://l10n.openoffice.org/languages.html) needaffix = FLAG_NULL; // forbidden root, allowed only with suffixes cpdwordmax = -1; // default: unlimited wordcount in compound words cpdmin = -1; // undefined cpdmaxsyllable = 0; // default: unlimited syllablecount in compound words pfxappnd = NULL; // previous prefix for counting syllables of the prefix BUG sfxappnd = NULL; // previous suffix for counting syllables of the suffix BUG sfxextra = 0; // modifier for syllable count of sfxappnd BUG checknum = 0; // checking numbers, and word with numbers havecontclass = 0; // flags of possible continuing classes (double affix) // LEMMA_PRESENT: not put root into the morphological output. Lemma presents // in morhological description in dictionary file. It's often combined with // PSEUDOROOT. lemma_present = FLAG_NULL; circumfix = FLAG_NULL; onlyincompound = FLAG_NULL; maxngramsugs = -1; // undefined maxdiff = -1; // undefined onlymaxdiff = 0; maxcpdsugs = -1; // undefined nosplitsugs = 0; sugswithdots = 0; keepcase = 0; forceucase = 0; warn = 0; forbidwarn = 0; checksharps = 0; substandard = FLAG_NULL; fullstrip = 0; sfx = NULL; pfx = NULL; for (int i = 0; i < SETSIZE; i++) { pStart[i] = NULL; sStart[i] = NULL; pFlag[i] = NULL; sFlag[i] = NULL; } memset(contclasses, 0, CONTSIZE * sizeof(char)); if (parse_file(affpath, key)) { HUNSPELL_WARNING(stderr, "Failure loading aff file %s\n", affpath); } /* get encoding for CHECKCOMPOUNDCASE */ if (!utf8) { csconv = get_current_cs(get_encoding()); for (int i = 0; i <= 255; i++) { if ((csconv[i].cupper != csconv[i].clower) && (wordchars.find((char)i) == std::string::npos)) { wordchars.push_back((char)i); } } } // default BREAK definition if (!parsedbreaktable) { breaktable.emplace_back("-"); breaktable.emplace_back("^-"); breaktable.emplace_back("-$"); parsedbreaktable = true; } #if defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION) // not entirely sure this is invalid, so only for fuzzing for now if (iconvtable && !iconvtable->check_against_breaktable(breaktable)) { delete iconvtable; iconvtable = nullptr; } #endif if (cpdmin == -1) cpdmin = MINCPDLEN; } AffixMgr::~AffixMgr() { // pass through linked prefix entries and clean up for (int i = 0; i < SETSIZE; i++) { pFlag[i] = NULL; PfxEntry* ptr = pStart[i]; PfxEntry* nptr = NULL; while (ptr) { nptr = ptr->getNext(); delete (ptr); ptr = nptr; nptr = NULL; } } // pass through linked suffix entries and clean up for (int j = 0; j < SETSIZE; j++) { sFlag[j] = NULL; SfxEntry* ptr = sStart[j]; SfxEntry* nptr = NULL; while (ptr) { nptr = ptr->getNext(); delete (ptr); ptr = nptr; nptr = NULL; } sStart[j] = NULL; } delete iconvtable; delete oconvtable; delete phone; FREE_FLAG(compoundflag); FREE_FLAG(compoundbegin); FREE_FLAG(compoundmiddle); FREE_FLAG(compoundend); FREE_FLAG(compoundpermitflag); FREE_FLAG(compoundforbidflag); FREE_FLAG(compoundroot); FREE_FLAG(forbiddenword); FREE_FLAG(nosuggest); FREE_FLAG(nongramsuggest); FREE_FLAG(needaffix); FREE_FLAG(lemma_present); FREE_FLAG(circumfix); FREE_FLAG(onlyincompound); cpdwordmax = 0; pHMgr = NULL; cpdmin = 0; cpdmaxsyllable = 0; checknum = 0; #ifdef MOZILLA_CLIENT delete[] csconv; #endif } void AffixMgr::finishFileMgr(FileMgr* afflst) { delete afflst; // convert affix trees to sorted list process_pfx_tree_to_list(); process_sfx_tree_to_list(); } // read in aff file and build up prefix and suffix entry objects int AffixMgr::parse_file(const char* affpath, const char* key) { // checking flag duplication char dupflags[CONTSIZE]; char dupflags_ini = 1; // first line indicator for removing byte order mark int firstline = 1; // open the affix file FileMgr* afflst = new FileMgr(affpath, key); if (!afflst) { HUNSPELL_WARNING( stderr, "error: could not open affix description file %s\n", affpath); return 1; } // step one is to parse the affix file building up the internal // affix data structures // read in each line ignoring any that do not // start with a known line type indicator std::string line; while (afflst->getline(line)) { mychomp(line); /* remove byte order mark */ if (firstline) { firstline = 0; // Affix file begins with byte order mark: possible incompatibility with // old Hunspell versions if (line.compare(0, 3, "\xEF\xBB\xBF", 3) == 0) { line.erase(0, 3); } } /* parse in the keyboard string */ if (line.compare(0, 3, "KEY", 3) == 0) { if (!parse_string(line, keystring, afflst->getlinenum())) { finishFileMgr(afflst); return 1; } } /* parse in the try string */ if (line.compare(0, 3, "TRY", 3) == 0) { if (!parse_string(line, trystring, afflst->getlinenum())) { finishFileMgr(afflst); return 1; } } /* parse in the name of the character set used by the .dict and .aff */ if (line.compare(0, 3, "SET", 3) == 0) { if (!parse_string(line, encoding, afflst->getlinenum())) { finishFileMgr(afflst); return 1; } if (encoding == "UTF-8") { utf8 = 1; } } /* parse COMPLEXPREFIXES for agglutinative languages with right-to-left * writing system */ if (line.compare(0, 15, "COMPLEXPREFIXES", 15) == 0) complexprefixes = 1; /* parse in the flag used by the controlled compound words */ if (line.compare(0, 12, "COMPOUNDFLAG", 12) == 0) { if (!parse_flag(line, &compoundflag, afflst)) { finishFileMgr(afflst); return 1; } } /* parse in the flag used by compound words */ if (line.compare(0, 13, "COMPOUNDBEGIN", 13) == 0) { if (complexprefixes) { if (!parse_flag(line, &compoundend, afflst)) { finishFileMgr(afflst); return 1; } } else { if (!parse_flag(line, &compoundbegin, afflst)) { finishFileMgr(afflst); return 1; } } } /* parse in the flag used by compound words */ if (line.compare(0, 14, "COMPOUNDMIDDLE", 14) == 0) { if (!parse_flag(line, &compoundmiddle, afflst)) { finishFileMgr(afflst); return 1; } } /* parse in the flag used by compound words */ if (line.compare(0, 11, "COMPOUNDEND", 11) == 0) { if (complexprefixes) { if (!parse_flag(line, &compoundbegin, afflst)) { finishFileMgr(afflst); return 1; } } else { if (!parse_flag(line, &compoundend, afflst)) { finishFileMgr(afflst); return 1; } } } /* parse in the data used by compound_check() method */ if (line.compare(0, 15, "COMPOUNDWORDMAX", 15) == 0) { if (!parse_num(line, &cpdwordmax, afflst)) { finishFileMgr(afflst); return 1; } } /* parse in the flag sign compounds in dictionary */ if (line.compare(0, 12, "COMPOUNDROOT", 12) == 0) { if (!parse_flag(line, &compoundroot, afflst)) { finishFileMgr(afflst); return 1; } } /* parse in the flag used by compound_check() method */ if (line.compare(0, 18, "COMPOUNDPERMITFLAG", 18) == 0) { if (!parse_flag(line, &compoundpermitflag, afflst)) { finishFileMgr(afflst); return 1; } } /* parse in the flag used by compound_check() method */ if (line.compare(0, 18, "COMPOUNDFORBIDFLAG", 18) == 0) { if (!parse_flag(line, &compoundforbidflag, afflst)) { finishFileMgr(afflst); return 1; } } if (line.compare(0, 20, "COMPOUNDMORESUFFIXES", 20) == 0) { compoundmoresuffixes = 1; } if (line.compare(0, 16, "CHECKCOMPOUNDDUP", 16) == 0) { checkcompounddup = 1; } if (line.compare(0, 16, "CHECKCOMPOUNDREP", 16) == 0) { checkcompoundrep = 1; } if (line.compare(0, 19, "CHECKCOMPOUNDTRIPLE", 19) == 0) { checkcompoundtriple = 1; } if (line.compare(0, 16, "SIMPLIFIEDTRIPLE", 16) == 0) { simplifiedtriple = 1; } if (line.compare(0, 17, "CHECKCOMPOUNDCASE", 17) == 0) { checkcompoundcase = 1; } if (line.compare(0, 9, "NOSUGGEST", 9) == 0) { if (!parse_flag(line, &nosuggest, afflst)) { finishFileMgr(afflst); return 1; } } if (line.compare(0, 14, "NONGRAMSUGGEST", 14) == 0) { if (!parse_flag(line, &nongramsuggest, afflst)) { finishFileMgr(afflst); return 1; } } /* parse in the flag used by forbidden words */ if (line.compare(0, 13, "FORBIDDENWORD", 13) == 0) { if (!parse_flag(line, &forbiddenword, afflst)) { finishFileMgr(afflst); return 1; } } /* parse in the flag used by forbidden words (is deprecated) */ if (line.compare(0, 13, "LEMMA_PRESENT", 13) == 0) { if (!parse_flag(line, &lemma_present, afflst)) { finishFileMgr(afflst); return 1; } } /* parse in the flag used by circumfixes */ if (line.compare(0, 9, "CIRCUMFIX", 9) == 0) { if (!parse_flag(line, &circumfix, afflst)) { finishFileMgr(afflst); return 1; } } /* parse in the flag used by fogemorphemes */ if (line.compare(0, 14, "ONLYINCOMPOUND", 14) == 0) { if (!parse_flag(line, &onlyincompound, afflst)) { finishFileMgr(afflst); return 1; } } /* parse in the flag used by `needaffixs' (is deprecated) */ if (line.compare(0, 10, "PSEUDOROOT", 10) == 0) { if (!parse_flag(line, &needaffix, afflst)) { finishFileMgr(afflst); return 1; } } /* parse in the flag used by `needaffixs' */ if (line.compare(0, 9, "NEEDAFFIX", 9) == 0) { if (!parse_flag(line, &needaffix, afflst)) { finishFileMgr(afflst); return 1; } } /* parse in the minimal length for words in compounds */ if (line.compare(0, 11, "COMPOUNDMIN", 11) == 0) { if (!parse_num(line, &cpdmin, afflst)) { finishFileMgr(afflst); return 1; } if (cpdmin < 1) cpdmin = 1; } /* parse in the max. words and syllables in compounds */ if (line.compare(0, 16, "COMPOUNDSYLLABLE", 16) == 0) { if (!parse_cpdsyllable(line, afflst)) { finishFileMgr(afflst); return 1; } } /* parse in the flag used by compound_check() method */ if (line.compare(0, 11, "SYLLABLENUM", 11) == 0) { if (!parse_string(line, cpdsyllablenum, afflst->getlinenum())) { finishFileMgr(afflst); return 1; } } /* parse in the flag used by the controlled compound words */ if (line.compare(0, 8, "CHECKNUM", 8) == 0) { checknum = 1; } /* parse in the extra word characters */ if (line.compare(0, 9, "WORDCHARS", 9) == 0) { if (!parse_array(line, wordchars, wordchars_utf16, utf8, afflst->getlinenum())) { finishFileMgr(afflst); return 1; } } /* parse in the ignored characters (for example, Arabic optional diacretics * charachters */ if (line.compare(0, 6, "IGNORE", 6) == 0) { if (!parse_array(line, ignorechars, ignorechars_utf16, utf8, afflst->getlinenum())) { finishFileMgr(afflst); return 1; } } /* parse in the input conversion table */ if (line.compare(0, 5, "ICONV", 5) == 0) { if (!parse_convtable(line, afflst, &iconvtable, "ICONV")) { finishFileMgr(afflst); return 1; } } /* parse in the output conversion table */ if (line.compare(0, 5, "OCONV", 5) == 0) { if (!parse_convtable(line, afflst, &oconvtable, "OCONV")) { finishFileMgr(afflst); return 1; } } /* parse in the phonetic translation table */ if (line.compare(0, 5, "PHONE", 5) == 0) { if (!parse_phonetable(line, afflst)) { finishFileMgr(afflst); return 1; } } /* parse in the checkcompoundpattern table */ if (line.compare(0, 20, "CHECKCOMPOUNDPATTERN", 20) == 0) { if (!parse_checkcpdtable(line, afflst)) { finishFileMgr(afflst); return 1; } } /* parse in the defcompound table */ if (line.compare(0, 12, "COMPOUNDRULE", 12) == 0) { if (!parse_defcpdtable(line, afflst)) { finishFileMgr(afflst); return 1; } } /* parse in the related character map table */ if (line.compare(0, 3, "MAP", 3) == 0) { if (!parse_maptable(line, afflst)) { finishFileMgr(afflst); return 1; } } /* parse in the word breakpoints table */ if (line.compare(0, 5, "BREAK", 5) == 0) { if (!parse_breaktable(line, afflst)) { finishFileMgr(afflst); return 1; } } /* parse in the language for language specific codes */ if (line.compare(0, 4, "LANG", 4) == 0) { if (!parse_string(line, lang, afflst->getlinenum())) { finishFileMgr(afflst); return 1; } langnum = get_lang_num(lang); } if (line.compare(0, 7, "VERSION", 7) == 0) { size_t startpos = line.find_first_not_of(" \t", 7); if (startpos != std::string::npos) { version = line.substr(startpos); } } if (line.compare(0, 12, "MAXNGRAMSUGS", 12) == 0) { if (!parse_num(line, &maxngramsugs, afflst)) { finishFileMgr(afflst); return 1; } } if (line.compare(0, 11, "ONLYMAXDIFF", 11) == 0) onlymaxdiff = 1; if (line.compare(0, 7, "MAXDIFF", 7) == 0) { if (!parse_num(line, &maxdiff, afflst)) { finishFileMgr(afflst); return 1; } } if (line.compare(0, 10, "MAXCPDSUGS", 10) == 0) { if (!parse_num(line, &maxcpdsugs, afflst)) { finishFileMgr(afflst); return 1; } } if (line.compare(0, 11, "NOSPLITSUGS", 11) == 0) { nosplitsugs = 1; } if (line.compare(0, 9, "FULLSTRIP", 9) == 0) { fullstrip = 1; } if (line.compare(0, 12, "SUGSWITHDOTS", 12) == 0) { sugswithdots = 1; } /* parse in the flag used by forbidden words */ if (line.compare(0, 8, "KEEPCASE", 8) == 0) { if (!parse_flag(line, &keepcase, afflst)) { finishFileMgr(afflst); return 1; } } /* parse in the flag used by `forceucase' */ if (line.compare(0, 10, "FORCEUCASE", 10) == 0) { if (!parse_flag(line, &forceucase, afflst)) { finishFileMgr(afflst); return 1; } } /* parse in the flag used by `warn' */ if (line.compare(0, 4, "WARN", 4) == 0) { if (!parse_flag(line, &warn, afflst)) { finishFileMgr(afflst); return 1; } } if (line.compare(0, 10, "FORBIDWARN", 10) == 0) { forbidwarn = 1; } /* parse in the flag used by the affix generator */ if (line.compare(0, 11, "SUBSTANDARD", 11) == 0) { if (!parse_flag(line, &substandard, afflst)) { finishFileMgr(afflst); return 1; } } if (line.compare(0, 11, "CHECKSHARPS", 11) == 0) { checksharps = 1; } /* parse this affix: P - prefix, S - suffix */ // affix type char ft = ' '; if (line.compare(0, 3, "PFX", 3) == 0) ft = complexprefixes ? 'S' : 'P'; if (line.compare(0, 3, "SFX", 3) == 0) ft = complexprefixes ? 'P' : 'S'; if (ft != ' ') { if (dupflags_ini) { memset(dupflags, 0, sizeof(dupflags)); dupflags_ini = 0; } if (!parse_affix(line, ft, afflst, dupflags)) { finishFileMgr(afflst); return 1; } } } finishFileMgr(afflst); // affix trees are sorted now // now we can speed up performance greatly taking advantage of the // relationship between the affixes and the idea of "subsets". // View each prefix as a potential leading subset of another and view // each suffix (reversed) as a potential trailing subset of another. // To illustrate this relationship if we know the prefix "ab" is found in the // word to examine, only prefixes that "ab" is a leading subset of need be // examined. // Furthermore is "ab" is not present then none of the prefixes that "ab" is // is a subset need be examined. // The same argument goes for suffix string that are reversed. // Then to top this off why not examine the first char of the word to quickly // limit the set of prefixes to examine (i.e. the prefixes to examine must // be leading supersets of the first character of the word (if they exist) // To take advantage of this "subset" relationship, we need to add two links // from entry. One to take next if the current prefix is found (call it // nexteq) // and one to take next if the current prefix is not found (call it nextne). // Since we have built ordered lists, all that remains is to properly // initialize // the nextne and nexteq pointers that relate them process_pfx_order(); process_sfx_order(); return 0; } // we want to be able to quickly access prefix information // both by prefix flag, and sorted by prefix string itself // so we need to set up two indexes int AffixMgr::build_pfxtree(PfxEntry* pfxptr) { PfxEntry* ptr; PfxEntry* pptr; PfxEntry* ep = pfxptr; // get the right starting points const char* key = ep->getKey(); const auto flg = (unsigned char)(ep->getFlag() & 0x00FF); // first index by flag which must exist ptr = pFlag[flg]; ep->setFlgNxt(ptr); pFlag[flg] = ep; // handle the special case of null affix string if (strlen(key) == 0) { // always inset them at head of list at element 0 ptr = pStart[0]; ep->setNext(ptr); pStart[0] = ep; return 0; } // now handle the normal case ep->setNextEQ(NULL); ep->setNextNE(NULL); unsigned char sp = *((const unsigned char*)key); ptr = pStart[sp]; // handle the first insert if (!ptr) { pStart[sp] = ep; return 0; } // otherwise use binary tree insertion so that a sorted // list can easily be generated later pptr = NULL; for (;;) { pptr = ptr; if (strcmp(ep->getKey(), ptr->getKey()) <= 0) { ptr = ptr->getNextEQ(); if (!ptr) { pptr->setNextEQ(ep); break; } } else { ptr = ptr->getNextNE(); if (!ptr) { pptr->setNextNE(ep); break; } } } return 0; } // we want to be able to quickly access suffix information // both by suffix flag, and sorted by the reverse of the // suffix string itself; so we need to set up two indexes int AffixMgr::build_sfxtree(SfxEntry* sfxptr) { sfxptr->initReverseWord(); SfxEntry* ptr; SfxEntry* pptr; SfxEntry* ep = sfxptr; /* get the right starting point */ const char* key = ep->getKey(); const auto flg = (unsigned char)(ep->getFlag() & 0x00FF); // first index by flag which must exist ptr = sFlag[flg]; ep->setFlgNxt(ptr); sFlag[flg] = ep; // next index by affix string // handle the special case of null affix string if (strlen(key) == 0) { // always inset them at head of list at element 0 ptr = sStart[0]; ep->setNext(ptr); sStart[0] = ep; return 0; } // now handle the normal case ep->setNextEQ(NULL); ep->setNextNE(NULL); unsigned char sp = *((const unsigned char*)key); ptr = sStart[sp]; // handle the first insert if (!ptr) { sStart[sp] = ep; return 0; } // otherwise use binary tree insertion so that a sorted // list can easily be generated later pptr = NULL; for (;;) { pptr = ptr; if (strcmp(ep->getKey(), ptr->getKey()) <= 0) { ptr = ptr->getNextEQ(); if (!ptr) { pptr->setNextEQ(ep); break; } } else { ptr = ptr->getNextNE(); if (!ptr) { pptr->setNextNE(ep); break; } } } return 0; } // convert from binary tree to sorted list int AffixMgr::process_pfx_tree_to_list() { for (int i = 1; i < SETSIZE; i++) { pStart[i] = process_pfx_in_order(pStart[i], NULL); } return 0; } PfxEntry* AffixMgr::process_pfx_in_order(PfxEntry* ptr, PfxEntry* nptr) { if (ptr) { nptr = process_pfx_in_order(ptr->getNextNE(), nptr); ptr->setNext(nptr); nptr = process_pfx_in_order(ptr->getNextEQ(), ptr); } return nptr; } // convert from binary tree to sorted list int AffixMgr::process_sfx_tree_to_list() { for (int i = 1; i < SETSIZE; i++) { sStart[i] = process_sfx_in_order(sStart[i], NULL); } return 0; } SfxEntry* AffixMgr::process_sfx_in_order(SfxEntry* ptr, SfxEntry* nptr) { if (ptr) { nptr = process_sfx_in_order(ptr->getNextNE(), nptr); ptr->setNext(nptr); nptr = process_sfx_in_order(ptr->getNextEQ(), ptr); } return nptr; } // reinitialize the PfxEntry links NextEQ and NextNE to speed searching // using the idea of leading subsets this time int AffixMgr::process_pfx_order() { PfxEntry* ptr; // loop through each prefix list starting point for (int i = 1; i < SETSIZE; i++) { ptr = pStart[i]; // look through the remainder of the list // and find next entry with affix that // the current one is not a subset of // mark that as destination for NextNE // use next in list that you are a subset // of as NextEQ for (; ptr != NULL; ptr = ptr->getNext()) { PfxEntry* nptr = ptr->getNext(); for (; nptr != NULL; nptr = nptr->getNext()) { if (!isSubset(ptr->getKey(), nptr->getKey())) break; } ptr->setNextNE(nptr); ptr->setNextEQ(NULL); if ((ptr->getNext()) && isSubset(ptr->getKey(), (ptr->getNext())->getKey())) ptr->setNextEQ(ptr->getNext()); } // now clean up by adding smart search termination strings: // if you are already a superset of the previous prefix // but not a subset of the next, search can end here // so set NextNE properly ptr = pStart[i]; for (; ptr != NULL; ptr = ptr->getNext()) { PfxEntry* nptr = ptr->getNext(); PfxEntry* mptr = NULL; for (; nptr != NULL; nptr = nptr->getNext()) { if (!isSubset(ptr->getKey(), nptr->getKey())) break; mptr = nptr; } if (mptr) mptr->setNextNE(NULL); } } return 0; } // initialize the SfxEntry links NextEQ and NextNE to speed searching // using the idea of leading subsets this time int AffixMgr::process_sfx_order() { SfxEntry* ptr; // loop through each prefix list starting point for (int i = 1; i < SETSIZE; i++) { ptr = sStart[i]; // look through the remainder of the list // and find next entry with affix that // the current one is not a subset of // mark that as destination for NextNE // use next in list that you are a subset // of as NextEQ for (; ptr != NULL; ptr = ptr->getNext()) { SfxEntry* nptr = ptr->getNext(); for (; nptr != NULL; nptr = nptr->getNext()) { if (!isSubset(ptr->getKey(), nptr->getKey())) break; } ptr->setNextNE(nptr); ptr->setNextEQ(NULL); if ((ptr->getNext()) && isSubset(ptr->getKey(), (ptr->getNext())->getKey())) ptr->setNextEQ(ptr->getNext()); } // now clean up by adding smart search termination strings: // if you are already a superset of the previous suffix // but not a subset of the next, search can end here // so set NextNE properly ptr = sStart[i]; for (; ptr != NULL; ptr = ptr->getNext()) { SfxEntry* nptr = ptr->getNext(); SfxEntry* mptr = NULL; for (; nptr != NULL; nptr = nptr->getNext()) { if (!isSubset(ptr->getKey(), nptr->getKey())) break; mptr = nptr; } if (mptr) mptr->setNextNE(NULL); } } return 0; } // add flags to the result for dictionary debugging std::string& AffixMgr::debugflag(std::string& result, unsigned short flag) { std::string st = encode_flag(flag); result.push_back(MSEP_FLD); result.append(MORPH_FLAG); result.append(st); return result; } // calculate the character length of the condition int AffixMgr::condlen(const std::string& s) { int l = 0; bool group = false; auto st = s.begin(), end = s.end(); while (st != end) { if (*st == '[') { group = true; l++; } else if (*st == ']') group = false; else if (!group && (!utf8 || (!(*st & 0x80) || ((*st & 0xc0) == 0x80)))) l++; ++st; } return l; } int AffixMgr::encodeit(AffEntry& entry, const std::string& cs) { if (cs.compare(".") != 0) { entry.numconds = (char)condlen(cs); const size_t cslen = cs.size(); const size_t short_part = std::min(MAXCONDLEN, cslen); memcpy(entry.c.conds, cs.data(), short_part); if (short_part < MAXCONDLEN) { //blank out the remaining space memset(entry.c.conds + short_part, 0, MAXCONDLEN - short_part); } else if (cs[MAXCONDLEN]) { //there is more conditions than fit in fixed space, so its //a long condition entry.opts |= aeLONGCOND; size_t remaining = cs.size() - MAXCONDLEN_1; entry.c.l.conds2 = new char[1 + remaining]; memcpy(entry.c.l.conds2, cs.data() + MAXCONDLEN_1, remaining); entry.c.l.conds2[remaining] = 0; } } else { entry.numconds = 0; entry.c.conds[0] = '\0'; } return 0; } // return 1 if s1 is a leading subset of s2 (dots are for infixes) inline int AffixMgr::isSubset(const char* s1, const char* s2) { while (((*s1 == *s2) || (*s1 == '.')) && (*s1 != '\0') && (*s2 != '\0')) { s1++; s2++; } return (*s1 == '\0'); } // check word for prefixes struct hentry* AffixMgr::prefix_check(const std::string& word, int start, int len, char in_compound, const FLAG needflag) { struct hentry* rv = NULL; pfx = NULL; pfxappnd = NULL; sfxappnd = NULL; sfxextra = 0; // first handle the special case of 0 length prefixes PfxEntry* pe = pStart[0]; while (pe) { if ( // fogemorpheme ((in_compound != IN_CPD_NOT) || !(pe->getCont() && (TESTAFF(pe->getCont(), onlyincompound, pe->getContLen())))) && // permit prefixes in compounds ((in_compound != IN_CPD_END) || (pe->getCont() && (TESTAFF(pe->getCont(), compoundpermitflag, pe->getContLen()))))) { // check prefix rv = pe->checkword(word, start, len, in_compound, needflag); if (rv) { pfx = pe; // BUG: pfx not stateless return rv; } } pe = pe->getNext(); } // now handle the general case unsigned char sp = word[start]; PfxEntry* pptr = pStart[sp]; while (pptr) { if (isSubset(pptr->getKey(), word.c_str() + start)) { if ( // fogemorpheme ((in_compound != IN_CPD_NOT) || !(pptr->getCont() && (TESTAFF(pptr->getCont(), onlyincompound, pptr->getContLen())))) && // permit prefixes in compounds ((in_compound != IN_CPD_END) || (pptr->getCont() && (TESTAFF(pptr->getCont(), compoundpermitflag, pptr->getContLen()))))) { // check prefix rv = pptr->checkword(word, start, len, in_compound, needflag); if (rv) { pfx = pptr; // BUG: pfx not stateless return rv; } } pptr = pptr->getNextEQ(); } else { pptr = pptr->getNextNE(); } } return NULL; } // check word for prefixes and two-level suffixes struct hentry* AffixMgr::prefix_check_twosfx(const std::string& word, int start, int len, char in_compound, const FLAG needflag) { struct hentry* rv = NULL; pfx = NULL; sfxappnd = NULL; sfxextra = 0; // first handle the special case of 0 length prefixes PfxEntry* pe = pStart[0]; while (pe) { rv = pe->check_twosfx(word, start, len, in_compound, needflag); if (rv) return rv; pe = pe->getNext(); } // now handle the general case unsigned char sp = word[start]; PfxEntry* pptr = pStart[sp]; while (pptr) { if (isSubset(pptr->getKey(), word.c_str() + start)) { rv = pptr->check_twosfx(word, start, len, in_compound, needflag); if (rv) { pfx = pptr; return rv; } pptr = pptr->getNextEQ(); } else { pptr = pptr->getNextNE(); } } return NULL; } // check word for prefixes and morph std::string AffixMgr::prefix_check_morph(const std::string& word, int start, int len, char in_compound, const FLAG needflag) { std::string result; pfx = NULL; sfxappnd = NULL; sfxextra = 0; // first handle the special case of 0 length prefixes PfxEntry* pe = pStart[0]; while (pe) { std::string st = pe->check_morph(word, start, len, in_compound, needflag); if (!st.empty()) { result.append(st); } pe = pe->getNext(); } // now handle the general case unsigned char sp = word[start]; PfxEntry* pptr = pStart[sp]; while (pptr) { if (isSubset(pptr->getKey(), word.c_str() + start)) { std::string st = pptr->check_morph(word, start, len, in_compound, needflag); if (!st.empty()) { // fogemorpheme if ((in_compound != IN_CPD_NOT) || !((pptr->getCont() && (TESTAFF(pptr->getCont(), onlyincompound, pptr->getContLen()))))) { result.append(st); pfx = pptr; } } pptr = pptr->getNextEQ(); } else { pptr = pptr->getNextNE(); } } return result; } // check word for prefixes and morph and two-level suffixes std::string AffixMgr::prefix_check_twosfx_morph(const std::string& word, int start, int len, char in_compound, const FLAG needflag) { std::string result; pfx = NULL; sfxappnd = NULL; sfxextra = 0; // first handle the special case of 0 length prefixes PfxEntry* pe = pStart[0]; while (pe) { std::string st = pe->check_twosfx_morph(word, start, len, in_compound, needflag); if (!st.empty()) { result.append(st); } pe = pe->getNext(); } // now handle the general case unsigned char sp = word[start]; PfxEntry* pptr = pStart[sp]; while (pptr) { if (isSubset(pptr->getKey(), word.c_str() + start)) { std::string st = pptr->check_twosfx_morph(word, start, len, in_compound, needflag); if (!st.empty()) { result.append(st); pfx = pptr; } pptr = pptr->getNextEQ(); } else { pptr = pptr->getNextNE(); } } return result; } // Is word a non-compound with a REP substitution (see checkcompoundrep)? int AffixMgr::cpdrep_check(const std::string& in_word, int wl) { if ((wl < 2) || get_reptable().empty()) return 0; std::string word(in_word, 0, wl); for (const auto& i : get_reptable()) { // use only available mid patterns if (!i.outstrings[0].empty()) { size_t r = 0; const size_t lenp = i.pattern.size(); // search every occurence of the pattern in the word while ((r = word.find(i.pattern, r)) != std::string::npos) { std::string candidate(word); candidate.replace(r, lenp, i.outstrings[0]); if (candidate_check(candidate)) return 1; ++r; // search for the next letter } } } return 0; } // forbid compound words, if they are in the dictionary as a // word pair separated by space int AffixMgr::cpdwordpair_check(const std::string& word, int wl) { if (wl > 2) { std::string candidate(word, 0, wl); for (size_t i = 1; i < candidate.size(); i++) { // go to end of the UTF-8 character if (utf8 && ((candidate[i] & 0xc0) == 0x80)) continue; candidate.insert(i, 1, ' '); if (candidate_check(candidate)) return 1; candidate.erase(i, 1); } } return 0; } // forbid compoundings when there are special patterns at word bound int AffixMgr::cpdpat_check(const std::string& word, int pos, hentry* r1, hentry* r2, const char /*affixed*/) { for (auto& i : checkcpdtable) { size_t len; if (isSubset(i.pattern2.c_str(), word.c_str() + pos) && (!r1 || !i.cond || (r1->astr && TESTAFF(r1->astr, i.cond, r1->alen))) && (!r2 || !i.cond2 || (r2->astr && TESTAFF(r2->astr, i.cond2, r2->alen))) && // zero length pattern => only TESTAFF // zero pattern (0/flag) => unmodified stem (zero affixes allowed) (i.pattern.empty() || ((i.pattern[0] == '0' && r1->blen <= pos && strncmp(word.c_str() + pos - r1->blen, r1->word, r1->blen) == 0) || (i.pattern[0] != '0' && ((len = i.pattern.size()) != 0) && len <= pos && strncmp(word.c_str() + pos - len, i.pattern.c_str(), len) == 0)))) { return 1; } } return 0; } // forbid compounding with neighbouring upper and lower case characters at word // bounds int AffixMgr::cpdcase_check(const std::string& word, int pos) { if (utf8) { const char* p; const char* wordp = word.c_str(); for (p = wordp + pos - 1; p > wordp && (*p & 0xc0) == 0x80; p--) ; std::string pair(p); std::vector pair_u; u8_u16(pair_u, pair); unsigned short a = pair_u.size() > 1 ? (unsigned short)pair_u[1] : 0, b = !pair_u.empty() ? (unsigned short)pair_u[0] : 0; if (((unicodetoupper(a, langnum) == a) || (unicodetoupper(b, langnum) == b)) && (a != '-') && (b != '-')) return 1; } else { const unsigned char a = word[pos - 1], b = word[pos]; if ((csconv[a].ccase || csconv[b].ccase) && (a != '-') && (b != '-')) return 1; } return 0; } struct metachar_data { signed short btpp; // metacharacter (*, ?) position for backtracking signed short btwp; // word position for metacharacters int btnum; // number of matched characters in metacharacter }; // check compound patterns int AffixMgr::defcpd_check(hentry*** words, short wnum, hentry* rv, hentry** def, char all) { int w = 0; if (!*words) { w = 1; *words = def; } if (!*words) { return 0; } std::vector btinfo(1); short bt = 0; (*words)[wnum] = rv; // has the last word COMPOUNDRULE flag? if (rv->alen == 0) { (*words)[wnum] = NULL; if (w) *words = NULL; return 0; } int ok = 0; for (auto& i : defcpdtable) { for (auto& j : i) { if (j != '*' && j != '?' && TESTAFF(rv->astr, j, rv->alen)) { ok = 1; break; } } } if (ok == 0) { (*words)[wnum] = NULL; if (w) *words = NULL; return 0; } for (auto& i : defcpdtable) { size_t pp = 0; // pattern position signed short wp = 0; // "words" position int ok2 = 1; ok = 1; do { while ((pp < i.size()) && (wp <= wnum)) { if (((pp + 1) < i.size()) && ((i[pp + 1] == '*') || (i[pp + 1] == '?'))) { int wend = (i[pp + 1] == '?') ? wp : wnum; ok2 = 1; pp += 2; btinfo[bt].btpp = pp; btinfo[bt].btwp = wp; while (wp <= wend) { if (!(*words)[wp] || !(*words)[wp]->alen || !TESTAFF((*words)[wp]->astr, i[pp - 2], (*words)[wp]->alen)) { ok2 = 0; break; } wp++; } if (wp <= wnum) ok2 = 0; btinfo[bt].btnum = wp - btinfo[bt].btwp; if (btinfo[bt].btnum > 0) { ++bt; btinfo.resize(bt+1); } if (ok2) break; } else { ok2 = 1; if (!(*words)[wp] || !(*words)[wp]->alen || !TESTAFF((*words)[wp]->astr, i[pp], (*words)[wp]->alen)) { ok = 0; break; } pp++; wp++; if ((i.size() == pp) && !(wp > wnum)) ok = 0; } } if (ok && ok2) { size_t r = pp; while ((i.size() > r) && ((r + 1) < i.size()) && ((i[r + 1] == '*') || (i[r + 1] == '?'))) r += 2; if (i.size() <= r) return 1; } // backtrack if (bt) do { ok = 1; btinfo[bt - 1].btnum--; pp = btinfo[bt - 1].btpp; wp = btinfo[bt - 1].btwp + (signed short)btinfo[bt - 1].btnum; } while ((btinfo[bt - 1].btnum < 0) && --bt); } while (bt); if (ok && ok2 && (!all || (i.size() <= pp))) return 1; // check zero ending while (ok && ok2 && (i.size() > pp) && ((pp + 1) < i.size()) && ((i[pp + 1] == '*') || (i[pp + 1] == '?'))) pp += 2; if (ok && ok2 && (i.size() <= pp)) return 1; } (*words)[wnum] = NULL; if (w) *words = NULL; return 0; } inline int AffixMgr::candidate_check(const std::string& word) { struct hentry* rv = lookup(word.c_str(), word.size()); if (rv) return 1; // rv = prefix_check(word,0,len,1); // if (rv) return 1; rv = affix_check(word, 0, word.size()); if (rv) return 1; return 0; } // calculate number of syllable for compound-checking short AffixMgr::get_syllable(const std::string& word) { if (cpdmaxsyllable == 0) return 0; short num = 0; if (!utf8) { num = (short)std::count_if(word.begin(), word.end(), [&](char c) { return std::binary_search(cpdvowels.begin(), cpdvowels.end(), c); }); } else if (!cpdvowels_utf16.empty()) { std::vector w; u8_u16(w, word); num = (short)std::count_if(w.begin(), w.end(), [&](w_char wc) { return std::binary_search(cpdvowels_utf16.begin(), cpdvowels_utf16.end(), wc); }); } return num; } void AffixMgr::setcminmax(int* cmin, int* cmax, const char* word, int len) { if (utf8) { int i; for (*cmin = 0, i = 0; (i < cpdmin) && *cmin < len; i++) { for ((*cmin)++; *cmin < len && (word[*cmin] & 0xc0) == 0x80; (*cmin)++) ; } for (*cmax = len, i = 0; (i < (cpdmin - 1)) && *cmax >= 0; i++) { for ((*cmax)--; *cmax >= 0 && (word[*cmax] & 0xc0) == 0x80; (*cmax)--) ; } } else { *cmin = cpdmin; *cmax = len - cpdmin + 1; } } // check if compound word is correctly spelled // hu_mov_rule = spec. Hungarian rule (XXX) struct hentry* AffixMgr::compound_check(const std::string& word, short wordnum, short numsyllable, short maxwordnum, short wnum, hentry** words = NULL, hentry** rwords = NULL, char hu_mov_rule = 0, char is_sug = 0, int* info = NULL) { short oldnumsyllable, oldnumsyllable2, oldwordnum, oldwordnum2; hentry *rv = NULL, *rv_first; std::string st; char ch = '\0', affixed; int cmin, cmax, striple = 0, soldi = 0, oldcmin = 0, oldcmax = 0, oldlen = 0, checkedstriple = 0; hentry** oldwords = words; size_t scpd = 0, len = word.size(); int checked_prefix; // add a time limit to handle possible // combinatorical explosion of the overlapping words HUNSPELL_THREAD_LOCAL clock_t timelimit; if (wordnum == 0) { // get the start time, seeing as we're reusing this set to 0 // to flag timeout, use clock() + 1 to avoid start clock() // of 0 as being a timeout timelimit = clock() + 1; } else if (timelimit != 0 && (clock() > timelimit + TIMELIMIT)) { timelimit = 0; } setcminmax(&cmin, &cmax, word.c_str(), len); st.assign(word); for (int i = cmin; i < cmax; ++i) { // go to end of the UTF-8 character if (utf8) { for (; (st[i] & 0xc0) == 0x80; i++) ; if (i >= cmax) return NULL; } words = oldwords; int onlycpdrule = (words) ? 1 : 0; do { // onlycpdrule loop oldnumsyllable = numsyllable; oldwordnum = wordnum; checked_prefix = 0; do { // simplified checkcompoundpattern loop if (timelimit == 0) return 0; if (scpd > 0) { for (; scpd <= checkcpdtable.size() && (checkcpdtable[scpd - 1].pattern3.empty() || i > word.size() || word.compare(i, checkcpdtable[scpd - 1].pattern3.size(), checkcpdtable[scpd - 1].pattern3) != 0); scpd++) ; if (scpd > checkcpdtable.size()) break; // break simplified checkcompoundpattern loop st.replace(i, std::string::npos, checkcpdtable[scpd - 1].pattern); soldi = i; i += checkcpdtable[scpd - 1].pattern.size(); st.replace(i, std::string::npos, checkcpdtable[scpd - 1].pattern2); st.replace(i + checkcpdtable[scpd - 1].pattern2.size(), std::string::npos, word.substr(soldi + checkcpdtable[scpd - 1].pattern3.size())); oldlen = len; len += checkcpdtable[scpd - 1].pattern.size() + checkcpdtable[scpd - 1].pattern2.size() - checkcpdtable[scpd - 1].pattern3.size(); oldcmin = cmin; oldcmax = cmax; setcminmax(&cmin, &cmax, st.c_str(), len); cmax = len - cpdmin + 1; } if (i > st.size()) return NULL; ch = st[i]; st[i] = '\0'; sfx = NULL; pfx = NULL; // FIRST WORD affixed = 1; rv = lookup(st.c_str(), i); // perhaps without prefix // forbid dictionary stems with COMPOUNDFORBIDFLAG in // compound words, overriding the effect of COMPOUNDPERMITFLAG if ((rv) && compoundforbidflag && TESTAFF(rv->astr, compoundforbidflag, rv->alen) && !hu_mov_rule) continue; // search homonym with compound flag while ((rv) && !hu_mov_rule && ((needaffix && TESTAFF(rv->astr, needaffix, rv->alen)) || !((compoundflag && !words && !onlycpdrule && TESTAFF(rv->astr, compoundflag, rv->alen)) || (compoundbegin && !wordnum && !onlycpdrule && TESTAFF(rv->astr, compoundbegin, rv->alen)) || (compoundmiddle && wordnum && !words && !onlycpdrule && TESTAFF(rv->astr, compoundmiddle, rv->alen)) || (!defcpdtable.empty() && onlycpdrule && ((!words && !wordnum && defcpd_check(&words, wnum, rv, rwords, 0)) || (words && defcpd_check(&words, wnum, rv, rwords, 0))))) || (scpd != 0 && checkcpdtable[scpd - 1].cond != FLAG_NULL && !TESTAFF(rv->astr, checkcpdtable[scpd - 1].cond, rv->alen)))) { rv = rv->next_homonym; } if (rv) affixed = 0; if (!rv) { if (onlycpdrule) break; if (compoundflag && !(rv = prefix_check(st, 0, i, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN, compoundflag))) { if (((rv = suffix_check( st, 0, i, 0, NULL, FLAG_NULL, compoundflag, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN)) || (compoundmoresuffixes && (rv = suffix_check_twosfx(st, 0, i, 0, NULL, compoundflag)))) && !hu_mov_rule && sfx->getCont() && ((compoundforbidflag && TESTAFF(sfx->getCont(), compoundforbidflag, sfx->getContLen())) || (compoundend && TESTAFF(sfx->getCont(), compoundend, sfx->getContLen())))) { rv = NULL; } } if (rv || (((wordnum == 0) && compoundbegin && ((rv = suffix_check( st, 0, i, 0, NULL, FLAG_NULL, compoundbegin, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN)) || (compoundmoresuffixes && (rv = suffix_check_twosfx( st, 0, i, 0, NULL, compoundbegin))) || // twofold suffixes + compound (rv = prefix_check(st, 0, i, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN, compoundbegin)))) || ((wordnum > 0) && compoundmiddle && ((rv = suffix_check( st, 0, i, 0, NULL, FLAG_NULL, compoundmiddle, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN)) || (compoundmoresuffixes && (rv = suffix_check_twosfx( st, 0, i, 0, NULL, compoundmiddle))) || // twofold suffixes + compound (rv = prefix_check(st, 0, i, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN, compoundmiddle)))))) checked_prefix = 1; // else check forbiddenwords and needaffix } else if (rv->astr && (TESTAFF(rv->astr, forbiddenword, rv->alen) || TESTAFF(rv->astr, needaffix, rv->alen) || TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen) || (is_sug && nosuggest && TESTAFF(rv->astr, nosuggest, rv->alen)))) { st[i] = ch; // continue; break; } // check non_compound flag in suffix and prefix if ((rv) && !hu_mov_rule && ((pfx && pfx->getCont() && TESTAFF(pfx->getCont(), compoundforbidflag, pfx->getContLen())) || (sfx && sfx->getCont() && TESTAFF(sfx->getCont(), compoundforbidflag, sfx->getContLen())))) { rv = NULL; } // check compoundend flag in suffix and prefix if ((rv) && !checked_prefix && compoundend && !hu_mov_rule && ((pfx && pfx->getCont() && TESTAFF(pfx->getCont(), compoundend, pfx->getContLen())) || (sfx && sfx->getCont() && TESTAFF(sfx->getCont(), compoundend, sfx->getContLen())))) { rv = NULL; } // check compoundmiddle flag in suffix and prefix if ((rv) && !checked_prefix && (wordnum == 0) && compoundmiddle && !hu_mov_rule && ((pfx && pfx->getCont() && TESTAFF(pfx->getCont(), compoundmiddle, pfx->getContLen())) || (sfx && sfx->getCont() && TESTAFF(sfx->getCont(), compoundmiddle, sfx->getContLen())))) { rv = NULL; } // check forbiddenwords if ((rv) && (rv->astr) && (TESTAFF(rv->astr, forbiddenword, rv->alen) || TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen) || (is_sug && nosuggest && TESTAFF(rv->astr, nosuggest, rv->alen)))) { return NULL; } // increment word number, if the second root has a compoundroot flag if ((rv) && compoundroot && (TESTAFF(rv->astr, compoundroot, rv->alen))) { wordnum++; } // first word is acceptable in compound words? if (((rv) && (checked_prefix || (words && words[wnum]) || (compoundflag && TESTAFF(rv->astr, compoundflag, rv->alen)) || ((oldwordnum == 0) && compoundbegin && TESTAFF(rv->astr, compoundbegin, rv->alen)) || ((oldwordnum > 0) && compoundmiddle && TESTAFF(rv->astr, compoundmiddle, rv->alen)) // LANG_hu section: spec. Hungarian rule || ((langnum == LANG_hu) && hu_mov_rule && (TESTAFF( rv->astr, 'F', rv->alen) || // XXX hardwired Hungarian dictionary codes TESTAFF(rv->astr, 'G', rv->alen) || TESTAFF(rv->astr, 'H', rv->alen))) // END of LANG_hu section ) && ( // test CHECKCOMPOUNDPATTERN conditions scpd == 0 || checkcpdtable[scpd - 1].cond == FLAG_NULL || TESTAFF(rv->astr, checkcpdtable[scpd - 1].cond, rv->alen)) && !((checkcompoundtriple && scpd == 0 && !words && // test triple letters (word[i - 1] == word[i]) && (((i > 1) && (word[i - 1] == word[i - 2])) || ((word[i - 1] == word[i + 1])) // may be word[i+1] == '\0' )) || (checkcompoundcase && scpd == 0 && !words && i < word.size() && cpdcase_check(word, i)))) // LANG_hu section: spec. Hungarian rule || ((!rv) && (langnum == LANG_hu) && hu_mov_rule && (rv = affix_check(st, 0, i)) && (sfx && sfx->getCont() && ( // XXX hardwired Hungarian dic. codes TESTAFF(sfx->getCont(), (unsigned short)'x', sfx->getContLen()) || TESTAFF( sfx->getCont(), (unsigned short)'%', sfx->getContLen()))))) { // first word is ok condition // LANG_hu section: spec. Hungarian rule if (langnum == LANG_hu) { // calculate syllable number of the word numsyllable += get_syllable(st.substr(0, i)); // + 1 word, if syllable number of the prefix > 1 (hungarian // convention) if (pfx && (get_syllable(pfx->getKey()) > 1)) wordnum++; } // END of LANG_hu section // NEXT WORD(S) rv_first = rv; st[i] = ch; do { // striple loop // check simplifiedtriple if (simplifiedtriple) { if (striple) { checkedstriple = 1; i--; // check "fahrt" instead of "ahrt" in "Schiffahrt" } else if (i > 2 && i <= word.size() && word[i - 1] == word[i - 2]) striple = 1; } rv = lookup(st.c_str() + i, st.size() - i); // perhaps without prefix // search homonym with compound flag while ((rv) && ((needaffix && TESTAFF(rv->astr, needaffix, rv->alen)) || !((compoundflag && !words && TESTAFF(rv->astr, compoundflag, rv->alen)) || (compoundend && !words && TESTAFF(rv->astr, compoundend, rv->alen)) || (!defcpdtable.empty() && words && defcpd_check(&words, wnum + 1, rv, NULL, 1))) || (scpd != 0 && checkcpdtable[scpd - 1].cond2 != FLAG_NULL && !TESTAFF(rv->astr, checkcpdtable[scpd - 1].cond2, rv->alen)))) { rv = rv->next_homonym; } // check FORCEUCASE if (rv && forceucase && (TESTAFF(rv->astr, forceucase, rv->alen)) && !(info && *info & SPELL_ORIGCAP)) rv = NULL; if (rv && words && words[wnum + 1]) return rv_first; oldnumsyllable2 = numsyllable; oldwordnum2 = wordnum; // LANG_hu section: spec. Hungarian rule, XXX hardwired dictionary // code if ((rv) && (langnum == LANG_hu) && (TESTAFF(rv->astr, 'I', rv->alen)) && !(TESTAFF(rv->astr, 'J', rv->alen))) { numsyllable--; } // END of LANG_hu section // increment word number, if the second root has a compoundroot flag if ((rv) && (compoundroot) && (TESTAFF(rv->astr, compoundroot, rv->alen))) { wordnum++; } // check forbiddenwords if ((rv) && (rv->astr) && (TESTAFF(rv->astr, forbiddenword, rv->alen) || TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen) || (is_sug && nosuggest && TESTAFF(rv->astr, nosuggest, rv->alen)))) return NULL; // second word is acceptable, as a root? // hungarian conventions: compounding is acceptable, // when compound forms consist of 2 words, or if more, // then the syllable number of root words must be 6, or lesser. if ((rv) && ((compoundflag && TESTAFF(rv->astr, compoundflag, rv->alen)) || (compoundend && TESTAFF(rv->astr, compoundend, rv->alen))) && (((cpdwordmax == -1) || (wordnum + 1 < cpdwordmax)) || ((cpdmaxsyllable != 0) && (numsyllable + get_syllable(std::string(HENTRY_WORD(rv), rv->blen)) <= cpdmaxsyllable))) && ( // test CHECKCOMPOUNDPATTERN checkcpdtable.empty() || scpd != 0 || (i < word.size() && !cpdpat_check(word, i, rv_first, rv, 0))) && ((!checkcompounddup || (rv != rv_first))) // test CHECKCOMPOUNDPATTERN conditions && (scpd == 0 || checkcpdtable[scpd - 1].cond2 == FLAG_NULL || TESTAFF(rv->astr, checkcpdtable[scpd - 1].cond2, rv->alen))) { // forbid compound word, if it is a non-compound word with typical // fault if ((checkcompoundrep && cpdrep_check(word, len)) || cpdwordpair_check(word, len)) return NULL; return rv_first; } numsyllable = oldnumsyllable2; wordnum = oldwordnum2; // perhaps second word has prefix or/and suffix sfx = NULL; sfxflag = FLAG_NULL; rv = (compoundflag && !onlycpdrule && i < word.size()) ? affix_check(word, i, word.size() - i, compoundflag, IN_CPD_END) : NULL; if (!rv && compoundend && !onlycpdrule) { sfx = NULL; pfx = NULL; if (i < word.size()) rv = affix_check(word, i, word.size() - i, compoundend, IN_CPD_END); } if (!rv && !defcpdtable.empty() && words) { if (i < word.size()) rv = affix_check(word, i, word.size() - i, 0, IN_CPD_END); if (rv && defcpd_check(&words, wnum + 1, rv, NULL, 1)) return rv_first; rv = NULL; } // test CHECKCOMPOUNDPATTERN conditions (allowed forms) if (rv && !(scpd == 0 || checkcpdtable[scpd - 1].cond2 == FLAG_NULL || TESTAFF(rv->astr, checkcpdtable[scpd - 1].cond2, rv->alen))) rv = NULL; // test CHECKCOMPOUNDPATTERN conditions (forbidden compounds) if (rv && !checkcpdtable.empty() && scpd == 0 && cpdpat_check(word, i, rv_first, rv, affixed)) rv = NULL; // check non_compound flag in suffix and prefix if ((rv) && ((pfx && pfx->getCont() && TESTAFF(pfx->getCont(), compoundforbidflag, pfx->getContLen())) || (sfx && sfx->getCont() && TESTAFF(sfx->getCont(), compoundforbidflag, sfx->getContLen())))) { rv = NULL; } // check FORCEUCASE if (rv && forceucase && (TESTAFF(rv->astr, forceucase, rv->alen)) && !(info && *info & SPELL_ORIGCAP)) rv = NULL; // check forbiddenwords if ((rv) && (rv->astr) && (TESTAFF(rv->astr, forbiddenword, rv->alen) || TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen) || (is_sug && nosuggest && TESTAFF(rv->astr, nosuggest, rv->alen)))) return NULL; // pfxappnd = prefix of word+i, or NULL // calculate syllable number of prefix. // hungarian convention: when syllable number of prefix is more, // than 1, the prefix+word counts as two words. if (langnum == LANG_hu) { if (i < word.size()) { // calculate syllable number of the word numsyllable += get_syllable(word.substr(i)); } // - affix syllable num. // XXX only second suffix (inflections, not derivations) if (sfxappnd) { std::string tmp(sfxappnd); reverseword(tmp); numsyllable -= short(get_syllable(tmp) + sfxextra); } else { numsyllable -= short(sfxextra); } // + 1 word, if syllable number of the prefix > 1 (hungarian // convention) if (pfx && (get_syllable(pfx->getKey()) > 1)) wordnum++; // increment syllable num, if last word has a SYLLABLENUM flag // and the suffix is beginning `s' if (!cpdsyllablenum.empty()) { switch (sfxflag) { case 'c': { numsyllable += 2; break; } case 'J': { numsyllable += 1; break; } case 'I': { if (rv && TESTAFF(rv->astr, 'J', rv->alen)) numsyllable += 1; break; } } } } // increment word number, if the second word has a compoundroot flag if ((rv) && (compoundroot) && (TESTAFF(rv->astr, compoundroot, rv->alen))) { wordnum++; } // second word is acceptable, as a word with prefix or/and suffix? // hungarian conventions: compounding is acceptable, // when compound forms consist 2 word, otherwise // the syllable number of root words is 6, or lesser. if ((rv) && (((cpdwordmax == -1) || (wordnum + 1 < cpdwordmax)) || ((cpdmaxsyllable != 0) && (numsyllable <= cpdmaxsyllable))) && ((!checkcompounddup || (rv != rv_first)))) { // forbid compound word, if it is a non-compound word with typical // fault if ((checkcompoundrep && cpdrep_check(word, len)) || cpdwordpair_check(word, len)) return NULL; return rv_first; } numsyllable = oldnumsyllable2; wordnum = oldwordnum2; // perhaps second word is a compound word (recursive call) // (only if SPELL_COMPOUND_2 is not set and maxwordnum is not exceeded) if ((!info || !(*info & SPELL_COMPOUND_2)) && wordnum + 2 < maxwordnum) { rv = compound_check(st.substr(i), wordnum + 1, numsyllable, maxwordnum, wnum + 1, words, rwords, 0, is_sug, info); if (rv && !checkcpdtable.empty() && i < word.size() && ((scpd == 0 && cpdpat_check(word, i, rv_first, rv, affixed)) || (scpd != 0 && !cpdpat_check(word, i, rv_first, rv, affixed)))) rv = NULL; } else { rv = NULL; } if (rv) { // forbid compound word, if it is a non-compound word with typical // fault, or a dictionary word pair if (cpdwordpair_check(word, len)) return NULL; if (checkcompoundrep || forbiddenword) { if (checkcompoundrep && cpdrep_check(word, len)) return NULL; // check first part if (i < word.size() && word.compare(i, rv->blen, rv->word, rv->blen) == 0) { char r = st[i + rv->blen]; st[i + rv->blen] = '\0'; if ((checkcompoundrep && cpdrep_check(st, i + rv->blen)) || cpdwordpair_check(st, i + rv->blen)) { st[ + i + rv->blen] = r; continue; } if (forbiddenword) { struct hentry* rv2 = lookup(word.c_str(), word.size()); if (!rv2 && len <= word.size()) rv2 = affix_check(word, 0, len); if (rv2 && rv2->astr && TESTAFF(rv2->astr, forbiddenword, rv2->alen) && (strncmp(rv2->word, st.c_str(), i + rv->blen) == 0)) { return NULL; } } st[i + rv->blen] = r; } } return rv_first; } } while (striple && !checkedstriple); // end of striple loop if (checkedstriple) { i++; checkedstriple = 0; striple = 0; } } // first word is ok condition if (soldi != 0) { i = soldi; soldi = 0; len = oldlen; cmin = oldcmin; cmax = oldcmax; } scpd++; } while (!onlycpdrule && simplifiedcpd && scpd <= checkcpdtable.size()); // end of simplifiedcpd loop scpd = 0; wordnum = oldwordnum; numsyllable = oldnumsyllable; if (soldi != 0) { i = soldi; st.assign(word); // XXX add more optim. soldi = 0; len = oldlen; cmin = oldcmin; cmax = oldcmax; } else st[i] = ch; } while (!defcpdtable.empty() && oldwordnum == 0 && onlycpdrule++ < 1); // end of onlycpd loop } return NULL; } // check if compound word is correctly spelled // hu_mov_rule = spec. Hungarian rule (XXX) int AffixMgr::compound_check_morph(const std::string& word, short wordnum, short numsyllable, short maxwordnum, short wnum, hentry** words, hentry** rwords, char hu_mov_rule, std::string& result, const std::string* partresult) { short oldnumsyllable, oldnumsyllable2, oldwordnum, oldwordnum2; hentry* rv = NULL, *rv_first; std::string st, presult; char ch, affixed = 0; int checked_prefix, cmin, cmax, ok = 0; hentry** oldwords = words; size_t len = word.size(); // add a time limit to handle possible // combinatorical explosion of the overlapping words HUNSPELL_THREAD_LOCAL clock_t timelimit; if (wordnum == 0) { // get the start time, seeing as we're reusing this set to 0 // to flag timeout, use clock() + 1 to avoid start clock() // of 0 as being a timeout timelimit = clock() + 1; } else if (timelimit != 0 && (clock() > timelimit + TIMELIMIT)) { timelimit = 0; } setcminmax(&cmin, &cmax, word.c_str(), len); st.assign(word); for (int i = cmin; i < cmax; ++i) { // go to end of the UTF-8 character if (utf8) { for (; (st[i] & 0xc0) == 0x80; i++) ; if (i >= cmax) return 0; } words = oldwords; int onlycpdrule = (words) ? 1 : 0; do { // onlycpdrule loop if (timelimit == 0) return 0; oldnumsyllable = numsyllable; oldwordnum = wordnum; checked_prefix = 0; ch = st[i]; st[i] = '\0'; sfx = NULL; // FIRST WORD affixed = 1; presult.clear(); if (partresult) presult.append(*partresult); rv = lookup(st.c_str(), i); // perhaps without prefix // forbid dictionary stems with COMPOUNDFORBIDFLAG in // compound words, overriding the effect of COMPOUNDPERMITFLAG if ((rv) && compoundforbidflag && TESTAFF(rv->astr, compoundforbidflag, rv->alen) && !hu_mov_rule) continue; // search homonym with compound flag while ((rv) && !hu_mov_rule && ((needaffix && TESTAFF(rv->astr, needaffix, rv->alen)) || !((compoundflag && !words && !onlycpdrule && TESTAFF(rv->astr, compoundflag, rv->alen)) || (compoundbegin && !wordnum && !onlycpdrule && TESTAFF(rv->astr, compoundbegin, rv->alen)) || (compoundmiddle && wordnum && !words && !onlycpdrule && TESTAFF(rv->astr, compoundmiddle, rv->alen)) || (!defcpdtable.empty() && onlycpdrule && ((!words && !wordnum && defcpd_check(&words, wnum, rv, rwords, 0)) || (words && defcpd_check(&words, wnum, rv, rwords, 0))))))) { rv = rv->next_homonym; } if (rv) affixed = 0; if (rv) { presult.push_back(MSEP_FLD); presult.append(MORPH_PART); presult.append(st, 0, i); if (!HENTRY_FIND(rv, MORPH_STEM)) { presult.push_back(MSEP_FLD); presult.append(MORPH_STEM); presult.append(st, 0, i); } if (HENTRY_DATA(rv)) { presult.push_back(MSEP_FLD); presult.append(HENTRY_DATA2(rv)); } } if (!rv) { if (compoundflag && !(rv = prefix_check(st, 0, i, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN, compoundflag))) { if (((rv = suffix_check(st, 0, i, 0, NULL, FLAG_NULL, compoundflag, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN)) || (compoundmoresuffixes && (rv = suffix_check_twosfx(st, 0, i, 0, NULL, compoundflag)))) && !hu_mov_rule && sfx->getCont() && ((compoundforbidflag && TESTAFF(sfx->getCont(), compoundforbidflag, sfx->getContLen())) || (compoundend && TESTAFF(sfx->getCont(), compoundend, sfx->getContLen())))) { rv = NULL; } } if (rv || (((wordnum == 0) && compoundbegin && ((rv = suffix_check(st, 0, i, 0, NULL, FLAG_NULL, compoundbegin, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN)) || (compoundmoresuffixes && (rv = suffix_check_twosfx( st, 0, i, 0, NULL, compoundbegin))) || // twofold suffix+compound (rv = prefix_check(st, 0, i, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN, compoundbegin)))) || ((wordnum > 0) && compoundmiddle && ((rv = suffix_check(st, 0, i, 0, NULL, FLAG_NULL, compoundmiddle, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN)) || (compoundmoresuffixes && (rv = suffix_check_twosfx( st, 0, i, 0, NULL, compoundmiddle))) || // twofold suffix+compound (rv = prefix_check(st, 0, i, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN, compoundmiddle)))))) { std::string p; if (compoundflag) p = affix_check_morph(st, 0, i, compoundflag); if (p.empty()) { if ((wordnum == 0) && compoundbegin) { p = affix_check_morph(st, 0, i, compoundbegin); } else if ((wordnum > 0) && compoundmiddle) { p = affix_check_morph(st, 0, i, compoundmiddle); } } if (!p.empty()) { presult.push_back(MSEP_FLD); presult.append(MORPH_PART); presult.append(st, 0, i); line_uniq_app(p, MSEP_REC); presult.append(p); } checked_prefix = 1; } // else check forbiddenwords } else if (rv->astr && (TESTAFF(rv->astr, forbiddenword, rv->alen) || TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen) || TESTAFF(rv->astr, needaffix, rv->alen))) { st[i] = ch; continue; } // check non_compound flag in suffix and prefix if ((rv) && !hu_mov_rule && ((pfx && pfx->getCont() && TESTAFF(pfx->getCont(), compoundforbidflag, pfx->getContLen())) || (sfx && sfx->getCont() && TESTAFF(sfx->getCont(), compoundforbidflag, sfx->getContLen())))) { continue; } // check compoundend flag in suffix and prefix if ((rv) && !checked_prefix && compoundend && !hu_mov_rule && ((pfx && pfx->getCont() && TESTAFF(pfx->getCont(), compoundend, pfx->getContLen())) || (sfx && sfx->getCont() && TESTAFF(sfx->getCont(), compoundend, sfx->getContLen())))) { continue; } // check compoundmiddle flag in suffix and prefix if ((rv) && !checked_prefix && (wordnum == 0) && compoundmiddle && !hu_mov_rule && ((pfx && pfx->getCont() && TESTAFF(pfx->getCont(), compoundmiddle, pfx->getContLen())) || (sfx && sfx->getCont() && TESTAFF(sfx->getCont(), compoundmiddle, sfx->getContLen())))) { rv = NULL; } // check forbiddenwords if ((rv) && (rv->astr) && (TESTAFF(rv->astr, forbiddenword, rv->alen) || TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen))) continue; // increment word number, if the second root has a compoundroot flag if ((rv) && (compoundroot) && (TESTAFF(rv->astr, compoundroot, rv->alen))) { wordnum++; } // first word is acceptable in compound words? if (((rv) && (checked_prefix || (words && words[wnum]) || (compoundflag && TESTAFF(rv->astr, compoundflag, rv->alen)) || ((oldwordnum == 0) && compoundbegin && TESTAFF(rv->astr, compoundbegin, rv->alen)) || ((oldwordnum > 0) && compoundmiddle && TESTAFF(rv->astr, compoundmiddle, rv->alen)) // LANG_hu section: spec. Hungarian rule || ((langnum == LANG_hu) && // hu_mov_rule hu_mov_rule && (TESTAFF(rv->astr, 'F', rv->alen) || TESTAFF(rv->astr, 'G', rv->alen) || TESTAFF(rv->astr, 'H', rv->alen))) // END of LANG_hu section ) && !((checkcompoundtriple && !words && // test triple letters (word[i - 1] == word[i]) && (((i > 1) && (word[i - 1] == word[i - 2])) || ((word[i - 1] == word[i + 1])) // may be word[i+1] == '\0' )) || ( // test CHECKCOMPOUNDPATTERN !checkcpdtable.empty() && !words && cpdpat_check(word, i, rv, NULL, affixed)) || (checkcompoundcase && !words && cpdcase_check(word, i)))) // LANG_hu section: spec. Hungarian rule || ((!rv) && (langnum == LANG_hu) && hu_mov_rule && (rv = affix_check(st, 0, i)) && (sfx && sfx->getCont() && (TESTAFF(sfx->getCont(), (unsigned short)'x', sfx->getContLen()) || TESTAFF(sfx->getCont(), (unsigned short)'%', sfx->getContLen())))) // END of LANG_hu section ) { // LANG_hu section: spec. Hungarian rule if (langnum == LANG_hu) { // calculate syllable number of the word numsyllable += get_syllable(st.substr(0, i)); // + 1 word, if syllable number of the prefix > 1 (hungarian // convention) if (pfx && (get_syllable(pfx->getKey()) > 1)) wordnum++; } // END of LANG_hu section // NEXT WORD(S) rv_first = rv; rv = lookup(word.c_str() + i, word.size() - i); // perhaps without prefix // search homonym with compound flag while ((rv) && ((needaffix && TESTAFF(rv->astr, needaffix, rv->alen)) || !((compoundflag && !words && TESTAFF(rv->astr, compoundflag, rv->alen)) || (compoundend && !words && TESTAFF(rv->astr, compoundend, rv->alen)) || (!defcpdtable.empty() && words && defcpd_check(&words, wnum + 1, rv, NULL, 1))))) { rv = rv->next_homonym; } if (rv && words && words[wnum + 1]) { result.append(presult); result.push_back(MSEP_FLD); result.append(MORPH_PART); result.append(word, i); if (complexprefixes && HENTRY_DATA(rv)) result.append(HENTRY_DATA2(rv)); if (!HENTRY_FIND(rv, MORPH_STEM)) { result.push_back(MSEP_FLD); result.append(MORPH_STEM); result.append(HENTRY_WORD(rv)); } // store the pointer of the hash entry if (!complexprefixes && HENTRY_DATA(rv)) { result.push_back(MSEP_FLD); result.append(HENTRY_DATA2(rv)); } result.push_back(MSEP_REC); return 0; } oldnumsyllable2 = numsyllable; oldwordnum2 = wordnum; // LANG_hu section: spec. Hungarian rule if ((rv) && (langnum == LANG_hu) && (TESTAFF(rv->astr, 'I', rv->alen)) && !(TESTAFF(rv->astr, 'J', rv->alen))) { numsyllable--; } // END of LANG_hu section // increment word number, if the second root has a compoundroot flag if ((rv) && (compoundroot) && (TESTAFF(rv->astr, compoundroot, rv->alen))) { wordnum++; } // check forbiddenwords if ((rv) && (rv->astr) && (TESTAFF(rv->astr, forbiddenword, rv->alen) || TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen))) { st[i] = ch; continue; } // second word is acceptable, as a root? // hungarian conventions: compounding is acceptable, // when compound forms consist of 2 words, or if more, // then the syllable number of root words must be 6, or lesser. if ((rv) && ((compoundflag && TESTAFF(rv->astr, compoundflag, rv->alen)) || (compoundend && TESTAFF(rv->astr, compoundend, rv->alen))) && (((cpdwordmax == -1) || (wordnum + 1 < cpdwordmax)) || ((cpdmaxsyllable != 0) && (numsyllable + get_syllable(std::string(HENTRY_WORD(rv), rv->blen)) <= cpdmaxsyllable))) && ((!checkcompounddup || (rv != rv_first)))) { // bad compound word result.append(presult); result.push_back(MSEP_FLD); result.append(MORPH_PART); result.append(word, i); if (HENTRY_DATA(rv)) { if (complexprefixes) result.append(HENTRY_DATA2(rv)); if (!HENTRY_FIND(rv, MORPH_STEM)) { result.push_back(MSEP_FLD); result.append(MORPH_STEM); result.append(HENTRY_WORD(rv)); } // store the pointer of the hash entry if (!complexprefixes) { result.push_back(MSEP_FLD); result.append(HENTRY_DATA2(rv)); } } result.push_back(MSEP_REC); ok = 1; } numsyllable = oldnumsyllable2; wordnum = oldwordnum2; // perhaps second word has prefix or/and suffix sfx = NULL; sfxflag = FLAG_NULL; if (compoundflag && !onlycpdrule) rv = affix_check(word, i, word.size() - i, compoundflag); else rv = NULL; if (!rv && compoundend && !onlycpdrule) { sfx = NULL; pfx = NULL; rv = affix_check(word, i, word.size() - i, compoundend); } if (!rv && !defcpdtable.empty() && words) { rv = affix_check(word, i, word.size() - i, 0, IN_CPD_END); if (rv && words && defcpd_check(&words, wnum + 1, rv, NULL, 1)) { std::string m; if (compoundflag) m = affix_check_morph(word, i, word.size() - i, compoundflag); if (m.empty() && compoundend) { m = affix_check_morph(word, i, word.size() - i, compoundend); } result.append(presult); if (!m.empty()) { result.push_back(MSEP_FLD); result.append(MORPH_PART); result.append(word, i); line_uniq_app(m, MSEP_REC); result.append(m); } result.push_back(MSEP_REC); ok = 1; } } // check non_compound flag in suffix and prefix if ((rv) && ((pfx && pfx->getCont() && TESTAFF(pfx->getCont(), compoundforbidflag, pfx->getContLen())) || (sfx && sfx->getCont() && TESTAFF(sfx->getCont(), compoundforbidflag, sfx->getContLen())))) { rv = NULL; } // check forbiddenwords if ((rv) && (rv->astr) && (TESTAFF(rv->astr, forbiddenword, rv->alen) || TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen)) && (!TESTAFF(rv->astr, needaffix, rv->alen))) { st[i] = ch; continue; } if (langnum == LANG_hu) { // calculate syllable number of the word numsyllable += get_syllable(word.c_str() + i); // - affix syllable num. // XXX only second suffix (inflections, not derivations) if (sfxappnd) { std::string tmp(sfxappnd); reverseword(tmp); numsyllable -= short(get_syllable(tmp) + sfxextra); } else { numsyllable -= short(sfxextra); } // + 1 word, if syllable number of the prefix > 1 (hungarian // convention) if (pfx && (get_syllable(pfx->getKey()) > 1)) wordnum++; // increment syllable num, if last word has a SYLLABLENUM flag // and the suffix is beginning `s' if (!cpdsyllablenum.empty()) { switch (sfxflag) { case 'c': { numsyllable += 2; break; } case 'J': { numsyllable += 1; break; } case 'I': { if (rv && TESTAFF(rv->astr, 'J', rv->alen)) numsyllable += 1; break; } } } } // increment word number, if the second word has a compoundroot flag if ((rv) && (compoundroot) && (TESTAFF(rv->astr, compoundroot, rv->alen))) { wordnum++; } // second word is acceptable, as a word with prefix or/and suffix? // hungarian conventions: compounding is acceptable, // when compound forms consist 2 word, otherwise // the syllable number of root words is 6, or lesser. if ((rv) && (((cpdwordmax == -1) || (wordnum + 1 < cpdwordmax)) || ((cpdmaxsyllable != 0) && (numsyllable <= cpdmaxsyllable))) && ((!checkcompounddup || (rv != rv_first)))) { std::string m; if (compoundflag) m = affix_check_morph(word, i, word.size() - i, compoundflag); if (m.empty() && compoundend) { m = affix_check_morph(word, i, word.size() - i, compoundend); } result.append(presult); if (!m.empty()) { result.push_back(MSEP_FLD); result.append(MORPH_PART); result.append(word, i); line_uniq_app(m, MSEP_REC); result.push_back(MSEP_FLD); result.append(m); } result.push_back(MSEP_REC); ok = 1; } numsyllable = oldnumsyllable2; wordnum = oldwordnum2; // perhaps second word is a compound word (recursive call) if ((wordnum + 2 < maxwordnum) && (ok == 0)) { compound_check_morph(word.substr(i), wordnum + 1, numsyllable, maxwordnum, wnum + 1, words, rwords, 0, result, &presult); } else { rv = NULL; } } st[i] = ch; wordnum = oldwordnum; numsyllable = oldnumsyllable; } while (!defcpdtable.empty() && oldwordnum == 0 && onlycpdrule++ < 1); // end of onlycpd loop } return 0; } inline int AffixMgr::isRevSubset(const char* s1, const char* end_of_s2, int len) { while ((len > 0) && (*s1 != '\0') && ((*s1 == *end_of_s2) || (*s1 == '.'))) { s1++; end_of_s2--; len--; } return (*s1 == '\0'); } // check word for suffixes struct hentry* AffixMgr::suffix_check(const std::string& word, int start, int len, int sfxopts, PfxEntry* ppfx, const FLAG cclass, const FLAG needflag, char in_compound) { struct hentry* rv = NULL; PfxEntry* ep = ppfx; // first handle the special case of 0 length suffixes SfxEntry* se = sStart[0]; while (se) { if (!cclass || se->getCont()) { // suffixes are not allowed in beginning of compounds if ((((in_compound != IN_CPD_BEGIN)) || // && !cclass // except when signed with compoundpermitflag flag (se->getCont() && compoundpermitflag && TESTAFF(se->getCont(), compoundpermitflag, se->getContLen()))) && (!circumfix || // no circumfix flag in prefix and suffix ((!ppfx || !(ep->getCont()) || !TESTAFF(ep->getCont(), circumfix, ep->getContLen())) && (!se->getCont() || !(TESTAFF(se->getCont(), circumfix, se->getContLen())))) || // circumfix flag in prefix AND suffix ((ppfx && (ep->getCont()) && TESTAFF(ep->getCont(), circumfix, ep->getContLen())) && (se->getCont() && (TESTAFF(se->getCont(), circumfix, se->getContLen()))))) && // fogemorpheme (in_compound || !(se->getCont() && (TESTAFF(se->getCont(), onlyincompound, se->getContLen())))) && // needaffix on prefix or first suffix (cclass || !(se->getCont() && TESTAFF(se->getCont(), needaffix, se->getContLen())) || (ppfx && !((ep->getCont()) && TESTAFF(ep->getCont(), needaffix, ep->getContLen()))))) { rv = se->checkword(word, start, len, sfxopts, ppfx, (FLAG)cclass, needflag, (in_compound ? 0 : onlyincompound)); if (rv) { sfx = se; // BUG: sfx not stateless return rv; } } } se = se->getNext(); } // now handle the general case if (len == 0) return NULL; // FULLSTRIP unsigned char sp = word[start + len - 1]; SfxEntry* sptr = sStart[sp]; while (sptr) { if (isRevSubset(sptr->getKey(), word.c_str() + start + len - 1, len)) { // suffixes are not allowed in beginning of compounds if ((((in_compound != IN_CPD_BEGIN)) || // && !cclass // except when signed with compoundpermitflag flag (sptr->getCont() && compoundpermitflag && TESTAFF(sptr->getCont(), compoundpermitflag, sptr->getContLen()))) && (!circumfix || // no circumfix flag in prefix and suffix ((!ppfx || !(ep->getCont()) || !TESTAFF(ep->getCont(), circumfix, ep->getContLen())) && (!sptr->getCont() || !(TESTAFF(sptr->getCont(), circumfix, sptr->getContLen())))) || // circumfix flag in prefix AND suffix ((ppfx && (ep->getCont()) && TESTAFF(ep->getCont(), circumfix, ep->getContLen())) && (sptr->getCont() && (TESTAFF(sptr->getCont(), circumfix, sptr->getContLen()))))) && // fogemorpheme (in_compound || !((sptr->getCont() && (TESTAFF(sptr->getCont(), onlyincompound, sptr->getContLen()))))) && // needaffix on prefix or first suffix (cclass || !(sptr->getCont() && TESTAFF(sptr->getCont(), needaffix, sptr->getContLen())) || (ppfx && !((ep->getCont()) && TESTAFF(ep->getCont(), needaffix, ep->getContLen()))))) if (in_compound != IN_CPD_END || ppfx || !(sptr->getCont() && TESTAFF(sptr->getCont(), onlyincompound, sptr->getContLen()))) { rv = sptr->checkword(word, start, len, sfxopts, ppfx, cclass, needflag, (in_compound ? 0 : onlyincompound)); if (rv) { sfx = sptr; // BUG: sfx not stateless sfxflag = sptr->getFlag(); // BUG: sfxflag not stateless if (!sptr->getCont()) sfxappnd = sptr->getKey(); // BUG: sfxappnd not stateless // LANG_hu section: spec. Hungarian rule else if (langnum == LANG_hu && sptr->getKeyLen() && sptr->getKey()[0] == 'i' && sptr->getKey()[1] != 'y' && sptr->getKey()[1] != 't') { sfxextra = 1; } // END of LANG_hu section return rv; } } sptr = sptr->getNextEQ(); } else { sptr = sptr->getNextNE(); } } return NULL; } // check word for two-level suffixes struct hentry* AffixMgr::suffix_check_twosfx(const std::string& word, int start, int len, int sfxopts, PfxEntry* ppfx, const FLAG needflag) { struct hentry* rv = NULL; // first handle the special case of 0 length suffixes SfxEntry* se = sStart[0]; while (se) { if (contclasses[se->getFlag()]) { rv = se->check_twosfx(word, start, len, sfxopts, ppfx, needflag); if (rv) return rv; } se = se->getNext(); } // now handle the general case if (len == 0) return NULL; // FULLSTRIP unsigned char sp = word[start + len - 1]; SfxEntry* sptr = sStart[sp]; while (sptr) { if (isRevSubset(sptr->getKey(), word.c_str() + start + len - 1, len)) { if (contclasses[sptr->getFlag()]) { rv = sptr->check_twosfx(word, start, len, sfxopts, ppfx, needflag); if (rv) { sfxflag = sptr->getFlag(); // BUG: sfxflag not stateless if (!sptr->getCont()) sfxappnd = sptr->getKey(); // BUG: sfxappnd not stateless return rv; } } sptr = sptr->getNextEQ(); } else { sptr = sptr->getNextNE(); } } return NULL; } // check word for two-level suffixes and morph std::string AffixMgr::suffix_check_twosfx_morph(const std::string& word, int start, int len, int sfxopts, PfxEntry* ppfx, const FLAG needflag) { std::string result; std::string result2; std::string result3; // first handle the special case of 0 length suffixes SfxEntry* se = sStart[0]; while (se) { if (contclasses[se->getFlag()]) { std::string st = se->check_twosfx_morph(word, start, len, sfxopts, ppfx, needflag); if (!st.empty()) { if (ppfx) { if (ppfx->getMorph()) { result.append(ppfx->getMorph()); result.push_back(MSEP_FLD); } else debugflag(result, ppfx->getFlag()); } result.append(st); if (se->getMorph()) { result.push_back(MSEP_FLD); result.append(se->getMorph()); } else debugflag(result, se->getFlag()); result.push_back(MSEP_REC); } } se = se->getNext(); } // now handle the general case if (len == 0) return { }; // FULLSTRIP unsigned char sp = word[start + len - 1]; SfxEntry* sptr = sStart[sp]; while (sptr) { if (isRevSubset(sptr->getKey(), word.c_str() + start + len - 1, len)) { if (contclasses[sptr->getFlag()]) { std::string st = sptr->check_twosfx_morph(word, start, len, sfxopts, ppfx, needflag); if (!st.empty()) { sfxflag = sptr->getFlag(); // BUG: sfxflag not stateless if (!sptr->getCont()) sfxappnd = sptr->getKey(); // BUG: sfxappnd not stateless result2.assign(st); result3.clear(); if (sptr->getMorph()) { result3.push_back(MSEP_FLD); result3.append(sptr->getMorph()); } else debugflag(result3, sptr->getFlag()); strlinecat(result2, result3); result2.push_back(MSEP_REC); result.append(result2); } } sptr = sptr->getNextEQ(); } else { sptr = sptr->getNextNE(); } } return result; } std::string AffixMgr::suffix_check_morph(const std::string& word, int start, int len, int sfxopts, PfxEntry* ppfx, const FLAG cclass, const FLAG needflag, char in_compound) { std::string result; struct hentry* rv = NULL; PfxEntry* ep = ppfx; // first handle the special case of 0 length suffixes SfxEntry* se = sStart[0]; while (se) { if (!cclass || se->getCont()) { // suffixes are not allowed in beginning of compounds if (((((in_compound != IN_CPD_BEGIN)) || // && !cclass // except when signed with compoundpermitflag flag (se->getCont() && compoundpermitflag && TESTAFF(se->getCont(), compoundpermitflag, se->getContLen()))) && (!circumfix || // no circumfix flag in prefix and suffix ((!ppfx || !(ep->getCont()) || !TESTAFF(ep->getCont(), circumfix, ep->getContLen())) && (!se->getCont() || !(TESTAFF(se->getCont(), circumfix, se->getContLen())))) || // circumfix flag in prefix AND suffix ((ppfx && (ep->getCont()) && TESTAFF(ep->getCont(), circumfix, ep->getContLen())) && (se->getCont() && (TESTAFF(se->getCont(), circumfix, se->getContLen()))))) && // fogemorpheme (in_compound || !((se->getCont() && (TESTAFF(se->getCont(), onlyincompound, se->getContLen()))))) && // needaffix on prefix or first suffix (cclass || !(se->getCont() && TESTAFF(se->getCont(), needaffix, se->getContLen())) || (ppfx && !((ep->getCont()) && TESTAFF(ep->getCont(), needaffix, ep->getContLen())))))) rv = se->checkword(word, start, len, sfxopts, ppfx, cclass, needflag, FLAG_NULL); while (rv) { if (ppfx) { if (ppfx->getMorph()) { result.append(ppfx->getMorph()); result.push_back(MSEP_FLD); } else debugflag(result, ppfx->getFlag()); } if (complexprefixes && HENTRY_DATA(rv)) result.append(HENTRY_DATA2(rv)); if (!HENTRY_FIND(rv, MORPH_STEM)) { result.push_back(MSEP_FLD); result.append(MORPH_STEM); result.append(HENTRY_WORD(rv)); } if (!complexprefixes && HENTRY_DATA(rv)) { result.push_back(MSEP_FLD); result.append(HENTRY_DATA2(rv)); } if (se->getMorph()) { result.push_back(MSEP_FLD); result.append(se->getMorph()); } else debugflag(result, se->getFlag()); result.push_back(MSEP_REC); rv = se->get_next_homonym(rv, sfxopts, ppfx, cclass, needflag); } } se = se->getNext(); } // now handle the general case if (len == 0) return { }; // FULLSTRIP unsigned char sp = word[start + len - 1]; SfxEntry* sptr = sStart[sp]; while (sptr) { if (isRevSubset(sptr->getKey(), word.c_str() + start + len - 1, len)) { // suffixes are not allowed in beginning of compounds if (((((in_compound != IN_CPD_BEGIN)) || // && !cclass // except when signed with compoundpermitflag flag (sptr->getCont() && compoundpermitflag && TESTAFF(sptr->getCont(), compoundpermitflag, sptr->getContLen()))) && (!circumfix || // no circumfix flag in prefix and suffix ((!ppfx || !(ep->getCont()) || !TESTAFF(ep->getCont(), circumfix, ep->getContLen())) && (!sptr->getCont() || !(TESTAFF(sptr->getCont(), circumfix, sptr->getContLen())))) || // circumfix flag in prefix AND suffix ((ppfx && (ep->getCont()) && TESTAFF(ep->getCont(), circumfix, ep->getContLen())) && (sptr->getCont() && (TESTAFF(sptr->getCont(), circumfix, sptr->getContLen()))))) && // fogemorpheme (in_compound || !((sptr->getCont() && (TESTAFF(sptr->getCont(), onlyincompound, sptr->getContLen()))))) && // needaffix on first suffix (cclass || !(sptr->getCont() && TESTAFF(sptr->getCont(), needaffix, sptr->getContLen()))))) rv = sptr->checkword(word, start, len, sfxopts, ppfx, cclass, needflag, FLAG_NULL); while (rv) { if (ppfx) { if (ppfx->getMorph()) { result.append(ppfx->getMorph()); result.push_back(MSEP_FLD); } else debugflag(result, ppfx->getFlag()); } if (complexprefixes && HENTRY_DATA(rv)) result.append(HENTRY_DATA2(rv)); if (!HENTRY_FIND(rv, MORPH_STEM)) { result.push_back(MSEP_FLD); result.append(MORPH_STEM); result.append(HENTRY_WORD(rv)); } if (!complexprefixes && HENTRY_DATA(rv)) { result.push_back(MSEP_FLD); result.append(HENTRY_DATA2(rv)); } if (sptr->getMorph()) { result.push_back(MSEP_FLD); result.append(sptr->getMorph()); } else debugflag(result, sptr->getFlag()); result.push_back(MSEP_REC); rv = sptr->get_next_homonym(rv, sfxopts, ppfx, cclass, needflag); } sptr = sptr->getNextEQ(); } else { sptr = sptr->getNextNE(); } } return result; } // check if word with affixes is correctly spelled struct hentry* AffixMgr::affix_check(const std::string& word, int start, int len, const FLAG needflag, char in_compound) { // check all prefixes (also crossed with suffixes if allowed) struct hentry* rv = prefix_check(word, start, len, in_compound, needflag); if (rv) return rv; // if still not found check all suffixes rv = suffix_check(word, start, len, 0, NULL, FLAG_NULL, needflag, in_compound); if (havecontclass) { sfx = NULL; pfx = NULL; if (rv) return rv; // if still not found check all two-level suffixes rv = suffix_check_twosfx(word, start, len, 0, NULL, needflag); if (rv) return rv; // if still not found check all two-level suffixes rv = prefix_check_twosfx(word, start, len, IN_CPD_NOT, needflag); } return rv; } // check if word with affixes is correctly spelled std::string AffixMgr::affix_check_morph(const std::string& word, int start, int len, const FLAG needflag, char in_compound) { std::string result; // check all prefixes (also crossed with suffixes if allowed) std::string st = prefix_check_morph(word, start, len, in_compound); if (!st.empty()) { result.append(st); } // if still not found check all suffixes st = suffix_check_morph(word, start, len, 0, NULL, '\0', needflag, in_compound); if (!st.empty()) { result.append(st); } if (havecontclass) { sfx = NULL; pfx = NULL; // if still not found check all two-level suffixes st = suffix_check_twosfx_morph(word, start, len, 0, NULL, needflag); if (!st.empty()) { result.append(st); } // if still not found check all two-level suffixes st = prefix_check_twosfx_morph(word, start, len, IN_CPD_NOT, needflag); if (!st.empty()) { result.append(st); } } return result; } // morphcmp(): compare MORPH_DERI_SFX, MORPH_INFL_SFX and MORPH_TERM_SFX fields // in the first line of the inputs // return 0, if inputs equal // return 1, if inputs may equal with a secondary suffix // otherwise return -1 static int morphcmp(const char* s, const char* t) { int se = 0, te = 0; const char* sl; const char* tl; const char* olds; const char* oldt; if (!s || !t) return 1; olds = s; sl = strchr(s, '\n'); s = strstr(s, MORPH_DERI_SFX); if (!s || (sl && sl < s)) s = strstr(olds, MORPH_INFL_SFX); if (!s || (sl && sl < s)) { s = strstr(olds, MORPH_TERM_SFX); olds = NULL; } oldt = t; tl = strchr(t, '\n'); t = strstr(t, MORPH_DERI_SFX); if (!t || (tl && tl < t)) t = strstr(oldt, MORPH_INFL_SFX); if (!t || (tl && tl < t)) { t = strstr(oldt, MORPH_TERM_SFX); oldt = NULL; } while (s && t && (!sl || sl > s) && (!tl || tl > t)) { s += MORPH_TAG_LEN; t += MORPH_TAG_LEN; se = 0; te = 0; while ((*s == *t) && !se && !te) { s++; t++; switch (*s) { case ' ': case '\n': case '\t': case '\0': se = 1; } switch (*t) { case ' ': case '\n': case '\t': case '\0': te = 1; } } if (!se || !te) { // not terminal suffix difference if (olds) return -1; return 1; } olds = s; s = strstr(s, MORPH_DERI_SFX); if (!s || (sl && sl < s)) s = strstr(olds, MORPH_INFL_SFX); if (!s || (sl && sl < s)) { s = strstr(olds, MORPH_TERM_SFX); olds = NULL; } oldt = t; t = strstr(t, MORPH_DERI_SFX); if (!t || (tl && tl < t)) t = strstr(oldt, MORPH_INFL_SFX); if (!t || (tl && tl < t)) { t = strstr(oldt, MORPH_TERM_SFX); oldt = NULL; } } if (!s && !t && se && te) return 0; return 1; } std::string AffixMgr::morphgen(const char* ts, int wl, const unsigned short* ap, unsigned short al, const char* morph, const char* targetmorph, int level) { // handle suffixes if (!morph) return {}; // check substandard flag if (TESTAFF(ap, substandard, al)) return {}; if (morphcmp(morph, targetmorph) == 0) return ts; size_t stemmorphcatpos; std::string mymorph; // use input suffix fields, if exist if (strstr(morph, MORPH_INFL_SFX) || strstr(morph, MORPH_DERI_SFX)) { mymorph.assign(morph); mymorph.push_back(MSEP_FLD); stemmorphcatpos = mymorph.size(); } else { stemmorphcatpos = std::string::npos; } for (int i = 0; i < al; i++) { const auto c = (unsigned char)(ap[i] & 0x00FF); SfxEntry* sptr = sFlag[c]; while (sptr) { if (sptr->getFlag() == ap[i] && sptr->getMorph() && ((sptr->getContLen() == 0) || // don't generate forms with substandard affixes !TESTAFF(sptr->getCont(), substandard, sptr->getContLen()))) { const char* stemmorph; if (stemmorphcatpos != std::string::npos) { mymorph.replace(stemmorphcatpos, std::string::npos, sptr->getMorph()); stemmorph = mymorph.c_str(); } else { stemmorph = sptr->getMorph(); } int cmp = morphcmp(stemmorph, targetmorph); if (cmp == 0) { std::string newword = sptr->add(ts, wl); if (!newword.empty()) { hentry* check = pHMgr->lookup(newword.c_str(), newword.size()); // XXX extra dic if (!check || !check->astr || !(TESTAFF(check->astr, forbiddenword, check->alen) || TESTAFF(check->astr, ONLYUPCASEFLAG, check->alen))) { return newword; } } } // recursive call for secondary suffixes if ((level == 0) && (cmp == 1) && (sptr->getContLen() > 0) && !TESTAFF(sptr->getCont(), substandard, sptr->getContLen())) { std::string newword = sptr->add(ts, wl); if (!newword.empty()) { std::string newword2 = morphgen(newword.c_str(), newword.size(), sptr->getCont(), sptr->getContLen(), stemmorph, targetmorph, 1); if (!newword2.empty()) { return newword2; } } } } sptr = sptr->getFlgNxt(); } } return { }; } namespace { // replaces strdup with ansi version char* mystrdup(const char* s) { char* d = NULL; if (s) { size_t sl = strlen(s) + 1; d = new char[sl]; memcpy(d, s, sl); } return d; } } int AffixMgr::expand_rootword(struct guessword* wlst, int maxn, const char* ts, int wl, const unsigned short* ap, unsigned short al, const char* bad, int badl, const char* phon) { int nh = 0; // first add root word to list if ((nh < maxn) && !(al && ((needaffix && TESTAFF(ap, needaffix, al)) || (onlyincompound && TESTAFF(ap, onlyincompound, al))))) { wlst[nh].word = mystrdup(ts); wlst[nh].allow = false; wlst[nh].orig = NULL; nh++; // add special phonetic version if (phon && (nh < maxn)) { wlst[nh].word = mystrdup(phon); wlst[nh].allow = false; wlst[nh].orig = mystrdup(ts); nh++; } } // handle suffixes for (int i = 0; i < al; i++) { const auto c = (unsigned char)(ap[i] & 0x00FF); SfxEntry* sptr = sFlag[c]; while (sptr) { if ((sptr->getFlag() == ap[i]) && (!sptr->getKeyLen() || ((badl > sptr->getKeyLen()) && (strcmp(sptr->getAffix(), bad + badl - sptr->getKeyLen()) == 0))) && // check needaffix flag !(sptr->getCont() && ((needaffix && TESTAFF(sptr->getCont(), needaffix, sptr->getContLen())) || (circumfix && TESTAFF(sptr->getCont(), circumfix, sptr->getContLen())) || (onlyincompound && TESTAFF(sptr->getCont(), onlyincompound, sptr->getContLen()))))) { std::string newword = sptr->add(ts, wl); if (!newword.empty()) { if (nh < maxn) { wlst[nh].word = mystrdup(newword.c_str()); wlst[nh].allow = sptr->allowCross(); wlst[nh].orig = NULL; nh++; // add special phonetic version if (phon && (nh < maxn)) { std::string prefix(phon); std::string key(sptr->getKey()); reverseword(key); prefix.append(key); wlst[nh].word = mystrdup(prefix.c_str()); wlst[nh].allow = false; wlst[nh].orig = mystrdup(newword.c_str()); nh++; } } } } sptr = sptr->getFlgNxt(); } } int n = nh; // handle cross products of prefixes and suffixes for (int j = 1; j < n; j++) if (wlst[j].allow) { for (int k = 0; k < al; k++) { const auto c = (unsigned char)(ap[k] & 0x00FF); PfxEntry* cptr = pFlag[c]; while (cptr) { if ((cptr->getFlag() == ap[k]) && cptr->allowCross() && (!cptr->getKeyLen() || ((badl > cptr->getKeyLen()) && (strncmp(cptr->getKey(), bad, cptr->getKeyLen()) == 0)))) { int l1 = strlen(wlst[j].word); std::string newword = cptr->add(wlst[j].word, l1); if (!newword.empty()) { if (nh < maxn) { wlst[nh].word = mystrdup(newword.c_str()); wlst[nh].allow = cptr->allowCross(); wlst[nh].orig = NULL; nh++; } } } cptr = cptr->getFlgNxt(); } } } // now handle pure prefixes for (int m = 0; m < al; m++) { const auto c = (unsigned char)(ap[m] & 0x00FF); PfxEntry* ptr = pFlag[c]; while (ptr) { if ((ptr->getFlag() == ap[m]) && (!ptr->getKeyLen() || ((badl > ptr->getKeyLen()) && (strncmp(ptr->getKey(), bad, ptr->getKeyLen()) == 0))) && // check needaffix flag !(ptr->getCont() && ((needaffix && TESTAFF(ptr->getCont(), needaffix, ptr->getContLen())) || (circumfix && TESTAFF(ptr->getCont(), circumfix, ptr->getContLen())) || (onlyincompound && TESTAFF(ptr->getCont(), onlyincompound, ptr->getContLen()))))) { std::string newword = ptr->add(ts, wl); if (!newword.empty()) { if (nh < maxn) { wlst[nh].word = mystrdup(newword.c_str()); wlst[nh].allow = ptr->allowCross(); wlst[nh].orig = NULL; nh++; } } } ptr = ptr->getFlgNxt(); } } return nh; } // return replacing table const std::vector& AffixMgr::get_reptable() const { return pHMgr->get_reptable(); } // return iconv table RepList* AffixMgr::get_iconvtable() const { if (!iconvtable) return NULL; return iconvtable; } // return oconv table RepList* AffixMgr::get_oconvtable() const { if (!oconvtable) return NULL; return oconvtable; } // return replacing table struct phonetable* AffixMgr::get_phonetable() const { if (!phone) return NULL; return phone; } // return character map table const std::vector& AffixMgr::get_maptable() const { return maptable; } // return character map table const std::vector& AffixMgr::get_breaktable() const { return breaktable; } // return text encoding of dictionary const std::string& AffixMgr::get_encoding() { if (encoding.empty()) encoding = SPELL_ENCODING; return encoding; } // return text encoding of dictionary int AffixMgr::get_langnum() const { return langnum; } // return double prefix option int AffixMgr::get_complexprefixes() const { return complexprefixes; } // return FULLSTRIP option int AffixMgr::get_fullstrip() const { return fullstrip; } FLAG AffixMgr::get_keepcase() const { return keepcase; } FLAG AffixMgr::get_forceucase() const { return forceucase; } FLAG AffixMgr::get_warn() const { return warn; } int AffixMgr::get_forbidwarn() const { return forbidwarn; } int AffixMgr::get_checksharps() const { return checksharps; } std::string AffixMgr::encode_flag(unsigned short aflag) const { return pHMgr->encode_flag(aflag); } // return the preferred ignore string for suggestions const char* AffixMgr::get_ignore() const { if (ignorechars.empty()) return NULL; return ignorechars.c_str(); } // return the preferred ignore string for suggestions const std::vector& AffixMgr::get_ignore_utf16() const { return ignorechars_utf16; } // return the keyboard string for suggestions const std::string& AffixMgr::get_key_string() { if (keystring.empty()) keystring = SPELL_KEYSTRING; return keystring; } // return the preferred try string for suggestions const std::string& AffixMgr::get_try_string() const { return trystring; } // return the preferred try string for suggestions const std::string& AffixMgr::get_wordchars() const { return wordchars; } const std::vector& AffixMgr::get_wordchars_utf16() const { return wordchars_utf16; } // is there compounding? int AffixMgr::get_compound() const { return compoundflag || compoundbegin || !defcpdtable.empty(); } // return the compound words control flag FLAG AffixMgr::get_compoundflag() const { return compoundflag; } // return the forbidden words control flag FLAG AffixMgr::get_forbiddenword() const { return forbiddenword; } // return the forbidden words control flag FLAG AffixMgr::get_nosuggest() const { return nosuggest; } // return the forbidden words control flag FLAG AffixMgr::get_nongramsuggest() const { return nongramsuggest; } // return the substandard root/affix control flag FLAG AffixMgr::get_substandard() const { return substandard; } // return the forbidden words flag modify flag FLAG AffixMgr::get_needaffix() const { return needaffix; } // return the onlyincompound flag FLAG AffixMgr::get_onlyincompound() const { return onlyincompound; } // return the value of suffix const std::string& AffixMgr::get_version() const { return version; } // utility method to look up root words in hash table struct hentry* AffixMgr::lookup(const char* word, size_t len) { struct hentry* he = NULL; for (size_t i = 0; i < alldic.size() && !he; ++i) { he = alldic[i]->lookup(word, len); } return he; } // return the value of suffix int AffixMgr::have_contclass() const { return havecontclass; } // return utf8 int AffixMgr::get_utf8() const { return utf8; } int AffixMgr::get_maxngramsugs(void) const { return maxngramsugs; } int AffixMgr::get_maxcpdsugs(void) const { return maxcpdsugs; } int AffixMgr::get_maxdiff(void) const { return maxdiff; } int AffixMgr::get_onlymaxdiff(void) const { return onlymaxdiff; } // return nosplitsugs int AffixMgr::get_nosplitsugs(void) const { return nosplitsugs; } // return sugswithdots int AffixMgr::get_sugswithdots(void) const { return sugswithdots; } /* parse flag */ bool AffixMgr::parse_flag(const std::string& line, unsigned short* out, FileMgr* af) { if (*out != FLAG_NULL && !(*out >= DEFAULTFLAGS)) { HUNSPELL_WARNING( stderr, "error: line %d: multiple definitions of an affix file parameter\n", af->getlinenum()); return false; } std::string s; if (!parse_string(line, s, af->getlinenum())) return false; *out = pHMgr->decode_flag(s); return true; } /* parse num */ bool AffixMgr::parse_num(const std::string& line, int* out, FileMgr* af) { if (*out != -1) { HUNSPELL_WARNING( stderr, "error: line %d: multiple definitions of an affix file parameter\n", af->getlinenum()); return false; } std::string s; if (!parse_string(line, s, af->getlinenum())) return false; *out = atoi(s.c_str()); return true; } /* parse in the max syllablecount of compound words and */ bool AffixMgr::parse_cpdsyllable(const std::string& line, FileMgr* af) { int i = 0; int np = 0; auto iter = line.begin(), start_piece = mystrsep(line, iter); while (start_piece != line.end()) { switch (i) { case 0: { np++; break; } case 1: { cpdmaxsyllable = atoi(std::string(start_piece, iter).c_str()); np++; break; } case 2: { if (!utf8) { cpdvowels.assign(start_piece, iter); std::sort(cpdvowels.begin(), cpdvowels.end()); } else { std::string piece(start_piece, iter); u8_u16(cpdvowels_utf16, piece); std::sort(cpdvowels_utf16.begin(), cpdvowels_utf16.end()); } np++; break; } default: break; } ++i; start_piece = mystrsep(line, iter); } if (np < 2) { HUNSPELL_WARNING(stderr, "error: line %d: missing compoundsyllable information\n", af->getlinenum()); return false; } if (np == 2) cpdvowels = "AEIOUaeiou"; return true; } bool AffixMgr::parse_convtable(const std::string& line, FileMgr* af, RepList** rl, const std::string& keyword) { if (*rl) { HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum()); return false; } int i = 0; int np = 0; int numrl = 0; auto iter = line.begin(), start_piece = mystrsep(line, iter); while (start_piece != line.end()) { switch (i) { case 0: { np++; break; } case 1: { numrl = atoi(std::string(start_piece, iter).c_str()); if (numrl < 1) { HUNSPELL_WARNING(stderr, "error: line %d: incorrect entry number\n", af->getlinenum()); return false; } *rl = new RepList(numrl); if (!*rl) return false; np++; break; } default: break; } ++i; start_piece = mystrsep(line, iter); } if (np != 2) { HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum()); return false; } /* now parse the num lines to read in the remainder of the table */ for (int j = 0; j < numrl; j++) { std::string nl; if (!af->getline(nl)) return false; mychomp(nl); i = 0; std::string pattern; std::string pattern2; iter = nl.begin(); start_piece = mystrsep(nl, iter); while (start_piece != nl.end()) { { switch (i) { case 0: { if (nl.compare(start_piece - nl.begin(), keyword.size(), keyword, 0, keyword.size()) != 0) { HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); delete *rl; *rl = NULL; return false; } break; } case 1: { pattern.assign(start_piece, iter); break; } case 2: { pattern2.assign(start_piece, iter); break; } default: break; } ++i; } start_piece = mystrsep(nl, iter); } if (pattern.empty() || pattern2.empty()) { HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); return false; } (*rl)->add(pattern, pattern2); } return true; } /* parse in the typical fault correcting table */ bool AffixMgr::parse_phonetable(const std::string& line, FileMgr* af) { if (phone) { HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum()); return false; } std::unique_ptr new_phone; int num = -1; int i = 0; int np = 0; auto iter = line.begin(), start_piece = mystrsep(line, iter); while (start_piece != line.end()) { switch (i) { case 0: { np++; break; } case 1: { num = atoi(std::string(start_piece, iter).c_str()); if (num < 1) { HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n", af->getlinenum()); return false; } new_phone.reset(new phonetable); new_phone->utf8 = (char)utf8; np++; break; } default: break; } ++i; start_piece = mystrsep(line, iter); } if (np != 2) { HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum()); return false; } /* now parse the phone->num lines to read in the remainder of the table */ for (int j = 0; j < num; ++j) { std::string nl; if (!af->getline(nl)) return false; mychomp(nl); i = 0; const size_t old_size = new_phone->rules.size(); iter = nl.begin(); start_piece = mystrsep(nl, iter); while (start_piece != nl.end()) { { switch (i) { case 0: { if (nl.compare(start_piece - nl.begin(), 5, "PHONE", 5) != 0) { HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); return false; } break; } case 1: { new_phone->rules.emplace_back(start_piece, iter); break; } case 2: { new_phone->rules.emplace_back(start_piece, iter); mystrrep(new_phone->rules.back(), "_", ""); break; } default: break; } ++i; } start_piece = mystrsep(nl, iter); } if (new_phone->rules.size() != old_size + 2) { HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); return false; } } new_phone->rules.emplace_back(""); new_phone->rules.emplace_back(""); init_phonet_hash(*new_phone); phone = new_phone.release(); return true; } /* parse in the checkcompoundpattern table */ bool AffixMgr::parse_checkcpdtable(const std::string& line, FileMgr* af) { if (parsedcheckcpd) { HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum()); return false; } parsedcheckcpd = true; int numcheckcpd = -1; int i = 0; int np = 0; auto iter = line.begin(), start_piece = mystrsep(line, iter); while (start_piece != line.end()) { switch (i) { case 0: { np++; break; } case 1: { numcheckcpd = atoi(std::string(start_piece, iter).c_str()); if (numcheckcpd < 1) { HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n", af->getlinenum()); return false; } checkcpdtable.reserve(std::min(numcheckcpd, 16384)); np++; break; } default: break; } ++i; start_piece = mystrsep(line, iter); } if (np != 2) { HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum()); return false; } /* now parse the numcheckcpd lines to read in the remainder of the table */ for (int j = 0; j < numcheckcpd; ++j) { std::string nl; if (!af->getline(nl)) return false; mychomp(nl); i = 0; checkcpdtable.emplace_back(); iter = nl.begin(); start_piece = mystrsep(nl, iter); while (start_piece != nl.end()) { switch (i) { case 0: { if (nl.compare(start_piece - nl.begin(), 20, "CHECKCOMPOUNDPATTERN", 20) != 0) { HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); return false; } break; } case 1: { checkcpdtable.back().pattern.assign(start_piece, iter); size_t slash_pos = checkcpdtable.back().pattern.find('/'); if (slash_pos != std::string::npos) { std::string chunk(checkcpdtable.back().pattern, slash_pos + 1); checkcpdtable.back().pattern.resize(slash_pos); checkcpdtable.back().cond = pHMgr->decode_flag(chunk); } break; } case 2: { checkcpdtable.back().pattern2.assign(start_piece, iter); size_t slash_pos = checkcpdtable.back().pattern2.find('/'); if (slash_pos != std::string::npos) { std::string chunk(checkcpdtable.back().pattern2, slash_pos + 1); checkcpdtable.back().pattern2.resize(slash_pos); checkcpdtable.back().cond2 = pHMgr->decode_flag(chunk); } break; } case 3: { checkcpdtable.back().pattern3.assign(start_piece, iter); simplifiedcpd = 1; break; } default: break; } i++; start_piece = mystrsep(nl, iter); } } return true; } /* parse in the compound rule table */ bool AffixMgr::parse_defcpdtable(const std::string& line, FileMgr* af) { if (parseddefcpd) { HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum()); return false; } parseddefcpd = true; int numdefcpd = -1; int i = 0; int np = 0; auto iter = line.begin(), start_piece = mystrsep(line, iter); while (start_piece != line.end()) { switch (i) { case 0: { np++; break; } case 1: { numdefcpd = atoi(std::string(start_piece, iter).c_str()); if (numdefcpd < 1) { HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n", af->getlinenum()); return false; } defcpdtable.reserve(std::min(numdefcpd, 16384)); np++; break; } default: break; } ++i; start_piece = mystrsep(line, iter); } if (np != 2) { HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum()); return false; } /* now parse the numdefcpd lines to read in the remainder of the table */ for (int j = 0; j < numdefcpd; ++j) { std::string nl; if (!af->getline(nl)) return false; mychomp(nl); i = 0; defcpdtable.emplace_back(); iter = nl.begin(); start_piece = mystrsep(nl, iter); while (start_piece != nl.end()) { switch (i) { case 0: { if (nl.compare(start_piece - nl.begin(), 12, "COMPOUNDRULE", 12) != 0) { HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); numdefcpd = 0; return false; } break; } case 1: { // handle parenthesized flags if (std::find(start_piece, iter, '(') != iter) { for (auto k = start_piece; k != iter; ++k) { auto chb = k, che = k + 1; if (*k == '(') { auto parpos = std::find(k, iter, ')'); if (parpos != iter) { chb = k + 1; che = parpos; k = parpos; } } if (*chb == '*' || *chb == '?') { defcpdtable.back().push_back((FLAG)*chb); } else { pHMgr->decode_flags(defcpdtable.back(), std::string(chb, che), af); } } } else { pHMgr->decode_flags(defcpdtable.back(), std::string(start_piece, iter), af); } break; } default: break; } ++i; start_piece = mystrsep(nl, iter); } if (defcpdtable.back().empty()) { HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); return false; } } return true; } /* parse in the character map table */ bool AffixMgr::parse_maptable(const std::string& line, FileMgr* af) { if (parsedmaptable) { HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum()); return false; } parsedmaptable = true; int nummap = -1; int i = 0; int np = 0; auto iter = line.begin(), start_piece = mystrsep(line, iter); while (start_piece != line.end()) { switch (i) { case 0: { np++; break; } case 1: { nummap = atoi(std::string(start_piece, iter).c_str()); if (nummap < 1) { HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n", af->getlinenum()); return false; } maptable.reserve(std::min(nummap, 16384)); np++; break; } default: break; } ++i; start_piece = mystrsep(line, iter); } if (np != 2) { HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum()); return false; } /* now parse the nummap lines to read in the remainder of the table */ for (int j = 0; j < nummap; ++j) { std::string nl; if (!af->getline(nl)) return false; mychomp(nl); i = 0; maptable.emplace_back(); iter = nl.begin(); start_piece = mystrsep(nl, iter); while (start_piece != nl.end()) { switch (i) { case 0: { if (nl.compare(start_piece - nl.begin(), 3, "MAP", 3) != 0) { HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); nummap = 0; return false; } break; } case 1: { for (auto k = start_piece; k != iter; ++k) { auto chb = k, che = k + 1; if (*k == '(') { auto parpos = std::find(k, iter, ')'); if (parpos != iter) { chb = k + 1; che = parpos; k = parpos; } } else { if (utf8 && (*k & 0xc0) == 0xc0) { ++k; while (k != iter && (*k & 0xc0) == 0x80) ++k; che = k; --k; } } if (chb == che) { HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); } maptable.back().emplace_back(chb, che); } break; } default: break; } ++i; start_piece = mystrsep(nl, iter); } if (maptable.back().empty()) { HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); return false; } } return true; } /* parse in the word breakpoint table */ bool AffixMgr::parse_breaktable(const std::string& line, FileMgr* af) { if (parsedbreaktable) { HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum()); return false; } parsedbreaktable = true; int numbreak = -1; int i = 0; int np = 0; auto iter = line.begin(), start_piece = mystrsep(line, iter); while (start_piece != line.end()) { switch (i) { case 0: { np++; break; } case 1: { numbreak = atoi(std::string(start_piece, iter).c_str()); if (numbreak < 0) { HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n", af->getlinenum()); return false; } if (numbreak == 0) return true; breaktable.reserve(std::min(numbreak, 16384)); np++; break; } default: break; } ++i; start_piece = mystrsep(line, iter); } if (np != 2) { HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum()); return false; } /* now parse the numbreak lines to read in the remainder of the table */ for (int j = 0; j < numbreak; ++j) { std::string nl; if (!af->getline(nl)) return false; mychomp(nl); i = 0; iter = nl.begin(); start_piece = mystrsep(nl, iter); while (start_piece != nl.end()) { switch (i) { case 0: { if (nl.compare(start_piece - nl.begin(), 5, "BREAK", 5) != 0) { HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); numbreak = 0; return false; } break; } case 1: { breaktable.emplace_back(start_piece, iter); break; } default: break; } ++i; start_piece = mystrsep(nl, iter); } } if (breaktable.size() != static_cast(numbreak)) { HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); return false; } return true; } void AffixMgr::reverse_condition(std::string& piece) { if (piece.empty()) return; int neg = 0; for (auto k = piece.rbegin(); k != piece.rend(); ++k) { switch (*k) { case '[': { if (neg) *(k - 1) = '['; else *k = ']'; break; } case ']': { *k = '['; if (neg) *(k - 1) = '^'; neg = 0; break; } case '^': { if (*(k - 1) == ']') neg = 1; else if (neg) *(k - 1) = *k; break; } default: { if (neg) *(k - 1) = *k; } } } } class entries_container { std::vector entries; AffixMgr* m_mgr; char m_at; public: entries_container(char at, AffixMgr* mgr) : m_mgr(mgr) , m_at(at) { } void release() { entries.clear(); } void initialize(int numents, char opts, unsigned short aflag) { entries.reserve(std::min(numents, 16384)); if (m_at == 'P') { entries.push_back(new PfxEntry(m_mgr)); } else { entries.push_back(new SfxEntry(m_mgr)); } entries.back()->opts = opts; entries.back()->aflag = aflag; } AffEntry* add_entry(char opts) { if (m_at == 'P') { entries.push_back(new PfxEntry(m_mgr)); } else { entries.push_back(new SfxEntry(m_mgr)); } AffEntry* ret = entries.back(); ret->opts = entries[0]->opts & opts; return ret; } AffEntry* first_entry() { return entries.empty() ? NULL : entries[0]; } ~entries_container() { for (auto& entry : entries) { delete entry; } } std::vector::iterator begin() { return entries.begin(); } std::vector::iterator end() { return entries.end(); } }; bool AffixMgr::parse_affix(const std::string& line, const char at, FileMgr* af, char* dupflags) { int numents = 0; // number of AffEntry structures to parse unsigned short aflag = 0; // affix char identifier char ff = 0; entries_container affentries(at, this); int i = 0; // checking lines with bad syntax #ifdef DEBUG int basefieldnum = 0; #endif // split affix header line into pieces int np = 0; auto iter = line.begin(), start_piece = mystrsep(line, iter); while (start_piece != line.end()) { switch (i) { // piece 1 - is type of affix case 0: { np++; break; } // piece 2 - is affix char case 1: { np++; aflag = pHMgr->decode_flag(std::string(start_piece, iter)); if (((at == 'S') && (dupflags[aflag] & dupSFX)) || ((at == 'P') && (dupflags[aflag] & dupPFX))) { HUNSPELL_WARNING( stderr, "error: line %d: multiple definitions of an affix flag\n", af->getlinenum()); } dupflags[aflag] += (char)((at == 'S') ? dupSFX : dupPFX); break; } // piece 3 - is cross product indicator case 2: { np++; if (*start_piece == 'Y') ff = aeXPRODUCT; break; } // piece 4 - is number of affentries case 3: { np++; numents = atoi(std::string(start_piece, iter).c_str()); if ((numents <= 0) || ((std::numeric_limits::max() / sizeof(AffEntry)) < static_cast(numents))) { std::string err = pHMgr->encode_flag(aflag); HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n", af->getlinenum()); return false; } char opts = ff; if (utf8) opts |= aeUTF8; if (pHMgr->is_aliasf()) opts |= aeALIASF; if (pHMgr->is_aliasm()) opts |= aeALIASM; affentries.initialize(numents, opts, aflag); } default: break; } ++i; start_piece = mystrsep(line, iter); } // check to make sure we parsed enough pieces if (np != 4) { std::string err = pHMgr->encode_flag(aflag); HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum()); return false; } // now parse numents affentries for this affix AffEntry* entry = affentries.first_entry(); for (int ent = 0; ent < numents; ++ent) { std::string nl; if (!af->getline(nl)) return false; mychomp(nl); iter = nl.begin(); i = 0; np = 0; // split line into pieces start_piece = mystrsep(nl, iter); while (start_piece != nl.end()) { switch (i) { // piece 1 - is type case 0: { np++; if (ent != 0) entry = affentries.add_entry((char)(aeXPRODUCT | aeUTF8 | aeALIASF | aeALIASM)); break; } // piece 2 - is affix char case 1: { np++; std::string chunk(start_piece, iter); if (pHMgr->decode_flag(chunk) != aflag) { std::string err = pHMgr->encode_flag(aflag); HUNSPELL_WARNING(stderr, "error: line %d: affix %s is corrupt\n", af->getlinenum(), err.c_str()); return false; } if (ent != 0) { AffEntry* start_entry = affentries.first_entry(); entry->aflag = start_entry->aflag; } break; } // piece 3 - is string to strip or 0 for null case 2: { np++; entry->strip = std::string(start_piece, iter); if (complexprefixes) { if (utf8) reverseword_utf(entry->strip); else reverseword(entry->strip); } if (entry->strip.compare("0") == 0) { entry->strip.clear(); } break; } // piece 4 - is affix string or 0 for null case 3: { entry->morphcode = NULL; entry->contclass = NULL; entry->contclasslen = 0; np++; std::string::const_iterator dash = std::find(start_piece, iter, '/'); if (dash != iter) { entry->appnd = std::string(start_piece, dash); std::string dash_str(dash + 1, iter); if (!ignorechars.empty() && !has_no_ignored_chars(entry->appnd, ignorechars)) { if (utf8) { remove_ignored_chars_utf(entry->appnd, ignorechars_utf16); } else { remove_ignored_chars(entry->appnd, ignorechars); } } if (complexprefixes) { if (utf8) reverseword_utf(entry->appnd); else reverseword(entry->appnd); } if (pHMgr->is_aliasf()) { int index = atoi(dash_str.c_str()); entry->contclasslen = (unsigned short)pHMgr->get_aliasf( index, &(entry->contclass), af); if (!entry->contclasslen) HUNSPELL_WARNING(stderr, "error: bad affix flag alias: \"%s\"\n", dash_str.c_str()); } else { entry->contclasslen = (unsigned short)pHMgr->decode_flags( &(entry->contclass), dash_str, af); std::sort(entry->contclass, entry->contclass + entry->contclasslen); } havecontclass = 1; for (unsigned short _i = 0; _i < entry->contclasslen; _i++) { contclasses[(entry->contclass)[_i]] = 1; } } else { entry->appnd = std::string(start_piece, iter); if (!ignorechars.empty() && !has_no_ignored_chars(entry->appnd, ignorechars)) { if (utf8) { remove_ignored_chars_utf(entry->appnd, ignorechars_utf16); } else { remove_ignored_chars(entry->appnd, ignorechars); } } if (complexprefixes) { if (utf8) reverseword_utf(entry->appnd); else reverseword(entry->appnd); } } if (entry->appnd.compare("0") == 0) { entry->appnd.clear(); } break; } // piece 5 - is the conditions descriptions case 4: { std::string chunk(start_piece, iter); np++; if (complexprefixes) { if (utf8) reverseword_utf(chunk); else reverseword(chunk); reverse_condition(chunk); } if (!entry->strip.empty() && chunk != "." && redundant_condition(at, entry->strip, chunk, af->getlinenum())) chunk = "."; if (at == 'S') { reverseword(chunk); reverse_condition(chunk); } if (encodeit(*entry, chunk)) return false; break; } case 5: { std::string chunk(start_piece, iter); np++; if (pHMgr->is_aliasm()) { int index = atoi(chunk.c_str()); entry->morphcode = pHMgr->get_aliasm(index); } else { if (complexprefixes) { // XXX - fix me for morph. gen. if (utf8) reverseword_utf(chunk); else reverseword(chunk); } // add the remaining of the line std::string::const_iterator end = nl.end(); if (iter != end) { chunk.append(iter, end); } entry->morphcode = mystrdup(chunk.c_str()); } break; } default: break; } i++; start_piece = mystrsep(nl, iter); } // check to make sure we parsed enough pieces if (np < 4) { std::string err = pHMgr->encode_flag(aflag); HUNSPELL_WARNING(stderr, "error: line %d: affix %s is corrupt\n", af->getlinenum(), err.c_str()); return false; } #ifdef DEBUG // detect unnecessary fields, excepting comments if (basefieldnum) { int fieldnum = !(entry->morphcode) ? 5 : ((*(entry->morphcode) == '#') ? 5 : 6); if (fieldnum != basefieldnum) HUNSPELL_WARNING(stderr, "warning: line %d: bad field number\n", af->getlinenum()); } else { basefieldnum = !(entry->morphcode) ? 5 : ((*(entry->morphcode) == '#') ? 5 : 6); } #endif } // now create SfxEntry or PfxEntry objects and use links to // build an ordered (sorted by affix string) list auto start = affentries.begin(), end = affentries.end(); for (auto affentry = start; affentry != end; ++affentry) { if (at == 'P') { build_pfxtree(dynamic_cast(*affentry)); } else { build_sfxtree(dynamic_cast(*affentry)); } } //contents belong to AffixMgr now affentries.release(); return true; } int AffixMgr::redundant_condition(char ft, const std::string& strip, const std::string& cond, int linenum) { int stripl = strip.size(), condl = cond.size(), i, j, neg, in; if (ft == 'P') { // prefix if (strip.compare(0, condl, cond) == 0) return 1; if (utf8) { } else { for (i = 0, j = 0; (i < stripl) && (j < condl); i++, j++) { if (cond[j] != '[') { if (cond[j] != strip[i]) { HUNSPELL_WARNING(stderr, "warning: line %d: incompatible stripping " "characters and condition\n", linenum); return 0; } } else { neg = (cond[j + 1] == '^') ? 1 : 0; in = 0; do { j++; if (strip[i] == cond[j]) in = 1; } while ((j < (condl - 1)) && (cond[j] != ']')); if (j == (condl - 1) && (cond[j] != ']')) { HUNSPELL_WARNING(stderr, "error: line %d: missing ] in condition:\n%s\n", linenum, cond.c_str()); return 0; } if ((!neg && !in) || (neg && in)) { HUNSPELL_WARNING(stderr, "warning: line %d: incompatible stripping " "characters and condition\n", linenum); return 0; } } } if (j >= condl) return 1; } } else { // suffix if ((stripl >= condl) && strip.compare(stripl - condl, std::string::npos, cond) == 0) return 1; if (utf8) { } else { for (i = stripl - 1, j = condl - 1; (i >= 0) && (j >= 0); i--, j--) { if (cond[j] != ']') { if (cond[j] != strip[i]) { HUNSPELL_WARNING(stderr, "warning: line %d: incompatible stripping " "characters and condition\n", linenum); return 0; } } else if (j > 0) { in = 0; do { j--; if (strip[i] == cond[j]) in = 1; } while ((j > 0) && (cond[j] != '[')); if ((j == 0) && (cond[j] != '[')) { HUNSPELL_WARNING(stderr, "error: line: %d: missing ] in condition:\n%s\n", linenum, cond.c_str()); return 0; } neg = (cond[j + 1] == '^') ? 1 : 0; if ((!neg && !in) || (neg && in)) { HUNSPELL_WARNING(stderr, "warning: line %d: incompatible stripping " "characters and condition\n", linenum); return 0; } } } if (j < 0) return 1; } } return 0; } std::vector AffixMgr::get_suffix_words(short unsigned* suff, int len, const std::string& root_word) { std::vector slst; short unsigned* start_ptr = suff; for (auto ptr : sStart) { while (ptr) { suff = start_ptr; for (int i = 0; i < len; i++) { if ((*suff) == ptr->getFlag()) { std::string nw(root_word); nw.append(ptr->getAffix()); hentry* ht = ptr->checkword(nw, 0, nw.size(), 0, NULL, 0, 0, 0); if (ht) { slst.push_back(nw); } } suff++; } ptr = ptr->getNext(); } } return slst; } hunspell-1.7.2/src/hunspell/hunspell.h0000664000175000017500000001616714352160534014740 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is Hunspell, based on MySpell. * * The Initial Developers of the Original Code are * Kevin Hendricks (MySpell) and Németh László (Hunspell). * Portions created by the Initial Developers are Copyright (C) 2002-2005 * the Initial Developers. All Rights Reserved. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #ifndef MYSPELLMGR_H_ #define MYSPELLMGR_H_ #include "hunvisapi.h" #ifdef __cplusplus extern "C" { #endif typedef struct Hunhandle Hunhandle; LIBHUNSPELL_DLL_EXPORTED Hunhandle* Hunspell_create(const char* affpath, const char* dpath); LIBHUNSPELL_DLL_EXPORTED Hunhandle* Hunspell_create_key(const char* affpath, const char* dpath, const char* key); LIBHUNSPELL_DLL_EXPORTED void Hunspell_destroy(Hunhandle* pHunspell); /* load extra dictionaries (only dic files) * output: 0 = additional dictionary slots available, 1 = slots are now full*/ LIBHUNSPELL_DLL_EXPORTED int Hunspell_add_dic(Hunhandle* pHunspell, const char* dpath); /* spell(word) - spellcheck word * output: 0 = bad word, not 0 = good word */ LIBHUNSPELL_DLL_EXPORTED int Hunspell_spell(Hunhandle* pHunspell, const char*); LIBHUNSPELL_DLL_EXPORTED char* Hunspell_get_dic_encoding(Hunhandle* pHunspell); /* suggest(suggestions, word) - search suggestions * input: pointer to an array of strings pointer and the (bad) word * array of strings pointer (here *slst) may not be initialized * output: number of suggestions in string array, and suggestions in * a newly allocated array of strings (*slts will be NULL when number * of suggestion equals 0.) */ LIBHUNSPELL_DLL_EXPORTED int Hunspell_suggest(Hunhandle* pHunspell, char*** slst, const char* word); /* Suggest words from suffix rules * suffix_suggest(suggestions, root_word) * input: pointer to an array of strings pointer and the word * array of strings pointer (here *slst) may not be initialized * output: number of suggestions in string array, and suggestions in * a newly allocated array of strings (*slts will be NULL when number * of suggestion equals 0.) */ LIBHUNSPELL_DLL_EXPORTED int Hunspell_suffix_suggest(Hunhandle* pHunspell, char*** slst, const char* word); /* morphological functions */ /* analyze(result, word) - morphological analysis of the word */ LIBHUNSPELL_DLL_EXPORTED int Hunspell_analyze(Hunhandle* pHunspell, char*** slst, const char* word); /* stem(result, word) - stemmer function */ LIBHUNSPELL_DLL_EXPORTED int Hunspell_stem(Hunhandle* pHunspell, char*** slst, const char* word); /* stem(result, analysis, n) - get stems from a morph. analysis * example: * char ** result, result2; * int n1 = Hunspell_analyze(result, "words"); * int n2 = Hunspell_stem2(result2, result, n1); */ LIBHUNSPELL_DLL_EXPORTED int Hunspell_stem2(Hunhandle* pHunspell, char*** slst, char** desc, int n); /* generate(result, word, word2) - morphological generation by example(s) */ LIBHUNSPELL_DLL_EXPORTED int Hunspell_generate(Hunhandle* pHunspell, char*** slst, const char* word, const char* word2); /* generate(result, word, desc, n) - generation by morph. description(s) * example: * char ** result; * char * affix = "is:plural"; // description depends from dictionaries, too * int n = Hunspell_generate2(result, "word", &affix, 1); * for (int i = 0; i < n; i++) printf("%s\n", result[i]); */ LIBHUNSPELL_DLL_EXPORTED int Hunspell_generate2(Hunhandle* pHunspell, char*** slst, const char* word, char** desc, int n); /* functions for run-time modification of the dictionary */ /* add word to the run-time dictionary */ LIBHUNSPELL_DLL_EXPORTED int Hunspell_add(Hunhandle* pHunspell, const char* word); /* add word to the run-time dictionary with affix flags of * the example (a dictionary word): Hunspell will recognize * affixed forms of the new word, too. */ LIBHUNSPELL_DLL_EXPORTED int Hunspell_add_with_affix(Hunhandle* pHunspell, const char* word, const char* example); /* remove word from the run-time dictionary */ LIBHUNSPELL_DLL_EXPORTED int Hunspell_remove(Hunhandle* pHunspell, const char* word); /* free suggestion lists */ LIBHUNSPELL_DLL_EXPORTED void Hunspell_free_list(Hunhandle* pHunspell, char*** slst, int n); #ifdef __cplusplus } #endif #endif hunspell-1.7.2/src/hunspell/hunzip.cxx0000664000175000017500000001525514352160534014773 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include #include #include #include "hunzip.hxx" #include "csutil.hxx" #define CODELEN 65536 #define BASEBITREC 5000 #define UNCOMPRESSED '\002' #define MAGIC "hz0" #define MAGIC_ENCRYPT "hz1" #define MAGICLEN (sizeof(MAGIC) - 1) int Hunzip::fail(const char* err, const std::string& par) { fprintf(stderr, err, par.c_str()); return -1; } Hunzip::Hunzip(const char* file, const char* key) : bufsiz(0), lastbit(0), inc(0), inbits(0), outc(0) { in[0] = out[0] = line[0] = '\0'; filename = file; if (getcode(key) == -1) bufsiz = -1; else bufsiz = getbuf(); } int Hunzip::getcode(const char* key) { unsigned char c[2]; int i, j, n, allocatedbit = BASEBITREC; const char* enc = key; if (filename.empty()) return -1; myopen(fin, filename.c_str(), std::ios_base::in | std::ios_base::binary); if (!fin.is_open()) return -1; // read magic number if (!fin.read(in, 3) || !(strncmp(MAGIC, in, MAGICLEN) == 0 || strncmp(MAGIC_ENCRYPT, in, MAGICLEN) == 0)) { return fail(MSG_FORMAT, filename); } // check encryption if (strncmp(MAGIC_ENCRYPT, in, MAGICLEN) == 0) { unsigned char cs; if (!key) return fail(MSG_KEY, filename); if (!fin.read(reinterpret_cast(c), 1)) return fail(MSG_FORMAT, filename); for (cs = 0; *enc; enc++) cs ^= *enc; if (cs != c[0]) return fail(MSG_KEY, filename); enc = key; } else key = NULL; // read record count if (!fin.read(reinterpret_cast(c), 2)) return fail(MSG_FORMAT, filename); if (key) { c[0] ^= *enc; if (*(++enc) == '\0') enc = key; c[1] ^= *enc; } n = ((int)c[0] << 8) + c[1]; dec.resize(BASEBITREC); dec[0].v[0] = 0; dec[0].v[1] = 0; // read codes for (i = 0; i < n; i++) { unsigned char l; if (!fin.read(reinterpret_cast(c), 2)) return fail(MSG_FORMAT, filename); if (key) { if (*(++enc) == '\0') enc = key; c[0] ^= *enc; if (*(++enc) == '\0') enc = key; c[1] ^= *enc; } if (!fin.read(reinterpret_cast(&l), 1)) return fail(MSG_FORMAT, filename); if (key) { if (*(++enc) == '\0') enc = key; l ^= *enc; } if (!fin.read(in, (l >> 3) + 1)) return fail(MSG_FORMAT, filename); if (key) for (j = 0; j <= (l >> 3); j++) { if (*(++enc) == '\0') enc = key; in[j] ^= *enc; } int p = 0; for (j = 0; j < l; j++) { int b = (in[(j >> 3)] & (1 << (7 - (j & 7)))) ? 1 : 0; int oldp = p; p = dec[p].v[b]; if (p == 0) { lastbit++; if (lastbit == allocatedbit) { allocatedbit += BASEBITREC; dec.resize(allocatedbit); } dec[lastbit].v[0] = 0; dec[lastbit].v[1] = 0; dec[oldp].v[b] = lastbit; p = lastbit; } } dec[p].c[0] = c[0]; dec[p].c[1] = c[1]; } return 0; } Hunzip::~Hunzip() { } int Hunzip::getbuf() { int p = 0; int o = 0; do { if (inc == 0) { fin.read(in, BUFSIZE); inbits = int(fin.gcount() << 3); } for (; inc < inbits; inc++) { int b = (in[inc >> 3] & (1 << (7 - (inc & 7)))) ? 1 : 0; int oldp = p; p = dec[p].v[b]; if (p == 0) { if (oldp == lastbit) { fin.close(); // add last odd byte if (dec[lastbit].c[0]) out[o++] = dec[lastbit].c[1]; return o; } out[o++] = dec[oldp].c[0]; out[o++] = dec[oldp].c[1]; if (o == BUFSIZE) return o; p = dec[p].v[b]; } } inc = 0; } while (inbits == BUFSIZE * 8); return fail(MSG_FORMAT, filename); } bool Hunzip::getline(std::string& dest) { char linebuf[BUFSIZE]; int l = 0, eol = 0, left = 0, right = 0; if (bufsiz == -1) return false; while (l < bufsiz && !eol) { linebuf[l++] = out[outc]; switch (out[outc]) { case '\t': break; case 31: { // escape if (++outc == bufsiz) { bufsiz = getbuf(); outc = 0; } linebuf[l - 1] = out[outc]; break; } case ' ': break; default: if (((unsigned char)out[outc]) < 47) { if (out[outc] > 32) { right = out[outc] - 31; if (++outc == bufsiz) { bufsiz = getbuf(); outc = 0; } } if (out[outc] == 30) left = 9; else left = out[outc]; linebuf[l - 1] = '\n'; eol = 1; } } if (++outc == bufsiz) { outc = 0; bufsiz = fin.is_open() ? getbuf() : -1; } } if (right) strcpy(linebuf + l - 1, line + strlen(line) - right - 1); else linebuf[l] = '\0'; strcpy(line + left, linebuf); dest.assign(line); return true; } hunspell-1.7.2/src/hunspell/csutil.cxx0000664000175000017500000037523114352160534014764 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /* * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada * And Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. All modifications to the source code must be clearly marked as * such. Binary redistributions based on modified source code * must be clearly marked as modified versions in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include #include #include #include #include #include #include #if __cplusplus >= 202002L #include #endif #include "csutil.hxx" #include "atypes.hxx" #include "langnum.hxx" #ifdef _WIN32 #include #include #endif #ifdef OPENOFFICEORG #include #else #ifndef MOZILLA_CLIENT #include "utf_info.hxx" #endif #endif #ifdef MOZILLA_CLIENT #include "nsCOMPtr.h" #include "nsUnicharUtils.h" #include "mozilla/Encoding.h" using namespace mozilla; #endif void myopen(std::ifstream& stream, const char* path, std::ios_base::openmode mode) { #if defined(_WIN32) && defined(_MSC_VER) #define WIN32_LONG_PATH_PREFIX "\\\\?\\" if (strncmp(path, WIN32_LONG_PATH_PREFIX, 4) == 0) { int len = MultiByteToWideChar(CP_UTF8, 0, path, -1, NULL, 0); wchar_t* buff = new wchar_t[len]; wchar_t* buff2 = new wchar_t[len]; MultiByteToWideChar(CP_UTF8, 0, path, -1, buff, len); if (_wfullpath(buff2, buff, len) != NULL) { stream.open(buff2, mode); } delete [] buff; delete [] buff2; } else #endif stream.open(path, mode); } std::string& u16_u8(std::string& dest, const std::vector& src) { dest.clear(); dest.reserve(src.size()); auto u2 = src.begin(), u2_max = src.end(); while (u2 < u2_max) { signed char u8; if (u2->h) { // > 0xFF // XXX 4-byte haven't implemented yet. if (u2->h >= 0x08) { // >= 0x800 (3-byte UTF-8 character) u8 = 0xe0 + (u2->h >> 4); dest.push_back(u8); u8 = 0x80 + ((u2->h & 0xf) << 2) + (u2->l >> 6); dest.push_back(u8); u8 = 0x80 + (u2->l & 0x3f); dest.push_back(u8); } else { // < 0x800 (2-byte UTF-8 character) u8 = 0xc0 + (u2->h << 2) + (u2->l >> 6); dest.push_back(u8); u8 = 0x80 + (u2->l & 0x3f); dest.push_back(u8); } } else { // <= 0xFF if (u2->l & 0x80) { // >0x80 (2-byte UTF-8 character) u8 = 0xc0 + (u2->l >> 6); dest.push_back(u8); u8 = 0x80 + (u2->l & 0x3f); dest.push_back(u8); } else { // < 0x80 (1-byte UTF-8 character) u8 = u2->l; dest.push_back(u8); } } ++u2; } return dest; } int u8_u16(std::vector& dest, const std::string& src, bool only_convert_first_letter) { // faster to oversize initially, assign to elements and resize to what's used // than to reserve and push_back dest.resize(only_convert_first_letter ? 1 : src.size()); auto u16 = dest.begin(); auto u8 = src.begin(), u8_max = src.end(); while (u8 < u8_max) { w_char u2; switch ((*u8) & 0xf0) { case 0x00: case 0x10: case 0x20: case 0x30: case 0x40: case 0x50: case 0x60: case 0x70: { u2.h = 0; u2.l = *u8; break; } case 0x80: case 0x90: case 0xa0: case 0xb0: { HUNSPELL_WARNING(stderr, "UTF-8 encoding error. Unexpected continuation bytes " "in %ld. character position\n%s\n", static_cast(std::distance(src.begin(), u8)), src.c_str()); u2.h = 0xff; u2.l = 0xfd; break; } case 0xc0: case 0xd0: { // 2-byte UTF-8 codes if ((*(u8 + 1) & 0xc0) == 0x80) { u2.h = (*u8 & 0x1f) >> 2; u2.l = (static_cast(*u8) << 6) + (*(u8 + 1) & 0x3f); ++u8; } else { HUNSPELL_WARNING(stderr, "UTF-8 encoding error. Missing continuation byte in " "%ld. character position:\n%s\n", static_cast(std::distance(src.begin(), u8)), src.c_str()); u2.h = 0xff; u2.l = 0xfd; } break; } case 0xe0: { // 3-byte UTF-8 codes if ((*(u8 + 1) & 0xc0) == 0x80) { u2.h = ((*u8 & 0x0f) << 4) + ((*(u8 + 1) & 0x3f) >> 2); ++u8; if ((*(u8 + 1) & 0xc0) == 0x80) { u2.l = (static_cast(*u8) << 6) + (*(u8 + 1) & 0x3f); ++u8; } else { HUNSPELL_WARNING(stderr, "UTF-8 encoding error. Missing continuation byte " "in %ld. character position:\n%s\n", static_cast(std::distance(src.begin(), u8)), src.c_str()); u2.h = 0xff; u2.l = 0xfd; } } else { HUNSPELL_WARNING(stderr, "UTF-8 encoding error. Missing continuation byte in " "%ld. character position:\n%s\n", static_cast(std::distance(src.begin(), u8)), src.c_str()); u2.h = 0xff; u2.l = 0xfd; } break; } default: { // 4 or more byte UTF-8 codes assert(((*u8) & 0xf0) == 0xf0 && "can only be 0xf0"); HUNSPELL_WARNING(stderr, "This UTF-8 encoding can't convert to UTF-16:\n%s\n", src.c_str()); u2.h = 0xff; u2.l = 0xfd; *u16++ = u2; dest.resize(u16 - dest.begin()); return -1; } } *u16++ = u2; if (only_convert_first_letter) break; ++u8; } int size = u16 - dest.begin(); dest.resize(size); return size; } namespace { class is_any_of { public: explicit is_any_of(const std::string& in) : chars(in) {} bool operator()(char c) const { return chars.find(c) != std::string::npos; } private: std::string chars; }; } std::string::const_iterator mystrsep(const std::string &str, std::string::const_iterator& start) { auto end = str.end(); is_any_of op(" \t"); // don't use isspace() here, the string can be in some random charset // that's way different than the locale's auto sp = start; while (sp != end && op(*sp)) ++sp; auto dp = sp; while (dp != end && !op(*dp)) ++dp; start = dp; return sp; } // remove cross-platform text line end characters void mychomp(std::string& s) { size_t k = s.size(); size_t newsize = k; if ((k > 0) && ((s[k - 1] == '\r') || (s[k - 1] == '\n'))) --newsize; if ((k > 1) && (s[k - 2] == '\r')) --newsize; s.resize(newsize); } // break text to lines std::vector line_tok(const std::string& text, char breakchar) { std::vector ret; if (text.empty()) { return ret; } std::stringstream ss(text); std::string tok; while(std::getline(ss, tok, breakchar)) { if (!tok.empty()) { ret.push_back(tok); } } return ret; } // uniq line in place void line_uniq(std::string& text, char breakchar) { std::vector lines = line_tok(text, breakchar); text.clear(); if (lines.empty()) { return; } text = lines[0]; for (size_t i = 1; i < lines.size(); ++i) { bool dup = false; for (size_t j = 0; j < i; ++j) { if (lines[i] == lines[j]) { dup = true; break; } } if (!dup) { if (!text.empty()) text.push_back(breakchar); text.append(lines[i]); } } } // uniq and boundary for compound analysis: "1\n\2\n\1" -> " ( \1 | \2 ) " void line_uniq_app(std::string& text, char breakchar) { if (text.find(breakchar) == std::string::npos) { return; } std::vector lines = line_tok(text, breakchar); text.clear(); if (lines.empty()) { return; } text = lines[0]; for (size_t i = 1; i < lines.size(); ++i) { bool dup = false; for (size_t j = 0; j < i; ++j) { if (lines[i] == lines[j]) { dup = true; break; } } if (!dup) { if (!text.empty()) text.push_back(breakchar); text.append(lines[i]); } } if (lines.size() == 1) { text = lines[0]; return; } text.assign(" ( "); for (auto& line : lines) { text.append(line); text.append(" | "); } text[text.size() - 2] = ')'; // " ) " } // append s to ends of every lines in text std::string& strlinecat(std::string& str, const std::string& apd) { size_t pos = 0; while ((pos = str.find('\n', pos)) != std::string::npos) { str.insert(pos, apd); pos += apd.length() + 1; } str.append(apd); return str; } int fieldlen(const char* r) { int n = 0; while (r && *r != ' ' && *r != '\t' && *r != '\0' && *r != '\n') { r++; n++; } return n; } bool copy_field(std::string& dest, const std::string& morph, const std::string& var) { if (morph.empty()) return false; size_t pos = morph.find(var); if (pos == std::string::npos) return false; dest.clear(); std::string beg(morph.substr(pos + MORPH_TAG_LEN, std::string::npos)); for (const char c : beg) { if (c == ' ' || c == '\t' || c == '\n') break; dest.push_back(c); } return true; } std::string& mystrrep(std::string& str, const std::string& search, const std::string& replace) { size_t pos = 0; while ((pos = str.find(search, pos)) != std::string::npos) { str.replace(pos, search.length(), replace); pos += replace.length(); } return str; } // reverse word size_t reverseword(std::string& word) { std::reverse(word.begin(), word.end()); return word.size(); } // reverse word size_t reverseword_utf(std::string& word) { std::reverse(word.begin(), word.end()); //1st step: we reverse the string size_t num_chars = word.size(); //in order to make sure there are enough characters at the end of the string when we process a multibyte character //2nd step: we process each multibyte character and reverse it for (auto it = word.rbegin(); it != word.rend(); ) { switch ((*it) & 0xf0) { case 0x00: case 0x10: case 0x20: case 0x30: case 0x40: case 0x50: case 0x60: case 0x70: //one byte ++it; --num_chars; break; case 0x80: case 0x90: case 0xa0: case 0xb0: HUNSPELL_WARNING(stderr, "UTF-8 encoding error. Unexpected continuation bytes " "in %ld. character position\n%s\n", static_cast(std::distance(word.begin(), it.base()) - 1), word.c_str()); ++it; --num_chars; break; case 0xc0: case 0xd0: { //two bytes if (num_chars >= 2) { std::iter_swap(it, it + 1); it += 2; num_chars -= 2; } else { HUNSPELL_WARNING(stderr, "UTF-8 encoding error. Missing character at the end\n%s\n", word.c_str()); ++it; --num_chars; } break; } case 0xe0: { //three bytes if (num_chars >= 3) { std::iter_swap(it, it + 2); it += 3; num_chars -= 3; } else { HUNSPELL_WARNING(stderr, "UTF-8 encoding error. Missing character at the end\n%s\n", word.c_str()); ++it; --num_chars; } break; } default: { // 4 or more byte UTF-8 codes if (num_chars >= 4) { std::iter_swap(it, it + 3); std::iter_swap(it + 1, it + 2); it += 4; num_chars -= 4; } else { HUNSPELL_WARNING(stderr, "UTF-8 encoding error. Missing character at the end\n%s\n", word.c_str()); ++it; --num_chars; } break; } } } return word.size(); } void uniqlist(std::vector& list) { if (list.size() < 2) return; std::vector ret; ret.push_back(list[0]); for (size_t i = 1; i < list.size(); ++i) { if (std::find(ret.begin(), ret.end(), list[i]) == ret.end()) ret.push_back(list[i]); } list.swap(ret); } namespace { unsigned char cupper(const struct cs_info* csconv, int nIndex) { assert(nIndex >= 0 && nIndex <= 255); return csconv[nIndex].cupper; } unsigned char clower(const struct cs_info* csconv, int nIndex) { assert(nIndex >= 0 && nIndex <= 255); return csconv[nIndex].clower; } unsigned char ccase(const struct cs_info* csconv, int nIndex) { assert(nIndex >= 0 && nIndex <= 255); return csconv[nIndex].ccase; } } w_char upper_utf(w_char u, int langnum) { #if defined(__i386__) || defined(_M_IX86) || defined(_M_X64) //with these optimizations, msvc can optimize this function to one jmp instruction //but g++ remains in five instructions //maybe use inline asm for g++? #if __cplusplus >= 202002L return std::bit_cast(unicodetoupper((unsigned short)u, langnum)); #else const auto us = unicodetoupper((unsigned short)u, langnum); memcpy(&u, &us, sizeof(unsigned short)); return u; #endif #else const auto us = unicodetoupper((unsigned short)u, langnum); u.h = (unsigned char)(us >> 8); u.l = (unsigned char)(us & 0xff); return u; #endif } w_char lower_utf(w_char u, int langnum) { #if defined(__i386__) || defined(_M_IX86) || defined(_M_X64) //with these optimizations, msvc can optimize this function to one jmp instruction //but g++ remains in five instructions //maybe use inline asm for g++? #if __cplusplus >= 202002L return std::bit_cast(unicodetolower((unsigned short)u, langnum)); #else const auto us = unicodetolower((unsigned short)u, langnum); memcpy(&u, &us, sizeof(unsigned short)); return u; #endif #else const auto us = unicodetolower((unsigned short)u, langnum); u.h = (unsigned char)(us >> 8); u.l = (unsigned char)(us & 0xff); return u; #endif } // convert std::string to all caps std::string& mkallcap(std::string& s, const struct cs_info* csconv) { for (char& aI : s) { aI = cupper(csconv, static_cast(aI)); } return s; } // convert std::string to all little std::string& mkallsmall(std::string& s, const struct cs_info* csconv) { for (char& aI : s) { aI = clower(csconv, static_cast(aI)); } return s; } std::vector& mkallsmall_utf(std::vector& u, int langnum) { for (auto& i : u) { i = lower_utf(i, langnum); } return u; } std::vector& mkallcap_utf(std::vector& u, int langnum) { for (auto& i : u) { i = upper_utf(i, langnum); } return u; } std::string& mkinitcap(std::string& s, const struct cs_info* csconv) { if (!s.empty()) { s[0] = cupper(csconv, static_cast(s[0])); } return s; } std::vector& mkinitcap_utf(std::vector& u, int langnum) { if (!u.empty()) { u[0] = upper_utf(u[0], langnum); } return u; } std::string& mkinitsmall(std::string& s, const struct cs_info* csconv) { if (!s.empty()) { s[0] = clower(csconv, static_cast(s[0])); } return s; } std::vector& mkinitsmall_utf(std::vector& u, int langnum) { if (!u.empty()) { u[0] = lower_utf(u[0], langnum); } return u; } // conversion function for protected memory void store_pointer(char* dest, char* source) { memcpy(dest, &source, sizeof(char*)); } // conversion function for protected memory char* get_stored_pointer(const char* s) { char* p; memcpy(&p, s, sizeof(char*)); return p; } #ifndef MOZILLA_CLIENT // these are simple character mappings for the // encodings supported // supplying isupper, tolower, and toupper static struct cs_info iso1_tbl[] = { {0x00, 0x00, 0x00}, {0x00, 0x01, 0x01}, {0x00, 0x02, 0x02}, {0x00, 0x03, 0x03}, {0x00, 0x04, 0x04}, {0x00, 0x05, 0x05}, {0x00, 0x06, 0x06}, {0x00, 0x07, 0x07}, {0x00, 0x08, 0x08}, {0x00, 0x09, 0x09}, {0x00, 0x0a, 0x0a}, {0x00, 0x0b, 0x0b}, {0x00, 0x0c, 0x0c}, {0x00, 0x0d, 0x0d}, {0x00, 0x0e, 0x0e}, {0x00, 0x0f, 0x0f}, {0x00, 0x10, 0x10}, {0x00, 0x11, 0x11}, {0x00, 0x12, 0x12}, {0x00, 0x13, 0x13}, {0x00, 0x14, 0x14}, {0x00, 0x15, 0x15}, {0x00, 0x16, 0x16}, {0x00, 0x17, 0x17}, {0x00, 0x18, 0x18}, {0x00, 0x19, 0x19}, {0x00, 0x1a, 0x1a}, {0x00, 0x1b, 0x1b}, {0x00, 0x1c, 0x1c}, {0x00, 0x1d, 0x1d}, {0x00, 0x1e, 0x1e}, {0x00, 0x1f, 0x1f}, {0x00, 0x20, 0x20}, {0x00, 0x21, 0x21}, {0x00, 0x22, 0x22}, {0x00, 0x23, 0x23}, {0x00, 0x24, 0x24}, {0x00, 0x25, 0x25}, {0x00, 0x26, 0x26}, {0x00, 0x27, 0x27}, {0x00, 0x28, 0x28}, {0x00, 0x29, 0x29}, {0x00, 0x2a, 0x2a}, {0x00, 0x2b, 0x2b}, {0x00, 0x2c, 0x2c}, {0x00, 0x2d, 0x2d}, {0x00, 0x2e, 0x2e}, {0x00, 0x2f, 0x2f}, {0x00, 0x30, 0x30}, {0x00, 0x31, 0x31}, {0x00, 0x32, 0x32}, {0x00, 0x33, 0x33}, {0x00, 0x34, 0x34}, {0x00, 0x35, 0x35}, {0x00, 0x36, 0x36}, {0x00, 0x37, 0x37}, {0x00, 0x38, 0x38}, {0x00, 0x39, 0x39}, {0x00, 0x3a, 0x3a}, {0x00, 0x3b, 0x3b}, {0x00, 0x3c, 0x3c}, {0x00, 0x3d, 0x3d}, {0x00, 0x3e, 0x3e}, {0x00, 0x3f, 0x3f}, {0x00, 0x40, 0x40}, {0x01, 0x61, 0x41}, {0x01, 0x62, 0x42}, {0x01, 0x63, 0x43}, {0x01, 0x64, 0x44}, {0x01, 0x65, 0x45}, {0x01, 0x66, 0x46}, {0x01, 0x67, 0x47}, {0x01, 0x68, 0x48}, {0x01, 0x69, 0x49}, {0x01, 0x6a, 0x4a}, {0x01, 0x6b, 0x4b}, {0x01, 0x6c, 0x4c}, {0x01, 0x6d, 0x4d}, {0x01, 0x6e, 0x4e}, {0x01, 0x6f, 0x4f}, {0x01, 0x70, 0x50}, {0x01, 0x71, 0x51}, {0x01, 0x72, 0x52}, {0x01, 0x73, 0x53}, {0x01, 0x74, 0x54}, {0x01, 0x75, 0x55}, {0x01, 0x76, 0x56}, {0x01, 0x77, 0x57}, {0x01, 0x78, 0x58}, {0x01, 0x79, 0x59}, {0x01, 0x7a, 0x5a}, {0x00, 0x5b, 0x5b}, {0x00, 0x5c, 0x5c}, {0x00, 0x5d, 0x5d}, {0x00, 0x5e, 0x5e}, {0x00, 0x5f, 0x5f}, {0x00, 0x60, 0x60}, {0x00, 0x61, 0x41}, {0x00, 0x62, 0x42}, {0x00, 0x63, 0x43}, {0x00, 0x64, 0x44}, {0x00, 0x65, 0x45}, {0x00, 0x66, 0x46}, {0x00, 0x67, 0x47}, {0x00, 0x68, 0x48}, {0x00, 0x69, 0x49}, {0x00, 0x6a, 0x4a}, {0x00, 0x6b, 0x4b}, {0x00, 0x6c, 0x4c}, {0x00, 0x6d, 0x4d}, {0x00, 0x6e, 0x4e}, {0x00, 0x6f, 0x4f}, {0x00, 0x70, 0x50}, {0x00, 0x71, 0x51}, {0x00, 0x72, 0x52}, {0x00, 0x73, 0x53}, {0x00, 0x74, 0x54}, {0x00, 0x75, 0x55}, {0x00, 0x76, 0x56}, {0x00, 0x77, 0x57}, {0x00, 0x78, 0x58}, {0x00, 0x79, 0x59}, {0x00, 0x7a, 0x5a}, {0x00, 0x7b, 0x7b}, {0x00, 0x7c, 0x7c}, {0x00, 0x7d, 0x7d}, {0x00, 0x7e, 0x7e}, {0x00, 0x7f, 0x7f}, {0x00, 0x80, 0x80}, {0x00, 0x81, 0x81}, {0x00, 0x82, 0x82}, {0x00, 0x83, 0x83}, {0x00, 0x84, 0x84}, {0x00, 0x85, 0x85}, {0x00, 0x86, 0x86}, {0x00, 0x87, 0x87}, {0x00, 0x88, 0x88}, {0x00, 0x89, 0x89}, {0x00, 0x8a, 0x8a}, {0x00, 0x8b, 0x8b}, {0x00, 0x8c, 0x8c}, {0x00, 0x8d, 0x8d}, {0x00, 0x8e, 0x8e}, {0x00, 0x8f, 0x8f}, {0x00, 0x90, 0x90}, {0x00, 0x91, 0x91}, {0x00, 0x92, 0x92}, {0x00, 0x93, 0x93}, {0x00, 0x94, 0x94}, {0x00, 0x95, 0x95}, {0x00, 0x96, 0x96}, {0x00, 0x97, 0x97}, {0x00, 0x98, 0x98}, {0x00, 0x99, 0x99}, {0x00, 0x9a, 0x9a}, {0x00, 0x9b, 0x9b}, {0x00, 0x9c, 0x9c}, {0x00, 0x9d, 0x9d}, {0x00, 0x9e, 0x9e}, {0x00, 0x9f, 0x9f}, {0x00, 0xa0, 0xa0}, {0x00, 0xa1, 0xa1}, {0x00, 0xa2, 0xa2}, {0x00, 0xa3, 0xa3}, {0x00, 0xa4, 0xa4}, {0x00, 0xa5, 0xa5}, {0x00, 0xa6, 0xa6}, {0x00, 0xa7, 0xa7}, {0x00, 0xa8, 0xa8}, {0x00, 0xa9, 0xa9}, {0x00, 0xaa, 0xaa}, {0x00, 0xab, 0xab}, {0x00, 0xac, 0xac}, {0x00, 0xad, 0xad}, {0x00, 0xae, 0xae}, {0x00, 0xaf, 0xaf}, {0x00, 0xb0, 0xb0}, {0x00, 0xb1, 0xb1}, {0x00, 0xb2, 0xb2}, {0x00, 0xb3, 0xb3}, {0x00, 0xb4, 0xb4}, {0x00, 0xb5, 0xb5}, {0x00, 0xb6, 0xb6}, {0x00, 0xb7, 0xb7}, {0x00, 0xb8, 0xb8}, {0x00, 0xb9, 0xb9}, {0x00, 0xba, 0xba}, {0x00, 0xbb, 0xbb}, {0x00, 0xbc, 0xbc}, {0x00, 0xbd, 0xbd}, {0x00, 0xbe, 0xbe}, {0x00, 0xbf, 0xbf}, {0x01, 0xe0, 0xc0}, {0x01, 0xe1, 0xc1}, {0x01, 0xe2, 0xc2}, {0x01, 0xe3, 0xc3}, {0x01, 0xe4, 0xc4}, {0x01, 0xe5, 0xc5}, {0x01, 0xe6, 0xc6}, {0x01, 0xe7, 0xc7}, {0x01, 0xe8, 0xc8}, {0x01, 0xe9, 0xc9}, {0x01, 0xea, 0xca}, {0x01, 0xeb, 0xcb}, {0x01, 0xec, 0xcc}, {0x01, 0xed, 0xcd}, {0x01, 0xee, 0xce}, {0x01, 0xef, 0xcf}, {0x01, 0xf0, 0xd0}, {0x01, 0xf1, 0xd1}, {0x01, 0xf2, 0xd2}, {0x01, 0xf3, 0xd3}, {0x01, 0xf4, 0xd4}, {0x01, 0xf5, 0xd5}, {0x01, 0xf6, 0xd6}, {0x00, 0xd7, 0xd7}, {0x01, 0xf8, 0xd8}, {0x01, 0xf9, 0xd9}, {0x01, 0xfa, 0xda}, {0x01, 0xfb, 0xdb}, {0x01, 0xfc, 0xdc}, {0x01, 0xfd, 0xdd}, {0x01, 0xfe, 0xde}, {0x00, 0xdf, 0xdf}, {0x00, 0xe0, 0xc0}, {0x00, 0xe1, 0xc1}, {0x00, 0xe2, 0xc2}, {0x00, 0xe3, 0xc3}, {0x00, 0xe4, 0xc4}, {0x00, 0xe5, 0xc5}, {0x00, 0xe6, 0xc6}, {0x00, 0xe7, 0xc7}, {0x00, 0xe8, 0xc8}, {0x00, 0xe9, 0xc9}, {0x00, 0xea, 0xca}, {0x00, 0xeb, 0xcb}, {0x00, 0xec, 0xcc}, {0x00, 0xed, 0xcd}, {0x00, 0xee, 0xce}, {0x00, 0xef, 0xcf}, {0x00, 0xf0, 0xd0}, {0x00, 0xf1, 0xd1}, {0x00, 0xf2, 0xd2}, {0x00, 0xf3, 0xd3}, {0x00, 0xf4, 0xd4}, {0x00, 0xf5, 0xd5}, {0x00, 0xf6, 0xd6}, {0x00, 0xf7, 0xf7}, {0x00, 0xf8, 0xd8}, {0x00, 0xf9, 0xd9}, {0x00, 0xfa, 0xda}, {0x00, 0xfb, 0xdb}, {0x00, 0xfc, 0xdc}, {0x00, 0xfd, 0xdd}, {0x00, 0xfe, 0xde}, {0x00, 0xff, 0xff}}; static struct cs_info iso2_tbl[] = { {0x00, 0x00, 0x00}, {0x00, 0x01, 0x01}, {0x00, 0x02, 0x02}, {0x00, 0x03, 0x03}, {0x00, 0x04, 0x04}, {0x00, 0x05, 0x05}, {0x00, 0x06, 0x06}, {0x00, 0x07, 0x07}, {0x00, 0x08, 0x08}, {0x00, 0x09, 0x09}, {0x00, 0x0a, 0x0a}, {0x00, 0x0b, 0x0b}, {0x00, 0x0c, 0x0c}, {0x00, 0x0d, 0x0d}, {0x00, 0x0e, 0x0e}, {0x00, 0x0f, 0x0f}, {0x00, 0x10, 0x10}, {0x00, 0x11, 0x11}, {0x00, 0x12, 0x12}, {0x00, 0x13, 0x13}, {0x00, 0x14, 0x14}, {0x00, 0x15, 0x15}, {0x00, 0x16, 0x16}, {0x00, 0x17, 0x17}, {0x00, 0x18, 0x18}, {0x00, 0x19, 0x19}, {0x00, 0x1a, 0x1a}, {0x00, 0x1b, 0x1b}, {0x00, 0x1c, 0x1c}, {0x00, 0x1d, 0x1d}, {0x00, 0x1e, 0x1e}, {0x00, 0x1f, 0x1f}, {0x00, 0x20, 0x20}, {0x00, 0x21, 0x21}, {0x00, 0x22, 0x22}, {0x00, 0x23, 0x23}, {0x00, 0x24, 0x24}, {0x00, 0x25, 0x25}, {0x00, 0x26, 0x26}, {0x00, 0x27, 0x27}, {0x00, 0x28, 0x28}, {0x00, 0x29, 0x29}, {0x00, 0x2a, 0x2a}, {0x00, 0x2b, 0x2b}, {0x00, 0x2c, 0x2c}, {0x00, 0x2d, 0x2d}, {0x00, 0x2e, 0x2e}, {0x00, 0x2f, 0x2f}, {0x00, 0x30, 0x30}, {0x00, 0x31, 0x31}, {0x00, 0x32, 0x32}, {0x00, 0x33, 0x33}, {0x00, 0x34, 0x34}, {0x00, 0x35, 0x35}, {0x00, 0x36, 0x36}, {0x00, 0x37, 0x37}, {0x00, 0x38, 0x38}, {0x00, 0x39, 0x39}, {0x00, 0x3a, 0x3a}, {0x00, 0x3b, 0x3b}, {0x00, 0x3c, 0x3c}, {0x00, 0x3d, 0x3d}, {0x00, 0x3e, 0x3e}, {0x00, 0x3f, 0x3f}, {0x00, 0x40, 0x40}, {0x01, 0x61, 0x41}, {0x01, 0x62, 0x42}, {0x01, 0x63, 0x43}, {0x01, 0x64, 0x44}, {0x01, 0x65, 0x45}, {0x01, 0x66, 0x46}, {0x01, 0x67, 0x47}, {0x01, 0x68, 0x48}, {0x01, 0x69, 0x49}, {0x01, 0x6a, 0x4a}, {0x01, 0x6b, 0x4b}, {0x01, 0x6c, 0x4c}, {0x01, 0x6d, 0x4d}, {0x01, 0x6e, 0x4e}, {0x01, 0x6f, 0x4f}, {0x01, 0x70, 0x50}, {0x01, 0x71, 0x51}, {0x01, 0x72, 0x52}, {0x01, 0x73, 0x53}, {0x01, 0x74, 0x54}, {0x01, 0x75, 0x55}, {0x01, 0x76, 0x56}, {0x01, 0x77, 0x57}, {0x01, 0x78, 0x58}, {0x01, 0x79, 0x59}, {0x01, 0x7a, 0x5a}, {0x00, 0x5b, 0x5b}, {0x00, 0x5c, 0x5c}, {0x00, 0x5d, 0x5d}, {0x00, 0x5e, 0x5e}, {0x00, 0x5f, 0x5f}, {0x00, 0x60, 0x60}, {0x00, 0x61, 0x41}, {0x00, 0x62, 0x42}, {0x00, 0x63, 0x43}, {0x00, 0x64, 0x44}, {0x00, 0x65, 0x45}, {0x00, 0x66, 0x46}, {0x00, 0x67, 0x47}, {0x00, 0x68, 0x48}, {0x00, 0x69, 0x49}, {0x00, 0x6a, 0x4a}, {0x00, 0x6b, 0x4b}, {0x00, 0x6c, 0x4c}, {0x00, 0x6d, 0x4d}, {0x00, 0x6e, 0x4e}, {0x00, 0x6f, 0x4f}, {0x00, 0x70, 0x50}, {0x00, 0x71, 0x51}, {0x00, 0x72, 0x52}, {0x00, 0x73, 0x53}, {0x00, 0x74, 0x54}, {0x00, 0x75, 0x55}, {0x00, 0x76, 0x56}, {0x00, 0x77, 0x57}, {0x00, 0x78, 0x58}, {0x00, 0x79, 0x59}, {0x00, 0x7a, 0x5a}, {0x00, 0x7b, 0x7b}, {0x00, 0x7c, 0x7c}, {0x00, 0x7d, 0x7d}, {0x00, 0x7e, 0x7e}, {0x00, 0x7f, 0x7f}, {0x00, 0x80, 0x80}, {0x00, 0x81, 0x81}, {0x00, 0x82, 0x82}, {0x00, 0x83, 0x83}, {0x00, 0x84, 0x84}, {0x00, 0x85, 0x85}, {0x00, 0x86, 0x86}, {0x00, 0x87, 0x87}, {0x00, 0x88, 0x88}, {0x00, 0x89, 0x89}, {0x00, 0x8a, 0x8a}, {0x00, 0x8b, 0x8b}, {0x00, 0x8c, 0x8c}, {0x00, 0x8d, 0x8d}, {0x00, 0x8e, 0x8e}, {0x00, 0x8f, 0x8f}, {0x00, 0x90, 0x90}, {0x00, 0x91, 0x91}, {0x00, 0x92, 0x92}, {0x00, 0x93, 0x93}, {0x00, 0x94, 0x94}, {0x00, 0x95, 0x95}, {0x00, 0x96, 0x96}, {0x00, 0x97, 0x97}, {0x00, 0x98, 0x98}, {0x00, 0x99, 0x99}, {0x00, 0x9a, 0x9a}, {0x00, 0x9b, 0x9b}, {0x00, 0x9c, 0x9c}, {0x00, 0x9d, 0x9d}, {0x00, 0x9e, 0x9e}, {0x00, 0x9f, 0x9f}, {0x00, 0xa0, 0xa0}, {0x01, 0xb1, 0xa1}, {0x00, 0xa2, 0xa2}, {0x01, 0xb3, 0xa3}, {0x00, 0xa4, 0xa4}, {0x01, 0xb5, 0xa5}, {0x01, 0xb6, 0xa6}, {0x00, 0xa7, 0xa7}, {0x00, 0xa8, 0xa8}, {0x01, 0xb9, 0xa9}, {0x01, 0xba, 0xaa}, {0x01, 0xbb, 0xab}, {0x01, 0xbc, 0xac}, {0x00, 0xad, 0xad}, {0x01, 0xbe, 0xae}, {0x01, 0xbf, 0xaf}, {0x00, 0xb0, 0xb0}, {0x00, 0xb1, 0xa1}, {0x00, 0xb2, 0xb2}, {0x00, 0xb3, 0xa3}, {0x00, 0xb4, 0xb4}, {0x00, 0xb5, 0xa5}, {0x00, 0xb6, 0xa6}, {0x00, 0xb7, 0xb7}, {0x00, 0xb8, 0xb8}, {0x00, 0xb9, 0xa9}, {0x00, 0xba, 0xaa}, {0x00, 0xbb, 0xab}, {0x00, 0xbc, 0xac}, {0x00, 0xbd, 0xbd}, {0x00, 0xbe, 0xae}, {0x00, 0xbf, 0xaf}, {0x01, 0xe0, 0xc0}, {0x01, 0xe1, 0xc1}, {0x01, 0xe2, 0xc2}, {0x01, 0xe3, 0xc3}, {0x01, 0xe4, 0xc4}, {0x01, 0xe5, 0xc5}, {0x01, 0xe6, 0xc6}, {0x01, 0xe7, 0xc7}, {0x01, 0xe8, 0xc8}, {0x01, 0xe9, 0xc9}, {0x01, 0xea, 0xca}, {0x01, 0xeb, 0xcb}, {0x01, 0xec, 0xcc}, {0x01, 0xed, 0xcd}, {0x01, 0xee, 0xce}, {0x01, 0xef, 0xcf}, {0x01, 0xf0, 0xd0}, {0x01, 0xf1, 0xd1}, {0x01, 0xf2, 0xd2}, {0x01, 0xf3, 0xd3}, {0x01, 0xf4, 0xd4}, {0x01, 0xf5, 0xd5}, {0x01, 0xf6, 0xd6}, {0x00, 0xd7, 0xd7}, {0x01, 0xf8, 0xd8}, {0x01, 0xf9, 0xd9}, {0x01, 0xfa, 0xda}, {0x01, 0xfb, 0xdb}, {0x01, 0xfc, 0xdc}, {0x01, 0xfd, 0xdd}, {0x01, 0xfe, 0xde}, {0x00, 0xdf, 0xdf}, {0x00, 0xe0, 0xc0}, {0x00, 0xe1, 0xc1}, {0x00, 0xe2, 0xc2}, {0x00, 0xe3, 0xc3}, {0x00, 0xe4, 0xc4}, {0x00, 0xe5, 0xc5}, {0x00, 0xe6, 0xc6}, {0x00, 0xe7, 0xc7}, {0x00, 0xe8, 0xc8}, {0x00, 0xe9, 0xc9}, {0x00, 0xea, 0xca}, {0x00, 0xeb, 0xcb}, {0x00, 0xec, 0xcc}, {0x00, 0xed, 0xcd}, {0x00, 0xee, 0xce}, {0x00, 0xef, 0xcf}, {0x00, 0xf0, 0xd0}, {0x00, 0xf1, 0xd1}, {0x00, 0xf2, 0xd2}, {0x00, 0xf3, 0xd3}, {0x00, 0xf4, 0xd4}, {0x00, 0xf5, 0xd5}, {0x00, 0xf6, 0xd6}, {0x00, 0xf7, 0xf7}, {0x00, 0xf8, 0xd8}, {0x00, 0xf9, 0xd9}, {0x00, 0xfa, 0xda}, {0x00, 0xfb, 0xdb}, {0x00, 0xfc, 0xdc}, {0x00, 0xfd, 0xdd}, {0x00, 0xfe, 0xde}, {0x00, 0xff, 0xff}}; static struct cs_info iso3_tbl[] = { {0x00, 0x00, 0x00}, {0x00, 0x01, 0x01}, {0x00, 0x02, 0x02}, {0x00, 0x03, 0x03}, {0x00, 0x04, 0x04}, {0x00, 0x05, 0x05}, {0x00, 0x06, 0x06}, {0x00, 0x07, 0x07}, {0x00, 0x08, 0x08}, {0x00, 0x09, 0x09}, {0x00, 0x0a, 0x0a}, {0x00, 0x0b, 0x0b}, {0x00, 0x0c, 0x0c}, {0x00, 0x0d, 0x0d}, {0x00, 0x0e, 0x0e}, {0x00, 0x0f, 0x0f}, {0x00, 0x10, 0x10}, {0x00, 0x11, 0x11}, {0x00, 0x12, 0x12}, {0x00, 0x13, 0x13}, {0x00, 0x14, 0x14}, {0x00, 0x15, 0x15}, {0x00, 0x16, 0x16}, {0x00, 0x17, 0x17}, {0x00, 0x18, 0x18}, {0x00, 0x19, 0x19}, {0x00, 0x1a, 0x1a}, {0x00, 0x1b, 0x1b}, {0x00, 0x1c, 0x1c}, {0x00, 0x1d, 0x1d}, {0x00, 0x1e, 0x1e}, {0x00, 0x1f, 0x1f}, {0x00, 0x20, 0x20}, {0x00, 0x21, 0x21}, {0x00, 0x22, 0x22}, {0x00, 0x23, 0x23}, {0x00, 0x24, 0x24}, {0x00, 0x25, 0x25}, {0x00, 0x26, 0x26}, {0x00, 0x27, 0x27}, {0x00, 0x28, 0x28}, {0x00, 0x29, 0x29}, {0x00, 0x2a, 0x2a}, {0x00, 0x2b, 0x2b}, {0x00, 0x2c, 0x2c}, {0x00, 0x2d, 0x2d}, {0x00, 0x2e, 0x2e}, {0x00, 0x2f, 0x2f}, {0x00, 0x30, 0x30}, {0x00, 0x31, 0x31}, {0x00, 0x32, 0x32}, {0x00, 0x33, 0x33}, {0x00, 0x34, 0x34}, {0x00, 0x35, 0x35}, {0x00, 0x36, 0x36}, {0x00, 0x37, 0x37}, {0x00, 0x38, 0x38}, {0x00, 0x39, 0x39}, {0x00, 0x3a, 0x3a}, {0x00, 0x3b, 0x3b}, {0x00, 0x3c, 0x3c}, {0x00, 0x3d, 0x3d}, {0x00, 0x3e, 0x3e}, {0x00, 0x3f, 0x3f}, {0x00, 0x40, 0x40}, {0x01, 0x61, 0x41}, {0x01, 0x62, 0x42}, {0x01, 0x63, 0x43}, {0x01, 0x64, 0x44}, {0x01, 0x65, 0x45}, {0x01, 0x66, 0x46}, {0x01, 0x67, 0x47}, {0x01, 0x68, 0x48}, {0x01, 0x69, 0x49}, {0x01, 0x6a, 0x4a}, {0x01, 0x6b, 0x4b}, {0x01, 0x6c, 0x4c}, {0x01, 0x6d, 0x4d}, {0x01, 0x6e, 0x4e}, {0x01, 0x6f, 0x4f}, {0x01, 0x70, 0x50}, {0x01, 0x71, 0x51}, {0x01, 0x72, 0x52}, {0x01, 0x73, 0x53}, {0x01, 0x74, 0x54}, {0x01, 0x75, 0x55}, {0x01, 0x76, 0x56}, {0x01, 0x77, 0x57}, {0x01, 0x78, 0x58}, {0x01, 0x79, 0x59}, {0x01, 0x7a, 0x5a}, {0x00, 0x5b, 0x5b}, {0x00, 0x5c, 0x5c}, {0x00, 0x5d, 0x5d}, {0x00, 0x5e, 0x5e}, {0x00, 0x5f, 0x5f}, {0x00, 0x60, 0x60}, {0x00, 0x61, 0x41}, {0x00, 0x62, 0x42}, {0x00, 0x63, 0x43}, {0x00, 0x64, 0x44}, {0x00, 0x65, 0x45}, {0x00, 0x66, 0x46}, {0x00, 0x67, 0x47}, {0x00, 0x68, 0x48}, {0x00, 0x69, 0x49}, {0x00, 0x6a, 0x4a}, {0x00, 0x6b, 0x4b}, {0x00, 0x6c, 0x4c}, {0x00, 0x6d, 0x4d}, {0x00, 0x6e, 0x4e}, {0x00, 0x6f, 0x4f}, {0x00, 0x70, 0x50}, {0x00, 0x71, 0x51}, {0x00, 0x72, 0x52}, {0x00, 0x73, 0x53}, {0x00, 0x74, 0x54}, {0x00, 0x75, 0x55}, {0x00, 0x76, 0x56}, {0x00, 0x77, 0x57}, {0x00, 0x78, 0x58}, {0x00, 0x79, 0x59}, {0x00, 0x7a, 0x5a}, {0x00, 0x7b, 0x7b}, {0x00, 0x7c, 0x7c}, {0x00, 0x7d, 0x7d}, {0x00, 0x7e, 0x7e}, {0x00, 0x7f, 0x7f}, {0x00, 0x80, 0x80}, {0x00, 0x81, 0x81}, {0x00, 0x82, 0x82}, {0x00, 0x83, 0x83}, {0x00, 0x84, 0x84}, {0x00, 0x85, 0x85}, {0x00, 0x86, 0x86}, {0x00, 0x87, 0x87}, {0x00, 0x88, 0x88}, {0x00, 0x89, 0x89}, {0x00, 0x8a, 0x8a}, {0x00, 0x8b, 0x8b}, {0x00, 0x8c, 0x8c}, {0x00, 0x8d, 0x8d}, {0x00, 0x8e, 0x8e}, {0x00, 0x8f, 0x8f}, {0x00, 0x90, 0x90}, {0x00, 0x91, 0x91}, {0x00, 0x92, 0x92}, {0x00, 0x93, 0x93}, {0x00, 0x94, 0x94}, {0x00, 0x95, 0x95}, {0x00, 0x96, 0x96}, {0x00, 0x97, 0x97}, {0x00, 0x98, 0x98}, {0x00, 0x99, 0x99}, {0x00, 0x9a, 0x9a}, {0x00, 0x9b, 0x9b}, {0x00, 0x9c, 0x9c}, {0x00, 0x9d, 0x9d}, {0x00, 0x9e, 0x9e}, {0x00, 0x9f, 0x9f}, {0x00, 0xa0, 0xa0}, {0x01, 0xb1, 0xa1}, {0x00, 0xa2, 0xa2}, {0x00, 0xa3, 0xa3}, {0x00, 0xa4, 0xa4}, {0x00, 0xa5, 0xa5}, {0x01, 0xb6, 0xa6}, {0x00, 0xa7, 0xa7}, {0x00, 0xa8, 0xa8}, {0x01, 0x69, 0xa9}, {0x01, 0xba, 0xaa}, {0x01, 0xbb, 0xab}, {0x01, 0xbc, 0xac}, {0x00, 0xad, 0xad}, {0x00, 0xae, 0xae}, {0x01, 0xbf, 0xaf}, {0x00, 0xb0, 0xb0}, {0x00, 0xb1, 0xa1}, {0x00, 0xb2, 0xb2}, {0x00, 0xb3, 0xb3}, {0x00, 0xb4, 0xb4}, {0x00, 0xb5, 0xb5}, {0x00, 0xb6, 0xa6}, {0x00, 0xb7, 0xb7}, {0x00, 0xb8, 0xb8}, {0x00, 0xb9, 0x49}, {0x00, 0xba, 0xaa}, {0x00, 0xbb, 0xab}, {0x00, 0xbc, 0xac}, {0x00, 0xbd, 0xbd}, {0x00, 0xbe, 0xbe}, {0x00, 0xbf, 0xaf}, {0x01, 0xe0, 0xc0}, {0x01, 0xe1, 0xc1}, {0x01, 0xe2, 0xc2}, {0x00, 0xc3, 0xc3}, {0x01, 0xe4, 0xc4}, {0x01, 0xe5, 0xc5}, {0x01, 0xe6, 0xc6}, {0x01, 0xe7, 0xc7}, {0x01, 0xe8, 0xc8}, {0x01, 0xe9, 0xc9}, {0x01, 0xea, 0xca}, {0x01, 0xeb, 0xcb}, {0x01, 0xec, 0xcc}, {0x01, 0xed, 0xcd}, {0x01, 0xee, 0xce}, {0x01, 0xef, 0xcf}, {0x00, 0xd0, 0xd0}, {0x01, 0xf1, 0xd1}, {0x01, 0xf2, 0xd2}, {0x01, 0xf3, 0xd3}, {0x01, 0xf4, 0xd4}, {0x01, 0xf5, 0xd5}, {0x01, 0xf6, 0xd6}, {0x00, 0xd7, 0xd7}, {0x01, 0xf8, 0xd8}, {0x01, 0xf9, 0xd9}, {0x01, 0xfa, 0xda}, {0x01, 0xfb, 0xdb}, {0x01, 0xfc, 0xdc}, {0x01, 0xfd, 0xdd}, {0x01, 0xfe, 0xde}, {0x00, 0xdf, 0xdf}, {0x00, 0xe0, 0xc0}, {0x00, 0xe1, 0xc1}, {0x00, 0xe2, 0xc2}, {0x00, 0xe3, 0xe3}, {0x00, 0xe4, 0xc4}, {0x00, 0xe5, 0xc5}, {0x00, 0xe6, 0xc6}, {0x00, 0xe7, 0xc7}, {0x00, 0xe8, 0xc8}, {0x00, 0xe9, 0xc9}, {0x00, 0xea, 0xca}, {0x00, 0xeb, 0xcb}, {0x00, 0xec, 0xcc}, {0x00, 0xed, 0xcd}, {0x00, 0xee, 0xce}, {0x00, 0xef, 0xcf}, {0x00, 0xf0, 0xf0}, {0x00, 0xf1, 0xd1}, {0x00, 0xf2, 0xd2}, {0x00, 0xf3, 0xd3}, {0x00, 0xf4, 0xd4}, {0x00, 0xf5, 0xd5}, {0x00, 0xf6, 0xd6}, {0x00, 0xf7, 0xf7}, {0x00, 0xf8, 0xd8}, {0x00, 0xf9, 0xd9}, {0x00, 0xfa, 0xda}, {0x00, 0xfb, 0xdb}, {0x00, 0xfc, 0xdc}, {0x00, 0xfd, 0xdd}, {0x00, 0xfe, 0xde}, {0x00, 0xff, 0xff}}; static struct cs_info iso4_tbl[] = { {0x00, 0x00, 0x00}, {0x00, 0x01, 0x01}, {0x00, 0x02, 0x02}, {0x00, 0x03, 0x03}, {0x00, 0x04, 0x04}, {0x00, 0x05, 0x05}, {0x00, 0x06, 0x06}, {0x00, 0x07, 0x07}, {0x00, 0x08, 0x08}, {0x00, 0x09, 0x09}, {0x00, 0x0a, 0x0a}, {0x00, 0x0b, 0x0b}, {0x00, 0x0c, 0x0c}, {0x00, 0x0d, 0x0d}, {0x00, 0x0e, 0x0e}, {0x00, 0x0f, 0x0f}, {0x00, 0x10, 0x10}, {0x00, 0x11, 0x11}, {0x00, 0x12, 0x12}, {0x00, 0x13, 0x13}, {0x00, 0x14, 0x14}, {0x00, 0x15, 0x15}, {0x00, 0x16, 0x16}, {0x00, 0x17, 0x17}, {0x00, 0x18, 0x18}, {0x00, 0x19, 0x19}, {0x00, 0x1a, 0x1a}, {0x00, 0x1b, 0x1b}, {0x00, 0x1c, 0x1c}, {0x00, 0x1d, 0x1d}, {0x00, 0x1e, 0x1e}, {0x00, 0x1f, 0x1f}, {0x00, 0x20, 0x20}, {0x00, 0x21, 0x21}, {0x00, 0x22, 0x22}, {0x00, 0x23, 0x23}, {0x00, 0x24, 0x24}, {0x00, 0x25, 0x25}, {0x00, 0x26, 0x26}, {0x00, 0x27, 0x27}, {0x00, 0x28, 0x28}, {0x00, 0x29, 0x29}, {0x00, 0x2a, 0x2a}, {0x00, 0x2b, 0x2b}, {0x00, 0x2c, 0x2c}, {0x00, 0x2d, 0x2d}, {0x00, 0x2e, 0x2e}, {0x00, 0x2f, 0x2f}, {0x00, 0x30, 0x30}, {0x00, 0x31, 0x31}, {0x00, 0x32, 0x32}, {0x00, 0x33, 0x33}, {0x00, 0x34, 0x34}, {0x00, 0x35, 0x35}, {0x00, 0x36, 0x36}, {0x00, 0x37, 0x37}, {0x00, 0x38, 0x38}, {0x00, 0x39, 0x39}, {0x00, 0x3a, 0x3a}, {0x00, 0x3b, 0x3b}, {0x00, 0x3c, 0x3c}, {0x00, 0x3d, 0x3d}, {0x00, 0x3e, 0x3e}, {0x00, 0x3f, 0x3f}, {0x00, 0x40, 0x40}, {0x01, 0x61, 0x41}, {0x01, 0x62, 0x42}, {0x01, 0x63, 0x43}, {0x01, 0x64, 0x44}, {0x01, 0x65, 0x45}, {0x01, 0x66, 0x46}, {0x01, 0x67, 0x47}, {0x01, 0x68, 0x48}, {0x01, 0x69, 0x49}, {0x01, 0x6a, 0x4a}, {0x01, 0x6b, 0x4b}, {0x01, 0x6c, 0x4c}, {0x01, 0x6d, 0x4d}, {0x01, 0x6e, 0x4e}, {0x01, 0x6f, 0x4f}, {0x01, 0x70, 0x50}, {0x01, 0x71, 0x51}, {0x01, 0x72, 0x52}, {0x01, 0x73, 0x53}, {0x01, 0x74, 0x54}, {0x01, 0x75, 0x55}, {0x01, 0x76, 0x56}, {0x01, 0x77, 0x57}, {0x01, 0x78, 0x58}, {0x01, 0x79, 0x59}, {0x01, 0x7a, 0x5a}, {0x00, 0x5b, 0x5b}, {0x00, 0x5c, 0x5c}, {0x00, 0x5d, 0x5d}, {0x00, 0x5e, 0x5e}, {0x00, 0x5f, 0x5f}, {0x00, 0x60, 0x60}, {0x00, 0x61, 0x41}, {0x00, 0x62, 0x42}, {0x00, 0x63, 0x43}, {0x00, 0x64, 0x44}, {0x00, 0x65, 0x45}, {0x00, 0x66, 0x46}, {0x00, 0x67, 0x47}, {0x00, 0x68, 0x48}, {0x00, 0x69, 0x49}, {0x00, 0x6a, 0x4a}, {0x00, 0x6b, 0x4b}, {0x00, 0x6c, 0x4c}, {0x00, 0x6d, 0x4d}, {0x00, 0x6e, 0x4e}, {0x00, 0x6f, 0x4f}, {0x00, 0x70, 0x50}, {0x00, 0x71, 0x51}, {0x00, 0x72, 0x52}, {0x00, 0x73, 0x53}, {0x00, 0x74, 0x54}, {0x00, 0x75, 0x55}, {0x00, 0x76, 0x56}, {0x00, 0x77, 0x57}, {0x00, 0x78, 0x58}, {0x00, 0x79, 0x59}, {0x00, 0x7a, 0x5a}, {0x00, 0x7b, 0x7b}, {0x00, 0x7c, 0x7c}, {0x00, 0x7d, 0x7d}, {0x00, 0x7e, 0x7e}, {0x00, 0x7f, 0x7f}, {0x00, 0x80, 0x80}, {0x00, 0x81, 0x81}, {0x00, 0x82, 0x82}, {0x00, 0x83, 0x83}, {0x00, 0x84, 0x84}, {0x00, 0x85, 0x85}, {0x00, 0x86, 0x86}, {0x00, 0x87, 0x87}, {0x00, 0x88, 0x88}, {0x00, 0x89, 0x89}, {0x00, 0x8a, 0x8a}, {0x00, 0x8b, 0x8b}, {0x00, 0x8c, 0x8c}, {0x00, 0x8d, 0x8d}, {0x00, 0x8e, 0x8e}, {0x00, 0x8f, 0x8f}, {0x00, 0x90, 0x90}, {0x00, 0x91, 0x91}, {0x00, 0x92, 0x92}, {0x00, 0x93, 0x93}, {0x00, 0x94, 0x94}, {0x00, 0x95, 0x95}, {0x00, 0x96, 0x96}, {0x00, 0x97, 0x97}, {0x00, 0x98, 0x98}, {0x00, 0x99, 0x99}, {0x00, 0x9a, 0x9a}, {0x00, 0x9b, 0x9b}, {0x00, 0x9c, 0x9c}, {0x00, 0x9d, 0x9d}, {0x00, 0x9e, 0x9e}, {0x00, 0x9f, 0x9f}, {0x00, 0xa0, 0xa0}, {0x01, 0xb1, 0xa1}, {0x00, 0xa2, 0xa2}, {0x01, 0xb3, 0xa3}, {0x00, 0xa4, 0xa4}, {0x01, 0xb5, 0xa5}, {0x01, 0xb6, 0xa6}, {0x00, 0xa7, 0xa7}, {0x00, 0xa8, 0xa8}, {0x01, 0xb9, 0xa9}, {0x01, 0xba, 0xaa}, {0x01, 0xbb, 0xab}, {0x01, 0xbc, 0xac}, {0x00, 0xad, 0xad}, {0x01, 0xbe, 0xae}, {0x00, 0xaf, 0xaf}, {0x00, 0xb0, 0xb0}, {0x00, 0xb1, 0xa1}, {0x00, 0xb2, 0xb2}, {0x00, 0xb3, 0xa3}, {0x00, 0xb4, 0xb4}, {0x00, 0xb5, 0xa5}, {0x00, 0xb6, 0xa6}, {0x00, 0xb7, 0xb7}, {0x00, 0xb8, 0xb8}, {0x00, 0xb9, 0xa9}, {0x00, 0xba, 0xaa}, {0x00, 0xbb, 0xab}, {0x00, 0xbc, 0xac}, {0x00, 0xbd, 0xbd}, {0x00, 0xbe, 0xae}, {0x00, 0xbf, 0xbf}, {0x01, 0xe0, 0xc0}, {0x01, 0xe1, 0xc1}, {0x01, 0xe2, 0xc2}, {0x01, 0xe3, 0xc3}, {0x01, 0xe4, 0xc4}, {0x01, 0xe5, 0xc5}, {0x01, 0xe6, 0xc6}, {0x01, 0xe7, 0xc7}, {0x01, 0xe8, 0xc8}, {0x01, 0xe9, 0xc9}, {0x01, 0xea, 0xca}, {0x01, 0xeb, 0xcb}, {0x01, 0xec, 0xcc}, {0x01, 0xed, 0xcd}, {0x01, 0xee, 0xce}, {0x01, 0xef, 0xcf}, {0x01, 0xf0, 0xd0}, {0x01, 0xf1, 0xd1}, {0x01, 0xf2, 0xd2}, {0x01, 0xf3, 0xd3}, {0x01, 0xf4, 0xd4}, {0x01, 0xf5, 0xd5}, {0x01, 0xf6, 0xd6}, {0x00, 0xd7, 0xd7}, {0x01, 0xf8, 0xd8}, {0x01, 0xf9, 0xd9}, {0x01, 0xfa, 0xda}, {0x01, 0xfb, 0xdb}, {0x01, 0xfc, 0xdc}, {0x01, 0xfd, 0xdd}, {0x01, 0xfe, 0xde}, {0x00, 0xdf, 0xdf}, {0x00, 0xe0, 0xc0}, {0x00, 0xe1, 0xc1}, {0x00, 0xe2, 0xc2}, {0x00, 0xe3, 0xc3}, {0x00, 0xe4, 0xc4}, {0x00, 0xe5, 0xc5}, {0x00, 0xe6, 0xc6}, {0x00, 0xe7, 0xc7}, {0x00, 0xe8, 0xc8}, {0x00, 0xe9, 0xc9}, {0x00, 0xea, 0xca}, {0x00, 0xeb, 0xcb}, {0x00, 0xec, 0xcc}, {0x00, 0xed, 0xcd}, {0x00, 0xee, 0xce}, {0x00, 0xef, 0xcf}, {0x00, 0xf0, 0xd0}, {0x00, 0xf1, 0xd1}, {0x00, 0xf2, 0xd2}, {0x00, 0xf3, 0xd3}, {0x00, 0xf4, 0xd4}, {0x00, 0xf5, 0xd5}, {0x00, 0xf6, 0xd6}, {0x00, 0xf7, 0xf7}, {0x00, 0xf8, 0xd8}, {0x00, 0xf9, 0xd9}, {0x00, 0xfa, 0xda}, {0x00, 0xfb, 0xdb}, {0x00, 0xfc, 0xdc}, {0x00, 0xfd, 0xdd}, {0x00, 0xfe, 0xde}, {0x00, 0xff, 0xff}}; static struct cs_info iso5_tbl[] = { {0x00, 0x00, 0x00}, {0x00, 0x01, 0x01}, {0x00, 0x02, 0x02}, {0x00, 0x03, 0x03}, {0x00, 0x04, 0x04}, {0x00, 0x05, 0x05}, {0x00, 0x06, 0x06}, {0x00, 0x07, 0x07}, {0x00, 0x08, 0x08}, {0x00, 0x09, 0x09}, {0x00, 0x0a, 0x0a}, {0x00, 0x0b, 0x0b}, {0x00, 0x0c, 0x0c}, {0x00, 0x0d, 0x0d}, {0x00, 0x0e, 0x0e}, {0x00, 0x0f, 0x0f}, {0x00, 0x10, 0x10}, {0x00, 0x11, 0x11}, {0x00, 0x12, 0x12}, {0x00, 0x13, 0x13}, {0x00, 0x14, 0x14}, {0x00, 0x15, 0x15}, {0x00, 0x16, 0x16}, {0x00, 0x17, 0x17}, {0x00, 0x18, 0x18}, {0x00, 0x19, 0x19}, {0x00, 0x1a, 0x1a}, {0x00, 0x1b, 0x1b}, {0x00, 0x1c, 0x1c}, {0x00, 0x1d, 0x1d}, {0x00, 0x1e, 0x1e}, {0x00, 0x1f, 0x1f}, {0x00, 0x20, 0x20}, {0x00, 0x21, 0x21}, {0x00, 0x22, 0x22}, {0x00, 0x23, 0x23}, {0x00, 0x24, 0x24}, {0x00, 0x25, 0x25}, {0x00, 0x26, 0x26}, {0x00, 0x27, 0x27}, {0x00, 0x28, 0x28}, {0x00, 0x29, 0x29}, {0x00, 0x2a, 0x2a}, {0x00, 0x2b, 0x2b}, {0x00, 0x2c, 0x2c}, {0x00, 0x2d, 0x2d}, {0x00, 0x2e, 0x2e}, {0x00, 0x2f, 0x2f}, {0x00, 0x30, 0x30}, {0x00, 0x31, 0x31}, {0x00, 0x32, 0x32}, {0x00, 0x33, 0x33}, {0x00, 0x34, 0x34}, {0x00, 0x35, 0x35}, {0x00, 0x36, 0x36}, {0x00, 0x37, 0x37}, {0x00, 0x38, 0x38}, {0x00, 0x39, 0x39}, {0x00, 0x3a, 0x3a}, {0x00, 0x3b, 0x3b}, {0x00, 0x3c, 0x3c}, {0x00, 0x3d, 0x3d}, {0x00, 0x3e, 0x3e}, {0x00, 0x3f, 0x3f}, {0x00, 0x40, 0x40}, {0x01, 0x61, 0x41}, {0x01, 0x62, 0x42}, {0x01, 0x63, 0x43}, {0x01, 0x64, 0x44}, {0x01, 0x65, 0x45}, {0x01, 0x66, 0x46}, {0x01, 0x67, 0x47}, {0x01, 0x68, 0x48}, {0x01, 0x69, 0x49}, {0x01, 0x6a, 0x4a}, {0x01, 0x6b, 0x4b}, {0x01, 0x6c, 0x4c}, {0x01, 0x6d, 0x4d}, {0x01, 0x6e, 0x4e}, {0x01, 0x6f, 0x4f}, {0x01, 0x70, 0x50}, {0x01, 0x71, 0x51}, {0x01, 0x72, 0x52}, {0x01, 0x73, 0x53}, {0x01, 0x74, 0x54}, {0x01, 0x75, 0x55}, {0x01, 0x76, 0x56}, {0x01, 0x77, 0x57}, {0x01, 0x78, 0x58}, {0x01, 0x79, 0x59}, {0x01, 0x7a, 0x5a}, {0x00, 0x5b, 0x5b}, {0x00, 0x5c, 0x5c}, {0x00, 0x5d, 0x5d}, {0x00, 0x5e, 0x5e}, {0x00, 0x5f, 0x5f}, {0x00, 0x60, 0x60}, {0x00, 0x61, 0x41}, {0x00, 0x62, 0x42}, {0x00, 0x63, 0x43}, {0x00, 0x64, 0x44}, {0x00, 0x65, 0x45}, {0x00, 0x66, 0x46}, {0x00, 0x67, 0x47}, {0x00, 0x68, 0x48}, {0x00, 0x69, 0x49}, {0x00, 0x6a, 0x4a}, {0x00, 0x6b, 0x4b}, {0x00, 0x6c, 0x4c}, {0x00, 0x6d, 0x4d}, {0x00, 0x6e, 0x4e}, {0x00, 0x6f, 0x4f}, {0x00, 0x70, 0x50}, {0x00, 0x71, 0x51}, {0x00, 0x72, 0x52}, {0x00, 0x73, 0x53}, {0x00, 0x74, 0x54}, {0x00, 0x75, 0x55}, {0x00, 0x76, 0x56}, {0x00, 0x77, 0x57}, {0x00, 0x78, 0x58}, {0x00, 0x79, 0x59}, {0x00, 0x7a, 0x5a}, {0x00, 0x7b, 0x7b}, {0x00, 0x7c, 0x7c}, {0x00, 0x7d, 0x7d}, {0x00, 0x7e, 0x7e}, {0x00, 0x7f, 0x7f}, {0x00, 0x80, 0x80}, {0x00, 0x81, 0x81}, {0x00, 0x82, 0x82}, {0x00, 0x83, 0x83}, {0x00, 0x84, 0x84}, {0x00, 0x85, 0x85}, {0x00, 0x86, 0x86}, {0x00, 0x87, 0x87}, {0x00, 0x88, 0x88}, {0x00, 0x89, 0x89}, {0x00, 0x8a, 0x8a}, {0x00, 0x8b, 0x8b}, {0x00, 0x8c, 0x8c}, {0x00, 0x8d, 0x8d}, {0x00, 0x8e, 0x8e}, {0x00, 0x8f, 0x8f}, {0x00, 0x90, 0x90}, {0x00, 0x91, 0x91}, {0x00, 0x92, 0x92}, {0x00, 0x93, 0x93}, {0x00, 0x94, 0x94}, {0x00, 0x95, 0x95}, {0x00, 0x96, 0x96}, {0x00, 0x97, 0x97}, {0x00, 0x98, 0x98}, {0x00, 0x99, 0x99}, {0x00, 0x9a, 0x9a}, {0x00, 0x9b, 0x9b}, {0x00, 0x9c, 0x9c}, {0x00, 0x9d, 0x9d}, {0x00, 0x9e, 0x9e}, {0x00, 0x9f, 0x9f}, {0x00, 0xa0, 0xa0}, {0x01, 0xf1, 0xa1}, {0x01, 0xf2, 0xa2}, {0x01, 0xf3, 0xa3}, {0x01, 0xf4, 0xa4}, {0x01, 0xf5, 0xa5}, {0x01, 0xf6, 0xa6}, {0x01, 0xf7, 0xa7}, {0x01, 0xf8, 0xa8}, {0x01, 0xf9, 0xa9}, {0x01, 0xfa, 0xaa}, {0x01, 0xfb, 0xab}, {0x01, 0xfc, 0xac}, {0x00, 0xad, 0xad}, {0x01, 0xfe, 0xae}, {0x01, 0xff, 0xaf}, {0x01, 0xd0, 0xb0}, {0x01, 0xd1, 0xb1}, {0x01, 0xd2, 0xb2}, {0x01, 0xd3, 0xb3}, {0x01, 0xd4, 0xb4}, {0x01, 0xd5, 0xb5}, {0x01, 0xd6, 0xb6}, {0x01, 0xd7, 0xb7}, {0x01, 0xd8, 0xb8}, {0x01, 0xd9, 0xb9}, {0x01, 0xda, 0xba}, {0x01, 0xdb, 0xbb}, {0x01, 0xdc, 0xbc}, {0x01, 0xdd, 0xbd}, {0x01, 0xde, 0xbe}, {0x01, 0xdf, 0xbf}, {0x01, 0xe0, 0xc0}, {0x01, 0xe1, 0xc1}, {0x01, 0xe2, 0xc2}, {0x01, 0xe3, 0xc3}, {0x01, 0xe4, 0xc4}, {0x01, 0xe5, 0xc5}, {0x01, 0xe6, 0xc6}, {0x01, 0xe7, 0xc7}, {0x01, 0xe8, 0xc8}, {0x01, 0xe9, 0xc9}, {0x01, 0xea, 0xca}, {0x01, 0xeb, 0xcb}, {0x01, 0xec, 0xcc}, {0x01, 0xed, 0xcd}, {0x01, 0xee, 0xce}, {0x01, 0xef, 0xcf}, {0x00, 0xd0, 0xb0}, {0x00, 0xd1, 0xb1}, {0x00, 0xd2, 0xb2}, {0x00, 0xd3, 0xb3}, {0x00, 0xd4, 0xb4}, {0x00, 0xd5, 0xb5}, {0x00, 0xd6, 0xb6}, {0x00, 0xd7, 0xb7}, {0x00, 0xd8, 0xb8}, {0x00, 0xd9, 0xb9}, {0x00, 0xda, 0xba}, {0x00, 0xdb, 0xbb}, {0x00, 0xdc, 0xbc}, {0x00, 0xdd, 0xbd}, {0x00, 0xde, 0xbe}, {0x00, 0xdf, 0xbf}, {0x00, 0xe0, 0xc0}, {0x00, 0xe1, 0xc1}, {0x00, 0xe2, 0xc2}, {0x00, 0xe3, 0xc3}, {0x00, 0xe4, 0xc4}, {0x00, 0xe5, 0xc5}, {0x00, 0xe6, 0xc6}, {0x00, 0xe7, 0xc7}, {0x00, 0xe8, 0xc8}, {0x00, 0xe9, 0xc9}, {0x00, 0xea, 0xca}, {0x00, 0xeb, 0xcb}, {0x00, 0xec, 0xcc}, {0x00, 0xed, 0xcd}, {0x00, 0xee, 0xce}, {0x00, 0xef, 0xcf}, {0x00, 0xf0, 0xf0}, {0x00, 0xf1, 0xa1}, {0x00, 0xf2, 0xa2}, {0x00, 0xf3, 0xa3}, {0x00, 0xf4, 0xa4}, {0x00, 0xf5, 0xa5}, {0x00, 0xf6, 0xa6}, {0x00, 0xf7, 0xa7}, {0x00, 0xf8, 0xa8}, {0x00, 0xf9, 0xa9}, {0x00, 0xfa, 0xaa}, {0x00, 0xfb, 0xab}, {0x00, 0xfc, 0xac}, {0x00, 0xfd, 0xfd}, {0x00, 0xfe, 0xae}, {0x00, 0xff, 0xaf}}; static struct cs_info iso6_tbl[] = { {0x00, 0x00, 0x00}, {0x00, 0x01, 0x01}, {0x00, 0x02, 0x02}, {0x00, 0x03, 0x03}, {0x00, 0x04, 0x04}, {0x00, 0x05, 0x05}, {0x00, 0x06, 0x06}, {0x00, 0x07, 0x07}, {0x00, 0x08, 0x08}, {0x00, 0x09, 0x09}, {0x00, 0x0a, 0x0a}, {0x00, 0x0b, 0x0b}, {0x00, 0x0c, 0x0c}, {0x00, 0x0d, 0x0d}, {0x00, 0x0e, 0x0e}, {0x00, 0x0f, 0x0f}, {0x00, 0x10, 0x10}, {0x00, 0x11, 0x11}, {0x00, 0x12, 0x12}, {0x00, 0x13, 0x13}, {0x00, 0x14, 0x14}, {0x00, 0x15, 0x15}, {0x00, 0x16, 0x16}, {0x00, 0x17, 0x17}, {0x00, 0x18, 0x18}, {0x00, 0x19, 0x19}, {0x00, 0x1a, 0x1a}, {0x00, 0x1b, 0x1b}, {0x00, 0x1c, 0x1c}, {0x00, 0x1d, 0x1d}, {0x00, 0x1e, 0x1e}, {0x00, 0x1f, 0x1f}, {0x00, 0x20, 0x20}, {0x00, 0x21, 0x21}, {0x00, 0x22, 0x22}, {0x00, 0x23, 0x23}, {0x00, 0x24, 0x24}, {0x00, 0x25, 0x25}, {0x00, 0x26, 0x26}, {0x00, 0x27, 0x27}, {0x00, 0x28, 0x28}, {0x00, 0x29, 0x29}, {0x00, 0x2a, 0x2a}, {0x00, 0x2b, 0x2b}, {0x00, 0x2c, 0x2c}, {0x00, 0x2d, 0x2d}, {0x00, 0x2e, 0x2e}, {0x00, 0x2f, 0x2f}, {0x00, 0x30, 0x30}, {0x00, 0x31, 0x31}, {0x00, 0x32, 0x32}, {0x00, 0x33, 0x33}, {0x00, 0x34, 0x34}, {0x00, 0x35, 0x35}, {0x00, 0x36, 0x36}, {0x00, 0x37, 0x37}, {0x00, 0x38, 0x38}, {0x00, 0x39, 0x39}, {0x00, 0x3a, 0x3a}, {0x00, 0x3b, 0x3b}, {0x00, 0x3c, 0x3c}, {0x00, 0x3d, 0x3d}, {0x00, 0x3e, 0x3e}, {0x00, 0x3f, 0x3f}, {0x00, 0x40, 0x40}, {0x01, 0x61, 0x41}, {0x01, 0x62, 0x42}, {0x01, 0x63, 0x43}, {0x01, 0x64, 0x44}, {0x01, 0x65, 0x45}, {0x01, 0x66, 0x46}, {0x01, 0x67, 0x47}, {0x01, 0x68, 0x48}, {0x01, 0x69, 0x49}, {0x01, 0x6a, 0x4a}, {0x01, 0x6b, 0x4b}, {0x01, 0x6c, 0x4c}, {0x01, 0x6d, 0x4d}, {0x01, 0x6e, 0x4e}, {0x01, 0x6f, 0x4f}, {0x01, 0x70, 0x50}, {0x01, 0x71, 0x51}, {0x01, 0x72, 0x52}, {0x01, 0x73, 0x53}, {0x01, 0x74, 0x54}, {0x01, 0x75, 0x55}, {0x01, 0x76, 0x56}, {0x01, 0x77, 0x57}, {0x01, 0x78, 0x58}, {0x01, 0x79, 0x59}, {0x01, 0x7a, 0x5a}, {0x00, 0x5b, 0x5b}, {0x00, 0x5c, 0x5c}, {0x00, 0x5d, 0x5d}, {0x00, 0x5e, 0x5e}, {0x00, 0x5f, 0x5f}, {0x00, 0x60, 0x60}, {0x00, 0x61, 0x41}, {0x00, 0x62, 0x42}, {0x00, 0x63, 0x43}, {0x00, 0x64, 0x44}, {0x00, 0x65, 0x45}, {0x00, 0x66, 0x46}, {0x00, 0x67, 0x47}, {0x00, 0x68, 0x48}, {0x00, 0x69, 0x49}, {0x00, 0x6a, 0x4a}, {0x00, 0x6b, 0x4b}, {0x00, 0x6c, 0x4c}, {0x00, 0x6d, 0x4d}, {0x00, 0x6e, 0x4e}, {0x00, 0x6f, 0x4f}, {0x00, 0x70, 0x50}, {0x00, 0x71, 0x51}, {0x00, 0x72, 0x52}, {0x00, 0x73, 0x53}, {0x00, 0x74, 0x54}, {0x00, 0x75, 0x55}, {0x00, 0x76, 0x56}, {0x00, 0x77, 0x57}, {0x00, 0x78, 0x58}, {0x00, 0x79, 0x59}, {0x00, 0x7a, 0x5a}, {0x00, 0x7b, 0x7b}, {0x00, 0x7c, 0x7c}, {0x00, 0x7d, 0x7d}, {0x00, 0x7e, 0x7e}, {0x00, 0x7f, 0x7f}, {0x00, 0x80, 0x80}, {0x00, 0x81, 0x81}, {0x00, 0x82, 0x82}, {0x00, 0x83, 0x83}, {0x00, 0x84, 0x84}, {0x00, 0x85, 0x85}, {0x00, 0x86, 0x86}, {0x00, 0x87, 0x87}, {0x00, 0x88, 0x88}, {0x00, 0x89, 0x89}, {0x00, 0x8a, 0x8a}, {0x00, 0x8b, 0x8b}, {0x00, 0x8c, 0x8c}, {0x00, 0x8d, 0x8d}, {0x00, 0x8e, 0x8e}, {0x00, 0x8f, 0x8f}, {0x00, 0x90, 0x90}, {0x00, 0x91, 0x91}, {0x00, 0x92, 0x92}, {0x00, 0x93, 0x93}, {0x00, 0x94, 0x94}, {0x00, 0x95, 0x95}, {0x00, 0x96, 0x96}, {0x00, 0x97, 0x97}, {0x00, 0x98, 0x98}, {0x00, 0x99, 0x99}, {0x00, 0x9a, 0x9a}, {0x00, 0x9b, 0x9b}, {0x00, 0x9c, 0x9c}, {0x00, 0x9d, 0x9d}, {0x00, 0x9e, 0x9e}, {0x00, 0x9f, 0x9f}, {0x00, 0xa0, 0xa0}, {0x00, 0xa1, 0xa1}, {0x00, 0xa2, 0xa2}, {0x00, 0xa3, 0xa3}, {0x00, 0xa4, 0xa4}, {0x00, 0xa5, 0xa5}, {0x00, 0xa6, 0xa6}, {0x00, 0xa7, 0xa7}, {0x00, 0xa8, 0xa8}, {0x00, 0xa9, 0xa9}, {0x00, 0xaa, 0xaa}, {0x00, 0xab, 0xab}, {0x00, 0xac, 0xac}, {0x00, 0xad, 0xad}, {0x00, 0xae, 0xae}, {0x00, 0xaf, 0xaf}, {0x00, 0xb0, 0xb0}, {0x00, 0xb1, 0xb1}, {0x00, 0xb2, 0xb2}, {0x00, 0xb3, 0xb3}, {0x00, 0xb4, 0xb4}, {0x00, 0xb5, 0xb5}, {0x00, 0xb6, 0xb6}, {0x00, 0xb7, 0xb7}, {0x00, 0xb8, 0xb8}, {0x00, 0xb9, 0xb9}, {0x00, 0xba, 0xba}, {0x00, 0xbb, 0xbb}, {0x00, 0xbc, 0xbc}, {0x00, 0xbd, 0xbd}, {0x00, 0xbe, 0xbe}, {0x00, 0xbf, 0xbf}, {0x00, 0xc0, 0xc0}, {0x00, 0xc1, 0xc1}, {0x00, 0xc2, 0xc2}, {0x00, 0xc3, 0xc3}, {0x00, 0xc4, 0xc4}, {0x00, 0xc5, 0xc5}, {0x00, 0xc6, 0xc6}, {0x00, 0xc7, 0xc7}, {0x00, 0xc8, 0xc8}, {0x00, 0xc9, 0xc9}, {0x00, 0xca, 0xca}, {0x00, 0xcb, 0xcb}, {0x00, 0xcc, 0xcc}, {0x00, 0xcd, 0xcd}, {0x00, 0xce, 0xce}, {0x00, 0xcf, 0xcf}, {0x00, 0xd0, 0xd0}, {0x00, 0xd1, 0xd1}, {0x00, 0xd2, 0xd2}, {0x00, 0xd3, 0xd3}, {0x00, 0xd4, 0xd4}, {0x00, 0xd5, 0xd5}, {0x00, 0xd6, 0xd6}, {0x00, 0xd7, 0xd7}, {0x00, 0xd8, 0xd8}, {0x00, 0xd9, 0xd9}, {0x00, 0xda, 0xda}, {0x00, 0xdb, 0xdb}, {0x00, 0xdc, 0xdc}, {0x00, 0xdd, 0xdd}, {0x00, 0xde, 0xde}, {0x00, 0xdf, 0xdf}, {0x00, 0xe0, 0xe0}, {0x00, 0xe1, 0xe1}, {0x00, 0xe2, 0xe2}, {0x00, 0xe3, 0xe3}, {0x00, 0xe4, 0xe4}, {0x00, 0xe5, 0xe5}, {0x00, 0xe6, 0xe6}, {0x00, 0xe7, 0xe7}, {0x00, 0xe8, 0xe8}, {0x00, 0xe9, 0xe9}, {0x00, 0xea, 0xea}, {0x00, 0xeb, 0xeb}, {0x00, 0xec, 0xec}, {0x00, 0xed, 0xed}, {0x00, 0xee, 0xee}, {0x00, 0xef, 0xef}, {0x00, 0xf0, 0xf0}, {0x00, 0xf1, 0xf1}, {0x00, 0xf2, 0xf2}, {0x00, 0xf3, 0xf3}, {0x00, 0xf4, 0xf4}, {0x00, 0xf5, 0xf5}, {0x00, 0xf6, 0xf6}, {0x00, 0xf7, 0xf7}, {0x00, 0xf8, 0xf8}, {0x00, 0xf9, 0xf9}, {0x00, 0xfa, 0xfa}, {0x00, 0xfb, 0xfb}, {0x00, 0xfc, 0xfc}, {0x00, 0xfd, 0xfd}, {0x00, 0xfe, 0xfe}, {0x00, 0xff, 0xff}}; static struct cs_info iso7_tbl[] = { {0x00, 0x00, 0x00}, {0x00, 0x01, 0x01}, {0x00, 0x02, 0x02}, {0x00, 0x03, 0x03}, {0x00, 0x04, 0x04}, {0x00, 0x05, 0x05}, {0x00, 0x06, 0x06}, {0x00, 0x07, 0x07}, {0x00, 0x08, 0x08}, {0x00, 0x09, 0x09}, {0x00, 0x0a, 0x0a}, {0x00, 0x0b, 0x0b}, {0x00, 0x0c, 0x0c}, {0x00, 0x0d, 0x0d}, {0x00, 0x0e, 0x0e}, {0x00, 0x0f, 0x0f}, {0x00, 0x10, 0x10}, {0x00, 0x11, 0x11}, {0x00, 0x12, 0x12}, {0x00, 0x13, 0x13}, {0x00, 0x14, 0x14}, {0x00, 0x15, 0x15}, {0x00, 0x16, 0x16}, {0x00, 0x17, 0x17}, {0x00, 0x18, 0x18}, {0x00, 0x19, 0x19}, {0x00, 0x1a, 0x1a}, {0x00, 0x1b, 0x1b}, {0x00, 0x1c, 0x1c}, {0x00, 0x1d, 0x1d}, {0x00, 0x1e, 0x1e}, {0x00, 0x1f, 0x1f}, {0x00, 0x20, 0x20}, {0x00, 0x21, 0x21}, {0x00, 0x22, 0x22}, {0x00, 0x23, 0x23}, {0x00, 0x24, 0x24}, {0x00, 0x25, 0x25}, {0x00, 0x26, 0x26}, {0x00, 0x27, 0x27}, {0x00, 0x28, 0x28}, {0x00, 0x29, 0x29}, {0x00, 0x2a, 0x2a}, {0x00, 0x2b, 0x2b}, {0x00, 0x2c, 0x2c}, {0x00, 0x2d, 0x2d}, {0x00, 0x2e, 0x2e}, {0x00, 0x2f, 0x2f}, {0x00, 0x30, 0x30}, {0x00, 0x31, 0x31}, {0x00, 0x32, 0x32}, {0x00, 0x33, 0x33}, {0x00, 0x34, 0x34}, {0x00, 0x35, 0x35}, {0x00, 0x36, 0x36}, {0x00, 0x37, 0x37}, {0x00, 0x38, 0x38}, {0x00, 0x39, 0x39}, {0x00, 0x3a, 0x3a}, {0x00, 0x3b, 0x3b}, {0x00, 0x3c, 0x3c}, {0x00, 0x3d, 0x3d}, {0x00, 0x3e, 0x3e}, {0x00, 0x3f, 0x3f}, {0x00, 0x40, 0x40}, {0x01, 0x61, 0x41}, {0x01, 0x62, 0x42}, {0x01, 0x63, 0x43}, {0x01, 0x64, 0x44}, {0x01, 0x65, 0x45}, {0x01, 0x66, 0x46}, {0x01, 0x67, 0x47}, {0x01, 0x68, 0x48}, {0x01, 0x69, 0x49}, {0x01, 0x6a, 0x4a}, {0x01, 0x6b, 0x4b}, {0x01, 0x6c, 0x4c}, {0x01, 0x6d, 0x4d}, {0x01, 0x6e, 0x4e}, {0x01, 0x6f, 0x4f}, {0x01, 0x70, 0x50}, {0x01, 0x71, 0x51}, {0x01, 0x72, 0x52}, {0x01, 0x73, 0x53}, {0x01, 0x74, 0x54}, {0x01, 0x75, 0x55}, {0x01, 0x76, 0x56}, {0x01, 0x77, 0x57}, {0x01, 0x78, 0x58}, {0x01, 0x79, 0x59}, {0x01, 0x7a, 0x5a}, {0x00, 0x5b, 0x5b}, {0x00, 0x5c, 0x5c}, {0x00, 0x5d, 0x5d}, {0x00, 0x5e, 0x5e}, {0x00, 0x5f, 0x5f}, {0x00, 0x60, 0x60}, {0x00, 0x61, 0x41}, {0x00, 0x62, 0x42}, {0x00, 0x63, 0x43}, {0x00, 0x64, 0x44}, {0x00, 0x65, 0x45}, {0x00, 0x66, 0x46}, {0x00, 0x67, 0x47}, {0x00, 0x68, 0x48}, {0x00, 0x69, 0x49}, {0x00, 0x6a, 0x4a}, {0x00, 0x6b, 0x4b}, {0x00, 0x6c, 0x4c}, {0x00, 0x6d, 0x4d}, {0x00, 0x6e, 0x4e}, {0x00, 0x6f, 0x4f}, {0x00, 0x70, 0x50}, {0x00, 0x71, 0x51}, {0x00, 0x72, 0x52}, {0x00, 0x73, 0x53}, {0x00, 0x74, 0x54}, {0x00, 0x75, 0x55}, {0x00, 0x76, 0x56}, {0x00, 0x77, 0x57}, {0x00, 0x78, 0x58}, {0x00, 0x79, 0x59}, {0x00, 0x7a, 0x5a}, {0x00, 0x7b, 0x7b}, {0x00, 0x7c, 0x7c}, {0x00, 0x7d, 0x7d}, {0x00, 0x7e, 0x7e}, {0x00, 0x7f, 0x7f}, {0x00, 0x80, 0x80}, {0x00, 0x81, 0x81}, {0x00, 0x82, 0x82}, {0x00, 0x83, 0x83}, {0x00, 0x84, 0x84}, {0x00, 0x85, 0x85}, {0x00, 0x86, 0x86}, {0x00, 0x87, 0x87}, {0x00, 0x88, 0x88}, {0x00, 0x89, 0x89}, {0x00, 0x8a, 0x8a}, {0x00, 0x8b, 0x8b}, {0x00, 0x8c, 0x8c}, {0x00, 0x8d, 0x8d}, {0x00, 0x8e, 0x8e}, {0x00, 0x8f, 0x8f}, {0x00, 0x90, 0x90}, {0x00, 0x91, 0x91}, {0x00, 0x92, 0x92}, {0x00, 0x93, 0x93}, {0x00, 0x94, 0x94}, {0x00, 0x95, 0x95}, {0x00, 0x96, 0x96}, {0x00, 0x97, 0x97}, {0x00, 0x98, 0x98}, {0x00, 0x99, 0x99}, {0x00, 0x9a, 0x9a}, {0x00, 0x9b, 0x9b}, {0x00, 0x9c, 0x9c}, {0x00, 0x9d, 0x9d}, {0x00, 0x9e, 0x9e}, {0x00, 0x9f, 0x9f}, {0x00, 0xa0, 0xa0}, {0x00, 0xa1, 0xa1}, {0x00, 0xa2, 0xa2}, {0x00, 0xa3, 0xa3}, {0x00, 0xa4, 0xa4}, {0x00, 0xa5, 0xa5}, {0x00, 0xa6, 0xa6}, {0x00, 0xa7, 0xa7}, {0x00, 0xa8, 0xa8}, {0x00, 0xa9, 0xa9}, {0x00, 0xaa, 0xaa}, {0x00, 0xab, 0xab}, {0x00, 0xac, 0xac}, {0x00, 0xad, 0xad}, {0x00, 0xae, 0xae}, {0x00, 0xaf, 0xaf}, {0x00, 0xb0, 0xb0}, {0x00, 0xb1, 0xb1}, {0x00, 0xb2, 0xb2}, {0x00, 0xb3, 0xb3}, {0x00, 0xb4, 0xb4}, {0x00, 0xb5, 0xb5}, {0x01, 0xdc, 0xb6}, {0x00, 0xb7, 0xb7}, {0x01, 0xdd, 0xb8}, {0x01, 0xde, 0xb9}, {0x01, 0xdf, 0xba}, {0x00, 0xbb, 0xbb}, {0x01, 0xfc, 0xbc}, {0x00, 0xbd, 0xbd}, {0x01, 0xfd, 0xbe}, {0x01, 0xfe, 0xbf}, {0x00, 0xc0, 0xc0}, {0x01, 0xe1, 0xc1}, {0x01, 0xe2, 0xc2}, {0x01, 0xe3, 0xc3}, {0x01, 0xe4, 0xc4}, {0x01, 0xe5, 0xc5}, {0x01, 0xe6, 0xc6}, {0x01, 0xe7, 0xc7}, {0x01, 0xe8, 0xc8}, {0x01, 0xe9, 0xc9}, {0x01, 0xea, 0xca}, {0x01, 0xeb, 0xcb}, {0x01, 0xec, 0xcc}, {0x01, 0xed, 0xcd}, {0x01, 0xee, 0xce}, {0x01, 0xef, 0xcf}, {0x01, 0xf0, 0xd0}, {0x01, 0xf1, 0xd1}, {0x00, 0xd2, 0xd2}, {0x01, 0xf3, 0xd3}, {0x01, 0xf4, 0xd4}, {0x01, 0xf5, 0xd5}, {0x01, 0xf6, 0xd6}, {0x01, 0xf7, 0xd7}, {0x01, 0xf8, 0xd8}, {0x01, 0xf9, 0xd9}, {0x01, 0xfa, 0xda}, {0x01, 0xfb, 0xdb}, {0x00, 0xdc, 0xb6}, {0x00, 0xdd, 0xb8}, {0x00, 0xde, 0xb9}, {0x00, 0xdf, 0xba}, {0x00, 0xe0, 0xe0}, {0x00, 0xe1, 0xc1}, {0x00, 0xe2, 0xc2}, {0x00, 0xe3, 0xc3}, {0x00, 0xe4, 0xc4}, {0x00, 0xe5, 0xc5}, {0x00, 0xe6, 0xc6}, {0x00, 0xe7, 0xc7}, {0x00, 0xe8, 0xc8}, {0x00, 0xe9, 0xc9}, {0x00, 0xea, 0xca}, {0x00, 0xeb, 0xcb}, {0x00, 0xec, 0xcc}, {0x00, 0xed, 0xcd}, {0x00, 0xee, 0xce}, {0x00, 0xef, 0xcf}, {0x00, 0xf0, 0xd0}, {0x00, 0xf1, 0xd1}, {0x00, 0xf2, 0xd3}, {0x00, 0xf3, 0xd3}, {0x00, 0xf4, 0xd4}, {0x00, 0xf5, 0xd5}, {0x00, 0xf6, 0xd6}, {0x00, 0xf7, 0xd7}, {0x00, 0xf8, 0xd8}, {0x00, 0xf9, 0xd9}, {0x00, 0xfa, 0xda}, {0x00, 0xfb, 0xdb}, {0x00, 0xfc, 0xbc}, {0x00, 0xfd, 0xbe}, {0x00, 0xfe, 0xbf}, {0x00, 0xff, 0xff}}; static struct cs_info iso8_tbl[] = { {0x00, 0x00, 0x00}, {0x00, 0x01, 0x01}, {0x00, 0x02, 0x02}, {0x00, 0x03, 0x03}, {0x00, 0x04, 0x04}, {0x00, 0x05, 0x05}, {0x00, 0x06, 0x06}, {0x00, 0x07, 0x07}, {0x00, 0x08, 0x08}, {0x00, 0x09, 0x09}, {0x00, 0x0a, 0x0a}, {0x00, 0x0b, 0x0b}, {0x00, 0x0c, 0x0c}, {0x00, 0x0d, 0x0d}, {0x00, 0x0e, 0x0e}, {0x00, 0x0f, 0x0f}, {0x00, 0x10, 0x10}, {0x00, 0x11, 0x11}, {0x00, 0x12, 0x12}, {0x00, 0x13, 0x13}, {0x00, 0x14, 0x14}, {0x00, 0x15, 0x15}, {0x00, 0x16, 0x16}, {0x00, 0x17, 0x17}, {0x00, 0x18, 0x18}, {0x00, 0x19, 0x19}, {0x00, 0x1a, 0x1a}, {0x00, 0x1b, 0x1b}, {0x00, 0x1c, 0x1c}, {0x00, 0x1d, 0x1d}, {0x00, 0x1e, 0x1e}, {0x00, 0x1f, 0x1f}, {0x00, 0x20, 0x20}, {0x00, 0x21, 0x21}, {0x00, 0x22, 0x22}, {0x00, 0x23, 0x23}, {0x00, 0x24, 0x24}, {0x00, 0x25, 0x25}, {0x00, 0x26, 0x26}, {0x00, 0x27, 0x27}, {0x00, 0x28, 0x28}, {0x00, 0x29, 0x29}, {0x00, 0x2a, 0x2a}, {0x00, 0x2b, 0x2b}, {0x00, 0x2c, 0x2c}, {0x00, 0x2d, 0x2d}, {0x00, 0x2e, 0x2e}, {0x00, 0x2f, 0x2f}, {0x00, 0x30, 0x30}, {0x00, 0x31, 0x31}, {0x00, 0x32, 0x32}, {0x00, 0x33, 0x33}, {0x00, 0x34, 0x34}, {0x00, 0x35, 0x35}, {0x00, 0x36, 0x36}, {0x00, 0x37, 0x37}, {0x00, 0x38, 0x38}, {0x00, 0x39, 0x39}, {0x00, 0x3a, 0x3a}, {0x00, 0x3b, 0x3b}, {0x00, 0x3c, 0x3c}, {0x00, 0x3d, 0x3d}, {0x00, 0x3e, 0x3e}, {0x00, 0x3f, 0x3f}, {0x00, 0x40, 0x40}, {0x01, 0x61, 0x41}, {0x01, 0x62, 0x42}, {0x01, 0x63, 0x43}, {0x01, 0x64, 0x44}, {0x01, 0x65, 0x45}, {0x01, 0x66, 0x46}, {0x01, 0x67, 0x47}, {0x01, 0x68, 0x48}, {0x01, 0x69, 0x49}, {0x01, 0x6a, 0x4a}, {0x01, 0x6b, 0x4b}, {0x01, 0x6c, 0x4c}, {0x01, 0x6d, 0x4d}, {0x01, 0x6e, 0x4e}, {0x01, 0x6f, 0x4f}, {0x01, 0x70, 0x50}, {0x01, 0x71, 0x51}, {0x01, 0x72, 0x52}, {0x01, 0x73, 0x53}, {0x01, 0x74, 0x54}, {0x01, 0x75, 0x55}, {0x01, 0x76, 0x56}, {0x01, 0x77, 0x57}, {0x01, 0x78, 0x58}, {0x01, 0x79, 0x59}, {0x01, 0x7a, 0x5a}, {0x00, 0x5b, 0x5b}, {0x00, 0x5c, 0x5c}, {0x00, 0x5d, 0x5d}, {0x00, 0x5e, 0x5e}, {0x00, 0x5f, 0x5f}, {0x00, 0x60, 0x60}, {0x00, 0x61, 0x41}, {0x00, 0x62, 0x42}, {0x00, 0x63, 0x43}, {0x00, 0x64, 0x44}, {0x00, 0x65, 0x45}, {0x00, 0x66, 0x46}, {0x00, 0x67, 0x47}, {0x00, 0x68, 0x48}, {0x00, 0x69, 0x49}, {0x00, 0x6a, 0x4a}, {0x00, 0x6b, 0x4b}, {0x00, 0x6c, 0x4c}, {0x00, 0x6d, 0x4d}, {0x00, 0x6e, 0x4e}, {0x00, 0x6f, 0x4f}, {0x00, 0x70, 0x50}, {0x00, 0x71, 0x51}, {0x00, 0x72, 0x52}, {0x00, 0x73, 0x53}, {0x00, 0x74, 0x54}, {0x00, 0x75, 0x55}, {0x00, 0x76, 0x56}, {0x00, 0x77, 0x57}, {0x00, 0x78, 0x58}, {0x00, 0x79, 0x59}, {0x00, 0x7a, 0x5a}, {0x00, 0x7b, 0x7b}, {0x00, 0x7c, 0x7c}, {0x00, 0x7d, 0x7d}, {0x00, 0x7e, 0x7e}, {0x00, 0x7f, 0x7f}, {0x00, 0x80, 0x80}, {0x00, 0x81, 0x81}, {0x00, 0x82, 0x82}, {0x00, 0x83, 0x83}, {0x00, 0x84, 0x84}, {0x00, 0x85, 0x85}, {0x00, 0x86, 0x86}, {0x00, 0x87, 0x87}, {0x00, 0x88, 0x88}, {0x00, 0x89, 0x89}, {0x00, 0x8a, 0x8a}, {0x00, 0x8b, 0x8b}, {0x00, 0x8c, 0x8c}, {0x00, 0x8d, 0x8d}, {0x00, 0x8e, 0x8e}, {0x00, 0x8f, 0x8f}, {0x00, 0x90, 0x90}, {0x00, 0x91, 0x91}, {0x00, 0x92, 0x92}, {0x00, 0x93, 0x93}, {0x00, 0x94, 0x94}, {0x00, 0x95, 0x95}, {0x00, 0x96, 0x96}, {0x00, 0x97, 0x97}, {0x00, 0x98, 0x98}, {0x00, 0x99, 0x99}, {0x00, 0x9a, 0x9a}, {0x00, 0x9b, 0x9b}, {0x00, 0x9c, 0x9c}, {0x00, 0x9d, 0x9d}, {0x00, 0x9e, 0x9e}, {0x00, 0x9f, 0x9f}, {0x00, 0xa0, 0xa0}, {0x00, 0xa1, 0xa1}, {0x00, 0xa2, 0xa2}, {0x00, 0xa3, 0xa3}, {0x00, 0xa4, 0xa4}, {0x00, 0xa5, 0xa5}, {0x00, 0xa6, 0xa6}, {0x00, 0xa7, 0xa7}, {0x00, 0xa8, 0xa8}, {0x00, 0xa9, 0xa9}, {0x00, 0xaa, 0xaa}, {0x00, 0xab, 0xab}, {0x00, 0xac, 0xac}, {0x00, 0xad, 0xad}, {0x00, 0xae, 0xae}, {0x00, 0xaf, 0xaf}, {0x00, 0xb0, 0xb0}, {0x00, 0xb1, 0xb1}, {0x00, 0xb2, 0xb2}, {0x00, 0xb3, 0xb3}, {0x00, 0xb4, 0xb4}, {0x00, 0xb5, 0xb5}, {0x00, 0xb6, 0xb6}, {0x00, 0xb7, 0xb7}, {0x00, 0xb8, 0xb8}, {0x00, 0xb9, 0xb9}, {0x00, 0xba, 0xba}, {0x00, 0xbb, 0xbb}, {0x00, 0xbc, 0xbc}, {0x00, 0xbd, 0xbd}, {0x00, 0xbe, 0xbe}, {0x00, 0xbf, 0xbf}, {0x00, 0xc0, 0xc0}, {0x00, 0xc1, 0xc1}, {0x00, 0xc2, 0xc2}, {0x00, 0xc3, 0xc3}, {0x00, 0xc4, 0xc4}, {0x00, 0xc5, 0xc5}, {0x00, 0xc6, 0xc6}, {0x00, 0xc7, 0xc7}, {0x00, 0xc8, 0xc8}, {0x00, 0xc9, 0xc9}, {0x00, 0xca, 0xca}, {0x00, 0xcb, 0xcb}, {0x00, 0xcc, 0xcc}, {0x00, 0xcd, 0xcd}, {0x00, 0xce, 0xce}, {0x00, 0xcf, 0xcf}, {0x00, 0xd0, 0xd0}, {0x00, 0xd1, 0xd1}, {0x00, 0xd2, 0xd2}, {0x00, 0xd3, 0xd3}, {0x00, 0xd4, 0xd4}, {0x00, 0xd5, 0xd5}, {0x00, 0xd6, 0xd6}, {0x00, 0xd7, 0xd7}, {0x00, 0xd8, 0xd8}, {0x00, 0xd9, 0xd9}, {0x00, 0xda, 0xda}, {0x00, 0xdb, 0xdb}, {0x00, 0xdc, 0xdc}, {0x00, 0xdd, 0xdd}, {0x00, 0xde, 0xde}, {0x00, 0xdf, 0xdf}, {0x00, 0xe0, 0xe0}, {0x00, 0xe1, 0xe1}, {0x00, 0xe2, 0xe2}, {0x00, 0xe3, 0xe3}, {0x00, 0xe4, 0xe4}, {0x00, 0xe5, 0xe5}, {0x00, 0xe6, 0xe6}, {0x00, 0xe7, 0xe7}, {0x00, 0xe8, 0xe8}, {0x00, 0xe9, 0xe9}, {0x00, 0xea, 0xea}, {0x00, 0xeb, 0xeb}, {0x00, 0xec, 0xec}, {0x00, 0xed, 0xed}, {0x00, 0xee, 0xee}, {0x00, 0xef, 0xef}, {0x00, 0xf0, 0xf0}, {0x00, 0xf1, 0xf1}, {0x00, 0xf2, 0xf2}, {0x00, 0xf3, 0xf3}, {0x00, 0xf4, 0xf4}, {0x00, 0xf5, 0xf5}, {0x00, 0xf6, 0xf6}, {0x00, 0xf7, 0xf7}, {0x00, 0xf8, 0xf8}, {0x00, 0xf9, 0xf9}, {0x00, 0xfa, 0xfa}, {0x00, 0xfb, 0xfb}, {0x00, 0xfc, 0xfc}, {0x00, 0xfd, 0xfd}, {0x00, 0xfe, 0xfe}, {0x00, 0xff, 0xff}}; static struct cs_info iso9_tbl[] = { {0x00, 0x00, 0x00}, {0x00, 0x01, 0x01}, {0x00, 0x02, 0x02}, {0x00, 0x03, 0x03}, {0x00, 0x04, 0x04}, {0x00, 0x05, 0x05}, {0x00, 0x06, 0x06}, {0x00, 0x07, 0x07}, {0x00, 0x08, 0x08}, {0x00, 0x09, 0x09}, {0x00, 0x0a, 0x0a}, {0x00, 0x0b, 0x0b}, {0x00, 0x0c, 0x0c}, {0x00, 0x0d, 0x0d}, {0x00, 0x0e, 0x0e}, {0x00, 0x0f, 0x0f}, {0x00, 0x10, 0x10}, {0x00, 0x11, 0x11}, {0x00, 0x12, 0x12}, {0x00, 0x13, 0x13}, {0x00, 0x14, 0x14}, {0x00, 0x15, 0x15}, {0x00, 0x16, 0x16}, {0x00, 0x17, 0x17}, {0x00, 0x18, 0x18}, {0x00, 0x19, 0x19}, {0x00, 0x1a, 0x1a}, {0x00, 0x1b, 0x1b}, {0x00, 0x1c, 0x1c}, {0x00, 0x1d, 0x1d}, {0x00, 0x1e, 0x1e}, {0x00, 0x1f, 0x1f}, {0x00, 0x20, 0x20}, {0x00, 0x21, 0x21}, {0x00, 0x22, 0x22}, {0x00, 0x23, 0x23}, {0x00, 0x24, 0x24}, {0x00, 0x25, 0x25}, {0x00, 0x26, 0x26}, {0x00, 0x27, 0x27}, {0x00, 0x28, 0x28}, {0x00, 0x29, 0x29}, {0x00, 0x2a, 0x2a}, {0x00, 0x2b, 0x2b}, {0x00, 0x2c, 0x2c}, {0x00, 0x2d, 0x2d}, {0x00, 0x2e, 0x2e}, {0x00, 0x2f, 0x2f}, {0x00, 0x30, 0x30}, {0x00, 0x31, 0x31}, {0x00, 0x32, 0x32}, {0x00, 0x33, 0x33}, {0x00, 0x34, 0x34}, {0x00, 0x35, 0x35}, {0x00, 0x36, 0x36}, {0x00, 0x37, 0x37}, {0x00, 0x38, 0x38}, {0x00, 0x39, 0x39}, {0x00, 0x3a, 0x3a}, {0x00, 0x3b, 0x3b}, {0x00, 0x3c, 0x3c}, {0x00, 0x3d, 0x3d}, {0x00, 0x3e, 0x3e}, {0x00, 0x3f, 0x3f}, {0x00, 0x40, 0x40}, {0x01, 0x61, 0x41}, {0x01, 0x62, 0x42}, {0x01, 0x63, 0x43}, {0x01, 0x64, 0x44}, {0x01, 0x65, 0x45}, {0x01, 0x66, 0x46}, {0x01, 0x67, 0x47}, {0x01, 0x68, 0x48}, {0x01, 0xfd, 0x49}, {0x01, 0x6a, 0x4a}, {0x01, 0x6b, 0x4b}, {0x01, 0x6c, 0x4c}, {0x01, 0x6d, 0x4d}, {0x01, 0x6e, 0x4e}, {0x01, 0x6f, 0x4f}, {0x01, 0x70, 0x50}, {0x01, 0x71, 0x51}, {0x01, 0x72, 0x52}, {0x01, 0x73, 0x53}, {0x01, 0x74, 0x54}, {0x01, 0x75, 0x55}, {0x01, 0x76, 0x56}, {0x01, 0x77, 0x57}, {0x01, 0x78, 0x58}, {0x01, 0x79, 0x59}, {0x01, 0x7a, 0x5a}, {0x00, 0x5b, 0x5b}, {0x00, 0x5c, 0x5c}, {0x00, 0x5d, 0x5d}, {0x00, 0x5e, 0x5e}, {0x00, 0x5f, 0x5f}, {0x00, 0x60, 0x60}, {0x00, 0x61, 0x41}, {0x00, 0x62, 0x42}, {0x00, 0x63, 0x43}, {0x00, 0x64, 0x44}, {0x00, 0x65, 0x45}, {0x00, 0x66, 0x46}, {0x00, 0x67, 0x47}, {0x00, 0x68, 0x48}, {0x00, 0x69, 0xdd}, {0x00, 0x6a, 0x4a}, {0x00, 0x6b, 0x4b}, {0x00, 0x6c, 0x4c}, {0x00, 0x6d, 0x4d}, {0x00, 0x6e, 0x4e}, {0x00, 0x6f, 0x4f}, {0x00, 0x70, 0x50}, {0x00, 0x71, 0x51}, {0x00, 0x72, 0x52}, {0x00, 0x73, 0x53}, {0x00, 0x74, 0x54}, {0x00, 0x75, 0x55}, {0x00, 0x76, 0x56}, {0x00, 0x77, 0x57}, {0x00, 0x78, 0x58}, {0x00, 0x79, 0x59}, {0x00, 0x7a, 0x5a}, {0x00, 0x7b, 0x7b}, {0x00, 0x7c, 0x7c}, {0x00, 0x7d, 0x7d}, {0x00, 0x7e, 0x7e}, {0x00, 0x7f, 0x7f}, {0x00, 0x80, 0x80}, {0x00, 0x81, 0x81}, {0x00, 0x82, 0x82}, {0x00, 0x83, 0x83}, {0x00, 0x84, 0x84}, {0x00, 0x85, 0x85}, {0x00, 0x86, 0x86}, {0x00, 0x87, 0x87}, {0x00, 0x88, 0x88}, {0x00, 0x89, 0x89}, {0x00, 0x8a, 0x8a}, {0x00, 0x8b, 0x8b}, {0x00, 0x8c, 0x8c}, {0x00, 0x8d, 0x8d}, {0x00, 0x8e, 0x8e}, {0x00, 0x8f, 0x8f}, {0x00, 0x90, 0x90}, {0x00, 0x91, 0x91}, {0x00, 0x92, 0x92}, {0x00, 0x93, 0x93}, {0x00, 0x94, 0x94}, {0x00, 0x95, 0x95}, {0x00, 0x96, 0x96}, {0x00, 0x97, 0x97}, {0x00, 0x98, 0x98}, {0x00, 0x99, 0x99}, {0x00, 0x9a, 0x9a}, {0x00, 0x9b, 0x9b}, {0x00, 0x9c, 0x9c}, {0x00, 0x9d, 0x9d}, {0x00, 0x9e, 0x9e}, {0x00, 0x9f, 0x9f}, {0x00, 0xa0, 0xa0}, {0x00, 0xa1, 0xa1}, {0x00, 0xa2, 0xa2}, {0x00, 0xa3, 0xa3}, {0x00, 0xa4, 0xa4}, {0x00, 0xa5, 0xa5}, {0x00, 0xa6, 0xa6}, {0x00, 0xa7, 0xa7}, {0x00, 0xa8, 0xa8}, {0x00, 0xa9, 0xa9}, {0x00, 0xaa, 0xaa}, {0x00, 0xab, 0xab}, {0x00, 0xac, 0xac}, {0x00, 0xad, 0xad}, {0x00, 0xae, 0xae}, {0x00, 0xaf, 0xaf}, {0x00, 0xb0, 0xb0}, {0x00, 0xb1, 0xb1}, {0x00, 0xb2, 0xb2}, {0x00, 0xb3, 0xb3}, {0x00, 0xb4, 0xb4}, {0x00, 0xb5, 0xb5}, {0x00, 0xb6, 0xb6}, {0x00, 0xb7, 0xb7}, {0x00, 0xb8, 0xb8}, {0x00, 0xb9, 0xb9}, {0x00, 0xba, 0xba}, {0x00, 0xbb, 0xbb}, {0x00, 0xbc, 0xbc}, {0x00, 0xbd, 0xbd}, {0x00, 0xbe, 0xbe}, {0x00, 0xbf, 0xbf}, {0x01, 0xe0, 0xc0}, {0x01, 0xe1, 0xc1}, {0x01, 0xe2, 0xc2}, {0x01, 0xe3, 0xc3}, {0x01, 0xe4, 0xc4}, {0x01, 0xe5, 0xc5}, {0x01, 0xe6, 0xc6}, {0x01, 0xe7, 0xc7}, {0x01, 0xe8, 0xc8}, {0x01, 0xe9, 0xc9}, {0x01, 0xea, 0xca}, {0x01, 0xeb, 0xcb}, {0x01, 0xec, 0xcc}, {0x01, 0xed, 0xcd}, {0x01, 0xee, 0xce}, {0x01, 0xef, 0xcf}, {0x01, 0xf0, 0xd0}, {0x01, 0xf1, 0xd1}, {0x01, 0xf2, 0xd2}, {0x01, 0xf3, 0xd3}, {0x01, 0xf4, 0xd4}, {0x01, 0xf5, 0xd5}, {0x01, 0xf6, 0xd6}, {0x00, 0xd7, 0xd7}, {0x01, 0xf8, 0xd8}, {0x01, 0xf9, 0xd9}, {0x01, 0xfa, 0xda}, {0x01, 0xfb, 0xdb}, {0x01, 0xfc, 0xdc}, {0x01, 0x69, 0xdd}, {0x01, 0xfe, 0xde}, {0x00, 0xdf, 0xdf}, {0x00, 0xe0, 0xc0}, {0x00, 0xe1, 0xc1}, {0x00, 0xe2, 0xc2}, {0x00, 0xe3, 0xc3}, {0x00, 0xe4, 0xc4}, {0x00, 0xe5, 0xc5}, {0x00, 0xe6, 0xc6}, {0x00, 0xe7, 0xc7}, {0x00, 0xe8, 0xc8}, {0x00, 0xe9, 0xc9}, {0x00, 0xea, 0xca}, {0x00, 0xeb, 0xcb}, {0x00, 0xec, 0xcc}, {0x00, 0xed, 0xcd}, {0x00, 0xee, 0xce}, {0x00, 0xef, 0xcf}, {0x00, 0xf0, 0xd0}, {0x00, 0xf1, 0xd1}, {0x00, 0xf2, 0xd2}, {0x00, 0xf3, 0xd3}, {0x00, 0xf4, 0xd4}, {0x00, 0xf5, 0xd5}, {0x00, 0xf6, 0xd6}, {0x00, 0xf7, 0xf7}, {0x00, 0xf8, 0xd8}, {0x00, 0xf9, 0xd9}, {0x00, 0xfa, 0xda}, {0x00, 0xfb, 0xdb}, {0x00, 0xfc, 0xdc}, {0x00, 0xfd, 0x49}, {0x00, 0xfe, 0xde}, {0x00, 0xff, 0xff}}; static struct cs_info iso10_tbl[] = { {0x00, 0x00, 0x00}, {0x00, 0x01, 0x01}, {0x00, 0x02, 0x02}, {0x00, 0x03, 0x03}, {0x00, 0x04, 0x04}, {0x00, 0x05, 0x05}, {0x00, 0x06, 0x06}, {0x00, 0x07, 0x07}, {0x00, 0x08, 0x08}, {0x00, 0x09, 0x09}, {0x00, 0x0a, 0x0a}, {0x00, 0x0b, 0x0b}, {0x00, 0x0c, 0x0c}, {0x00, 0x0d, 0x0d}, {0x00, 0x0e, 0x0e}, {0x00, 0x0f, 0x0f}, {0x00, 0x10, 0x10}, {0x00, 0x11, 0x11}, {0x00, 0x12, 0x12}, {0x00, 0x13, 0x13}, {0x00, 0x14, 0x14}, {0x00, 0x15, 0x15}, {0x00, 0x16, 0x16}, {0x00, 0x17, 0x17}, {0x00, 0x18, 0x18}, {0x00, 0x19, 0x19}, {0x00, 0x1a, 0x1a}, {0x00, 0x1b, 0x1b}, {0x00, 0x1c, 0x1c}, {0x00, 0x1d, 0x1d}, {0x00, 0x1e, 0x1e}, {0x00, 0x1f, 0x1f}, {0x00, 0x20, 0x20}, {0x00, 0x21, 0x21}, {0x00, 0x22, 0x22}, {0x00, 0x23, 0x23}, {0x00, 0x24, 0x24}, {0x00, 0x25, 0x25}, {0x00, 0x26, 0x26}, {0x00, 0x27, 0x27}, {0x00, 0x28, 0x28}, {0x00, 0x29, 0x29}, {0x00, 0x2a, 0x2a}, {0x00, 0x2b, 0x2b}, {0x00, 0x2c, 0x2c}, {0x00, 0x2d, 0x2d}, {0x00, 0x2e, 0x2e}, {0x00, 0x2f, 0x2f}, {0x00, 0x30, 0x30}, {0x00, 0x31, 0x31}, {0x00, 0x32, 0x32}, {0x00, 0x33, 0x33}, {0x00, 0x34, 0x34}, {0x00, 0x35, 0x35}, {0x00, 0x36, 0x36}, {0x00, 0x37, 0x37}, {0x00, 0x38, 0x38}, {0x00, 0x39, 0x39}, {0x00, 0x3a, 0x3a}, {0x00, 0x3b, 0x3b}, {0x00, 0x3c, 0x3c}, {0x00, 0x3d, 0x3d}, {0x00, 0x3e, 0x3e}, {0x00, 0x3f, 0x3f}, {0x00, 0x40, 0x40}, {0x01, 0x61, 0x41}, {0x01, 0x62, 0x42}, {0x01, 0x63, 0x43}, {0x01, 0x64, 0x44}, {0x01, 0x65, 0x45}, {0x01, 0x66, 0x46}, {0x01, 0x67, 0x47}, {0x01, 0x68, 0x48}, {0x01, 0x69, 0x49}, {0x01, 0x6a, 0x4a}, {0x01, 0x6b, 0x4b}, {0x01, 0x6c, 0x4c}, {0x01, 0x6d, 0x4d}, {0x01, 0x6e, 0x4e}, {0x01, 0x6f, 0x4f}, {0x01, 0x70, 0x50}, {0x01, 0x71, 0x51}, {0x01, 0x72, 0x52}, {0x01, 0x73, 0x53}, {0x01, 0x74, 0x54}, {0x01, 0x75, 0x55}, {0x01, 0x76, 0x56}, {0x01, 0x77, 0x57}, {0x01, 0x78, 0x58}, {0x01, 0x79, 0x59}, {0x01, 0x7a, 0x5a}, {0x00, 0x5b, 0x5b}, {0x00, 0x5c, 0x5c}, {0x00, 0x5d, 0x5d}, {0x00, 0x5e, 0x5e}, {0x00, 0x5f, 0x5f}, {0x00, 0x60, 0x60}, {0x00, 0x61, 0x41}, {0x00, 0x62, 0x42}, {0x00, 0x63, 0x43}, {0x00, 0x64, 0x44}, {0x00, 0x65, 0x45}, {0x00, 0x66, 0x46}, {0x00, 0x67, 0x47}, {0x00, 0x68, 0x48}, {0x00, 0x69, 0x49}, {0x00, 0x6a, 0x4a}, {0x00, 0x6b, 0x4b}, {0x00, 0x6c, 0x4c}, {0x00, 0x6d, 0x4d}, {0x00, 0x6e, 0x4e}, {0x00, 0x6f, 0x4f}, {0x00, 0x70, 0x50}, {0x00, 0x71, 0x51}, {0x00, 0x72, 0x52}, {0x00, 0x73, 0x53}, {0x00, 0x74, 0x54}, {0x00, 0x75, 0x55}, {0x00, 0x76, 0x56}, {0x00, 0x77, 0x57}, {0x00, 0x78, 0x58}, {0x00, 0x79, 0x59}, {0x00, 0x7a, 0x5a}, {0x00, 0x7b, 0x7b}, {0x00, 0x7c, 0x7c}, {0x00, 0x7d, 0x7d}, {0x00, 0x7e, 0x7e}, {0x00, 0x7f, 0x7f}, {0x00, 0x80, 0x80}, {0x00, 0x81, 0x81}, {0x00, 0x82, 0x82}, {0x00, 0x83, 0x83}, {0x00, 0x84, 0x84}, {0x00, 0x85, 0x85}, {0x00, 0x86, 0x86}, {0x00, 0x87, 0x87}, {0x00, 0x88, 0x88}, {0x00, 0x89, 0x89}, {0x00, 0x8a, 0x8a}, {0x00, 0x8b, 0x8b}, {0x00, 0x8c, 0x8c}, {0x00, 0x8d, 0x8d}, {0x00, 0x8e, 0x8e}, {0x00, 0x8f, 0x8f}, {0x00, 0x90, 0x90}, {0x00, 0x91, 0x91}, {0x00, 0x92, 0x92}, {0x00, 0x93, 0x93}, {0x00, 0x94, 0x94}, {0x00, 0x95, 0x95}, {0x00, 0x96, 0x96}, {0x00, 0x97, 0x97}, {0x00, 0x98, 0x98}, {0x00, 0x99, 0x99}, {0x00, 0x9a, 0x9a}, {0x00, 0x9b, 0x9b}, {0x00, 0x9c, 0x9c}, {0x00, 0x9d, 0x9d}, {0x00, 0x9e, 0x9e}, {0x00, 0x9f, 0x9f}, {0x00, 0xa0, 0xa0}, {0x00, 0xa1, 0xa1}, {0x00, 0xa2, 0xa2}, {0x00, 0xa3, 0xa3}, {0x00, 0xa4, 0xa4}, {0x00, 0xa5, 0xa5}, {0x00, 0xa6, 0xa6}, {0x00, 0xa7, 0xa7}, {0x00, 0xa8, 0xa8}, {0x00, 0xa9, 0xa9}, {0x00, 0xaa, 0xaa}, {0x00, 0xab, 0xab}, {0x00, 0xac, 0xac}, {0x00, 0xad, 0xad}, {0x00, 0xae, 0xae}, {0x00, 0xaf, 0xaf}, {0x00, 0xb0, 0xb0}, {0x00, 0xb1, 0xb1}, {0x00, 0xb2, 0xb2}, {0x00, 0xb3, 0xb3}, {0x00, 0xb4, 0xb4}, {0x00, 0xb5, 0xb5}, {0x00, 0xb6, 0xb6}, {0x00, 0xb7, 0xb7}, {0x00, 0xb8, 0xb8}, {0x00, 0xb9, 0xb9}, {0x00, 0xba, 0xba}, {0x00, 0xbb, 0xbb}, {0x00, 0xbc, 0xbc}, {0x00, 0xbd, 0xbd}, {0x00, 0xbe, 0xbe}, {0x00, 0xbf, 0xbf}, {0x00, 0xc0, 0xc0}, {0x00, 0xc1, 0xc1}, {0x00, 0xc2, 0xc2}, {0x00, 0xc3, 0xc3}, {0x00, 0xc4, 0xc4}, {0x00, 0xc5, 0xc5}, {0x00, 0xc6, 0xc6}, {0x00, 0xc7, 0xc7}, {0x00, 0xc8, 0xc8}, {0x00, 0xc9, 0xc9}, {0x00, 0xca, 0xca}, {0x00, 0xcb, 0xcb}, {0x00, 0xcc, 0xcc}, {0x00, 0xcd, 0xcd}, {0x00, 0xce, 0xce}, {0x00, 0xcf, 0xcf}, {0x00, 0xd0, 0xd0}, {0x00, 0xd1, 0xd1}, {0x00, 0xd2, 0xd2}, {0x00, 0xd3, 0xd3}, {0x00, 0xd4, 0xd4}, {0x00, 0xd5, 0xd5}, {0x00, 0xd6, 0xd6}, {0x00, 0xd7, 0xd7}, {0x00, 0xd8, 0xd8}, {0x00, 0xd9, 0xd9}, {0x00, 0xda, 0xda}, {0x00, 0xdb, 0xdb}, {0x00, 0xdc, 0xdc}, {0x00, 0xdd, 0xdd}, {0x00, 0xde, 0xde}, {0x00, 0xdf, 0xdf}, {0x00, 0xe0, 0xe0}, {0x00, 0xe1, 0xe1}, {0x00, 0xe2, 0xe2}, {0x00, 0xe3, 0xe3}, {0x00, 0xe4, 0xe4}, {0x00, 0xe5, 0xe5}, {0x00, 0xe6, 0xe6}, {0x00, 0xe7, 0xe7}, {0x00, 0xe8, 0xe8}, {0x00, 0xe9, 0xe9}, {0x00, 0xea, 0xea}, {0x00, 0xeb, 0xeb}, {0x00, 0xec, 0xec}, {0x00, 0xed, 0xed}, {0x00, 0xee, 0xee}, {0x00, 0xef, 0xef}, {0x00, 0xf0, 0xf0}, {0x00, 0xf1, 0xf1}, {0x00, 0xf2, 0xf2}, {0x00, 0xf3, 0xf3}, {0x00, 0xf4, 0xf4}, {0x00, 0xf5, 0xf5}, {0x00, 0xf6, 0xf6}, {0x00, 0xf7, 0xf7}, {0x00, 0xf8, 0xf8}, {0x00, 0xf9, 0xf9}, {0x00, 0xfa, 0xfa}, {0x00, 0xfb, 0xfb}, {0x00, 0xfc, 0xfc}, {0x00, 0xfd, 0xfd}, {0x00, 0xfe, 0xfe}, {0x00, 0xff, 0xff}}; static struct cs_info koi8r_tbl[] = { {0x00, 0x00, 0x00}, {0x00, 0x01, 0x01}, {0x00, 0x02, 0x02}, {0x00, 0x03, 0x03}, {0x00, 0x04, 0x04}, {0x00, 0x05, 0x05}, {0x00, 0x06, 0x06}, {0x00, 0x07, 0x07}, {0x00, 0x08, 0x08}, {0x00, 0x09, 0x09}, {0x00, 0x0a, 0x0a}, {0x00, 0x0b, 0x0b}, {0x00, 0x0c, 0x0c}, {0x00, 0x0d, 0x0d}, {0x00, 0x0e, 0x0e}, {0x00, 0x0f, 0x0f}, {0x00, 0x10, 0x10}, {0x00, 0x11, 0x11}, {0x00, 0x12, 0x12}, {0x00, 0x13, 0x13}, {0x00, 0x14, 0x14}, {0x00, 0x15, 0x15}, {0x00, 0x16, 0x16}, {0x00, 0x17, 0x17}, {0x00, 0x18, 0x18}, {0x00, 0x19, 0x19}, {0x00, 0x1a, 0x1a}, {0x00, 0x1b, 0x1b}, {0x00, 0x1c, 0x1c}, {0x00, 0x1d, 0x1d}, {0x00, 0x1e, 0x1e}, {0x00, 0x1f, 0x1f}, {0x00, 0x20, 0x20}, {0x00, 0x21, 0x21}, {0x00, 0x22, 0x22}, {0x00, 0x23, 0x23}, {0x00, 0x24, 0x24}, {0x00, 0x25, 0x25}, {0x00, 0x26, 0x26}, {0x00, 0x27, 0x27}, {0x00, 0x28, 0x28}, {0x00, 0x29, 0x29}, {0x00, 0x2a, 0x2a}, {0x00, 0x2b, 0x2b}, {0x00, 0x2c, 0x2c}, {0x00, 0x2d, 0x2d}, {0x00, 0x2e, 0x2e}, {0x00, 0x2f, 0x2f}, {0x00, 0x30, 0x30}, {0x00, 0x31, 0x31}, {0x00, 0x32, 0x32}, {0x00, 0x33, 0x33}, {0x00, 0x34, 0x34}, {0x00, 0x35, 0x35}, {0x00, 0x36, 0x36}, {0x00, 0x37, 0x37}, {0x00, 0x38, 0x38}, {0x00, 0x39, 0x39}, {0x00, 0x3a, 0x3a}, {0x00, 0x3b, 0x3b}, {0x00, 0x3c, 0x3c}, {0x00, 0x3d, 0x3d}, {0x00, 0x3e, 0x3e}, {0x00, 0x3f, 0x3f}, {0x00, 0x40, 0x40}, {0x01, 0x61, 0x41}, {0x01, 0x62, 0x42}, {0x01, 0x63, 0x43}, {0x01, 0x64, 0x44}, {0x01, 0x65, 0x45}, {0x01, 0x66, 0x46}, {0x01, 0x67, 0x47}, {0x01, 0x68, 0x48}, {0x01, 0x69, 0x49}, {0x01, 0x6a, 0x4a}, {0x01, 0x6b, 0x4b}, {0x01, 0x6c, 0x4c}, {0x01, 0x6d, 0x4d}, {0x01, 0x6e, 0x4e}, {0x01, 0x6f, 0x4f}, {0x01, 0x70, 0x50}, {0x01, 0x71, 0x51}, {0x01, 0x72, 0x52}, {0x01, 0x73, 0x53}, {0x01, 0x74, 0x54}, {0x01, 0x75, 0x55}, {0x01, 0x76, 0x56}, {0x01, 0x77, 0x57}, {0x01, 0x78, 0x58}, {0x01, 0x79, 0x59}, {0x01, 0x7a, 0x5a}, {0x00, 0x5b, 0x5b}, {0x00, 0x5c, 0x5c}, {0x00, 0x5d, 0x5d}, {0x00, 0x5e, 0x5e}, {0x00, 0x5f, 0x5f}, {0x00, 0x60, 0x60}, {0x00, 0x61, 0x41}, {0x00, 0x62, 0x42}, {0x00, 0x63, 0x43}, {0x00, 0x64, 0x44}, {0x00, 0x65, 0x45}, {0x00, 0x66, 0x46}, {0x00, 0x67, 0x47}, {0x00, 0x68, 0x48}, {0x00, 0x69, 0x49}, {0x00, 0x6a, 0x4a}, {0x00, 0x6b, 0x4b}, {0x00, 0x6c, 0x4c}, {0x00, 0x6d, 0x4d}, {0x00, 0x6e, 0x4e}, {0x00, 0x6f, 0x4f}, {0x00, 0x70, 0x50}, {0x00, 0x71, 0x51}, {0x00, 0x72, 0x52}, {0x00, 0x73, 0x53}, {0x00, 0x74, 0x54}, {0x00, 0x75, 0x55}, {0x00, 0x76, 0x56}, {0x00, 0x77, 0x57}, {0x00, 0x78, 0x58}, {0x00, 0x79, 0x59}, {0x00, 0x7a, 0x5a}, {0x00, 0x7b, 0x7b}, {0x00, 0x7c, 0x7c}, {0x00, 0x7d, 0x7d}, {0x00, 0x7e, 0x7e}, {0x00, 0x7f, 0x7f}, {0x00, 0x80, 0x80}, {0x00, 0x81, 0x81}, {0x00, 0x82, 0x82}, {0x00, 0x83, 0x83}, {0x00, 0x84, 0x84}, {0x00, 0x85, 0x85}, {0x00, 0x86, 0x86}, {0x00, 0x87, 0x87}, {0x00, 0x88, 0x88}, {0x00, 0x89, 0x89}, {0x00, 0x8a, 0x8a}, {0x00, 0x8b, 0x8b}, {0x00, 0x8c, 0x8c}, {0x00, 0x8d, 0x8d}, {0x00, 0x8e, 0x8e}, {0x00, 0x8f, 0x8f}, {0x00, 0x90, 0x90}, {0x00, 0x91, 0x91}, {0x00, 0x92, 0x92}, {0x00, 0x93, 0x93}, {0x00, 0x94, 0x94}, {0x00, 0x95, 0x95}, {0x00, 0x96, 0x96}, {0x00, 0x97, 0x97}, {0x00, 0x98, 0x98}, {0x00, 0x99, 0x99}, {0x00, 0x9a, 0x9a}, {0x00, 0x9b, 0x9b}, {0x00, 0x9c, 0x9c}, {0x00, 0x9d, 0x9d}, {0x00, 0x9e, 0x9e}, {0x00, 0x9f, 0x9f}, {0x00, 0xa0, 0xa0}, {0x00, 0xa1, 0xa1}, {0x00, 0xa2, 0xa2}, {0x00, 0xa3, 0xb3}, {0x00, 0xa4, 0xa4}, {0x00, 0xa5, 0xa5}, {0x00, 0xa6, 0xa6}, {0x00, 0xa7, 0xa7}, {0x00, 0xa8, 0xa8}, {0x00, 0xa9, 0xa9}, {0x00, 0xaa, 0xaa}, {0x00, 0xab, 0xab}, {0x00, 0xac, 0xac}, {0x00, 0xad, 0xad}, {0x00, 0xae, 0xae}, {0x00, 0xaf, 0xaf}, {0x00, 0xb0, 0xb0}, {0x00, 0xb1, 0xb1}, {0x00, 0xb2, 0xb2}, {0x01, 0xa3, 0xb3}, {0x00, 0xb4, 0xb4}, {0x00, 0xb5, 0xb5}, {0x00, 0xb6, 0xb6}, {0x00, 0xb7, 0xb7}, {0x00, 0xb8, 0xb8}, {0x00, 0xb9, 0xb9}, {0x00, 0xba, 0xba}, {0x00, 0xbb, 0xbb}, {0x00, 0xbc, 0xbc}, {0x00, 0xbd, 0xbd}, {0x00, 0xbe, 0xbe}, {0x00, 0xbf, 0xbf}, {0x00, 0xc0, 0xe0}, {0x00, 0xc1, 0xe1}, {0x00, 0xc2, 0xe2}, {0x00, 0xc3, 0xe3}, {0x00, 0xc4, 0xe4}, {0x00, 0xc5, 0xe5}, {0x00, 0xc6, 0xe6}, {0x00, 0xc7, 0xe7}, {0x00, 0xc8, 0xe8}, {0x00, 0xc9, 0xe9}, {0x00, 0xca, 0xea}, {0x00, 0xcb, 0xeb}, {0x00, 0xcc, 0xec}, {0x00, 0xcd, 0xed}, {0x00, 0xce, 0xee}, {0x00, 0xcf, 0xef}, {0x00, 0xd0, 0xf0}, {0x00, 0xd1, 0xf1}, {0x00, 0xd2, 0xf2}, {0x00, 0xd3, 0xf3}, {0x00, 0xd4, 0xf4}, {0x00, 0xd5, 0xf5}, {0x00, 0xd6, 0xf6}, {0x00, 0xd7, 0xf7}, {0x00, 0xd8, 0xf8}, {0x00, 0xd9, 0xf9}, {0x00, 0xda, 0xfa}, {0x00, 0xdb, 0xfb}, {0x00, 0xdc, 0xfc}, {0x00, 0xdd, 0xfd}, {0x00, 0xde, 0xfe}, {0x00, 0xdf, 0xff}, {0x01, 0xc0, 0xe0}, {0x01, 0xc1, 0xe1}, {0x01, 0xc2, 0xe2}, {0x01, 0xc3, 0xe3}, {0x01, 0xc4, 0xe4}, {0x01, 0xc5, 0xe5}, {0x01, 0xc6, 0xe6}, {0x01, 0xc7, 0xe7}, {0x01, 0xc8, 0xe8}, {0x01, 0xc9, 0xe9}, {0x01, 0xca, 0xea}, {0x01, 0xcb, 0xeb}, {0x01, 0xcc, 0xec}, {0x01, 0xcd, 0xed}, {0x01, 0xce, 0xee}, {0x01, 0xcf, 0xef}, {0x01, 0xd0, 0xf0}, {0x01, 0xd1, 0xf1}, {0x01, 0xd2, 0xf2}, {0x01, 0xd3, 0xf3}, {0x01, 0xd4, 0xf4}, {0x01, 0xd5, 0xf5}, {0x01, 0xd6, 0xf6}, {0x01, 0xd7, 0xf7}, {0x01, 0xd8, 0xf8}, {0x01, 0xd9, 0xf9}, {0x01, 0xda, 0xfa}, {0x01, 0xdb, 0xfb}, {0x01, 0xdc, 0xfc}, {0x01, 0xdd, 0xfd}, {0x01, 0xde, 0xfe}, {0x01, 0xdf, 0xff}}; static struct cs_info koi8u_tbl[] = { {0x00, 0x00, 0x00}, {0x00, 0x01, 0x01}, {0x00, 0x02, 0x02}, {0x00, 0x03, 0x03}, {0x00, 0x04, 0x04}, {0x00, 0x05, 0x05}, {0x00, 0x06, 0x06}, {0x00, 0x07, 0x07}, {0x00, 0x08, 0x08}, {0x00, 0x09, 0x09}, {0x00, 0x0a, 0x0a}, {0x00, 0x0b, 0x0b}, {0x00, 0x0c, 0x0c}, {0x00, 0x0d, 0x0d}, {0x00, 0x0e, 0x0e}, {0x00, 0x0f, 0x0f}, {0x00, 0x10, 0x10}, {0x00, 0x11, 0x11}, {0x00, 0x12, 0x12}, {0x00, 0x13, 0x13}, {0x00, 0x14, 0x14}, {0x00, 0x15, 0x15}, {0x00, 0x16, 0x16}, {0x00, 0x17, 0x17}, {0x00, 0x18, 0x18}, {0x00, 0x19, 0x19}, {0x00, 0x1a, 0x1a}, {0x00, 0x1b, 0x1b}, {0x00, 0x1c, 0x1c}, {0x00, 0x1d, 0x1d}, {0x00, 0x1e, 0x1e}, {0x00, 0x1f, 0x1f}, {0x00, 0x20, 0x20}, {0x00, 0x21, 0x21}, {0x00, 0x22, 0x22}, {0x00, 0x23, 0x23}, {0x00, 0x24, 0x24}, {0x00, 0x25, 0x25}, {0x00, 0x26, 0x26}, {0x00, 0x27, 0x27}, {0x00, 0x28, 0x28}, {0x00, 0x29, 0x29}, {0x00, 0x2a, 0x2a}, {0x00, 0x2b, 0x2b}, {0x00, 0x2c, 0x2c}, {0x00, 0x2d, 0x2d}, {0x00, 0x2e, 0x2e}, {0x00, 0x2f, 0x2f}, {0x00, 0x30, 0x30}, {0x00, 0x31, 0x31}, {0x00, 0x32, 0x32}, {0x00, 0x33, 0x33}, {0x00, 0x34, 0x34}, {0x00, 0x35, 0x35}, {0x00, 0x36, 0x36}, {0x00, 0x37, 0x37}, {0x00, 0x38, 0x38}, {0x00, 0x39, 0x39}, {0x00, 0x3a, 0x3a}, {0x00, 0x3b, 0x3b}, {0x00, 0x3c, 0x3c}, {0x00, 0x3d, 0x3d}, {0x00, 0x3e, 0x3e}, {0x00, 0x3f, 0x3f}, {0x00, 0x40, 0x40}, {0x01, 0x61, 0x41}, {0x01, 0x62, 0x42}, {0x01, 0x63, 0x43}, {0x01, 0x64, 0x44}, {0x01, 0x65, 0x45}, {0x01, 0x66, 0x46}, {0x01, 0x67, 0x47}, {0x01, 0x68, 0x48}, {0x01, 0x69, 0x49}, {0x01, 0x6a, 0x4a}, {0x01, 0x6b, 0x4b}, {0x01, 0x6c, 0x4c}, {0x01, 0x6d, 0x4d}, {0x01, 0x6e, 0x4e}, {0x01, 0x6f, 0x4f}, {0x01, 0x70, 0x50}, {0x01, 0x71, 0x51}, {0x01, 0x72, 0x52}, {0x01, 0x73, 0x53}, {0x01, 0x74, 0x54}, {0x01, 0x75, 0x55}, {0x01, 0x76, 0x56}, {0x01, 0x77, 0x57}, {0x01, 0x78, 0x58}, {0x01, 0x79, 0x59}, {0x01, 0x7a, 0x5a}, {0x00, 0x5b, 0x5b}, {0x00, 0x5c, 0x5c}, {0x00, 0x5d, 0x5d}, {0x00, 0x5e, 0x5e}, {0x00, 0x5f, 0x5f}, {0x00, 0x60, 0x60}, {0x00, 0x61, 0x41}, {0x00, 0x62, 0x42}, {0x00, 0x63, 0x43}, {0x00, 0x64, 0x44}, {0x00, 0x65, 0x45}, {0x00, 0x66, 0x46}, {0x00, 0x67, 0x47}, {0x00, 0x68, 0x48}, {0x00, 0x69, 0x49}, {0x00, 0x6a, 0x4a}, {0x00, 0x6b, 0x4b}, {0x00, 0x6c, 0x4c}, {0x00, 0x6d, 0x4d}, {0x00, 0x6e, 0x4e}, {0x00, 0x6f, 0x4f}, {0x00, 0x70, 0x50}, {0x00, 0x71, 0x51}, {0x00, 0x72, 0x52}, {0x00, 0x73, 0x53}, {0x00, 0x74, 0x54}, {0x00, 0x75, 0x55}, {0x00, 0x76, 0x56}, {0x00, 0x77, 0x57}, {0x00, 0x78, 0x58}, {0x00, 0x79, 0x59}, {0x00, 0x7a, 0x5a}, {0x00, 0x7b, 0x7b}, {0x00, 0x7c, 0x7c}, {0x00, 0x7d, 0x7d}, {0x00, 0x7e, 0x7e}, {0x00, 0x7f, 0x7f}, {0x00, 0x80, 0x80}, {0x00, 0x81, 0x81}, {0x00, 0x82, 0x82}, {0x00, 0x83, 0x83}, {0x00, 0x84, 0x84}, {0x00, 0x85, 0x85}, {0x00, 0x86, 0x86}, {0x00, 0x87, 0x87}, {0x00, 0x88, 0x88}, {0x00, 0x89, 0x89}, {0x00, 0x8a, 0x8a}, {0x00, 0x8b, 0x8b}, {0x00, 0x8c, 0x8c}, {0x00, 0x8d, 0x8d}, {0x00, 0x8e, 0x8e}, {0x00, 0x8f, 0x8f}, {0x00, 0x90, 0x90}, {0x00, 0x91, 0x91}, {0x00, 0x92, 0x92}, {0x00, 0x93, 0x93}, {0x00, 0x94, 0x94}, {0x00, 0x95, 0x95}, {0x00, 0x96, 0x96}, {0x00, 0x97, 0x97}, {0x00, 0x98, 0x98}, {0x00, 0x99, 0x99}, {0x00, 0x9a, 0x9a}, {0x00, 0x9b, 0x9b}, {0x00, 0x9c, 0x9c}, {0x00, 0x9d, 0x9d}, {0x00, 0x9e, 0x9e}, {0x00, 0x9f, 0x9f}, {0x00, 0xa0, 0xa0}, {0x00, 0xa1, 0xa1}, {0x00, 0xa2, 0xa2}, {0x00, 0xa3, 0xb3}, {0x00, 0xa4, 0xb4}, /* ie */ {0x00, 0xa5, 0xa5}, {0x00, 0xa6, 0xb6}, /* i */ {0x00, 0xa7, 0xb7}, /* ii */ {0x00, 0xa8, 0xa8}, {0x00, 0xa9, 0xa9}, {0x00, 0xaa, 0xaa}, {0x00, 0xab, 0xab}, {0x00, 0xac, 0xac}, {0x00, 0xad, 0xbd}, /* g'' */ {0x00, 0xae, 0xae}, {0x00, 0xaf, 0xaf}, {0x00, 0xb0, 0xb0}, {0x00, 0xb1, 0xb1}, {0x00, 0xb2, 0xb2}, {0x01, 0xa3, 0xb3}, {0x00, 0xb4, 0xb4}, /* IE */ {0x00, 0xb5, 0xb5}, {0x00, 0xb6, 0xb6}, /* I */ {0x00, 0xb7, 0xb7}, /* II */ {0x00, 0xb8, 0xb8}, {0x00, 0xb9, 0xb9}, {0x00, 0xba, 0xba}, {0x00, 0xbb, 0xbb}, {0x00, 0xbc, 0xbc}, {0x00, 0xbd, 0xbd}, {0x00, 0xbe, 0xbe}, {0x00, 0xbf, 0xbf}, {0x00, 0xc0, 0xe0}, {0x00, 0xc1, 0xe1}, {0x00, 0xc2, 0xe2}, {0x00, 0xc3, 0xe3}, {0x00, 0xc4, 0xe4}, {0x00, 0xc5, 0xe5}, {0x00, 0xc6, 0xe6}, {0x00, 0xc7, 0xe7}, {0x00, 0xc8, 0xe8}, {0x00, 0xc9, 0xe9}, {0x00, 0xca, 0xea}, {0x00, 0xcb, 0xeb}, {0x00, 0xcc, 0xec}, {0x00, 0xcd, 0xed}, {0x00, 0xce, 0xee}, {0x00, 0xcf, 0xef}, {0x00, 0xd0, 0xf0}, {0x00, 0xd1, 0xf1}, {0x00, 0xd2, 0xf2}, {0x00, 0xd3, 0xf3}, {0x00, 0xd4, 0xf4}, {0x00, 0xd5, 0xf5}, {0x00, 0xd6, 0xf6}, {0x00, 0xd7, 0xf7}, {0x00, 0xd8, 0xf8}, {0x00, 0xd9, 0xf9}, {0x00, 0xda, 0xfa}, {0x00, 0xdb, 0xfb}, {0x00, 0xdc, 0xfc}, {0x00, 0xdd, 0xfd}, {0x00, 0xde, 0xfe}, {0x00, 0xdf, 0xff}, {0x01, 0xc0, 0xe0}, {0x01, 0xc1, 0xe1}, {0x01, 0xc2, 0xe2}, {0x01, 0xc3, 0xe3}, {0x01, 0xc4, 0xe4}, {0x01, 0xc5, 0xe5}, {0x01, 0xc6, 0xe6}, {0x01, 0xc7, 0xe7}, {0x01, 0xc8, 0xe8}, {0x01, 0xc9, 0xe9}, {0x01, 0xca, 0xea}, {0x01, 0xcb, 0xeb}, {0x01, 0xcc, 0xec}, {0x01, 0xcd, 0xed}, {0x01, 0xce, 0xee}, {0x01, 0xcf, 0xef}, {0x01, 0xd0, 0xf0}, {0x01, 0xd1, 0xf1}, {0x01, 0xd2, 0xf2}, {0x01, 0xd3, 0xf3}, {0x01, 0xd4, 0xf4}, {0x01, 0xd5, 0xf5}, {0x01, 0xd6, 0xf6}, {0x01, 0xd7, 0xf7}, {0x01, 0xd8, 0xf8}, {0x01, 0xd9, 0xf9}, {0x01, 0xda, 0xfa}, {0x01, 0xdb, 0xfb}, {0x01, 0xdc, 0xfc}, {0x01, 0xdd, 0xfd}, {0x01, 0xde, 0xfe}, {0x01, 0xdf, 0xff}}; static struct cs_info cp1251_tbl[] = { {0x00, 0x00, 0x00}, {0x00, 0x01, 0x01}, {0x00, 0x02, 0x02}, {0x00, 0x03, 0x03}, {0x00, 0x04, 0x04}, {0x00, 0x05, 0x05}, {0x00, 0x06, 0x06}, {0x00, 0x07, 0x07}, {0x00, 0x08, 0x08}, {0x00, 0x09, 0x09}, {0x00, 0x0a, 0x0a}, {0x00, 0x0b, 0x0b}, {0x00, 0x0c, 0x0c}, {0x00, 0x0d, 0x0d}, {0x00, 0x0e, 0x0e}, {0x00, 0x0f, 0x0f}, {0x00, 0x10, 0x10}, {0x00, 0x11, 0x11}, {0x00, 0x12, 0x12}, {0x00, 0x13, 0x13}, {0x00, 0x14, 0x14}, {0x00, 0x15, 0x15}, {0x00, 0x16, 0x16}, {0x00, 0x17, 0x17}, {0x00, 0x18, 0x18}, {0x00, 0x19, 0x19}, {0x00, 0x1a, 0x1a}, {0x00, 0x1b, 0x1b}, {0x00, 0x1c, 0x1c}, {0x00, 0x1d, 0x1d}, {0x00, 0x1e, 0x1e}, {0x00, 0x1f, 0x1f}, {0x00, 0x20, 0x20}, {0x00, 0x21, 0x21}, {0x00, 0x22, 0x22}, {0x00, 0x23, 0x23}, {0x00, 0x24, 0x24}, {0x00, 0x25, 0x25}, {0x00, 0x26, 0x26}, {0x00, 0x27, 0x27}, {0x00, 0x28, 0x28}, {0x00, 0x29, 0x29}, {0x00, 0x2a, 0x2a}, {0x00, 0x2b, 0x2b}, {0x00, 0x2c, 0x2c}, {0x00, 0x2d, 0x2d}, {0x00, 0x2e, 0x2e}, {0x00, 0x2f, 0x2f}, {0x00, 0x30, 0x30}, {0x00, 0x31, 0x31}, {0x00, 0x32, 0x32}, {0x00, 0x33, 0x33}, {0x00, 0x34, 0x34}, {0x00, 0x35, 0x35}, {0x00, 0x36, 0x36}, {0x00, 0x37, 0x37}, {0x00, 0x38, 0x38}, {0x00, 0x39, 0x39}, {0x00, 0x3a, 0x3a}, {0x00, 0x3b, 0x3b}, {0x00, 0x3c, 0x3c}, {0x00, 0x3d, 0x3d}, {0x00, 0x3e, 0x3e}, {0x00, 0x3f, 0x3f}, {0x00, 0x40, 0x40}, {0x01, 0x61, 0x41}, {0x01, 0x62, 0x42}, {0x01, 0x63, 0x43}, {0x01, 0x64, 0x44}, {0x01, 0x65, 0x45}, {0x01, 0x66, 0x46}, {0x01, 0x67, 0x47}, {0x01, 0x68, 0x48}, {0x01, 0x69, 0x49}, {0x01, 0x6a, 0x4a}, {0x01, 0x6b, 0x4b}, {0x01, 0x6c, 0x4c}, {0x01, 0x6d, 0x4d}, {0x01, 0x6e, 0x4e}, {0x01, 0x6f, 0x4f}, {0x01, 0x70, 0x50}, {0x01, 0x71, 0x51}, {0x01, 0x72, 0x52}, {0x01, 0x73, 0x53}, {0x01, 0x74, 0x54}, {0x01, 0x75, 0x55}, {0x01, 0x76, 0x56}, {0x01, 0x77, 0x57}, {0x01, 0x78, 0x58}, {0x01, 0x79, 0x59}, {0x01, 0x7a, 0x5a}, {0x00, 0x5b, 0x5b}, {0x00, 0x5c, 0x5c}, {0x00, 0x5d, 0x5d}, {0x00, 0x5e, 0x5e}, {0x00, 0x5f, 0x5f}, {0x00, 0x60, 0x60}, {0x00, 0x61, 0x41}, {0x00, 0x62, 0x42}, {0x00, 0x63, 0x43}, {0x00, 0x64, 0x44}, {0x00, 0x65, 0x45}, {0x00, 0x66, 0x46}, {0x00, 0x67, 0x47}, {0x00, 0x68, 0x48}, {0x00, 0x69, 0x49}, {0x00, 0x6a, 0x4a}, {0x00, 0x6b, 0x4b}, {0x00, 0x6c, 0x4c}, {0x00, 0x6d, 0x4d}, {0x00, 0x6e, 0x4e}, {0x00, 0x6f, 0x4f}, {0x00, 0x70, 0x50}, {0x00, 0x71, 0x51}, {0x00, 0x72, 0x52}, {0x00, 0x73, 0x53}, {0x00, 0x74, 0x54}, {0x00, 0x75, 0x55}, {0x00, 0x76, 0x56}, {0x00, 0x77, 0x57}, {0x00, 0x78, 0x58}, {0x00, 0x79, 0x59}, {0x00, 0x7a, 0x5a}, {0x00, 0x7b, 0x7b}, {0x00, 0x7c, 0x7c}, {0x00, 0x7d, 0x7d}, {0x00, 0x7e, 0x7e}, {0x00, 0x7f, 0x7f}, {0x01, 0x90, 0x80}, {0x01, 0x83, 0x81}, {0x00, 0x82, 0x82}, {0x00, 0x83, 0x81}, {0x00, 0x84, 0x84}, {0x00, 0x85, 0x85}, {0x00, 0x86, 0x86}, {0x00, 0x87, 0x87}, {0x00, 0x88, 0x88}, {0x00, 0x89, 0x89}, {0x01, 0x9a, 0x8a}, {0x00, 0x8b, 0x8b}, {0x01, 0x9c, 0x8c}, {0x01, 0x9d, 0x8d}, {0x01, 0x9e, 0x8e}, {0x01, 0x9f, 0x8f}, {0x00, 0x90, 0x80}, {0x00, 0x91, 0x91}, {0x00, 0x92, 0x92}, {0x00, 0x93, 0x93}, {0x00, 0x94, 0x94}, {0x00, 0x95, 0x95}, {0x00, 0x96, 0x96}, {0x00, 0x97, 0x97}, {0x00, 0x98, 0x98}, {0x00, 0x99, 0x99}, {0x00, 0x9a, 0x8a}, {0x00, 0x9b, 0x9b}, {0x00, 0x9c, 0x8c}, {0x00, 0x9d, 0x8d}, {0x00, 0x9e, 0x8e}, {0x00, 0x9f, 0x8f}, {0x00, 0xa0, 0xa0}, {0x01, 0xa2, 0xa1}, {0x00, 0xa2, 0xa1}, {0x01, 0xbc, 0xa3}, {0x00, 0xa4, 0xa4}, {0x01, 0xb4, 0xa5}, {0x00, 0xa6, 0xa6}, {0x00, 0xa7, 0xa7}, {0x01, 0xb8, 0xa8}, {0x00, 0xa9, 0xa9}, {0x01, 0xba, 0xaa}, {0x00, 0xab, 0xab}, {0x00, 0xac, 0xac}, {0x00, 0xad, 0xad}, {0x00, 0xae, 0xae}, {0x01, 0xbf, 0xaf}, {0x00, 0xb0, 0xb0}, {0x00, 0xb1, 0xb1}, {0x01, 0xb3, 0xb2}, {0x00, 0xb3, 0xb2}, {0x00, 0xb4, 0xa5}, {0x00, 0xb5, 0xb5}, {0x00, 0xb6, 0xb6}, {0x00, 0xb7, 0xb7}, {0x00, 0xb8, 0xa8}, {0x00, 0xb9, 0xb9}, {0x00, 0xba, 0xaa}, {0x00, 0xbb, 0xbb}, {0x00, 0xbc, 0xa3}, {0x01, 0xbe, 0xbd}, {0x00, 0xbe, 0xbd}, {0x00, 0xbf, 0xaf}, {0x01, 0xe0, 0xc0}, {0x01, 0xe1, 0xc1}, {0x01, 0xe2, 0xc2}, {0x01, 0xe3, 0xc3}, {0x01, 0xe4, 0xc4}, {0x01, 0xe5, 0xc5}, {0x01, 0xe6, 0xc6}, {0x01, 0xe7, 0xc7}, {0x01, 0xe8, 0xc8}, {0x01, 0xe9, 0xc9}, {0x01, 0xea, 0xca}, {0x01, 0xeb, 0xcb}, {0x01, 0xec, 0xcc}, {0x01, 0xed, 0xcd}, {0x01, 0xee, 0xce}, {0x01, 0xef, 0xcf}, {0x01, 0xf0, 0xd0}, {0x01, 0xf1, 0xd1}, {0x01, 0xf2, 0xd2}, {0x01, 0xf3, 0xd3}, {0x01, 0xf4, 0xd4}, {0x01, 0xf5, 0xd5}, {0x01, 0xf6, 0xd6}, {0x01, 0xf7, 0xd7}, {0x01, 0xf8, 0xd8}, {0x01, 0xf9, 0xd9}, {0x01, 0xfa, 0xda}, {0x01, 0xfb, 0xdb}, {0x01, 0xfc, 0xdc}, {0x01, 0xfd, 0xdd}, {0x01, 0xfe, 0xde}, {0x01, 0xff, 0xdf}, {0x00, 0xe0, 0xc0}, {0x00, 0xe1, 0xc1}, {0x00, 0xe2, 0xc2}, {0x00, 0xe3, 0xc3}, {0x00, 0xe4, 0xc4}, {0x00, 0xe5, 0xc5}, {0x00, 0xe6, 0xc6}, {0x00, 0xe7, 0xc7}, {0x00, 0xe8, 0xc8}, {0x00, 0xe9, 0xc9}, {0x00, 0xea, 0xca}, {0x00, 0xeb, 0xcb}, {0x00, 0xec, 0xcc}, {0x00, 0xed, 0xcd}, {0x00, 0xee, 0xce}, {0x00, 0xef, 0xcf}, {0x00, 0xf0, 0xd0}, {0x00, 0xf1, 0xd1}, {0x00, 0xf2, 0xd2}, {0x00, 0xf3, 0xd3}, {0x00, 0xf4, 0xd4}, {0x00, 0xf5, 0xd5}, {0x00, 0xf6, 0xd6}, {0x00, 0xf7, 0xd7}, {0x00, 0xf8, 0xd8}, {0x00, 0xf9, 0xd9}, {0x00, 0xfa, 0xda}, {0x00, 0xfb, 0xdb}, {0x00, 0xfc, 0xdc}, {0x00, 0xfd, 0xdd}, {0x00, 0xfe, 0xde}, {0x00, 0xff, 0xdf}}; static struct cs_info iso13_tbl[] = { {0x00, 0x00, 0x00}, {0x00, 0x01, 0x01}, {0x00, 0x02, 0x02}, {0x00, 0x03, 0x03}, {0x00, 0x04, 0x04}, {0x00, 0x05, 0x05}, {0x00, 0x06, 0x06}, {0x00, 0x07, 0x07}, {0x00, 0x08, 0x08}, {0x00, 0x09, 0x09}, {0x00, 0x0A, 0x0A}, {0x00, 0x0B, 0x0B}, {0x00, 0x0C, 0x0C}, {0x00, 0x0D, 0x0D}, {0x00, 0x0E, 0x0E}, {0x00, 0x0F, 0x0F}, {0x00, 0x10, 0x10}, {0x00, 0x11, 0x11}, {0x00, 0x12, 0x12}, {0x00, 0x13, 0x13}, {0x00, 0x14, 0x14}, {0x00, 0x15, 0x15}, {0x00, 0x16, 0x16}, {0x00, 0x17, 0x17}, {0x00, 0x18, 0x18}, {0x00, 0x19, 0x19}, {0x00, 0x1A, 0x1A}, {0x00, 0x1B, 0x1B}, {0x00, 0x1C, 0x1C}, {0x00, 0x1D, 0x1D}, {0x00, 0x1E, 0x1E}, {0x00, 0x1F, 0x1F}, {0x00, 0x20, 0x20}, {0x00, 0x21, 0x21}, {0x00, 0x22, 0x22}, {0x00, 0x23, 0x23}, {0x00, 0x24, 0x24}, {0x00, 0x25, 0x25}, {0x00, 0x26, 0x26}, {0x00, 0x27, 0x27}, {0x00, 0x28, 0x28}, {0x00, 0x29, 0x29}, {0x00, 0x2A, 0x2A}, {0x00, 0x2B, 0x2B}, {0x00, 0x2C, 0x2C}, {0x00, 0x2D, 0x2D}, {0x00, 0x2E, 0x2E}, {0x00, 0x2F, 0x2F}, {0x00, 0x30, 0x30}, {0x00, 0x31, 0x31}, {0x00, 0x32, 0x32}, {0x00, 0x33, 0x33}, {0x00, 0x34, 0x34}, {0x00, 0x35, 0x35}, {0x00, 0x36, 0x36}, {0x00, 0x37, 0x37}, {0x00, 0x38, 0x38}, {0x00, 0x39, 0x39}, {0x00, 0x3A, 0x3A}, {0x00, 0x3B, 0x3B}, {0x00, 0x3C, 0x3C}, {0x00, 0x3D, 0x3D}, {0x00, 0x3E, 0x3E}, {0x00, 0x3F, 0x3F}, {0x00, 0x40, 0x40}, {0x01, 0x61, 0x41}, {0x01, 0x62, 0x42}, {0x01, 0x63, 0x43}, {0x01, 0x64, 0x44}, {0x01, 0x65, 0x45}, {0x01, 0x66, 0x46}, {0x01, 0x67, 0x47}, {0x01, 0x68, 0x48}, {0x01, 0x69, 0x49}, {0x01, 0x6A, 0x4A}, {0x01, 0x6B, 0x4B}, {0x01, 0x6C, 0x4C}, {0x01, 0x6D, 0x4D}, {0x01, 0x6E, 0x4E}, {0x01, 0x6F, 0x4F}, {0x01, 0x70, 0x50}, {0x01, 0x71, 0x51}, {0x01, 0x72, 0x52}, {0x01, 0x73, 0x53}, {0x01, 0x74, 0x54}, {0x01, 0x75, 0x55}, {0x01, 0x76, 0x56}, {0x01, 0x77, 0x57}, {0x01, 0x78, 0x58}, {0x01, 0x79, 0x59}, {0x01, 0x7A, 0x5A}, {0x00, 0x5B, 0x5B}, {0x00, 0x5C, 0x5C}, {0x00, 0x5D, 0x5D}, {0x00, 0x5E, 0x5E}, {0x00, 0x5F, 0x5F}, {0x00, 0x60, 0x60}, {0x00, 0x61, 0x41}, {0x00, 0x62, 0x42}, {0x00, 0x63, 0x43}, {0x00, 0x64, 0x44}, {0x00, 0x65, 0x45}, {0x00, 0x66, 0x46}, {0x00, 0x67, 0x47}, {0x00, 0x68, 0x48}, {0x00, 0x69, 0x49}, {0x00, 0x6A, 0x4A}, {0x00, 0x6B, 0x4B}, {0x00, 0x6C, 0x4C}, {0x00, 0x6D, 0x4D}, {0x00, 0x6E, 0x4E}, {0x00, 0x6F, 0x4F}, {0x00, 0x70, 0x50}, {0x00, 0x71, 0x51}, {0x00, 0x72, 0x52}, {0x00, 0x73, 0x53}, {0x00, 0x74, 0x54}, {0x00, 0x75, 0x55}, {0x00, 0x76, 0x56}, {0x00, 0x77, 0x57}, {0x00, 0x78, 0x58}, {0x00, 0x79, 0x59}, {0x00, 0x7A, 0x5A}, {0x00, 0x7B, 0x7B}, {0x00, 0x7C, 0x7C}, {0x00, 0x7D, 0x7D}, {0x00, 0x7E, 0x7E}, {0x00, 0x7F, 0x7F}, {0x00, 0x80, 0x80}, {0x00, 0x81, 0x81}, {0x00, 0x82, 0x82}, {0x00, 0x83, 0x83}, {0x00, 0x84, 0x84}, {0x00, 0x85, 0x85}, {0x00, 0x86, 0x86}, {0x00, 0x87, 0x87}, {0x00, 0x88, 0x88}, {0x00, 0x89, 0x89}, {0x00, 0x8A, 0x8A}, {0x00, 0x8B, 0x8B}, {0x00, 0x8C, 0x8C}, {0x00, 0x8D, 0x8D}, {0x00, 0x8E, 0x8E}, {0x00, 0x8F, 0x8F}, {0x00, 0x90, 0x90}, {0x00, 0x91, 0x91}, {0x00, 0x92, 0x92}, {0x00, 0x93, 0x93}, {0x00, 0x94, 0x94}, {0x00, 0x95, 0x95}, {0x00, 0x96, 0x96}, {0x00, 0x97, 0x97}, {0x00, 0x98, 0x98}, {0x00, 0x99, 0x99}, {0x00, 0x9A, 0x9A}, {0x00, 0x9B, 0x9B}, {0x00, 0x9C, 0x9C}, {0x00, 0x9D, 0x9D}, {0x00, 0x9E, 0x9E}, {0x00, 0x9F, 0x9F}, {0x00, 0xA0, 0xA0}, {0x00, 0xA1, 0xA1}, {0x00, 0xA2, 0xA2}, {0x00, 0xA3, 0xA3}, {0x00, 0xA4, 0xA4}, {0x00, 0xA5, 0xA5}, {0x00, 0xA6, 0xA6}, {0x00, 0xA7, 0xA7}, {0x01, 0xB8, 0xA8}, {0x00, 0xA9, 0xA9}, {0x01, 0xBA, 0xAA}, {0x00, 0xAB, 0xAB}, {0x00, 0xAC, 0xAC}, {0x00, 0xAD, 0xAD}, {0x00, 0xAE, 0xAE}, {0x01, 0xBF, 0xAF}, {0x00, 0xB0, 0xB0}, {0x00, 0xB1, 0xB1}, {0x00, 0xB2, 0xB2}, {0x00, 0xB3, 0xB3}, {0x00, 0xB4, 0xB4}, {0x00, 0xB5, 0xB5}, {0x00, 0xB6, 0xB6}, {0x00, 0xB7, 0xB7}, {0x00, 0xB8, 0xA8}, {0x00, 0xB9, 0xB9}, {0x00, 0xBA, 0xAA}, {0x00, 0xBB, 0xBB}, {0x00, 0xBC, 0xBC}, {0x00, 0xBD, 0xBD}, {0x00, 0xBE, 0xBE}, {0x00, 0xBF, 0xAF}, {0x01, 0xE0, 0xC0}, {0x01, 0xE1, 0xC1}, {0x01, 0xE2, 0xC2}, {0x01, 0xE3, 0xC3}, {0x01, 0xE4, 0xC4}, {0x01, 0xE5, 0xC5}, {0x01, 0xE6, 0xC6}, {0x01, 0xE7, 0xC7}, {0x01, 0xE8, 0xC8}, {0x01, 0xE9, 0xC9}, {0x01, 0xEA, 0xCA}, {0x01, 0xEB, 0xCB}, {0x01, 0xEC, 0xCC}, {0x01, 0xED, 0xCD}, {0x01, 0xEE, 0xCE}, {0x01, 0xEF, 0xCF}, {0x01, 0xF0, 0xD0}, {0x01, 0xF1, 0xD1}, {0x01, 0xF2, 0xD2}, {0x01, 0xF3, 0xD3}, {0x01, 0xF4, 0xD4}, {0x01, 0xF5, 0xD5}, {0x01, 0xF6, 0xD6}, {0x00, 0xD7, 0xD7}, {0x01, 0xF8, 0xD8}, {0x01, 0xF9, 0xD9}, {0x01, 0xFA, 0xDA}, {0x01, 0xFB, 0xDB}, {0x01, 0xFC, 0xDC}, {0x01, 0xFD, 0xDD}, {0x01, 0xFE, 0xDE}, {0x00, 0xDF, 0xDF}, {0x00, 0xE0, 0xC0}, {0x00, 0xE1, 0xC1}, {0x00, 0xE2, 0xC2}, {0x00, 0xE3, 0xC3}, {0x00, 0xE4, 0xC4}, {0x00, 0xE5, 0xC5}, {0x00, 0xE6, 0xC6}, {0x00, 0xE7, 0xC7}, {0x00, 0xE8, 0xC8}, {0x00, 0xE9, 0xC9}, {0x00, 0xEA, 0xCA}, {0x00, 0xEB, 0xCB}, {0x00, 0xEC, 0xCC}, {0x00, 0xED, 0xCD}, {0x00, 0xEE, 0xCE}, {0x00, 0xEF, 0xCF}, {0x00, 0xF0, 0xD0}, {0x00, 0xF1, 0xD1}, {0x00, 0xF2, 0xD2}, {0x00, 0xF3, 0xD3}, {0x00, 0xF4, 0xD4}, {0x00, 0xF5, 0xD5}, {0x00, 0xF6, 0xD6}, {0x00, 0xF7, 0xF7}, {0x00, 0xF8, 0xD8}, {0x00, 0xF9, 0xD9}, {0x00, 0xFA, 0xDA}, {0x00, 0xFB, 0xDB}, {0x00, 0xFC, 0xDC}, {0x00, 0xFD, 0xDD}, {0x00, 0xFE, 0xDE}, {0x00, 0xFF, 0xFF}}; static struct cs_info iso14_tbl[] = { {0x00, 0x00, 0x00}, {0x00, 0x01, 0x01}, {0x00, 0x02, 0x02}, {0x00, 0x03, 0x03}, {0x00, 0x04, 0x04}, {0x00, 0x05, 0x05}, {0x00, 0x06, 0x06}, {0x00, 0x07, 0x07}, {0x00, 0x08, 0x08}, {0x00, 0x09, 0x09}, {0x00, 0x0a, 0x0a}, {0x00, 0x0b, 0x0b}, {0x00, 0x0c, 0x0c}, {0x00, 0x0d, 0x0d}, {0x00, 0x0e, 0x0e}, {0x00, 0x0f, 0x0f}, {0x00, 0x10, 0x10}, {0x00, 0x11, 0x11}, {0x00, 0x12, 0x12}, {0x00, 0x13, 0x13}, {0x00, 0x14, 0x14}, {0x00, 0x15, 0x15}, {0x00, 0x16, 0x16}, {0x00, 0x17, 0x17}, {0x00, 0x18, 0x18}, {0x00, 0x19, 0x19}, {0x00, 0x1a, 0x1a}, {0x00, 0x1b, 0x1b}, {0x00, 0x1c, 0x1c}, {0x00, 0x1d, 0x1d}, {0x00, 0x1e, 0x1e}, {0x00, 0x1f, 0x1f}, {0x00, 0x20, 0x20}, {0x00, 0x21, 0x21}, {0x00, 0x22, 0x22}, {0x00, 0x23, 0x23}, {0x00, 0x24, 0x24}, {0x00, 0x25, 0x25}, {0x00, 0x26, 0x26}, {0x00, 0x27, 0x27}, {0x00, 0x28, 0x28}, {0x00, 0x29, 0x29}, {0x00, 0x2a, 0x2a}, {0x00, 0x2b, 0x2b}, {0x00, 0x2c, 0x2c}, {0x00, 0x2d, 0x2d}, {0x00, 0x2e, 0x2e}, {0x00, 0x2f, 0x2f}, {0x00, 0x30, 0x30}, {0x00, 0x31, 0x31}, {0x00, 0x32, 0x32}, {0x00, 0x33, 0x33}, {0x00, 0x34, 0x34}, {0x00, 0x35, 0x35}, {0x00, 0x36, 0x36}, {0x00, 0x37, 0x37}, {0x00, 0x38, 0x38}, {0x00, 0x39, 0x39}, {0x00, 0x3a, 0x3a}, {0x00, 0x3b, 0x3b}, {0x00, 0x3c, 0x3c}, {0x00, 0x3d, 0x3d}, {0x00, 0x3e, 0x3e}, {0x00, 0x3f, 0x3f}, {0x00, 0x40, 0x40}, {0x01, 0x61, 0x41}, {0x01, 0x62, 0x42}, {0x01, 0x63, 0x43}, {0x01, 0x64, 0x44}, {0x01, 0x65, 0x45}, {0x01, 0x66, 0x46}, {0x01, 0x67, 0x47}, {0x01, 0x68, 0x48}, {0x01, 0x69, 0x49}, {0x01, 0x6a, 0x4a}, {0x01, 0x6b, 0x4b}, {0x01, 0x6c, 0x4c}, {0x01, 0x6d, 0x4d}, {0x01, 0x6e, 0x4e}, {0x01, 0x6f, 0x4f}, {0x01, 0x70, 0x50}, {0x01, 0x71, 0x51}, {0x01, 0x72, 0x52}, {0x01, 0x73, 0x53}, {0x01, 0x74, 0x54}, {0x01, 0x75, 0x55}, {0x01, 0x76, 0x56}, {0x01, 0x77, 0x57}, {0x01, 0x78, 0x58}, {0x01, 0x79, 0x59}, {0x01, 0x7a, 0x5a}, {0x00, 0x5b, 0x5b}, {0x00, 0x5c, 0x5c}, {0x00, 0x5d, 0x5d}, {0x00, 0x5e, 0x5e}, {0x00, 0x5f, 0x5f}, {0x00, 0x60, 0x60}, {0x00, 0x61, 0x41}, {0x00, 0x62, 0x42}, {0x00, 0x63, 0x43}, {0x00, 0x64, 0x44}, {0x00, 0x65, 0x45}, {0x00, 0x66, 0x46}, {0x00, 0x67, 0x47}, {0x00, 0x68, 0x48}, {0x00, 0x69, 0x49}, {0x00, 0x6a, 0x4a}, {0x00, 0x6b, 0x4b}, {0x00, 0x6c, 0x4c}, {0x00, 0x6d, 0x4d}, {0x00, 0x6e, 0x4e}, {0x00, 0x6f, 0x4f}, {0x00, 0x70, 0x50}, {0x00, 0x71, 0x51}, {0x00, 0x72, 0x52}, {0x00, 0x73, 0x53}, {0x00, 0x74, 0x54}, {0x00, 0x75, 0x55}, {0x00, 0x76, 0x56}, {0x00, 0x77, 0x57}, {0x00, 0x78, 0x58}, {0x00, 0x79, 0x59}, {0x00, 0x7a, 0x5a}, {0x00, 0x7b, 0x7b}, {0x00, 0x7c, 0x7c}, {0x00, 0x7d, 0x7d}, {0x00, 0x7e, 0x7e}, {0x00, 0x7f, 0x7f}, {0x00, 0x80, 0x80}, {0x00, 0x81, 0x81}, {0x00, 0x82, 0x82}, {0x00, 0x83, 0x83}, {0x00, 0x84, 0x84}, {0x00, 0x85, 0x85}, {0x00, 0x86, 0x86}, {0x00, 0x87, 0x87}, {0x00, 0x88, 0x88}, {0x00, 0x89, 0x89}, {0x00, 0x8a, 0x8a}, {0x00, 0x8b, 0x8b}, {0x00, 0x8c, 0x8c}, {0x00, 0x8d, 0x8d}, {0x00, 0x8e, 0x8e}, {0x00, 0x8f, 0x8f}, {0x00, 0x90, 0x90}, {0x00, 0x91, 0x91}, {0x00, 0x92, 0x92}, {0x00, 0x93, 0x93}, {0x00, 0x94, 0x94}, {0x00, 0x95, 0x95}, {0x00, 0x96, 0x96}, {0x00, 0x97, 0x97}, {0x00, 0x98, 0x98}, {0x00, 0x99, 0x99}, {0x00, 0x9a, 0x9a}, {0x00, 0x9b, 0x9b}, {0x00, 0x9c, 0x9c}, {0x00, 0x9d, 0x9d}, {0x00, 0x9e, 0x9e}, {0x00, 0x9f, 0x9f}, {0x00, 0xa0, 0xa0}, {0x01, 0xa2, 0xa1}, {0x00, 0xa2, 0xa1}, {0x00, 0xa3, 0xa3}, {0x01, 0xa5, 0xa4}, {0x00, 0xa5, 0xa4}, {0x01, 0xa6, 0xab}, {0x00, 0xa7, 0xa7}, {0x01, 0xb8, 0xa8}, {0x00, 0xa9, 0xa9}, {0x01, 0xba, 0xaa}, {0x00, 0xab, 0xa6}, {0x01, 0xbc, 0xac}, {0x00, 0xad, 0xad}, {0x00, 0xae, 0xae}, {0x01, 0xff, 0xaf}, {0x01, 0xb1, 0xb0}, {0x00, 0xb1, 0xb0}, {0x01, 0xb3, 0xb2}, {0x00, 0xb3, 0xb2}, {0x01, 0xb5, 0xb4}, {0x00, 0xb5, 0xb4}, {0x00, 0xb6, 0xb6}, {0x01, 0xb9, 0xb7}, {0x00, 0xb8, 0xa8}, {0x00, 0xb9, 0xb6}, {0x00, 0xba, 0xaa}, {0x01, 0xbf, 0xbb}, {0x00, 0xbc, 0xac}, {0x01, 0xbe, 0xbd}, {0x00, 0xbe, 0xbd}, {0x00, 0xbf, 0xbb}, {0x01, 0xe0, 0xc0}, {0x01, 0xe1, 0xc1}, {0x01, 0xe2, 0xc2}, {0x01, 0xe3, 0xc3}, {0x01, 0xe4, 0xc4}, {0x01, 0xe5, 0xc5}, {0x01, 0xe6, 0xc6}, {0x01, 0xe7, 0xc7}, {0x01, 0xe8, 0xc8}, {0x01, 0xe9, 0xc9}, {0x01, 0xea, 0xca}, {0x01, 0xeb, 0xcb}, {0x01, 0xec, 0xcc}, {0x01, 0xed, 0xcd}, {0x01, 0xee, 0xce}, {0x01, 0xef, 0xcf}, {0x01, 0xf0, 0xd0}, {0x01, 0xf1, 0xd1}, {0x01, 0xf2, 0xd2}, {0x01, 0xf3, 0xd3}, {0x01, 0xf4, 0xd4}, {0x01, 0xf5, 0xd5}, {0x01, 0xf6, 0xd6}, {0x01, 0xf7, 0xd7}, {0x01, 0xf8, 0xd8}, {0x01, 0xf9, 0xd9}, {0x01, 0xfa, 0xda}, {0x01, 0xfb, 0xdb}, {0x01, 0xfc, 0xdc}, {0x01, 0xfd, 0xdd}, {0x01, 0xfe, 0xde}, {0x00, 0xdf, 0xdf}, {0x00, 0xe0, 0xc0}, {0x00, 0xe1, 0xc1}, {0x00, 0xe2, 0xc2}, {0x00, 0xe3, 0xc3}, {0x00, 0xe4, 0xc4}, {0x00, 0xe5, 0xc5}, {0x00, 0xe6, 0xc6}, {0x00, 0xe7, 0xc7}, {0x00, 0xe8, 0xc8}, {0x00, 0xe9, 0xc9}, {0x00, 0xea, 0xca}, {0x00, 0xeb, 0xcb}, {0x00, 0xec, 0xcc}, {0x00, 0xed, 0xcd}, {0x00, 0xee, 0xce}, {0x00, 0xef, 0xcf}, {0x00, 0xf0, 0xd0}, {0x00, 0xf1, 0xd1}, {0x00, 0xf2, 0xd2}, {0x00, 0xf3, 0xd3}, {0x00, 0xf4, 0xd4}, {0x00, 0xf5, 0xd5}, {0x00, 0xf6, 0xd6}, {0x00, 0xf7, 0xd7}, {0x00, 0xf8, 0xd8}, {0x00, 0xf9, 0xd9}, {0x00, 0xfa, 0xda}, {0x00, 0xfb, 0xdb}, {0x00, 0xfc, 0xdc}, {0x00, 0xfd, 0xdd}, {0x00, 0xfe, 0xde}, {0x00, 0xff, 0xff}}; static struct cs_info iso15_tbl[] = { {0x00, 0x00, 0x00}, {0x00, 0x01, 0x01}, {0x00, 0x02, 0x02}, {0x00, 0x03, 0x03}, {0x00, 0x04, 0x04}, {0x00, 0x05, 0x05}, {0x00, 0x06, 0x06}, {0x00, 0x07, 0x07}, {0x00, 0x08, 0x08}, {0x00, 0x09, 0x09}, {0x00, 0x0a, 0x0a}, {0x00, 0x0b, 0x0b}, {0x00, 0x0c, 0x0c}, {0x00, 0x0d, 0x0d}, {0x00, 0x0e, 0x0e}, {0x00, 0x0f, 0x0f}, {0x00, 0x10, 0x10}, {0x00, 0x11, 0x11}, {0x00, 0x12, 0x12}, {0x00, 0x13, 0x13}, {0x00, 0x14, 0x14}, {0x00, 0x15, 0x15}, {0x00, 0x16, 0x16}, {0x00, 0x17, 0x17}, {0x00, 0x18, 0x18}, {0x00, 0x19, 0x19}, {0x00, 0x1a, 0x1a}, {0x00, 0x1b, 0x1b}, {0x00, 0x1c, 0x1c}, {0x00, 0x1d, 0x1d}, {0x00, 0x1e, 0x1e}, {0x00, 0x1f, 0x1f}, {0x00, 0x20, 0x20}, {0x00, 0x21, 0x21}, {0x00, 0x22, 0x22}, {0x00, 0x23, 0x23}, {0x00, 0x24, 0x24}, {0x00, 0x25, 0x25}, {0x00, 0x26, 0x26}, {0x00, 0x27, 0x27}, {0x00, 0x28, 0x28}, {0x00, 0x29, 0x29}, {0x00, 0x2a, 0x2a}, {0x00, 0x2b, 0x2b}, {0x00, 0x2c, 0x2c}, {0x00, 0x2d, 0x2d}, {0x00, 0x2e, 0x2e}, {0x00, 0x2f, 0x2f}, {0x00, 0x30, 0x30}, {0x00, 0x31, 0x31}, {0x00, 0x32, 0x32}, {0x00, 0x33, 0x33}, {0x00, 0x34, 0x34}, {0x00, 0x35, 0x35}, {0x00, 0x36, 0x36}, {0x00, 0x37, 0x37}, {0x00, 0x38, 0x38}, {0x00, 0x39, 0x39}, {0x00, 0x3a, 0x3a}, {0x00, 0x3b, 0x3b}, {0x00, 0x3c, 0x3c}, {0x00, 0x3d, 0x3d}, {0x00, 0x3e, 0x3e}, {0x00, 0x3f, 0x3f}, {0x00, 0x40, 0x40}, {0x01, 0x61, 0x41}, {0x01, 0x62, 0x42}, {0x01, 0x63, 0x43}, {0x01, 0x64, 0x44}, {0x01, 0x65, 0x45}, {0x01, 0x66, 0x46}, {0x01, 0x67, 0x47}, {0x01, 0x68, 0x48}, {0x01, 0x69, 0x49}, {0x01, 0x6a, 0x4a}, {0x01, 0x6b, 0x4b}, {0x01, 0x6c, 0x4c}, {0x01, 0x6d, 0x4d}, {0x01, 0x6e, 0x4e}, {0x01, 0x6f, 0x4f}, {0x01, 0x70, 0x50}, {0x01, 0x71, 0x51}, {0x01, 0x72, 0x52}, {0x01, 0x73, 0x53}, {0x01, 0x74, 0x54}, {0x01, 0x75, 0x55}, {0x01, 0x76, 0x56}, {0x01, 0x77, 0x57}, {0x01, 0x78, 0x58}, {0x01, 0x79, 0x59}, {0x01, 0x7a, 0x5a}, {0x00, 0x5b, 0x5b}, {0x00, 0x5c, 0x5c}, {0x00, 0x5d, 0x5d}, {0x00, 0x5e, 0x5e}, {0x00, 0x5f, 0x5f}, {0x00, 0x60, 0x60}, {0x00, 0x61, 0x41}, {0x00, 0x62, 0x42}, {0x00, 0x63, 0x43}, {0x00, 0x64, 0x44}, {0x00, 0x65, 0x45}, {0x00, 0x66, 0x46}, {0x00, 0x67, 0x47}, {0x00, 0x68, 0x48}, {0x00, 0x69, 0x49}, {0x00, 0x6a, 0x4a}, {0x00, 0x6b, 0x4b}, {0x00, 0x6c, 0x4c}, {0x00, 0x6d, 0x4d}, {0x00, 0x6e, 0x4e}, {0x00, 0x6f, 0x4f}, {0x00, 0x70, 0x50}, {0x00, 0x71, 0x51}, {0x00, 0x72, 0x52}, {0x00, 0x73, 0x53}, {0x00, 0x74, 0x54}, {0x00, 0x75, 0x55}, {0x00, 0x76, 0x56}, {0x00, 0x77, 0x57}, {0x00, 0x78, 0x58}, {0x00, 0x79, 0x59}, {0x00, 0x7a, 0x5a}, {0x00, 0x7b, 0x7b}, {0x00, 0x7c, 0x7c}, {0x00, 0x7d, 0x7d}, {0x00, 0x7e, 0x7e}, {0x00, 0x7f, 0x7f}, {0x00, 0x80, 0x80}, {0x00, 0x81, 0x81}, {0x00, 0x82, 0x82}, {0x00, 0x83, 0x83}, {0x00, 0x84, 0x84}, {0x00, 0x85, 0x85}, {0x00, 0x86, 0x86}, {0x00, 0x87, 0x87}, {0x00, 0x88, 0x88}, {0x00, 0x89, 0x89}, {0x00, 0x8a, 0x8a}, {0x00, 0x8b, 0x8b}, {0x00, 0x8c, 0x8c}, {0x00, 0x8d, 0x8d}, {0x00, 0x8e, 0x8e}, {0x00, 0x8f, 0x8f}, {0x00, 0x90, 0x90}, {0x00, 0x91, 0x91}, {0x00, 0x92, 0x92}, {0x00, 0x93, 0x93}, {0x00, 0x94, 0x94}, {0x00, 0x95, 0x95}, {0x00, 0x96, 0x96}, {0x00, 0x97, 0x97}, {0x00, 0x98, 0x98}, {0x00, 0x99, 0x99}, {0x00, 0x9a, 0x9a}, {0x00, 0x9b, 0x9b}, {0x00, 0x9c, 0x9c}, {0x00, 0x9d, 0x9d}, {0x00, 0x9e, 0x9e}, {0x00, 0x9f, 0x9f}, {0x00, 0xa0, 0xa0}, {0x00, 0xa1, 0xa1}, {0x00, 0xa2, 0xa2}, {0x00, 0xa3, 0xa3}, {0x00, 0xa4, 0xa4}, {0x00, 0xa5, 0xa5}, {0x01, 0xa8, 0xa6}, {0x00, 0xa7, 0xa7}, {0x00, 0xa8, 0xa6}, {0x00, 0xa9, 0xa9}, {0x00, 0xaa, 0xaa}, {0x00, 0xab, 0xab}, {0x00, 0xac, 0xac}, {0x00, 0xad, 0xad}, {0x00, 0xae, 0xae}, {0x00, 0xaf, 0xaf}, {0x00, 0xb0, 0xb0}, {0x00, 0xb1, 0xb1}, {0x00, 0xb2, 0xb2}, {0x00, 0xb3, 0xb3}, {0x01, 0xb8, 0xb4}, {0x00, 0xb5, 0xb5}, {0x00, 0xb6, 0xb6}, {0x00, 0xb7, 0xb7}, {0x00, 0xb8, 0xb4}, {0x00, 0xb9, 0xb9}, {0x00, 0xba, 0xba}, {0x00, 0xbb, 0xbb}, {0x01, 0xbd, 0xbc}, {0x00, 0xbd, 0xbc}, {0x01, 0xff, 0xbe}, {0x00, 0xbf, 0xbf}, {0x01, 0xe0, 0xc0}, {0x01, 0xe1, 0xc1}, {0x01, 0xe2, 0xc2}, {0x01, 0xe3, 0xc3}, {0x01, 0xe4, 0xc4}, {0x01, 0xe5, 0xc5}, {0x01, 0xe6, 0xc6}, {0x01, 0xe7, 0xc7}, {0x01, 0xe8, 0xc8}, {0x01, 0xe9, 0xc9}, {0x01, 0xea, 0xca}, {0x01, 0xeb, 0xcb}, {0x01, 0xec, 0xcc}, {0x01, 0xed, 0xcd}, {0x01, 0xee, 0xce}, {0x01, 0xef, 0xcf}, {0x01, 0xf0, 0xd0}, {0x01, 0xf1, 0xd1}, {0x01, 0xf2, 0xd2}, {0x01, 0xf3, 0xd3}, {0x01, 0xf4, 0xd4}, {0x01, 0xf5, 0xd5}, {0x01, 0xf6, 0xd6}, {0x00, 0xd7, 0xd7}, {0x01, 0xf8, 0xd8}, {0x01, 0xf9, 0xd9}, {0x01, 0xfa, 0xda}, {0x01, 0xfb, 0xdb}, {0x01, 0xfc, 0xdc}, {0x01, 0xfd, 0xdd}, {0x01, 0xfe, 0xde}, {0x00, 0xdf, 0xdf}, {0x00, 0xe0, 0xc0}, {0x00, 0xe1, 0xc1}, {0x00, 0xe2, 0xc2}, {0x00, 0xe3, 0xc3}, {0x00, 0xe4, 0xc4}, {0x00, 0xe5, 0xc5}, {0x00, 0xe6, 0xc6}, {0x00, 0xe7, 0xc7}, {0x00, 0xe8, 0xc8}, {0x00, 0xe9, 0xc9}, {0x00, 0xea, 0xca}, {0x00, 0xeb, 0xcb}, {0x00, 0xec, 0xcc}, {0x00, 0xed, 0xcd}, {0x00, 0xee, 0xce}, {0x00, 0xef, 0xcf}, {0x00, 0xf0, 0xd0}, {0x00, 0xf1, 0xd1}, {0x00, 0xf2, 0xd2}, {0x00, 0xf3, 0xd3}, {0x00, 0xf4, 0xd4}, {0x00, 0xf5, 0xd5}, {0x00, 0xf6, 0xd6}, {0x00, 0xf7, 0xf7}, {0x00, 0xf8, 0xd8}, {0x00, 0xf9, 0xd9}, {0x00, 0xfa, 0xda}, {0x00, 0xfb, 0xdb}, {0x00, 0xfc, 0xdc}, {0x00, 0xfd, 0xdd}, {0x00, 0xfe, 0xde}, {0x00, 0xff, 0xbe}}; static struct cs_info iscii_devanagari_tbl[] = { {0x00, 0x00, 0x00}, {0x00, 0x01, 0x01}, {0x00, 0x02, 0x02}, {0x00, 0x03, 0x03}, {0x00, 0x04, 0x04}, {0x00, 0x05, 0x05}, {0x00, 0x06, 0x06}, {0x00, 0x07, 0x07}, {0x00, 0x08, 0x08}, {0x00, 0x09, 0x09}, {0x00, 0x0a, 0x0a}, {0x00, 0x0b, 0x0b}, {0x00, 0x0c, 0x0c}, {0x00, 0x0d, 0x0d}, {0x00, 0x0e, 0x0e}, {0x00, 0x0f, 0x0f}, {0x00, 0x10, 0x10}, {0x00, 0x11, 0x11}, {0x00, 0x12, 0x12}, {0x00, 0x13, 0x13}, {0x00, 0x14, 0x14}, {0x00, 0x15, 0x15}, {0x00, 0x16, 0x16}, {0x00, 0x17, 0x17}, {0x00, 0x18, 0x18}, {0x00, 0x19, 0x19}, {0x00, 0x1a, 0x1a}, {0x00, 0x1b, 0x1b}, {0x00, 0x1c, 0x1c}, {0x00, 0x1d, 0x1d}, {0x00, 0x1e, 0x1e}, {0x00, 0x1f, 0x1f}, {0x00, 0x20, 0x20}, {0x00, 0x21, 0x21}, {0x00, 0x22, 0x22}, {0x00, 0x23, 0x23}, {0x00, 0x24, 0x24}, {0x00, 0x25, 0x25}, {0x00, 0x26, 0x26}, {0x00, 0x27, 0x27}, {0x00, 0x28, 0x28}, {0x00, 0x29, 0x29}, {0x00, 0x2a, 0x2a}, {0x00, 0x2b, 0x2b}, {0x00, 0x2c, 0x2c}, {0x00, 0x2d, 0x2d}, {0x00, 0x2e, 0x2e}, {0x00, 0x2f, 0x2f}, {0x00, 0x30, 0x30}, {0x00, 0x31, 0x31}, {0x00, 0x32, 0x32}, {0x00, 0x33, 0x33}, {0x00, 0x34, 0x34}, {0x00, 0x35, 0x35}, {0x00, 0x36, 0x36}, {0x00, 0x37, 0x37}, {0x00, 0x38, 0x38}, {0x00, 0x39, 0x39}, {0x00, 0x3a, 0x3a}, {0x00, 0x3b, 0x3b}, {0x00, 0x3c, 0x3c}, {0x00, 0x3d, 0x3d}, {0x00, 0x3e, 0x3e}, {0x00, 0x3f, 0x3f}, {0x00, 0x40, 0x40}, {0x01, 0x61, 0x41}, {0x01, 0x62, 0x42}, {0x01, 0x63, 0x43}, {0x01, 0x64, 0x44}, {0x01, 0x65, 0x45}, {0x01, 0x66, 0x46}, {0x01, 0x67, 0x47}, {0x01, 0x68, 0x48}, {0x01, 0x69, 0x49}, {0x01, 0x6a, 0x4a}, {0x01, 0x6b, 0x4b}, {0x01, 0x6c, 0x4c}, {0x01, 0x6d, 0x4d}, {0x01, 0x6e, 0x4e}, {0x01, 0x6f, 0x4f}, {0x01, 0x70, 0x50}, {0x01, 0x71, 0x51}, {0x01, 0x72, 0x52}, {0x01, 0x73, 0x53}, {0x01, 0x74, 0x54}, {0x01, 0x75, 0x55}, {0x01, 0x76, 0x56}, {0x01, 0x77, 0x57}, {0x01, 0x78, 0x58}, {0x01, 0x79, 0x59}, {0x01, 0x7a, 0x5a}, {0x00, 0x5b, 0x5b}, {0x00, 0x5c, 0x5c}, {0x00, 0x5d, 0x5d}, {0x00, 0x5e, 0x5e}, {0x00, 0x5f, 0x5f}, {0x00, 0x60, 0x60}, {0x00, 0x61, 0x41}, {0x00, 0x62, 0x42}, {0x00, 0x63, 0x43}, {0x00, 0x64, 0x44}, {0x00, 0x65, 0x45}, {0x00, 0x66, 0x46}, {0x00, 0x67, 0x47}, {0x00, 0x68, 0x48}, {0x00, 0x69, 0x49}, {0x00, 0x6a, 0x4a}, {0x00, 0x6b, 0x4b}, {0x00, 0x6c, 0x4c}, {0x00, 0x6d, 0x4d}, {0x00, 0x6e, 0x4e}, {0x00, 0x6f, 0x4f}, {0x00, 0x70, 0x50}, {0x00, 0x71, 0x51}, {0x00, 0x72, 0x52}, {0x00, 0x73, 0x53}, {0x00, 0x74, 0x54}, {0x00, 0x75, 0x55}, {0x00, 0x76, 0x56}, {0x00, 0x77, 0x57}, {0x00, 0x78, 0x58}, {0x00, 0x79, 0x59}, {0x00, 0x7a, 0x5a}, {0x00, 0x7b, 0x7b}, {0x00, 0x7c, 0x7c}, {0x00, 0x7d, 0x7d}, {0x00, 0x7e, 0x7e}, {0x00, 0x7f, 0x7f}, {0x00, 0x80, 0x80}, {0x00, 0x81, 0x81}, {0x00, 0x82, 0x82}, {0x00, 0x83, 0x83}, {0x00, 0x84, 0x84}, {0x00, 0x85, 0x85}, {0x00, 0x86, 0x86}, {0x00, 0x87, 0x87}, {0x00, 0x88, 0x88}, {0x00, 0x89, 0x89}, {0x00, 0x8a, 0x8a}, {0x00, 0x8b, 0x8b}, {0x00, 0x8c, 0x8c}, {0x00, 0x8d, 0x8d}, {0x00, 0x8e, 0x8e}, {0x00, 0x8f, 0x8f}, {0x00, 0x90, 0x90}, {0x00, 0x91, 0x91}, {0x00, 0x92, 0x92}, {0x00, 0x93, 0x93}, {0x00, 0x94, 0x94}, {0x00, 0x95, 0x95}, {0x00, 0x96, 0x96}, {0x00, 0x97, 0x97}, {0x00, 0x98, 0x98}, {0x00, 0x99, 0x99}, {0x00, 0x9a, 0x9a}, {0x00, 0x9b, 0x9b}, {0x00, 0x9c, 0x9c}, {0x00, 0x9d, 0x9d}, {0x00, 0x9e, 0x9e}, {0x00, 0x9f, 0x9f}, {0x00, 0xa0, 0xa0}, {0x00, 0xa1, 0xa1}, {0x00, 0xa2, 0xa2}, {0x00, 0xa3, 0xa3}, {0x00, 0xa4, 0xa4}, {0x00, 0xa5, 0xa5}, {0x00, 0xa6, 0xa6}, {0x00, 0xa7, 0xa7}, {0x00, 0xa8, 0xa8}, {0x00, 0xa9, 0xa9}, {0x00, 0xaa, 0xaa}, {0x00, 0xab, 0xab}, {0x00, 0xac, 0xac}, {0x00, 0xad, 0xad}, {0x00, 0xae, 0xae}, {0x00, 0xaf, 0xaf}, {0x00, 0xb0, 0xb0}, {0x00, 0xb1, 0xb1}, {0x00, 0xb2, 0xb2}, {0x00, 0xb3, 0xb3}, {0x00, 0xb4, 0xb4}, {0x00, 0xb5, 0xb5}, {0x00, 0xb6, 0xb6}, {0x00, 0xb7, 0xb7}, {0x00, 0xb8, 0xb8}, {0x00, 0xb9, 0xb9}, {0x00, 0xba, 0xba}, {0x00, 0xbb, 0xbb}, {0x00, 0xbc, 0xbc}, {0x00, 0xbd, 0xbd}, {0x00, 0xbe, 0xbe}, {0x00, 0xbf, 0xbf}, {0x00, 0xc0, 0xc0}, {0x00, 0xc1, 0xc1}, {0x00, 0xc2, 0xc2}, {0x00, 0xc3, 0xc3}, {0x00, 0xc4, 0xc4}, {0x00, 0xc5, 0xc5}, {0x00, 0xc6, 0xc6}, {0x00, 0xc7, 0xc7}, {0x00, 0xc8, 0xc8}, {0x00, 0xc9, 0xc9}, {0x00, 0xca, 0xca}, {0x00, 0xcb, 0xcb}, {0x00, 0xcc, 0xcc}, {0x00, 0xcd, 0xcd}, {0x00, 0xce, 0xce}, {0x00, 0xcf, 0xcf}, {0x00, 0xd0, 0xd0}, {0x00, 0xd1, 0xd1}, {0x00, 0xd2, 0xd2}, {0x00, 0xd3, 0xd3}, {0x00, 0xd4, 0xd4}, {0x00, 0xd5, 0xd5}, {0x00, 0xd6, 0xd6}, {0x00, 0xd7, 0xd7}, {0x00, 0xd8, 0xd8}, {0x00, 0xd9, 0xd9}, {0x00, 0xda, 0xda}, {0x00, 0xdb, 0xdb}, {0x00, 0xdc, 0xdc}, {0x00, 0xdd, 0xdd}, {0x00, 0xde, 0xde}, {0x00, 0xdf, 0xdf}, {0x00, 0xe0, 0xe0}, {0x00, 0xe1, 0xe1}, {0x00, 0xe2, 0xe2}, {0x00, 0xe3, 0xe3}, {0x00, 0xe4, 0xe4}, {0x00, 0xe5, 0xe5}, {0x00, 0xe6, 0xe6}, {0x00, 0xe7, 0xe7}, {0x00, 0xe8, 0xe8}, {0x00, 0xe9, 0xe9}, {0x00, 0xea, 0xea}, {0x00, 0xeb, 0xeb}, {0x00, 0xec, 0xec}, {0x00, 0xed, 0xed}, {0x00, 0xee, 0xee}, {0x00, 0xef, 0xef}, {0x00, 0xf0, 0xf0}, {0x00, 0xf1, 0xf1}, {0x00, 0xf2, 0xf2}, {0x00, 0xf3, 0xf3}, {0x00, 0xf4, 0xf4}, {0x00, 0xf5, 0xf5}, {0x00, 0xf6, 0xf6}, {0x00, 0xf7, 0xf7}, {0x00, 0xf8, 0xf8}, {0x00, 0xf9, 0xf9}, {0x00, 0xfa, 0xfa}, {0x00, 0xfb, 0xfb}, {0x00, 0xfc, 0xfc}, {0x00, 0xfd, 0xfd}, {0x00, 0xfe, 0xfe}, {0x00, 0xff, 0xff}}; static struct cs_info tis620_tbl[] = { {0x00, 0x00, 0x00}, {0x00, 0x01, 0x01}, {0x00, 0x02, 0x02}, {0x00, 0x03, 0x03}, {0x00, 0x04, 0x04}, {0x00, 0x05, 0x05}, {0x00, 0x06, 0x06}, {0x00, 0x07, 0x07}, {0x00, 0x08, 0x08}, {0x00, 0x09, 0x09}, {0x00, 0x0a, 0x0a}, {0x00, 0x0b, 0x0b}, {0x00, 0x0c, 0x0c}, {0x00, 0x0d, 0x0d}, {0x00, 0x0e, 0x0e}, {0x00, 0x0f, 0x0f}, {0x00, 0x10, 0x10}, {0x00, 0x11, 0x11}, {0x00, 0x12, 0x12}, {0x00, 0x13, 0x13}, {0x00, 0x14, 0x14}, {0x00, 0x15, 0x15}, {0x00, 0x16, 0x16}, {0x00, 0x17, 0x17}, {0x00, 0x18, 0x18}, {0x00, 0x19, 0x19}, {0x00, 0x1a, 0x1a}, {0x00, 0x1b, 0x1b}, {0x00, 0x1c, 0x1c}, {0x00, 0x1d, 0x1d}, {0x00, 0x1e, 0x1e}, {0x00, 0x1f, 0x1f}, {0x00, 0x20, 0x20}, {0x00, 0x21, 0x21}, {0x00, 0x22, 0x22}, {0x00, 0x23, 0x23}, {0x00, 0x24, 0x24}, {0x00, 0x25, 0x25}, {0x00, 0x26, 0x26}, {0x00, 0x27, 0x27}, {0x00, 0x28, 0x28}, {0x00, 0x29, 0x29}, {0x00, 0x2a, 0x2a}, {0x00, 0x2b, 0x2b}, {0x00, 0x2c, 0x2c}, {0x00, 0x2d, 0x2d}, {0x00, 0x2e, 0x2e}, {0x00, 0x2f, 0x2f}, {0x00, 0x30, 0x30}, {0x00, 0x31, 0x31}, {0x00, 0x32, 0x32}, {0x00, 0x33, 0x33}, {0x00, 0x34, 0x34}, {0x00, 0x35, 0x35}, {0x00, 0x36, 0x36}, {0x00, 0x37, 0x37}, {0x00, 0x38, 0x38}, {0x00, 0x39, 0x39}, {0x00, 0x3a, 0x3a}, {0x00, 0x3b, 0x3b}, {0x00, 0x3c, 0x3c}, {0x00, 0x3d, 0x3d}, {0x00, 0x3e, 0x3e}, {0x00, 0x3f, 0x3f}, {0x00, 0x40, 0x40}, {0x01, 0x61, 0x41}, {0x01, 0x62, 0x42}, {0x01, 0x63, 0x43}, {0x01, 0x64, 0x44}, {0x01, 0x65, 0x45}, {0x01, 0x66, 0x46}, {0x01, 0x67, 0x47}, {0x01, 0x68, 0x48}, {0x01, 0x69, 0x49}, {0x01, 0x6a, 0x4a}, {0x01, 0x6b, 0x4b}, {0x01, 0x6c, 0x4c}, {0x01, 0x6d, 0x4d}, {0x01, 0x6e, 0x4e}, {0x01, 0x6f, 0x4f}, {0x01, 0x70, 0x50}, {0x01, 0x71, 0x51}, {0x01, 0x72, 0x52}, {0x01, 0x73, 0x53}, {0x01, 0x74, 0x54}, {0x01, 0x75, 0x55}, {0x01, 0x76, 0x56}, {0x01, 0x77, 0x57}, {0x01, 0x78, 0x58}, {0x01, 0x79, 0x59}, {0x01, 0x7a, 0x5a}, {0x00, 0x5b, 0x5b}, {0x00, 0x5c, 0x5c}, {0x00, 0x5d, 0x5d}, {0x00, 0x5e, 0x5e}, {0x00, 0x5f, 0x5f}, {0x00, 0x60, 0x60}, {0x00, 0x61, 0x41}, {0x00, 0x62, 0x42}, {0x00, 0x63, 0x43}, {0x00, 0x64, 0x44}, {0x00, 0x65, 0x45}, {0x00, 0x66, 0x46}, {0x00, 0x67, 0x47}, {0x00, 0x68, 0x48}, {0x00, 0x69, 0x49}, {0x00, 0x6a, 0x4a}, {0x00, 0x6b, 0x4b}, {0x00, 0x6c, 0x4c}, {0x00, 0x6d, 0x4d}, {0x00, 0x6e, 0x4e}, {0x00, 0x6f, 0x4f}, {0x00, 0x70, 0x50}, {0x00, 0x71, 0x51}, {0x00, 0x72, 0x52}, {0x00, 0x73, 0x53}, {0x00, 0x74, 0x54}, {0x00, 0x75, 0x55}, {0x00, 0x76, 0x56}, {0x00, 0x77, 0x57}, {0x00, 0x78, 0x58}, {0x00, 0x79, 0x59}, {0x00, 0x7a, 0x5a}, {0x00, 0x7b, 0x7b}, {0x00, 0x7c, 0x7c}, {0x00, 0x7d, 0x7d}, {0x00, 0x7e, 0x7e}, {0x00, 0x7f, 0x7f}, {0x00, 0x80, 0x80}, {0x00, 0x81, 0x81}, {0x00, 0x82, 0x82}, {0x00, 0x83, 0x83}, {0x00, 0x84, 0x84}, {0x00, 0x85, 0x85}, {0x00, 0x86, 0x86}, {0x00, 0x87, 0x87}, {0x00, 0x88, 0x88}, {0x00, 0x89, 0x89}, {0x00, 0x8a, 0x8a}, {0x00, 0x8b, 0x8b}, {0x00, 0x8c, 0x8c}, {0x00, 0x8d, 0x8d}, {0x00, 0x8e, 0x8e}, {0x00, 0x8f, 0x8f}, {0x00, 0x90, 0x90}, {0x00, 0x91, 0x91}, {0x00, 0x92, 0x92}, {0x00, 0x93, 0x93}, {0x00, 0x94, 0x94}, {0x00, 0x95, 0x95}, {0x00, 0x96, 0x96}, {0x00, 0x97, 0x97}, {0x00, 0x98, 0x98}, {0x00, 0x99, 0x99}, {0x00, 0x9a, 0x9a}, {0x00, 0x9b, 0x9b}, {0x00, 0x9c, 0x9c}, {0x00, 0x9d, 0x9d}, {0x00, 0x9e, 0x9e}, {0x00, 0x9f, 0x9f}, {0x00, 0xa0, 0xa0}, {0x00, 0xa1, 0xa1}, {0x00, 0xa2, 0xa2}, {0x00, 0xa3, 0xa3}, {0x00, 0xa4, 0xa4}, {0x00, 0xa5, 0xa5}, {0x00, 0xa6, 0xa6}, {0x00, 0xa7, 0xa7}, {0x00, 0xa8, 0xa8}, {0x00, 0xa9, 0xa9}, {0x00, 0xaa, 0xaa}, {0x00, 0xab, 0xab}, {0x00, 0xac, 0xac}, {0x00, 0xad, 0xad}, {0x00, 0xae, 0xae}, {0x00, 0xaf, 0xaf}, {0x00, 0xb0, 0xb0}, {0x00, 0xb1, 0xb1}, {0x00, 0xb2, 0xb2}, {0x00, 0xb3, 0xb3}, {0x00, 0xb4, 0xb4}, {0x00, 0xb5, 0xb5}, {0x00, 0xb6, 0xb6}, {0x00, 0xb7, 0xb7}, {0x00, 0xb8, 0xb8}, {0x00, 0xb9, 0xb9}, {0x00, 0xba, 0xba}, {0x00, 0xbb, 0xbb}, {0x00, 0xbc, 0xbc}, {0x00, 0xbd, 0xbd}, {0x00, 0xbe, 0xbe}, {0x00, 0xbf, 0xbf}, {0x00, 0xc0, 0xc0}, {0x00, 0xc1, 0xc1}, {0x00, 0xc2, 0xc2}, {0x00, 0xc3, 0xc3}, {0x00, 0xc4, 0xc4}, {0x00, 0xc5, 0xc5}, {0x00, 0xc6, 0xc6}, {0x00, 0xc7, 0xc7}, {0x00, 0xc8, 0xc8}, {0x00, 0xc9, 0xc9}, {0x00, 0xca, 0xca}, {0x00, 0xcb, 0xcb}, {0x00, 0xcc, 0xcc}, {0x00, 0xcd, 0xcd}, {0x00, 0xce, 0xce}, {0x00, 0xcf, 0xcf}, {0x00, 0xd0, 0xd0}, {0x00, 0xd1, 0xd1}, {0x00, 0xd2, 0xd2}, {0x00, 0xd3, 0xd3}, {0x00, 0xd4, 0xd4}, {0x00, 0xd5, 0xd5}, {0x00, 0xd6, 0xd6}, {0x00, 0xd7, 0xd7}, {0x00, 0xd8, 0xd8}, {0x00, 0xd9, 0xd9}, {0x00, 0xda, 0xda}, {0x00, 0xdb, 0xdb}, {0x00, 0xdc, 0xdc}, {0x00, 0xdd, 0xdd}, {0x00, 0xde, 0xde}, {0x00, 0xdf, 0xdf}, {0x00, 0xe0, 0xe0}, {0x00, 0xe1, 0xe1}, {0x00, 0xe2, 0xe2}, {0x00, 0xe3, 0xe3}, {0x00, 0xe4, 0xe4}, {0x00, 0xe5, 0xe5}, {0x00, 0xe6, 0xe6}, {0x00, 0xe7, 0xe7}, {0x00, 0xe8, 0xe8}, {0x00, 0xe9, 0xe9}, {0x00, 0xea, 0xea}, {0x00, 0xeb, 0xeb}, {0x00, 0xec, 0xec}, {0x00, 0xed, 0xed}, {0x00, 0xee, 0xee}, {0x00, 0xef, 0xef}, {0x00, 0xf0, 0xf0}, {0x00, 0xf1, 0xf1}, {0x00, 0xf2, 0xf2}, {0x00, 0xf3, 0xf3}, {0x00, 0xf4, 0xf4}, {0x00, 0xf5, 0xf5}, {0x00, 0xf6, 0xf6}, {0x00, 0xf7, 0xf7}, {0x00, 0xf8, 0xf8}, {0x00, 0xf9, 0xf9}, {0x00, 0xfa, 0xfa}, {0x00, 0xfb, 0xfb}, {0x00, 0xfc, 0xfc}, {0x00, 0xfd, 0xfd}, {0x00, 0xfe, 0xfe}, {0x00, 0xff, 0xff}}; struct enc_entry { const char* enc_name; struct cs_info* cs_table; }; static struct enc_entry encds[] = { {"iso88591", iso1_tbl}, // ISO-8859-1 {"iso88592", iso2_tbl}, // ISO-8859-2 {"iso88593", iso3_tbl}, // ISO-8859-3 {"iso88594", iso4_tbl}, // ISO-8859-4 {"iso88595", iso5_tbl}, // ISO-8859-5 {"iso88596", iso6_tbl}, // ISO-8859-6 {"iso88597", iso7_tbl}, // ISO-8859-7 {"iso88598", iso8_tbl}, // ISO-8859-8 {"iso88599", iso9_tbl}, // ISO-8859-9 {"iso885910", iso10_tbl}, // ISO-8859-10 {"tis620", tis620_tbl}, // TIS-620/ISO-8859-11 {"tis6202533", tis620_tbl}, // TIS-620/ISO-8859-11 {"iso885911", tis620_tbl}, // TIS-620/ISO-8859-11 {"iso885913", iso13_tbl}, // ISO-8859-13 {"iso885914", iso14_tbl}, // ISO-8859-14 {"iso885915", iso15_tbl}, // ISO-8859-15 {"koi8r", koi8r_tbl}, // KOI8-R {"koi8u", koi8u_tbl}, // KOI8-U {"cp1251", cp1251_tbl}, // CP-1251 {"microsoftcp1251", cp1251_tbl}, // microsoft-cp1251 {"xisciias", iscii_devanagari_tbl}, // x-iscii-as {"isciidevanagari", iscii_devanagari_tbl} // ISCII-DEVANAGARI }; /* map to lower case and remove non alphanumeric chars */ static void toAsciiLowerAndRemoveNonAlphanumeric(const char* pName, char* pBuf) { while (*pName) { /* A-Z */ if ((*pName >= 0x41) && (*pName <= 0x5A)) { *pBuf = (*pName) + 0x20; /* toAsciiLower */ pBuf++; } /* a-z, 0-9 */ else if (((*pName >= 0x61) && (*pName <= 0x7A)) || ((*pName >= 0x30) && (*pName <= 0x39))) { *pBuf = *pName; pBuf++; } pName++; } *pBuf = '\0'; } struct cs_info* get_current_cs(const std::string& es) { char* normalized_encoding = new char[es.size() + 1]; toAsciiLowerAndRemoveNonAlphanumeric(es.c_str(), normalized_encoding); struct cs_info* ccs = NULL; for (const auto& encd : encds) { if (strcmp(normalized_encoding, encd.enc_name) == 0) { ccs = encd.cs_table; break; } } delete[] normalized_encoding; if (!ccs) { HUNSPELL_WARNING(stderr, "error: unknown encoding %s: using %s as fallback\n", es.c_str(), encds[0].enc_name); ccs = encds[0].cs_table; } return ccs; } #else // XXX This function was rewritten for mozilla. Instead of storing the // conversion tables static in this file, create them when needed // with help the mozilla backend. struct cs_info* get_current_cs(const std::string& es) { struct cs_info* ccs = new cs_info[256]; // Initialze the array with dummy data so that we wouldn't need // to return null in case of failures. for (int i = 0; i <= 0xff; ++i) { ccs[i].ccase = false; ccs[i].clower = i; ccs[i].cupper = i; } auto encoding = Encoding::ForLabelNoReplacement(es); if (!encoding) { return ccs; } auto encoder = encoding->NewEncoder(); auto decoder = encoding->NewDecoderWithoutBOMHandling(); for (unsigned int i = 0; i <= 0xff; ++i) { bool success = false; // We want to find the upper/lowercase equivalents of each byte // in this 1-byte character encoding. Call our encoding/decoding // APIs separately for each byte since they may reject some of the // bytes, and we want to handle errors separately for each byte. uint8_t lower, upper; do { if (i == 0) break; uint8_t source = uint8_t(i); char16_t uni[2]; char16_t uniCased; uint8_t destination[4]; auto src1 = MakeSpan(&source, 1); auto dst1 = MakeSpan(uni); auto src2 = MakeSpan(&uniCased, 1); auto dst2 = MakeSpan(destination); uint32_t result; size_t read; size_t written; Tie(result, read, written) = decoder->DecodeToUTF16WithoutReplacement(src1, dst1, true); if (result != kInputEmpty || read != 1 || written != 1) { break; } uniCased = ToLowerCase(uni[0]); Tie(result, read, written) = encoder->EncodeFromUTF16WithoutReplacement(src2, dst2, true); if (result != kInputEmpty || read != 1 || written != 1) { break; } lower = destination[0]; uniCased = ToUpperCase(uni[0]); Tie(result, read, written) = encoder->EncodeFromUTF16WithoutReplacement(src2, dst2, true); if (result != kInputEmpty || read != 1 || written != 1) { break; } upper = destination[0]; success = true; } while (0); encoding->NewEncoderInto(*encoder); encoding->NewDecoderWithoutBOMHandlingInto(*decoder); if (success) { ccs[i].cupper = upper; ccs[i].clower = lower; } else { ccs[i].cupper = i; ccs[i].clower = i; } if (ccs[i].clower != (unsigned char)i) ccs[i].ccase = true; else ccs[i].ccase = false; } return ccs; } #endif // primitive isalpha() replacement for tokenization std::string get_casechars(const char* enc) { struct cs_info* csconv = get_current_cs(enc); std::string expw; for (int i = 0; i <= 255; ++i) { if (cupper(csconv, i) != clower(csconv, i)) { expw.push_back(static_cast(i)); } } #ifdef MOZILLA_CLIENT delete[] csconv; #endif return expw; } // language to encoding default map struct lang_map { const char* lang; int num; }; static struct lang_map lang2enc[] = {{"ar", LANG_ar}, {"az", LANG_az}, {"az_AZ", LANG_az}, // for back-compatibility {"bg", LANG_bg}, {"ca", LANG_ca}, {"crh", LANG_crh}, {"cs", LANG_cs}, {"da", LANG_da}, {"de", LANG_de}, {"el", LANG_el}, {"en", LANG_en}, {"es", LANG_es}, {"eu", LANG_eu}, {"gl", LANG_gl}, {"fr", LANG_fr}, {"hr", LANG_hr}, {"hu", LANG_hu}, {"hu_HU", LANG_hu}, // for back-compatibility {"it", LANG_it}, {"la", LANG_la}, {"lv", LANG_lv}, {"nl", LANG_nl}, {"pl", LANG_pl}, {"pt", LANG_pt}, {"sv", LANG_sv}, {"tr", LANG_tr}, {"tr_TR", LANG_tr}, // for back-compatibility {"ru", LANG_ru}, {"uk", LANG_uk}}; int get_lang_num(const std::string& lang) { for (const auto& i : lang2enc) { if (strcmp(lang.c_str(), i.lang) == 0) { return i.num; } } return LANG_xx; } unsigned short unicodetoupper(unsigned short c, int langnum) { // In Azeri and Turkish, I and i dictinct letters: // There are a dotless lower case i pair of upper `I', // and an upper I with dot pair of lower `i'. if (c == 0x0069 && ((langnum == LANG_az) || (langnum == LANG_tr) || (langnum == LANG_crh))) return 0x0130; #ifdef OPENOFFICEORG return static_cast(u_toupper(c)); #else #ifdef MOZILLA_CLIENT return ToUpperCase((char16_t)c); #else return utf_tbl[c].cupper; #endif #endif } unsigned short unicodetolower(unsigned short c, int langnum) { // In Azeri and Turkish, I and i dictinct letters: // There are a dotless lower case i pair of upper `I', // and an upper I with dot pair of lower `i'. if (c == 0x0049 && ((langnum == LANG_az) || (langnum == LANG_tr) || (langnum == LANG_crh))) return 0x0131; #ifdef OPENOFFICEORG return static_cast(u_tolower(c)); #else #ifdef MOZILLA_CLIENT return ToLowerCase((char16_t)c); #else return utf_tbl[c].clower; #endif #endif } int unicodeisalpha(unsigned short c) { #ifdef OPENOFFICEORG return u_isalpha(c); #else return utf_tbl[c].cletter; #endif } /* get type of capitalization */ int get_captype(const std::string& word, cs_info* csconv) { // now determine the capitalization type of the first nl letters size_t ncap = 0; size_t nneutral = 0; size_t firstcap = 0; if (csconv == NULL) return NOCAP; for (auto q = word.begin(); q != word.end(); ++q) { const auto nIndex = static_cast(*q); if (ccase(csconv, nIndex)) ncap++; if (cupper(csconv, nIndex) == clower(csconv, nIndex)) nneutral++; } if (ncap) { const auto nIndex = static_cast(word[0]); firstcap = csconv[nIndex].ccase; } // now finally set the captype if (ncap == 0) { return NOCAP; } else if ((ncap == 1) && firstcap) { return INITCAP; } else if ((ncap == word.size()) || ((ncap + nneutral) == word.size())) { return ALLCAP; } else if ((ncap > 1) && firstcap) { return HUHINITCAP; } return HUHCAP; } int get_captype_utf8(const std::vector& word, int langnum) { // now determine the capitalization type of the first nl letters size_t ncap = 0; size_t nneutral = 0; size_t firstcap = 0; auto it = word.begin(), it_end = word.end(); while (it != it_end) { const auto idx = (unsigned short)*it; const auto lwridx = unicodetolower(idx, langnum); if (idx != lwridx) ncap++; if (unicodetoupper(idx, langnum) == lwridx) nneutral++; ++it; } if (ncap) { const auto idx = (unsigned short)word[0]; firstcap = (idx != unicodetolower(idx, langnum)); } // now finally set the captype if (ncap == 0) { return NOCAP; } else if ((ncap == 1) && firstcap) { return INITCAP; } else if ((ncap == word.size()) || ((ncap + nneutral) == word.size())) { return ALLCAP; } else if ((ncap > 1) && firstcap) { return HUHINITCAP; } return HUHCAP; } // strip all ignored characters in the string size_t remove_ignored_chars_utf(std::string& word, const std::vector& ignored_chars) { std::vector w; std::vector w2; u8_u16(w, word); std::copy_if(w.begin(), w.end(), std::back_inserter(w2), [&ignored_chars](w_char wc) { return !std::binary_search(ignored_chars.begin(), ignored_chars.end(), wc); }); u16_u8(word, w2); return w2.size(); } // strip all ignored characters in the string size_t remove_ignored_chars(std::string& word, const std::string& ignored_chars) { word.erase( std::remove_if(word.begin(), word.end(), is_any_of(ignored_chars)), word.end()); return word.size(); } bool parse_string(const std::string& line, std::string& out, int ln) { if (!out.empty()) { HUNSPELL_WARNING(stderr, "error: line %d: multiple definitions\n", ln); return false; } int i = 0; int np = 0; auto iter = line.begin(), start_piece = mystrsep(line, iter); while (start_piece != line.end()) { switch (i) { case 0: { np++; break; } case 1: { out.assign(start_piece, iter); np++; break; } default: break; } ++i; start_piece = mystrsep(line, iter); } if (np != 2) { HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", ln); return false; } return true; } bool parse_array(const std::string& line, std::string& out, std::vector& out_utf16, int utf8, int ln) { if (!parse_string(line, out, ln)) return false; if (utf8) { u8_u16(out_utf16, out); std::sort(out_utf16.begin(), out_utf16.end()); } return true; } hunspell-1.7.2/src/hunspell/hashmgr.cxx0000664000175000017500000012330514352160534015103 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /* * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada * And Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. All modifications to the source code must be clearly marked as * such. Binary redistributions based on modified source code * must be clearly marked as modified versions in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include #include #include #include #include #include #if __cplusplus >= 202002L #include #endif #include "hashmgr.hxx" #include "csutil.hxx" #include "atypes.hxx" #include "langnum.hxx" // build a hash table from a munched word list HashMgr::HashMgr(const char* tpath, const char* apath, const char* key) : flag_mode(FLAG_CHAR), complexprefixes(0), utf8(0), forbiddenword(FORBIDDENWORD), // forbidden word signing flag langnum(0), csconv(NULL) { load_config(apath, key); if (!csconv) csconv = get_current_cs(SPELL_ENCODING); int ec = load_tables(tpath, key); if (ec) { /* error condition - what should we do here */ HUNSPELL_WARNING(stderr, "Hash Manager Error : %d\n", ec); free_table(); //keep table size to 1 to fix possible division with zero tableptr.resize(1, nullptr); } } void HashMgr::free_flag(unsigned short* astr, short alen) { if (astr && (aliasf.empty() || TESTAFF(astr, ONLYUPCASEFLAG, alen))) delete[] astr; } void HashMgr::free_table() { // now pass through hash table freeing up everything // go through column by column of the table for (auto ptr : tableptr) { hentry* nt = NULL; while (ptr) { nt = ptr->next; free_flag(ptr->astr, ptr->alen); free(ptr); ptr = nt; } } tableptr.clear(); } HashMgr::~HashMgr() { free_table(); for (auto& j : aliasf) delete[] j; aliasf.clear(); for (auto& j : aliasm) delete[] j; aliasm.clear(); #ifdef MOZILLA_CLIENT delete[] csconv; #endif } // lookup a root word in the hashtable struct hentry* HashMgr::lookup(const char* word, size_t len) const { struct hentry* dp = tableptr[hash(word, len)]; if (!dp) return NULL; for (; dp != NULL; dp = dp->next) { if (strcmp(word, dp->word) == 0) return dp; } return NULL; } // add a word to the hash table (private) int HashMgr::add_word(const std::string& in_word, int wcl, unsigned short* aff, int al, const std::string* in_desc, bool onlyupcase, int captype) { if (al > std::numeric_limits::max()) { HUNSPELL_WARNING(stderr, "error: affix len %d is over max limit\n", al); free_flag(aff, al); return 1; } const std::string* word = &in_word; const std::string* desc = in_desc; std::string *word_copy = NULL; std::string *desc_copy = NULL; if ((!ignorechars.empty() && !has_no_ignored_chars(in_word, ignorechars)) || complexprefixes) { word_copy = new std::string(in_word); if (!ignorechars.empty()) { if (utf8) { wcl = remove_ignored_chars_utf(*word_copy, ignorechars_utf16); } else { remove_ignored_chars(*word_copy, ignorechars); } } if (complexprefixes) { if (utf8) wcl = reverseword_utf(*word_copy); else reverseword(*word_copy); if (in_desc && aliasm.empty()) { desc_copy = new std::string(*in_desc); if (complexprefixes) { if (utf8) reverseword_utf(*desc_copy); else reverseword(*desc_copy); } desc = desc_copy; } } word = word_copy; } // limit of hp->blen if (word->size() > std::numeric_limits::max()) { HUNSPELL_WARNING(stderr, "error: word len %ld is over max limit\n", word->size()); delete desc_copy; delete word_copy; free_flag(aff, al); return 1; } bool upcasehomonym = false; int descl = desc ? (!aliasm.empty() ? sizeof(char*) : desc->size() + 1) : 0; // variable-length hash record with word and optional fields auto hp = (struct hentry*)malloc(sizeof(struct hentry) + word->size() + descl); if (!hp) { delete desc_copy; delete word_copy; free_flag(aff, al); return 1; } char* hpw = hp->word; memcpy(hpw, word->data(), word->size()); hpw[word->size()] = 0; int i = hash(hpw, word->size()); hp->blen = (unsigned char)word->size(); hp->clen = (unsigned char)wcl; hp->alen = (short)al; hp->astr = aff; hp->next = NULL; hp->next_homonym = NULL; hp->var = (captype == INITCAP) ? H_OPT_INITCAP : 0; // store the description string or its pointer if (desc) { hp->var |= H_OPT; if (!aliasm.empty()) { hp->var |= H_OPT_ALIASM; store_pointer(hpw + word->size() + 1, get_aliasm(atoi(desc->c_str()))); } else { strcpy(hpw + word->size() + 1, desc->c_str()); } if (HENTRY_FIND(hp, MORPH_PHON)) { hp->var |= H_OPT_PHON; // store ph: fields (pronounciation, misspellings, old orthography etc.) // of a morphological description in reptable to use in REP replacements. size_t predicted = tableptr.size() / MORPH_PHON_RATIO; if (reptable.capacity() < predicted) reptable.reserve(predicted); std::string fields = HENTRY_DATA(hp); std::string::const_iterator iter = fields.begin(), start_piece = mystrsep(fields, iter); while (start_piece != fields.end()) { if (std::string(start_piece, iter).find(MORPH_PHON) == 0) { std::string ph = std::string(start_piece, iter).substr(sizeof MORPH_PHON - 1); if (!ph.empty()) { std::vector w; size_t strippatt; std::string wordpart; // dictionary based REP replacement, separated by "->" // for example "pretty ph:prity ph:priti->pretti" to handle // both prity -> pretty and pritier -> prettiest suggestions. if (((strippatt = ph.find("->")) != std::string::npos) && (strippatt > 0) && (strippatt < ph.size() - 2)) { wordpart = ph.substr(strippatt + 2); ph.erase(ph.begin() + strippatt, ph.end()); } else wordpart = in_word; // when the ph: field ends with the character *, // strip last character of the pattern and the replacement // to match in REP suggestions also at character changes, // for example, "pretty ph:prity*" results "prit->prett" // REP replacement instead of "prity->pretty", to get // prity->pretty and pritiest->prettiest suggestions. if (ph.at(ph.size()-1) == '*') { strippatt = 1; size_t stripword = 0; if (utf8) { while ((strippatt < ph.size()) && ((ph.at(ph.size()-strippatt-1) & 0xc0) == 0x80)) ++strippatt; while ((stripword < wordpart.size()) && ((wordpart.at(wordpart.size()-stripword-1) & 0xc0) == 0x80)) ++stripword; } ++strippatt; ++stripword; if ((ph.size() > strippatt) && (wordpart.size() > stripword)) { ph.erase(ph.size()-strippatt, strippatt); wordpart.erase(wordpart.size()-stripword, stripword); } } // capitalize lowercase pattern for capitalized words to support // good suggestions also for capitalized misspellings, eg. // Wednesday ph:wendsay // results wendsay -> Wednesday and Wendsay -> Wednesday, too. if (captype == INITCAP) { std::string ph_capitalized; if (utf8) { u8_u16(w, ph); if (get_captype_utf8(w, langnum) == NOCAP) { mkinitcap_utf(w, langnum); u16_u8(ph_capitalized, w); } } else if (get_captype(ph, csconv) == NOCAP) mkinitcap(ph_capitalized, csconv); if (!ph_capitalized.empty()) { // add also lowercase word in the case of German or // Hungarian to support lowercase suggestions lowercased by // compound word generation or derivational suffixes // (for example by adjectival suffix "-i" of geographical // names in Hungarian: // Massachusetts ph:messzecsuzec // messzecsuzeci -> massachusettsi (adjective) // For lowercasing by conditional PFX rules, see // tests/germancompounding test example or the // Hungarian dictionary.) if (langnum == LANG_de || langnum == LANG_hu) { std::string wordpart_lower(wordpart); if (utf8) { u8_u16(w, wordpart_lower); mkallsmall_utf(w, langnum); u16_u8(wordpart_lower, w); } else { mkallsmall(wordpart_lower, csconv); } reptable.emplace_back(); reptable.back().pattern.assign(ph); reptable.back().outstrings[0].assign(wordpart_lower); } reptable.emplace_back(); reptable.back().pattern.assign(ph_capitalized); reptable.back().outstrings[0].assign(wordpart); } } reptable.emplace_back(); reptable.back().pattern.assign(ph); reptable.back().outstrings[0].assign(wordpart); } } start_piece = mystrsep(fields, iter); } } } struct hentry* dp = tableptr[i]; if (!dp) { tableptr[i] = hp; delete desc_copy; delete word_copy; return 0; } while (dp->next != NULL) { if ((!dp->next_homonym) && (strcmp(hp->word, dp->word) == 0)) { // remove hidden onlyupcase homonym if (!onlyupcase) { if ((dp->astr) && TESTAFF(dp->astr, ONLYUPCASEFLAG, dp->alen)) { delete[] dp->astr; dp->astr = hp->astr; dp->alen = hp->alen; free(hp); delete desc_copy; delete word_copy; return 0; } else { dp->next_homonym = hp; } } else { upcasehomonym = true; } } dp = dp->next; } if (strcmp(hp->word, dp->word) == 0) { // remove hidden onlyupcase homonym if (!onlyupcase) { if ((dp->astr) && TESTAFF(dp->astr, ONLYUPCASEFLAG, dp->alen)) { delete[] dp->astr; dp->astr = hp->astr; dp->alen = hp->alen; free(hp); delete desc_copy; delete word_copy; return 0; } else { dp->next_homonym = hp; } } else { upcasehomonym = true; } } if (!upcasehomonym) { dp->next = hp; } else { // remove hidden onlyupcase homonym delete[] hp->astr; free(hp); } delete desc_copy; delete word_copy; return 0; } int HashMgr::add_hidden_capitalized_word(const std::string& word, int wcl, unsigned short* flags, int flagslen, const std::string* dp, int captype) { if (flags == NULL) flagslen = 0; // add inner capitalized forms to handle the following allcap forms: // Mixed caps: OpenOffice.org -> OPENOFFICE.ORG // Allcaps with suffixes: CIA's -> CIA'S if (((captype == HUHCAP) || (captype == HUHINITCAP) || ((captype == ALLCAP) && (flagslen != 0))) && !((flagslen != 0) && TESTAFF(flags, forbiddenword, flagslen))) { unsigned short* flags2 = new unsigned short[flagslen + 1]; flags2[flagslen] = ONLYUPCASEFLAG; if (flagslen) { memcpy(flags2, flags, flagslen * sizeof(unsigned short)); std::sort(flags2, flags2 + flagslen + 1); } if (utf8) { std::string st; std::vector w; u8_u16(w, word); mkallsmall_utf(w, langnum); mkinitcap_utf(w, langnum); u16_u8(st, w); return add_word(st, wcl, flags2, flagslen + 1, dp, true, INITCAP); } else { std::string new_word(word); mkallsmall(new_word, csconv); mkinitcap(new_word, csconv); int ret = add_word(new_word, wcl, flags2, flagslen + 1, dp, true, INITCAP); return ret; } } return 0; } // detect captype and modify word length for UTF-8 encoding int HashMgr::get_clen_and_captype(const std::string& word, int* captype, std::vector &workbuf) { int len; if (utf8) { len = u8_u16(workbuf, word); *captype = get_captype_utf8(workbuf, langnum); } else { len = word.size(); *captype = get_captype(word, csconv); } return len; } int HashMgr::get_clen_and_captype(const std::string& word, int* captype) { std::vector workbuf; return get_clen_and_captype(word, captype, workbuf); } // remove word (personal dictionary function for standalone applications) int HashMgr::remove(const std::string& word) { struct hentry* dp = lookup(word.c_str(), word.size()); while (dp) { if (dp->alen == 0 || !TESTAFF(dp->astr, forbiddenword, dp->alen)) { auto flags = new unsigned short[dp->alen + 1]; for (int i = 0; i < dp->alen; i++) flags[i] = dp->astr[i]; flags[dp->alen] = forbiddenword; delete[] dp->astr; dp->astr = flags; dp->alen++; std::sort(flags, flags + dp->alen); } dp = dp->next_homonym; } return 0; } /* remove forbidden flag to add a personal word to the hash */ int HashMgr::remove_forbidden_flag(const std::string& word) { struct hentry* dp = lookup(word.c_str(), word.size()); if (!dp) return 1; while (dp) { if (dp->astr && TESTAFF(dp->astr, forbiddenword, dp->alen)) dp->alen = 0; // XXX forbidden words of personal dic. dp = dp->next_homonym; } return 0; } // add a custom dic. word to the hash table (public) int HashMgr::add(const std::string& word) { if (remove_forbidden_flag(word)) { int captype, al = 0; unsigned short* flags = NULL; int wcl = get_clen_and_captype(word, &captype); add_word(word, wcl, flags, al, NULL, false, captype); return add_hidden_capitalized_word(word, wcl, flags, al, NULL, captype); } return 0; } int HashMgr::add_with_affix(const std::string& word, const std::string& example) { // detect captype and modify word length for UTF-8 encoding struct hentry* dp = lookup(example.c_str(), example.size()); remove_forbidden_flag(word); if (dp && dp->astr) { int captype; int wcl = get_clen_and_captype(word, &captype); if (!aliasf.empty()) { add_word(word, wcl, dp->astr, dp->alen, NULL, false, captype); } else { auto flags = new unsigned short[dp->alen]; memcpy(flags, dp->astr, dp->alen * sizeof(unsigned short)); add_word(word, wcl, flags, dp->alen, NULL, false, captype); } return add_hidden_capitalized_word(word, wcl, dp->astr, dp->alen, NULL, captype); } return 1; } // walk the hash table entry by entry - null at end // initialize: col=-1; hp = NULL; hp = walk_hashtable(&col, hp); struct hentry* HashMgr::walk_hashtable(int& col, struct hentry* hp) const { if (hp && hp->next != NULL) return hp->next; for (col++; col < (int)tableptr.size(); ++col) { if (tableptr[col]) return tableptr[col]; } // null at end and reset to start col = -1; return NULL; } // load a munched word list and build a hash table on the fly int HashMgr::load_tables(const char* tpath, const char* key) { // open dictionary file FileMgr* dict = new FileMgr(tpath, key); if (dict == NULL) return 1; // first read the first line of file to get hash table size std::string ts; if (!dict->getline(ts)) { HUNSPELL_WARNING(stderr, "error: empty dic file %s\n", tpath); delete dict; return 2; } mychomp(ts); /* remove byte order mark */ if (ts.compare(0, 3, "\xEF\xBB\xBF", 3) == 0) { ts.erase(0, 3); } int tablesize = atoi(ts.c_str()); const int nExtra = 5 + USERWORD; #if !defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION) const int max_allowed = (std::numeric_limits::max() - 1 - nExtra) / int(sizeof(struct hentry*)); #else const int max_allowed = (268435456 - 1 - nExtra) / int(sizeof(struct hentry*)); #endif if (tablesize <= 0 || tablesize >= max_allowed) { HUNSPELL_WARNING( stderr, "error: line 1: missing or bad word count in the dic file\n"); delete dict; return 4; } tablesize += nExtra; if ((tablesize & 1) == 0) tablesize++; // allocate the hash table tableptr.resize(tablesize, nullptr); // loop through all words on much list and add to hash // table and create word and affix strings std::vector workbuf; while (dict->getline(ts)) { mychomp(ts); // split each line into word and morphological description size_t dp_pos = 0; while ((dp_pos = ts.find(':', dp_pos)) != std::string::npos) { if ((dp_pos > 3) && (ts[dp_pos - 3] == ' ' || ts[dp_pos - 3] == '\t')) { for (dp_pos -= 3; dp_pos > 0 && (ts[dp_pos-1] == ' ' || ts[dp_pos-1] == '\t'); --dp_pos) ; if (dp_pos == 0) { // missing word dp_pos = std::string::npos; } else { ++dp_pos; } break; } ++dp_pos; } // tabulator is the old morphological field separator size_t dp2_pos = ts.find('\t'); if (dp2_pos != std::string::npos && (dp_pos == std::string::npos || dp2_pos < dp_pos)) { dp_pos = dp2_pos + 1; } std::string dp; if (dp_pos != std::string::npos) { dp.assign(ts.substr(dp_pos)); ts.resize(dp_pos - 1); } // split each line into word and affix char strings // "\/" signs slash in words (not affix separator) // "/" at beginning of the line is word character (not affix separator) size_t ap_pos = ts.find('/'); while (ap_pos != std::string::npos) { if (ap_pos == 0) { ++ap_pos; continue; } else if (ts[ap_pos - 1] != '\\') break; // replace "\/" with "/" ts.erase(ap_pos - 1, 1); ap_pos = ts.find('/', ap_pos); } unsigned short* flags; int al; if (ap_pos != std::string::npos && ap_pos != ts.size()) { std::string ap(ts.substr(ap_pos + 1)); ts.resize(ap_pos); if (!aliasf.empty()) { int index = atoi(ap.c_str()); al = get_aliasf(index, &flags, dict); if (!al) { HUNSPELL_WARNING(stderr, "error: line %d: bad flag vector alias\n", dict->getlinenum()); } } else { al = decode_flags(&flags, ap, dict); if (al == -1) { HUNSPELL_WARNING(stderr, "Can't allocate memory.\n"); delete dict; return 6; } std::sort(flags, flags + al); } } else { al = 0; flags = NULL; } int captype; int wcl = get_clen_and_captype(ts, &captype, workbuf); const std::string *dp_str = dp.empty() ? NULL : &dp; // add the word and its index plus its capitalized form optionally if (add_word(ts, wcl, flags, al, dp_str, false, captype) || add_hidden_capitalized_word(ts, wcl, flags, al, dp_str, captype)) { delete dict; return 5; } } delete dict; return 0; } // the hash function is a simple load and rotate // algorithm borrowed int HashMgr::hash(const char* word, size_t len) const { unsigned long hv = 0; int i = 0; while (i < 4 && i < len) hv = (hv << 8) | word[i++]; while (i < len) { ROTATE(hv, ROTATE_LEN); hv ^= word[i++]; } return (unsigned long)hv % tableptr.size(); } int HashMgr::decode_flags(unsigned short** result, const std::string& flags, FileMgr* af) const { int len; if (flags.empty()) { *result = NULL; return 0; } switch (flag_mode) { case FLAG_LONG: { // two-character flags (1x2yZz -> 1x 2y Zz) len = flags.size(); if ((len & 1) == 1) HUNSPELL_WARNING(stderr, "error: line %d: bad flagvector\n", af->getlinenum()); len >>= 1; *result = new unsigned short[len]; for (int i = 0; i < len; i++) { unsigned short flag = ((unsigned short)((unsigned char)flags[i << 1]) << 8) | ((unsigned short)((unsigned char)flags[(i << 1) | 1])); if (flag >= DEFAULTFLAGS) { HUNSPELL_WARNING(stderr, "error: line %d: flag id %d is too large (max: %d)\n", af->getlinenum(), flag, DEFAULTFLAGS - 1); flag = 0; } (*result)[i] = flag; } break; } case FLAG_NUM: { // decimal numbers separated by comma (4521,23,233 -> 4521 // 23 233) len = int(1 + std::count_if(flags.begin(), flags.end(), [](char c) { return c == ','; })); *result = new unsigned short[len]; unsigned short* dest = *result; const char* src = flags.c_str(); for (size_t p = 0; p < flags.size(); ++p) { if (flags[p] == ',') { int i = atoi(src); if (i >= DEFAULTFLAGS) { HUNSPELL_WARNING( stderr, "error: line %d: flag id %d is too large (max: %d)\n", af->getlinenum(), i, DEFAULTFLAGS - 1); i = 0; } *dest = (unsigned short)i; if (*dest == 0) HUNSPELL_WARNING(stderr, "error: line %d: 0 is wrong flag id\n", af->getlinenum()); src = flags.c_str() + p + 1; dest++; } } int i = atoi(src); if (i >= DEFAULTFLAGS) { HUNSPELL_WARNING(stderr, "error: line %d: flag id %d is too large (max: %d)\n", af->getlinenum(), i, DEFAULTFLAGS - 1); i = 0; } *dest = (unsigned short)i; if (*dest == 0) HUNSPELL_WARNING(stderr, "error: line %d: 0 is wrong flag id\n", af->getlinenum()); break; } case FLAG_UNI: { // UTF-8 characters std::vector w; u8_u16(w, flags); len = w.size(); *result = new unsigned short[len]; #if defined(__i386__) || defined(_M_IX86) || defined(_M_X64) memcpy(*result, w.data(), len * sizeof(unsigned short)); #else unsigned short* dest = *result; for (const w_char wc : w) { *dest = (unsigned short)wc; dest++; } #endif break; } default: { // Ispell's one-character flags (erfg -> e r f g) len = flags.size(); *result = new unsigned short[len]; unsigned short* dest = *result; for (const char flag : flags) { *dest = (unsigned char)flag; dest++; } } } return len; } bool HashMgr::decode_flags(std::vector& result, const std::string& flags, FileMgr* af) const { if (flags.empty()) { return false; } switch (flag_mode) { case FLAG_LONG: { // two-character flags (1x2yZz -> 1x 2y Zz) size_t len = flags.size(); if ((len & 1) == 1) HUNSPELL_WARNING(stderr, "error: line %d: bad flagvector\n", af->getlinenum()); len >>= 1; result.reserve(result.size() + len); for (size_t i = 0; i < len; ++i) { result.push_back(((unsigned short)((unsigned char)flags[i << 1]) << 8) | ((unsigned short)((unsigned char)flags[(i << 1) | 1]))); } break; } case FLAG_NUM: { // decimal numbers separated by comma (4521,23,233 -> 4521 // 23 233) const char* src = flags.c_str(); for (const char* p = src; *p; p++) { if (*p == ',') { int i = atoi(src); if (i >= DEFAULTFLAGS) { HUNSPELL_WARNING( stderr, "error: line %d: flag id %d is too large (max: %d)\n", af->getlinenum(), i, DEFAULTFLAGS - 1); i = 0; } result.push_back((unsigned short)i); if (result.back() == 0) HUNSPELL_WARNING(stderr, "error: line %d: 0 is wrong flag id\n", af->getlinenum()); src = p + 1; } } int i = atoi(src); if (i >= DEFAULTFLAGS) { HUNSPELL_WARNING(stderr, "error: line %d: flag id %d is too large (max: %d)\n", af->getlinenum(), i, DEFAULTFLAGS - 1); i = 0; } result.push_back((unsigned short)i); if (result.back() == 0) HUNSPELL_WARNING(stderr, "error: line %d: 0 is wrong flag id\n", af->getlinenum()); break; } case FLAG_UNI: { // UTF-8 characters std::vector w; u8_u16(w, flags); size_t len = w.size(), origsize = result.size(); #if defined(__i386__) || defined(_M_IX86) || defined(_M_X64) result.resize(origsize + len); memcpy(result.data() + origsize, w.data(), len * sizeof(short)); #else result.reserve(origsize + len); for (const w_char wc : w) result.push_back((unsigned short)wc); #endif break; } default: { // Ispell's one-character flags (erfg -> e r f g) result.reserve(flags.size()); for (const char flag : flags) { result.push_back((unsigned char)flag); } } } return true; } unsigned short HashMgr::decode_flag(const std::string& f) const { unsigned short s = 0; int i; switch (flag_mode) { case FLAG_LONG: s = ((unsigned short)((unsigned char)f[0]) << 8) | ((unsigned short)((unsigned char)f[1])); break; case FLAG_NUM: i = atoi(f.c_str()); if (i >= DEFAULTFLAGS) { HUNSPELL_WARNING(stderr, "error: flag id %d is too large (max: %d)\n", i, DEFAULTFLAGS - 1); i = 0; } s = (unsigned short)i; break; case FLAG_UNI: { std::vector w; u8_u16(w, f); if (!w.empty()) s = (unsigned short)w[0]; break; } default: s = (unsigned char)f[0]; } if (s == 0) HUNSPELL_WARNING(stderr, "error: 0 is wrong flag id\n"); return s; } std::string HashMgr::encode_flag(unsigned short f) const { if (f == 0) return "(NULL)"; std::string ch; if (flag_mode == FLAG_LONG) { ch.push_back((unsigned char)(f >> 8)); ch.push_back((unsigned char)(f - ((f >> 8) << 8))); } else if (flag_mode == FLAG_NUM) { ch = std::to_string(f); } else if (flag_mode == FLAG_UNI) { #if defined(__i386__) || defined(_M_IX86) || defined(_M_X64) #if __cplusplus >= 202002L auto wc = std::bit_cast(f); #else w_char wc; memcpy(&wc, &f, sizeof(unsigned short)); #endif #else w_char wc; wc.h = (unsigned char)(f >> 8); wc.l = (unsigned char)(f & 0xff); #endif const std::vector w = { wc }; u16_u8(ch, w); } else { ch.push_back((unsigned char)(f)); } return ch; } // read in aff file and set flag mode int HashMgr::load_config(const char* affpath, const char* key) { int firstline = 1; // open the affix file FileMgr* afflst = new FileMgr(affpath, key); if (!afflst) { HUNSPELL_WARNING( stderr, "Error - could not open affix description file %s\n", affpath); return 1; } // read in each line ignoring any that do not // start with a known line type indicator std::string line; while (afflst->getline(line)) { mychomp(line); /* remove byte order mark */ if (firstline) { firstline = 0; if (line.compare(0, 3, "\xEF\xBB\xBF", 3) == 0) { line.erase(0, 3); } } /* parse in the try string */ if ((line.compare(0, 4, "FLAG", 4) == 0) && line.size() > 4 && isspace(line[4])) { if (flag_mode != FLAG_CHAR) { HUNSPELL_WARNING(stderr, "error: line %d: multiple definitions of the FLAG " "affix file parameter\n", afflst->getlinenum()); } if (line.find("long") != std::string::npos) flag_mode = FLAG_LONG; if (line.find("num") != std::string::npos) flag_mode = FLAG_NUM; if (line.find("UTF-8") != std::string::npos) flag_mode = FLAG_UNI; if (flag_mode == FLAG_CHAR) { HUNSPELL_WARNING( stderr, "error: line %d: FLAG needs `num', `long' or `UTF-8' parameter\n", afflst->getlinenum()); } } if (line.compare(0, 13, "FORBIDDENWORD", 13) == 0) { std::string st; if (!parse_string(line, st, afflst->getlinenum())) { delete afflst; return 1; } forbiddenword = decode_flag(st); } if (line.compare(0, 3, "SET", 3) == 0) { if (!parse_string(line, enc, afflst->getlinenum())) { delete afflst; return 1; } if (enc == "UTF-8") { utf8 = 1; } else csconv = get_current_cs(enc); } if (line.compare(0, 4, "LANG", 4) == 0) { if (!parse_string(line, lang, afflst->getlinenum())) { delete afflst; return 1; } langnum = get_lang_num(lang); } /* parse in the ignored characters (for example, Arabic optional diacritics * characters */ if (line.compare(0, 6, "IGNORE", 6) == 0) { if (!parse_array(line, ignorechars, ignorechars_utf16, utf8, afflst->getlinenum())) { delete afflst; return 1; } } if ((line.compare(0, 2, "AF", 2) == 0) && line.size() > 2 && isspace(line[2])) { if (!parse_aliasf(line, afflst)) { delete afflst; return 1; } } if ((line.compare(0, 2, "AM", 2) == 0) && line.size() > 2 && isspace(line[2])) { if (!parse_aliasm(line, afflst)) { delete afflst; return 1; } } if (line.compare(0, 15, "COMPLEXPREFIXES", 15) == 0) complexprefixes = 1; /* parse in the typical fault correcting table */ if (line.compare(0, 3, "REP", 3) == 0) { if (!parse_reptable(line, afflst)) { delete afflst; return 1; } } // don't check the full affix file, yet if (((line.compare(0, 3, "SFX", 3) == 0) || (line.compare(0, 3, "PFX", 3) == 0)) && line.size() > 3 && isspace(line[3]) && !reptable.empty()) // (REP table is in the end of Afrikaans aff file) break; } delete afflst; return 0; } /* parse in the ALIAS table */ bool HashMgr::parse_aliasf(const std::string& line, FileMgr* af) { if (!aliasf.empty()) { HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum()); return false; } int i = 0, np = 0, numaliasf = 0; auto iter = line.begin(), start_piece = mystrsep(line, iter); while (start_piece != line.end()) { switch (i) { case 0: { np++; break; } case 1: { numaliasf = atoi(std::string(start_piece, iter).c_str()); if (numaliasf < 1) { aliasf.clear(); aliasflen.clear(); HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n", af->getlinenum()); return false; } aliasf.reserve(std::min(numaliasf, 16384)); aliasflen.reserve(std::min(numaliasf, 16384)); np++; break; } default: break; } ++i; start_piece = mystrsep(line, iter); } if (np != 2) { aliasf.clear(); aliasflen.clear(); HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum()); return false; } /* now parse the numaliasf lines to read in the remainder of the table */ for (int j = 0; j < numaliasf; ++j) { std::string nl; unsigned short* alias = NULL; unsigned aliaslen = 0; i = 0; if (af->getline(nl)) { mychomp(nl); iter = nl.begin(); start_piece = mystrsep(nl, iter); bool errored = false; while (!errored && start_piece != nl.end()) { switch (i) { case 0: { if (nl.compare(start_piece - nl.begin(), 2, "AF", 2) != 0) { errored = true; break; } break; } case 1: { std::string piece(start_piece, iter); aliaslen = (unsigned short)decode_flags(&alias, piece, af); std::sort(alias, alias + aliaslen); break; } default: break; } ++i; start_piece = mystrsep(nl, iter); } } if (!alias) { for (int k = 0; k < j; ++k) { delete[] aliasf[k]; } aliasf.clear(); aliasflen.clear(); HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); return false; } aliasf.push_back(alias); aliasflen.push_back(aliaslen); } return true; } int HashMgr::is_aliasf() const { return !aliasf.empty(); } int HashMgr::get_aliasf(int index, unsigned short** fvec, FileMgr* af) const { if (index > 0 && static_cast(index) <= aliasflen.size()) { *fvec = aliasf[index - 1]; return aliasflen[index - 1]; } HUNSPELL_WARNING(stderr, "error: line %d: bad flag alias index: %d\n", af->getlinenum(), index); *fvec = NULL; return 0; } /* parse morph alias definitions */ bool HashMgr::parse_aliasm(const std::string& line, FileMgr* af) { if (!aliasm.empty()) { HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum()); return false; } int i = 0, np = 0, numaliasm = 0; auto iter = line.begin(), start_piece = mystrsep(line, iter); while (start_piece != line.end()) { switch (i) { case 0: { np++; break; } case 1: { numaliasm = atoi(std::string(start_piece, iter).c_str()); if (numaliasm < 1) { HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n", af->getlinenum()); return false; } aliasm.reserve(std::min(numaliasm, 16384)); np++; break; } default: break; } ++i; start_piece = mystrsep(line, iter); } if (np != 2) { aliasm.clear(); HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum()); return false; } /* now parse the numaliasm lines to read in the remainder of the table */ for (int j = 0; j < numaliasm; ++j) { std::string nl; char* alias = NULL; if (af->getline(nl)) { mychomp(nl); iter = nl.begin(); i = 0; start_piece = mystrsep(nl, iter); bool errored = false; while (!errored && start_piece != nl.end()) { switch (i) { case 0: { if (nl.compare(start_piece - nl.begin(), 2, "AM", 2) != 0) { errored = true; break; } break; } case 1: { // add the remaining of the line std::string::const_iterator end = nl.end(); std::string chunk(start_piece, end); if (complexprefixes) { if (utf8) reverseword_utf(chunk); else reverseword(chunk); } size_t sl = chunk.size() + 1; alias = new char[sl]; memcpy(alias, chunk.c_str(), sl); break; } default: break; } ++i; start_piece = mystrsep(nl, iter); } } if (!alias) { for (int k = 0; k < j; ++k) { delete[] aliasm[k]; } aliasm.clear(); HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); return false; } aliasm.push_back(alias); } return true; } int HashMgr::is_aliasm() const { return !aliasm.empty(); } char* HashMgr::get_aliasm(int index) const { if (index > 0 && static_cast(index) <= aliasm.size()) return aliasm[index - 1]; HUNSPELL_WARNING(stderr, "error: bad morph. alias index: %d\n", index); return NULL; } /* parse in the typical fault correcting table */ bool HashMgr::parse_reptable(const std::string& line, FileMgr* af) { if (!reptable.empty()) { HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum()); return false; } int numrep = -1, i = 0, np = 0; auto iter = line.begin(), start_piece = mystrsep(line, iter); while (start_piece != line.end()) { switch (i) { case 0: { np++; break; } case 1: { numrep = atoi(std::string(start_piece, iter).c_str()); if (numrep < 1) { HUNSPELL_WARNING(stderr, "error: line %d: incorrect entry number\n", af->getlinenum()); return false; } reptable.reserve(std::min(numrep, 16384)); np++; break; } default: break; } ++i; start_piece = mystrsep(line, iter); } if (np != 2) { HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum()); return false; } /* now parse the numrep lines to read in the remainder of the table */ for (int j = 0; j < numrep; ++j) { std::string nl; reptable.emplace_back(); int type = 0; if (af->getline(nl)) { mychomp(nl); iter = nl.begin(); i = 0; start_piece = mystrsep(nl, iter); bool errored = false; while (!errored && start_piece != nl.end()) { switch (i) { case 0: { if (nl.compare(start_piece - nl.begin(), 3, "REP", 3) != 0) { errored = true; break; } break; } case 1: { if (*start_piece == '^') type = 1; reptable.back().pattern.assign(start_piece + type, iter); mystrrep(reptable.back().pattern, "_", " "); if (!reptable.back().pattern.empty() && reptable.back().pattern[reptable.back().pattern.size() - 1] == '$') { type += 2; reptable.back().pattern.resize(reptable.back().pattern.size() - 1); } break; } case 2: { reptable.back().outstrings[type].assign(start_piece, iter); mystrrep(reptable.back().outstrings[type], "_", " "); break; } default: break; } ++i; start_piece = mystrsep(nl, iter); } } if (reptable.back().pattern.empty() || reptable.back().outstrings[type].empty()) { HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); reptable.clear(); return false; } } return true; } // return replacing table const std::vector& HashMgr::get_reptable() const { return reptable; } hunspell-1.7.2/src/hunspell/langnum.hxx0000664000175000017500000000505614352145647015132 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #ifndef LANGNUM_HXX_ #define LANGNUM_HXX_ /* language numbers for language specific codes see https://wiki.openoffice.org/w/index.php?title=Languages&oldid=230199 */ enum { LANG_ar = 96, LANG_az = 100, // custom number LANG_bg = 41, LANG_ca = 37, LANG_crh = 102, // custom number LANG_cs = 42, LANG_da = 45, LANG_de = 49, LANG_el = 30, LANG_en = 01, LANG_es = 34, LANG_eu = 10, LANG_fr = 02, LANG_gl = 38, LANG_hr = 78, LANG_hu = 36, LANG_it = 39, LANG_la = 99, // custom number LANG_lv = 101, // custom number LANG_nl = 31, LANG_pl = 48, LANG_pt = 03, LANG_ru = 07, LANG_sv = 50, LANG_tr = 90, LANG_uk = 80, LANG_xx = 999 }; #endif hunspell-1.7.2/src/hunspell/replist.cxx0000664000175000017500000001502314352160534015131 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /* * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada * And Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. All modifications to the source code must be clearly marked as * such. Binary redistributions based on modified source code * must be clearly marked as modified versions in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include #include #include #include #include "replist.hxx" #include "csutil.hxx" RepList::RepList(int n) { dat.reserve(std::min(n, 16384)); } RepList::~RepList() { for (auto& i : dat) { delete i; } } int RepList::find(const char* word) { int p1 = 0; int p2 = dat.size() - 1; int ret = -1; while (p1 <= p2) { int m = ((unsigned)p1 + (unsigned)p2) >> 1; int c = strncmp(word, dat[m]->pattern.c_str(), dat[m]->pattern.size()); if (c < 0) p2 = m - 1; else if (c > 0) p1 = m + 1; else { // scan in the right half for a longer match ret = m; p1 = m + 1; } } return ret; } std::string RepList::replace(const size_t wordlen, int ind, bool atstart) { int type = atstart ? 1 : 0; if (wordlen == dat[ind]->pattern.size()) type = atstart ? 3 : 2; while (type && dat[ind]->outstrings[type].empty()) type = (type == 2 && !atstart) ? 0 : type - 1; return dat[ind]->outstrings[type]; } int RepList::add(const std::string& in_pat1, const std::string& pat2) { if (in_pat1.empty() || pat2.empty()) { return 1; } // analyse word context int type = 0; std::string pat1(in_pat1); if (pat1[0] == '_') { pat1.erase(0, 1); type = 1; } if (!pat1.empty() && pat1[pat1.size() - 1] == '_') { type = type + 2; pat1.erase(pat1.size() - 1); } mystrrep(pat1, "_", " "); // find existing entry int m = find(pat1.c_str()); if (m >= 0 && dat[m]->pattern == pat1) { // since already used dat[m]->outstrings[type] = pat2; mystrrep(dat[m]->outstrings[type], "_", " "); return 0; } // make a new entry if none exists replentry* r = new replentry; if (r == NULL) return 1; r->pattern = pat1; r->outstrings[type] = pat2; mystrrep(r->outstrings[type], "_", " "); dat.push_back(r); // sort to the right place in the list size_t i; for (i = dat.size() - 1; i > 0; --i) { if (strcmp(r->pattern.c_str(), dat[i - 1]->pattern.c_str()) < 0) { dat[i] = dat[i - 1]; } else break; } dat[i] = r; return 0; } bool RepList::conv(const std::string& in_word, std::string& dest) { dest.clear(); const size_t wordlen = in_word.size(); const char* word = in_word.c_str(); bool change = false; for (size_t i = 0; i < wordlen; ++i) { int n = find(word + i); bool empty = n < 0; if (empty) { dest.push_back(word[i]); continue; } std::string l = replace(wordlen - i, n, i == 0); if (l.empty()) { dest.push_back(word[i]); continue; } dest.append(l); if (!dat[n]->pattern.empty()) { i += dat[n]->pattern.size() - 1; } change = true; } return change; } bool RepList::check_against_breaktable(const std::vector& breaktable) const { for (const auto i : dat) { for (auto& outstring : i->outstrings) { for (const auto& str : breaktable) { if (outstring.find(str) != std::string::npos) { return false; } } } } return true; } hunspell-1.7.2/src/hunspell/utf_info.hxx0000664000175000017500001173560714352160534015310 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ // Unicode character encoding information struct unicode_info { bool cletter; unsigned short cupper; unsigned short clower; }; /* fields: Unicode isletter, toupper, tolower */ static const struct unicode_info utf_tbl[] = { /* 0x0000 */ { false, 0x0000, 0x0000 }, /* 0x0001 */ { false, 0x0001, 0x0001 }, /* 0x0002 */ { false, 0x0002, 0x0002 }, /* 0x0003 */ { false, 0x0003, 0x0003 }, /* 0x0004 */ { false, 0x0004, 0x0004 }, /* 0x0005 */ { false, 0x0005, 0x0005 }, /* 0x0006 */ { false, 0x0006, 0x0006 }, /* 0x0007 */ { false, 0x0007, 0x0007 }, /* 0x0008 */ { false, 0x0008, 0x0008 }, /* 0x0009 */ { false, 0x0009, 0x0009 }, /* 0x000a */ { false, 0x000a, 0x000a }, /* 0x000b */ { false, 0x000b, 0x000b }, /* 0x000c */ { false, 0x000c, 0x000c }, /* 0x000d */ { false, 0x000d, 0x000d }, /* 0x000e */ { false, 0x000e, 0x000e }, /* 0x000f */ { false, 0x000f, 0x000f }, /* 0x0010 */ { false, 0x0010, 0x0010 }, /* 0x0011 */ { false, 0x0011, 0x0011 }, /* 0x0012 */ { false, 0x0012, 0x0012 }, /* 0x0013 */ { false, 0x0013, 0x0013 }, /* 0x0014 */ { false, 0x0014, 0x0014 }, /* 0x0015 */ { false, 0x0015, 0x0015 }, /* 0x0016 */ { false, 0x0016, 0x0016 }, /* 0x0017 */ { false, 0x0017, 0x0017 }, /* 0x0018 */ { false, 0x0018, 0x0018 }, /* 0x0019 */ { false, 0x0019, 0x0019 }, /* 0x001a */ { false, 0x001a, 0x001a }, /* 0x001b */ { false, 0x001b, 0x001b }, /* 0x001c */ { false, 0x001c, 0x001c }, /* 0x001d */ { false, 0x001d, 0x001d }, /* 0x001e */ { false, 0x001e, 0x001e }, /* 0x001f */ { false, 0x001f, 0x001f }, /* 0x0020 */ { false, 0x0020, 0x0020 }, /* 0x0021 */ { false, 0x0021, 0x0021 }, /* 0x0022 */ { false, 0x0022, 0x0022 }, /* 0x0023 */ { false, 0x0023, 0x0023 }, /* 0x0024 */ { false, 0x0024, 0x0024 }, /* 0x0025 */ { false, 0x0025, 0x0025 }, /* 0x0026 */ { false, 0x0026, 0x0026 }, /* 0x0027 */ { false, 0x0027, 0x0027 }, /* 0x0028 */ { false, 0x0028, 0x0028 }, /* 0x0029 */ { false, 0x0029, 0x0029 }, /* 0x002a */ { false, 0x002a, 0x002a }, /* 0x002b */ { false, 0x002b, 0x002b }, /* 0x002c */ { false, 0x002c, 0x002c }, /* 0x002d */ { false, 0x002d, 0x002d }, /* 0x002e */ { false, 0x002e, 0x002e }, /* 0x002f */ { false, 0x002f, 0x002f }, /* 0x0030 */ { false, 0x0030, 0x0030 }, /* 0x0031 */ { false, 0x0031, 0x0031 }, /* 0x0032 */ { false, 0x0032, 0x0032 }, /* 0x0033 */ { false, 0x0033, 0x0033 }, /* 0x0034 */ { false, 0x0034, 0x0034 }, /* 0x0035 */ { false, 0x0035, 0x0035 }, /* 0x0036 */ { false, 0x0036, 0x0036 }, /* 0x0037 */ { false, 0x0037, 0x0037 }, /* 0x0038 */ { false, 0x0038, 0x0038 }, /* 0x0039 */ { false, 0x0039, 0x0039 }, /* 0x003a */ { false, 0x003a, 0x003a }, /* 0x003b */ { false, 0x003b, 0x003b }, /* 0x003c */ { false, 0x003c, 0x003c }, /* 0x003d */ { false, 0x003d, 0x003d }, /* 0x003e */ { false, 0x003e, 0x003e }, /* 0x003f */ { false, 0x003f, 0x003f }, /* 0x0040 */ { false, 0x0040, 0x0040 }, /* 0x0041 */ { true, 0x0041, 0x0061 }, /* 0x0042 */ { true, 0x0042, 0x0062 }, /* 0x0043 */ { true, 0x0043, 0x0063 }, /* 0x0044 */ { true, 0x0044, 0x0064 }, /* 0x0045 */ { true, 0x0045, 0x0065 }, /* 0x0046 */ { true, 0x0046, 0x0066 }, /* 0x0047 */ { true, 0x0047, 0x0067 }, /* 0x0048 */ { true, 0x0048, 0x0068 }, /* 0x0049 */ { true, 0x0049, 0x0069 }, /* 0x004a */ { true, 0x004a, 0x006a }, /* 0x004b */ { true, 0x004b, 0x006b }, /* 0x004c */ { true, 0x004c, 0x006c }, /* 0x004d */ { true, 0x004d, 0x006d }, /* 0x004e */ { true, 0x004e, 0x006e }, /* 0x004f */ { true, 0x004f, 0x006f }, /* 0x0050 */ { true, 0x0050, 0x0070 }, /* 0x0051 */ { true, 0x0051, 0x0071 }, /* 0x0052 */ { true, 0x0052, 0x0072 }, /* 0x0053 */ { true, 0x0053, 0x0073 }, /* 0x0054 */ { true, 0x0054, 0x0074 }, /* 0x0055 */ { true, 0x0055, 0x0075 }, /* 0x0056 */ { true, 0x0056, 0x0076 }, /* 0x0057 */ { true, 0x0057, 0x0077 }, /* 0x0058 */ { true, 0x0058, 0x0078 }, /* 0x0059 */ { true, 0x0059, 0x0079 }, /* 0x005a */ { true, 0x005a, 0x007a }, /* 0x005b */ { false, 0x005b, 0x005b }, /* 0x005c */ { false, 0x005c, 0x005c }, /* 0x005d */ { false, 0x005d, 0x005d }, /* 0x005e */ { false, 0x005e, 0x005e }, /* 0x005f */ { false, 0x005f, 0x005f }, /* 0x0060 */ { false, 0x0060, 0x0060 }, /* 0x0061 */ { true, 0x0041, 0x0061 }, /* 0x0062 */ { true, 0x0042, 0x0062 }, /* 0x0063 */ { true, 0x0043, 0x0063 }, /* 0x0064 */ { true, 0x0044, 0x0064 }, /* 0x0065 */ { true, 0x0045, 0x0065 }, /* 0x0066 */ { true, 0x0046, 0x0066 }, /* 0x0067 */ { true, 0x0047, 0x0067 }, /* 0x0068 */ { true, 0x0048, 0x0068 }, /* 0x0069 */ { true, 0x0049, 0x0069 }, /* 0x006a */ { true, 0x004a, 0x006a }, /* 0x006b */ { true, 0x004b, 0x006b }, /* 0x006c */ { true, 0x004c, 0x006c }, /* 0x006d */ { true, 0x004d, 0x006d }, /* 0x006e */ { true, 0x004e, 0x006e }, /* 0x006f */ { true, 0x004f, 0x006f }, /* 0x0070 */ { true, 0x0050, 0x0070 }, /* 0x0071 */ { true, 0x0051, 0x0071 }, /* 0x0072 */ { true, 0x0052, 0x0072 }, /* 0x0073 */ { true, 0x0053, 0x0073 }, /* 0x0074 */ { true, 0x0054, 0x0074 }, /* 0x0075 */ { true, 0x0055, 0x0075 }, /* 0x0076 */ { true, 0x0056, 0x0076 }, /* 0x0077 */ { true, 0x0057, 0x0077 }, /* 0x0078 */ { true, 0x0058, 0x0078 }, /* 0x0079 */ { true, 0x0059, 0x0079 }, /* 0x007a */ { true, 0x005a, 0x007a }, /* 0x007b */ { false, 0x007b, 0x007b }, /* 0x007c */ { false, 0x007c, 0x007c }, /* 0x007d */ { false, 0x007d, 0x007d }, /* 0x007e */ { false, 0x007e, 0x007e }, /* 0x007f */ { false, 0x007f, 0x007f }, /* 0x0080 */ { false, 0x0080, 0x0080 }, /* 0x0081 */ { false, 0x0081, 0x0081 }, /* 0x0082 */ { false, 0x0082, 0x0082 }, /* 0x0083 */ { false, 0x0083, 0x0083 }, /* 0x0084 */ { false, 0x0084, 0x0084 }, /* 0x0085 */ { false, 0x0085, 0x0085 }, /* 0x0086 */ { false, 0x0086, 0x0086 }, /* 0x0087 */ { false, 0x0087, 0x0087 }, /* 0x0088 */ { false, 0x0088, 0x0088 }, /* 0x0089 */ { false, 0x0089, 0x0089 }, /* 0x008a */ { false, 0x008a, 0x008a }, /* 0x008b */ { false, 0x008b, 0x008b }, /* 0x008c */ { false, 0x008c, 0x008c }, /* 0x008d */ { false, 0x008d, 0x008d }, /* 0x008e */ { false, 0x008e, 0x008e }, /* 0x008f */ { false, 0x008f, 0x008f }, /* 0x0090 */ { false, 0x0090, 0x0090 }, /* 0x0091 */ { false, 0x0091, 0x0091 }, /* 0x0092 */ { false, 0x0092, 0x0092 }, /* 0x0093 */ { false, 0x0093, 0x0093 }, /* 0x0094 */ { false, 0x0094, 0x0094 }, /* 0x0095 */ { false, 0x0095, 0x0095 }, /* 0x0096 */ { false, 0x0096, 0x0096 }, /* 0x0097 */ { false, 0x0097, 0x0097 }, /* 0x0098 */ { false, 0x0098, 0x0098 }, /* 0x0099 */ { false, 0x0099, 0x0099 }, /* 0x009a */ { false, 0x009a, 0x009a }, /* 0x009b */ { false, 0x009b, 0x009b }, /* 0x009c */ { false, 0x009c, 0x009c }, /* 0x009d */ { false, 0x009d, 0x009d }, /* 0x009e */ { false, 0x009e, 0x009e }, /* 0x009f */ { false, 0x009f, 0x009f }, /* 0x00a0 */ { false, 0x00a0, 0x00a0 }, /* 0x00a1 */ { false, 0x00a1, 0x00a1 }, /* 0x00a2 */ { false, 0x00a2, 0x00a2 }, /* 0x00a3 */ { false, 0x00a3, 0x00a3 }, /* 0x00a4 */ { false, 0x00a4, 0x00a4 }, /* 0x00a5 */ { false, 0x00a5, 0x00a5 }, /* 0x00a6 */ { false, 0x00a6, 0x00a6 }, /* 0x00a7 */ { false, 0x00a7, 0x00a7 }, /* 0x00a8 */ { false, 0x00a8, 0x00a8 }, /* 0x00a9 */ { false, 0x00a9, 0x00a9 }, /* 0x00aa */ { true, 0x00aa, 0x00aa }, /* 0x00ab */ { false, 0x00ab, 0x00ab }, /* 0x00ac */ { false, 0x00ac, 0x00ac }, /* 0x00ad */ { false, 0x00ad, 0x00ad }, /* 0x00ae */ { false, 0x00ae, 0x00ae }, /* 0x00af */ { false, 0x00af, 0x00af }, /* 0x00b0 */ { false, 0x00b0, 0x00b0 }, /* 0x00b1 */ { false, 0x00b1, 0x00b1 }, /* 0x00b2 */ { false, 0x00b2, 0x00b2 }, /* 0x00b3 */ { false, 0x00b3, 0x00b3 }, /* 0x00b4 */ { false, 0x00b4, 0x00b4 }, /* 0x00b5 */ { true, 0x039c, 0x00b5 }, /* 0x00b6 */ { false, 0x00b6, 0x00b6 }, /* 0x00b7 */ { false, 0x00b7, 0x00b7 }, /* 0x00b8 */ { false, 0x00b8, 0x00b8 }, /* 0x00b9 */ { false, 0x00b9, 0x00b9 }, /* 0x00ba */ { true, 0x00ba, 0x00ba }, /* 0x00bb */ { false, 0x00bb, 0x00bb }, /* 0x00bc */ { false, 0x00bc, 0x00bc }, /* 0x00bd */ { false, 0x00bd, 0x00bd }, /* 0x00be */ { false, 0x00be, 0x00be }, /* 0x00bf */ { false, 0x00bf, 0x00bf }, /* 0x00c0 */ { true, 0x00c0, 0x00e0 }, /* 0x00c1 */ { true, 0x00c1, 0x00e1 }, /* 0x00c2 */ { true, 0x00c2, 0x00e2 }, /* 0x00c3 */ { true, 0x00c3, 0x00e3 }, /* 0x00c4 */ { true, 0x00c4, 0x00e4 }, /* 0x00c5 */ { true, 0x00c5, 0x00e5 }, /* 0x00c6 */ { true, 0x00c6, 0x00e6 }, /* 0x00c7 */ { true, 0x00c7, 0x00e7 }, /* 0x00c8 */ { true, 0x00c8, 0x00e8 }, /* 0x00c9 */ { true, 0x00c9, 0x00e9 }, /* 0x00ca */ { true, 0x00ca, 0x00ea }, /* 0x00cb */ { true, 0x00cb, 0x00eb }, /* 0x00cc */ { true, 0x00cc, 0x00ec }, /* 0x00cd */ { true, 0x00cd, 0x00ed }, /* 0x00ce */ { true, 0x00ce, 0x00ee }, /* 0x00cf */ { true, 0x00cf, 0x00ef }, /* 0x00d0 */ { true, 0x00d0, 0x00f0 }, /* 0x00d1 */ { true, 0x00d1, 0x00f1 }, /* 0x00d2 */ { true, 0x00d2, 0x00f2 }, /* 0x00d3 */ { true, 0x00d3, 0x00f3 }, /* 0x00d4 */ { true, 0x00d4, 0x00f4 }, /* 0x00d5 */ { true, 0x00d5, 0x00f5 }, /* 0x00d6 */ { true, 0x00d6, 0x00f6 }, /* 0x00d7 */ { false, 0x00d7, 0x00d7 }, /* 0x00d8 */ { true, 0x00d8, 0x00f8 }, /* 0x00d9 */ { true, 0x00d9, 0x00f9 }, /* 0x00da */ { true, 0x00da, 0x00fa }, /* 0x00db */ { true, 0x00db, 0x00fb }, /* 0x00dc */ { true, 0x00dc, 0x00fc }, /* 0x00dd */ { true, 0x00dd, 0x00fd }, /* 0x00de */ { true, 0x00de, 0x00fe }, /* 0x00df */ { true, 0x00df, 0x00df }, /* 0x00e0 */ { true, 0x00c0, 0x00e0 }, /* 0x00e1 */ { true, 0x00c1, 0x00e1 }, /* 0x00e2 */ { true, 0x00c2, 0x00e2 }, /* 0x00e3 */ { true, 0x00c3, 0x00e3 }, /* 0x00e4 */ { true, 0x00c4, 0x00e4 }, /* 0x00e5 */ { true, 0x00c5, 0x00e5 }, /* 0x00e6 */ { true, 0x00c6, 0x00e6 }, /* 0x00e7 */ { true, 0x00c7, 0x00e7 }, /* 0x00e8 */ { true, 0x00c8, 0x00e8 }, /* 0x00e9 */ { true, 0x00c9, 0x00e9 }, /* 0x00ea */ { true, 0x00ca, 0x00ea }, /* 0x00eb */ { true, 0x00cb, 0x00eb }, /* 0x00ec */ { true, 0x00cc, 0x00ec }, /* 0x00ed */ { true, 0x00cd, 0x00ed }, /* 0x00ee */ { true, 0x00ce, 0x00ee }, /* 0x00ef */ { true, 0x00cf, 0x00ef }, /* 0x00f0 */ { true, 0x00d0, 0x00f0 }, /* 0x00f1 */ { true, 0x00d1, 0x00f1 }, /* 0x00f2 */ { true, 0x00d2, 0x00f2 }, /* 0x00f3 */ { true, 0x00d3, 0x00f3 }, /* 0x00f4 */ { true, 0x00d4, 0x00f4 }, /* 0x00f5 */ { true, 0x00d5, 0x00f5 }, /* 0x00f6 */ { true, 0x00d6, 0x00f6 }, /* 0x00f7 */ { false, 0x00f7, 0x00f7 }, /* 0x00f8 */ { true, 0x00d8, 0x00f8 }, /* 0x00f9 */ { true, 0x00d9, 0x00f9 }, /* 0x00fa */ { true, 0x00da, 0x00fa }, /* 0x00fb */ { true, 0x00db, 0x00fb }, /* 0x00fc */ { true, 0x00dc, 0x00fc }, /* 0x00fd */ { true, 0x00dd, 0x00fd }, /* 0x00fe */ { true, 0x00de, 0x00fe }, /* 0x00ff */ { true, 0x0178, 0x00ff }, /* 0x0100 */ { true, 0x0100, 0x0101 }, /* 0x0101 */ { true, 0x0100, 0x0101 }, /* 0x0102 */ { true, 0x0102, 0x0103 }, /* 0x0103 */ { true, 0x0102, 0x0103 }, /* 0x0104 */ { true, 0x0104, 0x0105 }, /* 0x0105 */ { true, 0x0104, 0x0105 }, /* 0x0106 */ { true, 0x0106, 0x0107 }, /* 0x0107 */ { true, 0x0106, 0x0107 }, /* 0x0108 */ { true, 0x0108, 0x0109 }, /* 0x0109 */ { true, 0x0108, 0x0109 }, /* 0x010a */ { true, 0x010a, 0x010b }, /* 0x010b */ { true, 0x010a, 0x010b }, /* 0x010c */ { true, 0x010c, 0x010d }, /* 0x010d */ { true, 0x010c, 0x010d }, /* 0x010e */ { true, 0x010e, 0x010f }, /* 0x010f */ { true, 0x010e, 0x010f }, /* 0x0110 */ { true, 0x0110, 0x0111 }, /* 0x0111 */ { true, 0x0110, 0x0111 }, /* 0x0112 */ { true, 0x0112, 0x0113 }, /* 0x0113 */ { true, 0x0112, 0x0113 }, /* 0x0114 */ { true, 0x0114, 0x0115 }, /* 0x0115 */ { true, 0x0114, 0x0115 }, /* 0x0116 */ { true, 0x0116, 0x0117 }, /* 0x0117 */ { true, 0x0116, 0x0117 }, /* 0x0118 */ { true, 0x0118, 0x0119 }, /* 0x0119 */ { true, 0x0118, 0x0119 }, /* 0x011a */ { true, 0x011a, 0x011b }, /* 0x011b */ { true, 0x011a, 0x011b }, /* 0x011c */ { true, 0x011c, 0x011d }, /* 0x011d */ { true, 0x011c, 0x011d }, /* 0x011e */ { true, 0x011e, 0x011f }, /* 0x011f */ { true, 0x011e, 0x011f }, /* 0x0120 */ { true, 0x0120, 0x0121 }, /* 0x0121 */ { true, 0x0120, 0x0121 }, /* 0x0122 */ { true, 0x0122, 0x0123 }, /* 0x0123 */ { true, 0x0122, 0x0123 }, /* 0x0124 */ { true, 0x0124, 0x0125 }, /* 0x0125 */ { true, 0x0124, 0x0125 }, /* 0x0126 */ { true, 0x0126, 0x0127 }, /* 0x0127 */ { true, 0x0126, 0x0127 }, /* 0x0128 */ { true, 0x0128, 0x0129 }, /* 0x0129 */ { true, 0x0128, 0x0129 }, /* 0x012a */ { true, 0x012a, 0x012b }, /* 0x012b */ { true, 0x012a, 0x012b }, /* 0x012c */ { true, 0x012c, 0x012d }, /* 0x012d */ { true, 0x012c, 0x012d }, /* 0x012e */ { true, 0x012e, 0x012f }, /* 0x012f */ { true, 0x012e, 0x012f }, /* 0x0130 */ { true, 0x0130, 0x0069 }, /* 0x0131 */ { true, 0x0049, 0x0131 }, /* 0x0132 */ { true, 0x0132, 0x0133 }, /* 0x0133 */ { true, 0x0132, 0x0133 }, /* 0x0134 */ { true, 0x0134, 0x0135 }, /* 0x0135 */ { true, 0x0134, 0x0135 }, /* 0x0136 */ { true, 0x0136, 0x0137 }, /* 0x0137 */ { true, 0x0136, 0x0137 }, /* 0x0138 */ { true, 0x0138, 0x0138 }, /* 0x0139 */ { true, 0x0139, 0x013a }, /* 0x013a */ { true, 0x0139, 0x013a }, /* 0x013b */ { true, 0x013b, 0x013c }, /* 0x013c */ { true, 0x013b, 0x013c }, /* 0x013d */ { true, 0x013d, 0x013e }, /* 0x013e */ { true, 0x013d, 0x013e }, /* 0x013f */ { true, 0x013f, 0x0140 }, /* 0x0140 */ { true, 0x013f, 0x0140 }, /* 0x0141 */ { true, 0x0141, 0x0142 }, /* 0x0142 */ { true, 0x0141, 0x0142 }, /* 0x0143 */ { true, 0x0143, 0x0144 }, /* 0x0144 */ { true, 0x0143, 0x0144 }, /* 0x0145 */ { true, 0x0145, 0x0146 }, /* 0x0146 */ { true, 0x0145, 0x0146 }, /* 0x0147 */ { true, 0x0147, 0x0148 }, /* 0x0148 */ { true, 0x0147, 0x0148 }, /* 0x0149 */ { true, 0x0149, 0x0149 }, /* 0x014a */ { true, 0x014a, 0x014b }, /* 0x014b */ { true, 0x014a, 0x014b }, /* 0x014c */ { true, 0x014c, 0x014d }, /* 0x014d */ { true, 0x014c, 0x014d }, /* 0x014e */ { true, 0x014e, 0x014f }, /* 0x014f */ { true, 0x014e, 0x014f }, /* 0x0150 */ { true, 0x0150, 0x0151 }, /* 0x0151 */ { true, 0x0150, 0x0151 }, /* 0x0152 */ { true, 0x0152, 0x0153 }, /* 0x0153 */ { true, 0x0152, 0x0153 }, /* 0x0154 */ { true, 0x0154, 0x0155 }, /* 0x0155 */ { true, 0x0154, 0x0155 }, /* 0x0156 */ { true, 0x0156, 0x0157 }, /* 0x0157 */ { true, 0x0156, 0x0157 }, /* 0x0158 */ { true, 0x0158, 0x0159 }, /* 0x0159 */ { true, 0x0158, 0x0159 }, /* 0x015a */ { true, 0x015a, 0x015b }, /* 0x015b */ { true, 0x015a, 0x015b }, /* 0x015c */ { true, 0x015c, 0x015d }, /* 0x015d */ { true, 0x015c, 0x015d }, /* 0x015e */ { true, 0x015e, 0x015f }, /* 0x015f */ { true, 0x015e, 0x015f }, /* 0x0160 */ { true, 0x0160, 0x0161 }, /* 0x0161 */ { true, 0x0160, 0x0161 }, /* 0x0162 */ { true, 0x0162, 0x0163 }, /* 0x0163 */ { true, 0x0162, 0x0163 }, /* 0x0164 */ { true, 0x0164, 0x0165 }, /* 0x0165 */ { true, 0x0164, 0x0165 }, /* 0x0166 */ { true, 0x0166, 0x0167 }, /* 0x0167 */ { true, 0x0166, 0x0167 }, /* 0x0168 */ { true, 0x0168, 0x0169 }, /* 0x0169 */ { true, 0x0168, 0x0169 }, /* 0x016a */ { true, 0x016a, 0x016b }, /* 0x016b */ { true, 0x016a, 0x016b }, /* 0x016c */ { true, 0x016c, 0x016d }, /* 0x016d */ { true, 0x016c, 0x016d }, /* 0x016e */ { true, 0x016e, 0x016f }, /* 0x016f */ { true, 0x016e, 0x016f }, /* 0x0170 */ { true, 0x0170, 0x0171 }, /* 0x0171 */ { true, 0x0170, 0x0171 }, /* 0x0172 */ { true, 0x0172, 0x0173 }, /* 0x0173 */ { true, 0x0172, 0x0173 }, /* 0x0174 */ { true, 0x0174, 0x0175 }, /* 0x0175 */ { true, 0x0174, 0x0175 }, /* 0x0176 */ { true, 0x0176, 0x0177 }, /* 0x0177 */ { true, 0x0176, 0x0177 }, /* 0x0178 */ { true, 0x0178, 0x00ff }, /* 0x0179 */ { true, 0x0179, 0x017a }, /* 0x017a */ { true, 0x0179, 0x017a }, /* 0x017b */ { true, 0x017b, 0x017c }, /* 0x017c */ { true, 0x017b, 0x017c }, /* 0x017d */ { true, 0x017d, 0x017e }, /* 0x017e */ { true, 0x017d, 0x017e }, /* 0x017f */ { true, 0x0053, 0x017f }, /* 0x0180 */ { true, 0x0180, 0x0180 }, /* 0x0181 */ { true, 0x0181, 0x0253 }, /* 0x0182 */ { true, 0x0182, 0x0183 }, /* 0x0183 */ { true, 0x0182, 0x0183 }, /* 0x0184 */ { true, 0x0184, 0x0185 }, /* 0x0185 */ { true, 0x0184, 0x0185 }, /* 0x0186 */ { true, 0x0186, 0x0254 }, /* 0x0187 */ { true, 0x0187, 0x0188 }, /* 0x0188 */ { true, 0x0187, 0x0188 }, /* 0x0189 */ { true, 0x0189, 0x0256 }, /* 0x018a */ { true, 0x018a, 0x0257 }, /* 0x018b */ { true, 0x018b, 0x018c }, /* 0x018c */ { true, 0x018b, 0x018c }, /* 0x018d */ { true, 0x018d, 0x018d }, /* 0x018e */ { true, 0x018e, 0x01dd }, /* 0x018f */ { true, 0x018f, 0x0259 }, /* 0x0190 */ { true, 0x0190, 0x025b }, /* 0x0191 */ { true, 0x0191, 0x0192 }, /* 0x0192 */ { true, 0x0191, 0x0192 }, /* 0x0193 */ { true, 0x0193, 0x0260 }, /* 0x0194 */ { true, 0x0194, 0x0263 }, /* 0x0195 */ { true, 0x01f6, 0x0195 }, /* 0x0196 */ { true, 0x0196, 0x0269 }, /* 0x0197 */ { true, 0x0197, 0x0268 }, /* 0x0198 */ { true, 0x0198, 0x0199 }, /* 0x0199 */ { true, 0x0198, 0x0199 }, /* 0x019a */ { true, 0x023d, 0x019a }, /* 0x019b */ { true, 0x019b, 0x019b }, /* 0x019c */ { true, 0x019c, 0x026f }, /* 0x019d */ { true, 0x019d, 0x0272 }, /* 0x019e */ { true, 0x0220, 0x019e }, /* 0x019f */ { true, 0x019f, 0x0275 }, /* 0x01a0 */ { true, 0x01a0, 0x01a1 }, /* 0x01a1 */ { true, 0x01a0, 0x01a1 }, /* 0x01a2 */ { true, 0x01a2, 0x01a3 }, /* 0x01a3 */ { true, 0x01a2, 0x01a3 }, /* 0x01a4 */ { true, 0x01a4, 0x01a5 }, /* 0x01a5 */ { true, 0x01a4, 0x01a5 }, /* 0x01a6 */ { true, 0x01a6, 0x0280 }, /* 0x01a7 */ { true, 0x01a7, 0x01a8 }, /* 0x01a8 */ { true, 0x01a7, 0x01a8 }, /* 0x01a9 */ { true, 0x01a9, 0x0283 }, /* 0x01aa */ { true, 0x01aa, 0x01aa }, /* 0x01ab */ { true, 0x01ab, 0x01ab }, /* 0x01ac */ { true, 0x01ac, 0x01ad }, /* 0x01ad */ { true, 0x01ac, 0x01ad }, /* 0x01ae */ { true, 0x01ae, 0x0288 }, /* 0x01af */ { true, 0x01af, 0x01b0 }, /* 0x01b0 */ { true, 0x01af, 0x01b0 }, /* 0x01b1 */ { true, 0x01b1, 0x028a }, /* 0x01b2 */ { true, 0x01b2, 0x028b }, /* 0x01b3 */ { true, 0x01b3, 0x01b4 }, /* 0x01b4 */ { true, 0x01b3, 0x01b4 }, /* 0x01b5 */ { true, 0x01b5, 0x01b6 }, /* 0x01b6 */ { true, 0x01b5, 0x01b6 }, /* 0x01b7 */ { true, 0x01b7, 0x0292 }, /* 0x01b8 */ { true, 0x01b8, 0x01b9 }, /* 0x01b9 */ { true, 0x01b8, 0x01b9 }, /* 0x01ba */ { true, 0x01ba, 0x01ba }, /* 0x01bb */ { true, 0x01bb, 0x01bb }, /* 0x01bc */ { true, 0x01bc, 0x01bd }, /* 0x01bd */ { true, 0x01bc, 0x01bd }, /* 0x01be */ { true, 0x01be, 0x01be }, /* 0x01bf */ { true, 0x01f7, 0x01bf }, /* 0x01c0 */ { true, 0x01c0, 0x01c0 }, /* 0x01c1 */ { true, 0x01c1, 0x01c1 }, /* 0x01c2 */ { true, 0x01c2, 0x01c2 }, /* 0x01c3 */ { true, 0x01c3, 0x01c3 }, /* 0x01c4 */ { true, 0x01c4, 0x01c6 }, /* 0x01c5 */ { true, 0x01c4, 0x01c6 }, /* 0x01c6 */ { true, 0x01c4, 0x01c6 }, /* 0x01c7 */ { true, 0x01c7, 0x01c9 }, /* 0x01c8 */ { true, 0x01c7, 0x01c9 }, /* 0x01c9 */ { true, 0x01c7, 0x01c9 }, /* 0x01ca */ { true, 0x01ca, 0x01cc }, /* 0x01cb */ { true, 0x01ca, 0x01cc }, /* 0x01cc */ { true, 0x01ca, 0x01cc }, /* 0x01cd */ { true, 0x01cd, 0x01ce }, /* 0x01ce */ { true, 0x01cd, 0x01ce }, /* 0x01cf */ { true, 0x01cf, 0x01d0 }, /* 0x01d0 */ { true, 0x01cf, 0x01d0 }, /* 0x01d1 */ { true, 0x01d1, 0x01d2 }, /* 0x01d2 */ { true, 0x01d1, 0x01d2 }, /* 0x01d3 */ { true, 0x01d3, 0x01d4 }, /* 0x01d4 */ { true, 0x01d3, 0x01d4 }, /* 0x01d5 */ { true, 0x01d5, 0x01d6 }, /* 0x01d6 */ { true, 0x01d5, 0x01d6 }, /* 0x01d7 */ { true, 0x01d7, 0x01d8 }, /* 0x01d8 */ { true, 0x01d7, 0x01d8 }, /* 0x01d9 */ { true, 0x01d9, 0x01da }, /* 0x01da */ { true, 0x01d9, 0x01da }, /* 0x01db */ { true, 0x01db, 0x01dc }, /* 0x01dc */ { true, 0x01db, 0x01dc }, /* 0x01dd */ { true, 0x018e, 0x01dd }, /* 0x01de */ { true, 0x01de, 0x01df }, /* 0x01df */ { true, 0x01de, 0x01df }, /* 0x01e0 */ { true, 0x01e0, 0x01e1 }, /* 0x01e1 */ { true, 0x01e0, 0x01e1 }, /* 0x01e2 */ { true, 0x01e2, 0x01e3 }, /* 0x01e3 */ { true, 0x01e2, 0x01e3 }, /* 0x01e4 */ { true, 0x01e4, 0x01e5 }, /* 0x01e5 */ { true, 0x01e4, 0x01e5 }, /* 0x01e6 */ { true, 0x01e6, 0x01e7 }, /* 0x01e7 */ { true, 0x01e6, 0x01e7 }, /* 0x01e8 */ { true, 0x01e8, 0x01e9 }, /* 0x01e9 */ { true, 0x01e8, 0x01e9 }, /* 0x01ea */ { true, 0x01ea, 0x01eb }, /* 0x01eb */ { true, 0x01ea, 0x01eb }, /* 0x01ec */ { true, 0x01ec, 0x01ed }, /* 0x01ed */ { true, 0x01ec, 0x01ed }, /* 0x01ee */ { true, 0x01ee, 0x01ef }, /* 0x01ef */ { true, 0x01ee, 0x01ef }, /* 0x01f0 */ { true, 0x01f0, 0x01f0 }, /* 0x01f1 */ { true, 0x01f1, 0x01f3 }, /* 0x01f2 */ { true, 0x01f1, 0x01f3 }, /* 0x01f3 */ { true, 0x01f1, 0x01f3 }, /* 0x01f4 */ { true, 0x01f4, 0x01f5 }, /* 0x01f5 */ { true, 0x01f4, 0x01f5 }, /* 0x01f6 */ { true, 0x01f6, 0x0195 }, /* 0x01f7 */ { true, 0x01f7, 0x01bf }, /* 0x01f8 */ { true, 0x01f8, 0x01f9 }, /* 0x01f9 */ { true, 0x01f8, 0x01f9 }, /* 0x01fa */ { true, 0x01fa, 0x01fb }, /* 0x01fb */ { true, 0x01fa, 0x01fb }, /* 0x01fc */ { true, 0x01fc, 0x01fd }, /* 0x01fd */ { true, 0x01fc, 0x01fd }, /* 0x01fe */ { true, 0x01fe, 0x01ff }, /* 0x01ff */ { true, 0x01fe, 0x01ff }, /* 0x0200 */ { true, 0x0200, 0x0201 }, /* 0x0201 */ { true, 0x0200, 0x0201 }, /* 0x0202 */ { true, 0x0202, 0x0203 }, /* 0x0203 */ { true, 0x0202, 0x0203 }, /* 0x0204 */ { true, 0x0204, 0x0205 }, /* 0x0205 */ { true, 0x0204, 0x0205 }, /* 0x0206 */ { true, 0x0206, 0x0207 }, /* 0x0207 */ { true, 0x0206, 0x0207 }, /* 0x0208 */ { true, 0x0208, 0x0209 }, /* 0x0209 */ { true, 0x0208, 0x0209 }, /* 0x020a */ { true, 0x020a, 0x020b }, /* 0x020b */ { true, 0x020a, 0x020b }, /* 0x020c */ { true, 0x020c, 0x020d }, /* 0x020d */ { true, 0x020c, 0x020d }, /* 0x020e */ { true, 0x020e, 0x020f }, /* 0x020f */ { true, 0x020e, 0x020f }, /* 0x0210 */ { true, 0x0210, 0x0211 }, /* 0x0211 */ { true, 0x0210, 0x0211 }, /* 0x0212 */ { true, 0x0212, 0x0213 }, /* 0x0213 */ { true, 0x0212, 0x0213 }, /* 0x0214 */ { true, 0x0214, 0x0215 }, /* 0x0215 */ { true, 0x0214, 0x0215 }, /* 0x0216 */ { true, 0x0216, 0x0217 }, /* 0x0217 */ { true, 0x0216, 0x0217 }, /* 0x0218 */ { true, 0x0218, 0x0219 }, /* 0x0219 */ { true, 0x0218, 0x0219 }, /* 0x021a */ { true, 0x021a, 0x021b }, /* 0x021b */ { true, 0x021a, 0x021b }, /* 0x021c */ { true, 0x021c, 0x021d }, /* 0x021d */ { true, 0x021c, 0x021d }, /* 0x021e */ { true, 0x021e, 0x021f }, /* 0x021f */ { true, 0x021e, 0x021f }, /* 0x0220 */ { true, 0x0220, 0x019e }, /* 0x0221 */ { true, 0x0221, 0x0221 }, /* 0x0222 */ { true, 0x0222, 0x0223 }, /* 0x0223 */ { true, 0x0222, 0x0223 }, /* 0x0224 */ { true, 0x0224, 0x0225 }, /* 0x0225 */ { true, 0x0224, 0x0225 }, /* 0x0226 */ { true, 0x0226, 0x0227 }, /* 0x0227 */ { true, 0x0226, 0x0227 }, /* 0x0228 */ { true, 0x0228, 0x0229 }, /* 0x0229 */ { true, 0x0228, 0x0229 }, /* 0x022a */ { true, 0x022a, 0x022b }, /* 0x022b */ { true, 0x022a, 0x022b }, /* 0x022c */ { true, 0x022c, 0x022d }, /* 0x022d */ { true, 0x022c, 0x022d }, /* 0x022e */ { true, 0x022e, 0x022f }, /* 0x022f */ { true, 0x022e, 0x022f }, /* 0x0230 */ { true, 0x0230, 0x0231 }, /* 0x0231 */ { true, 0x0230, 0x0231 }, /* 0x0232 */ { true, 0x0232, 0x0233 }, /* 0x0233 */ { true, 0x0232, 0x0233 }, /* 0x0234 */ { true, 0x0234, 0x0234 }, /* 0x0235 */ { true, 0x0235, 0x0235 }, /* 0x0236 */ { true, 0x0236, 0x0236 }, /* 0x0237 */ { true, 0x0237, 0x0237 }, /* 0x0238 */ { true, 0x0238, 0x0238 }, /* 0x0239 */ { true, 0x0239, 0x0239 }, /* 0x023a */ { true, 0x023a, 0x023a }, /* 0x023b */ { true, 0x023b, 0x023c }, /* 0x023c */ { true, 0x023b, 0x023c }, /* 0x023d */ { true, 0x023d, 0x019a }, /* 0x023e */ { true, 0x023e, 0x023e }, /* 0x023f */ { true, 0x023f, 0x023f }, /* 0x0240 */ { true, 0x0240, 0x0240 }, /* 0x0241 */ { true, 0x0241, 0x0294 }, /* 0x0242 */ { false, 0x0242, 0x0242 }, /* 0x0243 */ { false, 0x0243, 0x0243 }, /* 0x0244 */ { false, 0x0244, 0x0244 }, /* 0x0245 */ { false, 0x0245, 0x0245 }, /* 0x0246 */ { false, 0x0246, 0x0246 }, /* 0x0247 */ { false, 0x0247, 0x0247 }, /* 0x0248 */ { false, 0x0248, 0x0248 }, /* 0x0249 */ { false, 0x0249, 0x0249 }, /* 0x024a */ { false, 0x024a, 0x024a }, /* 0x024b */ { false, 0x024b, 0x024b }, /* 0x024c */ { false, 0x024c, 0x024c }, /* 0x024d */ { false, 0x024d, 0x024d }, /* 0x024e */ { false, 0x024e, 0x024e }, /* 0x024f */ { false, 0x024f, 0x024f }, /* 0x0250 */ { true, 0x0250, 0x0250 }, /* 0x0251 */ { true, 0x0251, 0x0251 }, /* 0x0252 */ { true, 0x0252, 0x0252 }, /* 0x0253 */ { true, 0x0181, 0x0253 }, /* 0x0254 */ { true, 0x0186, 0x0254 }, /* 0x0255 */ { true, 0x0255, 0x0255 }, /* 0x0256 */ { true, 0x0189, 0x0256 }, /* 0x0257 */ { true, 0x018a, 0x0257 }, /* 0x0258 */ { true, 0x0258, 0x0258 }, /* 0x0259 */ { true, 0x018f, 0x0259 }, /* 0x025a */ { true, 0x025a, 0x025a }, /* 0x025b */ { true, 0x0190, 0x025b }, /* 0x025c */ { true, 0x025c, 0x025c }, /* 0x025d */ { true, 0x025d, 0x025d }, /* 0x025e */ { true, 0x025e, 0x025e }, /* 0x025f */ { true, 0x025f, 0x025f }, /* 0x0260 */ { true, 0x0193, 0x0260 }, /* 0x0261 */ { true, 0x0261, 0x0261 }, /* 0x0262 */ { true, 0x0262, 0x0262 }, /* 0x0263 */ { true, 0x0194, 0x0263 }, /* 0x0264 */ { true, 0x0264, 0x0264 }, /* 0x0265 */ { true, 0x0265, 0x0265 }, /* 0x0266 */ { true, 0x0266, 0x0266 }, /* 0x0267 */ { true, 0x0267, 0x0267 }, /* 0x0268 */ { true, 0x0197, 0x0268 }, /* 0x0269 */ { true, 0x0196, 0x0269 }, /* 0x026a */ { true, 0x026a, 0x026a }, /* 0x026b */ { true, 0x026b, 0x026b }, /* 0x026c */ { true, 0x026c, 0x026c }, /* 0x026d */ { true, 0x026d, 0x026d }, /* 0x026e */ { true, 0x026e, 0x026e }, /* 0x026f */ { true, 0x019c, 0x026f }, /* 0x0270 */ { true, 0x0270, 0x0270 }, /* 0x0271 */ { true, 0x0271, 0x0271 }, /* 0x0272 */ { true, 0x019d, 0x0272 }, /* 0x0273 */ { true, 0x0273, 0x0273 }, /* 0x0274 */ { true, 0x0274, 0x0274 }, /* 0x0275 */ { true, 0x019f, 0x0275 }, /* 0x0276 */ { true, 0x0276, 0x0276 }, /* 0x0277 */ { true, 0x0277, 0x0277 }, /* 0x0278 */ { true, 0x0278, 0x0278 }, /* 0x0279 */ { true, 0x0279, 0x0279 }, /* 0x027a */ { true, 0x027a, 0x027a }, /* 0x027b */ { true, 0x027b, 0x027b }, /* 0x027c */ { true, 0x027c, 0x027c }, /* 0x027d */ { true, 0x027d, 0x027d }, /* 0x027e */ { true, 0x027e, 0x027e }, /* 0x027f */ { true, 0x027f, 0x027f }, /* 0x0280 */ { true, 0x01a6, 0x0280 }, /* 0x0281 */ { true, 0x0281, 0x0281 }, /* 0x0282 */ { true, 0x0282, 0x0282 }, /* 0x0283 */ { true, 0x01a9, 0x0283 }, /* 0x0284 */ { true, 0x0284, 0x0284 }, /* 0x0285 */ { true, 0x0285, 0x0285 }, /* 0x0286 */ { true, 0x0286, 0x0286 }, /* 0x0287 */ { true, 0x0287, 0x0287 }, /* 0x0288 */ { true, 0x01ae, 0x0288 }, /* 0x0289 */ { true, 0x0289, 0x0289 }, /* 0x028a */ { true, 0x01b1, 0x028a }, /* 0x028b */ { true, 0x01b2, 0x028b }, /* 0x028c */ { true, 0x028c, 0x028c }, /* 0x028d */ { true, 0x028d, 0x028d }, /* 0x028e */ { true, 0x028e, 0x028e }, /* 0x028f */ { true, 0x028f, 0x028f }, /* 0x0290 */ { true, 0x0290, 0x0290 }, /* 0x0291 */ { true, 0x0291, 0x0291 }, /* 0x0292 */ { true, 0x01b7, 0x0292 }, /* 0x0293 */ { true, 0x0293, 0x0293 }, /* 0x0294 */ { true, 0x0241, 0x0294 }, /* 0x0295 */ { true, 0x0295, 0x0295 }, /* 0x0296 */ { true, 0x0296, 0x0296 }, /* 0x0297 */ { true, 0x0297, 0x0297 }, /* 0x0298 */ { true, 0x0298, 0x0298 }, /* 0x0299 */ { true, 0x0299, 0x0299 }, /* 0x029a */ { true, 0x029a, 0x029a }, /* 0x029b */ { true, 0x029b, 0x029b }, /* 0x029c */ { true, 0x029c, 0x029c }, /* 0x029d */ { true, 0x029d, 0x029d }, /* 0x029e */ { true, 0x029e, 0x029e }, /* 0x029f */ { true, 0x029f, 0x029f }, /* 0x02a0 */ { true, 0x02a0, 0x02a0 }, /* 0x02a1 */ { true, 0x02a1, 0x02a1 }, /* 0x02a2 */ { true, 0x02a2, 0x02a2 }, /* 0x02a3 */ { true, 0x02a3, 0x02a3 }, /* 0x02a4 */ { true, 0x02a4, 0x02a4 }, /* 0x02a5 */ { true, 0x02a5, 0x02a5 }, /* 0x02a6 */ { true, 0x02a6, 0x02a6 }, /* 0x02a7 */ { true, 0x02a7, 0x02a7 }, /* 0x02a8 */ { true, 0x02a8, 0x02a8 }, /* 0x02a9 */ { true, 0x02a9, 0x02a9 }, /* 0x02aa */ { true, 0x02aa, 0x02aa }, /* 0x02ab */ { true, 0x02ab, 0x02ab }, /* 0x02ac */ { true, 0x02ac, 0x02ac }, /* 0x02ad */ { true, 0x02ad, 0x02ad }, /* 0x02ae */ { true, 0x02ae, 0x02ae }, /* 0x02af */ { true, 0x02af, 0x02af }, /* 0x02b0 */ { true, 0x02b0, 0x02b0 }, /* 0x02b1 */ { true, 0x02b1, 0x02b1 }, /* 0x02b2 */ { true, 0x02b2, 0x02b2 }, /* 0x02b3 */ { true, 0x02b3, 0x02b3 }, /* 0x02b4 */ { true, 0x02b4, 0x02b4 }, /* 0x02b5 */ { true, 0x02b5, 0x02b5 }, /* 0x02b6 */ { true, 0x02b6, 0x02b6 }, /* 0x02b7 */ { true, 0x02b7, 0x02b7 }, /* 0x02b8 */ { true, 0x02b8, 0x02b8 }, /* 0x02b9 */ { true, 0x02b9, 0x02b9 }, /* 0x02ba */ { true, 0x02ba, 0x02ba }, /* 0x02bb */ { true, 0x02bb, 0x02bb }, /* 0x02bc */ { true, 0x02bc, 0x02bc }, /* 0x02bd */ { true, 0x02bd, 0x02bd }, /* 0x02be */ { true, 0x02be, 0x02be }, /* 0x02bf */ { true, 0x02bf, 0x02bf }, /* 0x02c0 */ { true, 0x02c0, 0x02c0 }, /* 0x02c1 */ { true, 0x02c1, 0x02c1 }, /* 0x02c2 */ { false, 0x02c2, 0x02c2 }, /* 0x02c3 */ { false, 0x02c3, 0x02c3 }, /* 0x02c4 */ { false, 0x02c4, 0x02c4 }, /* 0x02c5 */ { false, 0x02c5, 0x02c5 }, /* 0x02c6 */ { true, 0x02c6, 0x02c6 }, /* 0x02c7 */ { true, 0x02c7, 0x02c7 }, /* 0x02c8 */ { true, 0x02c8, 0x02c8 }, /* 0x02c9 */ { true, 0x02c9, 0x02c9 }, /* 0x02ca */ { true, 0x02ca, 0x02ca }, /* 0x02cb */ { true, 0x02cb, 0x02cb }, /* 0x02cc */ { true, 0x02cc, 0x02cc }, /* 0x02cd */ { true, 0x02cd, 0x02cd }, /* 0x02ce */ { true, 0x02ce, 0x02ce }, /* 0x02cf */ { true, 0x02cf, 0x02cf }, /* 0x02d0 */ { true, 0x02d0, 0x02d0 }, /* 0x02d1 */ { true, 0x02d1, 0x02d1 }, /* 0x02d2 */ { false, 0x02d2, 0x02d2 }, /* 0x02d3 */ { false, 0x02d3, 0x02d3 }, /* 0x02d4 */ { false, 0x02d4, 0x02d4 }, /* 0x02d5 */ { false, 0x02d5, 0x02d5 }, /* 0x02d6 */ { false, 0x02d6, 0x02d6 }, /* 0x02d7 */ { false, 0x02d7, 0x02d7 }, /* 0x02d8 */ { false, 0x02d8, 0x02d8 }, /* 0x02d9 */ { false, 0x02d9, 0x02d9 }, /* 0x02da */ { false, 0x02da, 0x02da }, /* 0x02db */ { false, 0x02db, 0x02db }, /* 0x02dc */ { false, 0x02dc, 0x02dc }, /* 0x02dd */ { false, 0x02dd, 0x02dd }, /* 0x02de */ { false, 0x02de, 0x02de }, /* 0x02df */ { false, 0x02df, 0x02df }, /* 0x02e0 */ { true, 0x02e0, 0x02e0 }, /* 0x02e1 */ { true, 0x02e1, 0x02e1 }, /* 0x02e2 */ { true, 0x02e2, 0x02e2 }, /* 0x02e3 */ { true, 0x02e3, 0x02e3 }, /* 0x02e4 */ { true, 0x02e4, 0x02e4 }, /* 0x02e5 */ { false, 0x02e5, 0x02e5 }, /* 0x02e6 */ { false, 0x02e6, 0x02e6 }, /* 0x02e7 */ { false, 0x02e7, 0x02e7 }, /* 0x02e8 */ { false, 0x02e8, 0x02e8 }, /* 0x02e9 */ { false, 0x02e9, 0x02e9 }, /* 0x02ea */ { false, 0x02ea, 0x02ea }, /* 0x02eb */ { false, 0x02eb, 0x02eb }, /* 0x02ec */ { false, 0x02ec, 0x02ec }, /* 0x02ed */ { false, 0x02ed, 0x02ed }, /* 0x02ee */ { true, 0x02ee, 0x02ee }, /* 0x02ef */ { false, 0x02ef, 0x02ef }, /* 0x02f0 */ { false, 0x02f0, 0x02f0 }, /* 0x02f1 */ { false, 0x02f1, 0x02f1 }, /* 0x02f2 */ { false, 0x02f2, 0x02f2 }, /* 0x02f3 */ { false, 0x02f3, 0x02f3 }, /* 0x02f4 */ { false, 0x02f4, 0x02f4 }, /* 0x02f5 */ { false, 0x02f5, 0x02f5 }, /* 0x02f6 */ { false, 0x02f6, 0x02f6 }, /* 0x02f7 */ { false, 0x02f7, 0x02f7 }, /* 0x02f8 */ { false, 0x02f8, 0x02f8 }, /* 0x02f9 */ { false, 0x02f9, 0x02f9 }, /* 0x02fa */ { false, 0x02fa, 0x02fa }, /* 0x02fb */ { false, 0x02fb, 0x02fb }, /* 0x02fc */ { false, 0x02fc, 0x02fc }, /* 0x02fd */ { false, 0x02fd, 0x02fd }, /* 0x02fe */ { false, 0x02fe, 0x02fe }, /* 0x02ff */ { false, 0x02ff, 0x02ff }, /* 0x0300 */ { true, 0x0300, 0x0300 }, /* 0x0301 */ { true, 0x0301, 0x0301 }, /* 0x0302 */ { true, 0x0302, 0x0302 }, /* 0x0303 */ { true, 0x0303, 0x0303 }, /* 0x0304 */ { true, 0x0304, 0x0304 }, /* 0x0305 */ { true, 0x0305, 0x0305 }, /* 0x0306 */ { true, 0x0306, 0x0306 }, /* 0x0307 */ { true, 0x0307, 0x0307 }, /* 0x0308 */ { true, 0x0308, 0x0308 }, /* 0x0309 */ { true, 0x0309, 0x0309 }, /* 0x030a */ { true, 0x030a, 0x030a }, /* 0x030b */ { true, 0x030b, 0x030b }, /* 0x030c */ { true, 0x030c, 0x030c }, /* 0x030d */ { true, 0x030d, 0x030d }, /* 0x030e */ { true, 0x030e, 0x030e }, /* 0x030f */ { true, 0x030f, 0x030f }, /* 0x0310 */ { true, 0x0310, 0x0310 }, /* 0x0311 */ { true, 0x0311, 0x0311 }, /* 0x0312 */ { true, 0x0312, 0x0312 }, /* 0x0313 */ { true, 0x0313, 0x0313 }, /* 0x0314 */ { true, 0x0314, 0x0314 }, /* 0x0315 */ { true, 0x0315, 0x0315 }, /* 0x0316 */ { true, 0x0316, 0x0316 }, /* 0x0317 */ { true, 0x0317, 0x0317 }, /* 0x0318 */ { true, 0x0318, 0x0318 }, /* 0x0319 */ { true, 0x0319, 0x0319 }, /* 0x031a */ { true, 0x031a, 0x031a }, /* 0x031b */ { true, 0x031b, 0x031b }, /* 0x031c */ { true, 0x031c, 0x031c }, /* 0x031d */ { true, 0x031d, 0x031d }, /* 0x031e */ { true, 0x031e, 0x031e }, /* 0x031f */ { true, 0x031f, 0x031f }, /* 0x0320 */ { true, 0x0320, 0x0320 }, /* 0x0321 */ { true, 0x0321, 0x0321 }, /* 0x0322 */ { true, 0x0322, 0x0322 }, /* 0x0323 */ { true, 0x0323, 0x0323 }, /* 0x0324 */ { true, 0x0324, 0x0324 }, /* 0x0325 */ { true, 0x0325, 0x0325 }, /* 0x0326 */ { true, 0x0326, 0x0326 }, /* 0x0327 */ { true, 0x0327, 0x0327 }, /* 0x0328 */ { true, 0x0328, 0x0328 }, /* 0x0329 */ { true, 0x0329, 0x0329 }, /* 0x032a */ { true, 0x032a, 0x032a }, /* 0x032b */ { true, 0x032b, 0x032b }, /* 0x032c */ { true, 0x032c, 0x032c }, /* 0x032d */ { true, 0x032d, 0x032d }, /* 0x032e */ { true, 0x032e, 0x032e }, /* 0x032f */ { true, 0x032f, 0x032f }, /* 0x0330 */ { true, 0x0330, 0x0330 }, /* 0x0331 */ { true, 0x0331, 0x0331 }, /* 0x0332 */ { true, 0x0332, 0x0332 }, /* 0x0333 */ { true, 0x0333, 0x0333 }, /* 0x0334 */ { true, 0x0334, 0x0334 }, /* 0x0335 */ { true, 0x0335, 0x0335 }, /* 0x0336 */ { true, 0x0336, 0x0336 }, /* 0x0337 */ { true, 0x0337, 0x0337 }, /* 0x0338 */ { true, 0x0338, 0x0338 }, /* 0x0339 */ { true, 0x0339, 0x0339 }, /* 0x033a */ { true, 0x033a, 0x033a }, /* 0x033b */ { true, 0x033b, 0x033b }, /* 0x033c */ { true, 0x033c, 0x033c }, /* 0x033d */ { true, 0x033d, 0x033d }, /* 0x033e */ { true, 0x033e, 0x033e }, /* 0x033f */ { true, 0x033f, 0x033f }, /* 0x0340 */ { true, 0x0340, 0x0340 }, /* 0x0341 */ { true, 0x0341, 0x0341 }, /* 0x0342 */ { true, 0x0342, 0x0342 }, /* 0x0343 */ { true, 0x0343, 0x0343 }, /* 0x0344 */ { true, 0x0344, 0x0344 }, /* 0x0345 */ { true, 0x0399, 0x0345 }, /* 0x0346 */ { true, 0x0346, 0x0346 }, /* 0x0347 */ { true, 0x0347, 0x0347 }, /* 0x0348 */ { true, 0x0348, 0x0348 }, /* 0x0349 */ { true, 0x0349, 0x0349 }, /* 0x034a */ { true, 0x034a, 0x034a }, /* 0x034b */ { true, 0x034b, 0x034b }, /* 0x034c */ { true, 0x034c, 0x034c }, /* 0x034d */ { true, 0x034d, 0x034d }, /* 0x034e */ { true, 0x034e, 0x034e }, /* 0x034f */ { true, 0x034f, 0x034f }, /* 0x0350 */ { true, 0x0350, 0x0350 }, /* 0x0351 */ { true, 0x0351, 0x0351 }, /* 0x0352 */ { true, 0x0352, 0x0352 }, /* 0x0353 */ { true, 0x0353, 0x0353 }, /* 0x0354 */ { true, 0x0354, 0x0354 }, /* 0x0355 */ { true, 0x0355, 0x0355 }, /* 0x0356 */ { true, 0x0356, 0x0356 }, /* 0x0357 */ { true, 0x0357, 0x0357 }, /* 0x0358 */ { true, 0x0358, 0x0358 }, /* 0x0359 */ { true, 0x0359, 0x0359 }, /* 0x035a */ { true, 0x035a, 0x035a }, /* 0x035b */ { true, 0x035b, 0x035b }, /* 0x035c */ { true, 0x035c, 0x035c }, /* 0x035d */ { true, 0x035d, 0x035d }, /* 0x035e */ { true, 0x035e, 0x035e }, /* 0x035f */ { true, 0x035f, 0x035f }, /* 0x0360 */ { true, 0x0360, 0x0360 }, /* 0x0361 */ { true, 0x0361, 0x0361 }, /* 0x0362 */ { true, 0x0362, 0x0362 }, /* 0x0363 */ { true, 0x0363, 0x0363 }, /* 0x0364 */ { true, 0x0364, 0x0364 }, /* 0x0365 */ { true, 0x0365, 0x0365 }, /* 0x0366 */ { true, 0x0366, 0x0366 }, /* 0x0367 */ { true, 0x0367, 0x0367 }, /* 0x0368 */ { true, 0x0368, 0x0368 }, /* 0x0369 */ { true, 0x0369, 0x0369 }, /* 0x036a */ { true, 0x036a, 0x036a }, /* 0x036b */ { true, 0x036b, 0x036b }, /* 0x036c */ { true, 0x036c, 0x036c }, /* 0x036d */ { true, 0x036d, 0x036d }, /* 0x036e */ { true, 0x036e, 0x036e }, /* 0x036f */ { true, 0x036f, 0x036f }, /* 0x0370 */ { false, 0x0370, 0x0370 }, /* 0x0371 */ { false, 0x0371, 0x0371 }, /* 0x0372 */ { false, 0x0372, 0x0372 }, /* 0x0373 */ { false, 0x0373, 0x0373 }, /* 0x0374 */ { false, 0x0374, 0x0374 }, /* 0x0375 */ { false, 0x0375, 0x0375 }, /* 0x0376 */ { false, 0x0376, 0x0376 }, /* 0x0377 */ { false, 0x0377, 0x0377 }, /* 0x0378 */ { false, 0x0378, 0x0378 }, /* 0x0379 */ { false, 0x0379, 0x0379 }, /* 0x037a */ { true, 0x037a, 0x037a }, /* 0x037b */ { false, 0x037b, 0x037b }, /* 0x037c */ { false, 0x037c, 0x037c }, /* 0x037d */ { false, 0x037d, 0x037d }, /* 0x037e */ { false, 0x037e, 0x037e }, /* 0x037f */ { false, 0x037f, 0x037f }, /* 0x0380 */ { false, 0x0380, 0x0380 }, /* 0x0381 */ { false, 0x0381, 0x0381 }, /* 0x0382 */ { false, 0x0382, 0x0382 }, /* 0x0383 */ { false, 0x0383, 0x0383 }, /* 0x0384 */ { false, 0x0384, 0x0384 }, /* 0x0385 */ { false, 0x0385, 0x0385 }, /* 0x0386 */ { true, 0x0386, 0x03ac }, /* 0x0387 */ { false, 0x0387, 0x0387 }, /* 0x0388 */ { true, 0x0388, 0x03ad }, /* 0x0389 */ { true, 0x0389, 0x03ae }, /* 0x038a */ { true, 0x038a, 0x03af }, /* 0x038b */ { false, 0x038b, 0x038b }, /* 0x038c */ { true, 0x038c, 0x03cc }, /* 0x038d */ { false, 0x038d, 0x038d }, /* 0x038e */ { true, 0x038e, 0x03cd }, /* 0x038f */ { true, 0x038f, 0x03ce }, /* 0x0390 */ { true, 0x0390, 0x0390 }, /* 0x0391 */ { true, 0x0391, 0x03b1 }, /* 0x0392 */ { true, 0x0392, 0x03b2 }, /* 0x0393 */ { true, 0x0393, 0x03b3 }, /* 0x0394 */ { true, 0x0394, 0x03b4 }, /* 0x0395 */ { true, 0x0395, 0x03b5 }, /* 0x0396 */ { true, 0x0396, 0x03b6 }, /* 0x0397 */ { true, 0x0397, 0x03b7 }, /* 0x0398 */ { true, 0x0398, 0x03b8 }, /* 0x0399 */ { true, 0x0399, 0x03b9 }, /* 0x039a */ { true, 0x039a, 0x03ba }, /* 0x039b */ { true, 0x039b, 0x03bb }, /* 0x039c */ { true, 0x039c, 0x03bc }, /* 0x039d */ { true, 0x039d, 0x03bd }, /* 0x039e */ { true, 0x039e, 0x03be }, /* 0x039f */ { true, 0x039f, 0x03bf }, /* 0x03a0 */ { true, 0x03a0, 0x03c0 }, /* 0x03a1 */ { true, 0x03a1, 0x03c1 }, /* 0x03a2 */ { false, 0x03a2, 0x03a2 }, /* 0x03a3 */ { true, 0x03a3, 0x03c3 }, /* 0x03a4 */ { true, 0x03a4, 0x03c4 }, /* 0x03a5 */ { true, 0x03a5, 0x03c5 }, /* 0x03a6 */ { true, 0x03a6, 0x03c6 }, /* 0x03a7 */ { true, 0x03a7, 0x03c7 }, /* 0x03a8 */ { true, 0x03a8, 0x03c8 }, /* 0x03a9 */ { true, 0x03a9, 0x03c9 }, /* 0x03aa */ { true, 0x03aa, 0x03ca }, /* 0x03ab */ { true, 0x03ab, 0x03cb }, /* 0x03ac */ { true, 0x0386, 0x03ac }, /* 0x03ad */ { true, 0x0388, 0x03ad }, /* 0x03ae */ { true, 0x0389, 0x03ae }, /* 0x03af */ { true, 0x038a, 0x03af }, /* 0x03b0 */ { true, 0x03b0, 0x03b0 }, /* 0x03b1 */ { true, 0x0391, 0x03b1 }, /* 0x03b2 */ { true, 0x0392, 0x03b2 }, /* 0x03b3 */ { true, 0x0393, 0x03b3 }, /* 0x03b4 */ { true, 0x0394, 0x03b4 }, /* 0x03b5 */ { true, 0x0395, 0x03b5 }, /* 0x03b6 */ { true, 0x0396, 0x03b6 }, /* 0x03b7 */ { true, 0x0397, 0x03b7 }, /* 0x03b8 */ { true, 0x0398, 0x03b8 }, /* 0x03b9 */ { true, 0x0399, 0x03b9 }, /* 0x03ba */ { true, 0x039a, 0x03ba }, /* 0x03bb */ { true, 0x039b, 0x03bb }, /* 0x03bc */ { true, 0x039c, 0x03bc }, /* 0x03bd */ { true, 0x039d, 0x03bd }, /* 0x03be */ { true, 0x039e, 0x03be }, /* 0x03bf */ { true, 0x039f, 0x03bf }, /* 0x03c0 */ { true, 0x03a0, 0x03c0 }, /* 0x03c1 */ { true, 0x03a1, 0x03c1 }, /* 0x03c2 */ { true, 0x03a3, 0x03c2 }, /* 0x03c3 */ { true, 0x03a3, 0x03c3 }, /* 0x03c4 */ { true, 0x03a4, 0x03c4 }, /* 0x03c5 */ { true, 0x03a5, 0x03c5 }, /* 0x03c6 */ { true, 0x03a6, 0x03c6 }, /* 0x03c7 */ { true, 0x03a7, 0x03c7 }, /* 0x03c8 */ { true, 0x03a8, 0x03c8 }, /* 0x03c9 */ { true, 0x03a9, 0x03c9 }, /* 0x03ca */ { true, 0x03aa, 0x03ca }, /* 0x03cb */ { true, 0x03ab, 0x03cb }, /* 0x03cc */ { true, 0x038c, 0x03cc }, /* 0x03cd */ { true, 0x038e, 0x03cd }, /* 0x03ce */ { true, 0x038f, 0x03ce }, /* 0x03cf */ { false, 0x03cf, 0x03cf }, /* 0x03d0 */ { true, 0x0392, 0x03d0 }, /* 0x03d1 */ { true, 0x0398, 0x03d1 }, /* 0x03d2 */ { true, 0x03d2, 0x03d2 }, /* 0x03d3 */ { true, 0x03d3, 0x03d3 }, /* 0x03d4 */ { true, 0x03d4, 0x03d4 }, /* 0x03d5 */ { true, 0x03a6, 0x03d5 }, /* 0x03d6 */ { true, 0x03a0, 0x03d6 }, /* 0x03d7 */ { true, 0x03d7, 0x03d7 }, /* 0x03d8 */ { true, 0x03d8, 0x03d9 }, /* 0x03d9 */ { true, 0x03d8, 0x03d9 }, /* 0x03da */ { true, 0x03da, 0x03db }, /* 0x03db */ { true, 0x03da, 0x03db }, /* 0x03dc */ { true, 0x03dc, 0x03dd }, /* 0x03dd */ { true, 0x03dc, 0x03dd }, /* 0x03de */ { true, 0x03de, 0x03df }, /* 0x03df */ { true, 0x03de, 0x03df }, /* 0x03e0 */ { true, 0x03e0, 0x03e1 }, /* 0x03e1 */ { true, 0x03e0, 0x03e1 }, /* 0x03e2 */ { true, 0x03e2, 0x03e3 }, /* 0x03e3 */ { true, 0x03e2, 0x03e3 }, /* 0x03e4 */ { true, 0x03e4, 0x03e5 }, /* 0x03e5 */ { true, 0x03e4, 0x03e5 }, /* 0x03e6 */ { true, 0x03e6, 0x03e7 }, /* 0x03e7 */ { true, 0x03e6, 0x03e7 }, /* 0x03e8 */ { true, 0x03e8, 0x03e9 }, /* 0x03e9 */ { true, 0x03e8, 0x03e9 }, /* 0x03ea */ { true, 0x03ea, 0x03eb }, /* 0x03eb */ { true, 0x03ea, 0x03eb }, /* 0x03ec */ { true, 0x03ec, 0x03ed }, /* 0x03ed */ { true, 0x03ec, 0x03ed }, /* 0x03ee */ { true, 0x03ee, 0x03ef }, /* 0x03ef */ { true, 0x03ee, 0x03ef }, /* 0x03f0 */ { true, 0x039a, 0x03f0 }, /* 0x03f1 */ { true, 0x03a1, 0x03f1 }, /* 0x03f2 */ { true, 0x03f9, 0x03f2 }, /* 0x03f3 */ { true, 0x03f3, 0x03f3 }, /* 0x03f4 */ { true, 0x03f4, 0x03b8 }, /* 0x03f5 */ { true, 0x0395, 0x03f5 }, /* 0x03f6 */ { false, 0x03f6, 0x03f6 }, /* 0x03f7 */ { true, 0x03f7, 0x03f8 }, /* 0x03f8 */ { true, 0x03f7, 0x03f8 }, /* 0x03f9 */ { true, 0x03f9, 0x03f2 }, /* 0x03fa */ { true, 0x03fa, 0x03fb }, /* 0x03fb */ { true, 0x03fa, 0x03fb }, /* 0x03fc */ { true, 0x03fc, 0x03fc }, /* 0x03fd */ { true, 0x03fd, 0x03fd }, /* 0x03fe */ { true, 0x03fe, 0x03fe }, /* 0x03ff */ { true, 0x03ff, 0x03ff }, /* 0x0400 */ { true, 0x0400, 0x0450 }, /* 0x0401 */ { true, 0x0401, 0x0451 }, /* 0x0402 */ { true, 0x0402, 0x0452 }, /* 0x0403 */ { true, 0x0403, 0x0453 }, /* 0x0404 */ { true, 0x0404, 0x0454 }, /* 0x0405 */ { true, 0x0405, 0x0455 }, /* 0x0406 */ { true, 0x0406, 0x0456 }, /* 0x0407 */ { true, 0x0407, 0x0457 }, /* 0x0408 */ { true, 0x0408, 0x0458 }, /* 0x0409 */ { true, 0x0409, 0x0459 }, /* 0x040a */ { true, 0x040a, 0x045a }, /* 0x040b */ { true, 0x040b, 0x045b }, /* 0x040c */ { true, 0x040c, 0x045c }, /* 0x040d */ { true, 0x040d, 0x045d }, /* 0x040e */ { true, 0x040e, 0x045e }, /* 0x040f */ { true, 0x040f, 0x045f }, /* 0x0410 */ { true, 0x0410, 0x0430 }, /* 0x0411 */ { true, 0x0411, 0x0431 }, /* 0x0412 */ { true, 0x0412, 0x0432 }, /* 0x0413 */ { true, 0x0413, 0x0433 }, /* 0x0414 */ { true, 0x0414, 0x0434 }, /* 0x0415 */ { true, 0x0415, 0x0435 }, /* 0x0416 */ { true, 0x0416, 0x0436 }, /* 0x0417 */ { true, 0x0417, 0x0437 }, /* 0x0418 */ { true, 0x0418, 0x0438 }, /* 0x0419 */ { true, 0x0419, 0x0439 }, /* 0x041a */ { true, 0x041a, 0x043a }, /* 0x041b */ { true, 0x041b, 0x043b }, /* 0x041c */ { true, 0x041c, 0x043c }, /* 0x041d */ { true, 0x041d, 0x043d }, /* 0x041e */ { true, 0x041e, 0x043e }, /* 0x041f */ { true, 0x041f, 0x043f }, /* 0x0420 */ { true, 0x0420, 0x0440 }, /* 0x0421 */ { true, 0x0421, 0x0441 }, /* 0x0422 */ { true, 0x0422, 0x0442 }, /* 0x0423 */ { true, 0x0423, 0x0443 }, /* 0x0424 */ { true, 0x0424, 0x0444 }, /* 0x0425 */ { true, 0x0425, 0x0445 }, /* 0x0426 */ { true, 0x0426, 0x0446 }, /* 0x0427 */ { true, 0x0427, 0x0447 }, /* 0x0428 */ { true, 0x0428, 0x0448 }, /* 0x0429 */ { true, 0x0429, 0x0449 }, /* 0x042a */ { true, 0x042a, 0x044a }, /* 0x042b */ { true, 0x042b, 0x044b }, /* 0x042c */ { true, 0x042c, 0x044c }, /* 0x042d */ { true, 0x042d, 0x044d }, /* 0x042e */ { true, 0x042e, 0x044e }, /* 0x042f */ { true, 0x042f, 0x044f }, /* 0x0430 */ { true, 0x0410, 0x0430 }, /* 0x0431 */ { true, 0x0411, 0x0431 }, /* 0x0432 */ { true, 0x0412, 0x0432 }, /* 0x0433 */ { true, 0x0413, 0x0433 }, /* 0x0434 */ { true, 0x0414, 0x0434 }, /* 0x0435 */ { true, 0x0415, 0x0435 }, /* 0x0436 */ { true, 0x0416, 0x0436 }, /* 0x0437 */ { true, 0x0417, 0x0437 }, /* 0x0438 */ { true, 0x0418, 0x0438 }, /* 0x0439 */ { true, 0x0419, 0x0439 }, /* 0x043a */ { true, 0x041a, 0x043a }, /* 0x043b */ { true, 0x041b, 0x043b }, /* 0x043c */ { true, 0x041c, 0x043c }, /* 0x043d */ { true, 0x041d, 0x043d }, /* 0x043e */ { true, 0x041e, 0x043e }, /* 0x043f */ { true, 0x041f, 0x043f }, /* 0x0440 */ { true, 0x0420, 0x0440 }, /* 0x0441 */ { true, 0x0421, 0x0441 }, /* 0x0442 */ { true, 0x0422, 0x0442 }, /* 0x0443 */ { true, 0x0423, 0x0443 }, /* 0x0444 */ { true, 0x0424, 0x0444 }, /* 0x0445 */ { true, 0x0425, 0x0445 }, /* 0x0446 */ { true, 0x0426, 0x0446 }, /* 0x0447 */ { true, 0x0427, 0x0447 }, /* 0x0448 */ { true, 0x0428, 0x0448 }, /* 0x0449 */ { true, 0x0429, 0x0449 }, /* 0x044a */ { true, 0x042a, 0x044a }, /* 0x044b */ { true, 0x042b, 0x044b }, /* 0x044c */ { true, 0x042c, 0x044c }, /* 0x044d */ { true, 0x042d, 0x044d }, /* 0x044e */ { true, 0x042e, 0x044e }, /* 0x044f */ { true, 0x042f, 0x044f }, /* 0x0450 */ { true, 0x0400, 0x0450 }, /* 0x0451 */ { true, 0x0401, 0x0451 }, /* 0x0452 */ { true, 0x0402, 0x0452 }, /* 0x0453 */ { true, 0x0403, 0x0453 }, /* 0x0454 */ { true, 0x0404, 0x0454 }, /* 0x0455 */ { true, 0x0405, 0x0455 }, /* 0x0456 */ { true, 0x0406, 0x0456 }, /* 0x0457 */ { true, 0x0407, 0x0457 }, /* 0x0458 */ { true, 0x0408, 0x0458 }, /* 0x0459 */ { true, 0x0409, 0x0459 }, /* 0x045a */ { true, 0x040a, 0x045a }, /* 0x045b */ { true, 0x040b, 0x045b }, /* 0x045c */ { true, 0x040c, 0x045c }, /* 0x045d */ { true, 0x040d, 0x045d }, /* 0x045e */ { true, 0x040e, 0x045e }, /* 0x045f */ { true, 0x040f, 0x045f }, /* 0x0460 */ { true, 0x0460, 0x0461 }, /* 0x0461 */ { true, 0x0460, 0x0461 }, /* 0x0462 */ { true, 0x0462, 0x0463 }, /* 0x0463 */ { true, 0x0462, 0x0463 }, /* 0x0464 */ { true, 0x0464, 0x0465 }, /* 0x0465 */ { true, 0x0464, 0x0465 }, /* 0x0466 */ { true, 0x0466, 0x0467 }, /* 0x0467 */ { true, 0x0466, 0x0467 }, /* 0x0468 */ { true, 0x0468, 0x0469 }, /* 0x0469 */ { true, 0x0468, 0x0469 }, /* 0x046a */ { true, 0x046a, 0x046b }, /* 0x046b */ { true, 0x046a, 0x046b }, /* 0x046c */ { true, 0x046c, 0x046d }, /* 0x046d */ { true, 0x046c, 0x046d }, /* 0x046e */ { true, 0x046e, 0x046f }, /* 0x046f */ { true, 0x046e, 0x046f }, /* 0x0470 */ { true, 0x0470, 0x0471 }, /* 0x0471 */ { true, 0x0470, 0x0471 }, /* 0x0472 */ { true, 0x0472, 0x0473 }, /* 0x0473 */ { true, 0x0472, 0x0473 }, /* 0x0474 */ { true, 0x0474, 0x0475 }, /* 0x0475 */ { true, 0x0474, 0x0475 }, /* 0x0476 */ { true, 0x0476, 0x0477 }, /* 0x0477 */ { true, 0x0476, 0x0477 }, /* 0x0478 */ { true, 0x0478, 0x0479 }, /* 0x0479 */ { true, 0x0478, 0x0479 }, /* 0x047a */ { true, 0x047a, 0x047b }, /* 0x047b */ { true, 0x047a, 0x047b }, /* 0x047c */ { true, 0x047c, 0x047d }, /* 0x047d */ { true, 0x047c, 0x047d }, /* 0x047e */ { true, 0x047e, 0x047f }, /* 0x047f */ { true, 0x047e, 0x047f }, /* 0x0480 */ { true, 0x0480, 0x0481 }, /* 0x0481 */ { true, 0x0480, 0x0481 }, /* 0x0482 */ { false, 0x0482, 0x0482 }, /* 0x0483 */ { true, 0x0483, 0x0483 }, /* 0x0484 */ { true, 0x0484, 0x0484 }, /* 0x0485 */ { true, 0x0485, 0x0485 }, /* 0x0486 */ { true, 0x0486, 0x0486 }, /* 0x0487 */ { false, 0x0487, 0x0487 }, /* 0x0488 */ { false, 0x0488, 0x0488 }, /* 0x0489 */ { false, 0x0489, 0x0489 }, /* 0x048a */ { true, 0x048a, 0x048b }, /* 0x048b */ { true, 0x048a, 0x048b }, /* 0x048c */ { true, 0x048c, 0x048d }, /* 0x048d */ { true, 0x048c, 0x048d }, /* 0x048e */ { true, 0x048e, 0x048f }, /* 0x048f */ { true, 0x048e, 0x048f }, /* 0x0490 */ { true, 0x0490, 0x0491 }, /* 0x0491 */ { true, 0x0490, 0x0491 }, /* 0x0492 */ { true, 0x0492, 0x0493 }, /* 0x0493 */ { true, 0x0492, 0x0493 }, /* 0x0494 */ { true, 0x0494, 0x0495 }, /* 0x0495 */ { true, 0x0494, 0x0495 }, /* 0x0496 */ { true, 0x0496, 0x0497 }, /* 0x0497 */ { true, 0x0496, 0x0497 }, /* 0x0498 */ { true, 0x0498, 0x0499 }, /* 0x0499 */ { true, 0x0498, 0x0499 }, /* 0x049a */ { true, 0x049a, 0x049b }, /* 0x049b */ { true, 0x049a, 0x049b }, /* 0x049c */ { true, 0x049c, 0x049d }, /* 0x049d */ { true, 0x049c, 0x049d }, /* 0x049e */ { true, 0x049e, 0x049f }, /* 0x049f */ { true, 0x049e, 0x049f }, /* 0x04a0 */ { true, 0x04a0, 0x04a1 }, /* 0x04a1 */ { true, 0x04a0, 0x04a1 }, /* 0x04a2 */ { true, 0x04a2, 0x04a3 }, /* 0x04a3 */ { true, 0x04a2, 0x04a3 }, /* 0x04a4 */ { true, 0x04a4, 0x04a5 }, /* 0x04a5 */ { true, 0x04a4, 0x04a5 }, /* 0x04a6 */ { true, 0x04a6, 0x04a7 }, /* 0x04a7 */ { true, 0x04a6, 0x04a7 }, /* 0x04a8 */ { true, 0x04a8, 0x04a9 }, /* 0x04a9 */ { true, 0x04a8, 0x04a9 }, /* 0x04aa */ { true, 0x04aa, 0x04ab }, /* 0x04ab */ { true, 0x04aa, 0x04ab }, /* 0x04ac */ { true, 0x04ac, 0x04ad }, /* 0x04ad */ { true, 0x04ac, 0x04ad }, /* 0x04ae */ { true, 0x04ae, 0x04af }, /* 0x04af */ { true, 0x04ae, 0x04af }, /* 0x04b0 */ { true, 0x04b0, 0x04b1 }, /* 0x04b1 */ { true, 0x04b0, 0x04b1 }, /* 0x04b2 */ { true, 0x04b2, 0x04b3 }, /* 0x04b3 */ { true, 0x04b2, 0x04b3 }, /* 0x04b4 */ { true, 0x04b4, 0x04b5 }, /* 0x04b5 */ { true, 0x04b4, 0x04b5 }, /* 0x04b6 */ { true, 0x04b6, 0x04b7 }, /* 0x04b7 */ { true, 0x04b6, 0x04b7 }, /* 0x04b8 */ { true, 0x04b8, 0x04b9 }, /* 0x04b9 */ { true, 0x04b8, 0x04b9 }, /* 0x04ba */ { true, 0x04ba, 0x04bb }, /* 0x04bb */ { true, 0x04ba, 0x04bb }, /* 0x04bc */ { true, 0x04bc, 0x04bd }, /* 0x04bd */ { true, 0x04bc, 0x04bd }, /* 0x04be */ { true, 0x04be, 0x04bf }, /* 0x04bf */ { true, 0x04be, 0x04bf }, /* 0x04c0 */ { true, 0x04c0, 0x04c0 }, /* 0x04c1 */ { true, 0x04c1, 0x04c2 }, /* 0x04c2 */ { true, 0x04c1, 0x04c2 }, /* 0x04c3 */ { true, 0x04c3, 0x04c4 }, /* 0x04c4 */ { true, 0x04c3, 0x04c4 }, /* 0x04c5 */ { true, 0x04c5, 0x04c6 }, /* 0x04c6 */ { true, 0x04c5, 0x04c6 }, /* 0x04c7 */ { true, 0x04c7, 0x04c8 }, /* 0x04c8 */ { true, 0x04c7, 0x04c8 }, /* 0x04c9 */ { true, 0x04c9, 0x04ca }, /* 0x04ca */ { true, 0x04c9, 0x04ca }, /* 0x04cb */ { true, 0x04cb, 0x04cc }, /* 0x04cc */ { true, 0x04cb, 0x04cc }, /* 0x04cd */ { true, 0x04cd, 0x04ce }, /* 0x04ce */ { true, 0x04cd, 0x04ce }, /* 0x04cf */ { false, 0x04cf, 0x04cf }, /* 0x04d0 */ { true, 0x04d0, 0x04d1 }, /* 0x04d1 */ { true, 0x04d0, 0x04d1 }, /* 0x04d2 */ { true, 0x04d2, 0x04d3 }, /* 0x04d3 */ { true, 0x04d2, 0x04d3 }, /* 0x04d4 */ { true, 0x04d4, 0x04d5 }, /* 0x04d5 */ { true, 0x04d4, 0x04d5 }, /* 0x04d6 */ { true, 0x04d6, 0x04d7 }, /* 0x04d7 */ { true, 0x04d6, 0x04d7 }, /* 0x04d8 */ { true, 0x04d8, 0x04d9 }, /* 0x04d9 */ { true, 0x04d8, 0x04d9 }, /* 0x04da */ { true, 0x04da, 0x04db }, /* 0x04db */ { true, 0x04da, 0x04db }, /* 0x04dc */ { true, 0x04dc, 0x04dd }, /* 0x04dd */ { true, 0x04dc, 0x04dd }, /* 0x04de */ { true, 0x04de, 0x04df }, /* 0x04df */ { true, 0x04de, 0x04df }, /* 0x04e0 */ { true, 0x04e0, 0x04e1 }, /* 0x04e1 */ { true, 0x04e0, 0x04e1 }, /* 0x04e2 */ { true, 0x04e2, 0x04e3 }, /* 0x04e3 */ { true, 0x04e2, 0x04e3 }, /* 0x04e4 */ { true, 0x04e4, 0x04e5 }, /* 0x04e5 */ { true, 0x04e4, 0x04e5 }, /* 0x04e6 */ { true, 0x04e6, 0x04e7 }, /* 0x04e7 */ { true, 0x04e6, 0x04e7 }, /* 0x04e8 */ { true, 0x04e8, 0x04e9 }, /* 0x04e9 */ { true, 0x04e8, 0x04e9 }, /* 0x04ea */ { true, 0x04ea, 0x04eb }, /* 0x04eb */ { true, 0x04ea, 0x04eb }, /* 0x04ec */ { true, 0x04ec, 0x04ed }, /* 0x04ed */ { true, 0x04ec, 0x04ed }, /* 0x04ee */ { true, 0x04ee, 0x04ef }, /* 0x04ef */ { true, 0x04ee, 0x04ef }, /* 0x04f0 */ { true, 0x04f0, 0x04f1 }, /* 0x04f1 */ { true, 0x04f0, 0x04f1 }, /* 0x04f2 */ { true, 0x04f2, 0x04f3 }, /* 0x04f3 */ { true, 0x04f2, 0x04f3 }, /* 0x04f4 */ { true, 0x04f4, 0x04f5 }, /* 0x04f5 */ { true, 0x04f4, 0x04f5 }, /* 0x04f6 */ { true, 0x04f6, 0x04f7 }, /* 0x04f7 */ { true, 0x04f6, 0x04f7 }, /* 0x04f8 */ { true, 0x04f8, 0x04f9 }, /* 0x04f9 */ { true, 0x04f8, 0x04f9 }, /* 0x04fa */ { false, 0x04fa, 0x04fa }, /* 0x04fb */ { false, 0x04fb, 0x04fb }, /* 0x04fc */ { false, 0x04fc, 0x04fc }, /* 0x04fd */ { false, 0x04fd, 0x04fd }, /* 0x04fe */ { false, 0x04fe, 0x04fe }, /* 0x04ff */ { false, 0x04ff, 0x04ff }, /* 0x0500 */ { true, 0x0500, 0x0501 }, /* 0x0501 */ { true, 0x0500, 0x0501 }, /* 0x0502 */ { true, 0x0502, 0x0503 }, /* 0x0503 */ { true, 0x0502, 0x0503 }, /* 0x0504 */ { true, 0x0504, 0x0505 }, /* 0x0505 */ { true, 0x0504, 0x0505 }, /* 0x0506 */ { true, 0x0506, 0x0507 }, /* 0x0507 */ { true, 0x0506, 0x0507 }, /* 0x0508 */ { true, 0x0508, 0x0509 }, /* 0x0509 */ { true, 0x0508, 0x0509 }, /* 0x050a */ { true, 0x050a, 0x050b }, /* 0x050b */ { true, 0x050a, 0x050b }, /* 0x050c */ { true, 0x050c, 0x050d }, /* 0x050d */ { true, 0x050c, 0x050d }, /* 0x050e */ { true, 0x050e, 0x050f }, /* 0x050f */ { true, 0x050e, 0x050f }, /* 0x0510 */ { false, 0x0510, 0x0510 }, /* 0x0511 */ { false, 0x0511, 0x0511 }, /* 0x0512 */ { false, 0x0512, 0x0512 }, /* 0x0513 */ { false, 0x0513, 0x0513 }, /* 0x0514 */ { false, 0x0514, 0x0514 }, /* 0x0515 */ { false, 0x0515, 0x0515 }, /* 0x0516 */ { false, 0x0516, 0x0516 }, /* 0x0517 */ { false, 0x0517, 0x0517 }, /* 0x0518 */ { false, 0x0518, 0x0518 }, /* 0x0519 */ { false, 0x0519, 0x0519 }, /* 0x051a */ { false, 0x051a, 0x051a }, /* 0x051b */ { false, 0x051b, 0x051b }, /* 0x051c */ { false, 0x051c, 0x051c }, /* 0x051d */ { false, 0x051d, 0x051d }, /* 0x051e */ { false, 0x051e, 0x051e }, /* 0x051f */ { false, 0x051f, 0x051f }, /* 0x0520 */ { false, 0x0520, 0x0520 }, /* 0x0521 */ { false, 0x0521, 0x0521 }, /* 0x0522 */ { false, 0x0522, 0x0522 }, /* 0x0523 */ { false, 0x0523, 0x0523 }, /* 0x0524 */ { false, 0x0524, 0x0524 }, /* 0x0525 */ { false, 0x0525, 0x0525 }, /* 0x0526 */ { false, 0x0526, 0x0526 }, /* 0x0527 */ { false, 0x0527, 0x0527 }, /* 0x0528 */ { false, 0x0528, 0x0528 }, /* 0x0529 */ { false, 0x0529, 0x0529 }, /* 0x052a */ { false, 0x052a, 0x052a }, /* 0x052b */ { false, 0x052b, 0x052b }, /* 0x052c */ { false, 0x052c, 0x052c }, /* 0x052d */ { false, 0x052d, 0x052d }, /* 0x052e */ { false, 0x052e, 0x052e }, /* 0x052f */ { false, 0x052f, 0x052f }, /* 0x0530 */ { false, 0x0530, 0x0530 }, /* 0x0531 */ { true, 0x0531, 0x0561 }, /* 0x0532 */ { true, 0x0532, 0x0562 }, /* 0x0533 */ { true, 0x0533, 0x0563 }, /* 0x0534 */ { true, 0x0534, 0x0564 }, /* 0x0535 */ { true, 0x0535, 0x0565 }, /* 0x0536 */ { true, 0x0536, 0x0566 }, /* 0x0537 */ { true, 0x0537, 0x0567 }, /* 0x0538 */ { true, 0x0538, 0x0568 }, /* 0x0539 */ { true, 0x0539, 0x0569 }, /* 0x053a */ { true, 0x053a, 0x056a }, /* 0x053b */ { true, 0x053b, 0x056b }, /* 0x053c */ { true, 0x053c, 0x056c }, /* 0x053d */ { true, 0x053d, 0x056d }, /* 0x053e */ { true, 0x053e, 0x056e }, /* 0x053f */ { true, 0x053f, 0x056f }, /* 0x0540 */ { true, 0x0540, 0x0570 }, /* 0x0541 */ { true, 0x0541, 0x0571 }, /* 0x0542 */ { true, 0x0542, 0x0572 }, /* 0x0543 */ { true, 0x0543, 0x0573 }, /* 0x0544 */ { true, 0x0544, 0x0574 }, /* 0x0545 */ { true, 0x0545, 0x0575 }, /* 0x0546 */ { true, 0x0546, 0x0576 }, /* 0x0547 */ { true, 0x0547, 0x0577 }, /* 0x0548 */ { true, 0x0548, 0x0578 }, /* 0x0549 */ { true, 0x0549, 0x0579 }, /* 0x054a */ { true, 0x054a, 0x057a }, /* 0x054b */ { true, 0x054b, 0x057b }, /* 0x054c */ { true, 0x054c, 0x057c }, /* 0x054d */ { true, 0x054d, 0x057d }, /* 0x054e */ { true, 0x054e, 0x057e }, /* 0x054f */ { true, 0x054f, 0x057f }, /* 0x0550 */ { true, 0x0550, 0x0580 }, /* 0x0551 */ { true, 0x0551, 0x0581 }, /* 0x0552 */ { true, 0x0552, 0x0582 }, /* 0x0553 */ { true, 0x0553, 0x0583 }, /* 0x0554 */ { true, 0x0554, 0x0584 }, /* 0x0555 */ { true, 0x0555, 0x0585 }, /* 0x0556 */ { true, 0x0556, 0x0586 }, /* 0x0557 */ { false, 0x0557, 0x0557 }, /* 0x0558 */ { false, 0x0558, 0x0558 }, /* 0x0559 */ { true, 0x0559, 0x0559 }, /* 0x055a */ { false, 0x055a, 0x055a }, /* 0x055b */ { false, 0x055b, 0x055b }, /* 0x055c */ { false, 0x055c, 0x055c }, /* 0x055d */ { false, 0x055d, 0x055d }, /* 0x055e */ { false, 0x055e, 0x055e }, /* 0x055f */ { false, 0x055f, 0x055f }, /* 0x0560 */ { false, 0x0560, 0x0560 }, /* 0x0561 */ { true, 0x0531, 0x0561 }, /* 0x0562 */ { true, 0x0532, 0x0562 }, /* 0x0563 */ { true, 0x0533, 0x0563 }, /* 0x0564 */ { true, 0x0534, 0x0564 }, /* 0x0565 */ { true, 0x0535, 0x0565 }, /* 0x0566 */ { true, 0x0536, 0x0566 }, /* 0x0567 */ { true, 0x0537, 0x0567 }, /* 0x0568 */ { true, 0x0538, 0x0568 }, /* 0x0569 */ { true, 0x0539, 0x0569 }, /* 0x056a */ { true, 0x053a, 0x056a }, /* 0x056b */ { true, 0x053b, 0x056b }, /* 0x056c */ { true, 0x053c, 0x056c }, /* 0x056d */ { true, 0x053d, 0x056d }, /* 0x056e */ { true, 0x053e, 0x056e }, /* 0x056f */ { true, 0x053f, 0x056f }, /* 0x0570 */ { true, 0x0540, 0x0570 }, /* 0x0571 */ { true, 0x0541, 0x0571 }, /* 0x0572 */ { true, 0x0542, 0x0572 }, /* 0x0573 */ { true, 0x0543, 0x0573 }, /* 0x0574 */ { true, 0x0544, 0x0574 }, /* 0x0575 */ { true, 0x0545, 0x0575 }, /* 0x0576 */ { true, 0x0546, 0x0576 }, /* 0x0577 */ { true, 0x0547, 0x0577 }, /* 0x0578 */ { true, 0x0548, 0x0578 }, /* 0x0579 */ { true, 0x0549, 0x0579 }, /* 0x057a */ { true, 0x054a, 0x057a }, /* 0x057b */ { true, 0x054b, 0x057b }, /* 0x057c */ { true, 0x054c, 0x057c }, /* 0x057d */ { true, 0x054d, 0x057d }, /* 0x057e */ { true, 0x054e, 0x057e }, /* 0x057f */ { true, 0x054f, 0x057f }, /* 0x0580 */ { true, 0x0550, 0x0580 }, /* 0x0581 */ { true, 0x0551, 0x0581 }, /* 0x0582 */ { true, 0x0552, 0x0582 }, /* 0x0583 */ { true, 0x0553, 0x0583 }, /* 0x0584 */ { true, 0x0554, 0x0584 }, /* 0x0585 */ { true, 0x0555, 0x0585 }, /* 0x0586 */ { true, 0x0556, 0x0586 }, /* 0x0587 */ { true, 0x0587, 0x0587 }, /* 0x0588 */ { false, 0x0588, 0x0588 }, /* 0x0589 */ { false, 0x0589, 0x0589 }, /* 0x058a */ { false, 0x058a, 0x058a }, /* 0x058b */ { false, 0x058b, 0x058b }, /* 0x058c */ { false, 0x058c, 0x058c }, /* 0x058d */ { false, 0x058d, 0x058d }, /* 0x058e */ { false, 0x058e, 0x058e }, /* 0x058f */ { false, 0x058f, 0x058f }, /* 0x0590 */ { false, 0x0590, 0x0590 }, /* 0x0591 */ { true, 0x0591, 0x0591 }, /* 0x0592 */ { true, 0x0592, 0x0592 }, /* 0x0593 */ { true, 0x0593, 0x0593 }, /* 0x0594 */ { true, 0x0594, 0x0594 }, /* 0x0595 */ { true, 0x0595, 0x0595 }, /* 0x0596 */ { true, 0x0596, 0x0596 }, /* 0x0597 */ { true, 0x0597, 0x0597 }, /* 0x0598 */ { true, 0x0598, 0x0598 }, /* 0x0599 */ { true, 0x0599, 0x0599 }, /* 0x059a */ { true, 0x059a, 0x059a }, /* 0x059b */ { true, 0x059b, 0x059b }, /* 0x059c */ { true, 0x059c, 0x059c }, /* 0x059d */ { true, 0x059d, 0x059d }, /* 0x059e */ { true, 0x059e, 0x059e }, /* 0x059f */ { true, 0x059f, 0x059f }, /* 0x05a0 */ { true, 0x05a0, 0x05a0 }, /* 0x05a1 */ { true, 0x05a1, 0x05a1 }, /* 0x05a2 */ { true, 0x05a2, 0x05a2 }, /* 0x05a3 */ { true, 0x05a3, 0x05a3 }, /* 0x05a4 */ { true, 0x05a4, 0x05a4 }, /* 0x05a5 */ { true, 0x05a5, 0x05a5 }, /* 0x05a6 */ { true, 0x05a6, 0x05a6 }, /* 0x05a7 */ { true, 0x05a7, 0x05a7 }, /* 0x05a8 */ { true, 0x05a8, 0x05a8 }, /* 0x05a9 */ { true, 0x05a9, 0x05a9 }, /* 0x05aa */ { true, 0x05aa, 0x05aa }, /* 0x05ab */ { true, 0x05ab, 0x05ab }, /* 0x05ac */ { true, 0x05ac, 0x05ac }, /* 0x05ad */ { true, 0x05ad, 0x05ad }, /* 0x05ae */ { true, 0x05ae, 0x05ae }, /* 0x05af */ { true, 0x05af, 0x05af }, /* 0x05b0 */ { true, 0x05b0, 0x05b0 }, /* 0x05b1 */ { true, 0x05b1, 0x05b1 }, /* 0x05b2 */ { true, 0x05b2, 0x05b2 }, /* 0x05b3 */ { true, 0x05b3, 0x05b3 }, /* 0x05b4 */ { true, 0x05b4, 0x05b4 }, /* 0x05b5 */ { true, 0x05b5, 0x05b5 }, /* 0x05b6 */ { true, 0x05b6, 0x05b6 }, /* 0x05b7 */ { true, 0x05b7, 0x05b7 }, /* 0x05b8 */ { true, 0x05b8, 0x05b8 }, /* 0x05b9 */ { true, 0x05b9, 0x05b9 }, /* 0x05ba */ { false, 0x05ba, 0x05ba }, /* 0x05bb */ { true, 0x05bb, 0x05bb }, /* 0x05bc */ { true, 0x05bc, 0x05bc }, /* 0x05bd */ { true, 0x05bd, 0x05bd }, /* 0x05be */ { false, 0x05be, 0x05be }, /* 0x05bf */ { true, 0x05bf, 0x05bf }, /* 0x05c0 */ { false, 0x05c0, 0x05c0 }, /* 0x05c1 */ { true, 0x05c1, 0x05c1 }, /* 0x05c2 */ { true, 0x05c2, 0x05c2 }, /* 0x05c3 */ { false, 0x05c3, 0x05c3 }, /* 0x05c4 */ { true, 0x05c4, 0x05c4 }, /* 0x05c5 */ { true, 0x05c5, 0x05c5 }, /* 0x05c6 */ { false, 0x05c6, 0x05c6 }, /* 0x05c7 */ { true, 0x05c7, 0x05c7 }, /* 0x05c8 */ { false, 0x05c8, 0x05c8 }, /* 0x05c9 */ { false, 0x05c9, 0x05c9 }, /* 0x05ca */ { false, 0x05ca, 0x05ca }, /* 0x05cb */ { false, 0x05cb, 0x05cb }, /* 0x05cc */ { false, 0x05cc, 0x05cc }, /* 0x05cd */ { false, 0x05cd, 0x05cd }, /* 0x05ce */ { false, 0x05ce, 0x05ce }, /* 0x05cf */ { false, 0x05cf, 0x05cf }, /* 0x05d0 */ { true, 0x05d0, 0x05d0 }, /* 0x05d1 */ { true, 0x05d1, 0x05d1 }, /* 0x05d2 */ { true, 0x05d2, 0x05d2 }, /* 0x05d3 */ { true, 0x05d3, 0x05d3 }, /* 0x05d4 */ { true, 0x05d4, 0x05d4 }, /* 0x05d5 */ { true, 0x05d5, 0x05d5 }, /* 0x05d6 */ { true, 0x05d6, 0x05d6 }, /* 0x05d7 */ { true, 0x05d7, 0x05d7 }, /* 0x05d8 */ { true, 0x05d8, 0x05d8 }, /* 0x05d9 */ { true, 0x05d9, 0x05d9 }, /* 0x05da */ { true, 0x05da, 0x05da }, /* 0x05db */ { true, 0x05db, 0x05db }, /* 0x05dc */ { true, 0x05dc, 0x05dc }, /* 0x05dd */ { true, 0x05dd, 0x05dd }, /* 0x05de */ { true, 0x05de, 0x05de }, /* 0x05df */ { true, 0x05df, 0x05df }, /* 0x05e0 */ { true, 0x05e0, 0x05e0 }, /* 0x05e1 */ { true, 0x05e1, 0x05e1 }, /* 0x05e2 */ { true, 0x05e2, 0x05e2 }, /* 0x05e3 */ { true, 0x05e3, 0x05e3 }, /* 0x05e4 */ { true, 0x05e4, 0x05e4 }, /* 0x05e5 */ { true, 0x05e5, 0x05e5 }, /* 0x05e6 */ { true, 0x05e6, 0x05e6 }, /* 0x05e7 */ { true, 0x05e7, 0x05e7 }, /* 0x05e8 */ { true, 0x05e8, 0x05e8 }, /* 0x05e9 */ { true, 0x05e9, 0x05e9 }, /* 0x05ea */ { true, 0x05ea, 0x05ea }, /* 0x05eb */ { false, 0x05eb, 0x05eb }, /* 0x05ec */ { false, 0x05ec, 0x05ec }, /* 0x05ed */ { false, 0x05ed, 0x05ed }, /* 0x05ee */ { false, 0x05ee, 0x05ee }, /* 0x05ef */ { false, 0x05ef, 0x05ef }, /* 0x05f0 */ { true, 0x05f0, 0x05f0 }, /* 0x05f1 */ { true, 0x05f1, 0x05f1 }, /* 0x05f2 */ { true, 0x05f2, 0x05f2 }, /* 0x05f3 */ { false, 0x05f3, 0x05f3 }, /* 0x05f4 */ { false, 0x05f4, 0x05f4 }, /* 0x05f5 */ { false, 0x05f5, 0x05f5 }, /* 0x05f6 */ { false, 0x05f6, 0x05f6 }, /* 0x05f7 */ { false, 0x05f7, 0x05f7 }, /* 0x05f8 */ { false, 0x05f8, 0x05f8 }, /* 0x05f9 */ { false, 0x05f9, 0x05f9 }, /* 0x05fa */ { false, 0x05fa, 0x05fa }, /* 0x05fb */ { false, 0x05fb, 0x05fb }, /* 0x05fc */ { false, 0x05fc, 0x05fc }, /* 0x05fd */ { false, 0x05fd, 0x05fd }, /* 0x05fe */ { false, 0x05fe, 0x05fe }, /* 0x05ff */ { false, 0x05ff, 0x05ff }, /* 0x0600 */ { false, 0x0600, 0x0600 }, /* 0x0601 */ { false, 0x0601, 0x0601 }, /* 0x0602 */ { false, 0x0602, 0x0602 }, /* 0x0603 */ { false, 0x0603, 0x0603 }, /* 0x0604 */ { false, 0x0604, 0x0604 }, /* 0x0605 */ { false, 0x0605, 0x0605 }, /* 0x0606 */ { false, 0x0606, 0x0606 }, /* 0x0607 */ { false, 0x0607, 0x0607 }, /* 0x0608 */ { false, 0x0608, 0x0608 }, /* 0x0609 */ { false, 0x0609, 0x0609 }, /* 0x060a */ { false, 0x060a, 0x060a }, /* 0x060b */ { false, 0x060b, 0x060b }, /* 0x060c */ { false, 0x060c, 0x060c }, /* 0x060d */ { false, 0x060d, 0x060d }, /* 0x060e */ { false, 0x060e, 0x060e }, /* 0x060f */ { false, 0x060f, 0x060f }, /* 0x0610 */ { true, 0x0610, 0x0610 }, /* 0x0611 */ { true, 0x0611, 0x0611 }, /* 0x0612 */ { true, 0x0612, 0x0612 }, /* 0x0613 */ { true, 0x0613, 0x0613 }, /* 0x0614 */ { true, 0x0614, 0x0614 }, /* 0x0615 */ { true, 0x0615, 0x0615 }, /* 0x0616 */ { false, 0x0616, 0x0616 }, /* 0x0617 */ { false, 0x0617, 0x0617 }, /* 0x0618 */ { false, 0x0618, 0x0618 }, /* 0x0619 */ { false, 0x0619, 0x0619 }, /* 0x061a */ { false, 0x061a, 0x061a }, /* 0x061b */ { false, 0x061b, 0x061b }, /* 0x061c */ { false, 0x061c, 0x061c }, /* 0x061d */ { false, 0x061d, 0x061d }, /* 0x061e */ { false, 0x061e, 0x061e }, /* 0x061f */ { false, 0x061f, 0x061f }, /* 0x0620 */ { false, 0x0620, 0x0620 }, /* 0x0621 */ { true, 0x0621, 0x0621 }, /* 0x0622 */ { true, 0x0622, 0x0622 }, /* 0x0623 */ { true, 0x0623, 0x0623 }, /* 0x0624 */ { true, 0x0624, 0x0624 }, /* 0x0625 */ { true, 0x0625, 0x0625 }, /* 0x0626 */ { true, 0x0626, 0x0626 }, /* 0x0627 */ { true, 0x0627, 0x0627 }, /* 0x0628 */ { true, 0x0628, 0x0628 }, /* 0x0629 */ { true, 0x0629, 0x0629 }, /* 0x062a */ { true, 0x062a, 0x062a }, /* 0x062b */ { true, 0x062b, 0x062b }, /* 0x062c */ { true, 0x062c, 0x062c }, /* 0x062d */ { true, 0x062d, 0x062d }, /* 0x062e */ { true, 0x062e, 0x062e }, /* 0x062f */ { true, 0x062f, 0x062f }, /* 0x0630 */ { true, 0x0630, 0x0630 }, /* 0x0631 */ { true, 0x0631, 0x0631 }, /* 0x0632 */ { true, 0x0632, 0x0632 }, /* 0x0633 */ { true, 0x0633, 0x0633 }, /* 0x0634 */ { true, 0x0634, 0x0634 }, /* 0x0635 */ { true, 0x0635, 0x0635 }, /* 0x0636 */ { true, 0x0636, 0x0636 }, /* 0x0637 */ { true, 0x0637, 0x0637 }, /* 0x0638 */ { true, 0x0638, 0x0638 }, /* 0x0639 */ { true, 0x0639, 0x0639 }, /* 0x063a */ { true, 0x063a, 0x063a }, /* 0x063b */ { false, 0x063b, 0x063b }, /* 0x063c */ { false, 0x063c, 0x063c }, /* 0x063d */ { false, 0x063d, 0x063d }, /* 0x063e */ { false, 0x063e, 0x063e }, /* 0x063f */ { false, 0x063f, 0x063f }, /* 0x0640 */ { true, 0x0640, 0x0640 }, /* 0x0641 */ { true, 0x0641, 0x0641 }, /* 0x0642 */ { true, 0x0642, 0x0642 }, /* 0x0643 */ { true, 0x0643, 0x0643 }, /* 0x0644 */ { true, 0x0644, 0x0644 }, /* 0x0645 */ { true, 0x0645, 0x0645 }, /* 0x0646 */ { true, 0x0646, 0x0646 }, /* 0x0647 */ { true, 0x0647, 0x0647 }, /* 0x0648 */ { true, 0x0648, 0x0648 }, /* 0x0649 */ { true, 0x0649, 0x0649 }, /* 0x064a */ { true, 0x064a, 0x064a }, /* 0x064b */ { true, 0x064b, 0x064b }, /* 0x064c */ { true, 0x064c, 0x064c }, /* 0x064d */ { true, 0x064d, 0x064d }, /* 0x064e */ { true, 0x064e, 0x064e }, /* 0x064f */ { true, 0x064f, 0x064f }, /* 0x0650 */ { true, 0x0650, 0x0650 }, /* 0x0651 */ { true, 0x0651, 0x0651 }, /* 0x0652 */ { true, 0x0652, 0x0652 }, /* 0x0653 */ { true, 0x0653, 0x0653 }, /* 0x0654 */ { true, 0x0654, 0x0654 }, /* 0x0655 */ { true, 0x0655, 0x0655 }, /* 0x0656 */ { true, 0x0656, 0x0656 }, /* 0x0657 */ { true, 0x0657, 0x0657 }, /* 0x0658 */ { true, 0x0658, 0x0658 }, /* 0x0659 */ { true, 0x0659, 0x0659 }, /* 0x065a */ { true, 0x065a, 0x065a }, /* 0x065b */ { true, 0x065b, 0x065b }, /* 0x065c */ { true, 0x065c, 0x065c }, /* 0x065d */ { true, 0x065d, 0x065d }, /* 0x065e */ { true, 0x065e, 0x065e }, /* 0x065f */ { false, 0x065f, 0x065f }, /* 0x0660 */ { false, 0x0660, 0x0660 }, /* 0x0661 */ { false, 0x0661, 0x0661 }, /* 0x0662 */ { false, 0x0662, 0x0662 }, /* 0x0663 */ { false, 0x0663, 0x0663 }, /* 0x0664 */ { false, 0x0664, 0x0664 }, /* 0x0665 */ { false, 0x0665, 0x0665 }, /* 0x0666 */ { false, 0x0666, 0x0666 }, /* 0x0667 */ { false, 0x0667, 0x0667 }, /* 0x0668 */ { false, 0x0668, 0x0668 }, /* 0x0669 */ { false, 0x0669, 0x0669 }, /* 0x066a */ { false, 0x066a, 0x066a }, /* 0x066b */ { false, 0x066b, 0x066b }, /* 0x066c */ { false, 0x066c, 0x066c }, /* 0x066d */ { false, 0x066d, 0x066d }, /* 0x066e */ { true, 0x066e, 0x066e }, /* 0x066f */ { true, 0x066f, 0x066f }, /* 0x0670 */ { true, 0x0670, 0x0670 }, /* 0x0671 */ { true, 0x0671, 0x0671 }, /* 0x0672 */ { true, 0x0672, 0x0672 }, /* 0x0673 */ { true, 0x0673, 0x0673 }, /* 0x0674 */ { true, 0x0674, 0x0674 }, /* 0x0675 */ { true, 0x0675, 0x0675 }, /* 0x0676 */ { true, 0x0676, 0x0676 }, /* 0x0677 */ { true, 0x0677, 0x0677 }, /* 0x0678 */ { true, 0x0678, 0x0678 }, /* 0x0679 */ { true, 0x0679, 0x0679 }, /* 0x067a */ { true, 0x067a, 0x067a }, /* 0x067b */ { true, 0x067b, 0x067b }, /* 0x067c */ { true, 0x067c, 0x067c }, /* 0x067d */ { true, 0x067d, 0x067d }, /* 0x067e */ { true, 0x067e, 0x067e }, /* 0x067f */ { true, 0x067f, 0x067f }, /* 0x0680 */ { true, 0x0680, 0x0680 }, /* 0x0681 */ { true, 0x0681, 0x0681 }, /* 0x0682 */ { true, 0x0682, 0x0682 }, /* 0x0683 */ { true, 0x0683, 0x0683 }, /* 0x0684 */ { true, 0x0684, 0x0684 }, /* 0x0685 */ { true, 0x0685, 0x0685 }, /* 0x0686 */ { true, 0x0686, 0x0686 }, /* 0x0687 */ { true, 0x0687, 0x0687 }, /* 0x0688 */ { true, 0x0688, 0x0688 }, /* 0x0689 */ { true, 0x0689, 0x0689 }, /* 0x068a */ { true, 0x068a, 0x068a }, /* 0x068b */ { true, 0x068b, 0x068b }, /* 0x068c */ { true, 0x068c, 0x068c }, /* 0x068d */ { true, 0x068d, 0x068d }, /* 0x068e */ { true, 0x068e, 0x068e }, /* 0x068f */ { true, 0x068f, 0x068f }, /* 0x0690 */ { true, 0x0690, 0x0690 }, /* 0x0691 */ { true, 0x0691, 0x0691 }, /* 0x0692 */ { true, 0x0692, 0x0692 }, /* 0x0693 */ { true, 0x0693, 0x0693 }, /* 0x0694 */ { true, 0x0694, 0x0694 }, /* 0x0695 */ { true, 0x0695, 0x0695 }, /* 0x0696 */ { true, 0x0696, 0x0696 }, /* 0x0697 */ { true, 0x0697, 0x0697 }, /* 0x0698 */ { true, 0x0698, 0x0698 }, /* 0x0699 */ { true, 0x0699, 0x0699 }, /* 0x069a */ { true, 0x069a, 0x069a }, /* 0x069b */ { true, 0x069b, 0x069b }, /* 0x069c */ { true, 0x069c, 0x069c }, /* 0x069d */ { true, 0x069d, 0x069d }, /* 0x069e */ { true, 0x069e, 0x069e }, /* 0x069f */ { true, 0x069f, 0x069f }, /* 0x06a0 */ { true, 0x06a0, 0x06a0 }, /* 0x06a1 */ { true, 0x06a1, 0x06a1 }, /* 0x06a2 */ { true, 0x06a2, 0x06a2 }, /* 0x06a3 */ { true, 0x06a3, 0x06a3 }, /* 0x06a4 */ { true, 0x06a4, 0x06a4 }, /* 0x06a5 */ { true, 0x06a5, 0x06a5 }, /* 0x06a6 */ { true, 0x06a6, 0x06a6 }, /* 0x06a7 */ { true, 0x06a7, 0x06a7 }, /* 0x06a8 */ { true, 0x06a8, 0x06a8 }, /* 0x06a9 */ { true, 0x06a9, 0x06a9 }, /* 0x06aa */ { true, 0x06aa, 0x06aa }, /* 0x06ab */ { true, 0x06ab, 0x06ab }, /* 0x06ac */ { true, 0x06ac, 0x06ac }, /* 0x06ad */ { true, 0x06ad, 0x06ad }, /* 0x06ae */ { true, 0x06ae, 0x06ae }, /* 0x06af */ { true, 0x06af, 0x06af }, /* 0x06b0 */ { true, 0x06b0, 0x06b0 }, /* 0x06b1 */ { true, 0x06b1, 0x06b1 }, /* 0x06b2 */ { true, 0x06b2, 0x06b2 }, /* 0x06b3 */ { true, 0x06b3, 0x06b3 }, /* 0x06b4 */ { true, 0x06b4, 0x06b4 }, /* 0x06b5 */ { true, 0x06b5, 0x06b5 }, /* 0x06b6 */ { true, 0x06b6, 0x06b6 }, /* 0x06b7 */ { true, 0x06b7, 0x06b7 }, /* 0x06b8 */ { true, 0x06b8, 0x06b8 }, /* 0x06b9 */ { true, 0x06b9, 0x06b9 }, /* 0x06ba */ { true, 0x06ba, 0x06ba }, /* 0x06bb */ { true, 0x06bb, 0x06bb }, /* 0x06bc */ { true, 0x06bc, 0x06bc }, /* 0x06bd */ { true, 0x06bd, 0x06bd }, /* 0x06be */ { true, 0x06be, 0x06be }, /* 0x06bf */ { true, 0x06bf, 0x06bf }, /* 0x06c0 */ { true, 0x06c0, 0x06c0 }, /* 0x06c1 */ { true, 0x06c1, 0x06c1 }, /* 0x06c2 */ { true, 0x06c2, 0x06c2 }, /* 0x06c3 */ { true, 0x06c3, 0x06c3 }, /* 0x06c4 */ { true, 0x06c4, 0x06c4 }, /* 0x06c5 */ { true, 0x06c5, 0x06c5 }, /* 0x06c6 */ { true, 0x06c6, 0x06c6 }, /* 0x06c7 */ { true, 0x06c7, 0x06c7 }, /* 0x06c8 */ { true, 0x06c8, 0x06c8 }, /* 0x06c9 */ { true, 0x06c9, 0x06c9 }, /* 0x06ca */ { true, 0x06ca, 0x06ca }, /* 0x06cb */ { true, 0x06cb, 0x06cb }, /* 0x06cc */ { true, 0x06cc, 0x06cc }, /* 0x06cd */ { true, 0x06cd, 0x06cd }, /* 0x06ce */ { true, 0x06ce, 0x06ce }, /* 0x06cf */ { true, 0x06cf, 0x06cf }, /* 0x06d0 */ { true, 0x06d0, 0x06d0 }, /* 0x06d1 */ { true, 0x06d1, 0x06d1 }, /* 0x06d2 */ { true, 0x06d2, 0x06d2 }, /* 0x06d3 */ { true, 0x06d3, 0x06d3 }, /* 0x06d4 */ { false, 0x06d4, 0x06d4 }, /* 0x06d5 */ { true, 0x06d5, 0x06d5 }, /* 0x06d6 */ { true, 0x06d6, 0x06d6 }, /* 0x06d7 */ { true, 0x06d7, 0x06d7 }, /* 0x06d8 */ { true, 0x06d8, 0x06d8 }, /* 0x06d9 */ { true, 0x06d9, 0x06d9 }, /* 0x06da */ { true, 0x06da, 0x06da }, /* 0x06db */ { true, 0x06db, 0x06db }, /* 0x06dc */ { true, 0x06dc, 0x06dc }, /* 0x06dd */ { false, 0x06dd, 0x06dd }, /* 0x06de */ { false, 0x06de, 0x06de }, /* 0x06df */ { true, 0x06df, 0x06df }, /* 0x06e0 */ { true, 0x06e0, 0x06e0 }, /* 0x06e1 */ { true, 0x06e1, 0x06e1 }, /* 0x06e2 */ { true, 0x06e2, 0x06e2 }, /* 0x06e3 */ { true, 0x06e3, 0x06e3 }, /* 0x06e4 */ { true, 0x06e4, 0x06e4 }, /* 0x06e5 */ { true, 0x06e5, 0x06e5 }, /* 0x06e6 */ { true, 0x06e6, 0x06e6 }, /* 0x06e7 */ { true, 0x06e7, 0x06e7 }, /* 0x06e8 */ { true, 0x06e8, 0x06e8 }, /* 0x06e9 */ { false, 0x06e9, 0x06e9 }, /* 0x06ea */ { true, 0x06ea, 0x06ea }, /* 0x06eb */ { true, 0x06eb, 0x06eb }, /* 0x06ec */ { true, 0x06ec, 0x06ec }, /* 0x06ed */ { true, 0x06ed, 0x06ed }, /* 0x06ee */ { true, 0x06ee, 0x06ee }, /* 0x06ef */ { true, 0x06ef, 0x06ef }, /* 0x06f0 */ { false, 0x06f0, 0x06f0 }, /* 0x06f1 */ { false, 0x06f1, 0x06f1 }, /* 0x06f2 */ { false, 0x06f2, 0x06f2 }, /* 0x06f3 */ { false, 0x06f3, 0x06f3 }, /* 0x06f4 */ { false, 0x06f4, 0x06f4 }, /* 0x06f5 */ { false, 0x06f5, 0x06f5 }, /* 0x06f6 */ { false, 0x06f6, 0x06f6 }, /* 0x06f7 */ { false, 0x06f7, 0x06f7 }, /* 0x06f8 */ { false, 0x06f8, 0x06f8 }, /* 0x06f9 */ { false, 0x06f9, 0x06f9 }, /* 0x06fa */ { true, 0x06fa, 0x06fa }, /* 0x06fb */ { true, 0x06fb, 0x06fb }, /* 0x06fc */ { true, 0x06fc, 0x06fc }, /* 0x06fd */ { false, 0x06fd, 0x06fd }, /* 0x06fe */ { false, 0x06fe, 0x06fe }, /* 0x06ff */ { true, 0x06ff, 0x06ff }, /* 0x0700 */ { false, 0x0700, 0x0700 }, /* 0x0701 */ { false, 0x0701, 0x0701 }, /* 0x0702 */ { false, 0x0702, 0x0702 }, /* 0x0703 */ { false, 0x0703, 0x0703 }, /* 0x0704 */ { false, 0x0704, 0x0704 }, /* 0x0705 */ { false, 0x0705, 0x0705 }, /* 0x0706 */ { false, 0x0706, 0x0706 }, /* 0x0707 */ { false, 0x0707, 0x0707 }, /* 0x0708 */ { false, 0x0708, 0x0708 }, /* 0x0709 */ { false, 0x0709, 0x0709 }, /* 0x070a */ { false, 0x070a, 0x070a }, /* 0x070b */ { false, 0x070b, 0x070b }, /* 0x070c */ { false, 0x070c, 0x070c }, /* 0x070d */ { false, 0x070d, 0x070d }, /* 0x070e */ { false, 0x070e, 0x070e }, /* 0x070f */ { false, 0x070f, 0x070f }, /* 0x0710 */ { true, 0x0710, 0x0710 }, /* 0x0711 */ { true, 0x0711, 0x0711 }, /* 0x0712 */ { true, 0x0712, 0x0712 }, /* 0x0713 */ { true, 0x0713, 0x0713 }, /* 0x0714 */ { true, 0x0714, 0x0714 }, /* 0x0715 */ { true, 0x0715, 0x0715 }, /* 0x0716 */ { true, 0x0716, 0x0716 }, /* 0x0717 */ { true, 0x0717, 0x0717 }, /* 0x0718 */ { true, 0x0718, 0x0718 }, /* 0x0719 */ { true, 0x0719, 0x0719 }, /* 0x071a */ { true, 0x071a, 0x071a }, /* 0x071b */ { true, 0x071b, 0x071b }, /* 0x071c */ { true, 0x071c, 0x071c }, /* 0x071d */ { true, 0x071d, 0x071d }, /* 0x071e */ { true, 0x071e, 0x071e }, /* 0x071f */ { true, 0x071f, 0x071f }, /* 0x0720 */ { true, 0x0720, 0x0720 }, /* 0x0721 */ { true, 0x0721, 0x0721 }, /* 0x0722 */ { true, 0x0722, 0x0722 }, /* 0x0723 */ { true, 0x0723, 0x0723 }, /* 0x0724 */ { true, 0x0724, 0x0724 }, /* 0x0725 */ { true, 0x0725, 0x0725 }, /* 0x0726 */ { true, 0x0726, 0x0726 }, /* 0x0727 */ { true, 0x0727, 0x0727 }, /* 0x0728 */ { true, 0x0728, 0x0728 }, /* 0x0729 */ { true, 0x0729, 0x0729 }, /* 0x072a */ { true, 0x072a, 0x072a }, /* 0x072b */ { true, 0x072b, 0x072b }, /* 0x072c */ { true, 0x072c, 0x072c }, /* 0x072d */ { true, 0x072d, 0x072d }, /* 0x072e */ { true, 0x072e, 0x072e }, /* 0x072f */ { true, 0x072f, 0x072f }, /* 0x0730 */ { true, 0x0730, 0x0730 }, /* 0x0731 */ { true, 0x0731, 0x0731 }, /* 0x0732 */ { true, 0x0732, 0x0732 }, /* 0x0733 */ { true, 0x0733, 0x0733 }, /* 0x0734 */ { true, 0x0734, 0x0734 }, /* 0x0735 */ { true, 0x0735, 0x0735 }, /* 0x0736 */ { true, 0x0736, 0x0736 }, /* 0x0737 */ { true, 0x0737, 0x0737 }, /* 0x0738 */ { true, 0x0738, 0x0738 }, /* 0x0739 */ { true, 0x0739, 0x0739 }, /* 0x073a */ { true, 0x073a, 0x073a }, /* 0x073b */ { true, 0x073b, 0x073b }, /* 0x073c */ { true, 0x073c, 0x073c }, /* 0x073d */ { true, 0x073d, 0x073d }, /* 0x073e */ { true, 0x073e, 0x073e }, /* 0x073f */ { true, 0x073f, 0x073f }, /* 0x0740 */ { true, 0x0740, 0x0740 }, /* 0x0741 */ { true, 0x0741, 0x0741 }, /* 0x0742 */ { true, 0x0742, 0x0742 }, /* 0x0743 */ { true, 0x0743, 0x0743 }, /* 0x0744 */ { true, 0x0744, 0x0744 }, /* 0x0745 */ { true, 0x0745, 0x0745 }, /* 0x0746 */ { true, 0x0746, 0x0746 }, /* 0x0747 */ { true, 0x0747, 0x0747 }, /* 0x0748 */ { true, 0x0748, 0x0748 }, /* 0x0749 */ { true, 0x0749, 0x0749 }, /* 0x074a */ { true, 0x074a, 0x074a }, /* 0x074b */ { false, 0x074b, 0x074b }, /* 0x074c */ { false, 0x074c, 0x074c }, /* 0x074d */ { true, 0x074d, 0x074d }, /* 0x074e */ { true, 0x074e, 0x074e }, /* 0x074f */ { true, 0x074f, 0x074f }, /* 0x0750 */ { true, 0x0750, 0x0750 }, /* 0x0751 */ { true, 0x0751, 0x0751 }, /* 0x0752 */ { true, 0x0752, 0x0752 }, /* 0x0753 */ { true, 0x0753, 0x0753 }, /* 0x0754 */ { true, 0x0754, 0x0754 }, /* 0x0755 */ { true, 0x0755, 0x0755 }, /* 0x0756 */ { true, 0x0756, 0x0756 }, /* 0x0757 */ { true, 0x0757, 0x0757 }, /* 0x0758 */ { true, 0x0758, 0x0758 }, /* 0x0759 */ { true, 0x0759, 0x0759 }, /* 0x075a */ { true, 0x075a, 0x075a }, /* 0x075b */ { true, 0x075b, 0x075b }, /* 0x075c */ { true, 0x075c, 0x075c }, /* 0x075d */ { true, 0x075d, 0x075d }, /* 0x075e */ { true, 0x075e, 0x075e }, /* 0x075f */ { true, 0x075f, 0x075f }, /* 0x0760 */ { true, 0x0760, 0x0760 }, /* 0x0761 */ { true, 0x0761, 0x0761 }, /* 0x0762 */ { true, 0x0762, 0x0762 }, /* 0x0763 */ { true, 0x0763, 0x0763 }, /* 0x0764 */ { true, 0x0764, 0x0764 }, /* 0x0765 */ { true, 0x0765, 0x0765 }, /* 0x0766 */ { true, 0x0766, 0x0766 }, /* 0x0767 */ { true, 0x0767, 0x0767 }, /* 0x0768 */ { true, 0x0768, 0x0768 }, /* 0x0769 */ { true, 0x0769, 0x0769 }, /* 0x076a */ { true, 0x076a, 0x076a }, /* 0x076b */ { true, 0x076b, 0x076b }, /* 0x076c */ { true, 0x076c, 0x076c }, /* 0x076d */ { true, 0x076d, 0x076d }, /* 0x076e */ { false, 0x076e, 0x076e }, /* 0x076f */ { false, 0x076f, 0x076f }, /* 0x0770 */ { false, 0x0770, 0x0770 }, /* 0x0771 */ { false, 0x0771, 0x0771 }, /* 0x0772 */ { false, 0x0772, 0x0772 }, /* 0x0773 */ { false, 0x0773, 0x0773 }, /* 0x0774 */ { false, 0x0774, 0x0774 }, /* 0x0775 */ { false, 0x0775, 0x0775 }, /* 0x0776 */ { false, 0x0776, 0x0776 }, /* 0x0777 */ { false, 0x0777, 0x0777 }, /* 0x0778 */ { false, 0x0778, 0x0778 }, /* 0x0779 */ { false, 0x0779, 0x0779 }, /* 0x077a */ { false, 0x077a, 0x077a }, /* 0x077b */ { false, 0x077b, 0x077b }, /* 0x077c */ { false, 0x077c, 0x077c }, /* 0x077d */ { false, 0x077d, 0x077d }, /* 0x077e */ { false, 0x077e, 0x077e }, /* 0x077f */ { false, 0x077f, 0x077f }, /* 0x0780 */ { true, 0x0780, 0x0780 }, /* 0x0781 */ { true, 0x0781, 0x0781 }, /* 0x0782 */ { true, 0x0782, 0x0782 }, /* 0x0783 */ { true, 0x0783, 0x0783 }, /* 0x0784 */ { true, 0x0784, 0x0784 }, /* 0x0785 */ { true, 0x0785, 0x0785 }, /* 0x0786 */ { true, 0x0786, 0x0786 }, /* 0x0787 */ { true, 0x0787, 0x0787 }, /* 0x0788 */ { true, 0x0788, 0x0788 }, /* 0x0789 */ { true, 0x0789, 0x0789 }, /* 0x078a */ { true, 0x078a, 0x078a }, /* 0x078b */ { true, 0x078b, 0x078b }, /* 0x078c */ { true, 0x078c, 0x078c }, /* 0x078d */ { true, 0x078d, 0x078d }, /* 0x078e */ { true, 0x078e, 0x078e }, /* 0x078f */ { true, 0x078f, 0x078f }, /* 0x0790 */ { true, 0x0790, 0x0790 }, /* 0x0791 */ { true, 0x0791, 0x0791 }, /* 0x0792 */ { true, 0x0792, 0x0792 }, /* 0x0793 */ { true, 0x0793, 0x0793 }, /* 0x0794 */ { true, 0x0794, 0x0794 }, /* 0x0795 */ { true, 0x0795, 0x0795 }, /* 0x0796 */ { true, 0x0796, 0x0796 }, /* 0x0797 */ { true, 0x0797, 0x0797 }, /* 0x0798 */ { true, 0x0798, 0x0798 }, /* 0x0799 */ { true, 0x0799, 0x0799 }, /* 0x079a */ { true, 0x079a, 0x079a }, /* 0x079b */ { true, 0x079b, 0x079b }, /* 0x079c */ { true, 0x079c, 0x079c }, /* 0x079d */ { true, 0x079d, 0x079d }, /* 0x079e */ { true, 0x079e, 0x079e }, /* 0x079f */ { true, 0x079f, 0x079f }, /* 0x07a0 */ { true, 0x07a0, 0x07a0 }, /* 0x07a1 */ { true, 0x07a1, 0x07a1 }, /* 0x07a2 */ { true, 0x07a2, 0x07a2 }, /* 0x07a3 */ { true, 0x07a3, 0x07a3 }, /* 0x07a4 */ { true, 0x07a4, 0x07a4 }, /* 0x07a5 */ { true, 0x07a5, 0x07a5 }, /* 0x07a6 */ { true, 0x07a6, 0x07a6 }, /* 0x07a7 */ { true, 0x07a7, 0x07a7 }, /* 0x07a8 */ { true, 0x07a8, 0x07a8 }, /* 0x07a9 */ { true, 0x07a9, 0x07a9 }, /* 0x07aa */ { true, 0x07aa, 0x07aa }, /* 0x07ab */ { true, 0x07ab, 0x07ab }, /* 0x07ac */ { true, 0x07ac, 0x07ac }, /* 0x07ad */ { true, 0x07ad, 0x07ad }, /* 0x07ae */ { true, 0x07ae, 0x07ae }, /* 0x07af */ { true, 0x07af, 0x07af }, /* 0x07b0 */ { true, 0x07b0, 0x07b0 }, /* 0x07b1 */ { true, 0x07b1, 0x07b1 }, /* 0x07b2 */ { false, 0x07b2, 0x07b2 }, /* 0x07b3 */ { false, 0x07b3, 0x07b3 }, /* 0x07b4 */ { false, 0x07b4, 0x07b4 }, /* 0x07b5 */ { false, 0x07b5, 0x07b5 }, /* 0x07b6 */ { false, 0x07b6, 0x07b6 }, /* 0x07b7 */ { false, 0x07b7, 0x07b7 }, /* 0x07b8 */ { false, 0x07b8, 0x07b8 }, /* 0x07b9 */ { false, 0x07b9, 0x07b9 }, /* 0x07ba */ { false, 0x07ba, 0x07ba }, /* 0x07bb */ { false, 0x07bb, 0x07bb }, /* 0x07bc */ { false, 0x07bc, 0x07bc }, /* 0x07bd */ { false, 0x07bd, 0x07bd }, /* 0x07be */ { false, 0x07be, 0x07be }, /* 0x07bf */ { false, 0x07bf, 0x07bf }, /* 0x07c0 */ { false, 0x07c0, 0x07c0 }, /* 0x07c1 */ { false, 0x07c1, 0x07c1 }, /* 0x07c2 */ { false, 0x07c2, 0x07c2 }, /* 0x07c3 */ { false, 0x07c3, 0x07c3 }, /* 0x07c4 */ { false, 0x07c4, 0x07c4 }, /* 0x07c5 */ { false, 0x07c5, 0x07c5 }, /* 0x07c6 */ { false, 0x07c6, 0x07c6 }, /* 0x07c7 */ { false, 0x07c7, 0x07c7 }, /* 0x07c8 */ { false, 0x07c8, 0x07c8 }, /* 0x07c9 */ { false, 0x07c9, 0x07c9 }, /* 0x07ca */ { false, 0x07ca, 0x07ca }, /* 0x07cb */ { false, 0x07cb, 0x07cb }, /* 0x07cc */ { false, 0x07cc, 0x07cc }, /* 0x07cd */ { false, 0x07cd, 0x07cd }, /* 0x07ce */ { false, 0x07ce, 0x07ce }, /* 0x07cf */ { false, 0x07cf, 0x07cf }, /* 0x07d0 */ { false, 0x07d0, 0x07d0 }, /* 0x07d1 */ { false, 0x07d1, 0x07d1 }, /* 0x07d2 */ { false, 0x07d2, 0x07d2 }, /* 0x07d3 */ { false, 0x07d3, 0x07d3 }, /* 0x07d4 */ { false, 0x07d4, 0x07d4 }, /* 0x07d5 */ { false, 0x07d5, 0x07d5 }, /* 0x07d6 */ { false, 0x07d6, 0x07d6 }, /* 0x07d7 */ { false, 0x07d7, 0x07d7 }, /* 0x07d8 */ { false, 0x07d8, 0x07d8 }, /* 0x07d9 */ { false, 0x07d9, 0x07d9 }, /* 0x07da */ { false, 0x07da, 0x07da }, /* 0x07db */ { false, 0x07db, 0x07db }, /* 0x07dc */ { false, 0x07dc, 0x07dc }, /* 0x07dd */ { false, 0x07dd, 0x07dd }, /* 0x07de */ { false, 0x07de, 0x07de }, /* 0x07df */ { false, 0x07df, 0x07df }, /* 0x07e0 */ { false, 0x07e0, 0x07e0 }, /* 0x07e1 */ { false, 0x07e1, 0x07e1 }, /* 0x07e2 */ { false, 0x07e2, 0x07e2 }, /* 0x07e3 */ { false, 0x07e3, 0x07e3 }, /* 0x07e4 */ { false, 0x07e4, 0x07e4 }, /* 0x07e5 */ { false, 0x07e5, 0x07e5 }, /* 0x07e6 */ { false, 0x07e6, 0x07e6 }, /* 0x07e7 */ { false, 0x07e7, 0x07e7 }, /* 0x07e8 */ { false, 0x07e8, 0x07e8 }, /* 0x07e9 */ { false, 0x07e9, 0x07e9 }, /* 0x07ea */ { false, 0x07ea, 0x07ea }, /* 0x07eb */ { false, 0x07eb, 0x07eb }, /* 0x07ec */ { false, 0x07ec, 0x07ec }, /* 0x07ed */ { false, 0x07ed, 0x07ed }, /* 0x07ee */ { false, 0x07ee, 0x07ee }, /* 0x07ef */ { false, 0x07ef, 0x07ef }, /* 0x07f0 */ { false, 0x07f0, 0x07f0 }, /* 0x07f1 */ { false, 0x07f1, 0x07f1 }, /* 0x07f2 */ { false, 0x07f2, 0x07f2 }, /* 0x07f3 */ { false, 0x07f3, 0x07f3 }, /* 0x07f4 */ { false, 0x07f4, 0x07f4 }, /* 0x07f5 */ { false, 0x07f5, 0x07f5 }, /* 0x07f6 */ { false, 0x07f6, 0x07f6 }, /* 0x07f7 */ { false, 0x07f7, 0x07f7 }, /* 0x07f8 */ { false, 0x07f8, 0x07f8 }, /* 0x07f9 */ { false, 0x07f9, 0x07f9 }, /* 0x07fa */ { false, 0x07fa, 0x07fa }, /* 0x07fb */ { false, 0x07fb, 0x07fb }, /* 0x07fc */ { false, 0x07fc, 0x07fc }, /* 0x07fd */ { false, 0x07fd, 0x07fd }, /* 0x07fe */ { false, 0x07fe, 0x07fe }, /* 0x07ff */ { false, 0x07ff, 0x07ff }, /* 0x0800 */ { false, 0x0800, 0x0800 }, /* 0x0801 */ { false, 0x0801, 0x0801 }, /* 0x0802 */ { false, 0x0802, 0x0802 }, /* 0x0803 */ { false, 0x0803, 0x0803 }, /* 0x0804 */ { false, 0x0804, 0x0804 }, /* 0x0805 */ { false, 0x0805, 0x0805 }, /* 0x0806 */ { false, 0x0806, 0x0806 }, /* 0x0807 */ { false, 0x0807, 0x0807 }, /* 0x0808 */ { false, 0x0808, 0x0808 }, /* 0x0809 */ { false, 0x0809, 0x0809 }, /* 0x080a */ { false, 0x080a, 0x080a }, /* 0x080b */ { false, 0x080b, 0x080b }, /* 0x080c */ { false, 0x080c, 0x080c }, /* 0x080d */ { false, 0x080d, 0x080d }, /* 0x080e */ { false, 0x080e, 0x080e }, /* 0x080f */ { false, 0x080f, 0x080f }, /* 0x0810 */ { false, 0x0810, 0x0810 }, /* 0x0811 */ { false, 0x0811, 0x0811 }, /* 0x0812 */ { false, 0x0812, 0x0812 }, /* 0x0813 */ { false, 0x0813, 0x0813 }, /* 0x0814 */ { false, 0x0814, 0x0814 }, /* 0x0815 */ { false, 0x0815, 0x0815 }, /* 0x0816 */ { false, 0x0816, 0x0816 }, /* 0x0817 */ { false, 0x0817, 0x0817 }, /* 0x0818 */ { false, 0x0818, 0x0818 }, /* 0x0819 */ { false, 0x0819, 0x0819 }, /* 0x081a */ { false, 0x081a, 0x081a }, /* 0x081b */ { false, 0x081b, 0x081b }, /* 0x081c */ { false, 0x081c, 0x081c }, /* 0x081d */ { false, 0x081d, 0x081d }, /* 0x081e */ { false, 0x081e, 0x081e }, /* 0x081f */ { false, 0x081f, 0x081f }, /* 0x0820 */ { false, 0x0820, 0x0820 }, /* 0x0821 */ { false, 0x0821, 0x0821 }, /* 0x0822 */ { false, 0x0822, 0x0822 }, /* 0x0823 */ { false, 0x0823, 0x0823 }, /* 0x0824 */ { false, 0x0824, 0x0824 }, /* 0x0825 */ { false, 0x0825, 0x0825 }, /* 0x0826 */ { false, 0x0826, 0x0826 }, /* 0x0827 */ { false, 0x0827, 0x0827 }, /* 0x0828 */ { false, 0x0828, 0x0828 }, /* 0x0829 */ { false, 0x0829, 0x0829 }, /* 0x082a */ { false, 0x082a, 0x082a }, /* 0x082b */ { false, 0x082b, 0x082b }, /* 0x082c */ { false, 0x082c, 0x082c }, /* 0x082d */ { false, 0x082d, 0x082d }, /* 0x082e */ { false, 0x082e, 0x082e }, /* 0x082f */ { false, 0x082f, 0x082f }, /* 0x0830 */ { false, 0x0830, 0x0830 }, /* 0x0831 */ { false, 0x0831, 0x0831 }, /* 0x0832 */ { false, 0x0832, 0x0832 }, /* 0x0833 */ { false, 0x0833, 0x0833 }, /* 0x0834 */ { false, 0x0834, 0x0834 }, /* 0x0835 */ { false, 0x0835, 0x0835 }, /* 0x0836 */ { false, 0x0836, 0x0836 }, /* 0x0837 */ { false, 0x0837, 0x0837 }, /* 0x0838 */ { false, 0x0838, 0x0838 }, /* 0x0839 */ { false, 0x0839, 0x0839 }, /* 0x083a */ { false, 0x083a, 0x083a }, /* 0x083b */ { false, 0x083b, 0x083b }, /* 0x083c */ { false, 0x083c, 0x083c }, /* 0x083d */ { false, 0x083d, 0x083d }, /* 0x083e */ { false, 0x083e, 0x083e }, /* 0x083f */ { false, 0x083f, 0x083f }, /* 0x0840 */ { false, 0x0840, 0x0840 }, /* 0x0841 */ { false, 0x0841, 0x0841 }, /* 0x0842 */ { false, 0x0842, 0x0842 }, /* 0x0843 */ { false, 0x0843, 0x0843 }, /* 0x0844 */ { false, 0x0844, 0x0844 }, /* 0x0845 */ { false, 0x0845, 0x0845 }, /* 0x0846 */ { false, 0x0846, 0x0846 }, /* 0x0847 */ { false, 0x0847, 0x0847 }, /* 0x0848 */ { false, 0x0848, 0x0848 }, /* 0x0849 */ { false, 0x0849, 0x0849 }, /* 0x084a */ { false, 0x084a, 0x084a }, /* 0x084b */ { false, 0x084b, 0x084b }, /* 0x084c */ { false, 0x084c, 0x084c }, /* 0x084d */ { false, 0x084d, 0x084d }, /* 0x084e */ { false, 0x084e, 0x084e }, /* 0x084f */ { false, 0x084f, 0x084f }, /* 0x0850 */ { false, 0x0850, 0x0850 }, /* 0x0851 */ { false, 0x0851, 0x0851 }, /* 0x0852 */ { false, 0x0852, 0x0852 }, /* 0x0853 */ { false, 0x0853, 0x0853 }, /* 0x0854 */ { false, 0x0854, 0x0854 }, /* 0x0855 */ { false, 0x0855, 0x0855 }, /* 0x0856 */ { false, 0x0856, 0x0856 }, /* 0x0857 */ { false, 0x0857, 0x0857 }, /* 0x0858 */ { false, 0x0858, 0x0858 }, /* 0x0859 */ { false, 0x0859, 0x0859 }, /* 0x085a */ { false, 0x085a, 0x085a }, /* 0x085b */ { false, 0x085b, 0x085b }, /* 0x085c */ { false, 0x085c, 0x085c }, /* 0x085d */ { false, 0x085d, 0x085d }, /* 0x085e */ { false, 0x085e, 0x085e }, /* 0x085f */ { false, 0x085f, 0x085f }, /* 0x0860 */ { false, 0x0860, 0x0860 }, /* 0x0861 */ { false, 0x0861, 0x0861 }, /* 0x0862 */ { false, 0x0862, 0x0862 }, /* 0x0863 */ { false, 0x0863, 0x0863 }, /* 0x0864 */ { false, 0x0864, 0x0864 }, /* 0x0865 */ { false, 0x0865, 0x0865 }, /* 0x0866 */ { false, 0x0866, 0x0866 }, /* 0x0867 */ { false, 0x0867, 0x0867 }, /* 0x0868 */ { false, 0x0868, 0x0868 }, /* 0x0869 */ { false, 0x0869, 0x0869 }, /* 0x086a */ { false, 0x086a, 0x086a }, /* 0x086b */ { false, 0x086b, 0x086b }, /* 0x086c */ { false, 0x086c, 0x086c }, /* 0x086d */ { false, 0x086d, 0x086d }, /* 0x086e */ { false, 0x086e, 0x086e }, /* 0x086f */ { false, 0x086f, 0x086f }, /* 0x0870 */ { false, 0x0870, 0x0870 }, /* 0x0871 */ { false, 0x0871, 0x0871 }, /* 0x0872 */ { false, 0x0872, 0x0872 }, /* 0x0873 */ { false, 0x0873, 0x0873 }, /* 0x0874 */ { false, 0x0874, 0x0874 }, /* 0x0875 */ { false, 0x0875, 0x0875 }, /* 0x0876 */ { false, 0x0876, 0x0876 }, /* 0x0877 */ { false, 0x0877, 0x0877 }, /* 0x0878 */ { false, 0x0878, 0x0878 }, /* 0x0879 */ { false, 0x0879, 0x0879 }, /* 0x087a */ { false, 0x087a, 0x087a }, /* 0x087b */ { false, 0x087b, 0x087b }, /* 0x087c */ { false, 0x087c, 0x087c }, /* 0x087d */ { false, 0x087d, 0x087d }, /* 0x087e */ { false, 0x087e, 0x087e }, /* 0x087f */ { false, 0x087f, 0x087f }, /* 0x0880 */ { false, 0x0880, 0x0880 }, /* 0x0881 */ { false, 0x0881, 0x0881 }, /* 0x0882 */ { false, 0x0882, 0x0882 }, /* 0x0883 */ { false, 0x0883, 0x0883 }, /* 0x0884 */ { false, 0x0884, 0x0884 }, /* 0x0885 */ { false, 0x0885, 0x0885 }, /* 0x0886 */ { false, 0x0886, 0x0886 }, /* 0x0887 */ { false, 0x0887, 0x0887 }, /* 0x0888 */ { false, 0x0888, 0x0888 }, /* 0x0889 */ { false, 0x0889, 0x0889 }, /* 0x088a */ { false, 0x088a, 0x088a }, /* 0x088b */ { false, 0x088b, 0x088b }, /* 0x088c */ { false, 0x088c, 0x088c }, /* 0x088d */ { false, 0x088d, 0x088d }, /* 0x088e */ { false, 0x088e, 0x088e }, /* 0x088f */ { false, 0x088f, 0x088f }, /* 0x0890 */ { false, 0x0890, 0x0890 }, /* 0x0891 */ { false, 0x0891, 0x0891 }, /* 0x0892 */ { false, 0x0892, 0x0892 }, /* 0x0893 */ { false, 0x0893, 0x0893 }, /* 0x0894 */ { false, 0x0894, 0x0894 }, /* 0x0895 */ { false, 0x0895, 0x0895 }, /* 0x0896 */ { false, 0x0896, 0x0896 }, /* 0x0897 */ { false, 0x0897, 0x0897 }, /* 0x0898 */ { false, 0x0898, 0x0898 }, /* 0x0899 */ { false, 0x0899, 0x0899 }, /* 0x089a */ { false, 0x089a, 0x089a }, /* 0x089b */ { false, 0x089b, 0x089b }, /* 0x089c */ { false, 0x089c, 0x089c }, /* 0x089d */ { false, 0x089d, 0x089d }, /* 0x089e */ { false, 0x089e, 0x089e }, /* 0x089f */ { false, 0x089f, 0x089f }, /* 0x08a0 */ { false, 0x08a0, 0x08a0 }, /* 0x08a1 */ { false, 0x08a1, 0x08a1 }, /* 0x08a2 */ { false, 0x08a2, 0x08a2 }, /* 0x08a3 */ { false, 0x08a3, 0x08a3 }, /* 0x08a4 */ { false, 0x08a4, 0x08a4 }, /* 0x08a5 */ { false, 0x08a5, 0x08a5 }, /* 0x08a6 */ { false, 0x08a6, 0x08a6 }, /* 0x08a7 */ { false, 0x08a7, 0x08a7 }, /* 0x08a8 */ { false, 0x08a8, 0x08a8 }, /* 0x08a9 */ { false, 0x08a9, 0x08a9 }, /* 0x08aa */ { false, 0x08aa, 0x08aa }, /* 0x08ab */ { false, 0x08ab, 0x08ab }, /* 0x08ac */ { false, 0x08ac, 0x08ac }, /* 0x08ad */ { false, 0x08ad, 0x08ad }, /* 0x08ae */ { false, 0x08ae, 0x08ae }, /* 0x08af */ { false, 0x08af, 0x08af }, /* 0x08b0 */ { false, 0x08b0, 0x08b0 }, /* 0x08b1 */ { false, 0x08b1, 0x08b1 }, /* 0x08b2 */ { false, 0x08b2, 0x08b2 }, /* 0x08b3 */ { false, 0x08b3, 0x08b3 }, /* 0x08b4 */ { false, 0x08b4, 0x08b4 }, /* 0x08b5 */ { false, 0x08b5, 0x08b5 }, /* 0x08b6 */ { false, 0x08b6, 0x08b6 }, /* 0x08b7 */ { false, 0x08b7, 0x08b7 }, /* 0x08b8 */ { false, 0x08b8, 0x08b8 }, /* 0x08b9 */ { false, 0x08b9, 0x08b9 }, /* 0x08ba */ { false, 0x08ba, 0x08ba }, /* 0x08bb */ { false, 0x08bb, 0x08bb }, /* 0x08bc */ { false, 0x08bc, 0x08bc }, /* 0x08bd */ { false, 0x08bd, 0x08bd }, /* 0x08be */ { false, 0x08be, 0x08be }, /* 0x08bf */ { false, 0x08bf, 0x08bf }, /* 0x08c0 */ { false, 0x08c0, 0x08c0 }, /* 0x08c1 */ { false, 0x08c1, 0x08c1 }, /* 0x08c2 */ { false, 0x08c2, 0x08c2 }, /* 0x08c3 */ { false, 0x08c3, 0x08c3 }, /* 0x08c4 */ { false, 0x08c4, 0x08c4 }, /* 0x08c5 */ { false, 0x08c5, 0x08c5 }, /* 0x08c6 */ { false, 0x08c6, 0x08c6 }, /* 0x08c7 */ { false, 0x08c7, 0x08c7 }, /* 0x08c8 */ { false, 0x08c8, 0x08c8 }, /* 0x08c9 */ { false, 0x08c9, 0x08c9 }, /* 0x08ca */ { false, 0x08ca, 0x08ca }, /* 0x08cb */ { false, 0x08cb, 0x08cb }, /* 0x08cc */ { false, 0x08cc, 0x08cc }, /* 0x08cd */ { false, 0x08cd, 0x08cd }, /* 0x08ce */ { false, 0x08ce, 0x08ce }, /* 0x08cf */ { false, 0x08cf, 0x08cf }, /* 0x08d0 */ { false, 0x08d0, 0x08d0 }, /* 0x08d1 */ { false, 0x08d1, 0x08d1 }, /* 0x08d2 */ { false, 0x08d2, 0x08d2 }, /* 0x08d3 */ { false, 0x08d3, 0x08d3 }, /* 0x08d4 */ { false, 0x08d4, 0x08d4 }, /* 0x08d5 */ { false, 0x08d5, 0x08d5 }, /* 0x08d6 */ { false, 0x08d6, 0x08d6 }, /* 0x08d7 */ { false, 0x08d7, 0x08d7 }, /* 0x08d8 */ { false, 0x08d8, 0x08d8 }, /* 0x08d9 */ { false, 0x08d9, 0x08d9 }, /* 0x08da */ { false, 0x08da, 0x08da }, /* 0x08db */ { false, 0x08db, 0x08db }, /* 0x08dc */ { false, 0x08dc, 0x08dc }, /* 0x08dd */ { false, 0x08dd, 0x08dd }, /* 0x08de */ { false, 0x08de, 0x08de }, /* 0x08df */ { false, 0x08df, 0x08df }, /* 0x08e0 */ { false, 0x08e0, 0x08e0 }, /* 0x08e1 */ { false, 0x08e1, 0x08e1 }, /* 0x08e2 */ { false, 0x08e2, 0x08e2 }, /* 0x08e3 */ { false, 0x08e3, 0x08e3 }, /* 0x08e4 */ { false, 0x08e4, 0x08e4 }, /* 0x08e5 */ { false, 0x08e5, 0x08e5 }, /* 0x08e6 */ { false, 0x08e6, 0x08e6 }, /* 0x08e7 */ { false, 0x08e7, 0x08e7 }, /* 0x08e8 */ { false, 0x08e8, 0x08e8 }, /* 0x08e9 */ { false, 0x08e9, 0x08e9 }, /* 0x08ea */ { false, 0x08ea, 0x08ea }, /* 0x08eb */ { false, 0x08eb, 0x08eb }, /* 0x08ec */ { false, 0x08ec, 0x08ec }, /* 0x08ed */ { false, 0x08ed, 0x08ed }, /* 0x08ee */ { false, 0x08ee, 0x08ee }, /* 0x08ef */ { false, 0x08ef, 0x08ef }, /* 0x08f0 */ { false, 0x08f0, 0x08f0 }, /* 0x08f1 */ { false, 0x08f1, 0x08f1 }, /* 0x08f2 */ { false, 0x08f2, 0x08f2 }, /* 0x08f3 */ { false, 0x08f3, 0x08f3 }, /* 0x08f4 */ { false, 0x08f4, 0x08f4 }, /* 0x08f5 */ { false, 0x08f5, 0x08f5 }, /* 0x08f6 */ { false, 0x08f6, 0x08f6 }, /* 0x08f7 */ { false, 0x08f7, 0x08f7 }, /* 0x08f8 */ { false, 0x08f8, 0x08f8 }, /* 0x08f9 */ { false, 0x08f9, 0x08f9 }, /* 0x08fa */ { false, 0x08fa, 0x08fa }, /* 0x08fb */ { false, 0x08fb, 0x08fb }, /* 0x08fc */ { false, 0x08fc, 0x08fc }, /* 0x08fd */ { false, 0x08fd, 0x08fd }, /* 0x08fe */ { false, 0x08fe, 0x08fe }, /* 0x08ff */ { false, 0x08ff, 0x08ff }, /* 0x0900 */ { false, 0x0900, 0x0900 }, /* 0x0901 */ { true, 0x0901, 0x0901 }, /* 0x0902 */ { true, 0x0902, 0x0902 }, /* 0x0903 */ { false, 0x0903, 0x0903 }, /* 0x0904 */ { true, 0x0904, 0x0904 }, /* 0x0905 */ { true, 0x0905, 0x0905 }, /* 0x0906 */ { true, 0x0906, 0x0906 }, /* 0x0907 */ { true, 0x0907, 0x0907 }, /* 0x0908 */ { true, 0x0908, 0x0908 }, /* 0x0909 */ { true, 0x0909, 0x0909 }, /* 0x090a */ { true, 0x090a, 0x090a }, /* 0x090b */ { true, 0x090b, 0x090b }, /* 0x090c */ { true, 0x090c, 0x090c }, /* 0x090d */ { true, 0x090d, 0x090d }, /* 0x090e */ { true, 0x090e, 0x090e }, /* 0x090f */ { true, 0x090f, 0x090f }, /* 0x0910 */ { true, 0x0910, 0x0910 }, /* 0x0911 */ { true, 0x0911, 0x0911 }, /* 0x0912 */ { true, 0x0912, 0x0912 }, /* 0x0913 */ { true, 0x0913, 0x0913 }, /* 0x0914 */ { true, 0x0914, 0x0914 }, /* 0x0915 */ { true, 0x0915, 0x0915 }, /* 0x0916 */ { true, 0x0916, 0x0916 }, /* 0x0917 */ { true, 0x0917, 0x0917 }, /* 0x0918 */ { true, 0x0918, 0x0918 }, /* 0x0919 */ { true, 0x0919, 0x0919 }, /* 0x091a */ { true, 0x091a, 0x091a }, /* 0x091b */ { true, 0x091b, 0x091b }, /* 0x091c */ { true, 0x091c, 0x091c }, /* 0x091d */ { true, 0x091d, 0x091d }, /* 0x091e */ { true, 0x091e, 0x091e }, /* 0x091f */ { true, 0x091f, 0x091f }, /* 0x0920 */ { true, 0x0920, 0x0920 }, /* 0x0921 */ { true, 0x0921, 0x0921 }, /* 0x0922 */ { true, 0x0922, 0x0922 }, /* 0x0923 */ { true, 0x0923, 0x0923 }, /* 0x0924 */ { true, 0x0924, 0x0924 }, /* 0x0925 */ { true, 0x0925, 0x0925 }, /* 0x0926 */ { true, 0x0926, 0x0926 }, /* 0x0927 */ { true, 0x0927, 0x0927 }, /* 0x0928 */ { true, 0x0928, 0x0928 }, /* 0x0929 */ { true, 0x0929, 0x0929 }, /* 0x092a */ { true, 0x092a, 0x092a }, /* 0x092b */ { true, 0x092b, 0x092b }, /* 0x092c */ { true, 0x092c, 0x092c }, /* 0x092d */ { true, 0x092d, 0x092d }, /* 0x092e */ { true, 0x092e, 0x092e }, /* 0x092f */ { true, 0x092f, 0x092f }, /* 0x0930 */ { true, 0x0930, 0x0930 }, /* 0x0931 */ { true, 0x0931, 0x0931 }, /* 0x0932 */ { true, 0x0932, 0x0932 }, /* 0x0933 */ { true, 0x0933, 0x0933 }, /* 0x0934 */ { true, 0x0934, 0x0934 }, /* 0x0935 */ { true, 0x0935, 0x0935 }, /* 0x0936 */ { true, 0x0936, 0x0936 }, /* 0x0937 */ { true, 0x0937, 0x0937 }, /* 0x0938 */ { true, 0x0938, 0x0938 }, /* 0x0939 */ { true, 0x0939, 0x0939 }, /* 0x093a */ { false, 0x093a, 0x093a }, /* 0x093b */ { false, 0x093b, 0x093b }, /* 0x093c */ { true, 0x093c, 0x093c }, /* 0x093d */ { true, 0x093d, 0x093d }, /* 0x093e */ { false, 0x093e, 0x093e }, /* 0x093f */ { false, 0x093f, 0x093f }, /* 0x0940 */ { false, 0x0940, 0x0940 }, /* 0x0941 */ { true, 0x0941, 0x0941 }, /* 0x0942 */ { true, 0x0942, 0x0942 }, /* 0x0943 */ { true, 0x0943, 0x0943 }, /* 0x0944 */ { true, 0x0944, 0x0944 }, /* 0x0945 */ { true, 0x0945, 0x0945 }, /* 0x0946 */ { true, 0x0946, 0x0946 }, /* 0x0947 */ { true, 0x0947, 0x0947 }, /* 0x0948 */ { true, 0x0948, 0x0948 }, /* 0x0949 */ { false, 0x0949, 0x0949 }, /* 0x094a */ { false, 0x094a, 0x094a }, /* 0x094b */ { false, 0x094b, 0x094b }, /* 0x094c */ { false, 0x094c, 0x094c }, /* 0x094d */ { true, 0x094d, 0x094d }, /* 0x094e */ { false, 0x094e, 0x094e }, /* 0x094f */ { false, 0x094f, 0x094f }, /* 0x0950 */ { true, 0x0950, 0x0950 }, /* 0x0951 */ { true, 0x0951, 0x0951 }, /* 0x0952 */ { true, 0x0952, 0x0952 }, /* 0x0953 */ { true, 0x0953, 0x0953 }, /* 0x0954 */ { true, 0x0954, 0x0954 }, /* 0x0955 */ { false, 0x0955, 0x0955 }, /* 0x0956 */ { false, 0x0956, 0x0956 }, /* 0x0957 */ { false, 0x0957, 0x0957 }, /* 0x0958 */ { true, 0x0958, 0x0958 }, /* 0x0959 */ { true, 0x0959, 0x0959 }, /* 0x095a */ { true, 0x095a, 0x095a }, /* 0x095b */ { true, 0x095b, 0x095b }, /* 0x095c */ { true, 0x095c, 0x095c }, /* 0x095d */ { true, 0x095d, 0x095d }, /* 0x095e */ { true, 0x095e, 0x095e }, /* 0x095f */ { true, 0x095f, 0x095f }, /* 0x0960 */ { true, 0x0960, 0x0960 }, /* 0x0961 */ { true, 0x0961, 0x0961 }, /* 0x0962 */ { true, 0x0962, 0x0962 }, /* 0x0963 */ { true, 0x0963, 0x0963 }, /* 0x0964 */ { false, 0x0964, 0x0964 }, /* 0x0965 */ { false, 0x0965, 0x0965 }, /* 0x0966 */ { false, 0x0966, 0x0966 }, /* 0x0967 */ { false, 0x0967, 0x0967 }, /* 0x0968 */ { false, 0x0968, 0x0968 }, /* 0x0969 */ { false, 0x0969, 0x0969 }, /* 0x096a */ { false, 0x096a, 0x096a }, /* 0x096b */ { false, 0x096b, 0x096b }, /* 0x096c */ { false, 0x096c, 0x096c }, /* 0x096d */ { false, 0x096d, 0x096d }, /* 0x096e */ { false, 0x096e, 0x096e }, /* 0x096f */ { false, 0x096f, 0x096f }, /* 0x0970 */ { false, 0x0970, 0x0970 }, /* 0x0971 */ { false, 0x0971, 0x0971 }, /* 0x0972 */ { false, 0x0972, 0x0972 }, /* 0x0973 */ { false, 0x0973, 0x0973 }, /* 0x0974 */ { false, 0x0974, 0x0974 }, /* 0x0975 */ { false, 0x0975, 0x0975 }, /* 0x0976 */ { false, 0x0976, 0x0976 }, /* 0x0977 */ { false, 0x0977, 0x0977 }, /* 0x0978 */ { false, 0x0978, 0x0978 }, /* 0x0979 */ { false, 0x0979, 0x0979 }, /* 0x097a */ { false, 0x097a, 0x097a }, /* 0x097b */ { false, 0x097b, 0x097b }, /* 0x097c */ { false, 0x097c, 0x097c }, /* 0x097d */ { true, 0x097d, 0x097d }, /* 0x097e */ { false, 0x097e, 0x097e }, /* 0x097f */ { false, 0x097f, 0x097f }, /* 0x0980 */ { false, 0x0980, 0x0980 }, /* 0x0981 */ { true, 0x0981, 0x0981 }, /* 0x0982 */ { false, 0x0982, 0x0982 }, /* 0x0983 */ { false, 0x0983, 0x0983 }, /* 0x0984 */ { false, 0x0984, 0x0984 }, /* 0x0985 */ { true, 0x0985, 0x0985 }, /* 0x0986 */ { true, 0x0986, 0x0986 }, /* 0x0987 */ { true, 0x0987, 0x0987 }, /* 0x0988 */ { true, 0x0988, 0x0988 }, /* 0x0989 */ { true, 0x0989, 0x0989 }, /* 0x098a */ { true, 0x098a, 0x098a }, /* 0x098b */ { true, 0x098b, 0x098b }, /* 0x098c */ { true, 0x098c, 0x098c }, /* 0x098d */ { false, 0x098d, 0x098d }, /* 0x098e */ { false, 0x098e, 0x098e }, /* 0x098f */ { true, 0x098f, 0x098f }, /* 0x0990 */ { true, 0x0990, 0x0990 }, /* 0x0991 */ { false, 0x0991, 0x0991 }, /* 0x0992 */ { false, 0x0992, 0x0992 }, /* 0x0993 */ { true, 0x0993, 0x0993 }, /* 0x0994 */ { true, 0x0994, 0x0994 }, /* 0x0995 */ { true, 0x0995, 0x0995 }, /* 0x0996 */ { true, 0x0996, 0x0996 }, /* 0x0997 */ { true, 0x0997, 0x0997 }, /* 0x0998 */ { true, 0x0998, 0x0998 }, /* 0x0999 */ { true, 0x0999, 0x0999 }, /* 0x099a */ { true, 0x099a, 0x099a }, /* 0x099b */ { true, 0x099b, 0x099b }, /* 0x099c */ { true, 0x099c, 0x099c }, /* 0x099d */ { true, 0x099d, 0x099d }, /* 0x099e */ { true, 0x099e, 0x099e }, /* 0x099f */ { true, 0x099f, 0x099f }, /* 0x09a0 */ { true, 0x09a0, 0x09a0 }, /* 0x09a1 */ { true, 0x09a1, 0x09a1 }, /* 0x09a2 */ { true, 0x09a2, 0x09a2 }, /* 0x09a3 */ { true, 0x09a3, 0x09a3 }, /* 0x09a4 */ { true, 0x09a4, 0x09a4 }, /* 0x09a5 */ { true, 0x09a5, 0x09a5 }, /* 0x09a6 */ { true, 0x09a6, 0x09a6 }, /* 0x09a7 */ { true, 0x09a7, 0x09a7 }, /* 0x09a8 */ { true, 0x09a8, 0x09a8 }, /* 0x09a9 */ { false, 0x09a9, 0x09a9 }, /* 0x09aa */ { true, 0x09aa, 0x09aa }, /* 0x09ab */ { true, 0x09ab, 0x09ab }, /* 0x09ac */ { true, 0x09ac, 0x09ac }, /* 0x09ad */ { true, 0x09ad, 0x09ad }, /* 0x09ae */ { true, 0x09ae, 0x09ae }, /* 0x09af */ { true, 0x09af, 0x09af }, /* 0x09b0 */ { true, 0x09b0, 0x09b0 }, /* 0x09b1 */ { false, 0x09b1, 0x09b1 }, /* 0x09b2 */ { true, 0x09b2, 0x09b2 }, /* 0x09b3 */ { false, 0x09b3, 0x09b3 }, /* 0x09b4 */ { false, 0x09b4, 0x09b4 }, /* 0x09b5 */ { false, 0x09b5, 0x09b5 }, /* 0x09b6 */ { true, 0x09b6, 0x09b6 }, /* 0x09b7 */ { true, 0x09b7, 0x09b7 }, /* 0x09b8 */ { true, 0x09b8, 0x09b8 }, /* 0x09b9 */ { true, 0x09b9, 0x09b9 }, /* 0x09ba */ { false, 0x09ba, 0x09ba }, /* 0x09bb */ { false, 0x09bb, 0x09bb }, /* 0x09bc */ { true, 0x09bc, 0x09bc }, /* 0x09bd */ { true, 0x09bd, 0x09bd }, /* 0x09be */ { false, 0x09be, 0x09be }, /* 0x09bf */ { false, 0x09bf, 0x09bf }, /* 0x09c0 */ { false, 0x09c0, 0x09c0 }, /* 0x09c1 */ { true, 0x09c1, 0x09c1 }, /* 0x09c2 */ { true, 0x09c2, 0x09c2 }, /* 0x09c3 */ { true, 0x09c3, 0x09c3 }, /* 0x09c4 */ { true, 0x09c4, 0x09c4 }, /* 0x09c5 */ { false, 0x09c5, 0x09c5 }, /* 0x09c6 */ { false, 0x09c6, 0x09c6 }, /* 0x09c7 */ { false, 0x09c7, 0x09c7 }, /* 0x09c8 */ { false, 0x09c8, 0x09c8 }, /* 0x09c9 */ { false, 0x09c9, 0x09c9 }, /* 0x09ca */ { false, 0x09ca, 0x09ca }, /* 0x09cb */ { false, 0x09cb, 0x09cb }, /* 0x09cc */ { false, 0x09cc, 0x09cc }, /* 0x09cd */ { true, 0x09cd, 0x09cd }, /* 0x09ce */ { true, 0x09ce, 0x09ce }, /* 0x09cf */ { false, 0x09cf, 0x09cf }, /* 0x09d0 */ { false, 0x09d0, 0x09d0 }, /* 0x09d1 */ { false, 0x09d1, 0x09d1 }, /* 0x09d2 */ { false, 0x09d2, 0x09d2 }, /* 0x09d3 */ { false, 0x09d3, 0x09d3 }, /* 0x09d4 */ { false, 0x09d4, 0x09d4 }, /* 0x09d5 */ { false, 0x09d5, 0x09d5 }, /* 0x09d6 */ { false, 0x09d6, 0x09d6 }, /* 0x09d7 */ { false, 0x09d7, 0x09d7 }, /* 0x09d8 */ { false, 0x09d8, 0x09d8 }, /* 0x09d9 */ { false, 0x09d9, 0x09d9 }, /* 0x09da */ { false, 0x09da, 0x09da }, /* 0x09db */ { false, 0x09db, 0x09db }, /* 0x09dc */ { true, 0x09dc, 0x09dc }, /* 0x09dd */ { true, 0x09dd, 0x09dd }, /* 0x09de */ { false, 0x09de, 0x09de }, /* 0x09df */ { true, 0x09df, 0x09df }, /* 0x09e0 */ { true, 0x09e0, 0x09e0 }, /* 0x09e1 */ { true, 0x09e1, 0x09e1 }, /* 0x09e2 */ { true, 0x09e2, 0x09e2 }, /* 0x09e3 */ { true, 0x09e3, 0x09e3 }, /* 0x09e4 */ { false, 0x09e4, 0x09e4 }, /* 0x09e5 */ { false, 0x09e5, 0x09e5 }, /* 0x09e6 */ { false, 0x09e6, 0x09e6 }, /* 0x09e7 */ { false, 0x09e7, 0x09e7 }, /* 0x09e8 */ { false, 0x09e8, 0x09e8 }, /* 0x09e9 */ { false, 0x09e9, 0x09e9 }, /* 0x09ea */ { false, 0x09ea, 0x09ea }, /* 0x09eb */ { false, 0x09eb, 0x09eb }, /* 0x09ec */ { false, 0x09ec, 0x09ec }, /* 0x09ed */ { false, 0x09ed, 0x09ed }, /* 0x09ee */ { false, 0x09ee, 0x09ee }, /* 0x09ef */ { false, 0x09ef, 0x09ef }, /* 0x09f0 */ { true, 0x09f0, 0x09f0 }, /* 0x09f1 */ { true, 0x09f1, 0x09f1 }, /* 0x09f2 */ { false, 0x09f2, 0x09f2 }, /* 0x09f3 */ { false, 0x09f3, 0x09f3 }, /* 0x09f4 */ { false, 0x09f4, 0x09f4 }, /* 0x09f5 */ { false, 0x09f5, 0x09f5 }, /* 0x09f6 */ { false, 0x09f6, 0x09f6 }, /* 0x09f7 */ { false, 0x09f7, 0x09f7 }, /* 0x09f8 */ { false, 0x09f8, 0x09f8 }, /* 0x09f9 */ { false, 0x09f9, 0x09f9 }, /* 0x09fa */ { false, 0x09fa, 0x09fa }, /* 0x09fb */ { false, 0x09fb, 0x09fb }, /* 0x09fc */ { false, 0x09fc, 0x09fc }, /* 0x09fd */ { false, 0x09fd, 0x09fd }, /* 0x09fe */ { false, 0x09fe, 0x09fe }, /* 0x09ff */ { false, 0x09ff, 0x09ff }, /* 0x0a00 */ { false, 0x0a00, 0x0a00 }, /* 0x0a01 */ { true, 0x0a01, 0x0a01 }, /* 0x0a02 */ { true, 0x0a02, 0x0a02 }, /* 0x0a03 */ { false, 0x0a03, 0x0a03 }, /* 0x0a04 */ { false, 0x0a04, 0x0a04 }, /* 0x0a05 */ { true, 0x0a05, 0x0a05 }, /* 0x0a06 */ { true, 0x0a06, 0x0a06 }, /* 0x0a07 */ { true, 0x0a07, 0x0a07 }, /* 0x0a08 */ { true, 0x0a08, 0x0a08 }, /* 0x0a09 */ { true, 0x0a09, 0x0a09 }, /* 0x0a0a */ { true, 0x0a0a, 0x0a0a }, /* 0x0a0b */ { false, 0x0a0b, 0x0a0b }, /* 0x0a0c */ { false, 0x0a0c, 0x0a0c }, /* 0x0a0d */ { false, 0x0a0d, 0x0a0d }, /* 0x0a0e */ { false, 0x0a0e, 0x0a0e }, /* 0x0a0f */ { true, 0x0a0f, 0x0a0f }, /* 0x0a10 */ { true, 0x0a10, 0x0a10 }, /* 0x0a11 */ { false, 0x0a11, 0x0a11 }, /* 0x0a12 */ { false, 0x0a12, 0x0a12 }, /* 0x0a13 */ { true, 0x0a13, 0x0a13 }, /* 0x0a14 */ { true, 0x0a14, 0x0a14 }, /* 0x0a15 */ { true, 0x0a15, 0x0a15 }, /* 0x0a16 */ { true, 0x0a16, 0x0a16 }, /* 0x0a17 */ { true, 0x0a17, 0x0a17 }, /* 0x0a18 */ { true, 0x0a18, 0x0a18 }, /* 0x0a19 */ { true, 0x0a19, 0x0a19 }, /* 0x0a1a */ { true, 0x0a1a, 0x0a1a }, /* 0x0a1b */ { true, 0x0a1b, 0x0a1b }, /* 0x0a1c */ { true, 0x0a1c, 0x0a1c }, /* 0x0a1d */ { true, 0x0a1d, 0x0a1d }, /* 0x0a1e */ { true, 0x0a1e, 0x0a1e }, /* 0x0a1f */ { true, 0x0a1f, 0x0a1f }, /* 0x0a20 */ { true, 0x0a20, 0x0a20 }, /* 0x0a21 */ { true, 0x0a21, 0x0a21 }, /* 0x0a22 */ { true, 0x0a22, 0x0a22 }, /* 0x0a23 */ { true, 0x0a23, 0x0a23 }, /* 0x0a24 */ { true, 0x0a24, 0x0a24 }, /* 0x0a25 */ { true, 0x0a25, 0x0a25 }, /* 0x0a26 */ { true, 0x0a26, 0x0a26 }, /* 0x0a27 */ { true, 0x0a27, 0x0a27 }, /* 0x0a28 */ { true, 0x0a28, 0x0a28 }, /* 0x0a29 */ { false, 0x0a29, 0x0a29 }, /* 0x0a2a */ { true, 0x0a2a, 0x0a2a }, /* 0x0a2b */ { true, 0x0a2b, 0x0a2b }, /* 0x0a2c */ { true, 0x0a2c, 0x0a2c }, /* 0x0a2d */ { true, 0x0a2d, 0x0a2d }, /* 0x0a2e */ { true, 0x0a2e, 0x0a2e }, /* 0x0a2f */ { true, 0x0a2f, 0x0a2f }, /* 0x0a30 */ { true, 0x0a30, 0x0a30 }, /* 0x0a31 */ { false, 0x0a31, 0x0a31 }, /* 0x0a32 */ { true, 0x0a32, 0x0a32 }, /* 0x0a33 */ { true, 0x0a33, 0x0a33 }, /* 0x0a34 */ { false, 0x0a34, 0x0a34 }, /* 0x0a35 */ { true, 0x0a35, 0x0a35 }, /* 0x0a36 */ { true, 0x0a36, 0x0a36 }, /* 0x0a37 */ { false, 0x0a37, 0x0a37 }, /* 0x0a38 */ { true, 0x0a38, 0x0a38 }, /* 0x0a39 */ { true, 0x0a39, 0x0a39 }, /* 0x0a3a */ { false, 0x0a3a, 0x0a3a }, /* 0x0a3b */ { false, 0x0a3b, 0x0a3b }, /* 0x0a3c */ { true, 0x0a3c, 0x0a3c }, /* 0x0a3d */ { false, 0x0a3d, 0x0a3d }, /* 0x0a3e */ { false, 0x0a3e, 0x0a3e }, /* 0x0a3f */ { false, 0x0a3f, 0x0a3f }, /* 0x0a40 */ { false, 0x0a40, 0x0a40 }, /* 0x0a41 */ { true, 0x0a41, 0x0a41 }, /* 0x0a42 */ { true, 0x0a42, 0x0a42 }, /* 0x0a43 */ { false, 0x0a43, 0x0a43 }, /* 0x0a44 */ { false, 0x0a44, 0x0a44 }, /* 0x0a45 */ { false, 0x0a45, 0x0a45 }, /* 0x0a46 */ { false, 0x0a46, 0x0a46 }, /* 0x0a47 */ { true, 0x0a47, 0x0a47 }, /* 0x0a48 */ { true, 0x0a48, 0x0a48 }, /* 0x0a49 */ { false, 0x0a49, 0x0a49 }, /* 0x0a4a */ { false, 0x0a4a, 0x0a4a }, /* 0x0a4b */ { true, 0x0a4b, 0x0a4b }, /* 0x0a4c */ { true, 0x0a4c, 0x0a4c }, /* 0x0a4d */ { true, 0x0a4d, 0x0a4d }, /* 0x0a4e */ { false, 0x0a4e, 0x0a4e }, /* 0x0a4f */ { false, 0x0a4f, 0x0a4f }, /* 0x0a50 */ { false, 0x0a50, 0x0a50 }, /* 0x0a51 */ { false, 0x0a51, 0x0a51 }, /* 0x0a52 */ { false, 0x0a52, 0x0a52 }, /* 0x0a53 */ { false, 0x0a53, 0x0a53 }, /* 0x0a54 */ { false, 0x0a54, 0x0a54 }, /* 0x0a55 */ { false, 0x0a55, 0x0a55 }, /* 0x0a56 */ { false, 0x0a56, 0x0a56 }, /* 0x0a57 */ { false, 0x0a57, 0x0a57 }, /* 0x0a58 */ { false, 0x0a58, 0x0a58 }, /* 0x0a59 */ { true, 0x0a59, 0x0a59 }, /* 0x0a5a */ { true, 0x0a5a, 0x0a5a }, /* 0x0a5b */ { true, 0x0a5b, 0x0a5b }, /* 0x0a5c */ { true, 0x0a5c, 0x0a5c }, /* 0x0a5d */ { false, 0x0a5d, 0x0a5d }, /* 0x0a5e */ { true, 0x0a5e, 0x0a5e }, /* 0x0a5f */ { false, 0x0a5f, 0x0a5f }, /* 0x0a60 */ { false, 0x0a60, 0x0a60 }, /* 0x0a61 */ { false, 0x0a61, 0x0a61 }, /* 0x0a62 */ { false, 0x0a62, 0x0a62 }, /* 0x0a63 */ { false, 0x0a63, 0x0a63 }, /* 0x0a64 */ { false, 0x0a64, 0x0a64 }, /* 0x0a65 */ { false, 0x0a65, 0x0a65 }, /* 0x0a66 */ { false, 0x0a66, 0x0a66 }, /* 0x0a67 */ { false, 0x0a67, 0x0a67 }, /* 0x0a68 */ { false, 0x0a68, 0x0a68 }, /* 0x0a69 */ { false, 0x0a69, 0x0a69 }, /* 0x0a6a */ { false, 0x0a6a, 0x0a6a }, /* 0x0a6b */ { false, 0x0a6b, 0x0a6b }, /* 0x0a6c */ { false, 0x0a6c, 0x0a6c }, /* 0x0a6d */ { false, 0x0a6d, 0x0a6d }, /* 0x0a6e */ { false, 0x0a6e, 0x0a6e }, /* 0x0a6f */ { false, 0x0a6f, 0x0a6f }, /* 0x0a70 */ { true, 0x0a70, 0x0a70 }, /* 0x0a71 */ { true, 0x0a71, 0x0a71 }, /* 0x0a72 */ { true, 0x0a72, 0x0a72 }, /* 0x0a73 */ { true, 0x0a73, 0x0a73 }, /* 0x0a74 */ { true, 0x0a74, 0x0a74 }, /* 0x0a75 */ { false, 0x0a75, 0x0a75 }, /* 0x0a76 */ { false, 0x0a76, 0x0a76 }, /* 0x0a77 */ { false, 0x0a77, 0x0a77 }, /* 0x0a78 */ { false, 0x0a78, 0x0a78 }, /* 0x0a79 */ { false, 0x0a79, 0x0a79 }, /* 0x0a7a */ { false, 0x0a7a, 0x0a7a }, /* 0x0a7b */ { false, 0x0a7b, 0x0a7b }, /* 0x0a7c */ { false, 0x0a7c, 0x0a7c }, /* 0x0a7d */ { false, 0x0a7d, 0x0a7d }, /* 0x0a7e */ { false, 0x0a7e, 0x0a7e }, /* 0x0a7f */ { false, 0x0a7f, 0x0a7f }, /* 0x0a80 */ { false, 0x0a80, 0x0a80 }, /* 0x0a81 */ { true, 0x0a81, 0x0a81 }, /* 0x0a82 */ { true, 0x0a82, 0x0a82 }, /* 0x0a83 */ { false, 0x0a83, 0x0a83 }, /* 0x0a84 */ { false, 0x0a84, 0x0a84 }, /* 0x0a85 */ { true, 0x0a85, 0x0a85 }, /* 0x0a86 */ { true, 0x0a86, 0x0a86 }, /* 0x0a87 */ { true, 0x0a87, 0x0a87 }, /* 0x0a88 */ { true, 0x0a88, 0x0a88 }, /* 0x0a89 */ { true, 0x0a89, 0x0a89 }, /* 0x0a8a */ { true, 0x0a8a, 0x0a8a }, /* 0x0a8b */ { true, 0x0a8b, 0x0a8b }, /* 0x0a8c */ { true, 0x0a8c, 0x0a8c }, /* 0x0a8d */ { true, 0x0a8d, 0x0a8d }, /* 0x0a8e */ { false, 0x0a8e, 0x0a8e }, /* 0x0a8f */ { true, 0x0a8f, 0x0a8f }, /* 0x0a90 */ { true, 0x0a90, 0x0a90 }, /* 0x0a91 */ { true, 0x0a91, 0x0a91 }, /* 0x0a92 */ { false, 0x0a92, 0x0a92 }, /* 0x0a93 */ { true, 0x0a93, 0x0a93 }, /* 0x0a94 */ { true, 0x0a94, 0x0a94 }, /* 0x0a95 */ { true, 0x0a95, 0x0a95 }, /* 0x0a96 */ { true, 0x0a96, 0x0a96 }, /* 0x0a97 */ { true, 0x0a97, 0x0a97 }, /* 0x0a98 */ { true, 0x0a98, 0x0a98 }, /* 0x0a99 */ { true, 0x0a99, 0x0a99 }, /* 0x0a9a */ { true, 0x0a9a, 0x0a9a }, /* 0x0a9b */ { true, 0x0a9b, 0x0a9b }, /* 0x0a9c */ { true, 0x0a9c, 0x0a9c }, /* 0x0a9d */ { true, 0x0a9d, 0x0a9d }, /* 0x0a9e */ { true, 0x0a9e, 0x0a9e }, /* 0x0a9f */ { true, 0x0a9f, 0x0a9f }, /* 0x0aa0 */ { true, 0x0aa0, 0x0aa0 }, /* 0x0aa1 */ { true, 0x0aa1, 0x0aa1 }, /* 0x0aa2 */ { true, 0x0aa2, 0x0aa2 }, /* 0x0aa3 */ { true, 0x0aa3, 0x0aa3 }, /* 0x0aa4 */ { true, 0x0aa4, 0x0aa4 }, /* 0x0aa5 */ { true, 0x0aa5, 0x0aa5 }, /* 0x0aa6 */ { true, 0x0aa6, 0x0aa6 }, /* 0x0aa7 */ { true, 0x0aa7, 0x0aa7 }, /* 0x0aa8 */ { true, 0x0aa8, 0x0aa8 }, /* 0x0aa9 */ { false, 0x0aa9, 0x0aa9 }, /* 0x0aaa */ { true, 0x0aaa, 0x0aaa }, /* 0x0aab */ { true, 0x0aab, 0x0aab }, /* 0x0aac */ { true, 0x0aac, 0x0aac }, /* 0x0aad */ { true, 0x0aad, 0x0aad }, /* 0x0aae */ { true, 0x0aae, 0x0aae }, /* 0x0aaf */ { true, 0x0aaf, 0x0aaf }, /* 0x0ab0 */ { true, 0x0ab0, 0x0ab0 }, /* 0x0ab1 */ { false, 0x0ab1, 0x0ab1 }, /* 0x0ab2 */ { true, 0x0ab2, 0x0ab2 }, /* 0x0ab3 */ { true, 0x0ab3, 0x0ab3 }, /* 0x0ab4 */ { false, 0x0ab4, 0x0ab4 }, /* 0x0ab5 */ { true, 0x0ab5, 0x0ab5 }, /* 0x0ab6 */ { true, 0x0ab6, 0x0ab6 }, /* 0x0ab7 */ { true, 0x0ab7, 0x0ab7 }, /* 0x0ab8 */ { true, 0x0ab8, 0x0ab8 }, /* 0x0ab9 */ { true, 0x0ab9, 0x0ab9 }, /* 0x0aba */ { false, 0x0aba, 0x0aba }, /* 0x0abb */ { false, 0x0abb, 0x0abb }, /* 0x0abc */ { true, 0x0abc, 0x0abc }, /* 0x0abd */ { true, 0x0abd, 0x0abd }, /* 0x0abe */ { false, 0x0abe, 0x0abe }, /* 0x0abf */ { false, 0x0abf, 0x0abf }, /* 0x0ac0 */ { false, 0x0ac0, 0x0ac0 }, /* 0x0ac1 */ { true, 0x0ac1, 0x0ac1 }, /* 0x0ac2 */ { true, 0x0ac2, 0x0ac2 }, /* 0x0ac3 */ { true, 0x0ac3, 0x0ac3 }, /* 0x0ac4 */ { true, 0x0ac4, 0x0ac4 }, /* 0x0ac5 */ { true, 0x0ac5, 0x0ac5 }, /* 0x0ac6 */ { false, 0x0ac6, 0x0ac6 }, /* 0x0ac7 */ { true, 0x0ac7, 0x0ac7 }, /* 0x0ac8 */ { true, 0x0ac8, 0x0ac8 }, /* 0x0ac9 */ { false, 0x0ac9, 0x0ac9 }, /* 0x0aca */ { false, 0x0aca, 0x0aca }, /* 0x0acb */ { false, 0x0acb, 0x0acb }, /* 0x0acc */ { false, 0x0acc, 0x0acc }, /* 0x0acd */ { true, 0x0acd, 0x0acd }, /* 0x0ace */ { false, 0x0ace, 0x0ace }, /* 0x0acf */ { false, 0x0acf, 0x0acf }, /* 0x0ad0 */ { true, 0x0ad0, 0x0ad0 }, /* 0x0ad1 */ { false, 0x0ad1, 0x0ad1 }, /* 0x0ad2 */ { false, 0x0ad2, 0x0ad2 }, /* 0x0ad3 */ { false, 0x0ad3, 0x0ad3 }, /* 0x0ad4 */ { false, 0x0ad4, 0x0ad4 }, /* 0x0ad5 */ { false, 0x0ad5, 0x0ad5 }, /* 0x0ad6 */ { false, 0x0ad6, 0x0ad6 }, /* 0x0ad7 */ { false, 0x0ad7, 0x0ad7 }, /* 0x0ad8 */ { false, 0x0ad8, 0x0ad8 }, /* 0x0ad9 */ { false, 0x0ad9, 0x0ad9 }, /* 0x0ada */ { false, 0x0ada, 0x0ada }, /* 0x0adb */ { false, 0x0adb, 0x0adb }, /* 0x0adc */ { false, 0x0adc, 0x0adc }, /* 0x0add */ { false, 0x0add, 0x0add }, /* 0x0ade */ { false, 0x0ade, 0x0ade }, /* 0x0adf */ { false, 0x0adf, 0x0adf }, /* 0x0ae0 */ { true, 0x0ae0, 0x0ae0 }, /* 0x0ae1 */ { true, 0x0ae1, 0x0ae1 }, /* 0x0ae2 */ { true, 0x0ae2, 0x0ae2 }, /* 0x0ae3 */ { true, 0x0ae3, 0x0ae3 }, /* 0x0ae4 */ { false, 0x0ae4, 0x0ae4 }, /* 0x0ae5 */ { false, 0x0ae5, 0x0ae5 }, /* 0x0ae6 */ { false, 0x0ae6, 0x0ae6 }, /* 0x0ae7 */ { false, 0x0ae7, 0x0ae7 }, /* 0x0ae8 */ { false, 0x0ae8, 0x0ae8 }, /* 0x0ae9 */ { false, 0x0ae9, 0x0ae9 }, /* 0x0aea */ { false, 0x0aea, 0x0aea }, /* 0x0aeb */ { false, 0x0aeb, 0x0aeb }, /* 0x0aec */ { false, 0x0aec, 0x0aec }, /* 0x0aed */ { false, 0x0aed, 0x0aed }, /* 0x0aee */ { false, 0x0aee, 0x0aee }, /* 0x0aef */ { false, 0x0aef, 0x0aef }, /* 0x0af0 */ { false, 0x0af0, 0x0af0 }, /* 0x0af1 */ { false, 0x0af1, 0x0af1 }, /* 0x0af2 */ { false, 0x0af2, 0x0af2 }, /* 0x0af3 */ { false, 0x0af3, 0x0af3 }, /* 0x0af4 */ { false, 0x0af4, 0x0af4 }, /* 0x0af5 */ { false, 0x0af5, 0x0af5 }, /* 0x0af6 */ { false, 0x0af6, 0x0af6 }, /* 0x0af7 */ { false, 0x0af7, 0x0af7 }, /* 0x0af8 */ { false, 0x0af8, 0x0af8 }, /* 0x0af9 */ { false, 0x0af9, 0x0af9 }, /* 0x0afa */ { false, 0x0afa, 0x0afa }, /* 0x0afb */ { false, 0x0afb, 0x0afb }, /* 0x0afc */ { false, 0x0afc, 0x0afc }, /* 0x0afd */ { false, 0x0afd, 0x0afd }, /* 0x0afe */ { false, 0x0afe, 0x0afe }, /* 0x0aff */ { false, 0x0aff, 0x0aff }, /* 0x0b00 */ { false, 0x0b00, 0x0b00 }, /* 0x0b01 */ { true, 0x0b01, 0x0b01 }, /* 0x0b02 */ { false, 0x0b02, 0x0b02 }, /* 0x0b03 */ { false, 0x0b03, 0x0b03 }, /* 0x0b04 */ { false, 0x0b04, 0x0b04 }, /* 0x0b05 */ { true, 0x0b05, 0x0b05 }, /* 0x0b06 */ { true, 0x0b06, 0x0b06 }, /* 0x0b07 */ { true, 0x0b07, 0x0b07 }, /* 0x0b08 */ { true, 0x0b08, 0x0b08 }, /* 0x0b09 */ { true, 0x0b09, 0x0b09 }, /* 0x0b0a */ { true, 0x0b0a, 0x0b0a }, /* 0x0b0b */ { true, 0x0b0b, 0x0b0b }, /* 0x0b0c */ { true, 0x0b0c, 0x0b0c }, /* 0x0b0d */ { false, 0x0b0d, 0x0b0d }, /* 0x0b0e */ { false, 0x0b0e, 0x0b0e }, /* 0x0b0f */ { true, 0x0b0f, 0x0b0f }, /* 0x0b10 */ { true, 0x0b10, 0x0b10 }, /* 0x0b11 */ { false, 0x0b11, 0x0b11 }, /* 0x0b12 */ { false, 0x0b12, 0x0b12 }, /* 0x0b13 */ { true, 0x0b13, 0x0b13 }, /* 0x0b14 */ { true, 0x0b14, 0x0b14 }, /* 0x0b15 */ { true, 0x0b15, 0x0b15 }, /* 0x0b16 */ { true, 0x0b16, 0x0b16 }, /* 0x0b17 */ { true, 0x0b17, 0x0b17 }, /* 0x0b18 */ { true, 0x0b18, 0x0b18 }, /* 0x0b19 */ { true, 0x0b19, 0x0b19 }, /* 0x0b1a */ { true, 0x0b1a, 0x0b1a }, /* 0x0b1b */ { true, 0x0b1b, 0x0b1b }, /* 0x0b1c */ { true, 0x0b1c, 0x0b1c }, /* 0x0b1d */ { true, 0x0b1d, 0x0b1d }, /* 0x0b1e */ { true, 0x0b1e, 0x0b1e }, /* 0x0b1f */ { true, 0x0b1f, 0x0b1f }, /* 0x0b20 */ { true, 0x0b20, 0x0b20 }, /* 0x0b21 */ { true, 0x0b21, 0x0b21 }, /* 0x0b22 */ { true, 0x0b22, 0x0b22 }, /* 0x0b23 */ { true, 0x0b23, 0x0b23 }, /* 0x0b24 */ { true, 0x0b24, 0x0b24 }, /* 0x0b25 */ { true, 0x0b25, 0x0b25 }, /* 0x0b26 */ { true, 0x0b26, 0x0b26 }, /* 0x0b27 */ { true, 0x0b27, 0x0b27 }, /* 0x0b28 */ { true, 0x0b28, 0x0b28 }, /* 0x0b29 */ { false, 0x0b29, 0x0b29 }, /* 0x0b2a */ { true, 0x0b2a, 0x0b2a }, /* 0x0b2b */ { true, 0x0b2b, 0x0b2b }, /* 0x0b2c */ { true, 0x0b2c, 0x0b2c }, /* 0x0b2d */ { true, 0x0b2d, 0x0b2d }, /* 0x0b2e */ { true, 0x0b2e, 0x0b2e }, /* 0x0b2f */ { true, 0x0b2f, 0x0b2f }, /* 0x0b30 */ { true, 0x0b30, 0x0b30 }, /* 0x0b31 */ { false, 0x0b31, 0x0b31 }, /* 0x0b32 */ { true, 0x0b32, 0x0b32 }, /* 0x0b33 */ { true, 0x0b33, 0x0b33 }, /* 0x0b34 */ { false, 0x0b34, 0x0b34 }, /* 0x0b35 */ { true, 0x0b35, 0x0b35 }, /* 0x0b36 */ { true, 0x0b36, 0x0b36 }, /* 0x0b37 */ { true, 0x0b37, 0x0b37 }, /* 0x0b38 */ { true, 0x0b38, 0x0b38 }, /* 0x0b39 */ { true, 0x0b39, 0x0b39 }, /* 0x0b3a */ { false, 0x0b3a, 0x0b3a }, /* 0x0b3b */ { false, 0x0b3b, 0x0b3b }, /* 0x0b3c */ { true, 0x0b3c, 0x0b3c }, /* 0x0b3d */ { true, 0x0b3d, 0x0b3d }, /* 0x0b3e */ { false, 0x0b3e, 0x0b3e }, /* 0x0b3f */ { true, 0x0b3f, 0x0b3f }, /* 0x0b40 */ { false, 0x0b40, 0x0b40 }, /* 0x0b41 */ { true, 0x0b41, 0x0b41 }, /* 0x0b42 */ { true, 0x0b42, 0x0b42 }, /* 0x0b43 */ { true, 0x0b43, 0x0b43 }, /* 0x0b44 */ { false, 0x0b44, 0x0b44 }, /* 0x0b45 */ { false, 0x0b45, 0x0b45 }, /* 0x0b46 */ { false, 0x0b46, 0x0b46 }, /* 0x0b47 */ { false, 0x0b47, 0x0b47 }, /* 0x0b48 */ { false, 0x0b48, 0x0b48 }, /* 0x0b49 */ { false, 0x0b49, 0x0b49 }, /* 0x0b4a */ { false, 0x0b4a, 0x0b4a }, /* 0x0b4b */ { false, 0x0b4b, 0x0b4b }, /* 0x0b4c */ { false, 0x0b4c, 0x0b4c }, /* 0x0b4d */ { true, 0x0b4d, 0x0b4d }, /* 0x0b4e */ { false, 0x0b4e, 0x0b4e }, /* 0x0b4f */ { false, 0x0b4f, 0x0b4f }, /* 0x0b50 */ { false, 0x0b50, 0x0b50 }, /* 0x0b51 */ { false, 0x0b51, 0x0b51 }, /* 0x0b52 */ { false, 0x0b52, 0x0b52 }, /* 0x0b53 */ { false, 0x0b53, 0x0b53 }, /* 0x0b54 */ { false, 0x0b54, 0x0b54 }, /* 0x0b55 */ { false, 0x0b55, 0x0b55 }, /* 0x0b56 */ { true, 0x0b56, 0x0b56 }, /* 0x0b57 */ { false, 0x0b57, 0x0b57 }, /* 0x0b58 */ { false, 0x0b58, 0x0b58 }, /* 0x0b59 */ { false, 0x0b59, 0x0b59 }, /* 0x0b5a */ { false, 0x0b5a, 0x0b5a }, /* 0x0b5b */ { false, 0x0b5b, 0x0b5b }, /* 0x0b5c */ { true, 0x0b5c, 0x0b5c }, /* 0x0b5d */ { true, 0x0b5d, 0x0b5d }, /* 0x0b5e */ { false, 0x0b5e, 0x0b5e }, /* 0x0b5f */ { true, 0x0b5f, 0x0b5f }, /* 0x0b60 */ { true, 0x0b60, 0x0b60 }, /* 0x0b61 */ { true, 0x0b61, 0x0b61 }, /* 0x0b62 */ { false, 0x0b62, 0x0b62 }, /* 0x0b63 */ { false, 0x0b63, 0x0b63 }, /* 0x0b64 */ { false, 0x0b64, 0x0b64 }, /* 0x0b65 */ { false, 0x0b65, 0x0b65 }, /* 0x0b66 */ { false, 0x0b66, 0x0b66 }, /* 0x0b67 */ { false, 0x0b67, 0x0b67 }, /* 0x0b68 */ { false, 0x0b68, 0x0b68 }, /* 0x0b69 */ { false, 0x0b69, 0x0b69 }, /* 0x0b6a */ { false, 0x0b6a, 0x0b6a }, /* 0x0b6b */ { false, 0x0b6b, 0x0b6b }, /* 0x0b6c */ { false, 0x0b6c, 0x0b6c }, /* 0x0b6d */ { false, 0x0b6d, 0x0b6d }, /* 0x0b6e */ { false, 0x0b6e, 0x0b6e }, /* 0x0b6f */ { false, 0x0b6f, 0x0b6f }, /* 0x0b70 */ { false, 0x0b70, 0x0b70 }, /* 0x0b71 */ { true, 0x0b71, 0x0b71 }, /* 0x0b72 */ { false, 0x0b72, 0x0b72 }, /* 0x0b73 */ { false, 0x0b73, 0x0b73 }, /* 0x0b74 */ { false, 0x0b74, 0x0b74 }, /* 0x0b75 */ { false, 0x0b75, 0x0b75 }, /* 0x0b76 */ { false, 0x0b76, 0x0b76 }, /* 0x0b77 */ { false, 0x0b77, 0x0b77 }, /* 0x0b78 */ { false, 0x0b78, 0x0b78 }, /* 0x0b79 */ { false, 0x0b79, 0x0b79 }, /* 0x0b7a */ { false, 0x0b7a, 0x0b7a }, /* 0x0b7b */ { false, 0x0b7b, 0x0b7b }, /* 0x0b7c */ { false, 0x0b7c, 0x0b7c }, /* 0x0b7d */ { false, 0x0b7d, 0x0b7d }, /* 0x0b7e */ { false, 0x0b7e, 0x0b7e }, /* 0x0b7f */ { false, 0x0b7f, 0x0b7f }, /* 0x0b80 */ { false, 0x0b80, 0x0b80 }, /* 0x0b81 */ { false, 0x0b81, 0x0b81 }, /* 0x0b82 */ { true, 0x0b82, 0x0b82 }, /* 0x0b83 */ { true, 0x0b83, 0x0b83 }, /* 0x0b84 */ { false, 0x0b84, 0x0b84 }, /* 0x0b85 */ { true, 0x0b85, 0x0b85 }, /* 0x0b86 */ { true, 0x0b86, 0x0b86 }, /* 0x0b87 */ { true, 0x0b87, 0x0b87 }, /* 0x0b88 */ { true, 0x0b88, 0x0b88 }, /* 0x0b89 */ { true, 0x0b89, 0x0b89 }, /* 0x0b8a */ { true, 0x0b8a, 0x0b8a }, /* 0x0b8b */ { false, 0x0b8b, 0x0b8b }, /* 0x0b8c */ { false, 0x0b8c, 0x0b8c }, /* 0x0b8d */ { false, 0x0b8d, 0x0b8d }, /* 0x0b8e */ { true, 0x0b8e, 0x0b8e }, /* 0x0b8f */ { true, 0x0b8f, 0x0b8f }, /* 0x0b90 */ { true, 0x0b90, 0x0b90 }, /* 0x0b91 */ { false, 0x0b91, 0x0b91 }, /* 0x0b92 */ { true, 0x0b92, 0x0b92 }, /* 0x0b93 */ { true, 0x0b93, 0x0b93 }, /* 0x0b94 */ { true, 0x0b94, 0x0b94 }, /* 0x0b95 */ { true, 0x0b95, 0x0b95 }, /* 0x0b96 */ { false, 0x0b96, 0x0b96 }, /* 0x0b97 */ { false, 0x0b97, 0x0b97 }, /* 0x0b98 */ { false, 0x0b98, 0x0b98 }, /* 0x0b99 */ { true, 0x0b99, 0x0b99 }, /* 0x0b9a */ { true, 0x0b9a, 0x0b9a }, /* 0x0b9b */ { false, 0x0b9b, 0x0b9b }, /* 0x0b9c */ { true, 0x0b9c, 0x0b9c }, /* 0x0b9d */ { false, 0x0b9d, 0x0b9d }, /* 0x0b9e */ { true, 0x0b9e, 0x0b9e }, /* 0x0b9f */ { true, 0x0b9f, 0x0b9f }, /* 0x0ba0 */ { false, 0x0ba0, 0x0ba0 }, /* 0x0ba1 */ { false, 0x0ba1, 0x0ba1 }, /* 0x0ba2 */ { false, 0x0ba2, 0x0ba2 }, /* 0x0ba3 */ { true, 0x0ba3, 0x0ba3 }, /* 0x0ba4 */ { true, 0x0ba4, 0x0ba4 }, /* 0x0ba5 */ { false, 0x0ba5, 0x0ba5 }, /* 0x0ba6 */ { false, 0x0ba6, 0x0ba6 }, /* 0x0ba7 */ { false, 0x0ba7, 0x0ba7 }, /* 0x0ba8 */ { true, 0x0ba8, 0x0ba8 }, /* 0x0ba9 */ { true, 0x0ba9, 0x0ba9 }, /* 0x0baa */ { true, 0x0baa, 0x0baa }, /* 0x0bab */ { false, 0x0bab, 0x0bab }, /* 0x0bac */ { false, 0x0bac, 0x0bac }, /* 0x0bad */ { false, 0x0bad, 0x0bad }, /* 0x0bae */ { true, 0x0bae, 0x0bae }, /* 0x0baf */ { true, 0x0baf, 0x0baf }, /* 0x0bb0 */ { true, 0x0bb0, 0x0bb0 }, /* 0x0bb1 */ { true, 0x0bb1, 0x0bb1 }, /* 0x0bb2 */ { true, 0x0bb2, 0x0bb2 }, /* 0x0bb3 */ { true, 0x0bb3, 0x0bb3 }, /* 0x0bb4 */ { true, 0x0bb4, 0x0bb4 }, /* 0x0bb5 */ { true, 0x0bb5, 0x0bb5 }, /* 0x0bb6 */ { true, 0x0bb6, 0x0bb6 }, /* 0x0bb7 */ { true, 0x0bb7, 0x0bb7 }, /* 0x0bb8 */ { true, 0x0bb8, 0x0bb8 }, /* 0x0bb9 */ { true, 0x0bb9, 0x0bb9 }, /* 0x0bba */ { false, 0x0bba, 0x0bba }, /* 0x0bbb */ { false, 0x0bbb, 0x0bbb }, /* 0x0bbc */ { false, 0x0bbc, 0x0bbc }, /* 0x0bbd */ { false, 0x0bbd, 0x0bbd }, /* 0x0bbe */ { false, 0x0bbe, 0x0bbe }, /* 0x0bbf */ { false, 0x0bbf, 0x0bbf }, /* 0x0bc0 */ { true, 0x0bc0, 0x0bc0 }, /* 0x0bc1 */ { false, 0x0bc1, 0x0bc1 }, /* 0x0bc2 */ { false, 0x0bc2, 0x0bc2 }, /* 0x0bc3 */ { false, 0x0bc3, 0x0bc3 }, /* 0x0bc4 */ { false, 0x0bc4, 0x0bc4 }, /* 0x0bc5 */ { false, 0x0bc5, 0x0bc5 }, /* 0x0bc6 */ { false, 0x0bc6, 0x0bc6 }, /* 0x0bc7 */ { false, 0x0bc7, 0x0bc7 }, /* 0x0bc8 */ { false, 0x0bc8, 0x0bc8 }, /* 0x0bc9 */ { false, 0x0bc9, 0x0bc9 }, /* 0x0bca */ { false, 0x0bca, 0x0bca }, /* 0x0bcb */ { false, 0x0bcb, 0x0bcb }, /* 0x0bcc */ { false, 0x0bcc, 0x0bcc }, /* 0x0bcd */ { true, 0x0bcd, 0x0bcd }, /* 0x0bce */ { false, 0x0bce, 0x0bce }, /* 0x0bcf */ { false, 0x0bcf, 0x0bcf }, /* 0x0bd0 */ { false, 0x0bd0, 0x0bd0 }, /* 0x0bd1 */ { false, 0x0bd1, 0x0bd1 }, /* 0x0bd2 */ { false, 0x0bd2, 0x0bd2 }, /* 0x0bd3 */ { false, 0x0bd3, 0x0bd3 }, /* 0x0bd4 */ { false, 0x0bd4, 0x0bd4 }, /* 0x0bd5 */ { false, 0x0bd5, 0x0bd5 }, /* 0x0bd6 */ { false, 0x0bd6, 0x0bd6 }, /* 0x0bd7 */ { false, 0x0bd7, 0x0bd7 }, /* 0x0bd8 */ { false, 0x0bd8, 0x0bd8 }, /* 0x0bd9 */ { false, 0x0bd9, 0x0bd9 }, /* 0x0bda */ { false, 0x0bda, 0x0bda }, /* 0x0bdb */ { false, 0x0bdb, 0x0bdb }, /* 0x0bdc */ { false, 0x0bdc, 0x0bdc }, /* 0x0bdd */ { false, 0x0bdd, 0x0bdd }, /* 0x0bde */ { false, 0x0bde, 0x0bde }, /* 0x0bdf */ { false, 0x0bdf, 0x0bdf }, /* 0x0be0 */ { false, 0x0be0, 0x0be0 }, /* 0x0be1 */ { false, 0x0be1, 0x0be1 }, /* 0x0be2 */ { false, 0x0be2, 0x0be2 }, /* 0x0be3 */ { false, 0x0be3, 0x0be3 }, /* 0x0be4 */ { false, 0x0be4, 0x0be4 }, /* 0x0be5 */ { false, 0x0be5, 0x0be5 }, /* 0x0be6 */ { false, 0x0be6, 0x0be6 }, /* 0x0be7 */ { false, 0x0be7, 0x0be7 }, /* 0x0be8 */ { false, 0x0be8, 0x0be8 }, /* 0x0be9 */ { false, 0x0be9, 0x0be9 }, /* 0x0bea */ { false, 0x0bea, 0x0bea }, /* 0x0beb */ { false, 0x0beb, 0x0beb }, /* 0x0bec */ { false, 0x0bec, 0x0bec }, /* 0x0bed */ { false, 0x0bed, 0x0bed }, /* 0x0bee */ { false, 0x0bee, 0x0bee }, /* 0x0bef */ { false, 0x0bef, 0x0bef }, /* 0x0bf0 */ { false, 0x0bf0, 0x0bf0 }, /* 0x0bf1 */ { false, 0x0bf1, 0x0bf1 }, /* 0x0bf2 */ { false, 0x0bf2, 0x0bf2 }, /* 0x0bf3 */ { false, 0x0bf3, 0x0bf3 }, /* 0x0bf4 */ { false, 0x0bf4, 0x0bf4 }, /* 0x0bf5 */ { false, 0x0bf5, 0x0bf5 }, /* 0x0bf6 */ { false, 0x0bf6, 0x0bf6 }, /* 0x0bf7 */ { false, 0x0bf7, 0x0bf7 }, /* 0x0bf8 */ { false, 0x0bf8, 0x0bf8 }, /* 0x0bf9 */ { false, 0x0bf9, 0x0bf9 }, /* 0x0bfa */ { false, 0x0bfa, 0x0bfa }, /* 0x0bfb */ { false, 0x0bfb, 0x0bfb }, /* 0x0bfc */ { false, 0x0bfc, 0x0bfc }, /* 0x0bfd */ { false, 0x0bfd, 0x0bfd }, /* 0x0bfe */ { false, 0x0bfe, 0x0bfe }, /* 0x0bff */ { false, 0x0bff, 0x0bff }, /* 0x0c00 */ { false, 0x0c00, 0x0c00 }, /* 0x0c01 */ { false, 0x0c01, 0x0c01 }, /* 0x0c02 */ { false, 0x0c02, 0x0c02 }, /* 0x0c03 */ { false, 0x0c03, 0x0c03 }, /* 0x0c04 */ { false, 0x0c04, 0x0c04 }, /* 0x0c05 */ { true, 0x0c05, 0x0c05 }, /* 0x0c06 */ { true, 0x0c06, 0x0c06 }, /* 0x0c07 */ { true, 0x0c07, 0x0c07 }, /* 0x0c08 */ { true, 0x0c08, 0x0c08 }, /* 0x0c09 */ { true, 0x0c09, 0x0c09 }, /* 0x0c0a */ { true, 0x0c0a, 0x0c0a }, /* 0x0c0b */ { true, 0x0c0b, 0x0c0b }, /* 0x0c0c */ { true, 0x0c0c, 0x0c0c }, /* 0x0c0d */ { false, 0x0c0d, 0x0c0d }, /* 0x0c0e */ { true, 0x0c0e, 0x0c0e }, /* 0x0c0f */ { true, 0x0c0f, 0x0c0f }, /* 0x0c10 */ { true, 0x0c10, 0x0c10 }, /* 0x0c11 */ { false, 0x0c11, 0x0c11 }, /* 0x0c12 */ { true, 0x0c12, 0x0c12 }, /* 0x0c13 */ { true, 0x0c13, 0x0c13 }, /* 0x0c14 */ { true, 0x0c14, 0x0c14 }, /* 0x0c15 */ { true, 0x0c15, 0x0c15 }, /* 0x0c16 */ { true, 0x0c16, 0x0c16 }, /* 0x0c17 */ { true, 0x0c17, 0x0c17 }, /* 0x0c18 */ { true, 0x0c18, 0x0c18 }, /* 0x0c19 */ { true, 0x0c19, 0x0c19 }, /* 0x0c1a */ { true, 0x0c1a, 0x0c1a }, /* 0x0c1b */ { true, 0x0c1b, 0x0c1b }, /* 0x0c1c */ { true, 0x0c1c, 0x0c1c }, /* 0x0c1d */ { true, 0x0c1d, 0x0c1d }, /* 0x0c1e */ { true, 0x0c1e, 0x0c1e }, /* 0x0c1f */ { true, 0x0c1f, 0x0c1f }, /* 0x0c20 */ { true, 0x0c20, 0x0c20 }, /* 0x0c21 */ { true, 0x0c21, 0x0c21 }, /* 0x0c22 */ { true, 0x0c22, 0x0c22 }, /* 0x0c23 */ { true, 0x0c23, 0x0c23 }, /* 0x0c24 */ { true, 0x0c24, 0x0c24 }, /* 0x0c25 */ { true, 0x0c25, 0x0c25 }, /* 0x0c26 */ { true, 0x0c26, 0x0c26 }, /* 0x0c27 */ { true, 0x0c27, 0x0c27 }, /* 0x0c28 */ { true, 0x0c28, 0x0c28 }, /* 0x0c29 */ { false, 0x0c29, 0x0c29 }, /* 0x0c2a */ { true, 0x0c2a, 0x0c2a }, /* 0x0c2b */ { true, 0x0c2b, 0x0c2b }, /* 0x0c2c */ { true, 0x0c2c, 0x0c2c }, /* 0x0c2d */ { true, 0x0c2d, 0x0c2d }, /* 0x0c2e */ { true, 0x0c2e, 0x0c2e }, /* 0x0c2f */ { true, 0x0c2f, 0x0c2f }, /* 0x0c30 */ { true, 0x0c30, 0x0c30 }, /* 0x0c31 */ { true, 0x0c31, 0x0c31 }, /* 0x0c32 */ { true, 0x0c32, 0x0c32 }, /* 0x0c33 */ { true, 0x0c33, 0x0c33 }, /* 0x0c34 */ { false, 0x0c34, 0x0c34 }, /* 0x0c35 */ { true, 0x0c35, 0x0c35 }, /* 0x0c36 */ { true, 0x0c36, 0x0c36 }, /* 0x0c37 */ { true, 0x0c37, 0x0c37 }, /* 0x0c38 */ { true, 0x0c38, 0x0c38 }, /* 0x0c39 */ { true, 0x0c39, 0x0c39 }, /* 0x0c3a */ { false, 0x0c3a, 0x0c3a }, /* 0x0c3b */ { false, 0x0c3b, 0x0c3b }, /* 0x0c3c */ { false, 0x0c3c, 0x0c3c }, /* 0x0c3d */ { false, 0x0c3d, 0x0c3d }, /* 0x0c3e */ { true, 0x0c3e, 0x0c3e }, /* 0x0c3f */ { true, 0x0c3f, 0x0c3f }, /* 0x0c40 */ { true, 0x0c40, 0x0c40 }, /* 0x0c41 */ { false, 0x0c41, 0x0c41 }, /* 0x0c42 */ { false, 0x0c42, 0x0c42 }, /* 0x0c43 */ { false, 0x0c43, 0x0c43 }, /* 0x0c44 */ { false, 0x0c44, 0x0c44 }, /* 0x0c45 */ { false, 0x0c45, 0x0c45 }, /* 0x0c46 */ { true, 0x0c46, 0x0c46 }, /* 0x0c47 */ { true, 0x0c47, 0x0c47 }, /* 0x0c48 */ { true, 0x0c48, 0x0c48 }, /* 0x0c49 */ { false, 0x0c49, 0x0c49 }, /* 0x0c4a */ { true, 0x0c4a, 0x0c4a }, /* 0x0c4b */ { true, 0x0c4b, 0x0c4b }, /* 0x0c4c */ { true, 0x0c4c, 0x0c4c }, /* 0x0c4d */ { true, 0x0c4d, 0x0c4d }, /* 0x0c4e */ { false, 0x0c4e, 0x0c4e }, /* 0x0c4f */ { false, 0x0c4f, 0x0c4f }, /* 0x0c50 */ { false, 0x0c50, 0x0c50 }, /* 0x0c51 */ { false, 0x0c51, 0x0c51 }, /* 0x0c52 */ { false, 0x0c52, 0x0c52 }, /* 0x0c53 */ { false, 0x0c53, 0x0c53 }, /* 0x0c54 */ { false, 0x0c54, 0x0c54 }, /* 0x0c55 */ { true, 0x0c55, 0x0c55 }, /* 0x0c56 */ { true, 0x0c56, 0x0c56 }, /* 0x0c57 */ { false, 0x0c57, 0x0c57 }, /* 0x0c58 */ { false, 0x0c58, 0x0c58 }, /* 0x0c59 */ { false, 0x0c59, 0x0c59 }, /* 0x0c5a */ { false, 0x0c5a, 0x0c5a }, /* 0x0c5b */ { false, 0x0c5b, 0x0c5b }, /* 0x0c5c */ { false, 0x0c5c, 0x0c5c }, /* 0x0c5d */ { false, 0x0c5d, 0x0c5d }, /* 0x0c5e */ { false, 0x0c5e, 0x0c5e }, /* 0x0c5f */ { false, 0x0c5f, 0x0c5f }, /* 0x0c60 */ { true, 0x0c60, 0x0c60 }, /* 0x0c61 */ { true, 0x0c61, 0x0c61 }, /* 0x0c62 */ { false, 0x0c62, 0x0c62 }, /* 0x0c63 */ { false, 0x0c63, 0x0c63 }, /* 0x0c64 */ { false, 0x0c64, 0x0c64 }, /* 0x0c65 */ { false, 0x0c65, 0x0c65 }, /* 0x0c66 */ { false, 0x0c66, 0x0c66 }, /* 0x0c67 */ { false, 0x0c67, 0x0c67 }, /* 0x0c68 */ { false, 0x0c68, 0x0c68 }, /* 0x0c69 */ { false, 0x0c69, 0x0c69 }, /* 0x0c6a */ { false, 0x0c6a, 0x0c6a }, /* 0x0c6b */ { false, 0x0c6b, 0x0c6b }, /* 0x0c6c */ { false, 0x0c6c, 0x0c6c }, /* 0x0c6d */ { false, 0x0c6d, 0x0c6d }, /* 0x0c6e */ { false, 0x0c6e, 0x0c6e }, /* 0x0c6f */ { false, 0x0c6f, 0x0c6f }, /* 0x0c70 */ { false, 0x0c70, 0x0c70 }, /* 0x0c71 */ { false, 0x0c71, 0x0c71 }, /* 0x0c72 */ { false, 0x0c72, 0x0c72 }, /* 0x0c73 */ { false, 0x0c73, 0x0c73 }, /* 0x0c74 */ { false, 0x0c74, 0x0c74 }, /* 0x0c75 */ { false, 0x0c75, 0x0c75 }, /* 0x0c76 */ { false, 0x0c76, 0x0c76 }, /* 0x0c77 */ { false, 0x0c77, 0x0c77 }, /* 0x0c78 */ { false, 0x0c78, 0x0c78 }, /* 0x0c79 */ { false, 0x0c79, 0x0c79 }, /* 0x0c7a */ { false, 0x0c7a, 0x0c7a }, /* 0x0c7b */ { false, 0x0c7b, 0x0c7b }, /* 0x0c7c */ { false, 0x0c7c, 0x0c7c }, /* 0x0c7d */ { false, 0x0c7d, 0x0c7d }, /* 0x0c7e */ { false, 0x0c7e, 0x0c7e }, /* 0x0c7f */ { false, 0x0c7f, 0x0c7f }, /* 0x0c80 */ { false, 0x0c80, 0x0c80 }, /* 0x0c81 */ { false, 0x0c81, 0x0c81 }, /* 0x0c82 */ { false, 0x0c82, 0x0c82 }, /* 0x0c83 */ { false, 0x0c83, 0x0c83 }, /* 0x0c84 */ { false, 0x0c84, 0x0c84 }, /* 0x0c85 */ { true, 0x0c85, 0x0c85 }, /* 0x0c86 */ { true, 0x0c86, 0x0c86 }, /* 0x0c87 */ { true, 0x0c87, 0x0c87 }, /* 0x0c88 */ { true, 0x0c88, 0x0c88 }, /* 0x0c89 */ { true, 0x0c89, 0x0c89 }, /* 0x0c8a */ { true, 0x0c8a, 0x0c8a }, /* 0x0c8b */ { true, 0x0c8b, 0x0c8b }, /* 0x0c8c */ { true, 0x0c8c, 0x0c8c }, /* 0x0c8d */ { false, 0x0c8d, 0x0c8d }, /* 0x0c8e */ { true, 0x0c8e, 0x0c8e }, /* 0x0c8f */ { true, 0x0c8f, 0x0c8f }, /* 0x0c90 */ { true, 0x0c90, 0x0c90 }, /* 0x0c91 */ { false, 0x0c91, 0x0c91 }, /* 0x0c92 */ { true, 0x0c92, 0x0c92 }, /* 0x0c93 */ { true, 0x0c93, 0x0c93 }, /* 0x0c94 */ { true, 0x0c94, 0x0c94 }, /* 0x0c95 */ { true, 0x0c95, 0x0c95 }, /* 0x0c96 */ { true, 0x0c96, 0x0c96 }, /* 0x0c97 */ { true, 0x0c97, 0x0c97 }, /* 0x0c98 */ { true, 0x0c98, 0x0c98 }, /* 0x0c99 */ { true, 0x0c99, 0x0c99 }, /* 0x0c9a */ { true, 0x0c9a, 0x0c9a }, /* 0x0c9b */ { true, 0x0c9b, 0x0c9b }, /* 0x0c9c */ { true, 0x0c9c, 0x0c9c }, /* 0x0c9d */ { true, 0x0c9d, 0x0c9d }, /* 0x0c9e */ { true, 0x0c9e, 0x0c9e }, /* 0x0c9f */ { true, 0x0c9f, 0x0c9f }, /* 0x0ca0 */ { true, 0x0ca0, 0x0ca0 }, /* 0x0ca1 */ { true, 0x0ca1, 0x0ca1 }, /* 0x0ca2 */ { true, 0x0ca2, 0x0ca2 }, /* 0x0ca3 */ { true, 0x0ca3, 0x0ca3 }, /* 0x0ca4 */ { true, 0x0ca4, 0x0ca4 }, /* 0x0ca5 */ { true, 0x0ca5, 0x0ca5 }, /* 0x0ca6 */ { true, 0x0ca6, 0x0ca6 }, /* 0x0ca7 */ { true, 0x0ca7, 0x0ca7 }, /* 0x0ca8 */ { true, 0x0ca8, 0x0ca8 }, /* 0x0ca9 */ { false, 0x0ca9, 0x0ca9 }, /* 0x0caa */ { true, 0x0caa, 0x0caa }, /* 0x0cab */ { true, 0x0cab, 0x0cab }, /* 0x0cac */ { true, 0x0cac, 0x0cac }, /* 0x0cad */ { true, 0x0cad, 0x0cad }, /* 0x0cae */ { true, 0x0cae, 0x0cae }, /* 0x0caf */ { true, 0x0caf, 0x0caf }, /* 0x0cb0 */ { true, 0x0cb0, 0x0cb0 }, /* 0x0cb1 */ { true, 0x0cb1, 0x0cb1 }, /* 0x0cb2 */ { true, 0x0cb2, 0x0cb2 }, /* 0x0cb3 */ { true, 0x0cb3, 0x0cb3 }, /* 0x0cb4 */ { false, 0x0cb4, 0x0cb4 }, /* 0x0cb5 */ { true, 0x0cb5, 0x0cb5 }, /* 0x0cb6 */ { true, 0x0cb6, 0x0cb6 }, /* 0x0cb7 */ { true, 0x0cb7, 0x0cb7 }, /* 0x0cb8 */ { true, 0x0cb8, 0x0cb8 }, /* 0x0cb9 */ { true, 0x0cb9, 0x0cb9 }, /* 0x0cba */ { false, 0x0cba, 0x0cba }, /* 0x0cbb */ { false, 0x0cbb, 0x0cbb }, /* 0x0cbc */ { true, 0x0cbc, 0x0cbc }, /* 0x0cbd */ { true, 0x0cbd, 0x0cbd }, /* 0x0cbe */ { false, 0x0cbe, 0x0cbe }, /* 0x0cbf */ { true, 0x0cbf, 0x0cbf }, /* 0x0cc0 */ { false, 0x0cc0, 0x0cc0 }, /* 0x0cc1 */ { false, 0x0cc1, 0x0cc1 }, /* 0x0cc2 */ { false, 0x0cc2, 0x0cc2 }, /* 0x0cc3 */ { false, 0x0cc3, 0x0cc3 }, /* 0x0cc4 */ { false, 0x0cc4, 0x0cc4 }, /* 0x0cc5 */ { false, 0x0cc5, 0x0cc5 }, /* 0x0cc6 */ { true, 0x0cc6, 0x0cc6 }, /* 0x0cc7 */ { false, 0x0cc7, 0x0cc7 }, /* 0x0cc8 */ { false, 0x0cc8, 0x0cc8 }, /* 0x0cc9 */ { false, 0x0cc9, 0x0cc9 }, /* 0x0cca */ { false, 0x0cca, 0x0cca }, /* 0x0ccb */ { false, 0x0ccb, 0x0ccb }, /* 0x0ccc */ { true, 0x0ccc, 0x0ccc }, /* 0x0ccd */ { true, 0x0ccd, 0x0ccd }, /* 0x0cce */ { false, 0x0cce, 0x0cce }, /* 0x0ccf */ { false, 0x0ccf, 0x0ccf }, /* 0x0cd0 */ { false, 0x0cd0, 0x0cd0 }, /* 0x0cd1 */ { false, 0x0cd1, 0x0cd1 }, /* 0x0cd2 */ { false, 0x0cd2, 0x0cd2 }, /* 0x0cd3 */ { false, 0x0cd3, 0x0cd3 }, /* 0x0cd4 */ { false, 0x0cd4, 0x0cd4 }, /* 0x0cd5 */ { false, 0x0cd5, 0x0cd5 }, /* 0x0cd6 */ { false, 0x0cd6, 0x0cd6 }, /* 0x0cd7 */ { false, 0x0cd7, 0x0cd7 }, /* 0x0cd8 */ { false, 0x0cd8, 0x0cd8 }, /* 0x0cd9 */ { false, 0x0cd9, 0x0cd9 }, /* 0x0cda */ { false, 0x0cda, 0x0cda }, /* 0x0cdb */ { false, 0x0cdb, 0x0cdb }, /* 0x0cdc */ { false, 0x0cdc, 0x0cdc }, /* 0x0cdd */ { false, 0x0cdd, 0x0cdd }, /* 0x0cde */ { true, 0x0cde, 0x0cde }, /* 0x0cdf */ { false, 0x0cdf, 0x0cdf }, /* 0x0ce0 */ { true, 0x0ce0, 0x0ce0 }, /* 0x0ce1 */ { true, 0x0ce1, 0x0ce1 }, /* 0x0ce2 */ { false, 0x0ce2, 0x0ce2 }, /* 0x0ce3 */ { false, 0x0ce3, 0x0ce3 }, /* 0x0ce4 */ { false, 0x0ce4, 0x0ce4 }, /* 0x0ce5 */ { false, 0x0ce5, 0x0ce5 }, /* 0x0ce6 */ { false, 0x0ce6, 0x0ce6 }, /* 0x0ce7 */ { false, 0x0ce7, 0x0ce7 }, /* 0x0ce8 */ { false, 0x0ce8, 0x0ce8 }, /* 0x0ce9 */ { false, 0x0ce9, 0x0ce9 }, /* 0x0cea */ { false, 0x0cea, 0x0cea }, /* 0x0ceb */ { false, 0x0ceb, 0x0ceb }, /* 0x0cec */ { false, 0x0cec, 0x0cec }, /* 0x0ced */ { false, 0x0ced, 0x0ced }, /* 0x0cee */ { false, 0x0cee, 0x0cee }, /* 0x0cef */ { false, 0x0cef, 0x0cef }, /* 0x0cf0 */ { false, 0x0cf0, 0x0cf0 }, /* 0x0cf1 */ { false, 0x0cf1, 0x0cf1 }, /* 0x0cf2 */ { false, 0x0cf2, 0x0cf2 }, /* 0x0cf3 */ { false, 0x0cf3, 0x0cf3 }, /* 0x0cf4 */ { false, 0x0cf4, 0x0cf4 }, /* 0x0cf5 */ { false, 0x0cf5, 0x0cf5 }, /* 0x0cf6 */ { false, 0x0cf6, 0x0cf6 }, /* 0x0cf7 */ { false, 0x0cf7, 0x0cf7 }, /* 0x0cf8 */ { false, 0x0cf8, 0x0cf8 }, /* 0x0cf9 */ { false, 0x0cf9, 0x0cf9 }, /* 0x0cfa */ { false, 0x0cfa, 0x0cfa }, /* 0x0cfb */ { false, 0x0cfb, 0x0cfb }, /* 0x0cfc */ { false, 0x0cfc, 0x0cfc }, /* 0x0cfd */ { false, 0x0cfd, 0x0cfd }, /* 0x0cfe */ { false, 0x0cfe, 0x0cfe }, /* 0x0cff */ { false, 0x0cff, 0x0cff }, /* 0x0d00 */ { false, 0x0d00, 0x0d00 }, /* 0x0d01 */ { false, 0x0d01, 0x0d01 }, /* 0x0d02 */ { false, 0x0d02, 0x0d02 }, /* 0x0d03 */ { false, 0x0d03, 0x0d03 }, /* 0x0d04 */ { false, 0x0d04, 0x0d04 }, /* 0x0d05 */ { true, 0x0d05, 0x0d05 }, /* 0x0d06 */ { true, 0x0d06, 0x0d06 }, /* 0x0d07 */ { true, 0x0d07, 0x0d07 }, /* 0x0d08 */ { true, 0x0d08, 0x0d08 }, /* 0x0d09 */ { true, 0x0d09, 0x0d09 }, /* 0x0d0a */ { true, 0x0d0a, 0x0d0a }, /* 0x0d0b */ { true, 0x0d0b, 0x0d0b }, /* 0x0d0c */ { true, 0x0d0c, 0x0d0c }, /* 0x0d0d */ { false, 0x0d0d, 0x0d0d }, /* 0x0d0e */ { true, 0x0d0e, 0x0d0e }, /* 0x0d0f */ { true, 0x0d0f, 0x0d0f }, /* 0x0d10 */ { true, 0x0d10, 0x0d10 }, /* 0x0d11 */ { false, 0x0d11, 0x0d11 }, /* 0x0d12 */ { true, 0x0d12, 0x0d12 }, /* 0x0d13 */ { true, 0x0d13, 0x0d13 }, /* 0x0d14 */ { true, 0x0d14, 0x0d14 }, /* 0x0d15 */ { true, 0x0d15, 0x0d15 }, /* 0x0d16 */ { true, 0x0d16, 0x0d16 }, /* 0x0d17 */ { true, 0x0d17, 0x0d17 }, /* 0x0d18 */ { true, 0x0d18, 0x0d18 }, /* 0x0d19 */ { true, 0x0d19, 0x0d19 }, /* 0x0d1a */ { true, 0x0d1a, 0x0d1a }, /* 0x0d1b */ { true, 0x0d1b, 0x0d1b }, /* 0x0d1c */ { true, 0x0d1c, 0x0d1c }, /* 0x0d1d */ { true, 0x0d1d, 0x0d1d }, /* 0x0d1e */ { true, 0x0d1e, 0x0d1e }, /* 0x0d1f */ { true, 0x0d1f, 0x0d1f }, /* 0x0d20 */ { true, 0x0d20, 0x0d20 }, /* 0x0d21 */ { true, 0x0d21, 0x0d21 }, /* 0x0d22 */ { true, 0x0d22, 0x0d22 }, /* 0x0d23 */ { true, 0x0d23, 0x0d23 }, /* 0x0d24 */ { true, 0x0d24, 0x0d24 }, /* 0x0d25 */ { true, 0x0d25, 0x0d25 }, /* 0x0d26 */ { true, 0x0d26, 0x0d26 }, /* 0x0d27 */ { true, 0x0d27, 0x0d27 }, /* 0x0d28 */ { true, 0x0d28, 0x0d28 }, /* 0x0d29 */ { false, 0x0d29, 0x0d29 }, /* 0x0d2a */ { true, 0x0d2a, 0x0d2a }, /* 0x0d2b */ { true, 0x0d2b, 0x0d2b }, /* 0x0d2c */ { true, 0x0d2c, 0x0d2c }, /* 0x0d2d */ { true, 0x0d2d, 0x0d2d }, /* 0x0d2e */ { true, 0x0d2e, 0x0d2e }, /* 0x0d2f */ { true, 0x0d2f, 0x0d2f }, /* 0x0d30 */ { true, 0x0d30, 0x0d30 }, /* 0x0d31 */ { true, 0x0d31, 0x0d31 }, /* 0x0d32 */ { true, 0x0d32, 0x0d32 }, /* 0x0d33 */ { true, 0x0d33, 0x0d33 }, /* 0x0d34 */ { true, 0x0d34, 0x0d34 }, /* 0x0d35 */ { true, 0x0d35, 0x0d35 }, /* 0x0d36 */ { true, 0x0d36, 0x0d36 }, /* 0x0d37 */ { true, 0x0d37, 0x0d37 }, /* 0x0d38 */ { true, 0x0d38, 0x0d38 }, /* 0x0d39 */ { true, 0x0d39, 0x0d39 }, /* 0x0d3a */ { false, 0x0d3a, 0x0d3a }, /* 0x0d3b */ { false, 0x0d3b, 0x0d3b }, /* 0x0d3c */ { false, 0x0d3c, 0x0d3c }, /* 0x0d3d */ { false, 0x0d3d, 0x0d3d }, /* 0x0d3e */ { false, 0x0d3e, 0x0d3e }, /* 0x0d3f */ { false, 0x0d3f, 0x0d3f }, /* 0x0d40 */ { false, 0x0d40, 0x0d40 }, /* 0x0d41 */ { true, 0x0d41, 0x0d41 }, /* 0x0d42 */ { true, 0x0d42, 0x0d42 }, /* 0x0d43 */ { true, 0x0d43, 0x0d43 }, /* 0x0d44 */ { false, 0x0d44, 0x0d44 }, /* 0x0d45 */ { false, 0x0d45, 0x0d45 }, /* 0x0d46 */ { false, 0x0d46, 0x0d46 }, /* 0x0d47 */ { false, 0x0d47, 0x0d47 }, /* 0x0d48 */ { false, 0x0d48, 0x0d48 }, /* 0x0d49 */ { false, 0x0d49, 0x0d49 }, /* 0x0d4a */ { false, 0x0d4a, 0x0d4a }, /* 0x0d4b */ { false, 0x0d4b, 0x0d4b }, /* 0x0d4c */ { false, 0x0d4c, 0x0d4c }, /* 0x0d4d */ { true, 0x0d4d, 0x0d4d }, /* 0x0d4e */ { false, 0x0d4e, 0x0d4e }, /* 0x0d4f */ { false, 0x0d4f, 0x0d4f }, /* 0x0d50 */ { false, 0x0d50, 0x0d50 }, /* 0x0d51 */ { false, 0x0d51, 0x0d51 }, /* 0x0d52 */ { false, 0x0d52, 0x0d52 }, /* 0x0d53 */ { false, 0x0d53, 0x0d53 }, /* 0x0d54 */ { false, 0x0d54, 0x0d54 }, /* 0x0d55 */ { false, 0x0d55, 0x0d55 }, /* 0x0d56 */ { false, 0x0d56, 0x0d56 }, /* 0x0d57 */ { false, 0x0d57, 0x0d57 }, /* 0x0d58 */ { false, 0x0d58, 0x0d58 }, /* 0x0d59 */ { false, 0x0d59, 0x0d59 }, /* 0x0d5a */ { false, 0x0d5a, 0x0d5a }, /* 0x0d5b */ { false, 0x0d5b, 0x0d5b }, /* 0x0d5c */ { false, 0x0d5c, 0x0d5c }, /* 0x0d5d */ { false, 0x0d5d, 0x0d5d }, /* 0x0d5e */ { false, 0x0d5e, 0x0d5e }, /* 0x0d5f */ { false, 0x0d5f, 0x0d5f }, /* 0x0d60 */ { true, 0x0d60, 0x0d60 }, /* 0x0d61 */ { true, 0x0d61, 0x0d61 }, /* 0x0d62 */ { false, 0x0d62, 0x0d62 }, /* 0x0d63 */ { false, 0x0d63, 0x0d63 }, /* 0x0d64 */ { false, 0x0d64, 0x0d64 }, /* 0x0d65 */ { false, 0x0d65, 0x0d65 }, /* 0x0d66 */ { false, 0x0d66, 0x0d66 }, /* 0x0d67 */ { false, 0x0d67, 0x0d67 }, /* 0x0d68 */ { false, 0x0d68, 0x0d68 }, /* 0x0d69 */ { false, 0x0d69, 0x0d69 }, /* 0x0d6a */ { false, 0x0d6a, 0x0d6a }, /* 0x0d6b */ { false, 0x0d6b, 0x0d6b }, /* 0x0d6c */ { false, 0x0d6c, 0x0d6c }, /* 0x0d6d */ { false, 0x0d6d, 0x0d6d }, /* 0x0d6e */ { false, 0x0d6e, 0x0d6e }, /* 0x0d6f */ { false, 0x0d6f, 0x0d6f }, /* 0x0d70 */ { false, 0x0d70, 0x0d70 }, /* 0x0d71 */ { false, 0x0d71, 0x0d71 }, /* 0x0d72 */ { false, 0x0d72, 0x0d72 }, /* 0x0d73 */ { false, 0x0d73, 0x0d73 }, /* 0x0d74 */ { false, 0x0d74, 0x0d74 }, /* 0x0d75 */ { false, 0x0d75, 0x0d75 }, /* 0x0d76 */ { false, 0x0d76, 0x0d76 }, /* 0x0d77 */ { false, 0x0d77, 0x0d77 }, /* 0x0d78 */ { false, 0x0d78, 0x0d78 }, /* 0x0d79 */ { false, 0x0d79, 0x0d79 }, /* 0x0d7a */ { false, 0x0d7a, 0x0d7a }, /* 0x0d7b */ { false, 0x0d7b, 0x0d7b }, /* 0x0d7c */ { false, 0x0d7c, 0x0d7c }, /* 0x0d7d */ { false, 0x0d7d, 0x0d7d }, /* 0x0d7e */ { false, 0x0d7e, 0x0d7e }, /* 0x0d7f */ { false, 0x0d7f, 0x0d7f }, /* 0x0d80 */ { false, 0x0d80, 0x0d80 }, /* 0x0d81 */ { false, 0x0d81, 0x0d81 }, /* 0x0d82 */ { false, 0x0d82, 0x0d82 }, /* 0x0d83 */ { false, 0x0d83, 0x0d83 }, /* 0x0d84 */ { false, 0x0d84, 0x0d84 }, /* 0x0d85 */ { true, 0x0d85, 0x0d85 }, /* 0x0d86 */ { true, 0x0d86, 0x0d86 }, /* 0x0d87 */ { true, 0x0d87, 0x0d87 }, /* 0x0d88 */ { true, 0x0d88, 0x0d88 }, /* 0x0d89 */ { true, 0x0d89, 0x0d89 }, /* 0x0d8a */ { true, 0x0d8a, 0x0d8a }, /* 0x0d8b */ { true, 0x0d8b, 0x0d8b }, /* 0x0d8c */ { true, 0x0d8c, 0x0d8c }, /* 0x0d8d */ { true, 0x0d8d, 0x0d8d }, /* 0x0d8e */ { true, 0x0d8e, 0x0d8e }, /* 0x0d8f */ { true, 0x0d8f, 0x0d8f }, /* 0x0d90 */ { true, 0x0d90, 0x0d90 }, /* 0x0d91 */ { true, 0x0d91, 0x0d91 }, /* 0x0d92 */ { true, 0x0d92, 0x0d92 }, /* 0x0d93 */ { true, 0x0d93, 0x0d93 }, /* 0x0d94 */ { true, 0x0d94, 0x0d94 }, /* 0x0d95 */ { true, 0x0d95, 0x0d95 }, /* 0x0d96 */ { true, 0x0d96, 0x0d96 }, /* 0x0d97 */ { false, 0x0d97, 0x0d97 }, /* 0x0d98 */ { false, 0x0d98, 0x0d98 }, /* 0x0d99 */ { false, 0x0d99, 0x0d99 }, /* 0x0d9a */ { true, 0x0d9a, 0x0d9a }, /* 0x0d9b */ { true, 0x0d9b, 0x0d9b }, /* 0x0d9c */ { true, 0x0d9c, 0x0d9c }, /* 0x0d9d */ { true, 0x0d9d, 0x0d9d }, /* 0x0d9e */ { true, 0x0d9e, 0x0d9e }, /* 0x0d9f */ { true, 0x0d9f, 0x0d9f }, /* 0x0da0 */ { true, 0x0da0, 0x0da0 }, /* 0x0da1 */ { true, 0x0da1, 0x0da1 }, /* 0x0da2 */ { true, 0x0da2, 0x0da2 }, /* 0x0da3 */ { true, 0x0da3, 0x0da3 }, /* 0x0da4 */ { true, 0x0da4, 0x0da4 }, /* 0x0da5 */ { true, 0x0da5, 0x0da5 }, /* 0x0da6 */ { true, 0x0da6, 0x0da6 }, /* 0x0da7 */ { true, 0x0da7, 0x0da7 }, /* 0x0da8 */ { true, 0x0da8, 0x0da8 }, /* 0x0da9 */ { true, 0x0da9, 0x0da9 }, /* 0x0daa */ { true, 0x0daa, 0x0daa }, /* 0x0dab */ { true, 0x0dab, 0x0dab }, /* 0x0dac */ { true, 0x0dac, 0x0dac }, /* 0x0dad */ { true, 0x0dad, 0x0dad }, /* 0x0dae */ { true, 0x0dae, 0x0dae }, /* 0x0daf */ { true, 0x0daf, 0x0daf }, /* 0x0db0 */ { true, 0x0db0, 0x0db0 }, /* 0x0db1 */ { true, 0x0db1, 0x0db1 }, /* 0x0db2 */ { false, 0x0db2, 0x0db2 }, /* 0x0db3 */ { true, 0x0db3, 0x0db3 }, /* 0x0db4 */ { true, 0x0db4, 0x0db4 }, /* 0x0db5 */ { true, 0x0db5, 0x0db5 }, /* 0x0db6 */ { true, 0x0db6, 0x0db6 }, /* 0x0db7 */ { true, 0x0db7, 0x0db7 }, /* 0x0db8 */ { true, 0x0db8, 0x0db8 }, /* 0x0db9 */ { true, 0x0db9, 0x0db9 }, /* 0x0dba */ { true, 0x0dba, 0x0dba }, /* 0x0dbb */ { true, 0x0dbb, 0x0dbb }, /* 0x0dbc */ { false, 0x0dbc, 0x0dbc }, /* 0x0dbd */ { true, 0x0dbd, 0x0dbd }, /* 0x0dbe */ { false, 0x0dbe, 0x0dbe }, /* 0x0dbf */ { false, 0x0dbf, 0x0dbf }, /* 0x0dc0 */ { true, 0x0dc0, 0x0dc0 }, /* 0x0dc1 */ { true, 0x0dc1, 0x0dc1 }, /* 0x0dc2 */ { true, 0x0dc2, 0x0dc2 }, /* 0x0dc3 */ { true, 0x0dc3, 0x0dc3 }, /* 0x0dc4 */ { true, 0x0dc4, 0x0dc4 }, /* 0x0dc5 */ { true, 0x0dc5, 0x0dc5 }, /* 0x0dc6 */ { true, 0x0dc6, 0x0dc6 }, /* 0x0dc7 */ { false, 0x0dc7, 0x0dc7 }, /* 0x0dc8 */ { false, 0x0dc8, 0x0dc8 }, /* 0x0dc9 */ { false, 0x0dc9, 0x0dc9 }, /* 0x0dca */ { true, 0x0dca, 0x0dca }, /* 0x0dcb */ { false, 0x0dcb, 0x0dcb }, /* 0x0dcc */ { false, 0x0dcc, 0x0dcc }, /* 0x0dcd */ { false, 0x0dcd, 0x0dcd }, /* 0x0dce */ { false, 0x0dce, 0x0dce }, /* 0x0dcf */ { false, 0x0dcf, 0x0dcf }, /* 0x0dd0 */ { false, 0x0dd0, 0x0dd0 }, /* 0x0dd1 */ { false, 0x0dd1, 0x0dd1 }, /* 0x0dd2 */ { true, 0x0dd2, 0x0dd2 }, /* 0x0dd3 */ { true, 0x0dd3, 0x0dd3 }, /* 0x0dd4 */ { true, 0x0dd4, 0x0dd4 }, /* 0x0dd5 */ { false, 0x0dd5, 0x0dd5 }, /* 0x0dd6 */ { true, 0x0dd6, 0x0dd6 }, /* 0x0dd7 */ { false, 0x0dd7, 0x0dd7 }, /* 0x0dd8 */ { false, 0x0dd8, 0x0dd8 }, /* 0x0dd9 */ { false, 0x0dd9, 0x0dd9 }, /* 0x0dda */ { false, 0x0dda, 0x0dda }, /* 0x0ddb */ { false, 0x0ddb, 0x0ddb }, /* 0x0ddc */ { false, 0x0ddc, 0x0ddc }, /* 0x0ddd */ { false, 0x0ddd, 0x0ddd }, /* 0x0dde */ { false, 0x0dde, 0x0dde }, /* 0x0ddf */ { false, 0x0ddf, 0x0ddf }, /* 0x0de0 */ { false, 0x0de0, 0x0de0 }, /* 0x0de1 */ { false, 0x0de1, 0x0de1 }, /* 0x0de2 */ { false, 0x0de2, 0x0de2 }, /* 0x0de3 */ { false, 0x0de3, 0x0de3 }, /* 0x0de4 */ { false, 0x0de4, 0x0de4 }, /* 0x0de5 */ { false, 0x0de5, 0x0de5 }, /* 0x0de6 */ { false, 0x0de6, 0x0de6 }, /* 0x0de7 */ { false, 0x0de7, 0x0de7 }, /* 0x0de8 */ { false, 0x0de8, 0x0de8 }, /* 0x0de9 */ { false, 0x0de9, 0x0de9 }, /* 0x0dea */ { false, 0x0dea, 0x0dea }, /* 0x0deb */ { false, 0x0deb, 0x0deb }, /* 0x0dec */ { false, 0x0dec, 0x0dec }, /* 0x0ded */ { false, 0x0ded, 0x0ded }, /* 0x0dee */ { false, 0x0dee, 0x0dee }, /* 0x0def */ { false, 0x0def, 0x0def }, /* 0x0df0 */ { false, 0x0df0, 0x0df0 }, /* 0x0df1 */ { false, 0x0df1, 0x0df1 }, /* 0x0df2 */ { false, 0x0df2, 0x0df2 }, /* 0x0df3 */ { false, 0x0df3, 0x0df3 }, /* 0x0df4 */ { false, 0x0df4, 0x0df4 }, /* 0x0df5 */ { false, 0x0df5, 0x0df5 }, /* 0x0df6 */ { false, 0x0df6, 0x0df6 }, /* 0x0df7 */ { false, 0x0df7, 0x0df7 }, /* 0x0df8 */ { false, 0x0df8, 0x0df8 }, /* 0x0df9 */ { false, 0x0df9, 0x0df9 }, /* 0x0dfa */ { false, 0x0dfa, 0x0dfa }, /* 0x0dfb */ { false, 0x0dfb, 0x0dfb }, /* 0x0dfc */ { false, 0x0dfc, 0x0dfc }, /* 0x0dfd */ { false, 0x0dfd, 0x0dfd }, /* 0x0dfe */ { false, 0x0dfe, 0x0dfe }, /* 0x0dff */ { false, 0x0dff, 0x0dff }, /* 0x0e00 */ { false, 0x0e00, 0x0e00 }, /* 0x0e01 */ { true, 0x0e01, 0x0e01 }, /* 0x0e02 */ { true, 0x0e02, 0x0e02 }, /* 0x0e03 */ { true, 0x0e03, 0x0e03 }, /* 0x0e04 */ { true, 0x0e04, 0x0e04 }, /* 0x0e05 */ { true, 0x0e05, 0x0e05 }, /* 0x0e06 */ { true, 0x0e06, 0x0e06 }, /* 0x0e07 */ { true, 0x0e07, 0x0e07 }, /* 0x0e08 */ { true, 0x0e08, 0x0e08 }, /* 0x0e09 */ { true, 0x0e09, 0x0e09 }, /* 0x0e0a */ { true, 0x0e0a, 0x0e0a }, /* 0x0e0b */ { true, 0x0e0b, 0x0e0b }, /* 0x0e0c */ { true, 0x0e0c, 0x0e0c }, /* 0x0e0d */ { true, 0x0e0d, 0x0e0d }, /* 0x0e0e */ { true, 0x0e0e, 0x0e0e }, /* 0x0e0f */ { true, 0x0e0f, 0x0e0f }, /* 0x0e10 */ { true, 0x0e10, 0x0e10 }, /* 0x0e11 */ { true, 0x0e11, 0x0e11 }, /* 0x0e12 */ { true, 0x0e12, 0x0e12 }, /* 0x0e13 */ { true, 0x0e13, 0x0e13 }, /* 0x0e14 */ { true, 0x0e14, 0x0e14 }, /* 0x0e15 */ { true, 0x0e15, 0x0e15 }, /* 0x0e16 */ { true, 0x0e16, 0x0e16 }, /* 0x0e17 */ { true, 0x0e17, 0x0e17 }, /* 0x0e18 */ { true, 0x0e18, 0x0e18 }, /* 0x0e19 */ { true, 0x0e19, 0x0e19 }, /* 0x0e1a */ { true, 0x0e1a, 0x0e1a }, /* 0x0e1b */ { true, 0x0e1b, 0x0e1b }, /* 0x0e1c */ { true, 0x0e1c, 0x0e1c }, /* 0x0e1d */ { true, 0x0e1d, 0x0e1d }, /* 0x0e1e */ { true, 0x0e1e, 0x0e1e }, /* 0x0e1f */ { true, 0x0e1f, 0x0e1f }, /* 0x0e20 */ { true, 0x0e20, 0x0e20 }, /* 0x0e21 */ { true, 0x0e21, 0x0e21 }, /* 0x0e22 */ { true, 0x0e22, 0x0e22 }, /* 0x0e23 */ { true, 0x0e23, 0x0e23 }, /* 0x0e24 */ { true, 0x0e24, 0x0e24 }, /* 0x0e25 */ { true, 0x0e25, 0x0e25 }, /* 0x0e26 */ { true, 0x0e26, 0x0e26 }, /* 0x0e27 */ { true, 0x0e27, 0x0e27 }, /* 0x0e28 */ { true, 0x0e28, 0x0e28 }, /* 0x0e29 */ { true, 0x0e29, 0x0e29 }, /* 0x0e2a */ { true, 0x0e2a, 0x0e2a }, /* 0x0e2b */ { true, 0x0e2b, 0x0e2b }, /* 0x0e2c */ { true, 0x0e2c, 0x0e2c }, /* 0x0e2d */ { true, 0x0e2d, 0x0e2d }, /* 0x0e2e */ { true, 0x0e2e, 0x0e2e }, /* 0x0e2f */ { true, 0x0e2f, 0x0e2f }, /* 0x0e30 */ { true, 0x0e30, 0x0e30 }, /* 0x0e31 */ { true, 0x0e31, 0x0e31 }, /* 0x0e32 */ { true, 0x0e32, 0x0e32 }, /* 0x0e33 */ { true, 0x0e33, 0x0e33 }, /* 0x0e34 */ { true, 0x0e34, 0x0e34 }, /* 0x0e35 */ { true, 0x0e35, 0x0e35 }, /* 0x0e36 */ { true, 0x0e36, 0x0e36 }, /* 0x0e37 */ { true, 0x0e37, 0x0e37 }, /* 0x0e38 */ { true, 0x0e38, 0x0e38 }, /* 0x0e39 */ { true, 0x0e39, 0x0e39 }, /* 0x0e3a */ { true, 0x0e3a, 0x0e3a }, /* 0x0e3b */ { false, 0x0e3b, 0x0e3b }, /* 0x0e3c */ { false, 0x0e3c, 0x0e3c }, /* 0x0e3d */ { false, 0x0e3d, 0x0e3d }, /* 0x0e3e */ { false, 0x0e3e, 0x0e3e }, /* 0x0e3f */ { false, 0x0e3f, 0x0e3f }, /* 0x0e40 */ { true, 0x0e40, 0x0e40 }, /* 0x0e41 */ { true, 0x0e41, 0x0e41 }, /* 0x0e42 */ { true, 0x0e42, 0x0e42 }, /* 0x0e43 */ { true, 0x0e43, 0x0e43 }, /* 0x0e44 */ { true, 0x0e44, 0x0e44 }, /* 0x0e45 */ { true, 0x0e45, 0x0e45 }, /* 0x0e46 */ { true, 0x0e46, 0x0e46 }, /* 0x0e47 */ { true, 0x0e47, 0x0e47 }, /* 0x0e48 */ { true, 0x0e48, 0x0e48 }, /* 0x0e49 */ { true, 0x0e49, 0x0e49 }, /* 0x0e4a */ { true, 0x0e4a, 0x0e4a }, /* 0x0e4b */ { true, 0x0e4b, 0x0e4b }, /* 0x0e4c */ { true, 0x0e4c, 0x0e4c }, /* 0x0e4d */ { true, 0x0e4d, 0x0e4d }, /* 0x0e4e */ { true, 0x0e4e, 0x0e4e }, /* 0x0e4f */ { false, 0x0e4f, 0x0e4f }, /* 0x0e50 */ { false, 0x0e50, 0x0e50 }, /* 0x0e51 */ { false, 0x0e51, 0x0e51 }, /* 0x0e52 */ { false, 0x0e52, 0x0e52 }, /* 0x0e53 */ { false, 0x0e53, 0x0e53 }, /* 0x0e54 */ { false, 0x0e54, 0x0e54 }, /* 0x0e55 */ { false, 0x0e55, 0x0e55 }, /* 0x0e56 */ { false, 0x0e56, 0x0e56 }, /* 0x0e57 */ { false, 0x0e57, 0x0e57 }, /* 0x0e58 */ { false, 0x0e58, 0x0e58 }, /* 0x0e59 */ { false, 0x0e59, 0x0e59 }, /* 0x0e5a */ { false, 0x0e5a, 0x0e5a }, /* 0x0e5b */ { false, 0x0e5b, 0x0e5b }, /* 0x0e5c */ { false, 0x0e5c, 0x0e5c }, /* 0x0e5d */ { false, 0x0e5d, 0x0e5d }, /* 0x0e5e */ { false, 0x0e5e, 0x0e5e }, /* 0x0e5f */ { false, 0x0e5f, 0x0e5f }, /* 0x0e60 */ { false, 0x0e60, 0x0e60 }, /* 0x0e61 */ { false, 0x0e61, 0x0e61 }, /* 0x0e62 */ { false, 0x0e62, 0x0e62 }, /* 0x0e63 */ { false, 0x0e63, 0x0e63 }, /* 0x0e64 */ { false, 0x0e64, 0x0e64 }, /* 0x0e65 */ { false, 0x0e65, 0x0e65 }, /* 0x0e66 */ { false, 0x0e66, 0x0e66 }, /* 0x0e67 */ { false, 0x0e67, 0x0e67 }, /* 0x0e68 */ { false, 0x0e68, 0x0e68 }, /* 0x0e69 */ { false, 0x0e69, 0x0e69 }, /* 0x0e6a */ { false, 0x0e6a, 0x0e6a }, /* 0x0e6b */ { false, 0x0e6b, 0x0e6b }, /* 0x0e6c */ { false, 0x0e6c, 0x0e6c }, /* 0x0e6d */ { false, 0x0e6d, 0x0e6d }, /* 0x0e6e */ { false, 0x0e6e, 0x0e6e }, /* 0x0e6f */ { false, 0x0e6f, 0x0e6f }, /* 0x0e70 */ { false, 0x0e70, 0x0e70 }, /* 0x0e71 */ { false, 0x0e71, 0x0e71 }, /* 0x0e72 */ { false, 0x0e72, 0x0e72 }, /* 0x0e73 */ { false, 0x0e73, 0x0e73 }, /* 0x0e74 */ { false, 0x0e74, 0x0e74 }, /* 0x0e75 */ { false, 0x0e75, 0x0e75 }, /* 0x0e76 */ { false, 0x0e76, 0x0e76 }, /* 0x0e77 */ { false, 0x0e77, 0x0e77 }, /* 0x0e78 */ { false, 0x0e78, 0x0e78 }, /* 0x0e79 */ { false, 0x0e79, 0x0e79 }, /* 0x0e7a */ { false, 0x0e7a, 0x0e7a }, /* 0x0e7b */ { false, 0x0e7b, 0x0e7b }, /* 0x0e7c */ { false, 0x0e7c, 0x0e7c }, /* 0x0e7d */ { false, 0x0e7d, 0x0e7d }, /* 0x0e7e */ { false, 0x0e7e, 0x0e7e }, /* 0x0e7f */ { false, 0x0e7f, 0x0e7f }, /* 0x0e80 */ { false, 0x0e80, 0x0e80 }, /* 0x0e81 */ { true, 0x0e81, 0x0e81 }, /* 0x0e82 */ { true, 0x0e82, 0x0e82 }, /* 0x0e83 */ { false, 0x0e83, 0x0e83 }, /* 0x0e84 */ { true, 0x0e84, 0x0e84 }, /* 0x0e85 */ { false, 0x0e85, 0x0e85 }, /* 0x0e86 */ { false, 0x0e86, 0x0e86 }, /* 0x0e87 */ { true, 0x0e87, 0x0e87 }, /* 0x0e88 */ { true, 0x0e88, 0x0e88 }, /* 0x0e89 */ { false, 0x0e89, 0x0e89 }, /* 0x0e8a */ { true, 0x0e8a, 0x0e8a }, /* 0x0e8b */ { false, 0x0e8b, 0x0e8b }, /* 0x0e8c */ { false, 0x0e8c, 0x0e8c }, /* 0x0e8d */ { true, 0x0e8d, 0x0e8d }, /* 0x0e8e */ { false, 0x0e8e, 0x0e8e }, /* 0x0e8f */ { false, 0x0e8f, 0x0e8f }, /* 0x0e90 */ { false, 0x0e90, 0x0e90 }, /* 0x0e91 */ { false, 0x0e91, 0x0e91 }, /* 0x0e92 */ { false, 0x0e92, 0x0e92 }, /* 0x0e93 */ { false, 0x0e93, 0x0e93 }, /* 0x0e94 */ { true, 0x0e94, 0x0e94 }, /* 0x0e95 */ { true, 0x0e95, 0x0e95 }, /* 0x0e96 */ { true, 0x0e96, 0x0e96 }, /* 0x0e97 */ { true, 0x0e97, 0x0e97 }, /* 0x0e98 */ { false, 0x0e98, 0x0e98 }, /* 0x0e99 */ { true, 0x0e99, 0x0e99 }, /* 0x0e9a */ { true, 0x0e9a, 0x0e9a }, /* 0x0e9b */ { true, 0x0e9b, 0x0e9b }, /* 0x0e9c */ { true, 0x0e9c, 0x0e9c }, /* 0x0e9d */ { true, 0x0e9d, 0x0e9d }, /* 0x0e9e */ { true, 0x0e9e, 0x0e9e }, /* 0x0e9f */ { true, 0x0e9f, 0x0e9f }, /* 0x0ea0 */ { false, 0x0ea0, 0x0ea0 }, /* 0x0ea1 */ { true, 0x0ea1, 0x0ea1 }, /* 0x0ea2 */ { true, 0x0ea2, 0x0ea2 }, /* 0x0ea3 */ { true, 0x0ea3, 0x0ea3 }, /* 0x0ea4 */ { false, 0x0ea4, 0x0ea4 }, /* 0x0ea5 */ { true, 0x0ea5, 0x0ea5 }, /* 0x0ea6 */ { false, 0x0ea6, 0x0ea6 }, /* 0x0ea7 */ { true, 0x0ea7, 0x0ea7 }, /* 0x0ea8 */ { false, 0x0ea8, 0x0ea8 }, /* 0x0ea9 */ { false, 0x0ea9, 0x0ea9 }, /* 0x0eaa */ { true, 0x0eaa, 0x0eaa }, /* 0x0eab */ { true, 0x0eab, 0x0eab }, /* 0x0eac */ { false, 0x0eac, 0x0eac }, /* 0x0ead */ { true, 0x0ead, 0x0ead }, /* 0x0eae */ { true, 0x0eae, 0x0eae }, /* 0x0eaf */ { true, 0x0eaf, 0x0eaf }, /* 0x0eb0 */ { true, 0x0eb0, 0x0eb0 }, /* 0x0eb1 */ { true, 0x0eb1, 0x0eb1 }, /* 0x0eb2 */ { true, 0x0eb2, 0x0eb2 }, /* 0x0eb3 */ { true, 0x0eb3, 0x0eb3 }, /* 0x0eb4 */ { true, 0x0eb4, 0x0eb4 }, /* 0x0eb5 */ { true, 0x0eb5, 0x0eb5 }, /* 0x0eb6 */ { true, 0x0eb6, 0x0eb6 }, /* 0x0eb7 */ { true, 0x0eb7, 0x0eb7 }, /* 0x0eb8 */ { true, 0x0eb8, 0x0eb8 }, /* 0x0eb9 */ { true, 0x0eb9, 0x0eb9 }, /* 0x0eba */ { false, 0x0eba, 0x0eba }, /* 0x0ebb */ { true, 0x0ebb, 0x0ebb }, /* 0x0ebc */ { true, 0x0ebc, 0x0ebc }, /* 0x0ebd */ { true, 0x0ebd, 0x0ebd }, /* 0x0ebe */ { false, 0x0ebe, 0x0ebe }, /* 0x0ebf */ { false, 0x0ebf, 0x0ebf }, /* 0x0ec0 */ { true, 0x0ec0, 0x0ec0 }, /* 0x0ec1 */ { true, 0x0ec1, 0x0ec1 }, /* 0x0ec2 */ { true, 0x0ec2, 0x0ec2 }, /* 0x0ec3 */ { true, 0x0ec3, 0x0ec3 }, /* 0x0ec4 */ { true, 0x0ec4, 0x0ec4 }, /* 0x0ec5 */ { false, 0x0ec5, 0x0ec5 }, /* 0x0ec6 */ { true, 0x0ec6, 0x0ec6 }, /* 0x0ec7 */ { false, 0x0ec7, 0x0ec7 }, /* 0x0ec8 */ { true, 0x0ec8, 0x0ec8 }, /* 0x0ec9 */ { true, 0x0ec9, 0x0ec9 }, /* 0x0eca */ { true, 0x0eca, 0x0eca }, /* 0x0ecb */ { true, 0x0ecb, 0x0ecb }, /* 0x0ecc */ { true, 0x0ecc, 0x0ecc }, /* 0x0ecd */ { true, 0x0ecd, 0x0ecd }, /* 0x0ece */ { false, 0x0ece, 0x0ece }, /* 0x0ecf */ { false, 0x0ecf, 0x0ecf }, /* 0x0ed0 */ { false, 0x0ed0, 0x0ed0 }, /* 0x0ed1 */ { false, 0x0ed1, 0x0ed1 }, /* 0x0ed2 */ { false, 0x0ed2, 0x0ed2 }, /* 0x0ed3 */ { false, 0x0ed3, 0x0ed3 }, /* 0x0ed4 */ { false, 0x0ed4, 0x0ed4 }, /* 0x0ed5 */ { false, 0x0ed5, 0x0ed5 }, /* 0x0ed6 */ { false, 0x0ed6, 0x0ed6 }, /* 0x0ed7 */ { false, 0x0ed7, 0x0ed7 }, /* 0x0ed8 */ { false, 0x0ed8, 0x0ed8 }, /* 0x0ed9 */ { false, 0x0ed9, 0x0ed9 }, /* 0x0eda */ { false, 0x0eda, 0x0eda }, /* 0x0edb */ { false, 0x0edb, 0x0edb }, /* 0x0edc */ { true, 0x0edc, 0x0edc }, /* 0x0edd */ { true, 0x0edd, 0x0edd }, /* 0x0ede */ { false, 0x0ede, 0x0ede }, /* 0x0edf */ { false, 0x0edf, 0x0edf }, /* 0x0ee0 */ { false, 0x0ee0, 0x0ee0 }, /* 0x0ee1 */ { false, 0x0ee1, 0x0ee1 }, /* 0x0ee2 */ { false, 0x0ee2, 0x0ee2 }, /* 0x0ee3 */ { false, 0x0ee3, 0x0ee3 }, /* 0x0ee4 */ { false, 0x0ee4, 0x0ee4 }, /* 0x0ee5 */ { false, 0x0ee5, 0x0ee5 }, /* 0x0ee6 */ { false, 0x0ee6, 0x0ee6 }, /* 0x0ee7 */ { false, 0x0ee7, 0x0ee7 }, /* 0x0ee8 */ { false, 0x0ee8, 0x0ee8 }, /* 0x0ee9 */ { false, 0x0ee9, 0x0ee9 }, /* 0x0eea */ { false, 0x0eea, 0x0eea }, /* 0x0eeb */ { false, 0x0eeb, 0x0eeb }, /* 0x0eec */ { false, 0x0eec, 0x0eec }, /* 0x0eed */ { false, 0x0eed, 0x0eed }, /* 0x0eee */ { false, 0x0eee, 0x0eee }, /* 0x0eef */ { false, 0x0eef, 0x0eef }, /* 0x0ef0 */ { false, 0x0ef0, 0x0ef0 }, /* 0x0ef1 */ { false, 0x0ef1, 0x0ef1 }, /* 0x0ef2 */ { false, 0x0ef2, 0x0ef2 }, /* 0x0ef3 */ { false, 0x0ef3, 0x0ef3 }, /* 0x0ef4 */ { false, 0x0ef4, 0x0ef4 }, /* 0x0ef5 */ { false, 0x0ef5, 0x0ef5 }, /* 0x0ef6 */ { false, 0x0ef6, 0x0ef6 }, /* 0x0ef7 */ { false, 0x0ef7, 0x0ef7 }, /* 0x0ef8 */ { false, 0x0ef8, 0x0ef8 }, /* 0x0ef9 */ { false, 0x0ef9, 0x0ef9 }, /* 0x0efa */ { false, 0x0efa, 0x0efa }, /* 0x0efb */ { false, 0x0efb, 0x0efb }, /* 0x0efc */ { false, 0x0efc, 0x0efc }, /* 0x0efd */ { false, 0x0efd, 0x0efd }, /* 0x0efe */ { false, 0x0efe, 0x0efe }, /* 0x0eff */ { false, 0x0eff, 0x0eff }, /* 0x0f00 */ { true, 0x0f00, 0x0f00 }, /* 0x0f01 */ { false, 0x0f01, 0x0f01 }, /* 0x0f02 */ { false, 0x0f02, 0x0f02 }, /* 0x0f03 */ { false, 0x0f03, 0x0f03 }, /* 0x0f04 */ { false, 0x0f04, 0x0f04 }, /* 0x0f05 */ { false, 0x0f05, 0x0f05 }, /* 0x0f06 */ { false, 0x0f06, 0x0f06 }, /* 0x0f07 */ { false, 0x0f07, 0x0f07 }, /* 0x0f08 */ { false, 0x0f08, 0x0f08 }, /* 0x0f09 */ { false, 0x0f09, 0x0f09 }, /* 0x0f0a */ { false, 0x0f0a, 0x0f0a }, /* 0x0f0b */ { false, 0x0f0b, 0x0f0b }, /* 0x0f0c */ { false, 0x0f0c, 0x0f0c }, /* 0x0f0d */ { false, 0x0f0d, 0x0f0d }, /* 0x0f0e */ { false, 0x0f0e, 0x0f0e }, /* 0x0f0f */ { false, 0x0f0f, 0x0f0f }, /* 0x0f10 */ { false, 0x0f10, 0x0f10 }, /* 0x0f11 */ { false, 0x0f11, 0x0f11 }, /* 0x0f12 */ { false, 0x0f12, 0x0f12 }, /* 0x0f13 */ { false, 0x0f13, 0x0f13 }, /* 0x0f14 */ { false, 0x0f14, 0x0f14 }, /* 0x0f15 */ { false, 0x0f15, 0x0f15 }, /* 0x0f16 */ { false, 0x0f16, 0x0f16 }, /* 0x0f17 */ { false, 0x0f17, 0x0f17 }, /* 0x0f18 */ { true, 0x0f18, 0x0f18 }, /* 0x0f19 */ { true, 0x0f19, 0x0f19 }, /* 0x0f1a */ { false, 0x0f1a, 0x0f1a }, /* 0x0f1b */ { false, 0x0f1b, 0x0f1b }, /* 0x0f1c */ { false, 0x0f1c, 0x0f1c }, /* 0x0f1d */ { false, 0x0f1d, 0x0f1d }, /* 0x0f1e */ { false, 0x0f1e, 0x0f1e }, /* 0x0f1f */ { false, 0x0f1f, 0x0f1f }, /* 0x0f20 */ { false, 0x0f20, 0x0f20 }, /* 0x0f21 */ { false, 0x0f21, 0x0f21 }, /* 0x0f22 */ { false, 0x0f22, 0x0f22 }, /* 0x0f23 */ { false, 0x0f23, 0x0f23 }, /* 0x0f24 */ { false, 0x0f24, 0x0f24 }, /* 0x0f25 */ { false, 0x0f25, 0x0f25 }, /* 0x0f26 */ { false, 0x0f26, 0x0f26 }, /* 0x0f27 */ { false, 0x0f27, 0x0f27 }, /* 0x0f28 */ { false, 0x0f28, 0x0f28 }, /* 0x0f29 */ { false, 0x0f29, 0x0f29 }, /* 0x0f2a */ { false, 0x0f2a, 0x0f2a }, /* 0x0f2b */ { false, 0x0f2b, 0x0f2b }, /* 0x0f2c */ { false, 0x0f2c, 0x0f2c }, /* 0x0f2d */ { false, 0x0f2d, 0x0f2d }, /* 0x0f2e */ { false, 0x0f2e, 0x0f2e }, /* 0x0f2f */ { false, 0x0f2f, 0x0f2f }, /* 0x0f30 */ { false, 0x0f30, 0x0f30 }, /* 0x0f31 */ { false, 0x0f31, 0x0f31 }, /* 0x0f32 */ { false, 0x0f32, 0x0f32 }, /* 0x0f33 */ { false, 0x0f33, 0x0f33 }, /* 0x0f34 */ { false, 0x0f34, 0x0f34 }, /* 0x0f35 */ { true, 0x0f35, 0x0f35 }, /* 0x0f36 */ { false, 0x0f36, 0x0f36 }, /* 0x0f37 */ { true, 0x0f37, 0x0f37 }, /* 0x0f38 */ { false, 0x0f38, 0x0f38 }, /* 0x0f39 */ { true, 0x0f39, 0x0f39 }, /* 0x0f3a */ { false, 0x0f3a, 0x0f3a }, /* 0x0f3b */ { false, 0x0f3b, 0x0f3b }, /* 0x0f3c */ { false, 0x0f3c, 0x0f3c }, /* 0x0f3d */ { false, 0x0f3d, 0x0f3d }, /* 0x0f3e */ { false, 0x0f3e, 0x0f3e }, /* 0x0f3f */ { false, 0x0f3f, 0x0f3f }, /* 0x0f40 */ { true, 0x0f40, 0x0f40 }, /* 0x0f41 */ { true, 0x0f41, 0x0f41 }, /* 0x0f42 */ { true, 0x0f42, 0x0f42 }, /* 0x0f43 */ { true, 0x0f43, 0x0f43 }, /* 0x0f44 */ { true, 0x0f44, 0x0f44 }, /* 0x0f45 */ { true, 0x0f45, 0x0f45 }, /* 0x0f46 */ { true, 0x0f46, 0x0f46 }, /* 0x0f47 */ { true, 0x0f47, 0x0f47 }, /* 0x0f48 */ { false, 0x0f48, 0x0f48 }, /* 0x0f49 */ { true, 0x0f49, 0x0f49 }, /* 0x0f4a */ { true, 0x0f4a, 0x0f4a }, /* 0x0f4b */ { true, 0x0f4b, 0x0f4b }, /* 0x0f4c */ { true, 0x0f4c, 0x0f4c }, /* 0x0f4d */ { true, 0x0f4d, 0x0f4d }, /* 0x0f4e */ { true, 0x0f4e, 0x0f4e }, /* 0x0f4f */ { true, 0x0f4f, 0x0f4f }, /* 0x0f50 */ { true, 0x0f50, 0x0f50 }, /* 0x0f51 */ { true, 0x0f51, 0x0f51 }, /* 0x0f52 */ { true, 0x0f52, 0x0f52 }, /* 0x0f53 */ { true, 0x0f53, 0x0f53 }, /* 0x0f54 */ { true, 0x0f54, 0x0f54 }, /* 0x0f55 */ { true, 0x0f55, 0x0f55 }, /* 0x0f56 */ { true, 0x0f56, 0x0f56 }, /* 0x0f57 */ { true, 0x0f57, 0x0f57 }, /* 0x0f58 */ { true, 0x0f58, 0x0f58 }, /* 0x0f59 */ { true, 0x0f59, 0x0f59 }, /* 0x0f5a */ { true, 0x0f5a, 0x0f5a }, /* 0x0f5b */ { true, 0x0f5b, 0x0f5b }, /* 0x0f5c */ { true, 0x0f5c, 0x0f5c }, /* 0x0f5d */ { true, 0x0f5d, 0x0f5d }, /* 0x0f5e */ { true, 0x0f5e, 0x0f5e }, /* 0x0f5f */ { true, 0x0f5f, 0x0f5f }, /* 0x0f60 */ { true, 0x0f60, 0x0f60 }, /* 0x0f61 */ { true, 0x0f61, 0x0f61 }, /* 0x0f62 */ { true, 0x0f62, 0x0f62 }, /* 0x0f63 */ { true, 0x0f63, 0x0f63 }, /* 0x0f64 */ { true, 0x0f64, 0x0f64 }, /* 0x0f65 */ { true, 0x0f65, 0x0f65 }, /* 0x0f66 */ { true, 0x0f66, 0x0f66 }, /* 0x0f67 */ { true, 0x0f67, 0x0f67 }, /* 0x0f68 */ { true, 0x0f68, 0x0f68 }, /* 0x0f69 */ { true, 0x0f69, 0x0f69 }, /* 0x0f6a */ { true, 0x0f6a, 0x0f6a }, /* 0x0f6b */ { false, 0x0f6b, 0x0f6b }, /* 0x0f6c */ { false, 0x0f6c, 0x0f6c }, /* 0x0f6d */ { false, 0x0f6d, 0x0f6d }, /* 0x0f6e */ { false, 0x0f6e, 0x0f6e }, /* 0x0f6f */ { false, 0x0f6f, 0x0f6f }, /* 0x0f70 */ { false, 0x0f70, 0x0f70 }, /* 0x0f71 */ { true, 0x0f71, 0x0f71 }, /* 0x0f72 */ { true, 0x0f72, 0x0f72 }, /* 0x0f73 */ { true, 0x0f73, 0x0f73 }, /* 0x0f74 */ { true, 0x0f74, 0x0f74 }, /* 0x0f75 */ { true, 0x0f75, 0x0f75 }, /* 0x0f76 */ { true, 0x0f76, 0x0f76 }, /* 0x0f77 */ { true, 0x0f77, 0x0f77 }, /* 0x0f78 */ { true, 0x0f78, 0x0f78 }, /* 0x0f79 */ { true, 0x0f79, 0x0f79 }, /* 0x0f7a */ { true, 0x0f7a, 0x0f7a }, /* 0x0f7b */ { true, 0x0f7b, 0x0f7b }, /* 0x0f7c */ { true, 0x0f7c, 0x0f7c }, /* 0x0f7d */ { true, 0x0f7d, 0x0f7d }, /* 0x0f7e */ { true, 0x0f7e, 0x0f7e }, /* 0x0f7f */ { false, 0x0f7f, 0x0f7f }, /* 0x0f80 */ { true, 0x0f80, 0x0f80 }, /* 0x0f81 */ { true, 0x0f81, 0x0f81 }, /* 0x0f82 */ { true, 0x0f82, 0x0f82 }, /* 0x0f83 */ { true, 0x0f83, 0x0f83 }, /* 0x0f84 */ { true, 0x0f84, 0x0f84 }, /* 0x0f85 */ { false, 0x0f85, 0x0f85 }, /* 0x0f86 */ { true, 0x0f86, 0x0f86 }, /* 0x0f87 */ { true, 0x0f87, 0x0f87 }, /* 0x0f88 */ { true, 0x0f88, 0x0f88 }, /* 0x0f89 */ { true, 0x0f89, 0x0f89 }, /* 0x0f8a */ { true, 0x0f8a, 0x0f8a }, /* 0x0f8b */ { true, 0x0f8b, 0x0f8b }, /* 0x0f8c */ { false, 0x0f8c, 0x0f8c }, /* 0x0f8d */ { false, 0x0f8d, 0x0f8d }, /* 0x0f8e */ { false, 0x0f8e, 0x0f8e }, /* 0x0f8f */ { false, 0x0f8f, 0x0f8f }, /* 0x0f90 */ { true, 0x0f90, 0x0f90 }, /* 0x0f91 */ { true, 0x0f91, 0x0f91 }, /* 0x0f92 */ { true, 0x0f92, 0x0f92 }, /* 0x0f93 */ { true, 0x0f93, 0x0f93 }, /* 0x0f94 */ { true, 0x0f94, 0x0f94 }, /* 0x0f95 */ { true, 0x0f95, 0x0f95 }, /* 0x0f96 */ { true, 0x0f96, 0x0f96 }, /* 0x0f97 */ { true, 0x0f97, 0x0f97 }, /* 0x0f98 */ { false, 0x0f98, 0x0f98 }, /* 0x0f99 */ { true, 0x0f99, 0x0f99 }, /* 0x0f9a */ { true, 0x0f9a, 0x0f9a }, /* 0x0f9b */ { true, 0x0f9b, 0x0f9b }, /* 0x0f9c */ { true, 0x0f9c, 0x0f9c }, /* 0x0f9d */ { true, 0x0f9d, 0x0f9d }, /* 0x0f9e */ { true, 0x0f9e, 0x0f9e }, /* 0x0f9f */ { true, 0x0f9f, 0x0f9f }, /* 0x0fa0 */ { true, 0x0fa0, 0x0fa0 }, /* 0x0fa1 */ { true, 0x0fa1, 0x0fa1 }, /* 0x0fa2 */ { true, 0x0fa2, 0x0fa2 }, /* 0x0fa3 */ { true, 0x0fa3, 0x0fa3 }, /* 0x0fa4 */ { true, 0x0fa4, 0x0fa4 }, /* 0x0fa5 */ { true, 0x0fa5, 0x0fa5 }, /* 0x0fa6 */ { true, 0x0fa6, 0x0fa6 }, /* 0x0fa7 */ { true, 0x0fa7, 0x0fa7 }, /* 0x0fa8 */ { true, 0x0fa8, 0x0fa8 }, /* 0x0fa9 */ { true, 0x0fa9, 0x0fa9 }, /* 0x0faa */ { true, 0x0faa, 0x0faa }, /* 0x0fab */ { true, 0x0fab, 0x0fab }, /* 0x0fac */ { true, 0x0fac, 0x0fac }, /* 0x0fad */ { true, 0x0fad, 0x0fad }, /* 0x0fae */ { true, 0x0fae, 0x0fae }, /* 0x0faf */ { true, 0x0faf, 0x0faf }, /* 0x0fb0 */ { true, 0x0fb0, 0x0fb0 }, /* 0x0fb1 */ { true, 0x0fb1, 0x0fb1 }, /* 0x0fb2 */ { true, 0x0fb2, 0x0fb2 }, /* 0x0fb3 */ { true, 0x0fb3, 0x0fb3 }, /* 0x0fb4 */ { true, 0x0fb4, 0x0fb4 }, /* 0x0fb5 */ { true, 0x0fb5, 0x0fb5 }, /* 0x0fb6 */ { true, 0x0fb6, 0x0fb6 }, /* 0x0fb7 */ { true, 0x0fb7, 0x0fb7 }, /* 0x0fb8 */ { true, 0x0fb8, 0x0fb8 }, /* 0x0fb9 */ { true, 0x0fb9, 0x0fb9 }, /* 0x0fba */ { true, 0x0fba, 0x0fba }, /* 0x0fbb */ { true, 0x0fbb, 0x0fbb }, /* 0x0fbc */ { true, 0x0fbc, 0x0fbc }, /* 0x0fbd */ { false, 0x0fbd, 0x0fbd }, /* 0x0fbe */ { false, 0x0fbe, 0x0fbe }, /* 0x0fbf */ { false, 0x0fbf, 0x0fbf }, /* 0x0fc0 */ { false, 0x0fc0, 0x0fc0 }, /* 0x0fc1 */ { false, 0x0fc1, 0x0fc1 }, /* 0x0fc2 */ { false, 0x0fc2, 0x0fc2 }, /* 0x0fc3 */ { false, 0x0fc3, 0x0fc3 }, /* 0x0fc4 */ { false, 0x0fc4, 0x0fc4 }, /* 0x0fc5 */ { false, 0x0fc5, 0x0fc5 }, /* 0x0fc6 */ { true, 0x0fc6, 0x0fc6 }, /* 0x0fc7 */ { false, 0x0fc7, 0x0fc7 }, /* 0x0fc8 */ { false, 0x0fc8, 0x0fc8 }, /* 0x0fc9 */ { false, 0x0fc9, 0x0fc9 }, /* 0x0fca */ { false, 0x0fca, 0x0fca }, /* 0x0fcb */ { false, 0x0fcb, 0x0fcb }, /* 0x0fcc */ { false, 0x0fcc, 0x0fcc }, /* 0x0fcd */ { false, 0x0fcd, 0x0fcd }, /* 0x0fce */ { false, 0x0fce, 0x0fce }, /* 0x0fcf */ { false, 0x0fcf, 0x0fcf }, /* 0x0fd0 */ { false, 0x0fd0, 0x0fd0 }, /* 0x0fd1 */ { false, 0x0fd1, 0x0fd1 }, /* 0x0fd2 */ { false, 0x0fd2, 0x0fd2 }, /* 0x0fd3 */ { false, 0x0fd3, 0x0fd3 }, /* 0x0fd4 */ { false, 0x0fd4, 0x0fd4 }, /* 0x0fd5 */ { false, 0x0fd5, 0x0fd5 }, /* 0x0fd6 */ { false, 0x0fd6, 0x0fd6 }, /* 0x0fd7 */ { false, 0x0fd7, 0x0fd7 }, /* 0x0fd8 */ { false, 0x0fd8, 0x0fd8 }, /* 0x0fd9 */ { false, 0x0fd9, 0x0fd9 }, /* 0x0fda */ { false, 0x0fda, 0x0fda }, /* 0x0fdb */ { false, 0x0fdb, 0x0fdb }, /* 0x0fdc */ { false, 0x0fdc, 0x0fdc }, /* 0x0fdd */ { false, 0x0fdd, 0x0fdd }, /* 0x0fde */ { false, 0x0fde, 0x0fde }, /* 0x0fdf */ { false, 0x0fdf, 0x0fdf }, /* 0x0fe0 */ { false, 0x0fe0, 0x0fe0 }, /* 0x0fe1 */ { false, 0x0fe1, 0x0fe1 }, /* 0x0fe2 */ { false, 0x0fe2, 0x0fe2 }, /* 0x0fe3 */ { false, 0x0fe3, 0x0fe3 }, /* 0x0fe4 */ { false, 0x0fe4, 0x0fe4 }, /* 0x0fe5 */ { false, 0x0fe5, 0x0fe5 }, /* 0x0fe6 */ { false, 0x0fe6, 0x0fe6 }, /* 0x0fe7 */ { false, 0x0fe7, 0x0fe7 }, /* 0x0fe8 */ { false, 0x0fe8, 0x0fe8 }, /* 0x0fe9 */ { false, 0x0fe9, 0x0fe9 }, /* 0x0fea */ { false, 0x0fea, 0x0fea }, /* 0x0feb */ { false, 0x0feb, 0x0feb }, /* 0x0fec */ { false, 0x0fec, 0x0fec }, /* 0x0fed */ { false, 0x0fed, 0x0fed }, /* 0x0fee */ { false, 0x0fee, 0x0fee }, /* 0x0fef */ { false, 0x0fef, 0x0fef }, /* 0x0ff0 */ { false, 0x0ff0, 0x0ff0 }, /* 0x0ff1 */ { false, 0x0ff1, 0x0ff1 }, /* 0x0ff2 */ { false, 0x0ff2, 0x0ff2 }, /* 0x0ff3 */ { false, 0x0ff3, 0x0ff3 }, /* 0x0ff4 */ { false, 0x0ff4, 0x0ff4 }, /* 0x0ff5 */ { false, 0x0ff5, 0x0ff5 }, /* 0x0ff6 */ { false, 0x0ff6, 0x0ff6 }, /* 0x0ff7 */ { false, 0x0ff7, 0x0ff7 }, /* 0x0ff8 */ { false, 0x0ff8, 0x0ff8 }, /* 0x0ff9 */ { false, 0x0ff9, 0x0ff9 }, /* 0x0ffa */ { false, 0x0ffa, 0x0ffa }, /* 0x0ffb */ { false, 0x0ffb, 0x0ffb }, /* 0x0ffc */ { false, 0x0ffc, 0x0ffc }, /* 0x0ffd */ { false, 0x0ffd, 0x0ffd }, /* 0x0ffe */ { false, 0x0ffe, 0x0ffe }, /* 0x0fff */ { false, 0x0fff, 0x0fff }, /* 0x1000 */ { true, 0x1000, 0x1000 }, /* 0x1001 */ { true, 0x1001, 0x1001 }, /* 0x1002 */ { true, 0x1002, 0x1002 }, /* 0x1003 */ { true, 0x1003, 0x1003 }, /* 0x1004 */ { true, 0x1004, 0x1004 }, /* 0x1005 */ { true, 0x1005, 0x1005 }, /* 0x1006 */ { true, 0x1006, 0x1006 }, /* 0x1007 */ { true, 0x1007, 0x1007 }, /* 0x1008 */ { true, 0x1008, 0x1008 }, /* 0x1009 */ { true, 0x1009, 0x1009 }, /* 0x100a */ { true, 0x100a, 0x100a }, /* 0x100b */ { true, 0x100b, 0x100b }, /* 0x100c */ { true, 0x100c, 0x100c }, /* 0x100d */ { true, 0x100d, 0x100d }, /* 0x100e */ { true, 0x100e, 0x100e }, /* 0x100f */ { true, 0x100f, 0x100f }, /* 0x1010 */ { true, 0x1010, 0x1010 }, /* 0x1011 */ { true, 0x1011, 0x1011 }, /* 0x1012 */ { true, 0x1012, 0x1012 }, /* 0x1013 */ { true, 0x1013, 0x1013 }, /* 0x1014 */ { true, 0x1014, 0x1014 }, /* 0x1015 */ { true, 0x1015, 0x1015 }, /* 0x1016 */ { true, 0x1016, 0x1016 }, /* 0x1017 */ { true, 0x1017, 0x1017 }, /* 0x1018 */ { true, 0x1018, 0x1018 }, /* 0x1019 */ { true, 0x1019, 0x1019 }, /* 0x101a */ { true, 0x101a, 0x101a }, /* 0x101b */ { true, 0x101b, 0x101b }, /* 0x101c */ { true, 0x101c, 0x101c }, /* 0x101d */ { true, 0x101d, 0x101d }, /* 0x101e */ { true, 0x101e, 0x101e }, /* 0x101f */ { true, 0x101f, 0x101f }, /* 0x1020 */ { true, 0x1020, 0x1020 }, /* 0x1021 */ { true, 0x1021, 0x1021 }, /* 0x1022 */ { false, 0x1022, 0x1022 }, /* 0x1023 */ { true, 0x1023, 0x1023 }, /* 0x1024 */ { true, 0x1024, 0x1024 }, /* 0x1025 */ { true, 0x1025, 0x1025 }, /* 0x1026 */ { true, 0x1026, 0x1026 }, /* 0x1027 */ { true, 0x1027, 0x1027 }, /* 0x1028 */ { false, 0x1028, 0x1028 }, /* 0x1029 */ { true, 0x1029, 0x1029 }, /* 0x102a */ { true, 0x102a, 0x102a }, /* 0x102b */ { false, 0x102b, 0x102b }, /* 0x102c */ { false, 0x102c, 0x102c }, /* 0x102d */ { true, 0x102d, 0x102d }, /* 0x102e */ { true, 0x102e, 0x102e }, /* 0x102f */ { true, 0x102f, 0x102f }, /* 0x1030 */ { true, 0x1030, 0x1030 }, /* 0x1031 */ { false, 0x1031, 0x1031 }, /* 0x1032 */ { true, 0x1032, 0x1032 }, /* 0x1033 */ { false, 0x1033, 0x1033 }, /* 0x1034 */ { false, 0x1034, 0x1034 }, /* 0x1035 */ { false, 0x1035, 0x1035 }, /* 0x1036 */ { true, 0x1036, 0x1036 }, /* 0x1037 */ { true, 0x1037, 0x1037 }, /* 0x1038 */ { false, 0x1038, 0x1038 }, /* 0x1039 */ { true, 0x1039, 0x1039 }, /* 0x103a */ { false, 0x103a, 0x103a }, /* 0x103b */ { false, 0x103b, 0x103b }, /* 0x103c */ { false, 0x103c, 0x103c }, /* 0x103d */ { false, 0x103d, 0x103d }, /* 0x103e */ { false, 0x103e, 0x103e }, /* 0x103f */ { false, 0x103f, 0x103f }, /* 0x1040 */ { false, 0x1040, 0x1040 }, /* 0x1041 */ { false, 0x1041, 0x1041 }, /* 0x1042 */ { false, 0x1042, 0x1042 }, /* 0x1043 */ { false, 0x1043, 0x1043 }, /* 0x1044 */ { false, 0x1044, 0x1044 }, /* 0x1045 */ { false, 0x1045, 0x1045 }, /* 0x1046 */ { false, 0x1046, 0x1046 }, /* 0x1047 */ { false, 0x1047, 0x1047 }, /* 0x1048 */ { false, 0x1048, 0x1048 }, /* 0x1049 */ { false, 0x1049, 0x1049 }, /* 0x104a */ { false, 0x104a, 0x104a }, /* 0x104b */ { false, 0x104b, 0x104b }, /* 0x104c */ { false, 0x104c, 0x104c }, /* 0x104d */ { false, 0x104d, 0x104d }, /* 0x104e */ { false, 0x104e, 0x104e }, /* 0x104f */ { false, 0x104f, 0x104f }, /* 0x1050 */ { true, 0x1050, 0x1050 }, /* 0x1051 */ { true, 0x1051, 0x1051 }, /* 0x1052 */ { true, 0x1052, 0x1052 }, /* 0x1053 */ { true, 0x1053, 0x1053 }, /* 0x1054 */ { true, 0x1054, 0x1054 }, /* 0x1055 */ { true, 0x1055, 0x1055 }, /* 0x1056 */ { false, 0x1056, 0x1056 }, /* 0x1057 */ { false, 0x1057, 0x1057 }, /* 0x1058 */ { true, 0x1058, 0x1058 }, /* 0x1059 */ { true, 0x1059, 0x1059 }, /* 0x105a */ { false, 0x105a, 0x105a }, /* 0x105b */ { false, 0x105b, 0x105b }, /* 0x105c */ { false, 0x105c, 0x105c }, /* 0x105d */ { false, 0x105d, 0x105d }, /* 0x105e */ { false, 0x105e, 0x105e }, /* 0x105f */ { false, 0x105f, 0x105f }, /* 0x1060 */ { false, 0x1060, 0x1060 }, /* 0x1061 */ { false, 0x1061, 0x1061 }, /* 0x1062 */ { false, 0x1062, 0x1062 }, /* 0x1063 */ { false, 0x1063, 0x1063 }, /* 0x1064 */ { false, 0x1064, 0x1064 }, /* 0x1065 */ { false, 0x1065, 0x1065 }, /* 0x1066 */ { false, 0x1066, 0x1066 }, /* 0x1067 */ { false, 0x1067, 0x1067 }, /* 0x1068 */ { false, 0x1068, 0x1068 }, /* 0x1069 */ { false, 0x1069, 0x1069 }, /* 0x106a */ { false, 0x106a, 0x106a }, /* 0x106b */ { false, 0x106b, 0x106b }, /* 0x106c */ { false, 0x106c, 0x106c }, /* 0x106d */ { false, 0x106d, 0x106d }, /* 0x106e */ { false, 0x106e, 0x106e }, /* 0x106f */ { false, 0x106f, 0x106f }, /* 0x1070 */ { false, 0x1070, 0x1070 }, /* 0x1071 */ { false, 0x1071, 0x1071 }, /* 0x1072 */ { false, 0x1072, 0x1072 }, /* 0x1073 */ { false, 0x1073, 0x1073 }, /* 0x1074 */ { false, 0x1074, 0x1074 }, /* 0x1075 */ { false, 0x1075, 0x1075 }, /* 0x1076 */ { false, 0x1076, 0x1076 }, /* 0x1077 */ { false, 0x1077, 0x1077 }, /* 0x1078 */ { false, 0x1078, 0x1078 }, /* 0x1079 */ { false, 0x1079, 0x1079 }, /* 0x107a */ { false, 0x107a, 0x107a }, /* 0x107b */ { false, 0x107b, 0x107b }, /* 0x107c */ { false, 0x107c, 0x107c }, /* 0x107d */ { false, 0x107d, 0x107d }, /* 0x107e */ { false, 0x107e, 0x107e }, /* 0x107f */ { false, 0x107f, 0x107f }, /* 0x1080 */ { false, 0x1080, 0x1080 }, /* 0x1081 */ { false, 0x1081, 0x1081 }, /* 0x1082 */ { false, 0x1082, 0x1082 }, /* 0x1083 */ { false, 0x1083, 0x1083 }, /* 0x1084 */ { false, 0x1084, 0x1084 }, /* 0x1085 */ { false, 0x1085, 0x1085 }, /* 0x1086 */ { false, 0x1086, 0x1086 }, /* 0x1087 */ { false, 0x1087, 0x1087 }, /* 0x1088 */ { false, 0x1088, 0x1088 }, /* 0x1089 */ { false, 0x1089, 0x1089 }, /* 0x108a */ { false, 0x108a, 0x108a }, /* 0x108b */ { false, 0x108b, 0x108b }, /* 0x108c */ { false, 0x108c, 0x108c }, /* 0x108d */ { false, 0x108d, 0x108d }, /* 0x108e */ { false, 0x108e, 0x108e }, /* 0x108f */ { false, 0x108f, 0x108f }, /* 0x1090 */ { false, 0x1090, 0x1090 }, /* 0x1091 */ { false, 0x1091, 0x1091 }, /* 0x1092 */ { false, 0x1092, 0x1092 }, /* 0x1093 */ { false, 0x1093, 0x1093 }, /* 0x1094 */ { false, 0x1094, 0x1094 }, /* 0x1095 */ { false, 0x1095, 0x1095 }, /* 0x1096 */ { false, 0x1096, 0x1096 }, /* 0x1097 */ { false, 0x1097, 0x1097 }, /* 0x1098 */ { false, 0x1098, 0x1098 }, /* 0x1099 */ { false, 0x1099, 0x1099 }, /* 0x109a */ { false, 0x109a, 0x109a }, /* 0x109b */ { false, 0x109b, 0x109b }, /* 0x109c */ { false, 0x109c, 0x109c }, /* 0x109d */ { false, 0x109d, 0x109d }, /* 0x109e */ { false, 0x109e, 0x109e }, /* 0x109f */ { false, 0x109f, 0x109f }, /* 0x10a0 */ { true, 0x10a0, 0x2d00 }, /* 0x10a1 */ { true, 0x10a1, 0x2d01 }, /* 0x10a2 */ { true, 0x10a2, 0x2d02 }, /* 0x10a3 */ { true, 0x10a3, 0x2d03 }, /* 0x10a4 */ { true, 0x10a4, 0x2d04 }, /* 0x10a5 */ { true, 0x10a5, 0x2d05 }, /* 0x10a6 */ { true, 0x10a6, 0x2d06 }, /* 0x10a7 */ { true, 0x10a7, 0x2d07 }, /* 0x10a8 */ { true, 0x10a8, 0x2d08 }, /* 0x10a9 */ { true, 0x10a9, 0x2d09 }, /* 0x10aa */ { true, 0x10aa, 0x2d0a }, /* 0x10ab */ { true, 0x10ab, 0x2d0b }, /* 0x10ac */ { true, 0x10ac, 0x2d0c }, /* 0x10ad */ { true, 0x10ad, 0x2d0d }, /* 0x10ae */ { true, 0x10ae, 0x2d0e }, /* 0x10af */ { true, 0x10af, 0x2d0f }, /* 0x10b0 */ { true, 0x10b0, 0x2d10 }, /* 0x10b1 */ { true, 0x10b1, 0x2d11 }, /* 0x10b2 */ { true, 0x10b2, 0x2d12 }, /* 0x10b3 */ { true, 0x10b3, 0x2d13 }, /* 0x10b4 */ { true, 0x10b4, 0x2d14 }, /* 0x10b5 */ { true, 0x10b5, 0x2d15 }, /* 0x10b6 */ { true, 0x10b6, 0x2d16 }, /* 0x10b7 */ { true, 0x10b7, 0x2d17 }, /* 0x10b8 */ { true, 0x10b8, 0x2d18 }, /* 0x10b9 */ { true, 0x10b9, 0x2d19 }, /* 0x10ba */ { true, 0x10ba, 0x2d1a }, /* 0x10bb */ { true, 0x10bb, 0x2d1b }, /* 0x10bc */ { true, 0x10bc, 0x2d1c }, /* 0x10bd */ { true, 0x10bd, 0x2d1d }, /* 0x10be */ { true, 0x10be, 0x2d1e }, /* 0x10bf */ { true, 0x10bf, 0x2d1f }, /* 0x10c0 */ { true, 0x10c0, 0x2d20 }, /* 0x10c1 */ { true, 0x10c1, 0x2d21 }, /* 0x10c2 */ { true, 0x10c2, 0x2d22 }, /* 0x10c3 */ { true, 0x10c3, 0x2d23 }, /* 0x10c4 */ { true, 0x10c4, 0x2d24 }, /* 0x10c5 */ { true, 0x10c5, 0x2d25 }, /* 0x10c6 */ { false, 0x10c6, 0x10c6 }, /* 0x10c7 */ { false, 0x10c7, 0x10c7 }, /* 0x10c8 */ { false, 0x10c8, 0x10c8 }, /* 0x10c9 */ { false, 0x10c9, 0x10c9 }, /* 0x10ca */ { false, 0x10ca, 0x10ca }, /* 0x10cb */ { false, 0x10cb, 0x10cb }, /* 0x10cc */ { false, 0x10cc, 0x10cc }, /* 0x10cd */ { false, 0x10cd, 0x10cd }, /* 0x10ce */ { false, 0x10ce, 0x10ce }, /* 0x10cf */ { false, 0x10cf, 0x10cf }, /* 0x10d0 */ { true, 0x10d0, 0x10d0 }, /* 0x10d1 */ { true, 0x10d1, 0x10d1 }, /* 0x10d2 */ { true, 0x10d2, 0x10d2 }, /* 0x10d3 */ { true, 0x10d3, 0x10d3 }, /* 0x10d4 */ { true, 0x10d4, 0x10d4 }, /* 0x10d5 */ { true, 0x10d5, 0x10d5 }, /* 0x10d6 */ { true, 0x10d6, 0x10d6 }, /* 0x10d7 */ { true, 0x10d7, 0x10d7 }, /* 0x10d8 */ { true, 0x10d8, 0x10d8 }, /* 0x10d9 */ { true, 0x10d9, 0x10d9 }, /* 0x10da */ { true, 0x10da, 0x10da }, /* 0x10db */ { true, 0x10db, 0x10db }, /* 0x10dc */ { true, 0x10dc, 0x10dc }, /* 0x10dd */ { true, 0x10dd, 0x10dd }, /* 0x10de */ { true, 0x10de, 0x10de }, /* 0x10df */ { true, 0x10df, 0x10df }, /* 0x10e0 */ { true, 0x10e0, 0x10e0 }, /* 0x10e1 */ { true, 0x10e1, 0x10e1 }, /* 0x10e2 */ { true, 0x10e2, 0x10e2 }, /* 0x10e3 */ { true, 0x10e3, 0x10e3 }, /* 0x10e4 */ { true, 0x10e4, 0x10e4 }, /* 0x10e5 */ { true, 0x10e5, 0x10e5 }, /* 0x10e6 */ { true, 0x10e6, 0x10e6 }, /* 0x10e7 */ { true, 0x10e7, 0x10e7 }, /* 0x10e8 */ { true, 0x10e8, 0x10e8 }, /* 0x10e9 */ { true, 0x10e9, 0x10e9 }, /* 0x10ea */ { true, 0x10ea, 0x10ea }, /* 0x10eb */ { true, 0x10eb, 0x10eb }, /* 0x10ec */ { true, 0x10ec, 0x10ec }, /* 0x10ed */ { true, 0x10ed, 0x10ed }, /* 0x10ee */ { true, 0x10ee, 0x10ee }, /* 0x10ef */ { true, 0x10ef, 0x10ef }, /* 0x10f0 */ { true, 0x10f0, 0x10f0 }, /* 0x10f1 */ { true, 0x10f1, 0x10f1 }, /* 0x10f2 */ { true, 0x10f2, 0x10f2 }, /* 0x10f3 */ { true, 0x10f3, 0x10f3 }, /* 0x10f4 */ { true, 0x10f4, 0x10f4 }, /* 0x10f5 */ { true, 0x10f5, 0x10f5 }, /* 0x10f6 */ { true, 0x10f6, 0x10f6 }, /* 0x10f7 */ { true, 0x10f7, 0x10f7 }, /* 0x10f8 */ { true, 0x10f8, 0x10f8 }, /* 0x10f9 */ { true, 0x10f9, 0x10f9 }, /* 0x10fa */ { true, 0x10fa, 0x10fa }, /* 0x10fb */ { false, 0x10fb, 0x10fb }, /* 0x10fc */ { true, 0x10fc, 0x10fc }, /* 0x10fd */ { false, 0x10fd, 0x10fd }, /* 0x10fe */ { false, 0x10fe, 0x10fe }, /* 0x10ff */ { false, 0x10ff, 0x10ff }, /* 0x1100 */ { true, 0x1100, 0x1100 }, /* 0x1101 */ { true, 0x1101, 0x1101 }, /* 0x1102 */ { true, 0x1102, 0x1102 }, /* 0x1103 */ { true, 0x1103, 0x1103 }, /* 0x1104 */ { true, 0x1104, 0x1104 }, /* 0x1105 */ { true, 0x1105, 0x1105 }, /* 0x1106 */ { true, 0x1106, 0x1106 }, /* 0x1107 */ { true, 0x1107, 0x1107 }, /* 0x1108 */ { true, 0x1108, 0x1108 }, /* 0x1109 */ { true, 0x1109, 0x1109 }, /* 0x110a */ { true, 0x110a, 0x110a }, /* 0x110b */ { true, 0x110b, 0x110b }, /* 0x110c */ { true, 0x110c, 0x110c }, /* 0x110d */ { true, 0x110d, 0x110d }, /* 0x110e */ { true, 0x110e, 0x110e }, /* 0x110f */ { true, 0x110f, 0x110f }, /* 0x1110 */ { true, 0x1110, 0x1110 }, /* 0x1111 */ { true, 0x1111, 0x1111 }, /* 0x1112 */ { true, 0x1112, 0x1112 }, /* 0x1113 */ { true, 0x1113, 0x1113 }, /* 0x1114 */ { true, 0x1114, 0x1114 }, /* 0x1115 */ { true, 0x1115, 0x1115 }, /* 0x1116 */ { true, 0x1116, 0x1116 }, /* 0x1117 */ { true, 0x1117, 0x1117 }, /* 0x1118 */ { true, 0x1118, 0x1118 }, /* 0x1119 */ { true, 0x1119, 0x1119 }, /* 0x111a */ { true, 0x111a, 0x111a }, /* 0x111b */ { true, 0x111b, 0x111b }, /* 0x111c */ { true, 0x111c, 0x111c }, /* 0x111d */ { true, 0x111d, 0x111d }, /* 0x111e */ { true, 0x111e, 0x111e }, /* 0x111f */ { true, 0x111f, 0x111f }, /* 0x1120 */ { true, 0x1120, 0x1120 }, /* 0x1121 */ { true, 0x1121, 0x1121 }, /* 0x1122 */ { true, 0x1122, 0x1122 }, /* 0x1123 */ { true, 0x1123, 0x1123 }, /* 0x1124 */ { true, 0x1124, 0x1124 }, /* 0x1125 */ { true, 0x1125, 0x1125 }, /* 0x1126 */ { true, 0x1126, 0x1126 }, /* 0x1127 */ { true, 0x1127, 0x1127 }, /* 0x1128 */ { true, 0x1128, 0x1128 }, /* 0x1129 */ { true, 0x1129, 0x1129 }, /* 0x112a */ { true, 0x112a, 0x112a }, /* 0x112b */ { true, 0x112b, 0x112b }, /* 0x112c */ { true, 0x112c, 0x112c }, /* 0x112d */ { true, 0x112d, 0x112d }, /* 0x112e */ { true, 0x112e, 0x112e }, /* 0x112f */ { true, 0x112f, 0x112f }, /* 0x1130 */ { true, 0x1130, 0x1130 }, /* 0x1131 */ { true, 0x1131, 0x1131 }, /* 0x1132 */ { true, 0x1132, 0x1132 }, /* 0x1133 */ { true, 0x1133, 0x1133 }, /* 0x1134 */ { true, 0x1134, 0x1134 }, /* 0x1135 */ { true, 0x1135, 0x1135 }, /* 0x1136 */ { true, 0x1136, 0x1136 }, /* 0x1137 */ { true, 0x1137, 0x1137 }, /* 0x1138 */ { true, 0x1138, 0x1138 }, /* 0x1139 */ { true, 0x1139, 0x1139 }, /* 0x113a */ { true, 0x113a, 0x113a }, /* 0x113b */ { true, 0x113b, 0x113b }, /* 0x113c */ { true, 0x113c, 0x113c }, /* 0x113d */ { true, 0x113d, 0x113d }, /* 0x113e */ { true, 0x113e, 0x113e }, /* 0x113f */ { true, 0x113f, 0x113f }, /* 0x1140 */ { true, 0x1140, 0x1140 }, /* 0x1141 */ { true, 0x1141, 0x1141 }, /* 0x1142 */ { true, 0x1142, 0x1142 }, /* 0x1143 */ { true, 0x1143, 0x1143 }, /* 0x1144 */ { true, 0x1144, 0x1144 }, /* 0x1145 */ { true, 0x1145, 0x1145 }, /* 0x1146 */ { true, 0x1146, 0x1146 }, /* 0x1147 */ { true, 0x1147, 0x1147 }, /* 0x1148 */ { true, 0x1148, 0x1148 }, /* 0x1149 */ { true, 0x1149, 0x1149 }, /* 0x114a */ { true, 0x114a, 0x114a }, /* 0x114b */ { true, 0x114b, 0x114b }, /* 0x114c */ { true, 0x114c, 0x114c }, /* 0x114d */ { true, 0x114d, 0x114d }, /* 0x114e */ { true, 0x114e, 0x114e }, /* 0x114f */ { true, 0x114f, 0x114f }, /* 0x1150 */ { true, 0x1150, 0x1150 }, /* 0x1151 */ { true, 0x1151, 0x1151 }, /* 0x1152 */ { true, 0x1152, 0x1152 }, /* 0x1153 */ { true, 0x1153, 0x1153 }, /* 0x1154 */ { true, 0x1154, 0x1154 }, /* 0x1155 */ { true, 0x1155, 0x1155 }, /* 0x1156 */ { true, 0x1156, 0x1156 }, /* 0x1157 */ { true, 0x1157, 0x1157 }, /* 0x1158 */ { true, 0x1158, 0x1158 }, /* 0x1159 */ { true, 0x1159, 0x1159 }, /* 0x115a */ { false, 0x115a, 0x115a }, /* 0x115b */ { false, 0x115b, 0x115b }, /* 0x115c */ { false, 0x115c, 0x115c }, /* 0x115d */ { false, 0x115d, 0x115d }, /* 0x115e */ { false, 0x115e, 0x115e }, /* 0x115f */ { true, 0x115f, 0x115f }, /* 0x1160 */ { true, 0x1160, 0x1160 }, /* 0x1161 */ { true, 0x1161, 0x1161 }, /* 0x1162 */ { true, 0x1162, 0x1162 }, /* 0x1163 */ { true, 0x1163, 0x1163 }, /* 0x1164 */ { true, 0x1164, 0x1164 }, /* 0x1165 */ { true, 0x1165, 0x1165 }, /* 0x1166 */ { true, 0x1166, 0x1166 }, /* 0x1167 */ { true, 0x1167, 0x1167 }, /* 0x1168 */ { true, 0x1168, 0x1168 }, /* 0x1169 */ { true, 0x1169, 0x1169 }, /* 0x116a */ { true, 0x116a, 0x116a }, /* 0x116b */ { true, 0x116b, 0x116b }, /* 0x116c */ { true, 0x116c, 0x116c }, /* 0x116d */ { true, 0x116d, 0x116d }, /* 0x116e */ { true, 0x116e, 0x116e }, /* 0x116f */ { true, 0x116f, 0x116f }, /* 0x1170 */ { true, 0x1170, 0x1170 }, /* 0x1171 */ { true, 0x1171, 0x1171 }, /* 0x1172 */ { true, 0x1172, 0x1172 }, /* 0x1173 */ { true, 0x1173, 0x1173 }, /* 0x1174 */ { true, 0x1174, 0x1174 }, /* 0x1175 */ { true, 0x1175, 0x1175 }, /* 0x1176 */ { true, 0x1176, 0x1176 }, /* 0x1177 */ { true, 0x1177, 0x1177 }, /* 0x1178 */ { true, 0x1178, 0x1178 }, /* 0x1179 */ { true, 0x1179, 0x1179 }, /* 0x117a */ { true, 0x117a, 0x117a }, /* 0x117b */ { true, 0x117b, 0x117b }, /* 0x117c */ { true, 0x117c, 0x117c }, /* 0x117d */ { true, 0x117d, 0x117d }, /* 0x117e */ { true, 0x117e, 0x117e }, /* 0x117f */ { true, 0x117f, 0x117f }, /* 0x1180 */ { true, 0x1180, 0x1180 }, /* 0x1181 */ { true, 0x1181, 0x1181 }, /* 0x1182 */ { true, 0x1182, 0x1182 }, /* 0x1183 */ { true, 0x1183, 0x1183 }, /* 0x1184 */ { true, 0x1184, 0x1184 }, /* 0x1185 */ { true, 0x1185, 0x1185 }, /* 0x1186 */ { true, 0x1186, 0x1186 }, /* 0x1187 */ { true, 0x1187, 0x1187 }, /* 0x1188 */ { true, 0x1188, 0x1188 }, /* 0x1189 */ { true, 0x1189, 0x1189 }, /* 0x118a */ { true, 0x118a, 0x118a }, /* 0x118b */ { true, 0x118b, 0x118b }, /* 0x118c */ { true, 0x118c, 0x118c }, /* 0x118d */ { true, 0x118d, 0x118d }, /* 0x118e */ { true, 0x118e, 0x118e }, /* 0x118f */ { true, 0x118f, 0x118f }, /* 0x1190 */ { true, 0x1190, 0x1190 }, /* 0x1191 */ { true, 0x1191, 0x1191 }, /* 0x1192 */ { true, 0x1192, 0x1192 }, /* 0x1193 */ { true, 0x1193, 0x1193 }, /* 0x1194 */ { true, 0x1194, 0x1194 }, /* 0x1195 */ { true, 0x1195, 0x1195 }, /* 0x1196 */ { true, 0x1196, 0x1196 }, /* 0x1197 */ { true, 0x1197, 0x1197 }, /* 0x1198 */ { true, 0x1198, 0x1198 }, /* 0x1199 */ { true, 0x1199, 0x1199 }, /* 0x119a */ { true, 0x119a, 0x119a }, /* 0x119b */ { true, 0x119b, 0x119b }, /* 0x119c */ { true, 0x119c, 0x119c }, /* 0x119d */ { true, 0x119d, 0x119d }, /* 0x119e */ { true, 0x119e, 0x119e }, /* 0x119f */ { true, 0x119f, 0x119f }, /* 0x11a0 */ { true, 0x11a0, 0x11a0 }, /* 0x11a1 */ { true, 0x11a1, 0x11a1 }, /* 0x11a2 */ { true, 0x11a2, 0x11a2 }, /* 0x11a3 */ { false, 0x11a3, 0x11a3 }, /* 0x11a4 */ { false, 0x11a4, 0x11a4 }, /* 0x11a5 */ { false, 0x11a5, 0x11a5 }, /* 0x11a6 */ { false, 0x11a6, 0x11a6 }, /* 0x11a7 */ { false, 0x11a7, 0x11a7 }, /* 0x11a8 */ { true, 0x11a8, 0x11a8 }, /* 0x11a9 */ { true, 0x11a9, 0x11a9 }, /* 0x11aa */ { true, 0x11aa, 0x11aa }, /* 0x11ab */ { true, 0x11ab, 0x11ab }, /* 0x11ac */ { true, 0x11ac, 0x11ac }, /* 0x11ad */ { true, 0x11ad, 0x11ad }, /* 0x11ae */ { true, 0x11ae, 0x11ae }, /* 0x11af */ { true, 0x11af, 0x11af }, /* 0x11b0 */ { true, 0x11b0, 0x11b0 }, /* 0x11b1 */ { true, 0x11b1, 0x11b1 }, /* 0x11b2 */ { true, 0x11b2, 0x11b2 }, /* 0x11b3 */ { true, 0x11b3, 0x11b3 }, /* 0x11b4 */ { true, 0x11b4, 0x11b4 }, /* 0x11b5 */ { true, 0x11b5, 0x11b5 }, /* 0x11b6 */ { true, 0x11b6, 0x11b6 }, /* 0x11b7 */ { true, 0x11b7, 0x11b7 }, /* 0x11b8 */ { true, 0x11b8, 0x11b8 }, /* 0x11b9 */ { true, 0x11b9, 0x11b9 }, /* 0x11ba */ { true, 0x11ba, 0x11ba }, /* 0x11bb */ { true, 0x11bb, 0x11bb }, /* 0x11bc */ { true, 0x11bc, 0x11bc }, /* 0x11bd */ { true, 0x11bd, 0x11bd }, /* 0x11be */ { true, 0x11be, 0x11be }, /* 0x11bf */ { true, 0x11bf, 0x11bf }, /* 0x11c0 */ { true, 0x11c0, 0x11c0 }, /* 0x11c1 */ { true, 0x11c1, 0x11c1 }, /* 0x11c2 */ { true, 0x11c2, 0x11c2 }, /* 0x11c3 */ { true, 0x11c3, 0x11c3 }, /* 0x11c4 */ { true, 0x11c4, 0x11c4 }, /* 0x11c5 */ { true, 0x11c5, 0x11c5 }, /* 0x11c6 */ { true, 0x11c6, 0x11c6 }, /* 0x11c7 */ { true, 0x11c7, 0x11c7 }, /* 0x11c8 */ { true, 0x11c8, 0x11c8 }, /* 0x11c9 */ { true, 0x11c9, 0x11c9 }, /* 0x11ca */ { true, 0x11ca, 0x11ca }, /* 0x11cb */ { true, 0x11cb, 0x11cb }, /* 0x11cc */ { true, 0x11cc, 0x11cc }, /* 0x11cd */ { true, 0x11cd, 0x11cd }, /* 0x11ce */ { true, 0x11ce, 0x11ce }, /* 0x11cf */ { true, 0x11cf, 0x11cf }, /* 0x11d0 */ { true, 0x11d0, 0x11d0 }, /* 0x11d1 */ { true, 0x11d1, 0x11d1 }, /* 0x11d2 */ { true, 0x11d2, 0x11d2 }, /* 0x11d3 */ { true, 0x11d3, 0x11d3 }, /* 0x11d4 */ { true, 0x11d4, 0x11d4 }, /* 0x11d5 */ { true, 0x11d5, 0x11d5 }, /* 0x11d6 */ { true, 0x11d6, 0x11d6 }, /* 0x11d7 */ { true, 0x11d7, 0x11d7 }, /* 0x11d8 */ { true, 0x11d8, 0x11d8 }, /* 0x11d9 */ { true, 0x11d9, 0x11d9 }, /* 0x11da */ { true, 0x11da, 0x11da }, /* 0x11db */ { true, 0x11db, 0x11db }, /* 0x11dc */ { true, 0x11dc, 0x11dc }, /* 0x11dd */ { true, 0x11dd, 0x11dd }, /* 0x11de */ { true, 0x11de, 0x11de }, /* 0x11df */ { true, 0x11df, 0x11df }, /* 0x11e0 */ { true, 0x11e0, 0x11e0 }, /* 0x11e1 */ { true, 0x11e1, 0x11e1 }, /* 0x11e2 */ { true, 0x11e2, 0x11e2 }, /* 0x11e3 */ { true, 0x11e3, 0x11e3 }, /* 0x11e4 */ { true, 0x11e4, 0x11e4 }, /* 0x11e5 */ { true, 0x11e5, 0x11e5 }, /* 0x11e6 */ { true, 0x11e6, 0x11e6 }, /* 0x11e7 */ { true, 0x11e7, 0x11e7 }, /* 0x11e8 */ { true, 0x11e8, 0x11e8 }, /* 0x11e9 */ { true, 0x11e9, 0x11e9 }, /* 0x11ea */ { true, 0x11ea, 0x11ea }, /* 0x11eb */ { true, 0x11eb, 0x11eb }, /* 0x11ec */ { true, 0x11ec, 0x11ec }, /* 0x11ed */ { true, 0x11ed, 0x11ed }, /* 0x11ee */ { true, 0x11ee, 0x11ee }, /* 0x11ef */ { true, 0x11ef, 0x11ef }, /* 0x11f0 */ { true, 0x11f0, 0x11f0 }, /* 0x11f1 */ { true, 0x11f1, 0x11f1 }, /* 0x11f2 */ { true, 0x11f2, 0x11f2 }, /* 0x11f3 */ { true, 0x11f3, 0x11f3 }, /* 0x11f4 */ { true, 0x11f4, 0x11f4 }, /* 0x11f5 */ { true, 0x11f5, 0x11f5 }, /* 0x11f6 */ { true, 0x11f6, 0x11f6 }, /* 0x11f7 */ { true, 0x11f7, 0x11f7 }, /* 0x11f8 */ { true, 0x11f8, 0x11f8 }, /* 0x11f9 */ { true, 0x11f9, 0x11f9 }, /* 0x11fa */ { false, 0x11fa, 0x11fa }, /* 0x11fb */ { false, 0x11fb, 0x11fb }, /* 0x11fc */ { false, 0x11fc, 0x11fc }, /* 0x11fd */ { false, 0x11fd, 0x11fd }, /* 0x11fe */ { false, 0x11fe, 0x11fe }, /* 0x11ff */ { false, 0x11ff, 0x11ff }, /* 0x1200 */ { true, 0x1200, 0x1200 }, /* 0x1201 */ { true, 0x1201, 0x1201 }, /* 0x1202 */ { true, 0x1202, 0x1202 }, /* 0x1203 */ { true, 0x1203, 0x1203 }, /* 0x1204 */ { true, 0x1204, 0x1204 }, /* 0x1205 */ { true, 0x1205, 0x1205 }, /* 0x1206 */ { true, 0x1206, 0x1206 }, /* 0x1207 */ { true, 0x1207, 0x1207 }, /* 0x1208 */ { true, 0x1208, 0x1208 }, /* 0x1209 */ { true, 0x1209, 0x1209 }, /* 0x120a */ { true, 0x120a, 0x120a }, /* 0x120b */ { true, 0x120b, 0x120b }, /* 0x120c */ { true, 0x120c, 0x120c }, /* 0x120d */ { true, 0x120d, 0x120d }, /* 0x120e */ { true, 0x120e, 0x120e }, /* 0x120f */ { true, 0x120f, 0x120f }, /* 0x1210 */ { true, 0x1210, 0x1210 }, /* 0x1211 */ { true, 0x1211, 0x1211 }, /* 0x1212 */ { true, 0x1212, 0x1212 }, /* 0x1213 */ { true, 0x1213, 0x1213 }, /* 0x1214 */ { true, 0x1214, 0x1214 }, /* 0x1215 */ { true, 0x1215, 0x1215 }, /* 0x1216 */ { true, 0x1216, 0x1216 }, /* 0x1217 */ { true, 0x1217, 0x1217 }, /* 0x1218 */ { true, 0x1218, 0x1218 }, /* 0x1219 */ { true, 0x1219, 0x1219 }, /* 0x121a */ { true, 0x121a, 0x121a }, /* 0x121b */ { true, 0x121b, 0x121b }, /* 0x121c */ { true, 0x121c, 0x121c }, /* 0x121d */ { true, 0x121d, 0x121d }, /* 0x121e */ { true, 0x121e, 0x121e }, /* 0x121f */ { true, 0x121f, 0x121f }, /* 0x1220 */ { true, 0x1220, 0x1220 }, /* 0x1221 */ { true, 0x1221, 0x1221 }, /* 0x1222 */ { true, 0x1222, 0x1222 }, /* 0x1223 */ { true, 0x1223, 0x1223 }, /* 0x1224 */ { true, 0x1224, 0x1224 }, /* 0x1225 */ { true, 0x1225, 0x1225 }, /* 0x1226 */ { true, 0x1226, 0x1226 }, /* 0x1227 */ { true, 0x1227, 0x1227 }, /* 0x1228 */ { true, 0x1228, 0x1228 }, /* 0x1229 */ { true, 0x1229, 0x1229 }, /* 0x122a */ { true, 0x122a, 0x122a }, /* 0x122b */ { true, 0x122b, 0x122b }, /* 0x122c */ { true, 0x122c, 0x122c }, /* 0x122d */ { true, 0x122d, 0x122d }, /* 0x122e */ { true, 0x122e, 0x122e }, /* 0x122f */ { true, 0x122f, 0x122f }, /* 0x1230 */ { true, 0x1230, 0x1230 }, /* 0x1231 */ { true, 0x1231, 0x1231 }, /* 0x1232 */ { true, 0x1232, 0x1232 }, /* 0x1233 */ { true, 0x1233, 0x1233 }, /* 0x1234 */ { true, 0x1234, 0x1234 }, /* 0x1235 */ { true, 0x1235, 0x1235 }, /* 0x1236 */ { true, 0x1236, 0x1236 }, /* 0x1237 */ { true, 0x1237, 0x1237 }, /* 0x1238 */ { true, 0x1238, 0x1238 }, /* 0x1239 */ { true, 0x1239, 0x1239 }, /* 0x123a */ { true, 0x123a, 0x123a }, /* 0x123b */ { true, 0x123b, 0x123b }, /* 0x123c */ { true, 0x123c, 0x123c }, /* 0x123d */ { true, 0x123d, 0x123d }, /* 0x123e */ { true, 0x123e, 0x123e }, /* 0x123f */ { true, 0x123f, 0x123f }, /* 0x1240 */ { true, 0x1240, 0x1240 }, /* 0x1241 */ { true, 0x1241, 0x1241 }, /* 0x1242 */ { true, 0x1242, 0x1242 }, /* 0x1243 */ { true, 0x1243, 0x1243 }, /* 0x1244 */ { true, 0x1244, 0x1244 }, /* 0x1245 */ { true, 0x1245, 0x1245 }, /* 0x1246 */ { true, 0x1246, 0x1246 }, /* 0x1247 */ { true, 0x1247, 0x1247 }, /* 0x1248 */ { true, 0x1248, 0x1248 }, /* 0x1249 */ { false, 0x1249, 0x1249 }, /* 0x124a */ { true, 0x124a, 0x124a }, /* 0x124b */ { true, 0x124b, 0x124b }, /* 0x124c */ { true, 0x124c, 0x124c }, /* 0x124d */ { true, 0x124d, 0x124d }, /* 0x124e */ { false, 0x124e, 0x124e }, /* 0x124f */ { false, 0x124f, 0x124f }, /* 0x1250 */ { true, 0x1250, 0x1250 }, /* 0x1251 */ { true, 0x1251, 0x1251 }, /* 0x1252 */ { true, 0x1252, 0x1252 }, /* 0x1253 */ { true, 0x1253, 0x1253 }, /* 0x1254 */ { true, 0x1254, 0x1254 }, /* 0x1255 */ { true, 0x1255, 0x1255 }, /* 0x1256 */ { true, 0x1256, 0x1256 }, /* 0x1257 */ { false, 0x1257, 0x1257 }, /* 0x1258 */ { true, 0x1258, 0x1258 }, /* 0x1259 */ { false, 0x1259, 0x1259 }, /* 0x125a */ { true, 0x125a, 0x125a }, /* 0x125b */ { true, 0x125b, 0x125b }, /* 0x125c */ { true, 0x125c, 0x125c }, /* 0x125d */ { true, 0x125d, 0x125d }, /* 0x125e */ { false, 0x125e, 0x125e }, /* 0x125f */ { false, 0x125f, 0x125f }, /* 0x1260 */ { true, 0x1260, 0x1260 }, /* 0x1261 */ { true, 0x1261, 0x1261 }, /* 0x1262 */ { true, 0x1262, 0x1262 }, /* 0x1263 */ { true, 0x1263, 0x1263 }, /* 0x1264 */ { true, 0x1264, 0x1264 }, /* 0x1265 */ { true, 0x1265, 0x1265 }, /* 0x1266 */ { true, 0x1266, 0x1266 }, /* 0x1267 */ { true, 0x1267, 0x1267 }, /* 0x1268 */ { true, 0x1268, 0x1268 }, /* 0x1269 */ { true, 0x1269, 0x1269 }, /* 0x126a */ { true, 0x126a, 0x126a }, /* 0x126b */ { true, 0x126b, 0x126b }, /* 0x126c */ { true, 0x126c, 0x126c }, /* 0x126d */ { true, 0x126d, 0x126d }, /* 0x126e */ { true, 0x126e, 0x126e }, /* 0x126f */ { true, 0x126f, 0x126f }, /* 0x1270 */ { true, 0x1270, 0x1270 }, /* 0x1271 */ { true, 0x1271, 0x1271 }, /* 0x1272 */ { true, 0x1272, 0x1272 }, /* 0x1273 */ { true, 0x1273, 0x1273 }, /* 0x1274 */ { true, 0x1274, 0x1274 }, /* 0x1275 */ { true, 0x1275, 0x1275 }, /* 0x1276 */ { true, 0x1276, 0x1276 }, /* 0x1277 */ { true, 0x1277, 0x1277 }, /* 0x1278 */ { true, 0x1278, 0x1278 }, /* 0x1279 */ { true, 0x1279, 0x1279 }, /* 0x127a */ { true, 0x127a, 0x127a }, /* 0x127b */ { true, 0x127b, 0x127b }, /* 0x127c */ { true, 0x127c, 0x127c }, /* 0x127d */ { true, 0x127d, 0x127d }, /* 0x127e */ { true, 0x127e, 0x127e }, /* 0x127f */ { true, 0x127f, 0x127f }, /* 0x1280 */ { true, 0x1280, 0x1280 }, /* 0x1281 */ { true, 0x1281, 0x1281 }, /* 0x1282 */ { true, 0x1282, 0x1282 }, /* 0x1283 */ { true, 0x1283, 0x1283 }, /* 0x1284 */ { true, 0x1284, 0x1284 }, /* 0x1285 */ { true, 0x1285, 0x1285 }, /* 0x1286 */ { true, 0x1286, 0x1286 }, /* 0x1287 */ { true, 0x1287, 0x1287 }, /* 0x1288 */ { true, 0x1288, 0x1288 }, /* 0x1289 */ { false, 0x1289, 0x1289 }, /* 0x128a */ { true, 0x128a, 0x128a }, /* 0x128b */ { true, 0x128b, 0x128b }, /* 0x128c */ { true, 0x128c, 0x128c }, /* 0x128d */ { true, 0x128d, 0x128d }, /* 0x128e */ { false, 0x128e, 0x128e }, /* 0x128f */ { false, 0x128f, 0x128f }, /* 0x1290 */ { true, 0x1290, 0x1290 }, /* 0x1291 */ { true, 0x1291, 0x1291 }, /* 0x1292 */ { true, 0x1292, 0x1292 }, /* 0x1293 */ { true, 0x1293, 0x1293 }, /* 0x1294 */ { true, 0x1294, 0x1294 }, /* 0x1295 */ { true, 0x1295, 0x1295 }, /* 0x1296 */ { true, 0x1296, 0x1296 }, /* 0x1297 */ { true, 0x1297, 0x1297 }, /* 0x1298 */ { true, 0x1298, 0x1298 }, /* 0x1299 */ { true, 0x1299, 0x1299 }, /* 0x129a */ { true, 0x129a, 0x129a }, /* 0x129b */ { true, 0x129b, 0x129b }, /* 0x129c */ { true, 0x129c, 0x129c }, /* 0x129d */ { true, 0x129d, 0x129d }, /* 0x129e */ { true, 0x129e, 0x129e }, /* 0x129f */ { true, 0x129f, 0x129f }, /* 0x12a0 */ { true, 0x12a0, 0x12a0 }, /* 0x12a1 */ { true, 0x12a1, 0x12a1 }, /* 0x12a2 */ { true, 0x12a2, 0x12a2 }, /* 0x12a3 */ { true, 0x12a3, 0x12a3 }, /* 0x12a4 */ { true, 0x12a4, 0x12a4 }, /* 0x12a5 */ { true, 0x12a5, 0x12a5 }, /* 0x12a6 */ { true, 0x12a6, 0x12a6 }, /* 0x12a7 */ { true, 0x12a7, 0x12a7 }, /* 0x12a8 */ { true, 0x12a8, 0x12a8 }, /* 0x12a9 */ { true, 0x12a9, 0x12a9 }, /* 0x12aa */ { true, 0x12aa, 0x12aa }, /* 0x12ab */ { true, 0x12ab, 0x12ab }, /* 0x12ac */ { true, 0x12ac, 0x12ac }, /* 0x12ad */ { true, 0x12ad, 0x12ad }, /* 0x12ae */ { true, 0x12ae, 0x12ae }, /* 0x12af */ { true, 0x12af, 0x12af }, /* 0x12b0 */ { true, 0x12b0, 0x12b0 }, /* 0x12b1 */ { false, 0x12b1, 0x12b1 }, /* 0x12b2 */ { true, 0x12b2, 0x12b2 }, /* 0x12b3 */ { true, 0x12b3, 0x12b3 }, /* 0x12b4 */ { true, 0x12b4, 0x12b4 }, /* 0x12b5 */ { true, 0x12b5, 0x12b5 }, /* 0x12b6 */ { false, 0x12b6, 0x12b6 }, /* 0x12b7 */ { false, 0x12b7, 0x12b7 }, /* 0x12b8 */ { true, 0x12b8, 0x12b8 }, /* 0x12b9 */ { true, 0x12b9, 0x12b9 }, /* 0x12ba */ { true, 0x12ba, 0x12ba }, /* 0x12bb */ { true, 0x12bb, 0x12bb }, /* 0x12bc */ { true, 0x12bc, 0x12bc }, /* 0x12bd */ { true, 0x12bd, 0x12bd }, /* 0x12be */ { true, 0x12be, 0x12be }, /* 0x12bf */ { false, 0x12bf, 0x12bf }, /* 0x12c0 */ { true, 0x12c0, 0x12c0 }, /* 0x12c1 */ { false, 0x12c1, 0x12c1 }, /* 0x12c2 */ { true, 0x12c2, 0x12c2 }, /* 0x12c3 */ { true, 0x12c3, 0x12c3 }, /* 0x12c4 */ { true, 0x12c4, 0x12c4 }, /* 0x12c5 */ { true, 0x12c5, 0x12c5 }, /* 0x12c6 */ { false, 0x12c6, 0x12c6 }, /* 0x12c7 */ { false, 0x12c7, 0x12c7 }, /* 0x12c8 */ { true, 0x12c8, 0x12c8 }, /* 0x12c9 */ { true, 0x12c9, 0x12c9 }, /* 0x12ca */ { true, 0x12ca, 0x12ca }, /* 0x12cb */ { true, 0x12cb, 0x12cb }, /* 0x12cc */ { true, 0x12cc, 0x12cc }, /* 0x12cd */ { true, 0x12cd, 0x12cd }, /* 0x12ce */ { true, 0x12ce, 0x12ce }, /* 0x12cf */ { true, 0x12cf, 0x12cf }, /* 0x12d0 */ { true, 0x12d0, 0x12d0 }, /* 0x12d1 */ { true, 0x12d1, 0x12d1 }, /* 0x12d2 */ { true, 0x12d2, 0x12d2 }, /* 0x12d3 */ { true, 0x12d3, 0x12d3 }, /* 0x12d4 */ { true, 0x12d4, 0x12d4 }, /* 0x12d5 */ { true, 0x12d5, 0x12d5 }, /* 0x12d6 */ { true, 0x12d6, 0x12d6 }, /* 0x12d7 */ { false, 0x12d7, 0x12d7 }, /* 0x12d8 */ { true, 0x12d8, 0x12d8 }, /* 0x12d9 */ { true, 0x12d9, 0x12d9 }, /* 0x12da */ { true, 0x12da, 0x12da }, /* 0x12db */ { true, 0x12db, 0x12db }, /* 0x12dc */ { true, 0x12dc, 0x12dc }, /* 0x12dd */ { true, 0x12dd, 0x12dd }, /* 0x12de */ { true, 0x12de, 0x12de }, /* 0x12df */ { true, 0x12df, 0x12df }, /* 0x12e0 */ { true, 0x12e0, 0x12e0 }, /* 0x12e1 */ { true, 0x12e1, 0x12e1 }, /* 0x12e2 */ { true, 0x12e2, 0x12e2 }, /* 0x12e3 */ { true, 0x12e3, 0x12e3 }, /* 0x12e4 */ { true, 0x12e4, 0x12e4 }, /* 0x12e5 */ { true, 0x12e5, 0x12e5 }, /* 0x12e6 */ { true, 0x12e6, 0x12e6 }, /* 0x12e7 */ { true, 0x12e7, 0x12e7 }, /* 0x12e8 */ { true, 0x12e8, 0x12e8 }, /* 0x12e9 */ { true, 0x12e9, 0x12e9 }, /* 0x12ea */ { true, 0x12ea, 0x12ea }, /* 0x12eb */ { true, 0x12eb, 0x12eb }, /* 0x12ec */ { true, 0x12ec, 0x12ec }, /* 0x12ed */ { true, 0x12ed, 0x12ed }, /* 0x12ee */ { true, 0x12ee, 0x12ee }, /* 0x12ef */ { true, 0x12ef, 0x12ef }, /* 0x12f0 */ { true, 0x12f0, 0x12f0 }, /* 0x12f1 */ { true, 0x12f1, 0x12f1 }, /* 0x12f2 */ { true, 0x12f2, 0x12f2 }, /* 0x12f3 */ { true, 0x12f3, 0x12f3 }, /* 0x12f4 */ { true, 0x12f4, 0x12f4 }, /* 0x12f5 */ { true, 0x12f5, 0x12f5 }, /* 0x12f6 */ { true, 0x12f6, 0x12f6 }, /* 0x12f7 */ { true, 0x12f7, 0x12f7 }, /* 0x12f8 */ { true, 0x12f8, 0x12f8 }, /* 0x12f9 */ { true, 0x12f9, 0x12f9 }, /* 0x12fa */ { true, 0x12fa, 0x12fa }, /* 0x12fb */ { true, 0x12fb, 0x12fb }, /* 0x12fc */ { true, 0x12fc, 0x12fc }, /* 0x12fd */ { true, 0x12fd, 0x12fd }, /* 0x12fe */ { true, 0x12fe, 0x12fe }, /* 0x12ff */ { true, 0x12ff, 0x12ff }, /* 0x1300 */ { true, 0x1300, 0x1300 }, /* 0x1301 */ { true, 0x1301, 0x1301 }, /* 0x1302 */ { true, 0x1302, 0x1302 }, /* 0x1303 */ { true, 0x1303, 0x1303 }, /* 0x1304 */ { true, 0x1304, 0x1304 }, /* 0x1305 */ { true, 0x1305, 0x1305 }, /* 0x1306 */ { true, 0x1306, 0x1306 }, /* 0x1307 */ { true, 0x1307, 0x1307 }, /* 0x1308 */ { true, 0x1308, 0x1308 }, /* 0x1309 */ { true, 0x1309, 0x1309 }, /* 0x130a */ { true, 0x130a, 0x130a }, /* 0x130b */ { true, 0x130b, 0x130b }, /* 0x130c */ { true, 0x130c, 0x130c }, /* 0x130d */ { true, 0x130d, 0x130d }, /* 0x130e */ { true, 0x130e, 0x130e }, /* 0x130f */ { true, 0x130f, 0x130f }, /* 0x1310 */ { true, 0x1310, 0x1310 }, /* 0x1311 */ { false, 0x1311, 0x1311 }, /* 0x1312 */ { true, 0x1312, 0x1312 }, /* 0x1313 */ { true, 0x1313, 0x1313 }, /* 0x1314 */ { true, 0x1314, 0x1314 }, /* 0x1315 */ { true, 0x1315, 0x1315 }, /* 0x1316 */ { false, 0x1316, 0x1316 }, /* 0x1317 */ { false, 0x1317, 0x1317 }, /* 0x1318 */ { true, 0x1318, 0x1318 }, /* 0x1319 */ { true, 0x1319, 0x1319 }, /* 0x131a */ { true, 0x131a, 0x131a }, /* 0x131b */ { true, 0x131b, 0x131b }, /* 0x131c */ { true, 0x131c, 0x131c }, /* 0x131d */ { true, 0x131d, 0x131d }, /* 0x131e */ { true, 0x131e, 0x131e }, /* 0x131f */ { true, 0x131f, 0x131f }, /* 0x1320 */ { true, 0x1320, 0x1320 }, /* 0x1321 */ { true, 0x1321, 0x1321 }, /* 0x1322 */ { true, 0x1322, 0x1322 }, /* 0x1323 */ { true, 0x1323, 0x1323 }, /* 0x1324 */ { true, 0x1324, 0x1324 }, /* 0x1325 */ { true, 0x1325, 0x1325 }, /* 0x1326 */ { true, 0x1326, 0x1326 }, /* 0x1327 */ { true, 0x1327, 0x1327 }, /* 0x1328 */ { true, 0x1328, 0x1328 }, /* 0x1329 */ { true, 0x1329, 0x1329 }, /* 0x132a */ { true, 0x132a, 0x132a }, /* 0x132b */ { true, 0x132b, 0x132b }, /* 0x132c */ { true, 0x132c, 0x132c }, /* 0x132d */ { true, 0x132d, 0x132d }, /* 0x132e */ { true, 0x132e, 0x132e }, /* 0x132f */ { true, 0x132f, 0x132f }, /* 0x1330 */ { true, 0x1330, 0x1330 }, /* 0x1331 */ { true, 0x1331, 0x1331 }, /* 0x1332 */ { true, 0x1332, 0x1332 }, /* 0x1333 */ { true, 0x1333, 0x1333 }, /* 0x1334 */ { true, 0x1334, 0x1334 }, /* 0x1335 */ { true, 0x1335, 0x1335 }, /* 0x1336 */ { true, 0x1336, 0x1336 }, /* 0x1337 */ { true, 0x1337, 0x1337 }, /* 0x1338 */ { true, 0x1338, 0x1338 }, /* 0x1339 */ { true, 0x1339, 0x1339 }, /* 0x133a */ { true, 0x133a, 0x133a }, /* 0x133b */ { true, 0x133b, 0x133b }, /* 0x133c */ { true, 0x133c, 0x133c }, /* 0x133d */ { true, 0x133d, 0x133d }, /* 0x133e */ { true, 0x133e, 0x133e }, /* 0x133f */ { true, 0x133f, 0x133f }, /* 0x1340 */ { true, 0x1340, 0x1340 }, /* 0x1341 */ { true, 0x1341, 0x1341 }, /* 0x1342 */ { true, 0x1342, 0x1342 }, /* 0x1343 */ { true, 0x1343, 0x1343 }, /* 0x1344 */ { true, 0x1344, 0x1344 }, /* 0x1345 */ { true, 0x1345, 0x1345 }, /* 0x1346 */ { true, 0x1346, 0x1346 }, /* 0x1347 */ { true, 0x1347, 0x1347 }, /* 0x1348 */ { true, 0x1348, 0x1348 }, /* 0x1349 */ { true, 0x1349, 0x1349 }, /* 0x134a */ { true, 0x134a, 0x134a }, /* 0x134b */ { true, 0x134b, 0x134b }, /* 0x134c */ { true, 0x134c, 0x134c }, /* 0x134d */ { true, 0x134d, 0x134d }, /* 0x134e */ { true, 0x134e, 0x134e }, /* 0x134f */ { true, 0x134f, 0x134f }, /* 0x1350 */ { true, 0x1350, 0x1350 }, /* 0x1351 */ { true, 0x1351, 0x1351 }, /* 0x1352 */ { true, 0x1352, 0x1352 }, /* 0x1353 */ { true, 0x1353, 0x1353 }, /* 0x1354 */ { true, 0x1354, 0x1354 }, /* 0x1355 */ { true, 0x1355, 0x1355 }, /* 0x1356 */ { true, 0x1356, 0x1356 }, /* 0x1357 */ { true, 0x1357, 0x1357 }, /* 0x1358 */ { true, 0x1358, 0x1358 }, /* 0x1359 */ { true, 0x1359, 0x1359 }, /* 0x135a */ { true, 0x135a, 0x135a }, /* 0x135b */ { false, 0x135b, 0x135b }, /* 0x135c */ { false, 0x135c, 0x135c }, /* 0x135d */ { false, 0x135d, 0x135d }, /* 0x135e */ { false, 0x135e, 0x135e }, /* 0x135f */ { true, 0x135f, 0x135f }, /* 0x1360 */ { false, 0x1360, 0x1360 }, /* 0x1361 */ { false, 0x1361, 0x1361 }, /* 0x1362 */ { false, 0x1362, 0x1362 }, /* 0x1363 */ { false, 0x1363, 0x1363 }, /* 0x1364 */ { false, 0x1364, 0x1364 }, /* 0x1365 */ { false, 0x1365, 0x1365 }, /* 0x1366 */ { false, 0x1366, 0x1366 }, /* 0x1367 */ { false, 0x1367, 0x1367 }, /* 0x1368 */ { false, 0x1368, 0x1368 }, /* 0x1369 */ { false, 0x1369, 0x1369 }, /* 0x136a */ { false, 0x136a, 0x136a }, /* 0x136b */ { false, 0x136b, 0x136b }, /* 0x136c */ { false, 0x136c, 0x136c }, /* 0x136d */ { false, 0x136d, 0x136d }, /* 0x136e */ { false, 0x136e, 0x136e }, /* 0x136f */ { false, 0x136f, 0x136f }, /* 0x1370 */ { false, 0x1370, 0x1370 }, /* 0x1371 */ { false, 0x1371, 0x1371 }, /* 0x1372 */ { false, 0x1372, 0x1372 }, /* 0x1373 */ { false, 0x1373, 0x1373 }, /* 0x1374 */ { false, 0x1374, 0x1374 }, /* 0x1375 */ { false, 0x1375, 0x1375 }, /* 0x1376 */ { false, 0x1376, 0x1376 }, /* 0x1377 */ { false, 0x1377, 0x1377 }, /* 0x1378 */ { false, 0x1378, 0x1378 }, /* 0x1379 */ { false, 0x1379, 0x1379 }, /* 0x137a */ { false, 0x137a, 0x137a }, /* 0x137b */ { false, 0x137b, 0x137b }, /* 0x137c */ { false, 0x137c, 0x137c }, /* 0x137d */ { false, 0x137d, 0x137d }, /* 0x137e */ { false, 0x137e, 0x137e }, /* 0x137f */ { false, 0x137f, 0x137f }, /* 0x1380 */ { true, 0x1380, 0x1380 }, /* 0x1381 */ { true, 0x1381, 0x1381 }, /* 0x1382 */ { true, 0x1382, 0x1382 }, /* 0x1383 */ { true, 0x1383, 0x1383 }, /* 0x1384 */ { true, 0x1384, 0x1384 }, /* 0x1385 */ { true, 0x1385, 0x1385 }, /* 0x1386 */ { true, 0x1386, 0x1386 }, /* 0x1387 */ { true, 0x1387, 0x1387 }, /* 0x1388 */ { true, 0x1388, 0x1388 }, /* 0x1389 */ { true, 0x1389, 0x1389 }, /* 0x138a */ { true, 0x138a, 0x138a }, /* 0x138b */ { true, 0x138b, 0x138b }, /* 0x138c */ { true, 0x138c, 0x138c }, /* 0x138d */ { true, 0x138d, 0x138d }, /* 0x138e */ { true, 0x138e, 0x138e }, /* 0x138f */ { true, 0x138f, 0x138f }, /* 0x1390 */ { false, 0x1390, 0x1390 }, /* 0x1391 */ { false, 0x1391, 0x1391 }, /* 0x1392 */ { false, 0x1392, 0x1392 }, /* 0x1393 */ { false, 0x1393, 0x1393 }, /* 0x1394 */ { false, 0x1394, 0x1394 }, /* 0x1395 */ { false, 0x1395, 0x1395 }, /* 0x1396 */ { false, 0x1396, 0x1396 }, /* 0x1397 */ { false, 0x1397, 0x1397 }, /* 0x1398 */ { false, 0x1398, 0x1398 }, /* 0x1399 */ { false, 0x1399, 0x1399 }, /* 0x139a */ { false, 0x139a, 0x139a }, /* 0x139b */ { false, 0x139b, 0x139b }, /* 0x139c */ { false, 0x139c, 0x139c }, /* 0x139d */ { false, 0x139d, 0x139d }, /* 0x139e */ { false, 0x139e, 0x139e }, /* 0x139f */ { false, 0x139f, 0x139f }, /* 0x13a0 */ { true, 0x13a0, 0x13a0 }, /* 0x13a1 */ { true, 0x13a1, 0x13a1 }, /* 0x13a2 */ { true, 0x13a2, 0x13a2 }, /* 0x13a3 */ { true, 0x13a3, 0x13a3 }, /* 0x13a4 */ { true, 0x13a4, 0x13a4 }, /* 0x13a5 */ { true, 0x13a5, 0x13a5 }, /* 0x13a6 */ { true, 0x13a6, 0x13a6 }, /* 0x13a7 */ { true, 0x13a7, 0x13a7 }, /* 0x13a8 */ { true, 0x13a8, 0x13a8 }, /* 0x13a9 */ { true, 0x13a9, 0x13a9 }, /* 0x13aa */ { true, 0x13aa, 0x13aa }, /* 0x13ab */ { true, 0x13ab, 0x13ab }, /* 0x13ac */ { true, 0x13ac, 0x13ac }, /* 0x13ad */ { true, 0x13ad, 0x13ad }, /* 0x13ae */ { true, 0x13ae, 0x13ae }, /* 0x13af */ { true, 0x13af, 0x13af }, /* 0x13b0 */ { true, 0x13b0, 0x13b0 }, /* 0x13b1 */ { true, 0x13b1, 0x13b1 }, /* 0x13b2 */ { true, 0x13b2, 0x13b2 }, /* 0x13b3 */ { true, 0x13b3, 0x13b3 }, /* 0x13b4 */ { true, 0x13b4, 0x13b4 }, /* 0x13b5 */ { true, 0x13b5, 0x13b5 }, /* 0x13b6 */ { true, 0x13b6, 0x13b6 }, /* 0x13b7 */ { true, 0x13b7, 0x13b7 }, /* 0x13b8 */ { true, 0x13b8, 0x13b8 }, /* 0x13b9 */ { true, 0x13b9, 0x13b9 }, /* 0x13ba */ { true, 0x13ba, 0x13ba }, /* 0x13bb */ { true, 0x13bb, 0x13bb }, /* 0x13bc */ { true, 0x13bc, 0x13bc }, /* 0x13bd */ { true, 0x13bd, 0x13bd }, /* 0x13be */ { true, 0x13be, 0x13be }, /* 0x13bf */ { true, 0x13bf, 0x13bf }, /* 0x13c0 */ { true, 0x13c0, 0x13c0 }, /* 0x13c1 */ { true, 0x13c1, 0x13c1 }, /* 0x13c2 */ { true, 0x13c2, 0x13c2 }, /* 0x13c3 */ { true, 0x13c3, 0x13c3 }, /* 0x13c4 */ { true, 0x13c4, 0x13c4 }, /* 0x13c5 */ { true, 0x13c5, 0x13c5 }, /* 0x13c6 */ { true, 0x13c6, 0x13c6 }, /* 0x13c7 */ { true, 0x13c7, 0x13c7 }, /* 0x13c8 */ { true, 0x13c8, 0x13c8 }, /* 0x13c9 */ { true, 0x13c9, 0x13c9 }, /* 0x13ca */ { true, 0x13ca, 0x13ca }, /* 0x13cb */ { true, 0x13cb, 0x13cb }, /* 0x13cc */ { true, 0x13cc, 0x13cc }, /* 0x13cd */ { true, 0x13cd, 0x13cd }, /* 0x13ce */ { true, 0x13ce, 0x13ce }, /* 0x13cf */ { true, 0x13cf, 0x13cf }, /* 0x13d0 */ { true, 0x13d0, 0x13d0 }, /* 0x13d1 */ { true, 0x13d1, 0x13d1 }, /* 0x13d2 */ { true, 0x13d2, 0x13d2 }, /* 0x13d3 */ { true, 0x13d3, 0x13d3 }, /* 0x13d4 */ { true, 0x13d4, 0x13d4 }, /* 0x13d5 */ { true, 0x13d5, 0x13d5 }, /* 0x13d6 */ { true, 0x13d6, 0x13d6 }, /* 0x13d7 */ { true, 0x13d7, 0x13d7 }, /* 0x13d8 */ { true, 0x13d8, 0x13d8 }, /* 0x13d9 */ { true, 0x13d9, 0x13d9 }, /* 0x13da */ { true, 0x13da, 0x13da }, /* 0x13db */ { true, 0x13db, 0x13db }, /* 0x13dc */ { true, 0x13dc, 0x13dc }, /* 0x13dd */ { true, 0x13dd, 0x13dd }, /* 0x13de */ { true, 0x13de, 0x13de }, /* 0x13df */ { true, 0x13df, 0x13df }, /* 0x13e0 */ { true, 0x13e0, 0x13e0 }, /* 0x13e1 */ { true, 0x13e1, 0x13e1 }, /* 0x13e2 */ { true, 0x13e2, 0x13e2 }, /* 0x13e3 */ { true, 0x13e3, 0x13e3 }, /* 0x13e4 */ { true, 0x13e4, 0x13e4 }, /* 0x13e5 */ { true, 0x13e5, 0x13e5 }, /* 0x13e6 */ { true, 0x13e6, 0x13e6 }, /* 0x13e7 */ { true, 0x13e7, 0x13e7 }, /* 0x13e8 */ { true, 0x13e8, 0x13e8 }, /* 0x13e9 */ { true, 0x13e9, 0x13e9 }, /* 0x13ea */ { true, 0x13ea, 0x13ea }, /* 0x13eb */ { true, 0x13eb, 0x13eb }, /* 0x13ec */ { true, 0x13ec, 0x13ec }, /* 0x13ed */ { true, 0x13ed, 0x13ed }, /* 0x13ee */ { true, 0x13ee, 0x13ee }, /* 0x13ef */ { true, 0x13ef, 0x13ef }, /* 0x13f0 */ { true, 0x13f0, 0x13f0 }, /* 0x13f1 */ { true, 0x13f1, 0x13f1 }, /* 0x13f2 */ { true, 0x13f2, 0x13f2 }, /* 0x13f3 */ { true, 0x13f3, 0x13f3 }, /* 0x13f4 */ { true, 0x13f4, 0x13f4 }, /* 0x13f5 */ { false, 0x13f5, 0x13f5 }, /* 0x13f6 */ { false, 0x13f6, 0x13f6 }, /* 0x13f7 */ { false, 0x13f7, 0x13f7 }, /* 0x13f8 */ { false, 0x13f8, 0x13f8 }, /* 0x13f9 */ { false, 0x13f9, 0x13f9 }, /* 0x13fa */ { false, 0x13fa, 0x13fa }, /* 0x13fb */ { false, 0x13fb, 0x13fb }, /* 0x13fc */ { false, 0x13fc, 0x13fc }, /* 0x13fd */ { false, 0x13fd, 0x13fd }, /* 0x13fe */ { false, 0x13fe, 0x13fe }, /* 0x13ff */ { false, 0x13ff, 0x13ff }, /* 0x1400 */ { false, 0x1400, 0x1400 }, /* 0x1401 */ { true, 0x1401, 0x1401 }, /* 0x1402 */ { true, 0x1402, 0x1402 }, /* 0x1403 */ { true, 0x1403, 0x1403 }, /* 0x1404 */ { true, 0x1404, 0x1404 }, /* 0x1405 */ { true, 0x1405, 0x1405 }, /* 0x1406 */ { true, 0x1406, 0x1406 }, /* 0x1407 */ { true, 0x1407, 0x1407 }, /* 0x1408 */ { true, 0x1408, 0x1408 }, /* 0x1409 */ { true, 0x1409, 0x1409 }, /* 0x140a */ { true, 0x140a, 0x140a }, /* 0x140b */ { true, 0x140b, 0x140b }, /* 0x140c */ { true, 0x140c, 0x140c }, /* 0x140d */ { true, 0x140d, 0x140d }, /* 0x140e */ { true, 0x140e, 0x140e }, /* 0x140f */ { true, 0x140f, 0x140f }, /* 0x1410 */ { true, 0x1410, 0x1410 }, /* 0x1411 */ { true, 0x1411, 0x1411 }, /* 0x1412 */ { true, 0x1412, 0x1412 }, /* 0x1413 */ { true, 0x1413, 0x1413 }, /* 0x1414 */ { true, 0x1414, 0x1414 }, /* 0x1415 */ { true, 0x1415, 0x1415 }, /* 0x1416 */ { true, 0x1416, 0x1416 }, /* 0x1417 */ { true, 0x1417, 0x1417 }, /* 0x1418 */ { true, 0x1418, 0x1418 }, /* 0x1419 */ { true, 0x1419, 0x1419 }, /* 0x141a */ { true, 0x141a, 0x141a }, /* 0x141b */ { true, 0x141b, 0x141b }, /* 0x141c */ { true, 0x141c, 0x141c }, /* 0x141d */ { true, 0x141d, 0x141d }, /* 0x141e */ { true, 0x141e, 0x141e }, /* 0x141f */ { true, 0x141f, 0x141f }, /* 0x1420 */ { true, 0x1420, 0x1420 }, /* 0x1421 */ { true, 0x1421, 0x1421 }, /* 0x1422 */ { true, 0x1422, 0x1422 }, /* 0x1423 */ { true, 0x1423, 0x1423 }, /* 0x1424 */ { true, 0x1424, 0x1424 }, /* 0x1425 */ { true, 0x1425, 0x1425 }, /* 0x1426 */ { true, 0x1426, 0x1426 }, /* 0x1427 */ { true, 0x1427, 0x1427 }, /* 0x1428 */ { true, 0x1428, 0x1428 }, /* 0x1429 */ { true, 0x1429, 0x1429 }, /* 0x142a */ { true, 0x142a, 0x142a }, /* 0x142b */ { true, 0x142b, 0x142b }, /* 0x142c */ { true, 0x142c, 0x142c }, /* 0x142d */ { true, 0x142d, 0x142d }, /* 0x142e */ { true, 0x142e, 0x142e }, /* 0x142f */ { true, 0x142f, 0x142f }, /* 0x1430 */ { true, 0x1430, 0x1430 }, /* 0x1431 */ { true, 0x1431, 0x1431 }, /* 0x1432 */ { true, 0x1432, 0x1432 }, /* 0x1433 */ { true, 0x1433, 0x1433 }, /* 0x1434 */ { true, 0x1434, 0x1434 }, /* 0x1435 */ { true, 0x1435, 0x1435 }, /* 0x1436 */ { true, 0x1436, 0x1436 }, /* 0x1437 */ { true, 0x1437, 0x1437 }, /* 0x1438 */ { true, 0x1438, 0x1438 }, /* 0x1439 */ { true, 0x1439, 0x1439 }, /* 0x143a */ { true, 0x143a, 0x143a }, /* 0x143b */ { true, 0x143b, 0x143b }, /* 0x143c */ { true, 0x143c, 0x143c }, /* 0x143d */ { true, 0x143d, 0x143d }, /* 0x143e */ { true, 0x143e, 0x143e }, /* 0x143f */ { true, 0x143f, 0x143f }, /* 0x1440 */ { true, 0x1440, 0x1440 }, /* 0x1441 */ { true, 0x1441, 0x1441 }, /* 0x1442 */ { true, 0x1442, 0x1442 }, /* 0x1443 */ { true, 0x1443, 0x1443 }, /* 0x1444 */ { true, 0x1444, 0x1444 }, /* 0x1445 */ { true, 0x1445, 0x1445 }, /* 0x1446 */ { true, 0x1446, 0x1446 }, /* 0x1447 */ { true, 0x1447, 0x1447 }, /* 0x1448 */ { true, 0x1448, 0x1448 }, /* 0x1449 */ { true, 0x1449, 0x1449 }, /* 0x144a */ { true, 0x144a, 0x144a }, /* 0x144b */ { true, 0x144b, 0x144b }, /* 0x144c */ { true, 0x144c, 0x144c }, /* 0x144d */ { true, 0x144d, 0x144d }, /* 0x144e */ { true, 0x144e, 0x144e }, /* 0x144f */ { true, 0x144f, 0x144f }, /* 0x1450 */ { true, 0x1450, 0x1450 }, /* 0x1451 */ { true, 0x1451, 0x1451 }, /* 0x1452 */ { true, 0x1452, 0x1452 }, /* 0x1453 */ { true, 0x1453, 0x1453 }, /* 0x1454 */ { true, 0x1454, 0x1454 }, /* 0x1455 */ { true, 0x1455, 0x1455 }, /* 0x1456 */ { true, 0x1456, 0x1456 }, /* 0x1457 */ { true, 0x1457, 0x1457 }, /* 0x1458 */ { true, 0x1458, 0x1458 }, /* 0x1459 */ { true, 0x1459, 0x1459 }, /* 0x145a */ { true, 0x145a, 0x145a }, /* 0x145b */ { true, 0x145b, 0x145b }, /* 0x145c */ { true, 0x145c, 0x145c }, /* 0x145d */ { true, 0x145d, 0x145d }, /* 0x145e */ { true, 0x145e, 0x145e }, /* 0x145f */ { true, 0x145f, 0x145f }, /* 0x1460 */ { true, 0x1460, 0x1460 }, /* 0x1461 */ { true, 0x1461, 0x1461 }, /* 0x1462 */ { true, 0x1462, 0x1462 }, /* 0x1463 */ { true, 0x1463, 0x1463 }, /* 0x1464 */ { true, 0x1464, 0x1464 }, /* 0x1465 */ { true, 0x1465, 0x1465 }, /* 0x1466 */ { true, 0x1466, 0x1466 }, /* 0x1467 */ { true, 0x1467, 0x1467 }, /* 0x1468 */ { true, 0x1468, 0x1468 }, /* 0x1469 */ { true, 0x1469, 0x1469 }, /* 0x146a */ { true, 0x146a, 0x146a }, /* 0x146b */ { true, 0x146b, 0x146b }, /* 0x146c */ { true, 0x146c, 0x146c }, /* 0x146d */ { true, 0x146d, 0x146d }, /* 0x146e */ { true, 0x146e, 0x146e }, /* 0x146f */ { true, 0x146f, 0x146f }, /* 0x1470 */ { true, 0x1470, 0x1470 }, /* 0x1471 */ { true, 0x1471, 0x1471 }, /* 0x1472 */ { true, 0x1472, 0x1472 }, /* 0x1473 */ { true, 0x1473, 0x1473 }, /* 0x1474 */ { true, 0x1474, 0x1474 }, /* 0x1475 */ { true, 0x1475, 0x1475 }, /* 0x1476 */ { true, 0x1476, 0x1476 }, /* 0x1477 */ { true, 0x1477, 0x1477 }, /* 0x1478 */ { true, 0x1478, 0x1478 }, /* 0x1479 */ { true, 0x1479, 0x1479 }, /* 0x147a */ { true, 0x147a, 0x147a }, /* 0x147b */ { true, 0x147b, 0x147b }, /* 0x147c */ { true, 0x147c, 0x147c }, /* 0x147d */ { true, 0x147d, 0x147d }, /* 0x147e */ { true, 0x147e, 0x147e }, /* 0x147f */ { true, 0x147f, 0x147f }, /* 0x1480 */ { true, 0x1480, 0x1480 }, /* 0x1481 */ { true, 0x1481, 0x1481 }, /* 0x1482 */ { true, 0x1482, 0x1482 }, /* 0x1483 */ { true, 0x1483, 0x1483 }, /* 0x1484 */ { true, 0x1484, 0x1484 }, /* 0x1485 */ { true, 0x1485, 0x1485 }, /* 0x1486 */ { true, 0x1486, 0x1486 }, /* 0x1487 */ { true, 0x1487, 0x1487 }, /* 0x1488 */ { true, 0x1488, 0x1488 }, /* 0x1489 */ { true, 0x1489, 0x1489 }, /* 0x148a */ { true, 0x148a, 0x148a }, /* 0x148b */ { true, 0x148b, 0x148b }, /* 0x148c */ { true, 0x148c, 0x148c }, /* 0x148d */ { true, 0x148d, 0x148d }, /* 0x148e */ { true, 0x148e, 0x148e }, /* 0x148f */ { true, 0x148f, 0x148f }, /* 0x1490 */ { true, 0x1490, 0x1490 }, /* 0x1491 */ { true, 0x1491, 0x1491 }, /* 0x1492 */ { true, 0x1492, 0x1492 }, /* 0x1493 */ { true, 0x1493, 0x1493 }, /* 0x1494 */ { true, 0x1494, 0x1494 }, /* 0x1495 */ { true, 0x1495, 0x1495 }, /* 0x1496 */ { true, 0x1496, 0x1496 }, /* 0x1497 */ { true, 0x1497, 0x1497 }, /* 0x1498 */ { true, 0x1498, 0x1498 }, /* 0x1499 */ { true, 0x1499, 0x1499 }, /* 0x149a */ { true, 0x149a, 0x149a }, /* 0x149b */ { true, 0x149b, 0x149b }, /* 0x149c */ { true, 0x149c, 0x149c }, /* 0x149d */ { true, 0x149d, 0x149d }, /* 0x149e */ { true, 0x149e, 0x149e }, /* 0x149f */ { true, 0x149f, 0x149f }, /* 0x14a0 */ { true, 0x14a0, 0x14a0 }, /* 0x14a1 */ { true, 0x14a1, 0x14a1 }, /* 0x14a2 */ { true, 0x14a2, 0x14a2 }, /* 0x14a3 */ { true, 0x14a3, 0x14a3 }, /* 0x14a4 */ { true, 0x14a4, 0x14a4 }, /* 0x14a5 */ { true, 0x14a5, 0x14a5 }, /* 0x14a6 */ { true, 0x14a6, 0x14a6 }, /* 0x14a7 */ { true, 0x14a7, 0x14a7 }, /* 0x14a8 */ { true, 0x14a8, 0x14a8 }, /* 0x14a9 */ { true, 0x14a9, 0x14a9 }, /* 0x14aa */ { true, 0x14aa, 0x14aa }, /* 0x14ab */ { true, 0x14ab, 0x14ab }, /* 0x14ac */ { true, 0x14ac, 0x14ac }, /* 0x14ad */ { true, 0x14ad, 0x14ad }, /* 0x14ae */ { true, 0x14ae, 0x14ae }, /* 0x14af */ { true, 0x14af, 0x14af }, /* 0x14b0 */ { true, 0x14b0, 0x14b0 }, /* 0x14b1 */ { true, 0x14b1, 0x14b1 }, /* 0x14b2 */ { true, 0x14b2, 0x14b2 }, /* 0x14b3 */ { true, 0x14b3, 0x14b3 }, /* 0x14b4 */ { true, 0x14b4, 0x14b4 }, /* 0x14b5 */ { true, 0x14b5, 0x14b5 }, /* 0x14b6 */ { true, 0x14b6, 0x14b6 }, /* 0x14b7 */ { true, 0x14b7, 0x14b7 }, /* 0x14b8 */ { true, 0x14b8, 0x14b8 }, /* 0x14b9 */ { true, 0x14b9, 0x14b9 }, /* 0x14ba */ { true, 0x14ba, 0x14ba }, /* 0x14bb */ { true, 0x14bb, 0x14bb }, /* 0x14bc */ { true, 0x14bc, 0x14bc }, /* 0x14bd */ { true, 0x14bd, 0x14bd }, /* 0x14be */ { true, 0x14be, 0x14be }, /* 0x14bf */ { true, 0x14bf, 0x14bf }, /* 0x14c0 */ { true, 0x14c0, 0x14c0 }, /* 0x14c1 */ { true, 0x14c1, 0x14c1 }, /* 0x14c2 */ { true, 0x14c2, 0x14c2 }, /* 0x14c3 */ { true, 0x14c3, 0x14c3 }, /* 0x14c4 */ { true, 0x14c4, 0x14c4 }, /* 0x14c5 */ { true, 0x14c5, 0x14c5 }, /* 0x14c6 */ { true, 0x14c6, 0x14c6 }, /* 0x14c7 */ { true, 0x14c7, 0x14c7 }, /* 0x14c8 */ { true, 0x14c8, 0x14c8 }, /* 0x14c9 */ { true, 0x14c9, 0x14c9 }, /* 0x14ca */ { true, 0x14ca, 0x14ca }, /* 0x14cb */ { true, 0x14cb, 0x14cb }, /* 0x14cc */ { true, 0x14cc, 0x14cc }, /* 0x14cd */ { true, 0x14cd, 0x14cd }, /* 0x14ce */ { true, 0x14ce, 0x14ce }, /* 0x14cf */ { true, 0x14cf, 0x14cf }, /* 0x14d0 */ { true, 0x14d0, 0x14d0 }, /* 0x14d1 */ { true, 0x14d1, 0x14d1 }, /* 0x14d2 */ { true, 0x14d2, 0x14d2 }, /* 0x14d3 */ { true, 0x14d3, 0x14d3 }, /* 0x14d4 */ { true, 0x14d4, 0x14d4 }, /* 0x14d5 */ { true, 0x14d5, 0x14d5 }, /* 0x14d6 */ { true, 0x14d6, 0x14d6 }, /* 0x14d7 */ { true, 0x14d7, 0x14d7 }, /* 0x14d8 */ { true, 0x14d8, 0x14d8 }, /* 0x14d9 */ { true, 0x14d9, 0x14d9 }, /* 0x14da */ { true, 0x14da, 0x14da }, /* 0x14db */ { true, 0x14db, 0x14db }, /* 0x14dc */ { true, 0x14dc, 0x14dc }, /* 0x14dd */ { true, 0x14dd, 0x14dd }, /* 0x14de */ { true, 0x14de, 0x14de }, /* 0x14df */ { true, 0x14df, 0x14df }, /* 0x14e0 */ { true, 0x14e0, 0x14e0 }, /* 0x14e1 */ { true, 0x14e1, 0x14e1 }, /* 0x14e2 */ { true, 0x14e2, 0x14e2 }, /* 0x14e3 */ { true, 0x14e3, 0x14e3 }, /* 0x14e4 */ { true, 0x14e4, 0x14e4 }, /* 0x14e5 */ { true, 0x14e5, 0x14e5 }, /* 0x14e6 */ { true, 0x14e6, 0x14e6 }, /* 0x14e7 */ { true, 0x14e7, 0x14e7 }, /* 0x14e8 */ { true, 0x14e8, 0x14e8 }, /* 0x14e9 */ { true, 0x14e9, 0x14e9 }, /* 0x14ea */ { true, 0x14ea, 0x14ea }, /* 0x14eb */ { true, 0x14eb, 0x14eb }, /* 0x14ec */ { true, 0x14ec, 0x14ec }, /* 0x14ed */ { true, 0x14ed, 0x14ed }, /* 0x14ee */ { true, 0x14ee, 0x14ee }, /* 0x14ef */ { true, 0x14ef, 0x14ef }, /* 0x14f0 */ { true, 0x14f0, 0x14f0 }, /* 0x14f1 */ { true, 0x14f1, 0x14f1 }, /* 0x14f2 */ { true, 0x14f2, 0x14f2 }, /* 0x14f3 */ { true, 0x14f3, 0x14f3 }, /* 0x14f4 */ { true, 0x14f4, 0x14f4 }, /* 0x14f5 */ { true, 0x14f5, 0x14f5 }, /* 0x14f6 */ { true, 0x14f6, 0x14f6 }, /* 0x14f7 */ { true, 0x14f7, 0x14f7 }, /* 0x14f8 */ { true, 0x14f8, 0x14f8 }, /* 0x14f9 */ { true, 0x14f9, 0x14f9 }, /* 0x14fa */ { true, 0x14fa, 0x14fa }, /* 0x14fb */ { true, 0x14fb, 0x14fb }, /* 0x14fc */ { true, 0x14fc, 0x14fc }, /* 0x14fd */ { true, 0x14fd, 0x14fd }, /* 0x14fe */ { true, 0x14fe, 0x14fe }, /* 0x14ff */ { true, 0x14ff, 0x14ff }, /* 0x1500 */ { true, 0x1500, 0x1500 }, /* 0x1501 */ { true, 0x1501, 0x1501 }, /* 0x1502 */ { true, 0x1502, 0x1502 }, /* 0x1503 */ { true, 0x1503, 0x1503 }, /* 0x1504 */ { true, 0x1504, 0x1504 }, /* 0x1505 */ { true, 0x1505, 0x1505 }, /* 0x1506 */ { true, 0x1506, 0x1506 }, /* 0x1507 */ { true, 0x1507, 0x1507 }, /* 0x1508 */ { true, 0x1508, 0x1508 }, /* 0x1509 */ { true, 0x1509, 0x1509 }, /* 0x150a */ { true, 0x150a, 0x150a }, /* 0x150b */ { true, 0x150b, 0x150b }, /* 0x150c */ { true, 0x150c, 0x150c }, /* 0x150d */ { true, 0x150d, 0x150d }, /* 0x150e */ { true, 0x150e, 0x150e }, /* 0x150f */ { true, 0x150f, 0x150f }, /* 0x1510 */ { true, 0x1510, 0x1510 }, /* 0x1511 */ { true, 0x1511, 0x1511 }, /* 0x1512 */ { true, 0x1512, 0x1512 }, /* 0x1513 */ { true, 0x1513, 0x1513 }, /* 0x1514 */ { true, 0x1514, 0x1514 }, /* 0x1515 */ { true, 0x1515, 0x1515 }, /* 0x1516 */ { true, 0x1516, 0x1516 }, /* 0x1517 */ { true, 0x1517, 0x1517 }, /* 0x1518 */ { true, 0x1518, 0x1518 }, /* 0x1519 */ { true, 0x1519, 0x1519 }, /* 0x151a */ { true, 0x151a, 0x151a }, /* 0x151b */ { true, 0x151b, 0x151b }, /* 0x151c */ { true, 0x151c, 0x151c }, /* 0x151d */ { true, 0x151d, 0x151d }, /* 0x151e */ { true, 0x151e, 0x151e }, /* 0x151f */ { true, 0x151f, 0x151f }, /* 0x1520 */ { true, 0x1520, 0x1520 }, /* 0x1521 */ { true, 0x1521, 0x1521 }, /* 0x1522 */ { true, 0x1522, 0x1522 }, /* 0x1523 */ { true, 0x1523, 0x1523 }, /* 0x1524 */ { true, 0x1524, 0x1524 }, /* 0x1525 */ { true, 0x1525, 0x1525 }, /* 0x1526 */ { true, 0x1526, 0x1526 }, /* 0x1527 */ { true, 0x1527, 0x1527 }, /* 0x1528 */ { true, 0x1528, 0x1528 }, /* 0x1529 */ { true, 0x1529, 0x1529 }, /* 0x152a */ { true, 0x152a, 0x152a }, /* 0x152b */ { true, 0x152b, 0x152b }, /* 0x152c */ { true, 0x152c, 0x152c }, /* 0x152d */ { true, 0x152d, 0x152d }, /* 0x152e */ { true, 0x152e, 0x152e }, /* 0x152f */ { true, 0x152f, 0x152f }, /* 0x1530 */ { true, 0x1530, 0x1530 }, /* 0x1531 */ { true, 0x1531, 0x1531 }, /* 0x1532 */ { true, 0x1532, 0x1532 }, /* 0x1533 */ { true, 0x1533, 0x1533 }, /* 0x1534 */ { true, 0x1534, 0x1534 }, /* 0x1535 */ { true, 0x1535, 0x1535 }, /* 0x1536 */ { true, 0x1536, 0x1536 }, /* 0x1537 */ { true, 0x1537, 0x1537 }, /* 0x1538 */ { true, 0x1538, 0x1538 }, /* 0x1539 */ { true, 0x1539, 0x1539 }, /* 0x153a */ { true, 0x153a, 0x153a }, /* 0x153b */ { true, 0x153b, 0x153b }, /* 0x153c */ { true, 0x153c, 0x153c }, /* 0x153d */ { true, 0x153d, 0x153d }, /* 0x153e */ { true, 0x153e, 0x153e }, /* 0x153f */ { true, 0x153f, 0x153f }, /* 0x1540 */ { true, 0x1540, 0x1540 }, /* 0x1541 */ { true, 0x1541, 0x1541 }, /* 0x1542 */ { true, 0x1542, 0x1542 }, /* 0x1543 */ { true, 0x1543, 0x1543 }, /* 0x1544 */ { true, 0x1544, 0x1544 }, /* 0x1545 */ { true, 0x1545, 0x1545 }, /* 0x1546 */ { true, 0x1546, 0x1546 }, /* 0x1547 */ { true, 0x1547, 0x1547 }, /* 0x1548 */ { true, 0x1548, 0x1548 }, /* 0x1549 */ { true, 0x1549, 0x1549 }, /* 0x154a */ { true, 0x154a, 0x154a }, /* 0x154b */ { true, 0x154b, 0x154b }, /* 0x154c */ { true, 0x154c, 0x154c }, /* 0x154d */ { true, 0x154d, 0x154d }, /* 0x154e */ { true, 0x154e, 0x154e }, /* 0x154f */ { true, 0x154f, 0x154f }, /* 0x1550 */ { true, 0x1550, 0x1550 }, /* 0x1551 */ { true, 0x1551, 0x1551 }, /* 0x1552 */ { true, 0x1552, 0x1552 }, /* 0x1553 */ { true, 0x1553, 0x1553 }, /* 0x1554 */ { true, 0x1554, 0x1554 }, /* 0x1555 */ { true, 0x1555, 0x1555 }, /* 0x1556 */ { true, 0x1556, 0x1556 }, /* 0x1557 */ { true, 0x1557, 0x1557 }, /* 0x1558 */ { true, 0x1558, 0x1558 }, /* 0x1559 */ { true, 0x1559, 0x1559 }, /* 0x155a */ { true, 0x155a, 0x155a }, /* 0x155b */ { true, 0x155b, 0x155b }, /* 0x155c */ { true, 0x155c, 0x155c }, /* 0x155d */ { true, 0x155d, 0x155d }, /* 0x155e */ { true, 0x155e, 0x155e }, /* 0x155f */ { true, 0x155f, 0x155f }, /* 0x1560 */ { true, 0x1560, 0x1560 }, /* 0x1561 */ { true, 0x1561, 0x1561 }, /* 0x1562 */ { true, 0x1562, 0x1562 }, /* 0x1563 */ { true, 0x1563, 0x1563 }, /* 0x1564 */ { true, 0x1564, 0x1564 }, /* 0x1565 */ { true, 0x1565, 0x1565 }, /* 0x1566 */ { true, 0x1566, 0x1566 }, /* 0x1567 */ { true, 0x1567, 0x1567 }, /* 0x1568 */ { true, 0x1568, 0x1568 }, /* 0x1569 */ { true, 0x1569, 0x1569 }, /* 0x156a */ { true, 0x156a, 0x156a }, /* 0x156b */ { true, 0x156b, 0x156b }, /* 0x156c */ { true, 0x156c, 0x156c }, /* 0x156d */ { true, 0x156d, 0x156d }, /* 0x156e */ { true, 0x156e, 0x156e }, /* 0x156f */ { true, 0x156f, 0x156f }, /* 0x1570 */ { true, 0x1570, 0x1570 }, /* 0x1571 */ { true, 0x1571, 0x1571 }, /* 0x1572 */ { true, 0x1572, 0x1572 }, /* 0x1573 */ { true, 0x1573, 0x1573 }, /* 0x1574 */ { true, 0x1574, 0x1574 }, /* 0x1575 */ { true, 0x1575, 0x1575 }, /* 0x1576 */ { true, 0x1576, 0x1576 }, /* 0x1577 */ { true, 0x1577, 0x1577 }, /* 0x1578 */ { true, 0x1578, 0x1578 }, /* 0x1579 */ { true, 0x1579, 0x1579 }, /* 0x157a */ { true, 0x157a, 0x157a }, /* 0x157b */ { true, 0x157b, 0x157b }, /* 0x157c */ { true, 0x157c, 0x157c }, /* 0x157d */ { true, 0x157d, 0x157d }, /* 0x157e */ { true, 0x157e, 0x157e }, /* 0x157f */ { true, 0x157f, 0x157f }, /* 0x1580 */ { true, 0x1580, 0x1580 }, /* 0x1581 */ { true, 0x1581, 0x1581 }, /* 0x1582 */ { true, 0x1582, 0x1582 }, /* 0x1583 */ { true, 0x1583, 0x1583 }, /* 0x1584 */ { true, 0x1584, 0x1584 }, /* 0x1585 */ { true, 0x1585, 0x1585 }, /* 0x1586 */ { true, 0x1586, 0x1586 }, /* 0x1587 */ { true, 0x1587, 0x1587 }, /* 0x1588 */ { true, 0x1588, 0x1588 }, /* 0x1589 */ { true, 0x1589, 0x1589 }, /* 0x158a */ { true, 0x158a, 0x158a }, /* 0x158b */ { true, 0x158b, 0x158b }, /* 0x158c */ { true, 0x158c, 0x158c }, /* 0x158d */ { true, 0x158d, 0x158d }, /* 0x158e */ { true, 0x158e, 0x158e }, /* 0x158f */ { true, 0x158f, 0x158f }, /* 0x1590 */ { true, 0x1590, 0x1590 }, /* 0x1591 */ { true, 0x1591, 0x1591 }, /* 0x1592 */ { true, 0x1592, 0x1592 }, /* 0x1593 */ { true, 0x1593, 0x1593 }, /* 0x1594 */ { true, 0x1594, 0x1594 }, /* 0x1595 */ { true, 0x1595, 0x1595 }, /* 0x1596 */ { true, 0x1596, 0x1596 }, /* 0x1597 */ { true, 0x1597, 0x1597 }, /* 0x1598 */ { true, 0x1598, 0x1598 }, /* 0x1599 */ { true, 0x1599, 0x1599 }, /* 0x159a */ { true, 0x159a, 0x159a }, /* 0x159b */ { true, 0x159b, 0x159b }, /* 0x159c */ { true, 0x159c, 0x159c }, /* 0x159d */ { true, 0x159d, 0x159d }, /* 0x159e */ { true, 0x159e, 0x159e }, /* 0x159f */ { true, 0x159f, 0x159f }, /* 0x15a0 */ { true, 0x15a0, 0x15a0 }, /* 0x15a1 */ { true, 0x15a1, 0x15a1 }, /* 0x15a2 */ { true, 0x15a2, 0x15a2 }, /* 0x15a3 */ { true, 0x15a3, 0x15a3 }, /* 0x15a4 */ { true, 0x15a4, 0x15a4 }, /* 0x15a5 */ { true, 0x15a5, 0x15a5 }, /* 0x15a6 */ { true, 0x15a6, 0x15a6 }, /* 0x15a7 */ { true, 0x15a7, 0x15a7 }, /* 0x15a8 */ { true, 0x15a8, 0x15a8 }, /* 0x15a9 */ { true, 0x15a9, 0x15a9 }, /* 0x15aa */ { true, 0x15aa, 0x15aa }, /* 0x15ab */ { true, 0x15ab, 0x15ab }, /* 0x15ac */ { true, 0x15ac, 0x15ac }, /* 0x15ad */ { true, 0x15ad, 0x15ad }, /* 0x15ae */ { true, 0x15ae, 0x15ae }, /* 0x15af */ { true, 0x15af, 0x15af }, /* 0x15b0 */ { true, 0x15b0, 0x15b0 }, /* 0x15b1 */ { true, 0x15b1, 0x15b1 }, /* 0x15b2 */ { true, 0x15b2, 0x15b2 }, /* 0x15b3 */ { true, 0x15b3, 0x15b3 }, /* 0x15b4 */ { true, 0x15b4, 0x15b4 }, /* 0x15b5 */ { true, 0x15b5, 0x15b5 }, /* 0x15b6 */ { true, 0x15b6, 0x15b6 }, /* 0x15b7 */ { true, 0x15b7, 0x15b7 }, /* 0x15b8 */ { true, 0x15b8, 0x15b8 }, /* 0x15b9 */ { true, 0x15b9, 0x15b9 }, /* 0x15ba */ { true, 0x15ba, 0x15ba }, /* 0x15bb */ { true, 0x15bb, 0x15bb }, /* 0x15bc */ { true, 0x15bc, 0x15bc }, /* 0x15bd */ { true, 0x15bd, 0x15bd }, /* 0x15be */ { true, 0x15be, 0x15be }, /* 0x15bf */ { true, 0x15bf, 0x15bf }, /* 0x15c0 */ { true, 0x15c0, 0x15c0 }, /* 0x15c1 */ { true, 0x15c1, 0x15c1 }, /* 0x15c2 */ { true, 0x15c2, 0x15c2 }, /* 0x15c3 */ { true, 0x15c3, 0x15c3 }, /* 0x15c4 */ { true, 0x15c4, 0x15c4 }, /* 0x15c5 */ { true, 0x15c5, 0x15c5 }, /* 0x15c6 */ { true, 0x15c6, 0x15c6 }, /* 0x15c7 */ { true, 0x15c7, 0x15c7 }, /* 0x15c8 */ { true, 0x15c8, 0x15c8 }, /* 0x15c9 */ { true, 0x15c9, 0x15c9 }, /* 0x15ca */ { true, 0x15ca, 0x15ca }, /* 0x15cb */ { true, 0x15cb, 0x15cb }, /* 0x15cc */ { true, 0x15cc, 0x15cc }, /* 0x15cd */ { true, 0x15cd, 0x15cd }, /* 0x15ce */ { true, 0x15ce, 0x15ce }, /* 0x15cf */ { true, 0x15cf, 0x15cf }, /* 0x15d0 */ { true, 0x15d0, 0x15d0 }, /* 0x15d1 */ { true, 0x15d1, 0x15d1 }, /* 0x15d2 */ { true, 0x15d2, 0x15d2 }, /* 0x15d3 */ { true, 0x15d3, 0x15d3 }, /* 0x15d4 */ { true, 0x15d4, 0x15d4 }, /* 0x15d5 */ { true, 0x15d5, 0x15d5 }, /* 0x15d6 */ { true, 0x15d6, 0x15d6 }, /* 0x15d7 */ { true, 0x15d7, 0x15d7 }, /* 0x15d8 */ { true, 0x15d8, 0x15d8 }, /* 0x15d9 */ { true, 0x15d9, 0x15d9 }, /* 0x15da */ { true, 0x15da, 0x15da }, /* 0x15db */ { true, 0x15db, 0x15db }, /* 0x15dc */ { true, 0x15dc, 0x15dc }, /* 0x15dd */ { true, 0x15dd, 0x15dd }, /* 0x15de */ { true, 0x15de, 0x15de }, /* 0x15df */ { true, 0x15df, 0x15df }, /* 0x15e0 */ { true, 0x15e0, 0x15e0 }, /* 0x15e1 */ { true, 0x15e1, 0x15e1 }, /* 0x15e2 */ { true, 0x15e2, 0x15e2 }, /* 0x15e3 */ { true, 0x15e3, 0x15e3 }, /* 0x15e4 */ { true, 0x15e4, 0x15e4 }, /* 0x15e5 */ { true, 0x15e5, 0x15e5 }, /* 0x15e6 */ { true, 0x15e6, 0x15e6 }, /* 0x15e7 */ { true, 0x15e7, 0x15e7 }, /* 0x15e8 */ { true, 0x15e8, 0x15e8 }, /* 0x15e9 */ { true, 0x15e9, 0x15e9 }, /* 0x15ea */ { true, 0x15ea, 0x15ea }, /* 0x15eb */ { true, 0x15eb, 0x15eb }, /* 0x15ec */ { true, 0x15ec, 0x15ec }, /* 0x15ed */ { true, 0x15ed, 0x15ed }, /* 0x15ee */ { true, 0x15ee, 0x15ee }, /* 0x15ef */ { true, 0x15ef, 0x15ef }, /* 0x15f0 */ { true, 0x15f0, 0x15f0 }, /* 0x15f1 */ { true, 0x15f1, 0x15f1 }, /* 0x15f2 */ { true, 0x15f2, 0x15f2 }, /* 0x15f3 */ { true, 0x15f3, 0x15f3 }, /* 0x15f4 */ { true, 0x15f4, 0x15f4 }, /* 0x15f5 */ { true, 0x15f5, 0x15f5 }, /* 0x15f6 */ { true, 0x15f6, 0x15f6 }, /* 0x15f7 */ { true, 0x15f7, 0x15f7 }, /* 0x15f8 */ { true, 0x15f8, 0x15f8 }, /* 0x15f9 */ { true, 0x15f9, 0x15f9 }, /* 0x15fa */ { true, 0x15fa, 0x15fa }, /* 0x15fb */ { true, 0x15fb, 0x15fb }, /* 0x15fc */ { true, 0x15fc, 0x15fc }, /* 0x15fd */ { true, 0x15fd, 0x15fd }, /* 0x15fe */ { true, 0x15fe, 0x15fe }, /* 0x15ff */ { true, 0x15ff, 0x15ff }, /* 0x1600 */ { true, 0x1600, 0x1600 }, /* 0x1601 */ { true, 0x1601, 0x1601 }, /* 0x1602 */ { true, 0x1602, 0x1602 }, /* 0x1603 */ { true, 0x1603, 0x1603 }, /* 0x1604 */ { true, 0x1604, 0x1604 }, /* 0x1605 */ { true, 0x1605, 0x1605 }, /* 0x1606 */ { true, 0x1606, 0x1606 }, /* 0x1607 */ { true, 0x1607, 0x1607 }, /* 0x1608 */ { true, 0x1608, 0x1608 }, /* 0x1609 */ { true, 0x1609, 0x1609 }, /* 0x160a */ { true, 0x160a, 0x160a }, /* 0x160b */ { true, 0x160b, 0x160b }, /* 0x160c */ { true, 0x160c, 0x160c }, /* 0x160d */ { true, 0x160d, 0x160d }, /* 0x160e */ { true, 0x160e, 0x160e }, /* 0x160f */ { true, 0x160f, 0x160f }, /* 0x1610 */ { true, 0x1610, 0x1610 }, /* 0x1611 */ { true, 0x1611, 0x1611 }, /* 0x1612 */ { true, 0x1612, 0x1612 }, /* 0x1613 */ { true, 0x1613, 0x1613 }, /* 0x1614 */ { true, 0x1614, 0x1614 }, /* 0x1615 */ { true, 0x1615, 0x1615 }, /* 0x1616 */ { true, 0x1616, 0x1616 }, /* 0x1617 */ { true, 0x1617, 0x1617 }, /* 0x1618 */ { true, 0x1618, 0x1618 }, /* 0x1619 */ { true, 0x1619, 0x1619 }, /* 0x161a */ { true, 0x161a, 0x161a }, /* 0x161b */ { true, 0x161b, 0x161b }, /* 0x161c */ { true, 0x161c, 0x161c }, /* 0x161d */ { true, 0x161d, 0x161d }, /* 0x161e */ { true, 0x161e, 0x161e }, /* 0x161f */ { true, 0x161f, 0x161f }, /* 0x1620 */ { true, 0x1620, 0x1620 }, /* 0x1621 */ { true, 0x1621, 0x1621 }, /* 0x1622 */ { true, 0x1622, 0x1622 }, /* 0x1623 */ { true, 0x1623, 0x1623 }, /* 0x1624 */ { true, 0x1624, 0x1624 }, /* 0x1625 */ { true, 0x1625, 0x1625 }, /* 0x1626 */ { true, 0x1626, 0x1626 }, /* 0x1627 */ { true, 0x1627, 0x1627 }, /* 0x1628 */ { true, 0x1628, 0x1628 }, /* 0x1629 */ { true, 0x1629, 0x1629 }, /* 0x162a */ { true, 0x162a, 0x162a }, /* 0x162b */ { true, 0x162b, 0x162b }, /* 0x162c */ { true, 0x162c, 0x162c }, /* 0x162d */ { true, 0x162d, 0x162d }, /* 0x162e */ { true, 0x162e, 0x162e }, /* 0x162f */ { true, 0x162f, 0x162f }, /* 0x1630 */ { true, 0x1630, 0x1630 }, /* 0x1631 */ { true, 0x1631, 0x1631 }, /* 0x1632 */ { true, 0x1632, 0x1632 }, /* 0x1633 */ { true, 0x1633, 0x1633 }, /* 0x1634 */ { true, 0x1634, 0x1634 }, /* 0x1635 */ { true, 0x1635, 0x1635 }, /* 0x1636 */ { true, 0x1636, 0x1636 }, /* 0x1637 */ { true, 0x1637, 0x1637 }, /* 0x1638 */ { true, 0x1638, 0x1638 }, /* 0x1639 */ { true, 0x1639, 0x1639 }, /* 0x163a */ { true, 0x163a, 0x163a }, /* 0x163b */ { true, 0x163b, 0x163b }, /* 0x163c */ { true, 0x163c, 0x163c }, /* 0x163d */ { true, 0x163d, 0x163d }, /* 0x163e */ { true, 0x163e, 0x163e }, /* 0x163f */ { true, 0x163f, 0x163f }, /* 0x1640 */ { true, 0x1640, 0x1640 }, /* 0x1641 */ { true, 0x1641, 0x1641 }, /* 0x1642 */ { true, 0x1642, 0x1642 }, /* 0x1643 */ { true, 0x1643, 0x1643 }, /* 0x1644 */ { true, 0x1644, 0x1644 }, /* 0x1645 */ { true, 0x1645, 0x1645 }, /* 0x1646 */ { true, 0x1646, 0x1646 }, /* 0x1647 */ { true, 0x1647, 0x1647 }, /* 0x1648 */ { true, 0x1648, 0x1648 }, /* 0x1649 */ { true, 0x1649, 0x1649 }, /* 0x164a */ { true, 0x164a, 0x164a }, /* 0x164b */ { true, 0x164b, 0x164b }, /* 0x164c */ { true, 0x164c, 0x164c }, /* 0x164d */ { true, 0x164d, 0x164d }, /* 0x164e */ { true, 0x164e, 0x164e }, /* 0x164f */ { true, 0x164f, 0x164f }, /* 0x1650 */ { true, 0x1650, 0x1650 }, /* 0x1651 */ { true, 0x1651, 0x1651 }, /* 0x1652 */ { true, 0x1652, 0x1652 }, /* 0x1653 */ { true, 0x1653, 0x1653 }, /* 0x1654 */ { true, 0x1654, 0x1654 }, /* 0x1655 */ { true, 0x1655, 0x1655 }, /* 0x1656 */ { true, 0x1656, 0x1656 }, /* 0x1657 */ { true, 0x1657, 0x1657 }, /* 0x1658 */ { true, 0x1658, 0x1658 }, /* 0x1659 */ { true, 0x1659, 0x1659 }, /* 0x165a */ { true, 0x165a, 0x165a }, /* 0x165b */ { true, 0x165b, 0x165b }, /* 0x165c */ { true, 0x165c, 0x165c }, /* 0x165d */ { true, 0x165d, 0x165d }, /* 0x165e */ { true, 0x165e, 0x165e }, /* 0x165f */ { true, 0x165f, 0x165f }, /* 0x1660 */ { true, 0x1660, 0x1660 }, /* 0x1661 */ { true, 0x1661, 0x1661 }, /* 0x1662 */ { true, 0x1662, 0x1662 }, /* 0x1663 */ { true, 0x1663, 0x1663 }, /* 0x1664 */ { true, 0x1664, 0x1664 }, /* 0x1665 */ { true, 0x1665, 0x1665 }, /* 0x1666 */ { true, 0x1666, 0x1666 }, /* 0x1667 */ { true, 0x1667, 0x1667 }, /* 0x1668 */ { true, 0x1668, 0x1668 }, /* 0x1669 */ { true, 0x1669, 0x1669 }, /* 0x166a */ { true, 0x166a, 0x166a }, /* 0x166b */ { true, 0x166b, 0x166b }, /* 0x166c */ { true, 0x166c, 0x166c }, /* 0x166d */ { false, 0x166d, 0x166d }, /* 0x166e */ { false, 0x166e, 0x166e }, /* 0x166f */ { true, 0x166f, 0x166f }, /* 0x1670 */ { true, 0x1670, 0x1670 }, /* 0x1671 */ { true, 0x1671, 0x1671 }, /* 0x1672 */ { true, 0x1672, 0x1672 }, /* 0x1673 */ { true, 0x1673, 0x1673 }, /* 0x1674 */ { true, 0x1674, 0x1674 }, /* 0x1675 */ { true, 0x1675, 0x1675 }, /* 0x1676 */ { true, 0x1676, 0x1676 }, /* 0x1677 */ { false, 0x1677, 0x1677 }, /* 0x1678 */ { false, 0x1678, 0x1678 }, /* 0x1679 */ { false, 0x1679, 0x1679 }, /* 0x167a */ { false, 0x167a, 0x167a }, /* 0x167b */ { false, 0x167b, 0x167b }, /* 0x167c */ { false, 0x167c, 0x167c }, /* 0x167d */ { false, 0x167d, 0x167d }, /* 0x167e */ { false, 0x167e, 0x167e }, /* 0x167f */ { false, 0x167f, 0x167f }, /* 0x1680 */ { false, 0x1680, 0x1680 }, /* 0x1681 */ { true, 0x1681, 0x1681 }, /* 0x1682 */ { true, 0x1682, 0x1682 }, /* 0x1683 */ { true, 0x1683, 0x1683 }, /* 0x1684 */ { true, 0x1684, 0x1684 }, /* 0x1685 */ { true, 0x1685, 0x1685 }, /* 0x1686 */ { true, 0x1686, 0x1686 }, /* 0x1687 */ { true, 0x1687, 0x1687 }, /* 0x1688 */ { true, 0x1688, 0x1688 }, /* 0x1689 */ { true, 0x1689, 0x1689 }, /* 0x168a */ { true, 0x168a, 0x168a }, /* 0x168b */ { true, 0x168b, 0x168b }, /* 0x168c */ { true, 0x168c, 0x168c }, /* 0x168d */ { true, 0x168d, 0x168d }, /* 0x168e */ { true, 0x168e, 0x168e }, /* 0x168f */ { true, 0x168f, 0x168f }, /* 0x1690 */ { true, 0x1690, 0x1690 }, /* 0x1691 */ { true, 0x1691, 0x1691 }, /* 0x1692 */ { true, 0x1692, 0x1692 }, /* 0x1693 */ { true, 0x1693, 0x1693 }, /* 0x1694 */ { true, 0x1694, 0x1694 }, /* 0x1695 */ { true, 0x1695, 0x1695 }, /* 0x1696 */ { true, 0x1696, 0x1696 }, /* 0x1697 */ { true, 0x1697, 0x1697 }, /* 0x1698 */ { true, 0x1698, 0x1698 }, /* 0x1699 */ { true, 0x1699, 0x1699 }, /* 0x169a */ { true, 0x169a, 0x169a }, /* 0x169b */ { false, 0x169b, 0x169b }, /* 0x169c */ { false, 0x169c, 0x169c }, /* 0x169d */ { false, 0x169d, 0x169d }, /* 0x169e */ { false, 0x169e, 0x169e }, /* 0x169f */ { false, 0x169f, 0x169f }, /* 0x16a0 */ { true, 0x16a0, 0x16a0 }, /* 0x16a1 */ { true, 0x16a1, 0x16a1 }, /* 0x16a2 */ { true, 0x16a2, 0x16a2 }, /* 0x16a3 */ { true, 0x16a3, 0x16a3 }, /* 0x16a4 */ { true, 0x16a4, 0x16a4 }, /* 0x16a5 */ { true, 0x16a5, 0x16a5 }, /* 0x16a6 */ { true, 0x16a6, 0x16a6 }, /* 0x16a7 */ { true, 0x16a7, 0x16a7 }, /* 0x16a8 */ { true, 0x16a8, 0x16a8 }, /* 0x16a9 */ { true, 0x16a9, 0x16a9 }, /* 0x16aa */ { true, 0x16aa, 0x16aa }, /* 0x16ab */ { true, 0x16ab, 0x16ab }, /* 0x16ac */ { true, 0x16ac, 0x16ac }, /* 0x16ad */ { true, 0x16ad, 0x16ad }, /* 0x16ae */ { true, 0x16ae, 0x16ae }, /* 0x16af */ { true, 0x16af, 0x16af }, /* 0x16b0 */ { true, 0x16b0, 0x16b0 }, /* 0x16b1 */ { true, 0x16b1, 0x16b1 }, /* 0x16b2 */ { true, 0x16b2, 0x16b2 }, /* 0x16b3 */ { true, 0x16b3, 0x16b3 }, /* 0x16b4 */ { true, 0x16b4, 0x16b4 }, /* 0x16b5 */ { true, 0x16b5, 0x16b5 }, /* 0x16b6 */ { true, 0x16b6, 0x16b6 }, /* 0x16b7 */ { true, 0x16b7, 0x16b7 }, /* 0x16b8 */ { true, 0x16b8, 0x16b8 }, /* 0x16b9 */ { true, 0x16b9, 0x16b9 }, /* 0x16ba */ { true, 0x16ba, 0x16ba }, /* 0x16bb */ { true, 0x16bb, 0x16bb }, /* 0x16bc */ { true, 0x16bc, 0x16bc }, /* 0x16bd */ { true, 0x16bd, 0x16bd }, /* 0x16be */ { true, 0x16be, 0x16be }, /* 0x16bf */ { true, 0x16bf, 0x16bf }, /* 0x16c0 */ { true, 0x16c0, 0x16c0 }, /* 0x16c1 */ { true, 0x16c1, 0x16c1 }, /* 0x16c2 */ { true, 0x16c2, 0x16c2 }, /* 0x16c3 */ { true, 0x16c3, 0x16c3 }, /* 0x16c4 */ { true, 0x16c4, 0x16c4 }, /* 0x16c5 */ { true, 0x16c5, 0x16c5 }, /* 0x16c6 */ { true, 0x16c6, 0x16c6 }, /* 0x16c7 */ { true, 0x16c7, 0x16c7 }, /* 0x16c8 */ { true, 0x16c8, 0x16c8 }, /* 0x16c9 */ { true, 0x16c9, 0x16c9 }, /* 0x16ca */ { true, 0x16ca, 0x16ca }, /* 0x16cb */ { true, 0x16cb, 0x16cb }, /* 0x16cc */ { true, 0x16cc, 0x16cc }, /* 0x16cd */ { true, 0x16cd, 0x16cd }, /* 0x16ce */ { true, 0x16ce, 0x16ce }, /* 0x16cf */ { true, 0x16cf, 0x16cf }, /* 0x16d0 */ { true, 0x16d0, 0x16d0 }, /* 0x16d1 */ { true, 0x16d1, 0x16d1 }, /* 0x16d2 */ { true, 0x16d2, 0x16d2 }, /* 0x16d3 */ { true, 0x16d3, 0x16d3 }, /* 0x16d4 */ { true, 0x16d4, 0x16d4 }, /* 0x16d5 */ { true, 0x16d5, 0x16d5 }, /* 0x16d6 */ { true, 0x16d6, 0x16d6 }, /* 0x16d7 */ { true, 0x16d7, 0x16d7 }, /* 0x16d8 */ { true, 0x16d8, 0x16d8 }, /* 0x16d9 */ { true, 0x16d9, 0x16d9 }, /* 0x16da */ { true, 0x16da, 0x16da }, /* 0x16db */ { true, 0x16db, 0x16db }, /* 0x16dc */ { true, 0x16dc, 0x16dc }, /* 0x16dd */ { true, 0x16dd, 0x16dd }, /* 0x16de */ { true, 0x16de, 0x16de }, /* 0x16df */ { true, 0x16df, 0x16df }, /* 0x16e0 */ { true, 0x16e0, 0x16e0 }, /* 0x16e1 */ { true, 0x16e1, 0x16e1 }, /* 0x16e2 */ { true, 0x16e2, 0x16e2 }, /* 0x16e3 */ { true, 0x16e3, 0x16e3 }, /* 0x16e4 */ { true, 0x16e4, 0x16e4 }, /* 0x16e5 */ { true, 0x16e5, 0x16e5 }, /* 0x16e6 */ { true, 0x16e6, 0x16e6 }, /* 0x16e7 */ { true, 0x16e7, 0x16e7 }, /* 0x16e8 */ { true, 0x16e8, 0x16e8 }, /* 0x16e9 */ { true, 0x16e9, 0x16e9 }, /* 0x16ea */ { true, 0x16ea, 0x16ea }, /* 0x16eb */ { false, 0x16eb, 0x16eb }, /* 0x16ec */ { false, 0x16ec, 0x16ec }, /* 0x16ed */ { false, 0x16ed, 0x16ed }, /* 0x16ee */ { false, 0x16ee, 0x16ee }, /* 0x16ef */ { false, 0x16ef, 0x16ef }, /* 0x16f0 */ { false, 0x16f0, 0x16f0 }, /* 0x16f1 */ { false, 0x16f1, 0x16f1 }, /* 0x16f2 */ { false, 0x16f2, 0x16f2 }, /* 0x16f3 */ { false, 0x16f3, 0x16f3 }, /* 0x16f4 */ { false, 0x16f4, 0x16f4 }, /* 0x16f5 */ { false, 0x16f5, 0x16f5 }, /* 0x16f6 */ { false, 0x16f6, 0x16f6 }, /* 0x16f7 */ { false, 0x16f7, 0x16f7 }, /* 0x16f8 */ { false, 0x16f8, 0x16f8 }, /* 0x16f9 */ { false, 0x16f9, 0x16f9 }, /* 0x16fa */ { false, 0x16fa, 0x16fa }, /* 0x16fb */ { false, 0x16fb, 0x16fb }, /* 0x16fc */ { false, 0x16fc, 0x16fc }, /* 0x16fd */ { false, 0x16fd, 0x16fd }, /* 0x16fe */ { false, 0x16fe, 0x16fe }, /* 0x16ff */ { false, 0x16ff, 0x16ff }, /* 0x1700 */ { true, 0x1700, 0x1700 }, /* 0x1701 */ { true, 0x1701, 0x1701 }, /* 0x1702 */ { true, 0x1702, 0x1702 }, /* 0x1703 */ { true, 0x1703, 0x1703 }, /* 0x1704 */ { true, 0x1704, 0x1704 }, /* 0x1705 */ { true, 0x1705, 0x1705 }, /* 0x1706 */ { true, 0x1706, 0x1706 }, /* 0x1707 */ { true, 0x1707, 0x1707 }, /* 0x1708 */ { true, 0x1708, 0x1708 }, /* 0x1709 */ { true, 0x1709, 0x1709 }, /* 0x170a */ { true, 0x170a, 0x170a }, /* 0x170b */ { true, 0x170b, 0x170b }, /* 0x170c */ { true, 0x170c, 0x170c }, /* 0x170d */ { false, 0x170d, 0x170d }, /* 0x170e */ { true, 0x170e, 0x170e }, /* 0x170f */ { true, 0x170f, 0x170f }, /* 0x1710 */ { true, 0x1710, 0x1710 }, /* 0x1711 */ { true, 0x1711, 0x1711 }, /* 0x1712 */ { true, 0x1712, 0x1712 }, /* 0x1713 */ { true, 0x1713, 0x1713 }, /* 0x1714 */ { true, 0x1714, 0x1714 }, /* 0x1715 */ { false, 0x1715, 0x1715 }, /* 0x1716 */ { false, 0x1716, 0x1716 }, /* 0x1717 */ { false, 0x1717, 0x1717 }, /* 0x1718 */ { false, 0x1718, 0x1718 }, /* 0x1719 */ { false, 0x1719, 0x1719 }, /* 0x171a */ { false, 0x171a, 0x171a }, /* 0x171b */ { false, 0x171b, 0x171b }, /* 0x171c */ { false, 0x171c, 0x171c }, /* 0x171d */ { false, 0x171d, 0x171d }, /* 0x171e */ { false, 0x171e, 0x171e }, /* 0x171f */ { false, 0x171f, 0x171f }, /* 0x1720 */ { true, 0x1720, 0x1720 }, /* 0x1721 */ { true, 0x1721, 0x1721 }, /* 0x1722 */ { true, 0x1722, 0x1722 }, /* 0x1723 */ { true, 0x1723, 0x1723 }, /* 0x1724 */ { true, 0x1724, 0x1724 }, /* 0x1725 */ { true, 0x1725, 0x1725 }, /* 0x1726 */ { true, 0x1726, 0x1726 }, /* 0x1727 */ { true, 0x1727, 0x1727 }, /* 0x1728 */ { true, 0x1728, 0x1728 }, /* 0x1729 */ { true, 0x1729, 0x1729 }, /* 0x172a */ { true, 0x172a, 0x172a }, /* 0x172b */ { true, 0x172b, 0x172b }, /* 0x172c */ { true, 0x172c, 0x172c }, /* 0x172d */ { true, 0x172d, 0x172d }, /* 0x172e */ { true, 0x172e, 0x172e }, /* 0x172f */ { true, 0x172f, 0x172f }, /* 0x1730 */ { true, 0x1730, 0x1730 }, /* 0x1731 */ { true, 0x1731, 0x1731 }, /* 0x1732 */ { true, 0x1732, 0x1732 }, /* 0x1733 */ { true, 0x1733, 0x1733 }, /* 0x1734 */ { true, 0x1734, 0x1734 }, /* 0x1735 */ { false, 0x1735, 0x1735 }, /* 0x1736 */ { false, 0x1736, 0x1736 }, /* 0x1737 */ { false, 0x1737, 0x1737 }, /* 0x1738 */ { false, 0x1738, 0x1738 }, /* 0x1739 */ { false, 0x1739, 0x1739 }, /* 0x173a */ { false, 0x173a, 0x173a }, /* 0x173b */ { false, 0x173b, 0x173b }, /* 0x173c */ { false, 0x173c, 0x173c }, /* 0x173d */ { false, 0x173d, 0x173d }, /* 0x173e */ { false, 0x173e, 0x173e }, /* 0x173f */ { false, 0x173f, 0x173f }, /* 0x1740 */ { true, 0x1740, 0x1740 }, /* 0x1741 */ { true, 0x1741, 0x1741 }, /* 0x1742 */ { true, 0x1742, 0x1742 }, /* 0x1743 */ { true, 0x1743, 0x1743 }, /* 0x1744 */ { true, 0x1744, 0x1744 }, /* 0x1745 */ { true, 0x1745, 0x1745 }, /* 0x1746 */ { true, 0x1746, 0x1746 }, /* 0x1747 */ { true, 0x1747, 0x1747 }, /* 0x1748 */ { true, 0x1748, 0x1748 }, /* 0x1749 */ { true, 0x1749, 0x1749 }, /* 0x174a */ { true, 0x174a, 0x174a }, /* 0x174b */ { true, 0x174b, 0x174b }, /* 0x174c */ { true, 0x174c, 0x174c }, /* 0x174d */ { true, 0x174d, 0x174d }, /* 0x174e */ { true, 0x174e, 0x174e }, /* 0x174f */ { true, 0x174f, 0x174f }, /* 0x1750 */ { true, 0x1750, 0x1750 }, /* 0x1751 */ { true, 0x1751, 0x1751 }, /* 0x1752 */ { true, 0x1752, 0x1752 }, /* 0x1753 */ { true, 0x1753, 0x1753 }, /* 0x1754 */ { false, 0x1754, 0x1754 }, /* 0x1755 */ { false, 0x1755, 0x1755 }, /* 0x1756 */ { false, 0x1756, 0x1756 }, /* 0x1757 */ { false, 0x1757, 0x1757 }, /* 0x1758 */ { false, 0x1758, 0x1758 }, /* 0x1759 */ { false, 0x1759, 0x1759 }, /* 0x175a */ { false, 0x175a, 0x175a }, /* 0x175b */ { false, 0x175b, 0x175b }, /* 0x175c */ { false, 0x175c, 0x175c }, /* 0x175d */ { false, 0x175d, 0x175d }, /* 0x175e */ { false, 0x175e, 0x175e }, /* 0x175f */ { false, 0x175f, 0x175f }, /* 0x1760 */ { true, 0x1760, 0x1760 }, /* 0x1761 */ { true, 0x1761, 0x1761 }, /* 0x1762 */ { true, 0x1762, 0x1762 }, /* 0x1763 */ { true, 0x1763, 0x1763 }, /* 0x1764 */ { true, 0x1764, 0x1764 }, /* 0x1765 */ { true, 0x1765, 0x1765 }, /* 0x1766 */ { true, 0x1766, 0x1766 }, /* 0x1767 */ { true, 0x1767, 0x1767 }, /* 0x1768 */ { true, 0x1768, 0x1768 }, /* 0x1769 */ { true, 0x1769, 0x1769 }, /* 0x176a */ { true, 0x176a, 0x176a }, /* 0x176b */ { true, 0x176b, 0x176b }, /* 0x176c */ { true, 0x176c, 0x176c }, /* 0x176d */ { false, 0x176d, 0x176d }, /* 0x176e */ { true, 0x176e, 0x176e }, /* 0x176f */ { true, 0x176f, 0x176f }, /* 0x1770 */ { true, 0x1770, 0x1770 }, /* 0x1771 */ { false, 0x1771, 0x1771 }, /* 0x1772 */ { true, 0x1772, 0x1772 }, /* 0x1773 */ { true, 0x1773, 0x1773 }, /* 0x1774 */ { false, 0x1774, 0x1774 }, /* 0x1775 */ { false, 0x1775, 0x1775 }, /* 0x1776 */ { false, 0x1776, 0x1776 }, /* 0x1777 */ { false, 0x1777, 0x1777 }, /* 0x1778 */ { false, 0x1778, 0x1778 }, /* 0x1779 */ { false, 0x1779, 0x1779 }, /* 0x177a */ { false, 0x177a, 0x177a }, /* 0x177b */ { false, 0x177b, 0x177b }, /* 0x177c */ { false, 0x177c, 0x177c }, /* 0x177d */ { false, 0x177d, 0x177d }, /* 0x177e */ { false, 0x177e, 0x177e }, /* 0x177f */ { false, 0x177f, 0x177f }, /* 0x1780 */ { true, 0x1780, 0x1780 }, /* 0x1781 */ { true, 0x1781, 0x1781 }, /* 0x1782 */ { true, 0x1782, 0x1782 }, /* 0x1783 */ { true, 0x1783, 0x1783 }, /* 0x1784 */ { true, 0x1784, 0x1784 }, /* 0x1785 */ { true, 0x1785, 0x1785 }, /* 0x1786 */ { true, 0x1786, 0x1786 }, /* 0x1787 */ { true, 0x1787, 0x1787 }, /* 0x1788 */ { true, 0x1788, 0x1788 }, /* 0x1789 */ { true, 0x1789, 0x1789 }, /* 0x178a */ { true, 0x178a, 0x178a }, /* 0x178b */ { true, 0x178b, 0x178b }, /* 0x178c */ { true, 0x178c, 0x178c }, /* 0x178d */ { true, 0x178d, 0x178d }, /* 0x178e */ { true, 0x178e, 0x178e }, /* 0x178f */ { true, 0x178f, 0x178f }, /* 0x1790 */ { true, 0x1790, 0x1790 }, /* 0x1791 */ { true, 0x1791, 0x1791 }, /* 0x1792 */ { true, 0x1792, 0x1792 }, /* 0x1793 */ { true, 0x1793, 0x1793 }, /* 0x1794 */ { true, 0x1794, 0x1794 }, /* 0x1795 */ { true, 0x1795, 0x1795 }, /* 0x1796 */ { true, 0x1796, 0x1796 }, /* 0x1797 */ { true, 0x1797, 0x1797 }, /* 0x1798 */ { true, 0x1798, 0x1798 }, /* 0x1799 */ { true, 0x1799, 0x1799 }, /* 0x179a */ { true, 0x179a, 0x179a }, /* 0x179b */ { true, 0x179b, 0x179b }, /* 0x179c */ { true, 0x179c, 0x179c }, /* 0x179d */ { true, 0x179d, 0x179d }, /* 0x179e */ { true, 0x179e, 0x179e }, /* 0x179f */ { true, 0x179f, 0x179f }, /* 0x17a0 */ { true, 0x17a0, 0x17a0 }, /* 0x17a1 */ { true, 0x17a1, 0x17a1 }, /* 0x17a2 */ { true, 0x17a2, 0x17a2 }, /* 0x17a3 */ { true, 0x17a3, 0x17a3 }, /* 0x17a4 */ { true, 0x17a4, 0x17a4 }, /* 0x17a5 */ { true, 0x17a5, 0x17a5 }, /* 0x17a6 */ { true, 0x17a6, 0x17a6 }, /* 0x17a7 */ { true, 0x17a7, 0x17a7 }, /* 0x17a8 */ { true, 0x17a8, 0x17a8 }, /* 0x17a9 */ { true, 0x17a9, 0x17a9 }, /* 0x17aa */ { true, 0x17aa, 0x17aa }, /* 0x17ab */ { true, 0x17ab, 0x17ab }, /* 0x17ac */ { true, 0x17ac, 0x17ac }, /* 0x17ad */ { true, 0x17ad, 0x17ad }, /* 0x17ae */ { true, 0x17ae, 0x17ae }, /* 0x17af */ { true, 0x17af, 0x17af }, /* 0x17b0 */ { true, 0x17b0, 0x17b0 }, /* 0x17b1 */ { true, 0x17b1, 0x17b1 }, /* 0x17b2 */ { true, 0x17b2, 0x17b2 }, /* 0x17b3 */ { true, 0x17b3, 0x17b3 }, /* 0x17b4 */ { false, 0x17b4, 0x17b4 }, /* 0x17b5 */ { false, 0x17b5, 0x17b5 }, /* 0x17b6 */ { false, 0x17b6, 0x17b6 }, /* 0x17b7 */ { true, 0x17b7, 0x17b7 }, /* 0x17b8 */ { true, 0x17b8, 0x17b8 }, /* 0x17b9 */ { true, 0x17b9, 0x17b9 }, /* 0x17ba */ { true, 0x17ba, 0x17ba }, /* 0x17bb */ { true, 0x17bb, 0x17bb }, /* 0x17bc */ { true, 0x17bc, 0x17bc }, /* 0x17bd */ { true, 0x17bd, 0x17bd }, /* 0x17be */ { false, 0x17be, 0x17be }, /* 0x17bf */ { false, 0x17bf, 0x17bf }, /* 0x17c0 */ { false, 0x17c0, 0x17c0 }, /* 0x17c1 */ { false, 0x17c1, 0x17c1 }, /* 0x17c2 */ { false, 0x17c2, 0x17c2 }, /* 0x17c3 */ { false, 0x17c3, 0x17c3 }, /* 0x17c4 */ { false, 0x17c4, 0x17c4 }, /* 0x17c5 */ { false, 0x17c5, 0x17c5 }, /* 0x17c6 */ { true, 0x17c6, 0x17c6 }, /* 0x17c7 */ { false, 0x17c7, 0x17c7 }, /* 0x17c8 */ { false, 0x17c8, 0x17c8 }, /* 0x17c9 */ { true, 0x17c9, 0x17c9 }, /* 0x17ca */ { true, 0x17ca, 0x17ca }, /* 0x17cb */ { true, 0x17cb, 0x17cb }, /* 0x17cc */ { true, 0x17cc, 0x17cc }, /* 0x17cd */ { true, 0x17cd, 0x17cd }, /* 0x17ce */ { true, 0x17ce, 0x17ce }, /* 0x17cf */ { true, 0x17cf, 0x17cf }, /* 0x17d0 */ { true, 0x17d0, 0x17d0 }, /* 0x17d1 */ { true, 0x17d1, 0x17d1 }, /* 0x17d2 */ { true, 0x17d2, 0x17d2 }, /* 0x17d3 */ { true, 0x17d3, 0x17d3 }, /* 0x17d4 */ { false, 0x17d4, 0x17d4 }, /* 0x17d5 */ { false, 0x17d5, 0x17d5 }, /* 0x17d6 */ { false, 0x17d6, 0x17d6 }, /* 0x17d7 */ { true, 0x17d7, 0x17d7 }, /* 0x17d8 */ { false, 0x17d8, 0x17d8 }, /* 0x17d9 */ { false, 0x17d9, 0x17d9 }, /* 0x17da */ { false, 0x17da, 0x17da }, /* 0x17db */ { false, 0x17db, 0x17db }, /* 0x17dc */ { true, 0x17dc, 0x17dc }, /* 0x17dd */ { true, 0x17dd, 0x17dd }, /* 0x17de */ { false, 0x17de, 0x17de }, /* 0x17df */ { false, 0x17df, 0x17df }, /* 0x17e0 */ { false, 0x17e0, 0x17e0 }, /* 0x17e1 */ { false, 0x17e1, 0x17e1 }, /* 0x17e2 */ { false, 0x17e2, 0x17e2 }, /* 0x17e3 */ { false, 0x17e3, 0x17e3 }, /* 0x17e4 */ { false, 0x17e4, 0x17e4 }, /* 0x17e5 */ { false, 0x17e5, 0x17e5 }, /* 0x17e6 */ { false, 0x17e6, 0x17e6 }, /* 0x17e7 */ { false, 0x17e7, 0x17e7 }, /* 0x17e8 */ { false, 0x17e8, 0x17e8 }, /* 0x17e9 */ { false, 0x17e9, 0x17e9 }, /* 0x17ea */ { false, 0x17ea, 0x17ea }, /* 0x17eb */ { false, 0x17eb, 0x17eb }, /* 0x17ec */ { false, 0x17ec, 0x17ec }, /* 0x17ed */ { false, 0x17ed, 0x17ed }, /* 0x17ee */ { false, 0x17ee, 0x17ee }, /* 0x17ef */ { false, 0x17ef, 0x17ef }, /* 0x17f0 */ { false, 0x17f0, 0x17f0 }, /* 0x17f1 */ { false, 0x17f1, 0x17f1 }, /* 0x17f2 */ { false, 0x17f2, 0x17f2 }, /* 0x17f3 */ { false, 0x17f3, 0x17f3 }, /* 0x17f4 */ { false, 0x17f4, 0x17f4 }, /* 0x17f5 */ { false, 0x17f5, 0x17f5 }, /* 0x17f6 */ { false, 0x17f6, 0x17f6 }, /* 0x17f7 */ { false, 0x17f7, 0x17f7 }, /* 0x17f8 */ { false, 0x17f8, 0x17f8 }, /* 0x17f9 */ { false, 0x17f9, 0x17f9 }, /* 0x17fa */ { false, 0x17fa, 0x17fa }, /* 0x17fb */ { false, 0x17fb, 0x17fb }, /* 0x17fc */ { false, 0x17fc, 0x17fc }, /* 0x17fd */ { false, 0x17fd, 0x17fd }, /* 0x17fe */ { false, 0x17fe, 0x17fe }, /* 0x17ff */ { false, 0x17ff, 0x17ff }, /* 0x1800 */ { false, 0x1800, 0x1800 }, /* 0x1801 */ { false, 0x1801, 0x1801 }, /* 0x1802 */ { false, 0x1802, 0x1802 }, /* 0x1803 */ { false, 0x1803, 0x1803 }, /* 0x1804 */ { false, 0x1804, 0x1804 }, /* 0x1805 */ { false, 0x1805, 0x1805 }, /* 0x1806 */ { false, 0x1806, 0x1806 }, /* 0x1807 */ { false, 0x1807, 0x1807 }, /* 0x1808 */ { false, 0x1808, 0x1808 }, /* 0x1809 */ { false, 0x1809, 0x1809 }, /* 0x180a */ { false, 0x180a, 0x180a }, /* 0x180b */ { true, 0x180b, 0x180b }, /* 0x180c */ { true, 0x180c, 0x180c }, /* 0x180d */ { true, 0x180d, 0x180d }, /* 0x180e */ { false, 0x180e, 0x180e }, /* 0x180f */ { false, 0x180f, 0x180f }, /* 0x1810 */ { false, 0x1810, 0x1810 }, /* 0x1811 */ { false, 0x1811, 0x1811 }, /* 0x1812 */ { false, 0x1812, 0x1812 }, /* 0x1813 */ { false, 0x1813, 0x1813 }, /* 0x1814 */ { false, 0x1814, 0x1814 }, /* 0x1815 */ { false, 0x1815, 0x1815 }, /* 0x1816 */ { false, 0x1816, 0x1816 }, /* 0x1817 */ { false, 0x1817, 0x1817 }, /* 0x1818 */ { false, 0x1818, 0x1818 }, /* 0x1819 */ { false, 0x1819, 0x1819 }, /* 0x181a */ { false, 0x181a, 0x181a }, /* 0x181b */ { false, 0x181b, 0x181b }, /* 0x181c */ { false, 0x181c, 0x181c }, /* 0x181d */ { false, 0x181d, 0x181d }, /* 0x181e */ { false, 0x181e, 0x181e }, /* 0x181f */ { false, 0x181f, 0x181f }, /* 0x1820 */ { true, 0x1820, 0x1820 }, /* 0x1821 */ { true, 0x1821, 0x1821 }, /* 0x1822 */ { true, 0x1822, 0x1822 }, /* 0x1823 */ { true, 0x1823, 0x1823 }, /* 0x1824 */ { true, 0x1824, 0x1824 }, /* 0x1825 */ { true, 0x1825, 0x1825 }, /* 0x1826 */ { true, 0x1826, 0x1826 }, /* 0x1827 */ { true, 0x1827, 0x1827 }, /* 0x1828 */ { true, 0x1828, 0x1828 }, /* 0x1829 */ { true, 0x1829, 0x1829 }, /* 0x182a */ { true, 0x182a, 0x182a }, /* 0x182b */ { true, 0x182b, 0x182b }, /* 0x182c */ { true, 0x182c, 0x182c }, /* 0x182d */ { true, 0x182d, 0x182d }, /* 0x182e */ { true, 0x182e, 0x182e }, /* 0x182f */ { true, 0x182f, 0x182f }, /* 0x1830 */ { true, 0x1830, 0x1830 }, /* 0x1831 */ { true, 0x1831, 0x1831 }, /* 0x1832 */ { true, 0x1832, 0x1832 }, /* 0x1833 */ { true, 0x1833, 0x1833 }, /* 0x1834 */ { true, 0x1834, 0x1834 }, /* 0x1835 */ { true, 0x1835, 0x1835 }, /* 0x1836 */ { true, 0x1836, 0x1836 }, /* 0x1837 */ { true, 0x1837, 0x1837 }, /* 0x1838 */ { true, 0x1838, 0x1838 }, /* 0x1839 */ { true, 0x1839, 0x1839 }, /* 0x183a */ { true, 0x183a, 0x183a }, /* 0x183b */ { true, 0x183b, 0x183b }, /* 0x183c */ { true, 0x183c, 0x183c }, /* 0x183d */ { true, 0x183d, 0x183d }, /* 0x183e */ { true, 0x183e, 0x183e }, /* 0x183f */ { true, 0x183f, 0x183f }, /* 0x1840 */ { true, 0x1840, 0x1840 }, /* 0x1841 */ { true, 0x1841, 0x1841 }, /* 0x1842 */ { true, 0x1842, 0x1842 }, /* 0x1843 */ { true, 0x1843, 0x1843 }, /* 0x1844 */ { true, 0x1844, 0x1844 }, /* 0x1845 */ { true, 0x1845, 0x1845 }, /* 0x1846 */ { true, 0x1846, 0x1846 }, /* 0x1847 */ { true, 0x1847, 0x1847 }, /* 0x1848 */ { true, 0x1848, 0x1848 }, /* 0x1849 */ { true, 0x1849, 0x1849 }, /* 0x184a */ { true, 0x184a, 0x184a }, /* 0x184b */ { true, 0x184b, 0x184b }, /* 0x184c */ { true, 0x184c, 0x184c }, /* 0x184d */ { true, 0x184d, 0x184d }, /* 0x184e */ { true, 0x184e, 0x184e }, /* 0x184f */ { true, 0x184f, 0x184f }, /* 0x1850 */ { true, 0x1850, 0x1850 }, /* 0x1851 */ { true, 0x1851, 0x1851 }, /* 0x1852 */ { true, 0x1852, 0x1852 }, /* 0x1853 */ { true, 0x1853, 0x1853 }, /* 0x1854 */ { true, 0x1854, 0x1854 }, /* 0x1855 */ { true, 0x1855, 0x1855 }, /* 0x1856 */ { true, 0x1856, 0x1856 }, /* 0x1857 */ { true, 0x1857, 0x1857 }, /* 0x1858 */ { true, 0x1858, 0x1858 }, /* 0x1859 */ { true, 0x1859, 0x1859 }, /* 0x185a */ { true, 0x185a, 0x185a }, /* 0x185b */ { true, 0x185b, 0x185b }, /* 0x185c */ { true, 0x185c, 0x185c }, /* 0x185d */ { true, 0x185d, 0x185d }, /* 0x185e */ { true, 0x185e, 0x185e }, /* 0x185f */ { true, 0x185f, 0x185f }, /* 0x1860 */ { true, 0x1860, 0x1860 }, /* 0x1861 */ { true, 0x1861, 0x1861 }, /* 0x1862 */ { true, 0x1862, 0x1862 }, /* 0x1863 */ { true, 0x1863, 0x1863 }, /* 0x1864 */ { true, 0x1864, 0x1864 }, /* 0x1865 */ { true, 0x1865, 0x1865 }, /* 0x1866 */ { true, 0x1866, 0x1866 }, /* 0x1867 */ { true, 0x1867, 0x1867 }, /* 0x1868 */ { true, 0x1868, 0x1868 }, /* 0x1869 */ { true, 0x1869, 0x1869 }, /* 0x186a */ { true, 0x186a, 0x186a }, /* 0x186b */ { true, 0x186b, 0x186b }, /* 0x186c */ { true, 0x186c, 0x186c }, /* 0x186d */ { true, 0x186d, 0x186d }, /* 0x186e */ { true, 0x186e, 0x186e }, /* 0x186f */ { true, 0x186f, 0x186f }, /* 0x1870 */ { true, 0x1870, 0x1870 }, /* 0x1871 */ { true, 0x1871, 0x1871 }, /* 0x1872 */ { true, 0x1872, 0x1872 }, /* 0x1873 */ { true, 0x1873, 0x1873 }, /* 0x1874 */ { true, 0x1874, 0x1874 }, /* 0x1875 */ { true, 0x1875, 0x1875 }, /* 0x1876 */ { true, 0x1876, 0x1876 }, /* 0x1877 */ { true, 0x1877, 0x1877 }, /* 0x1878 */ { false, 0x1878, 0x1878 }, /* 0x1879 */ { false, 0x1879, 0x1879 }, /* 0x187a */ { false, 0x187a, 0x187a }, /* 0x187b */ { false, 0x187b, 0x187b }, /* 0x187c */ { false, 0x187c, 0x187c }, /* 0x187d */ { false, 0x187d, 0x187d }, /* 0x187e */ { false, 0x187e, 0x187e }, /* 0x187f */ { false, 0x187f, 0x187f }, /* 0x1880 */ { true, 0x1880, 0x1880 }, /* 0x1881 */ { true, 0x1881, 0x1881 }, /* 0x1882 */ { true, 0x1882, 0x1882 }, /* 0x1883 */ { true, 0x1883, 0x1883 }, /* 0x1884 */ { true, 0x1884, 0x1884 }, /* 0x1885 */ { true, 0x1885, 0x1885 }, /* 0x1886 */ { true, 0x1886, 0x1886 }, /* 0x1887 */ { true, 0x1887, 0x1887 }, /* 0x1888 */ { true, 0x1888, 0x1888 }, /* 0x1889 */ { true, 0x1889, 0x1889 }, /* 0x188a */ { true, 0x188a, 0x188a }, /* 0x188b */ { true, 0x188b, 0x188b }, /* 0x188c */ { true, 0x188c, 0x188c }, /* 0x188d */ { true, 0x188d, 0x188d }, /* 0x188e */ { true, 0x188e, 0x188e }, /* 0x188f */ { true, 0x188f, 0x188f }, /* 0x1890 */ { true, 0x1890, 0x1890 }, /* 0x1891 */ { true, 0x1891, 0x1891 }, /* 0x1892 */ { true, 0x1892, 0x1892 }, /* 0x1893 */ { true, 0x1893, 0x1893 }, /* 0x1894 */ { true, 0x1894, 0x1894 }, /* 0x1895 */ { true, 0x1895, 0x1895 }, /* 0x1896 */ { true, 0x1896, 0x1896 }, /* 0x1897 */ { true, 0x1897, 0x1897 }, /* 0x1898 */ { true, 0x1898, 0x1898 }, /* 0x1899 */ { true, 0x1899, 0x1899 }, /* 0x189a */ { true, 0x189a, 0x189a }, /* 0x189b */ { true, 0x189b, 0x189b }, /* 0x189c */ { true, 0x189c, 0x189c }, /* 0x189d */ { true, 0x189d, 0x189d }, /* 0x189e */ { true, 0x189e, 0x189e }, /* 0x189f */ { true, 0x189f, 0x189f }, /* 0x18a0 */ { true, 0x18a0, 0x18a0 }, /* 0x18a1 */ { true, 0x18a1, 0x18a1 }, /* 0x18a2 */ { true, 0x18a2, 0x18a2 }, /* 0x18a3 */ { true, 0x18a3, 0x18a3 }, /* 0x18a4 */ { true, 0x18a4, 0x18a4 }, /* 0x18a5 */ { true, 0x18a5, 0x18a5 }, /* 0x18a6 */ { true, 0x18a6, 0x18a6 }, /* 0x18a7 */ { true, 0x18a7, 0x18a7 }, /* 0x18a8 */ { true, 0x18a8, 0x18a8 }, /* 0x18a9 */ { true, 0x18a9, 0x18a9 }, /* 0x18aa */ { false, 0x18aa, 0x18aa }, /* 0x18ab */ { false, 0x18ab, 0x18ab }, /* 0x18ac */ { false, 0x18ac, 0x18ac }, /* 0x18ad */ { false, 0x18ad, 0x18ad }, /* 0x18ae */ { false, 0x18ae, 0x18ae }, /* 0x18af */ { false, 0x18af, 0x18af }, /* 0x18b0 */ { false, 0x18b0, 0x18b0 }, /* 0x18b1 */ { false, 0x18b1, 0x18b1 }, /* 0x18b2 */ { false, 0x18b2, 0x18b2 }, /* 0x18b3 */ { false, 0x18b3, 0x18b3 }, /* 0x18b4 */ { false, 0x18b4, 0x18b4 }, /* 0x18b5 */ { false, 0x18b5, 0x18b5 }, /* 0x18b6 */ { false, 0x18b6, 0x18b6 }, /* 0x18b7 */ { false, 0x18b7, 0x18b7 }, /* 0x18b8 */ { false, 0x18b8, 0x18b8 }, /* 0x18b9 */ { false, 0x18b9, 0x18b9 }, /* 0x18ba */ { false, 0x18ba, 0x18ba }, /* 0x18bb */ { false, 0x18bb, 0x18bb }, /* 0x18bc */ { false, 0x18bc, 0x18bc }, /* 0x18bd */ { false, 0x18bd, 0x18bd }, /* 0x18be */ { false, 0x18be, 0x18be }, /* 0x18bf */ { false, 0x18bf, 0x18bf }, /* 0x18c0 */ { false, 0x18c0, 0x18c0 }, /* 0x18c1 */ { false, 0x18c1, 0x18c1 }, /* 0x18c2 */ { false, 0x18c2, 0x18c2 }, /* 0x18c3 */ { false, 0x18c3, 0x18c3 }, /* 0x18c4 */ { false, 0x18c4, 0x18c4 }, /* 0x18c5 */ { false, 0x18c5, 0x18c5 }, /* 0x18c6 */ { false, 0x18c6, 0x18c6 }, /* 0x18c7 */ { false, 0x18c7, 0x18c7 }, /* 0x18c8 */ { false, 0x18c8, 0x18c8 }, /* 0x18c9 */ { false, 0x18c9, 0x18c9 }, /* 0x18ca */ { false, 0x18ca, 0x18ca }, /* 0x18cb */ { false, 0x18cb, 0x18cb }, /* 0x18cc */ { false, 0x18cc, 0x18cc }, /* 0x18cd */ { false, 0x18cd, 0x18cd }, /* 0x18ce */ { false, 0x18ce, 0x18ce }, /* 0x18cf */ { false, 0x18cf, 0x18cf }, /* 0x18d0 */ { false, 0x18d0, 0x18d0 }, /* 0x18d1 */ { false, 0x18d1, 0x18d1 }, /* 0x18d2 */ { false, 0x18d2, 0x18d2 }, /* 0x18d3 */ { false, 0x18d3, 0x18d3 }, /* 0x18d4 */ { false, 0x18d4, 0x18d4 }, /* 0x18d5 */ { false, 0x18d5, 0x18d5 }, /* 0x18d6 */ { false, 0x18d6, 0x18d6 }, /* 0x18d7 */ { false, 0x18d7, 0x18d7 }, /* 0x18d8 */ { false, 0x18d8, 0x18d8 }, /* 0x18d9 */ { false, 0x18d9, 0x18d9 }, /* 0x18da */ { false, 0x18da, 0x18da }, /* 0x18db */ { false, 0x18db, 0x18db }, /* 0x18dc */ { false, 0x18dc, 0x18dc }, /* 0x18dd */ { false, 0x18dd, 0x18dd }, /* 0x18de */ { false, 0x18de, 0x18de }, /* 0x18df */ { false, 0x18df, 0x18df }, /* 0x18e0 */ { false, 0x18e0, 0x18e0 }, /* 0x18e1 */ { false, 0x18e1, 0x18e1 }, /* 0x18e2 */ { false, 0x18e2, 0x18e2 }, /* 0x18e3 */ { false, 0x18e3, 0x18e3 }, /* 0x18e4 */ { false, 0x18e4, 0x18e4 }, /* 0x18e5 */ { false, 0x18e5, 0x18e5 }, /* 0x18e6 */ { false, 0x18e6, 0x18e6 }, /* 0x18e7 */ { false, 0x18e7, 0x18e7 }, /* 0x18e8 */ { false, 0x18e8, 0x18e8 }, /* 0x18e9 */ { false, 0x18e9, 0x18e9 }, /* 0x18ea */ { false, 0x18ea, 0x18ea }, /* 0x18eb */ { false, 0x18eb, 0x18eb }, /* 0x18ec */ { false, 0x18ec, 0x18ec }, /* 0x18ed */ { false, 0x18ed, 0x18ed }, /* 0x18ee */ { false, 0x18ee, 0x18ee }, /* 0x18ef */ { false, 0x18ef, 0x18ef }, /* 0x18f0 */ { false, 0x18f0, 0x18f0 }, /* 0x18f1 */ { false, 0x18f1, 0x18f1 }, /* 0x18f2 */ { false, 0x18f2, 0x18f2 }, /* 0x18f3 */ { false, 0x18f3, 0x18f3 }, /* 0x18f4 */ { false, 0x18f4, 0x18f4 }, /* 0x18f5 */ { false, 0x18f5, 0x18f5 }, /* 0x18f6 */ { false, 0x18f6, 0x18f6 }, /* 0x18f7 */ { false, 0x18f7, 0x18f7 }, /* 0x18f8 */ { false, 0x18f8, 0x18f8 }, /* 0x18f9 */ { false, 0x18f9, 0x18f9 }, /* 0x18fa */ { false, 0x18fa, 0x18fa }, /* 0x18fb */ { false, 0x18fb, 0x18fb }, /* 0x18fc */ { false, 0x18fc, 0x18fc }, /* 0x18fd */ { false, 0x18fd, 0x18fd }, /* 0x18fe */ { false, 0x18fe, 0x18fe }, /* 0x18ff */ { false, 0x18ff, 0x18ff }, /* 0x1900 */ { true, 0x1900, 0x1900 }, /* 0x1901 */ { true, 0x1901, 0x1901 }, /* 0x1902 */ { true, 0x1902, 0x1902 }, /* 0x1903 */ { true, 0x1903, 0x1903 }, /* 0x1904 */ { true, 0x1904, 0x1904 }, /* 0x1905 */ { true, 0x1905, 0x1905 }, /* 0x1906 */ { true, 0x1906, 0x1906 }, /* 0x1907 */ { true, 0x1907, 0x1907 }, /* 0x1908 */ { true, 0x1908, 0x1908 }, /* 0x1909 */ { true, 0x1909, 0x1909 }, /* 0x190a */ { true, 0x190a, 0x190a }, /* 0x190b */ { true, 0x190b, 0x190b }, /* 0x190c */ { true, 0x190c, 0x190c }, /* 0x190d */ { true, 0x190d, 0x190d }, /* 0x190e */ { true, 0x190e, 0x190e }, /* 0x190f */ { true, 0x190f, 0x190f }, /* 0x1910 */ { true, 0x1910, 0x1910 }, /* 0x1911 */ { true, 0x1911, 0x1911 }, /* 0x1912 */ { true, 0x1912, 0x1912 }, /* 0x1913 */ { true, 0x1913, 0x1913 }, /* 0x1914 */ { true, 0x1914, 0x1914 }, /* 0x1915 */ { true, 0x1915, 0x1915 }, /* 0x1916 */ { true, 0x1916, 0x1916 }, /* 0x1917 */ { true, 0x1917, 0x1917 }, /* 0x1918 */ { true, 0x1918, 0x1918 }, /* 0x1919 */ { true, 0x1919, 0x1919 }, /* 0x191a */ { true, 0x191a, 0x191a }, /* 0x191b */ { true, 0x191b, 0x191b }, /* 0x191c */ { true, 0x191c, 0x191c }, /* 0x191d */ { false, 0x191d, 0x191d }, /* 0x191e */ { false, 0x191e, 0x191e }, /* 0x191f */ { false, 0x191f, 0x191f }, /* 0x1920 */ { true, 0x1920, 0x1920 }, /* 0x1921 */ { true, 0x1921, 0x1921 }, /* 0x1922 */ { true, 0x1922, 0x1922 }, /* 0x1923 */ { false, 0x1923, 0x1923 }, /* 0x1924 */ { false, 0x1924, 0x1924 }, /* 0x1925 */ { false, 0x1925, 0x1925 }, /* 0x1926 */ { false, 0x1926, 0x1926 }, /* 0x1927 */ { true, 0x1927, 0x1927 }, /* 0x1928 */ { true, 0x1928, 0x1928 }, /* 0x1929 */ { false, 0x1929, 0x1929 }, /* 0x192a */ { false, 0x192a, 0x192a }, /* 0x192b */ { false, 0x192b, 0x192b }, /* 0x192c */ { false, 0x192c, 0x192c }, /* 0x192d */ { false, 0x192d, 0x192d }, /* 0x192e */ { false, 0x192e, 0x192e }, /* 0x192f */ { false, 0x192f, 0x192f }, /* 0x1930 */ { false, 0x1930, 0x1930 }, /* 0x1931 */ { false, 0x1931, 0x1931 }, /* 0x1932 */ { true, 0x1932, 0x1932 }, /* 0x1933 */ { false, 0x1933, 0x1933 }, /* 0x1934 */ { false, 0x1934, 0x1934 }, /* 0x1935 */ { false, 0x1935, 0x1935 }, /* 0x1936 */ { false, 0x1936, 0x1936 }, /* 0x1937 */ { false, 0x1937, 0x1937 }, /* 0x1938 */ { false, 0x1938, 0x1938 }, /* 0x1939 */ { true, 0x1939, 0x1939 }, /* 0x193a */ { true, 0x193a, 0x193a }, /* 0x193b */ { true, 0x193b, 0x193b }, /* 0x193c */ { false, 0x193c, 0x193c }, /* 0x193d */ { false, 0x193d, 0x193d }, /* 0x193e */ { false, 0x193e, 0x193e }, /* 0x193f */ { false, 0x193f, 0x193f }, /* 0x1940 */ { false, 0x1940, 0x1940 }, /* 0x1941 */ { false, 0x1941, 0x1941 }, /* 0x1942 */ { false, 0x1942, 0x1942 }, /* 0x1943 */ { false, 0x1943, 0x1943 }, /* 0x1944 */ { false, 0x1944, 0x1944 }, /* 0x1945 */ { false, 0x1945, 0x1945 }, /* 0x1946 */ { false, 0x1946, 0x1946 }, /* 0x1947 */ { false, 0x1947, 0x1947 }, /* 0x1948 */ { false, 0x1948, 0x1948 }, /* 0x1949 */ { false, 0x1949, 0x1949 }, /* 0x194a */ { false, 0x194a, 0x194a }, /* 0x194b */ { false, 0x194b, 0x194b }, /* 0x194c */ { false, 0x194c, 0x194c }, /* 0x194d */ { false, 0x194d, 0x194d }, /* 0x194e */ { false, 0x194e, 0x194e }, /* 0x194f */ { false, 0x194f, 0x194f }, /* 0x1950 */ { true, 0x1950, 0x1950 }, /* 0x1951 */ { true, 0x1951, 0x1951 }, /* 0x1952 */ { true, 0x1952, 0x1952 }, /* 0x1953 */ { true, 0x1953, 0x1953 }, /* 0x1954 */ { true, 0x1954, 0x1954 }, /* 0x1955 */ { true, 0x1955, 0x1955 }, /* 0x1956 */ { true, 0x1956, 0x1956 }, /* 0x1957 */ { true, 0x1957, 0x1957 }, /* 0x1958 */ { true, 0x1958, 0x1958 }, /* 0x1959 */ { true, 0x1959, 0x1959 }, /* 0x195a */ { true, 0x195a, 0x195a }, /* 0x195b */ { true, 0x195b, 0x195b }, /* 0x195c */ { true, 0x195c, 0x195c }, /* 0x195d */ { true, 0x195d, 0x195d }, /* 0x195e */ { true, 0x195e, 0x195e }, /* 0x195f */ { true, 0x195f, 0x195f }, /* 0x1960 */ { true, 0x1960, 0x1960 }, /* 0x1961 */ { true, 0x1961, 0x1961 }, /* 0x1962 */ { true, 0x1962, 0x1962 }, /* 0x1963 */ { true, 0x1963, 0x1963 }, /* 0x1964 */ { true, 0x1964, 0x1964 }, /* 0x1965 */ { true, 0x1965, 0x1965 }, /* 0x1966 */ { true, 0x1966, 0x1966 }, /* 0x1967 */ { true, 0x1967, 0x1967 }, /* 0x1968 */ { true, 0x1968, 0x1968 }, /* 0x1969 */ { true, 0x1969, 0x1969 }, /* 0x196a */ { true, 0x196a, 0x196a }, /* 0x196b */ { true, 0x196b, 0x196b }, /* 0x196c */ { true, 0x196c, 0x196c }, /* 0x196d */ { true, 0x196d, 0x196d }, /* 0x196e */ { false, 0x196e, 0x196e }, /* 0x196f */ { false, 0x196f, 0x196f }, /* 0x1970 */ { true, 0x1970, 0x1970 }, /* 0x1971 */ { true, 0x1971, 0x1971 }, /* 0x1972 */ { true, 0x1972, 0x1972 }, /* 0x1973 */ { true, 0x1973, 0x1973 }, /* 0x1974 */ { true, 0x1974, 0x1974 }, /* 0x1975 */ { false, 0x1975, 0x1975 }, /* 0x1976 */ { false, 0x1976, 0x1976 }, /* 0x1977 */ { false, 0x1977, 0x1977 }, /* 0x1978 */ { false, 0x1978, 0x1978 }, /* 0x1979 */ { false, 0x1979, 0x1979 }, /* 0x197a */ { false, 0x197a, 0x197a }, /* 0x197b */ { false, 0x197b, 0x197b }, /* 0x197c */ { false, 0x197c, 0x197c }, /* 0x197d */ { false, 0x197d, 0x197d }, /* 0x197e */ { false, 0x197e, 0x197e }, /* 0x197f */ { false, 0x197f, 0x197f }, /* 0x1980 */ { true, 0x1980, 0x1980 }, /* 0x1981 */ { true, 0x1981, 0x1981 }, /* 0x1982 */ { true, 0x1982, 0x1982 }, /* 0x1983 */ { true, 0x1983, 0x1983 }, /* 0x1984 */ { true, 0x1984, 0x1984 }, /* 0x1985 */ { true, 0x1985, 0x1985 }, /* 0x1986 */ { true, 0x1986, 0x1986 }, /* 0x1987 */ { true, 0x1987, 0x1987 }, /* 0x1988 */ { true, 0x1988, 0x1988 }, /* 0x1989 */ { true, 0x1989, 0x1989 }, /* 0x198a */ { true, 0x198a, 0x198a }, /* 0x198b */ { true, 0x198b, 0x198b }, /* 0x198c */ { true, 0x198c, 0x198c }, /* 0x198d */ { true, 0x198d, 0x198d }, /* 0x198e */ { true, 0x198e, 0x198e }, /* 0x198f */ { true, 0x198f, 0x198f }, /* 0x1990 */ { true, 0x1990, 0x1990 }, /* 0x1991 */ { true, 0x1991, 0x1991 }, /* 0x1992 */ { true, 0x1992, 0x1992 }, /* 0x1993 */ { true, 0x1993, 0x1993 }, /* 0x1994 */ { true, 0x1994, 0x1994 }, /* 0x1995 */ { true, 0x1995, 0x1995 }, /* 0x1996 */ { true, 0x1996, 0x1996 }, /* 0x1997 */ { true, 0x1997, 0x1997 }, /* 0x1998 */ { true, 0x1998, 0x1998 }, /* 0x1999 */ { true, 0x1999, 0x1999 }, /* 0x199a */ { true, 0x199a, 0x199a }, /* 0x199b */ { true, 0x199b, 0x199b }, /* 0x199c */ { true, 0x199c, 0x199c }, /* 0x199d */ { true, 0x199d, 0x199d }, /* 0x199e */ { true, 0x199e, 0x199e }, /* 0x199f */ { true, 0x199f, 0x199f }, /* 0x19a0 */ { true, 0x19a0, 0x19a0 }, /* 0x19a1 */ { true, 0x19a1, 0x19a1 }, /* 0x19a2 */ { true, 0x19a2, 0x19a2 }, /* 0x19a3 */ { true, 0x19a3, 0x19a3 }, /* 0x19a4 */ { true, 0x19a4, 0x19a4 }, /* 0x19a5 */ { true, 0x19a5, 0x19a5 }, /* 0x19a6 */ { true, 0x19a6, 0x19a6 }, /* 0x19a7 */ { true, 0x19a7, 0x19a7 }, /* 0x19a8 */ { true, 0x19a8, 0x19a8 }, /* 0x19a9 */ { true, 0x19a9, 0x19a9 }, /* 0x19aa */ { false, 0x19aa, 0x19aa }, /* 0x19ab */ { false, 0x19ab, 0x19ab }, /* 0x19ac */ { false, 0x19ac, 0x19ac }, /* 0x19ad */ { false, 0x19ad, 0x19ad }, /* 0x19ae */ { false, 0x19ae, 0x19ae }, /* 0x19af */ { false, 0x19af, 0x19af }, /* 0x19b0 */ { false, 0x19b0, 0x19b0 }, /* 0x19b1 */ { false, 0x19b1, 0x19b1 }, /* 0x19b2 */ { false, 0x19b2, 0x19b2 }, /* 0x19b3 */ { false, 0x19b3, 0x19b3 }, /* 0x19b4 */ { false, 0x19b4, 0x19b4 }, /* 0x19b5 */ { false, 0x19b5, 0x19b5 }, /* 0x19b6 */ { false, 0x19b6, 0x19b6 }, /* 0x19b7 */ { false, 0x19b7, 0x19b7 }, /* 0x19b8 */ { false, 0x19b8, 0x19b8 }, /* 0x19b9 */ { false, 0x19b9, 0x19b9 }, /* 0x19ba */ { false, 0x19ba, 0x19ba }, /* 0x19bb */ { false, 0x19bb, 0x19bb }, /* 0x19bc */ { false, 0x19bc, 0x19bc }, /* 0x19bd */ { false, 0x19bd, 0x19bd }, /* 0x19be */ { false, 0x19be, 0x19be }, /* 0x19bf */ { false, 0x19bf, 0x19bf }, /* 0x19c0 */ { false, 0x19c0, 0x19c0 }, /* 0x19c1 */ { true, 0x19c1, 0x19c1 }, /* 0x19c2 */ { true, 0x19c2, 0x19c2 }, /* 0x19c3 */ { true, 0x19c3, 0x19c3 }, /* 0x19c4 */ { true, 0x19c4, 0x19c4 }, /* 0x19c5 */ { true, 0x19c5, 0x19c5 }, /* 0x19c6 */ { true, 0x19c6, 0x19c6 }, /* 0x19c7 */ { true, 0x19c7, 0x19c7 }, /* 0x19c8 */ { false, 0x19c8, 0x19c8 }, /* 0x19c9 */ { false, 0x19c9, 0x19c9 }, /* 0x19ca */ { false, 0x19ca, 0x19ca }, /* 0x19cb */ { false, 0x19cb, 0x19cb }, /* 0x19cc */ { false, 0x19cc, 0x19cc }, /* 0x19cd */ { false, 0x19cd, 0x19cd }, /* 0x19ce */ { false, 0x19ce, 0x19ce }, /* 0x19cf */ { false, 0x19cf, 0x19cf }, /* 0x19d0 */ { false, 0x19d0, 0x19d0 }, /* 0x19d1 */ { false, 0x19d1, 0x19d1 }, /* 0x19d2 */ { false, 0x19d2, 0x19d2 }, /* 0x19d3 */ { false, 0x19d3, 0x19d3 }, /* 0x19d4 */ { false, 0x19d4, 0x19d4 }, /* 0x19d5 */ { false, 0x19d5, 0x19d5 }, /* 0x19d6 */ { false, 0x19d6, 0x19d6 }, /* 0x19d7 */ { false, 0x19d7, 0x19d7 }, /* 0x19d8 */ { false, 0x19d8, 0x19d8 }, /* 0x19d9 */ { false, 0x19d9, 0x19d9 }, /* 0x19da */ { false, 0x19da, 0x19da }, /* 0x19db */ { false, 0x19db, 0x19db }, /* 0x19dc */ { false, 0x19dc, 0x19dc }, /* 0x19dd */ { false, 0x19dd, 0x19dd }, /* 0x19de */ { false, 0x19de, 0x19de }, /* 0x19df */ { false, 0x19df, 0x19df }, /* 0x19e0 */ { false, 0x19e0, 0x19e0 }, /* 0x19e1 */ { false, 0x19e1, 0x19e1 }, /* 0x19e2 */ { false, 0x19e2, 0x19e2 }, /* 0x19e3 */ { false, 0x19e3, 0x19e3 }, /* 0x19e4 */ { false, 0x19e4, 0x19e4 }, /* 0x19e5 */ { false, 0x19e5, 0x19e5 }, /* 0x19e6 */ { false, 0x19e6, 0x19e6 }, /* 0x19e7 */ { false, 0x19e7, 0x19e7 }, /* 0x19e8 */ { false, 0x19e8, 0x19e8 }, /* 0x19e9 */ { false, 0x19e9, 0x19e9 }, /* 0x19ea */ { false, 0x19ea, 0x19ea }, /* 0x19eb */ { false, 0x19eb, 0x19eb }, /* 0x19ec */ { false, 0x19ec, 0x19ec }, /* 0x19ed */ { false, 0x19ed, 0x19ed }, /* 0x19ee */ { false, 0x19ee, 0x19ee }, /* 0x19ef */ { false, 0x19ef, 0x19ef }, /* 0x19f0 */ { false, 0x19f0, 0x19f0 }, /* 0x19f1 */ { false, 0x19f1, 0x19f1 }, /* 0x19f2 */ { false, 0x19f2, 0x19f2 }, /* 0x19f3 */ { false, 0x19f3, 0x19f3 }, /* 0x19f4 */ { false, 0x19f4, 0x19f4 }, /* 0x19f5 */ { false, 0x19f5, 0x19f5 }, /* 0x19f6 */ { false, 0x19f6, 0x19f6 }, /* 0x19f7 */ { false, 0x19f7, 0x19f7 }, /* 0x19f8 */ { false, 0x19f8, 0x19f8 }, /* 0x19f9 */ { false, 0x19f9, 0x19f9 }, /* 0x19fa */ { false, 0x19fa, 0x19fa }, /* 0x19fb */ { false, 0x19fb, 0x19fb }, /* 0x19fc */ { false, 0x19fc, 0x19fc }, /* 0x19fd */ { false, 0x19fd, 0x19fd }, /* 0x19fe */ { false, 0x19fe, 0x19fe }, /* 0x19ff */ { false, 0x19ff, 0x19ff }, /* 0x1a00 */ { true, 0x1a00, 0x1a00 }, /* 0x1a01 */ { true, 0x1a01, 0x1a01 }, /* 0x1a02 */ { true, 0x1a02, 0x1a02 }, /* 0x1a03 */ { true, 0x1a03, 0x1a03 }, /* 0x1a04 */ { true, 0x1a04, 0x1a04 }, /* 0x1a05 */ { true, 0x1a05, 0x1a05 }, /* 0x1a06 */ { true, 0x1a06, 0x1a06 }, /* 0x1a07 */ { true, 0x1a07, 0x1a07 }, /* 0x1a08 */ { true, 0x1a08, 0x1a08 }, /* 0x1a09 */ { true, 0x1a09, 0x1a09 }, /* 0x1a0a */ { true, 0x1a0a, 0x1a0a }, /* 0x1a0b */ { true, 0x1a0b, 0x1a0b }, /* 0x1a0c */ { true, 0x1a0c, 0x1a0c }, /* 0x1a0d */ { true, 0x1a0d, 0x1a0d }, /* 0x1a0e */ { true, 0x1a0e, 0x1a0e }, /* 0x1a0f */ { true, 0x1a0f, 0x1a0f }, /* 0x1a10 */ { true, 0x1a10, 0x1a10 }, /* 0x1a11 */ { true, 0x1a11, 0x1a11 }, /* 0x1a12 */ { true, 0x1a12, 0x1a12 }, /* 0x1a13 */ { true, 0x1a13, 0x1a13 }, /* 0x1a14 */ { true, 0x1a14, 0x1a14 }, /* 0x1a15 */ { true, 0x1a15, 0x1a15 }, /* 0x1a16 */ { true, 0x1a16, 0x1a16 }, /* 0x1a17 */ { true, 0x1a17, 0x1a17 }, /* 0x1a18 */ { true, 0x1a18, 0x1a18 }, /* 0x1a19 */ { false, 0x1a19, 0x1a19 }, /* 0x1a1a */ { false, 0x1a1a, 0x1a1a }, /* 0x1a1b */ { false, 0x1a1b, 0x1a1b }, /* 0x1a1c */ { false, 0x1a1c, 0x1a1c }, /* 0x1a1d */ { false, 0x1a1d, 0x1a1d }, /* 0x1a1e */ { false, 0x1a1e, 0x1a1e }, /* 0x1a1f */ { false, 0x1a1f, 0x1a1f }, /* 0x1a20 */ { false, 0x1a20, 0x1a20 }, /* 0x1a21 */ { false, 0x1a21, 0x1a21 }, /* 0x1a22 */ { false, 0x1a22, 0x1a22 }, /* 0x1a23 */ { false, 0x1a23, 0x1a23 }, /* 0x1a24 */ { false, 0x1a24, 0x1a24 }, /* 0x1a25 */ { false, 0x1a25, 0x1a25 }, /* 0x1a26 */ { false, 0x1a26, 0x1a26 }, /* 0x1a27 */ { false, 0x1a27, 0x1a27 }, /* 0x1a28 */ { false, 0x1a28, 0x1a28 }, /* 0x1a29 */ { false, 0x1a29, 0x1a29 }, /* 0x1a2a */ { false, 0x1a2a, 0x1a2a }, /* 0x1a2b */ { false, 0x1a2b, 0x1a2b }, /* 0x1a2c */ { false, 0x1a2c, 0x1a2c }, /* 0x1a2d */ { false, 0x1a2d, 0x1a2d }, /* 0x1a2e */ { false, 0x1a2e, 0x1a2e }, /* 0x1a2f */ { false, 0x1a2f, 0x1a2f }, /* 0x1a30 */ { false, 0x1a30, 0x1a30 }, /* 0x1a31 */ { false, 0x1a31, 0x1a31 }, /* 0x1a32 */ { false, 0x1a32, 0x1a32 }, /* 0x1a33 */ { false, 0x1a33, 0x1a33 }, /* 0x1a34 */ { false, 0x1a34, 0x1a34 }, /* 0x1a35 */ { false, 0x1a35, 0x1a35 }, /* 0x1a36 */ { false, 0x1a36, 0x1a36 }, /* 0x1a37 */ { false, 0x1a37, 0x1a37 }, /* 0x1a38 */ { false, 0x1a38, 0x1a38 }, /* 0x1a39 */ { false, 0x1a39, 0x1a39 }, /* 0x1a3a */ { false, 0x1a3a, 0x1a3a }, /* 0x1a3b */ { false, 0x1a3b, 0x1a3b }, /* 0x1a3c */ { false, 0x1a3c, 0x1a3c }, /* 0x1a3d */ { false, 0x1a3d, 0x1a3d }, /* 0x1a3e */ { false, 0x1a3e, 0x1a3e }, /* 0x1a3f */ { false, 0x1a3f, 0x1a3f }, /* 0x1a40 */ { false, 0x1a40, 0x1a40 }, /* 0x1a41 */ { false, 0x1a41, 0x1a41 }, /* 0x1a42 */ { false, 0x1a42, 0x1a42 }, /* 0x1a43 */ { false, 0x1a43, 0x1a43 }, /* 0x1a44 */ { false, 0x1a44, 0x1a44 }, /* 0x1a45 */ { false, 0x1a45, 0x1a45 }, /* 0x1a46 */ { false, 0x1a46, 0x1a46 }, /* 0x1a47 */ { false, 0x1a47, 0x1a47 }, /* 0x1a48 */ { false, 0x1a48, 0x1a48 }, /* 0x1a49 */ { false, 0x1a49, 0x1a49 }, /* 0x1a4a */ { false, 0x1a4a, 0x1a4a }, /* 0x1a4b */ { false, 0x1a4b, 0x1a4b }, /* 0x1a4c */ { false, 0x1a4c, 0x1a4c }, /* 0x1a4d */ { false, 0x1a4d, 0x1a4d }, /* 0x1a4e */ { false, 0x1a4e, 0x1a4e }, /* 0x1a4f */ { false, 0x1a4f, 0x1a4f }, /* 0x1a50 */ { false, 0x1a50, 0x1a50 }, /* 0x1a51 */ { false, 0x1a51, 0x1a51 }, /* 0x1a52 */ { false, 0x1a52, 0x1a52 }, /* 0x1a53 */ { false, 0x1a53, 0x1a53 }, /* 0x1a54 */ { false, 0x1a54, 0x1a54 }, /* 0x1a55 */ { false, 0x1a55, 0x1a55 }, /* 0x1a56 */ { false, 0x1a56, 0x1a56 }, /* 0x1a57 */ { false, 0x1a57, 0x1a57 }, /* 0x1a58 */ { false, 0x1a58, 0x1a58 }, /* 0x1a59 */ { false, 0x1a59, 0x1a59 }, /* 0x1a5a */ { false, 0x1a5a, 0x1a5a }, /* 0x1a5b */ { false, 0x1a5b, 0x1a5b }, /* 0x1a5c */ { false, 0x1a5c, 0x1a5c }, /* 0x1a5d */ { false, 0x1a5d, 0x1a5d }, /* 0x1a5e */ { false, 0x1a5e, 0x1a5e }, /* 0x1a5f */ { false, 0x1a5f, 0x1a5f }, /* 0x1a60 */ { false, 0x1a60, 0x1a60 }, /* 0x1a61 */ { false, 0x1a61, 0x1a61 }, /* 0x1a62 */ { false, 0x1a62, 0x1a62 }, /* 0x1a63 */ { false, 0x1a63, 0x1a63 }, /* 0x1a64 */ { false, 0x1a64, 0x1a64 }, /* 0x1a65 */ { false, 0x1a65, 0x1a65 }, /* 0x1a66 */ { false, 0x1a66, 0x1a66 }, /* 0x1a67 */ { false, 0x1a67, 0x1a67 }, /* 0x1a68 */ { false, 0x1a68, 0x1a68 }, /* 0x1a69 */ { false, 0x1a69, 0x1a69 }, /* 0x1a6a */ { false, 0x1a6a, 0x1a6a }, /* 0x1a6b */ { false, 0x1a6b, 0x1a6b }, /* 0x1a6c */ { false, 0x1a6c, 0x1a6c }, /* 0x1a6d */ { false, 0x1a6d, 0x1a6d }, /* 0x1a6e */ { false, 0x1a6e, 0x1a6e }, /* 0x1a6f */ { false, 0x1a6f, 0x1a6f }, /* 0x1a70 */ { false, 0x1a70, 0x1a70 }, /* 0x1a71 */ { false, 0x1a71, 0x1a71 }, /* 0x1a72 */ { false, 0x1a72, 0x1a72 }, /* 0x1a73 */ { false, 0x1a73, 0x1a73 }, /* 0x1a74 */ { false, 0x1a74, 0x1a74 }, /* 0x1a75 */ { false, 0x1a75, 0x1a75 }, /* 0x1a76 */ { false, 0x1a76, 0x1a76 }, /* 0x1a77 */ { false, 0x1a77, 0x1a77 }, /* 0x1a78 */ { false, 0x1a78, 0x1a78 }, /* 0x1a79 */ { false, 0x1a79, 0x1a79 }, /* 0x1a7a */ { false, 0x1a7a, 0x1a7a }, /* 0x1a7b */ { false, 0x1a7b, 0x1a7b }, /* 0x1a7c */ { false, 0x1a7c, 0x1a7c }, /* 0x1a7d */ { false, 0x1a7d, 0x1a7d }, /* 0x1a7e */ { false, 0x1a7e, 0x1a7e }, /* 0x1a7f */ { false, 0x1a7f, 0x1a7f }, /* 0x1a80 */ { false, 0x1a80, 0x1a80 }, /* 0x1a81 */ { false, 0x1a81, 0x1a81 }, /* 0x1a82 */ { false, 0x1a82, 0x1a82 }, /* 0x1a83 */ { false, 0x1a83, 0x1a83 }, /* 0x1a84 */ { false, 0x1a84, 0x1a84 }, /* 0x1a85 */ { false, 0x1a85, 0x1a85 }, /* 0x1a86 */ { false, 0x1a86, 0x1a86 }, /* 0x1a87 */ { false, 0x1a87, 0x1a87 }, /* 0x1a88 */ { false, 0x1a88, 0x1a88 }, /* 0x1a89 */ { false, 0x1a89, 0x1a89 }, /* 0x1a8a */ { false, 0x1a8a, 0x1a8a }, /* 0x1a8b */ { false, 0x1a8b, 0x1a8b }, /* 0x1a8c */ { false, 0x1a8c, 0x1a8c }, /* 0x1a8d */ { false, 0x1a8d, 0x1a8d }, /* 0x1a8e */ { false, 0x1a8e, 0x1a8e }, /* 0x1a8f */ { false, 0x1a8f, 0x1a8f }, /* 0x1a90 */ { false, 0x1a90, 0x1a90 }, /* 0x1a91 */ { false, 0x1a91, 0x1a91 }, /* 0x1a92 */ { false, 0x1a92, 0x1a92 }, /* 0x1a93 */ { false, 0x1a93, 0x1a93 }, /* 0x1a94 */ { false, 0x1a94, 0x1a94 }, /* 0x1a95 */ { false, 0x1a95, 0x1a95 }, /* 0x1a96 */ { false, 0x1a96, 0x1a96 }, /* 0x1a97 */ { false, 0x1a97, 0x1a97 }, /* 0x1a98 */ { false, 0x1a98, 0x1a98 }, /* 0x1a99 */ { false, 0x1a99, 0x1a99 }, /* 0x1a9a */ { false, 0x1a9a, 0x1a9a }, /* 0x1a9b */ { false, 0x1a9b, 0x1a9b }, /* 0x1a9c */ { false, 0x1a9c, 0x1a9c }, /* 0x1a9d */ { false, 0x1a9d, 0x1a9d }, /* 0x1a9e */ { false, 0x1a9e, 0x1a9e }, /* 0x1a9f */ { false, 0x1a9f, 0x1a9f }, /* 0x1aa0 */ { false, 0x1aa0, 0x1aa0 }, /* 0x1aa1 */ { false, 0x1aa1, 0x1aa1 }, /* 0x1aa2 */ { false, 0x1aa2, 0x1aa2 }, /* 0x1aa3 */ { false, 0x1aa3, 0x1aa3 }, /* 0x1aa4 */ { false, 0x1aa4, 0x1aa4 }, /* 0x1aa5 */ { false, 0x1aa5, 0x1aa5 }, /* 0x1aa6 */ { false, 0x1aa6, 0x1aa6 }, /* 0x1aa7 */ { false, 0x1aa7, 0x1aa7 }, /* 0x1aa8 */ { false, 0x1aa8, 0x1aa8 }, /* 0x1aa9 */ { false, 0x1aa9, 0x1aa9 }, /* 0x1aaa */ { false, 0x1aaa, 0x1aaa }, /* 0x1aab */ { false, 0x1aab, 0x1aab }, /* 0x1aac */ { false, 0x1aac, 0x1aac }, /* 0x1aad */ { false, 0x1aad, 0x1aad }, /* 0x1aae */ { false, 0x1aae, 0x1aae }, /* 0x1aaf */ { false, 0x1aaf, 0x1aaf }, /* 0x1ab0 */ { false, 0x1ab0, 0x1ab0 }, /* 0x1ab1 */ { false, 0x1ab1, 0x1ab1 }, /* 0x1ab2 */ { false, 0x1ab2, 0x1ab2 }, /* 0x1ab3 */ { false, 0x1ab3, 0x1ab3 }, /* 0x1ab4 */ { false, 0x1ab4, 0x1ab4 }, /* 0x1ab5 */ { false, 0x1ab5, 0x1ab5 }, /* 0x1ab6 */ { false, 0x1ab6, 0x1ab6 }, /* 0x1ab7 */ { false, 0x1ab7, 0x1ab7 }, /* 0x1ab8 */ { false, 0x1ab8, 0x1ab8 }, /* 0x1ab9 */ { false, 0x1ab9, 0x1ab9 }, /* 0x1aba */ { false, 0x1aba, 0x1aba }, /* 0x1abb */ { false, 0x1abb, 0x1abb }, /* 0x1abc */ { false, 0x1abc, 0x1abc }, /* 0x1abd */ { false, 0x1abd, 0x1abd }, /* 0x1abe */ { false, 0x1abe, 0x1abe }, /* 0x1abf */ { false, 0x1abf, 0x1abf }, /* 0x1ac0 */ { false, 0x1ac0, 0x1ac0 }, /* 0x1ac1 */ { false, 0x1ac1, 0x1ac1 }, /* 0x1ac2 */ { false, 0x1ac2, 0x1ac2 }, /* 0x1ac3 */ { false, 0x1ac3, 0x1ac3 }, /* 0x1ac4 */ { false, 0x1ac4, 0x1ac4 }, /* 0x1ac5 */ { false, 0x1ac5, 0x1ac5 }, /* 0x1ac6 */ { false, 0x1ac6, 0x1ac6 }, /* 0x1ac7 */ { false, 0x1ac7, 0x1ac7 }, /* 0x1ac8 */ { false, 0x1ac8, 0x1ac8 }, /* 0x1ac9 */ { false, 0x1ac9, 0x1ac9 }, /* 0x1aca */ { false, 0x1aca, 0x1aca }, /* 0x1acb */ { false, 0x1acb, 0x1acb }, /* 0x1acc */ { false, 0x1acc, 0x1acc }, /* 0x1acd */ { false, 0x1acd, 0x1acd }, /* 0x1ace */ { false, 0x1ace, 0x1ace }, /* 0x1acf */ { false, 0x1acf, 0x1acf }, /* 0x1ad0 */ { false, 0x1ad0, 0x1ad0 }, /* 0x1ad1 */ { false, 0x1ad1, 0x1ad1 }, /* 0x1ad2 */ { false, 0x1ad2, 0x1ad2 }, /* 0x1ad3 */ { false, 0x1ad3, 0x1ad3 }, /* 0x1ad4 */ { false, 0x1ad4, 0x1ad4 }, /* 0x1ad5 */ { false, 0x1ad5, 0x1ad5 }, /* 0x1ad6 */ { false, 0x1ad6, 0x1ad6 }, /* 0x1ad7 */ { false, 0x1ad7, 0x1ad7 }, /* 0x1ad8 */ { false, 0x1ad8, 0x1ad8 }, /* 0x1ad9 */ { false, 0x1ad9, 0x1ad9 }, /* 0x1ada */ { false, 0x1ada, 0x1ada }, /* 0x1adb */ { false, 0x1adb, 0x1adb }, /* 0x1adc */ { false, 0x1adc, 0x1adc }, /* 0x1add */ { false, 0x1add, 0x1add }, /* 0x1ade */ { false, 0x1ade, 0x1ade }, /* 0x1adf */ { false, 0x1adf, 0x1adf }, /* 0x1ae0 */ { false, 0x1ae0, 0x1ae0 }, /* 0x1ae1 */ { false, 0x1ae1, 0x1ae1 }, /* 0x1ae2 */ { false, 0x1ae2, 0x1ae2 }, /* 0x1ae3 */ { false, 0x1ae3, 0x1ae3 }, /* 0x1ae4 */ { false, 0x1ae4, 0x1ae4 }, /* 0x1ae5 */ { false, 0x1ae5, 0x1ae5 }, /* 0x1ae6 */ { false, 0x1ae6, 0x1ae6 }, /* 0x1ae7 */ { false, 0x1ae7, 0x1ae7 }, /* 0x1ae8 */ { false, 0x1ae8, 0x1ae8 }, /* 0x1ae9 */ { false, 0x1ae9, 0x1ae9 }, /* 0x1aea */ { false, 0x1aea, 0x1aea }, /* 0x1aeb */ { false, 0x1aeb, 0x1aeb }, /* 0x1aec */ { false, 0x1aec, 0x1aec }, /* 0x1aed */ { false, 0x1aed, 0x1aed }, /* 0x1aee */ { false, 0x1aee, 0x1aee }, /* 0x1aef */ { false, 0x1aef, 0x1aef }, /* 0x1af0 */ { false, 0x1af0, 0x1af0 }, /* 0x1af1 */ { false, 0x1af1, 0x1af1 }, /* 0x1af2 */ { false, 0x1af2, 0x1af2 }, /* 0x1af3 */ { false, 0x1af3, 0x1af3 }, /* 0x1af4 */ { false, 0x1af4, 0x1af4 }, /* 0x1af5 */ { false, 0x1af5, 0x1af5 }, /* 0x1af6 */ { false, 0x1af6, 0x1af6 }, /* 0x1af7 */ { false, 0x1af7, 0x1af7 }, /* 0x1af8 */ { false, 0x1af8, 0x1af8 }, /* 0x1af9 */ { false, 0x1af9, 0x1af9 }, /* 0x1afa */ { false, 0x1afa, 0x1afa }, /* 0x1afb */ { false, 0x1afb, 0x1afb }, /* 0x1afc */ { false, 0x1afc, 0x1afc }, /* 0x1afd */ { false, 0x1afd, 0x1afd }, /* 0x1afe */ { false, 0x1afe, 0x1afe }, /* 0x1aff */ { false, 0x1aff, 0x1aff }, /* 0x1b00 */ { false, 0x1b00, 0x1b00 }, /* 0x1b01 */ { false, 0x1b01, 0x1b01 }, /* 0x1b02 */ { false, 0x1b02, 0x1b02 }, /* 0x1b03 */ { false, 0x1b03, 0x1b03 }, /* 0x1b04 */ { false, 0x1b04, 0x1b04 }, /* 0x1b05 */ { false, 0x1b05, 0x1b05 }, /* 0x1b06 */ { false, 0x1b06, 0x1b06 }, /* 0x1b07 */ { false, 0x1b07, 0x1b07 }, /* 0x1b08 */ { false, 0x1b08, 0x1b08 }, /* 0x1b09 */ { false, 0x1b09, 0x1b09 }, /* 0x1b0a */ { false, 0x1b0a, 0x1b0a }, /* 0x1b0b */ { false, 0x1b0b, 0x1b0b }, /* 0x1b0c */ { false, 0x1b0c, 0x1b0c }, /* 0x1b0d */ { false, 0x1b0d, 0x1b0d }, /* 0x1b0e */ { false, 0x1b0e, 0x1b0e }, /* 0x1b0f */ { false, 0x1b0f, 0x1b0f }, /* 0x1b10 */ { false, 0x1b10, 0x1b10 }, /* 0x1b11 */ { false, 0x1b11, 0x1b11 }, /* 0x1b12 */ { false, 0x1b12, 0x1b12 }, /* 0x1b13 */ { false, 0x1b13, 0x1b13 }, /* 0x1b14 */ { false, 0x1b14, 0x1b14 }, /* 0x1b15 */ { false, 0x1b15, 0x1b15 }, /* 0x1b16 */ { false, 0x1b16, 0x1b16 }, /* 0x1b17 */ { false, 0x1b17, 0x1b17 }, /* 0x1b18 */ { false, 0x1b18, 0x1b18 }, /* 0x1b19 */ { false, 0x1b19, 0x1b19 }, /* 0x1b1a */ { false, 0x1b1a, 0x1b1a }, /* 0x1b1b */ { false, 0x1b1b, 0x1b1b }, /* 0x1b1c */ { false, 0x1b1c, 0x1b1c }, /* 0x1b1d */ { false, 0x1b1d, 0x1b1d }, /* 0x1b1e */ { false, 0x1b1e, 0x1b1e }, /* 0x1b1f */ { false, 0x1b1f, 0x1b1f }, /* 0x1b20 */ { false, 0x1b20, 0x1b20 }, /* 0x1b21 */ { false, 0x1b21, 0x1b21 }, /* 0x1b22 */ { false, 0x1b22, 0x1b22 }, /* 0x1b23 */ { false, 0x1b23, 0x1b23 }, /* 0x1b24 */ { false, 0x1b24, 0x1b24 }, /* 0x1b25 */ { false, 0x1b25, 0x1b25 }, /* 0x1b26 */ { false, 0x1b26, 0x1b26 }, /* 0x1b27 */ { false, 0x1b27, 0x1b27 }, /* 0x1b28 */ { false, 0x1b28, 0x1b28 }, /* 0x1b29 */ { false, 0x1b29, 0x1b29 }, /* 0x1b2a */ { false, 0x1b2a, 0x1b2a }, /* 0x1b2b */ { false, 0x1b2b, 0x1b2b }, /* 0x1b2c */ { false, 0x1b2c, 0x1b2c }, /* 0x1b2d */ { false, 0x1b2d, 0x1b2d }, /* 0x1b2e */ { false, 0x1b2e, 0x1b2e }, /* 0x1b2f */ { false, 0x1b2f, 0x1b2f }, /* 0x1b30 */ { false, 0x1b30, 0x1b30 }, /* 0x1b31 */ { false, 0x1b31, 0x1b31 }, /* 0x1b32 */ { false, 0x1b32, 0x1b32 }, /* 0x1b33 */ { false, 0x1b33, 0x1b33 }, /* 0x1b34 */ { false, 0x1b34, 0x1b34 }, /* 0x1b35 */ { false, 0x1b35, 0x1b35 }, /* 0x1b36 */ { false, 0x1b36, 0x1b36 }, /* 0x1b37 */ { false, 0x1b37, 0x1b37 }, /* 0x1b38 */ { false, 0x1b38, 0x1b38 }, /* 0x1b39 */ { false, 0x1b39, 0x1b39 }, /* 0x1b3a */ { false, 0x1b3a, 0x1b3a }, /* 0x1b3b */ { false, 0x1b3b, 0x1b3b }, /* 0x1b3c */ { false, 0x1b3c, 0x1b3c }, /* 0x1b3d */ { false, 0x1b3d, 0x1b3d }, /* 0x1b3e */ { false, 0x1b3e, 0x1b3e }, /* 0x1b3f */ { false, 0x1b3f, 0x1b3f }, /* 0x1b40 */ { false, 0x1b40, 0x1b40 }, /* 0x1b41 */ { false, 0x1b41, 0x1b41 }, /* 0x1b42 */ { false, 0x1b42, 0x1b42 }, /* 0x1b43 */ { false, 0x1b43, 0x1b43 }, /* 0x1b44 */ { false, 0x1b44, 0x1b44 }, /* 0x1b45 */ { false, 0x1b45, 0x1b45 }, /* 0x1b46 */ { false, 0x1b46, 0x1b46 }, /* 0x1b47 */ { false, 0x1b47, 0x1b47 }, /* 0x1b48 */ { false, 0x1b48, 0x1b48 }, /* 0x1b49 */ { false, 0x1b49, 0x1b49 }, /* 0x1b4a */ { false, 0x1b4a, 0x1b4a }, /* 0x1b4b */ { false, 0x1b4b, 0x1b4b }, /* 0x1b4c */ { false, 0x1b4c, 0x1b4c }, /* 0x1b4d */ { false, 0x1b4d, 0x1b4d }, /* 0x1b4e */ { false, 0x1b4e, 0x1b4e }, /* 0x1b4f */ { false, 0x1b4f, 0x1b4f }, /* 0x1b50 */ { false, 0x1b50, 0x1b50 }, /* 0x1b51 */ { false, 0x1b51, 0x1b51 }, /* 0x1b52 */ { false, 0x1b52, 0x1b52 }, /* 0x1b53 */ { false, 0x1b53, 0x1b53 }, /* 0x1b54 */ { false, 0x1b54, 0x1b54 }, /* 0x1b55 */ { false, 0x1b55, 0x1b55 }, /* 0x1b56 */ { false, 0x1b56, 0x1b56 }, /* 0x1b57 */ { false, 0x1b57, 0x1b57 }, /* 0x1b58 */ { false, 0x1b58, 0x1b58 }, /* 0x1b59 */ { false, 0x1b59, 0x1b59 }, /* 0x1b5a */ { false, 0x1b5a, 0x1b5a }, /* 0x1b5b */ { false, 0x1b5b, 0x1b5b }, /* 0x1b5c */ { false, 0x1b5c, 0x1b5c }, /* 0x1b5d */ { false, 0x1b5d, 0x1b5d }, /* 0x1b5e */ { false, 0x1b5e, 0x1b5e }, /* 0x1b5f */ { false, 0x1b5f, 0x1b5f }, /* 0x1b60 */ { false, 0x1b60, 0x1b60 }, /* 0x1b61 */ { false, 0x1b61, 0x1b61 }, /* 0x1b62 */ { false, 0x1b62, 0x1b62 }, /* 0x1b63 */ { false, 0x1b63, 0x1b63 }, /* 0x1b64 */ { false, 0x1b64, 0x1b64 }, /* 0x1b65 */ { false, 0x1b65, 0x1b65 }, /* 0x1b66 */ { false, 0x1b66, 0x1b66 }, /* 0x1b67 */ { false, 0x1b67, 0x1b67 }, /* 0x1b68 */ { false, 0x1b68, 0x1b68 }, /* 0x1b69 */ { false, 0x1b69, 0x1b69 }, /* 0x1b6a */ { false, 0x1b6a, 0x1b6a }, /* 0x1b6b */ { false, 0x1b6b, 0x1b6b }, /* 0x1b6c */ { false, 0x1b6c, 0x1b6c }, /* 0x1b6d */ { false, 0x1b6d, 0x1b6d }, /* 0x1b6e */ { false, 0x1b6e, 0x1b6e }, /* 0x1b6f */ { false, 0x1b6f, 0x1b6f }, /* 0x1b70 */ { false, 0x1b70, 0x1b70 }, /* 0x1b71 */ { false, 0x1b71, 0x1b71 }, /* 0x1b72 */ { false, 0x1b72, 0x1b72 }, /* 0x1b73 */ { false, 0x1b73, 0x1b73 }, /* 0x1b74 */ { false, 0x1b74, 0x1b74 }, /* 0x1b75 */ { false, 0x1b75, 0x1b75 }, /* 0x1b76 */ { false, 0x1b76, 0x1b76 }, /* 0x1b77 */ { false, 0x1b77, 0x1b77 }, /* 0x1b78 */ { false, 0x1b78, 0x1b78 }, /* 0x1b79 */ { false, 0x1b79, 0x1b79 }, /* 0x1b7a */ { false, 0x1b7a, 0x1b7a }, /* 0x1b7b */ { false, 0x1b7b, 0x1b7b }, /* 0x1b7c */ { false, 0x1b7c, 0x1b7c }, /* 0x1b7d */ { false, 0x1b7d, 0x1b7d }, /* 0x1b7e */ { false, 0x1b7e, 0x1b7e }, /* 0x1b7f */ { false, 0x1b7f, 0x1b7f }, /* 0x1b80 */ { false, 0x1b80, 0x1b80 }, /* 0x1b81 */ { false, 0x1b81, 0x1b81 }, /* 0x1b82 */ { false, 0x1b82, 0x1b82 }, /* 0x1b83 */ { false, 0x1b83, 0x1b83 }, /* 0x1b84 */ { false, 0x1b84, 0x1b84 }, /* 0x1b85 */ { false, 0x1b85, 0x1b85 }, /* 0x1b86 */ { false, 0x1b86, 0x1b86 }, /* 0x1b87 */ { false, 0x1b87, 0x1b87 }, /* 0x1b88 */ { false, 0x1b88, 0x1b88 }, /* 0x1b89 */ { false, 0x1b89, 0x1b89 }, /* 0x1b8a */ { false, 0x1b8a, 0x1b8a }, /* 0x1b8b */ { false, 0x1b8b, 0x1b8b }, /* 0x1b8c */ { false, 0x1b8c, 0x1b8c }, /* 0x1b8d */ { false, 0x1b8d, 0x1b8d }, /* 0x1b8e */ { false, 0x1b8e, 0x1b8e }, /* 0x1b8f */ { false, 0x1b8f, 0x1b8f }, /* 0x1b90 */ { false, 0x1b90, 0x1b90 }, /* 0x1b91 */ { false, 0x1b91, 0x1b91 }, /* 0x1b92 */ { false, 0x1b92, 0x1b92 }, /* 0x1b93 */ { false, 0x1b93, 0x1b93 }, /* 0x1b94 */ { false, 0x1b94, 0x1b94 }, /* 0x1b95 */ { false, 0x1b95, 0x1b95 }, /* 0x1b96 */ { false, 0x1b96, 0x1b96 }, /* 0x1b97 */ { false, 0x1b97, 0x1b97 }, /* 0x1b98 */ { false, 0x1b98, 0x1b98 }, /* 0x1b99 */ { false, 0x1b99, 0x1b99 }, /* 0x1b9a */ { false, 0x1b9a, 0x1b9a }, /* 0x1b9b */ { false, 0x1b9b, 0x1b9b }, /* 0x1b9c */ { false, 0x1b9c, 0x1b9c }, /* 0x1b9d */ { false, 0x1b9d, 0x1b9d }, /* 0x1b9e */ { false, 0x1b9e, 0x1b9e }, /* 0x1b9f */ { false, 0x1b9f, 0x1b9f }, /* 0x1ba0 */ { false, 0x1ba0, 0x1ba0 }, /* 0x1ba1 */ { false, 0x1ba1, 0x1ba1 }, /* 0x1ba2 */ { false, 0x1ba2, 0x1ba2 }, /* 0x1ba3 */ { false, 0x1ba3, 0x1ba3 }, /* 0x1ba4 */ { false, 0x1ba4, 0x1ba4 }, /* 0x1ba5 */ { false, 0x1ba5, 0x1ba5 }, /* 0x1ba6 */ { false, 0x1ba6, 0x1ba6 }, /* 0x1ba7 */ { false, 0x1ba7, 0x1ba7 }, /* 0x1ba8 */ { false, 0x1ba8, 0x1ba8 }, /* 0x1ba9 */ { false, 0x1ba9, 0x1ba9 }, /* 0x1baa */ { false, 0x1baa, 0x1baa }, /* 0x1bab */ { false, 0x1bab, 0x1bab }, /* 0x1bac */ { false, 0x1bac, 0x1bac }, /* 0x1bad */ { false, 0x1bad, 0x1bad }, /* 0x1bae */ { false, 0x1bae, 0x1bae }, /* 0x1baf */ { false, 0x1baf, 0x1baf }, /* 0x1bb0 */ { false, 0x1bb0, 0x1bb0 }, /* 0x1bb1 */ { false, 0x1bb1, 0x1bb1 }, /* 0x1bb2 */ { false, 0x1bb2, 0x1bb2 }, /* 0x1bb3 */ { false, 0x1bb3, 0x1bb3 }, /* 0x1bb4 */ { false, 0x1bb4, 0x1bb4 }, /* 0x1bb5 */ { false, 0x1bb5, 0x1bb5 }, /* 0x1bb6 */ { false, 0x1bb6, 0x1bb6 }, /* 0x1bb7 */ { false, 0x1bb7, 0x1bb7 }, /* 0x1bb8 */ { false, 0x1bb8, 0x1bb8 }, /* 0x1bb9 */ { false, 0x1bb9, 0x1bb9 }, /* 0x1bba */ { false, 0x1bba, 0x1bba }, /* 0x1bbb */ { false, 0x1bbb, 0x1bbb }, /* 0x1bbc */ { false, 0x1bbc, 0x1bbc }, /* 0x1bbd */ { false, 0x1bbd, 0x1bbd }, /* 0x1bbe */ { false, 0x1bbe, 0x1bbe }, /* 0x1bbf */ { false, 0x1bbf, 0x1bbf }, /* 0x1bc0 */ { false, 0x1bc0, 0x1bc0 }, /* 0x1bc1 */ { false, 0x1bc1, 0x1bc1 }, /* 0x1bc2 */ { false, 0x1bc2, 0x1bc2 }, /* 0x1bc3 */ { false, 0x1bc3, 0x1bc3 }, /* 0x1bc4 */ { false, 0x1bc4, 0x1bc4 }, /* 0x1bc5 */ { false, 0x1bc5, 0x1bc5 }, /* 0x1bc6 */ { false, 0x1bc6, 0x1bc6 }, /* 0x1bc7 */ { false, 0x1bc7, 0x1bc7 }, /* 0x1bc8 */ { false, 0x1bc8, 0x1bc8 }, /* 0x1bc9 */ { false, 0x1bc9, 0x1bc9 }, /* 0x1bca */ { false, 0x1bca, 0x1bca }, /* 0x1bcb */ { false, 0x1bcb, 0x1bcb }, /* 0x1bcc */ { false, 0x1bcc, 0x1bcc }, /* 0x1bcd */ { false, 0x1bcd, 0x1bcd }, /* 0x1bce */ { false, 0x1bce, 0x1bce }, /* 0x1bcf */ { false, 0x1bcf, 0x1bcf }, /* 0x1bd0 */ { false, 0x1bd0, 0x1bd0 }, /* 0x1bd1 */ { false, 0x1bd1, 0x1bd1 }, /* 0x1bd2 */ { false, 0x1bd2, 0x1bd2 }, /* 0x1bd3 */ { false, 0x1bd3, 0x1bd3 }, /* 0x1bd4 */ { false, 0x1bd4, 0x1bd4 }, /* 0x1bd5 */ { false, 0x1bd5, 0x1bd5 }, /* 0x1bd6 */ { false, 0x1bd6, 0x1bd6 }, /* 0x1bd7 */ { false, 0x1bd7, 0x1bd7 }, /* 0x1bd8 */ { false, 0x1bd8, 0x1bd8 }, /* 0x1bd9 */ { false, 0x1bd9, 0x1bd9 }, /* 0x1bda */ { false, 0x1bda, 0x1bda }, /* 0x1bdb */ { false, 0x1bdb, 0x1bdb }, /* 0x1bdc */ { false, 0x1bdc, 0x1bdc }, /* 0x1bdd */ { false, 0x1bdd, 0x1bdd }, /* 0x1bde */ { false, 0x1bde, 0x1bde }, /* 0x1bdf */ { false, 0x1bdf, 0x1bdf }, /* 0x1be0 */ { false, 0x1be0, 0x1be0 }, /* 0x1be1 */ { false, 0x1be1, 0x1be1 }, /* 0x1be2 */ { false, 0x1be2, 0x1be2 }, /* 0x1be3 */ { false, 0x1be3, 0x1be3 }, /* 0x1be4 */ { false, 0x1be4, 0x1be4 }, /* 0x1be5 */ { false, 0x1be5, 0x1be5 }, /* 0x1be6 */ { false, 0x1be6, 0x1be6 }, /* 0x1be7 */ { false, 0x1be7, 0x1be7 }, /* 0x1be8 */ { false, 0x1be8, 0x1be8 }, /* 0x1be9 */ { false, 0x1be9, 0x1be9 }, /* 0x1bea */ { false, 0x1bea, 0x1bea }, /* 0x1beb */ { false, 0x1beb, 0x1beb }, /* 0x1bec */ { false, 0x1bec, 0x1bec }, /* 0x1bed */ { false, 0x1bed, 0x1bed }, /* 0x1bee */ { false, 0x1bee, 0x1bee }, /* 0x1bef */ { false, 0x1bef, 0x1bef }, /* 0x1bf0 */ { false, 0x1bf0, 0x1bf0 }, /* 0x1bf1 */ { false, 0x1bf1, 0x1bf1 }, /* 0x1bf2 */ { false, 0x1bf2, 0x1bf2 }, /* 0x1bf3 */ { false, 0x1bf3, 0x1bf3 }, /* 0x1bf4 */ { false, 0x1bf4, 0x1bf4 }, /* 0x1bf5 */ { false, 0x1bf5, 0x1bf5 }, /* 0x1bf6 */ { false, 0x1bf6, 0x1bf6 }, /* 0x1bf7 */ { false, 0x1bf7, 0x1bf7 }, /* 0x1bf8 */ { false, 0x1bf8, 0x1bf8 }, /* 0x1bf9 */ { false, 0x1bf9, 0x1bf9 }, /* 0x1bfa */ { false, 0x1bfa, 0x1bfa }, /* 0x1bfb */ { false, 0x1bfb, 0x1bfb }, /* 0x1bfc */ { false, 0x1bfc, 0x1bfc }, /* 0x1bfd */ { false, 0x1bfd, 0x1bfd }, /* 0x1bfe */ { false, 0x1bfe, 0x1bfe }, /* 0x1bff */ { false, 0x1bff, 0x1bff }, /* 0x1c00 */ { false, 0x1c00, 0x1c00 }, /* 0x1c01 */ { false, 0x1c01, 0x1c01 }, /* 0x1c02 */ { false, 0x1c02, 0x1c02 }, /* 0x1c03 */ { false, 0x1c03, 0x1c03 }, /* 0x1c04 */ { false, 0x1c04, 0x1c04 }, /* 0x1c05 */ { false, 0x1c05, 0x1c05 }, /* 0x1c06 */ { false, 0x1c06, 0x1c06 }, /* 0x1c07 */ { false, 0x1c07, 0x1c07 }, /* 0x1c08 */ { false, 0x1c08, 0x1c08 }, /* 0x1c09 */ { false, 0x1c09, 0x1c09 }, /* 0x1c0a */ { false, 0x1c0a, 0x1c0a }, /* 0x1c0b */ { false, 0x1c0b, 0x1c0b }, /* 0x1c0c */ { false, 0x1c0c, 0x1c0c }, /* 0x1c0d */ { false, 0x1c0d, 0x1c0d }, /* 0x1c0e */ { false, 0x1c0e, 0x1c0e }, /* 0x1c0f */ { false, 0x1c0f, 0x1c0f }, /* 0x1c10 */ { false, 0x1c10, 0x1c10 }, /* 0x1c11 */ { false, 0x1c11, 0x1c11 }, /* 0x1c12 */ { false, 0x1c12, 0x1c12 }, /* 0x1c13 */ { false, 0x1c13, 0x1c13 }, /* 0x1c14 */ { false, 0x1c14, 0x1c14 }, /* 0x1c15 */ { false, 0x1c15, 0x1c15 }, /* 0x1c16 */ { false, 0x1c16, 0x1c16 }, /* 0x1c17 */ { false, 0x1c17, 0x1c17 }, /* 0x1c18 */ { false, 0x1c18, 0x1c18 }, /* 0x1c19 */ { false, 0x1c19, 0x1c19 }, /* 0x1c1a */ { false, 0x1c1a, 0x1c1a }, /* 0x1c1b */ { false, 0x1c1b, 0x1c1b }, /* 0x1c1c */ { false, 0x1c1c, 0x1c1c }, /* 0x1c1d */ { false, 0x1c1d, 0x1c1d }, /* 0x1c1e */ { false, 0x1c1e, 0x1c1e }, /* 0x1c1f */ { false, 0x1c1f, 0x1c1f }, /* 0x1c20 */ { false, 0x1c20, 0x1c20 }, /* 0x1c21 */ { false, 0x1c21, 0x1c21 }, /* 0x1c22 */ { false, 0x1c22, 0x1c22 }, /* 0x1c23 */ { false, 0x1c23, 0x1c23 }, /* 0x1c24 */ { false, 0x1c24, 0x1c24 }, /* 0x1c25 */ { false, 0x1c25, 0x1c25 }, /* 0x1c26 */ { false, 0x1c26, 0x1c26 }, /* 0x1c27 */ { false, 0x1c27, 0x1c27 }, /* 0x1c28 */ { false, 0x1c28, 0x1c28 }, /* 0x1c29 */ { false, 0x1c29, 0x1c29 }, /* 0x1c2a */ { false, 0x1c2a, 0x1c2a }, /* 0x1c2b */ { false, 0x1c2b, 0x1c2b }, /* 0x1c2c */ { false, 0x1c2c, 0x1c2c }, /* 0x1c2d */ { false, 0x1c2d, 0x1c2d }, /* 0x1c2e */ { false, 0x1c2e, 0x1c2e }, /* 0x1c2f */ { false, 0x1c2f, 0x1c2f }, /* 0x1c30 */ { false, 0x1c30, 0x1c30 }, /* 0x1c31 */ { false, 0x1c31, 0x1c31 }, /* 0x1c32 */ { false, 0x1c32, 0x1c32 }, /* 0x1c33 */ { false, 0x1c33, 0x1c33 }, /* 0x1c34 */ { false, 0x1c34, 0x1c34 }, /* 0x1c35 */ { false, 0x1c35, 0x1c35 }, /* 0x1c36 */ { false, 0x1c36, 0x1c36 }, /* 0x1c37 */ { false, 0x1c37, 0x1c37 }, /* 0x1c38 */ { false, 0x1c38, 0x1c38 }, /* 0x1c39 */ { false, 0x1c39, 0x1c39 }, /* 0x1c3a */ { false, 0x1c3a, 0x1c3a }, /* 0x1c3b */ { false, 0x1c3b, 0x1c3b }, /* 0x1c3c */ { false, 0x1c3c, 0x1c3c }, /* 0x1c3d */ { false, 0x1c3d, 0x1c3d }, /* 0x1c3e */ { false, 0x1c3e, 0x1c3e }, /* 0x1c3f */ { false, 0x1c3f, 0x1c3f }, /* 0x1c40 */ { false, 0x1c40, 0x1c40 }, /* 0x1c41 */ { false, 0x1c41, 0x1c41 }, /* 0x1c42 */ { false, 0x1c42, 0x1c42 }, /* 0x1c43 */ { false, 0x1c43, 0x1c43 }, /* 0x1c44 */ { false, 0x1c44, 0x1c44 }, /* 0x1c45 */ { false, 0x1c45, 0x1c45 }, /* 0x1c46 */ { false, 0x1c46, 0x1c46 }, /* 0x1c47 */ { false, 0x1c47, 0x1c47 }, /* 0x1c48 */ { false, 0x1c48, 0x1c48 }, /* 0x1c49 */ { false, 0x1c49, 0x1c49 }, /* 0x1c4a */ { false, 0x1c4a, 0x1c4a }, /* 0x1c4b */ { false, 0x1c4b, 0x1c4b }, /* 0x1c4c */ { false, 0x1c4c, 0x1c4c }, /* 0x1c4d */ { false, 0x1c4d, 0x1c4d }, /* 0x1c4e */ { false, 0x1c4e, 0x1c4e }, /* 0x1c4f */ { false, 0x1c4f, 0x1c4f }, /* 0x1c50 */ { false, 0x1c50, 0x1c50 }, /* 0x1c51 */ { false, 0x1c51, 0x1c51 }, /* 0x1c52 */ { false, 0x1c52, 0x1c52 }, /* 0x1c53 */ { false, 0x1c53, 0x1c53 }, /* 0x1c54 */ { false, 0x1c54, 0x1c54 }, /* 0x1c55 */ { false, 0x1c55, 0x1c55 }, /* 0x1c56 */ { false, 0x1c56, 0x1c56 }, /* 0x1c57 */ { false, 0x1c57, 0x1c57 }, /* 0x1c58 */ { false, 0x1c58, 0x1c58 }, /* 0x1c59 */ { false, 0x1c59, 0x1c59 }, /* 0x1c5a */ { false, 0x1c5a, 0x1c5a }, /* 0x1c5b */ { false, 0x1c5b, 0x1c5b }, /* 0x1c5c */ { false, 0x1c5c, 0x1c5c }, /* 0x1c5d */ { false, 0x1c5d, 0x1c5d }, /* 0x1c5e */ { false, 0x1c5e, 0x1c5e }, /* 0x1c5f */ { false, 0x1c5f, 0x1c5f }, /* 0x1c60 */ { false, 0x1c60, 0x1c60 }, /* 0x1c61 */ { false, 0x1c61, 0x1c61 }, /* 0x1c62 */ { false, 0x1c62, 0x1c62 }, /* 0x1c63 */ { false, 0x1c63, 0x1c63 }, /* 0x1c64 */ { false, 0x1c64, 0x1c64 }, /* 0x1c65 */ { false, 0x1c65, 0x1c65 }, /* 0x1c66 */ { false, 0x1c66, 0x1c66 }, /* 0x1c67 */ { false, 0x1c67, 0x1c67 }, /* 0x1c68 */ { false, 0x1c68, 0x1c68 }, /* 0x1c69 */ { false, 0x1c69, 0x1c69 }, /* 0x1c6a */ { false, 0x1c6a, 0x1c6a }, /* 0x1c6b */ { false, 0x1c6b, 0x1c6b }, /* 0x1c6c */ { false, 0x1c6c, 0x1c6c }, /* 0x1c6d */ { false, 0x1c6d, 0x1c6d }, /* 0x1c6e */ { false, 0x1c6e, 0x1c6e }, /* 0x1c6f */ { false, 0x1c6f, 0x1c6f }, /* 0x1c70 */ { false, 0x1c70, 0x1c70 }, /* 0x1c71 */ { false, 0x1c71, 0x1c71 }, /* 0x1c72 */ { false, 0x1c72, 0x1c72 }, /* 0x1c73 */ { false, 0x1c73, 0x1c73 }, /* 0x1c74 */ { false, 0x1c74, 0x1c74 }, /* 0x1c75 */ { false, 0x1c75, 0x1c75 }, /* 0x1c76 */ { false, 0x1c76, 0x1c76 }, /* 0x1c77 */ { false, 0x1c77, 0x1c77 }, /* 0x1c78 */ { false, 0x1c78, 0x1c78 }, /* 0x1c79 */ { false, 0x1c79, 0x1c79 }, /* 0x1c7a */ { false, 0x1c7a, 0x1c7a }, /* 0x1c7b */ { false, 0x1c7b, 0x1c7b }, /* 0x1c7c */ { false, 0x1c7c, 0x1c7c }, /* 0x1c7d */ { false, 0x1c7d, 0x1c7d }, /* 0x1c7e */ { false, 0x1c7e, 0x1c7e }, /* 0x1c7f */ { false, 0x1c7f, 0x1c7f }, /* 0x1c80 */ { false, 0x1c80, 0x1c80 }, /* 0x1c81 */ { false, 0x1c81, 0x1c81 }, /* 0x1c82 */ { false, 0x1c82, 0x1c82 }, /* 0x1c83 */ { false, 0x1c83, 0x1c83 }, /* 0x1c84 */ { false, 0x1c84, 0x1c84 }, /* 0x1c85 */ { false, 0x1c85, 0x1c85 }, /* 0x1c86 */ { false, 0x1c86, 0x1c86 }, /* 0x1c87 */ { false, 0x1c87, 0x1c87 }, /* 0x1c88 */ { false, 0x1c88, 0x1c88 }, /* 0x1c89 */ { false, 0x1c89, 0x1c89 }, /* 0x1c8a */ { false, 0x1c8a, 0x1c8a }, /* 0x1c8b */ { false, 0x1c8b, 0x1c8b }, /* 0x1c8c */ { false, 0x1c8c, 0x1c8c }, /* 0x1c8d */ { false, 0x1c8d, 0x1c8d }, /* 0x1c8e */ { false, 0x1c8e, 0x1c8e }, /* 0x1c8f */ { false, 0x1c8f, 0x1c8f }, /* 0x1c90 */ { false, 0x1c90, 0x1c90 }, /* 0x1c91 */ { false, 0x1c91, 0x1c91 }, /* 0x1c92 */ { false, 0x1c92, 0x1c92 }, /* 0x1c93 */ { false, 0x1c93, 0x1c93 }, /* 0x1c94 */ { false, 0x1c94, 0x1c94 }, /* 0x1c95 */ { false, 0x1c95, 0x1c95 }, /* 0x1c96 */ { false, 0x1c96, 0x1c96 }, /* 0x1c97 */ { false, 0x1c97, 0x1c97 }, /* 0x1c98 */ { false, 0x1c98, 0x1c98 }, /* 0x1c99 */ { false, 0x1c99, 0x1c99 }, /* 0x1c9a */ { false, 0x1c9a, 0x1c9a }, /* 0x1c9b */ { false, 0x1c9b, 0x1c9b }, /* 0x1c9c */ { false, 0x1c9c, 0x1c9c }, /* 0x1c9d */ { false, 0x1c9d, 0x1c9d }, /* 0x1c9e */ { false, 0x1c9e, 0x1c9e }, /* 0x1c9f */ { false, 0x1c9f, 0x1c9f }, /* 0x1ca0 */ { false, 0x1ca0, 0x1ca0 }, /* 0x1ca1 */ { false, 0x1ca1, 0x1ca1 }, /* 0x1ca2 */ { false, 0x1ca2, 0x1ca2 }, /* 0x1ca3 */ { false, 0x1ca3, 0x1ca3 }, /* 0x1ca4 */ { false, 0x1ca4, 0x1ca4 }, /* 0x1ca5 */ { false, 0x1ca5, 0x1ca5 }, /* 0x1ca6 */ { false, 0x1ca6, 0x1ca6 }, /* 0x1ca7 */ { false, 0x1ca7, 0x1ca7 }, /* 0x1ca8 */ { false, 0x1ca8, 0x1ca8 }, /* 0x1ca9 */ { false, 0x1ca9, 0x1ca9 }, /* 0x1caa */ { false, 0x1caa, 0x1caa }, /* 0x1cab */ { false, 0x1cab, 0x1cab }, /* 0x1cac */ { false, 0x1cac, 0x1cac }, /* 0x1cad */ { false, 0x1cad, 0x1cad }, /* 0x1cae */ { false, 0x1cae, 0x1cae }, /* 0x1caf */ { false, 0x1caf, 0x1caf }, /* 0x1cb0 */ { false, 0x1cb0, 0x1cb0 }, /* 0x1cb1 */ { false, 0x1cb1, 0x1cb1 }, /* 0x1cb2 */ { false, 0x1cb2, 0x1cb2 }, /* 0x1cb3 */ { false, 0x1cb3, 0x1cb3 }, /* 0x1cb4 */ { false, 0x1cb4, 0x1cb4 }, /* 0x1cb5 */ { false, 0x1cb5, 0x1cb5 }, /* 0x1cb6 */ { false, 0x1cb6, 0x1cb6 }, /* 0x1cb7 */ { false, 0x1cb7, 0x1cb7 }, /* 0x1cb8 */ { false, 0x1cb8, 0x1cb8 }, /* 0x1cb9 */ { false, 0x1cb9, 0x1cb9 }, /* 0x1cba */ { false, 0x1cba, 0x1cba }, /* 0x1cbb */ { false, 0x1cbb, 0x1cbb }, /* 0x1cbc */ { false, 0x1cbc, 0x1cbc }, /* 0x1cbd */ { false, 0x1cbd, 0x1cbd }, /* 0x1cbe */ { false, 0x1cbe, 0x1cbe }, /* 0x1cbf */ { false, 0x1cbf, 0x1cbf }, /* 0x1cc0 */ { false, 0x1cc0, 0x1cc0 }, /* 0x1cc1 */ { false, 0x1cc1, 0x1cc1 }, /* 0x1cc2 */ { false, 0x1cc2, 0x1cc2 }, /* 0x1cc3 */ { false, 0x1cc3, 0x1cc3 }, /* 0x1cc4 */ { false, 0x1cc4, 0x1cc4 }, /* 0x1cc5 */ { false, 0x1cc5, 0x1cc5 }, /* 0x1cc6 */ { false, 0x1cc6, 0x1cc6 }, /* 0x1cc7 */ { false, 0x1cc7, 0x1cc7 }, /* 0x1cc8 */ { false, 0x1cc8, 0x1cc8 }, /* 0x1cc9 */ { false, 0x1cc9, 0x1cc9 }, /* 0x1cca */ { false, 0x1cca, 0x1cca }, /* 0x1ccb */ { false, 0x1ccb, 0x1ccb }, /* 0x1ccc */ { false, 0x1ccc, 0x1ccc }, /* 0x1ccd */ { false, 0x1ccd, 0x1ccd }, /* 0x1cce */ { false, 0x1cce, 0x1cce }, /* 0x1ccf */ { false, 0x1ccf, 0x1ccf }, /* 0x1cd0 */ { false, 0x1cd0, 0x1cd0 }, /* 0x1cd1 */ { false, 0x1cd1, 0x1cd1 }, /* 0x1cd2 */ { false, 0x1cd2, 0x1cd2 }, /* 0x1cd3 */ { false, 0x1cd3, 0x1cd3 }, /* 0x1cd4 */ { false, 0x1cd4, 0x1cd4 }, /* 0x1cd5 */ { false, 0x1cd5, 0x1cd5 }, /* 0x1cd6 */ { false, 0x1cd6, 0x1cd6 }, /* 0x1cd7 */ { false, 0x1cd7, 0x1cd7 }, /* 0x1cd8 */ { false, 0x1cd8, 0x1cd8 }, /* 0x1cd9 */ { false, 0x1cd9, 0x1cd9 }, /* 0x1cda */ { false, 0x1cda, 0x1cda }, /* 0x1cdb */ { false, 0x1cdb, 0x1cdb }, /* 0x1cdc */ { false, 0x1cdc, 0x1cdc }, /* 0x1cdd */ { false, 0x1cdd, 0x1cdd }, /* 0x1cde */ { false, 0x1cde, 0x1cde }, /* 0x1cdf */ { false, 0x1cdf, 0x1cdf }, /* 0x1ce0 */ { false, 0x1ce0, 0x1ce0 }, /* 0x1ce1 */ { false, 0x1ce1, 0x1ce1 }, /* 0x1ce2 */ { false, 0x1ce2, 0x1ce2 }, /* 0x1ce3 */ { false, 0x1ce3, 0x1ce3 }, /* 0x1ce4 */ { false, 0x1ce4, 0x1ce4 }, /* 0x1ce5 */ { false, 0x1ce5, 0x1ce5 }, /* 0x1ce6 */ { false, 0x1ce6, 0x1ce6 }, /* 0x1ce7 */ { false, 0x1ce7, 0x1ce7 }, /* 0x1ce8 */ { false, 0x1ce8, 0x1ce8 }, /* 0x1ce9 */ { false, 0x1ce9, 0x1ce9 }, /* 0x1cea */ { false, 0x1cea, 0x1cea }, /* 0x1ceb */ { false, 0x1ceb, 0x1ceb }, /* 0x1cec */ { false, 0x1cec, 0x1cec }, /* 0x1ced */ { false, 0x1ced, 0x1ced }, /* 0x1cee */ { false, 0x1cee, 0x1cee }, /* 0x1cef */ { false, 0x1cef, 0x1cef }, /* 0x1cf0 */ { false, 0x1cf0, 0x1cf0 }, /* 0x1cf1 */ { false, 0x1cf1, 0x1cf1 }, /* 0x1cf2 */ { false, 0x1cf2, 0x1cf2 }, /* 0x1cf3 */ { false, 0x1cf3, 0x1cf3 }, /* 0x1cf4 */ { false, 0x1cf4, 0x1cf4 }, /* 0x1cf5 */ { false, 0x1cf5, 0x1cf5 }, /* 0x1cf6 */ { false, 0x1cf6, 0x1cf6 }, /* 0x1cf7 */ { false, 0x1cf7, 0x1cf7 }, /* 0x1cf8 */ { false, 0x1cf8, 0x1cf8 }, /* 0x1cf9 */ { false, 0x1cf9, 0x1cf9 }, /* 0x1cfa */ { false, 0x1cfa, 0x1cfa }, /* 0x1cfb */ { false, 0x1cfb, 0x1cfb }, /* 0x1cfc */ { false, 0x1cfc, 0x1cfc }, /* 0x1cfd */ { false, 0x1cfd, 0x1cfd }, /* 0x1cfe */ { false, 0x1cfe, 0x1cfe }, /* 0x1cff */ { false, 0x1cff, 0x1cff }, /* 0x1d00 */ { true, 0x1d00, 0x1d00 }, /* 0x1d01 */ { true, 0x1d01, 0x1d01 }, /* 0x1d02 */ { true, 0x1d02, 0x1d02 }, /* 0x1d03 */ { true, 0x1d03, 0x1d03 }, /* 0x1d04 */ { true, 0x1d04, 0x1d04 }, /* 0x1d05 */ { true, 0x1d05, 0x1d05 }, /* 0x1d06 */ { true, 0x1d06, 0x1d06 }, /* 0x1d07 */ { true, 0x1d07, 0x1d07 }, /* 0x1d08 */ { true, 0x1d08, 0x1d08 }, /* 0x1d09 */ { true, 0x1d09, 0x1d09 }, /* 0x1d0a */ { true, 0x1d0a, 0x1d0a }, /* 0x1d0b */ { true, 0x1d0b, 0x1d0b }, /* 0x1d0c */ { true, 0x1d0c, 0x1d0c }, /* 0x1d0d */ { true, 0x1d0d, 0x1d0d }, /* 0x1d0e */ { true, 0x1d0e, 0x1d0e }, /* 0x1d0f */ { true, 0x1d0f, 0x1d0f }, /* 0x1d10 */ { true, 0x1d10, 0x1d10 }, /* 0x1d11 */ { true, 0x1d11, 0x1d11 }, /* 0x1d12 */ { true, 0x1d12, 0x1d12 }, /* 0x1d13 */ { true, 0x1d13, 0x1d13 }, /* 0x1d14 */ { true, 0x1d14, 0x1d14 }, /* 0x1d15 */ { true, 0x1d15, 0x1d15 }, /* 0x1d16 */ { true, 0x1d16, 0x1d16 }, /* 0x1d17 */ { true, 0x1d17, 0x1d17 }, /* 0x1d18 */ { true, 0x1d18, 0x1d18 }, /* 0x1d19 */ { true, 0x1d19, 0x1d19 }, /* 0x1d1a */ { true, 0x1d1a, 0x1d1a }, /* 0x1d1b */ { true, 0x1d1b, 0x1d1b }, /* 0x1d1c */ { true, 0x1d1c, 0x1d1c }, /* 0x1d1d */ { true, 0x1d1d, 0x1d1d }, /* 0x1d1e */ { true, 0x1d1e, 0x1d1e }, /* 0x1d1f */ { true, 0x1d1f, 0x1d1f }, /* 0x1d20 */ { true, 0x1d20, 0x1d20 }, /* 0x1d21 */ { true, 0x1d21, 0x1d21 }, /* 0x1d22 */ { true, 0x1d22, 0x1d22 }, /* 0x1d23 */ { true, 0x1d23, 0x1d23 }, /* 0x1d24 */ { true, 0x1d24, 0x1d24 }, /* 0x1d25 */ { true, 0x1d25, 0x1d25 }, /* 0x1d26 */ { true, 0x1d26, 0x1d26 }, /* 0x1d27 */ { true, 0x1d27, 0x1d27 }, /* 0x1d28 */ { true, 0x1d28, 0x1d28 }, /* 0x1d29 */ { true, 0x1d29, 0x1d29 }, /* 0x1d2a */ { true, 0x1d2a, 0x1d2a }, /* 0x1d2b */ { true, 0x1d2b, 0x1d2b }, /* 0x1d2c */ { true, 0x1d2c, 0x1d2c }, /* 0x1d2d */ { true, 0x1d2d, 0x1d2d }, /* 0x1d2e */ { true, 0x1d2e, 0x1d2e }, /* 0x1d2f */ { true, 0x1d2f, 0x1d2f }, /* 0x1d30 */ { true, 0x1d30, 0x1d30 }, /* 0x1d31 */ { true, 0x1d31, 0x1d31 }, /* 0x1d32 */ { true, 0x1d32, 0x1d32 }, /* 0x1d33 */ { true, 0x1d33, 0x1d33 }, /* 0x1d34 */ { true, 0x1d34, 0x1d34 }, /* 0x1d35 */ { true, 0x1d35, 0x1d35 }, /* 0x1d36 */ { true, 0x1d36, 0x1d36 }, /* 0x1d37 */ { true, 0x1d37, 0x1d37 }, /* 0x1d38 */ { true, 0x1d38, 0x1d38 }, /* 0x1d39 */ { true, 0x1d39, 0x1d39 }, /* 0x1d3a */ { true, 0x1d3a, 0x1d3a }, /* 0x1d3b */ { true, 0x1d3b, 0x1d3b }, /* 0x1d3c */ { true, 0x1d3c, 0x1d3c }, /* 0x1d3d */ { true, 0x1d3d, 0x1d3d }, /* 0x1d3e */ { true, 0x1d3e, 0x1d3e }, /* 0x1d3f */ { true, 0x1d3f, 0x1d3f }, /* 0x1d40 */ { true, 0x1d40, 0x1d40 }, /* 0x1d41 */ { true, 0x1d41, 0x1d41 }, /* 0x1d42 */ { true, 0x1d42, 0x1d42 }, /* 0x1d43 */ { true, 0x1d43, 0x1d43 }, /* 0x1d44 */ { true, 0x1d44, 0x1d44 }, /* 0x1d45 */ { true, 0x1d45, 0x1d45 }, /* 0x1d46 */ { true, 0x1d46, 0x1d46 }, /* 0x1d47 */ { true, 0x1d47, 0x1d47 }, /* 0x1d48 */ { true, 0x1d48, 0x1d48 }, /* 0x1d49 */ { true, 0x1d49, 0x1d49 }, /* 0x1d4a */ { true, 0x1d4a, 0x1d4a }, /* 0x1d4b */ { true, 0x1d4b, 0x1d4b }, /* 0x1d4c */ { true, 0x1d4c, 0x1d4c }, /* 0x1d4d */ { true, 0x1d4d, 0x1d4d }, /* 0x1d4e */ { true, 0x1d4e, 0x1d4e }, /* 0x1d4f */ { true, 0x1d4f, 0x1d4f }, /* 0x1d50 */ { true, 0x1d50, 0x1d50 }, /* 0x1d51 */ { true, 0x1d51, 0x1d51 }, /* 0x1d52 */ { true, 0x1d52, 0x1d52 }, /* 0x1d53 */ { true, 0x1d53, 0x1d53 }, /* 0x1d54 */ { true, 0x1d54, 0x1d54 }, /* 0x1d55 */ { true, 0x1d55, 0x1d55 }, /* 0x1d56 */ { true, 0x1d56, 0x1d56 }, /* 0x1d57 */ { true, 0x1d57, 0x1d57 }, /* 0x1d58 */ { true, 0x1d58, 0x1d58 }, /* 0x1d59 */ { true, 0x1d59, 0x1d59 }, /* 0x1d5a */ { true, 0x1d5a, 0x1d5a }, /* 0x1d5b */ { true, 0x1d5b, 0x1d5b }, /* 0x1d5c */ { true, 0x1d5c, 0x1d5c }, /* 0x1d5d */ { true, 0x1d5d, 0x1d5d }, /* 0x1d5e */ { true, 0x1d5e, 0x1d5e }, /* 0x1d5f */ { true, 0x1d5f, 0x1d5f }, /* 0x1d60 */ { true, 0x1d60, 0x1d60 }, /* 0x1d61 */ { true, 0x1d61, 0x1d61 }, /* 0x1d62 */ { true, 0x1d62, 0x1d62 }, /* 0x1d63 */ { true, 0x1d63, 0x1d63 }, /* 0x1d64 */ { true, 0x1d64, 0x1d64 }, /* 0x1d65 */ { true, 0x1d65, 0x1d65 }, /* 0x1d66 */ { true, 0x1d66, 0x1d66 }, /* 0x1d67 */ { true, 0x1d67, 0x1d67 }, /* 0x1d68 */ { true, 0x1d68, 0x1d68 }, /* 0x1d69 */ { true, 0x1d69, 0x1d69 }, /* 0x1d6a */ { true, 0x1d6a, 0x1d6a }, /* 0x1d6b */ { true, 0x1d6b, 0x1d6b }, /* 0x1d6c */ { true, 0x1d6c, 0x1d6c }, /* 0x1d6d */ { true, 0x1d6d, 0x1d6d }, /* 0x1d6e */ { true, 0x1d6e, 0x1d6e }, /* 0x1d6f */ { true, 0x1d6f, 0x1d6f }, /* 0x1d70 */ { true, 0x1d70, 0x1d70 }, /* 0x1d71 */ { true, 0x1d71, 0x1d71 }, /* 0x1d72 */ { true, 0x1d72, 0x1d72 }, /* 0x1d73 */ { true, 0x1d73, 0x1d73 }, /* 0x1d74 */ { true, 0x1d74, 0x1d74 }, /* 0x1d75 */ { true, 0x1d75, 0x1d75 }, /* 0x1d76 */ { true, 0x1d76, 0x1d76 }, /* 0x1d77 */ { true, 0x1d77, 0x1d77 }, /* 0x1d78 */ { true, 0x1d78, 0x1d78 }, /* 0x1d79 */ { true, 0x1d79, 0x1d79 }, /* 0x1d7a */ { true, 0x1d7a, 0x1d7a }, /* 0x1d7b */ { true, 0x1d7b, 0x1d7b }, /* 0x1d7c */ { true, 0x1d7c, 0x1d7c }, /* 0x1d7d */ { true, 0x1d7d, 0x1d7d }, /* 0x1d7e */ { true, 0x1d7e, 0x1d7e }, /* 0x1d7f */ { true, 0x1d7f, 0x1d7f }, /* 0x1d80 */ { true, 0x1d80, 0x1d80 }, /* 0x1d81 */ { true, 0x1d81, 0x1d81 }, /* 0x1d82 */ { true, 0x1d82, 0x1d82 }, /* 0x1d83 */ { true, 0x1d83, 0x1d83 }, /* 0x1d84 */ { true, 0x1d84, 0x1d84 }, /* 0x1d85 */ { true, 0x1d85, 0x1d85 }, /* 0x1d86 */ { true, 0x1d86, 0x1d86 }, /* 0x1d87 */ { true, 0x1d87, 0x1d87 }, /* 0x1d88 */ { true, 0x1d88, 0x1d88 }, /* 0x1d89 */ { true, 0x1d89, 0x1d89 }, /* 0x1d8a */ { true, 0x1d8a, 0x1d8a }, /* 0x1d8b */ { true, 0x1d8b, 0x1d8b }, /* 0x1d8c */ { true, 0x1d8c, 0x1d8c }, /* 0x1d8d */ { true, 0x1d8d, 0x1d8d }, /* 0x1d8e */ { true, 0x1d8e, 0x1d8e }, /* 0x1d8f */ { true, 0x1d8f, 0x1d8f }, /* 0x1d90 */ { true, 0x1d90, 0x1d90 }, /* 0x1d91 */ { true, 0x1d91, 0x1d91 }, /* 0x1d92 */ { true, 0x1d92, 0x1d92 }, /* 0x1d93 */ { true, 0x1d93, 0x1d93 }, /* 0x1d94 */ { true, 0x1d94, 0x1d94 }, /* 0x1d95 */ { true, 0x1d95, 0x1d95 }, /* 0x1d96 */ { true, 0x1d96, 0x1d96 }, /* 0x1d97 */ { true, 0x1d97, 0x1d97 }, /* 0x1d98 */ { true, 0x1d98, 0x1d98 }, /* 0x1d99 */ { true, 0x1d99, 0x1d99 }, /* 0x1d9a */ { true, 0x1d9a, 0x1d9a }, /* 0x1d9b */ { true, 0x1d9b, 0x1d9b }, /* 0x1d9c */ { true, 0x1d9c, 0x1d9c }, /* 0x1d9d */ { true, 0x1d9d, 0x1d9d }, /* 0x1d9e */ { true, 0x1d9e, 0x1d9e }, /* 0x1d9f */ { true, 0x1d9f, 0x1d9f }, /* 0x1da0 */ { true, 0x1da0, 0x1da0 }, /* 0x1da1 */ { true, 0x1da1, 0x1da1 }, /* 0x1da2 */ { true, 0x1da2, 0x1da2 }, /* 0x1da3 */ { true, 0x1da3, 0x1da3 }, /* 0x1da4 */ { true, 0x1da4, 0x1da4 }, /* 0x1da5 */ { true, 0x1da5, 0x1da5 }, /* 0x1da6 */ { true, 0x1da6, 0x1da6 }, /* 0x1da7 */ { true, 0x1da7, 0x1da7 }, /* 0x1da8 */ { true, 0x1da8, 0x1da8 }, /* 0x1da9 */ { true, 0x1da9, 0x1da9 }, /* 0x1daa */ { true, 0x1daa, 0x1daa }, /* 0x1dab */ { true, 0x1dab, 0x1dab }, /* 0x1dac */ { true, 0x1dac, 0x1dac }, /* 0x1dad */ { true, 0x1dad, 0x1dad }, /* 0x1dae */ { true, 0x1dae, 0x1dae }, /* 0x1daf */ { true, 0x1daf, 0x1daf }, /* 0x1db0 */ { true, 0x1db0, 0x1db0 }, /* 0x1db1 */ { true, 0x1db1, 0x1db1 }, /* 0x1db2 */ { true, 0x1db2, 0x1db2 }, /* 0x1db3 */ { true, 0x1db3, 0x1db3 }, /* 0x1db4 */ { true, 0x1db4, 0x1db4 }, /* 0x1db5 */ { true, 0x1db5, 0x1db5 }, /* 0x1db6 */ { true, 0x1db6, 0x1db6 }, /* 0x1db7 */ { true, 0x1db7, 0x1db7 }, /* 0x1db8 */ { true, 0x1db8, 0x1db8 }, /* 0x1db9 */ { true, 0x1db9, 0x1db9 }, /* 0x1dba */ { true, 0x1dba, 0x1dba }, /* 0x1dbb */ { true, 0x1dbb, 0x1dbb }, /* 0x1dbc */ { true, 0x1dbc, 0x1dbc }, /* 0x1dbd */ { true, 0x1dbd, 0x1dbd }, /* 0x1dbe */ { true, 0x1dbe, 0x1dbe }, /* 0x1dbf */ { true, 0x1dbf, 0x1dbf }, /* 0x1dc0 */ { true, 0x1dc0, 0x1dc0 }, /* 0x1dc1 */ { true, 0x1dc1, 0x1dc1 }, /* 0x1dc2 */ { true, 0x1dc2, 0x1dc2 }, /* 0x1dc3 */ { true, 0x1dc3, 0x1dc3 }, /* 0x1dc4 */ { false, 0x1dc4, 0x1dc4 }, /* 0x1dc5 */ { false, 0x1dc5, 0x1dc5 }, /* 0x1dc6 */ { false, 0x1dc6, 0x1dc6 }, /* 0x1dc7 */ { false, 0x1dc7, 0x1dc7 }, /* 0x1dc8 */ { false, 0x1dc8, 0x1dc8 }, /* 0x1dc9 */ { false, 0x1dc9, 0x1dc9 }, /* 0x1dca */ { false, 0x1dca, 0x1dca }, /* 0x1dcb */ { false, 0x1dcb, 0x1dcb }, /* 0x1dcc */ { false, 0x1dcc, 0x1dcc }, /* 0x1dcd */ { false, 0x1dcd, 0x1dcd }, /* 0x1dce */ { false, 0x1dce, 0x1dce }, /* 0x1dcf */ { false, 0x1dcf, 0x1dcf }, /* 0x1dd0 */ { false, 0x1dd0, 0x1dd0 }, /* 0x1dd1 */ { false, 0x1dd1, 0x1dd1 }, /* 0x1dd2 */ { false, 0x1dd2, 0x1dd2 }, /* 0x1dd3 */ { false, 0x1dd3, 0x1dd3 }, /* 0x1dd4 */ { false, 0x1dd4, 0x1dd4 }, /* 0x1dd5 */ { false, 0x1dd5, 0x1dd5 }, /* 0x1dd6 */ { false, 0x1dd6, 0x1dd6 }, /* 0x1dd7 */ { false, 0x1dd7, 0x1dd7 }, /* 0x1dd8 */ { false, 0x1dd8, 0x1dd8 }, /* 0x1dd9 */ { false, 0x1dd9, 0x1dd9 }, /* 0x1dda */ { false, 0x1dda, 0x1dda }, /* 0x1ddb */ { false, 0x1ddb, 0x1ddb }, /* 0x1ddc */ { false, 0x1ddc, 0x1ddc }, /* 0x1ddd */ { false, 0x1ddd, 0x1ddd }, /* 0x1dde */ { false, 0x1dde, 0x1dde }, /* 0x1ddf */ { false, 0x1ddf, 0x1ddf }, /* 0x1de0 */ { false, 0x1de0, 0x1de0 }, /* 0x1de1 */ { false, 0x1de1, 0x1de1 }, /* 0x1de2 */ { false, 0x1de2, 0x1de2 }, /* 0x1de3 */ { false, 0x1de3, 0x1de3 }, /* 0x1de4 */ { false, 0x1de4, 0x1de4 }, /* 0x1de5 */ { false, 0x1de5, 0x1de5 }, /* 0x1de6 */ { false, 0x1de6, 0x1de6 }, /* 0x1de7 */ { false, 0x1de7, 0x1de7 }, /* 0x1de8 */ { false, 0x1de8, 0x1de8 }, /* 0x1de9 */ { false, 0x1de9, 0x1de9 }, /* 0x1dea */ { false, 0x1dea, 0x1dea }, /* 0x1deb */ { false, 0x1deb, 0x1deb }, /* 0x1dec */ { false, 0x1dec, 0x1dec }, /* 0x1ded */ { false, 0x1ded, 0x1ded }, /* 0x1dee */ { false, 0x1dee, 0x1dee }, /* 0x1def */ { false, 0x1def, 0x1def }, /* 0x1df0 */ { false, 0x1df0, 0x1df0 }, /* 0x1df1 */ { false, 0x1df1, 0x1df1 }, /* 0x1df2 */ { false, 0x1df2, 0x1df2 }, /* 0x1df3 */ { false, 0x1df3, 0x1df3 }, /* 0x1df4 */ { false, 0x1df4, 0x1df4 }, /* 0x1df5 */ { false, 0x1df5, 0x1df5 }, /* 0x1df6 */ { false, 0x1df6, 0x1df6 }, /* 0x1df7 */ { false, 0x1df7, 0x1df7 }, /* 0x1df8 */ { false, 0x1df8, 0x1df8 }, /* 0x1df9 */ { false, 0x1df9, 0x1df9 }, /* 0x1dfa */ { false, 0x1dfa, 0x1dfa }, /* 0x1dfb */ { false, 0x1dfb, 0x1dfb }, /* 0x1dfc */ { false, 0x1dfc, 0x1dfc }, /* 0x1dfd */ { false, 0x1dfd, 0x1dfd }, /* 0x1dfe */ { false, 0x1dfe, 0x1dfe }, /* 0x1dff */ { false, 0x1dff, 0x1dff }, /* 0x1e00 */ { true, 0x1e00, 0x1e01 }, /* 0x1e01 */ { true, 0x1e00, 0x1e01 }, /* 0x1e02 */ { true, 0x1e02, 0x1e03 }, /* 0x1e03 */ { true, 0x1e02, 0x1e03 }, /* 0x1e04 */ { true, 0x1e04, 0x1e05 }, /* 0x1e05 */ { true, 0x1e04, 0x1e05 }, /* 0x1e06 */ { true, 0x1e06, 0x1e07 }, /* 0x1e07 */ { true, 0x1e06, 0x1e07 }, /* 0x1e08 */ { true, 0x1e08, 0x1e09 }, /* 0x1e09 */ { true, 0x1e08, 0x1e09 }, /* 0x1e0a */ { true, 0x1e0a, 0x1e0b }, /* 0x1e0b */ { true, 0x1e0a, 0x1e0b }, /* 0x1e0c */ { true, 0x1e0c, 0x1e0d }, /* 0x1e0d */ { true, 0x1e0c, 0x1e0d }, /* 0x1e0e */ { true, 0x1e0e, 0x1e0f }, /* 0x1e0f */ { true, 0x1e0e, 0x1e0f }, /* 0x1e10 */ { true, 0x1e10, 0x1e11 }, /* 0x1e11 */ { true, 0x1e10, 0x1e11 }, /* 0x1e12 */ { true, 0x1e12, 0x1e13 }, /* 0x1e13 */ { true, 0x1e12, 0x1e13 }, /* 0x1e14 */ { true, 0x1e14, 0x1e15 }, /* 0x1e15 */ { true, 0x1e14, 0x1e15 }, /* 0x1e16 */ { true, 0x1e16, 0x1e17 }, /* 0x1e17 */ { true, 0x1e16, 0x1e17 }, /* 0x1e18 */ { true, 0x1e18, 0x1e19 }, /* 0x1e19 */ { true, 0x1e18, 0x1e19 }, /* 0x1e1a */ { true, 0x1e1a, 0x1e1b }, /* 0x1e1b */ { true, 0x1e1a, 0x1e1b }, /* 0x1e1c */ { true, 0x1e1c, 0x1e1d }, /* 0x1e1d */ { true, 0x1e1c, 0x1e1d }, /* 0x1e1e */ { true, 0x1e1e, 0x1e1f }, /* 0x1e1f */ { true, 0x1e1e, 0x1e1f }, /* 0x1e20 */ { true, 0x1e20, 0x1e21 }, /* 0x1e21 */ { true, 0x1e20, 0x1e21 }, /* 0x1e22 */ { true, 0x1e22, 0x1e23 }, /* 0x1e23 */ { true, 0x1e22, 0x1e23 }, /* 0x1e24 */ { true, 0x1e24, 0x1e25 }, /* 0x1e25 */ { true, 0x1e24, 0x1e25 }, /* 0x1e26 */ { true, 0x1e26, 0x1e27 }, /* 0x1e27 */ { true, 0x1e26, 0x1e27 }, /* 0x1e28 */ { true, 0x1e28, 0x1e29 }, /* 0x1e29 */ { true, 0x1e28, 0x1e29 }, /* 0x1e2a */ { true, 0x1e2a, 0x1e2b }, /* 0x1e2b */ { true, 0x1e2a, 0x1e2b }, /* 0x1e2c */ { true, 0x1e2c, 0x1e2d }, /* 0x1e2d */ { true, 0x1e2c, 0x1e2d }, /* 0x1e2e */ { true, 0x1e2e, 0x1e2f }, /* 0x1e2f */ { true, 0x1e2e, 0x1e2f }, /* 0x1e30 */ { true, 0x1e30, 0x1e31 }, /* 0x1e31 */ { true, 0x1e30, 0x1e31 }, /* 0x1e32 */ { true, 0x1e32, 0x1e33 }, /* 0x1e33 */ { true, 0x1e32, 0x1e33 }, /* 0x1e34 */ { true, 0x1e34, 0x1e35 }, /* 0x1e35 */ { true, 0x1e34, 0x1e35 }, /* 0x1e36 */ { true, 0x1e36, 0x1e37 }, /* 0x1e37 */ { true, 0x1e36, 0x1e37 }, /* 0x1e38 */ { true, 0x1e38, 0x1e39 }, /* 0x1e39 */ { true, 0x1e38, 0x1e39 }, /* 0x1e3a */ { true, 0x1e3a, 0x1e3b }, /* 0x1e3b */ { true, 0x1e3a, 0x1e3b }, /* 0x1e3c */ { true, 0x1e3c, 0x1e3d }, /* 0x1e3d */ { true, 0x1e3c, 0x1e3d }, /* 0x1e3e */ { true, 0x1e3e, 0x1e3f }, /* 0x1e3f */ { true, 0x1e3e, 0x1e3f }, /* 0x1e40 */ { true, 0x1e40, 0x1e41 }, /* 0x1e41 */ { true, 0x1e40, 0x1e41 }, /* 0x1e42 */ { true, 0x1e42, 0x1e43 }, /* 0x1e43 */ { true, 0x1e42, 0x1e43 }, /* 0x1e44 */ { true, 0x1e44, 0x1e45 }, /* 0x1e45 */ { true, 0x1e44, 0x1e45 }, /* 0x1e46 */ { true, 0x1e46, 0x1e47 }, /* 0x1e47 */ { true, 0x1e46, 0x1e47 }, /* 0x1e48 */ { true, 0x1e48, 0x1e49 }, /* 0x1e49 */ { true, 0x1e48, 0x1e49 }, /* 0x1e4a */ { true, 0x1e4a, 0x1e4b }, /* 0x1e4b */ { true, 0x1e4a, 0x1e4b }, /* 0x1e4c */ { true, 0x1e4c, 0x1e4d }, /* 0x1e4d */ { true, 0x1e4c, 0x1e4d }, /* 0x1e4e */ { true, 0x1e4e, 0x1e4f }, /* 0x1e4f */ { true, 0x1e4e, 0x1e4f }, /* 0x1e50 */ { true, 0x1e50, 0x1e51 }, /* 0x1e51 */ { true, 0x1e50, 0x1e51 }, /* 0x1e52 */ { true, 0x1e52, 0x1e53 }, /* 0x1e53 */ { true, 0x1e52, 0x1e53 }, /* 0x1e54 */ { true, 0x1e54, 0x1e55 }, /* 0x1e55 */ { true, 0x1e54, 0x1e55 }, /* 0x1e56 */ { true, 0x1e56, 0x1e57 }, /* 0x1e57 */ { true, 0x1e56, 0x1e57 }, /* 0x1e58 */ { true, 0x1e58, 0x1e59 }, /* 0x1e59 */ { true, 0x1e58, 0x1e59 }, /* 0x1e5a */ { true, 0x1e5a, 0x1e5b }, /* 0x1e5b */ { true, 0x1e5a, 0x1e5b }, /* 0x1e5c */ { true, 0x1e5c, 0x1e5d }, /* 0x1e5d */ { true, 0x1e5c, 0x1e5d }, /* 0x1e5e */ { true, 0x1e5e, 0x1e5f }, /* 0x1e5f */ { true, 0x1e5e, 0x1e5f }, /* 0x1e60 */ { true, 0x1e60, 0x1e61 }, /* 0x1e61 */ { true, 0x1e60, 0x1e61 }, /* 0x1e62 */ { true, 0x1e62, 0x1e63 }, /* 0x1e63 */ { true, 0x1e62, 0x1e63 }, /* 0x1e64 */ { true, 0x1e64, 0x1e65 }, /* 0x1e65 */ { true, 0x1e64, 0x1e65 }, /* 0x1e66 */ { true, 0x1e66, 0x1e67 }, /* 0x1e67 */ { true, 0x1e66, 0x1e67 }, /* 0x1e68 */ { true, 0x1e68, 0x1e69 }, /* 0x1e69 */ { true, 0x1e68, 0x1e69 }, /* 0x1e6a */ { true, 0x1e6a, 0x1e6b }, /* 0x1e6b */ { true, 0x1e6a, 0x1e6b }, /* 0x1e6c */ { true, 0x1e6c, 0x1e6d }, /* 0x1e6d */ { true, 0x1e6c, 0x1e6d }, /* 0x1e6e */ { true, 0x1e6e, 0x1e6f }, /* 0x1e6f */ { true, 0x1e6e, 0x1e6f }, /* 0x1e70 */ { true, 0x1e70, 0x1e71 }, /* 0x1e71 */ { true, 0x1e70, 0x1e71 }, /* 0x1e72 */ { true, 0x1e72, 0x1e73 }, /* 0x1e73 */ { true, 0x1e72, 0x1e73 }, /* 0x1e74 */ { true, 0x1e74, 0x1e75 }, /* 0x1e75 */ { true, 0x1e74, 0x1e75 }, /* 0x1e76 */ { true, 0x1e76, 0x1e77 }, /* 0x1e77 */ { true, 0x1e76, 0x1e77 }, /* 0x1e78 */ { true, 0x1e78, 0x1e79 }, /* 0x1e79 */ { true, 0x1e78, 0x1e79 }, /* 0x1e7a */ { true, 0x1e7a, 0x1e7b }, /* 0x1e7b */ { true, 0x1e7a, 0x1e7b }, /* 0x1e7c */ { true, 0x1e7c, 0x1e7d }, /* 0x1e7d */ { true, 0x1e7c, 0x1e7d }, /* 0x1e7e */ { true, 0x1e7e, 0x1e7f }, /* 0x1e7f */ { true, 0x1e7e, 0x1e7f }, /* 0x1e80 */ { true, 0x1e80, 0x1e81 }, /* 0x1e81 */ { true, 0x1e80, 0x1e81 }, /* 0x1e82 */ { true, 0x1e82, 0x1e83 }, /* 0x1e83 */ { true, 0x1e82, 0x1e83 }, /* 0x1e84 */ { true, 0x1e84, 0x1e85 }, /* 0x1e85 */ { true, 0x1e84, 0x1e85 }, /* 0x1e86 */ { true, 0x1e86, 0x1e87 }, /* 0x1e87 */ { true, 0x1e86, 0x1e87 }, /* 0x1e88 */ { true, 0x1e88, 0x1e89 }, /* 0x1e89 */ { true, 0x1e88, 0x1e89 }, /* 0x1e8a */ { true, 0x1e8a, 0x1e8b }, /* 0x1e8b */ { true, 0x1e8a, 0x1e8b }, /* 0x1e8c */ { true, 0x1e8c, 0x1e8d }, /* 0x1e8d */ { true, 0x1e8c, 0x1e8d }, /* 0x1e8e */ { true, 0x1e8e, 0x1e8f }, /* 0x1e8f */ { true, 0x1e8e, 0x1e8f }, /* 0x1e90 */ { true, 0x1e90, 0x1e91 }, /* 0x1e91 */ { true, 0x1e90, 0x1e91 }, /* 0x1e92 */ { true, 0x1e92, 0x1e93 }, /* 0x1e93 */ { true, 0x1e92, 0x1e93 }, /* 0x1e94 */ { true, 0x1e94, 0x1e95 }, /* 0x1e95 */ { true, 0x1e94, 0x1e95 }, /* 0x1e96 */ { true, 0x1e96, 0x1e96 }, /* 0x1e97 */ { true, 0x1e97, 0x1e97 }, /* 0x1e98 */ { true, 0x1e98, 0x1e98 }, /* 0x1e99 */ { true, 0x1e99, 0x1e99 }, /* 0x1e9a */ { true, 0x1e9a, 0x1e9a }, /* 0x1e9b */ { true, 0x1e60, 0x1e9b }, /* 0x1e9c */ { false, 0x1e9c, 0x1e9c }, /* 0x1e9d */ { false, 0x1e9d, 0x1e9d }, /* 0x1e9e */ { false, 0x1e9e, 0x1e9e }, /* 0x1e9f */ { false, 0x1e9f, 0x1e9f }, /* 0x1ea0 */ { true, 0x1ea0, 0x1ea1 }, /* 0x1ea1 */ { true, 0x1ea0, 0x1ea1 }, /* 0x1ea2 */ { true, 0x1ea2, 0x1ea3 }, /* 0x1ea3 */ { true, 0x1ea2, 0x1ea3 }, /* 0x1ea4 */ { true, 0x1ea4, 0x1ea5 }, /* 0x1ea5 */ { true, 0x1ea4, 0x1ea5 }, /* 0x1ea6 */ { true, 0x1ea6, 0x1ea7 }, /* 0x1ea7 */ { true, 0x1ea6, 0x1ea7 }, /* 0x1ea8 */ { true, 0x1ea8, 0x1ea9 }, /* 0x1ea9 */ { true, 0x1ea8, 0x1ea9 }, /* 0x1eaa */ { true, 0x1eaa, 0x1eab }, /* 0x1eab */ { true, 0x1eaa, 0x1eab }, /* 0x1eac */ { true, 0x1eac, 0x1ead }, /* 0x1ead */ { true, 0x1eac, 0x1ead }, /* 0x1eae */ { true, 0x1eae, 0x1eaf }, /* 0x1eaf */ { true, 0x1eae, 0x1eaf }, /* 0x1eb0 */ { true, 0x1eb0, 0x1eb1 }, /* 0x1eb1 */ { true, 0x1eb0, 0x1eb1 }, /* 0x1eb2 */ { true, 0x1eb2, 0x1eb3 }, /* 0x1eb3 */ { true, 0x1eb2, 0x1eb3 }, /* 0x1eb4 */ { true, 0x1eb4, 0x1eb5 }, /* 0x1eb5 */ { true, 0x1eb4, 0x1eb5 }, /* 0x1eb6 */ { true, 0x1eb6, 0x1eb7 }, /* 0x1eb7 */ { true, 0x1eb6, 0x1eb7 }, /* 0x1eb8 */ { true, 0x1eb8, 0x1eb9 }, /* 0x1eb9 */ { true, 0x1eb8, 0x1eb9 }, /* 0x1eba */ { true, 0x1eba, 0x1ebb }, /* 0x1ebb */ { true, 0x1eba, 0x1ebb }, /* 0x1ebc */ { true, 0x1ebc, 0x1ebd }, /* 0x1ebd */ { true, 0x1ebc, 0x1ebd }, /* 0x1ebe */ { true, 0x1ebe, 0x1ebf }, /* 0x1ebf */ { true, 0x1ebe, 0x1ebf }, /* 0x1ec0 */ { true, 0x1ec0, 0x1ec1 }, /* 0x1ec1 */ { true, 0x1ec0, 0x1ec1 }, /* 0x1ec2 */ { true, 0x1ec2, 0x1ec3 }, /* 0x1ec3 */ { true, 0x1ec2, 0x1ec3 }, /* 0x1ec4 */ { true, 0x1ec4, 0x1ec5 }, /* 0x1ec5 */ { true, 0x1ec4, 0x1ec5 }, /* 0x1ec6 */ { true, 0x1ec6, 0x1ec7 }, /* 0x1ec7 */ { true, 0x1ec6, 0x1ec7 }, /* 0x1ec8 */ { true, 0x1ec8, 0x1ec9 }, /* 0x1ec9 */ { true, 0x1ec8, 0x1ec9 }, /* 0x1eca */ { true, 0x1eca, 0x1ecb }, /* 0x1ecb */ { true, 0x1eca, 0x1ecb }, /* 0x1ecc */ { true, 0x1ecc, 0x1ecd }, /* 0x1ecd */ { true, 0x1ecc, 0x1ecd }, /* 0x1ece */ { true, 0x1ece, 0x1ecf }, /* 0x1ecf */ { true, 0x1ece, 0x1ecf }, /* 0x1ed0 */ { true, 0x1ed0, 0x1ed1 }, /* 0x1ed1 */ { true, 0x1ed0, 0x1ed1 }, /* 0x1ed2 */ { true, 0x1ed2, 0x1ed3 }, /* 0x1ed3 */ { true, 0x1ed2, 0x1ed3 }, /* 0x1ed4 */ { true, 0x1ed4, 0x1ed5 }, /* 0x1ed5 */ { true, 0x1ed4, 0x1ed5 }, /* 0x1ed6 */ { true, 0x1ed6, 0x1ed7 }, /* 0x1ed7 */ { true, 0x1ed6, 0x1ed7 }, /* 0x1ed8 */ { true, 0x1ed8, 0x1ed9 }, /* 0x1ed9 */ { true, 0x1ed8, 0x1ed9 }, /* 0x1eda */ { true, 0x1eda, 0x1edb }, /* 0x1edb */ { true, 0x1eda, 0x1edb }, /* 0x1edc */ { true, 0x1edc, 0x1edd }, /* 0x1edd */ { true, 0x1edc, 0x1edd }, /* 0x1ede */ { true, 0x1ede, 0x1edf }, /* 0x1edf */ { true, 0x1ede, 0x1edf }, /* 0x1ee0 */ { true, 0x1ee0, 0x1ee1 }, /* 0x1ee1 */ { true, 0x1ee0, 0x1ee1 }, /* 0x1ee2 */ { true, 0x1ee2, 0x1ee3 }, /* 0x1ee3 */ { true, 0x1ee2, 0x1ee3 }, /* 0x1ee4 */ { true, 0x1ee4, 0x1ee5 }, /* 0x1ee5 */ { true, 0x1ee4, 0x1ee5 }, /* 0x1ee6 */ { true, 0x1ee6, 0x1ee7 }, /* 0x1ee7 */ { true, 0x1ee6, 0x1ee7 }, /* 0x1ee8 */ { true, 0x1ee8, 0x1ee9 }, /* 0x1ee9 */ { true, 0x1ee8, 0x1ee9 }, /* 0x1eea */ { true, 0x1eea, 0x1eeb }, /* 0x1eeb */ { true, 0x1eea, 0x1eeb }, /* 0x1eec */ { true, 0x1eec, 0x1eed }, /* 0x1eed */ { true, 0x1eec, 0x1eed }, /* 0x1eee */ { true, 0x1eee, 0x1eef }, /* 0x1eef */ { true, 0x1eee, 0x1eef }, /* 0x1ef0 */ { true, 0x1ef0, 0x1ef1 }, /* 0x1ef1 */ { true, 0x1ef0, 0x1ef1 }, /* 0x1ef2 */ { true, 0x1ef2, 0x1ef3 }, /* 0x1ef3 */ { true, 0x1ef2, 0x1ef3 }, /* 0x1ef4 */ { true, 0x1ef4, 0x1ef5 }, /* 0x1ef5 */ { true, 0x1ef4, 0x1ef5 }, /* 0x1ef6 */ { true, 0x1ef6, 0x1ef7 }, /* 0x1ef7 */ { true, 0x1ef6, 0x1ef7 }, /* 0x1ef8 */ { true, 0x1ef8, 0x1ef9 }, /* 0x1ef9 */ { true, 0x1ef8, 0x1ef9 }, /* 0x1efa */ { false, 0x1efa, 0x1efa }, /* 0x1efb */ { false, 0x1efb, 0x1efb }, /* 0x1efc */ { false, 0x1efc, 0x1efc }, /* 0x1efd */ { false, 0x1efd, 0x1efd }, /* 0x1efe */ { false, 0x1efe, 0x1efe }, /* 0x1eff */ { false, 0x1eff, 0x1eff }, /* 0x1f00 */ { true, 0x1f08, 0x1f00 }, /* 0x1f01 */ { true, 0x1f09, 0x1f01 }, /* 0x1f02 */ { true, 0x1f0a, 0x1f02 }, /* 0x1f03 */ { true, 0x1f0b, 0x1f03 }, /* 0x1f04 */ { true, 0x1f0c, 0x1f04 }, /* 0x1f05 */ { true, 0x1f0d, 0x1f05 }, /* 0x1f06 */ { true, 0x1f0e, 0x1f06 }, /* 0x1f07 */ { true, 0x1f0f, 0x1f07 }, /* 0x1f08 */ { true, 0x1f08, 0x1f00 }, /* 0x1f09 */ { true, 0x1f09, 0x1f01 }, /* 0x1f0a */ { true, 0x1f0a, 0x1f02 }, /* 0x1f0b */ { true, 0x1f0b, 0x1f03 }, /* 0x1f0c */ { true, 0x1f0c, 0x1f04 }, /* 0x1f0d */ { true, 0x1f0d, 0x1f05 }, /* 0x1f0e */ { true, 0x1f0e, 0x1f06 }, /* 0x1f0f */ { true, 0x1f0f, 0x1f07 }, /* 0x1f10 */ { true, 0x1f18, 0x1f10 }, /* 0x1f11 */ { true, 0x1f19, 0x1f11 }, /* 0x1f12 */ { true, 0x1f1a, 0x1f12 }, /* 0x1f13 */ { true, 0x1f1b, 0x1f13 }, /* 0x1f14 */ { true, 0x1f1c, 0x1f14 }, /* 0x1f15 */ { true, 0x1f1d, 0x1f15 }, /* 0x1f16 */ { false, 0x1f16, 0x1f16 }, /* 0x1f17 */ { false, 0x1f17, 0x1f17 }, /* 0x1f18 */ { true, 0x1f18, 0x1f10 }, /* 0x1f19 */ { true, 0x1f19, 0x1f11 }, /* 0x1f1a */ { true, 0x1f1a, 0x1f12 }, /* 0x1f1b */ { true, 0x1f1b, 0x1f13 }, /* 0x1f1c */ { true, 0x1f1c, 0x1f14 }, /* 0x1f1d */ { true, 0x1f1d, 0x1f15 }, /* 0x1f1e */ { false, 0x1f1e, 0x1f1e }, /* 0x1f1f */ { false, 0x1f1f, 0x1f1f }, /* 0x1f20 */ { true, 0x1f28, 0x1f20 }, /* 0x1f21 */ { true, 0x1f29, 0x1f21 }, /* 0x1f22 */ { true, 0x1f2a, 0x1f22 }, /* 0x1f23 */ { true, 0x1f2b, 0x1f23 }, /* 0x1f24 */ { true, 0x1f2c, 0x1f24 }, /* 0x1f25 */ { true, 0x1f2d, 0x1f25 }, /* 0x1f26 */ { true, 0x1f2e, 0x1f26 }, /* 0x1f27 */ { true, 0x1f2f, 0x1f27 }, /* 0x1f28 */ { true, 0x1f28, 0x1f20 }, /* 0x1f29 */ { true, 0x1f29, 0x1f21 }, /* 0x1f2a */ { true, 0x1f2a, 0x1f22 }, /* 0x1f2b */ { true, 0x1f2b, 0x1f23 }, /* 0x1f2c */ { true, 0x1f2c, 0x1f24 }, /* 0x1f2d */ { true, 0x1f2d, 0x1f25 }, /* 0x1f2e */ { true, 0x1f2e, 0x1f26 }, /* 0x1f2f */ { true, 0x1f2f, 0x1f27 }, /* 0x1f30 */ { true, 0x1f38, 0x1f30 }, /* 0x1f31 */ { true, 0x1f39, 0x1f31 }, /* 0x1f32 */ { true, 0x1f3a, 0x1f32 }, /* 0x1f33 */ { true, 0x1f3b, 0x1f33 }, /* 0x1f34 */ { true, 0x1f3c, 0x1f34 }, /* 0x1f35 */ { true, 0x1f3d, 0x1f35 }, /* 0x1f36 */ { true, 0x1f3e, 0x1f36 }, /* 0x1f37 */ { true, 0x1f3f, 0x1f37 }, /* 0x1f38 */ { true, 0x1f38, 0x1f30 }, /* 0x1f39 */ { true, 0x1f39, 0x1f31 }, /* 0x1f3a */ { true, 0x1f3a, 0x1f32 }, /* 0x1f3b */ { true, 0x1f3b, 0x1f33 }, /* 0x1f3c */ { true, 0x1f3c, 0x1f34 }, /* 0x1f3d */ { true, 0x1f3d, 0x1f35 }, /* 0x1f3e */ { true, 0x1f3e, 0x1f36 }, /* 0x1f3f */ { true, 0x1f3f, 0x1f37 }, /* 0x1f40 */ { true, 0x1f48, 0x1f40 }, /* 0x1f41 */ { true, 0x1f49, 0x1f41 }, /* 0x1f42 */ { true, 0x1f4a, 0x1f42 }, /* 0x1f43 */ { true, 0x1f4b, 0x1f43 }, /* 0x1f44 */ { true, 0x1f4c, 0x1f44 }, /* 0x1f45 */ { true, 0x1f4d, 0x1f45 }, /* 0x1f46 */ { false, 0x1f46, 0x1f46 }, /* 0x1f47 */ { false, 0x1f47, 0x1f47 }, /* 0x1f48 */ { true, 0x1f48, 0x1f40 }, /* 0x1f49 */ { true, 0x1f49, 0x1f41 }, /* 0x1f4a */ { true, 0x1f4a, 0x1f42 }, /* 0x1f4b */ { true, 0x1f4b, 0x1f43 }, /* 0x1f4c */ { true, 0x1f4c, 0x1f44 }, /* 0x1f4d */ { true, 0x1f4d, 0x1f45 }, /* 0x1f4e */ { false, 0x1f4e, 0x1f4e }, /* 0x1f4f */ { false, 0x1f4f, 0x1f4f }, /* 0x1f50 */ { true, 0x1f50, 0x1f50 }, /* 0x1f51 */ { true, 0x1f59, 0x1f51 }, /* 0x1f52 */ { true, 0x1f52, 0x1f52 }, /* 0x1f53 */ { true, 0x1f5b, 0x1f53 }, /* 0x1f54 */ { true, 0x1f54, 0x1f54 }, /* 0x1f55 */ { true, 0x1f5d, 0x1f55 }, /* 0x1f56 */ { true, 0x1f56, 0x1f56 }, /* 0x1f57 */ { true, 0x1f5f, 0x1f57 }, /* 0x1f58 */ { false, 0x1f58, 0x1f58 }, /* 0x1f59 */ { true, 0x1f59, 0x1f51 }, /* 0x1f5a */ { false, 0x1f5a, 0x1f5a }, /* 0x1f5b */ { true, 0x1f5b, 0x1f53 }, /* 0x1f5c */ { false, 0x1f5c, 0x1f5c }, /* 0x1f5d */ { true, 0x1f5d, 0x1f55 }, /* 0x1f5e */ { false, 0x1f5e, 0x1f5e }, /* 0x1f5f */ { true, 0x1f5f, 0x1f57 }, /* 0x1f60 */ { true, 0x1f68, 0x1f60 }, /* 0x1f61 */ { true, 0x1f69, 0x1f61 }, /* 0x1f62 */ { true, 0x1f6a, 0x1f62 }, /* 0x1f63 */ { true, 0x1f6b, 0x1f63 }, /* 0x1f64 */ { true, 0x1f6c, 0x1f64 }, /* 0x1f65 */ { true, 0x1f6d, 0x1f65 }, /* 0x1f66 */ { true, 0x1f6e, 0x1f66 }, /* 0x1f67 */ { true, 0x1f6f, 0x1f67 }, /* 0x1f68 */ { true, 0x1f68, 0x1f60 }, /* 0x1f69 */ { true, 0x1f69, 0x1f61 }, /* 0x1f6a */ { true, 0x1f6a, 0x1f62 }, /* 0x1f6b */ { true, 0x1f6b, 0x1f63 }, /* 0x1f6c */ { true, 0x1f6c, 0x1f64 }, /* 0x1f6d */ { true, 0x1f6d, 0x1f65 }, /* 0x1f6e */ { true, 0x1f6e, 0x1f66 }, /* 0x1f6f */ { true, 0x1f6f, 0x1f67 }, /* 0x1f70 */ { true, 0x1fba, 0x1f70 }, /* 0x1f71 */ { true, 0x1fbb, 0x1f71 }, /* 0x1f72 */ { true, 0x1fc8, 0x1f72 }, /* 0x1f73 */ { true, 0x1fc9, 0x1f73 }, /* 0x1f74 */ { true, 0x1fca, 0x1f74 }, /* 0x1f75 */ { true, 0x1fcb, 0x1f75 }, /* 0x1f76 */ { true, 0x1fda, 0x1f76 }, /* 0x1f77 */ { true, 0x1fdb, 0x1f77 }, /* 0x1f78 */ { true, 0x1ff8, 0x1f78 }, /* 0x1f79 */ { true, 0x1ff9, 0x1f79 }, /* 0x1f7a */ { true, 0x1fea, 0x1f7a }, /* 0x1f7b */ { true, 0x1feb, 0x1f7b }, /* 0x1f7c */ { true, 0x1ffa, 0x1f7c }, /* 0x1f7d */ { true, 0x1ffb, 0x1f7d }, /* 0x1f7e */ { false, 0x1f7e, 0x1f7e }, /* 0x1f7f */ { false, 0x1f7f, 0x1f7f }, /* 0x1f80 */ { true, 0x1f88, 0x1f80 }, /* 0x1f81 */ { true, 0x1f89, 0x1f81 }, /* 0x1f82 */ { true, 0x1f8a, 0x1f82 }, /* 0x1f83 */ { true, 0x1f8b, 0x1f83 }, /* 0x1f84 */ { true, 0x1f8c, 0x1f84 }, /* 0x1f85 */ { true, 0x1f8d, 0x1f85 }, /* 0x1f86 */ { true, 0x1f8e, 0x1f86 }, /* 0x1f87 */ { true, 0x1f8f, 0x1f87 }, /* 0x1f88 */ { true, 0x1f88, 0x1f80 }, /* 0x1f89 */ { true, 0x1f89, 0x1f81 }, /* 0x1f8a */ { true, 0x1f8a, 0x1f82 }, /* 0x1f8b */ { true, 0x1f8b, 0x1f83 }, /* 0x1f8c */ { true, 0x1f8c, 0x1f84 }, /* 0x1f8d */ { true, 0x1f8d, 0x1f85 }, /* 0x1f8e */ { true, 0x1f8e, 0x1f86 }, /* 0x1f8f */ { true, 0x1f8f, 0x1f87 }, /* 0x1f90 */ { true, 0x1f98, 0x1f90 }, /* 0x1f91 */ { true, 0x1f99, 0x1f91 }, /* 0x1f92 */ { true, 0x1f9a, 0x1f92 }, /* 0x1f93 */ { true, 0x1f9b, 0x1f93 }, /* 0x1f94 */ { true, 0x1f9c, 0x1f94 }, /* 0x1f95 */ { true, 0x1f9d, 0x1f95 }, /* 0x1f96 */ { true, 0x1f9e, 0x1f96 }, /* 0x1f97 */ { true, 0x1f9f, 0x1f97 }, /* 0x1f98 */ { true, 0x1f98, 0x1f90 }, /* 0x1f99 */ { true, 0x1f99, 0x1f91 }, /* 0x1f9a */ { true, 0x1f9a, 0x1f92 }, /* 0x1f9b */ { true, 0x1f9b, 0x1f93 }, /* 0x1f9c */ { true, 0x1f9c, 0x1f94 }, /* 0x1f9d */ { true, 0x1f9d, 0x1f95 }, /* 0x1f9e */ { true, 0x1f9e, 0x1f96 }, /* 0x1f9f */ { true, 0x1f9f, 0x1f97 }, /* 0x1fa0 */ { true, 0x1fa8, 0x1fa0 }, /* 0x1fa1 */ { true, 0x1fa9, 0x1fa1 }, /* 0x1fa2 */ { true, 0x1faa, 0x1fa2 }, /* 0x1fa3 */ { true, 0x1fab, 0x1fa3 }, /* 0x1fa4 */ { true, 0x1fac, 0x1fa4 }, /* 0x1fa5 */ { true, 0x1fad, 0x1fa5 }, /* 0x1fa6 */ { true, 0x1fae, 0x1fa6 }, /* 0x1fa7 */ { true, 0x1faf, 0x1fa7 }, /* 0x1fa8 */ { true, 0x1fa8, 0x1fa0 }, /* 0x1fa9 */ { true, 0x1fa9, 0x1fa1 }, /* 0x1faa */ { true, 0x1faa, 0x1fa2 }, /* 0x1fab */ { true, 0x1fab, 0x1fa3 }, /* 0x1fac */ { true, 0x1fac, 0x1fa4 }, /* 0x1fad */ { true, 0x1fad, 0x1fa5 }, /* 0x1fae */ { true, 0x1fae, 0x1fa6 }, /* 0x1faf */ { true, 0x1faf, 0x1fa7 }, /* 0x1fb0 */ { true, 0x1fb8, 0x1fb0 }, /* 0x1fb1 */ { true, 0x1fb9, 0x1fb1 }, /* 0x1fb2 */ { true, 0x1fb2, 0x1fb2 }, /* 0x1fb3 */ { true, 0x1fbc, 0x1fb3 }, /* 0x1fb4 */ { true, 0x1fb4, 0x1fb4 }, /* 0x1fb5 */ { false, 0x1fb5, 0x1fb5 }, /* 0x1fb6 */ { true, 0x1fb6, 0x1fb6 }, /* 0x1fb7 */ { true, 0x1fb7, 0x1fb7 }, /* 0x1fb8 */ { true, 0x1fb8, 0x1fb0 }, /* 0x1fb9 */ { true, 0x1fb9, 0x1fb1 }, /* 0x1fba */ { true, 0x1fba, 0x1f70 }, /* 0x1fbb */ { true, 0x1fbb, 0x1f71 }, /* 0x1fbc */ { true, 0x1fbc, 0x1fb3 }, /* 0x1fbd */ { false, 0x1fbd, 0x1fbd }, /* 0x1fbe */ { true, 0x0399, 0x1fbe }, /* 0x1fbf */ { false, 0x1fbf, 0x1fbf }, /* 0x1fc0 */ { false, 0x1fc0, 0x1fc0 }, /* 0x1fc1 */ { false, 0x1fc1, 0x1fc1 }, /* 0x1fc2 */ { true, 0x1fc2, 0x1fc2 }, /* 0x1fc3 */ { true, 0x1fcc, 0x1fc3 }, /* 0x1fc4 */ { true, 0x1fc4, 0x1fc4 }, /* 0x1fc5 */ { false, 0x1fc5, 0x1fc5 }, /* 0x1fc6 */ { true, 0x1fc6, 0x1fc6 }, /* 0x1fc7 */ { true, 0x1fc7, 0x1fc7 }, /* 0x1fc8 */ { true, 0x1fc8, 0x1f72 }, /* 0x1fc9 */ { true, 0x1fc9, 0x1f73 }, /* 0x1fca */ { true, 0x1fca, 0x1f74 }, /* 0x1fcb */ { true, 0x1fcb, 0x1f75 }, /* 0x1fcc */ { true, 0x1fcc, 0x1fc3 }, /* 0x1fcd */ { false, 0x1fcd, 0x1fcd }, /* 0x1fce */ { false, 0x1fce, 0x1fce }, /* 0x1fcf */ { false, 0x1fcf, 0x1fcf }, /* 0x1fd0 */ { true, 0x1fd8, 0x1fd0 }, /* 0x1fd1 */ { true, 0x1fd9, 0x1fd1 }, /* 0x1fd2 */ { true, 0x1fd2, 0x1fd2 }, /* 0x1fd3 */ { true, 0x1fd3, 0x1fd3 }, /* 0x1fd4 */ { false, 0x1fd4, 0x1fd4 }, /* 0x1fd5 */ { false, 0x1fd5, 0x1fd5 }, /* 0x1fd6 */ { true, 0x1fd6, 0x1fd6 }, /* 0x1fd7 */ { true, 0x1fd7, 0x1fd7 }, /* 0x1fd8 */ { true, 0x1fd8, 0x1fd0 }, /* 0x1fd9 */ { true, 0x1fd9, 0x1fd1 }, /* 0x1fda */ { true, 0x1fda, 0x1f76 }, /* 0x1fdb */ { true, 0x1fdb, 0x1f77 }, /* 0x1fdc */ { false, 0x1fdc, 0x1fdc }, /* 0x1fdd */ { false, 0x1fdd, 0x1fdd }, /* 0x1fde */ { false, 0x1fde, 0x1fde }, /* 0x1fdf */ { false, 0x1fdf, 0x1fdf }, /* 0x1fe0 */ { true, 0x1fe8, 0x1fe0 }, /* 0x1fe1 */ { true, 0x1fe9, 0x1fe1 }, /* 0x1fe2 */ { true, 0x1fe2, 0x1fe2 }, /* 0x1fe3 */ { true, 0x1fe3, 0x1fe3 }, /* 0x1fe4 */ { true, 0x1fe4, 0x1fe4 }, /* 0x1fe5 */ { true, 0x1fec, 0x1fe5 }, /* 0x1fe6 */ { true, 0x1fe6, 0x1fe6 }, /* 0x1fe7 */ { true, 0x1fe7, 0x1fe7 }, /* 0x1fe8 */ { true, 0x1fe8, 0x1fe0 }, /* 0x1fe9 */ { true, 0x1fe9, 0x1fe1 }, /* 0x1fea */ { true, 0x1fea, 0x1f7a }, /* 0x1feb */ { true, 0x1feb, 0x1f7b }, /* 0x1fec */ { true, 0x1fec, 0x1fe5 }, /* 0x1fed */ { false, 0x1fed, 0x1fed }, /* 0x1fee */ { false, 0x1fee, 0x1fee }, /* 0x1fef */ { false, 0x1fef, 0x1fef }, /* 0x1ff0 */ { false, 0x1ff0, 0x1ff0 }, /* 0x1ff1 */ { false, 0x1ff1, 0x1ff1 }, /* 0x1ff2 */ { true, 0x1ff2, 0x1ff2 }, /* 0x1ff3 */ { true, 0x1ffc, 0x1ff3 }, /* 0x1ff4 */ { true, 0x1ff4, 0x1ff4 }, /* 0x1ff5 */ { false, 0x1ff5, 0x1ff5 }, /* 0x1ff6 */ { true, 0x1ff6, 0x1ff6 }, /* 0x1ff7 */ { true, 0x1ff7, 0x1ff7 }, /* 0x1ff8 */ { true, 0x1ff8, 0x1f78 }, /* 0x1ff9 */ { true, 0x1ff9, 0x1f79 }, /* 0x1ffa */ { true, 0x1ffa, 0x1f7c }, /* 0x1ffb */ { true, 0x1ffb, 0x1f7d }, /* 0x1ffc */ { true, 0x1ffc, 0x1ff3 }, /* 0x1ffd */ { false, 0x1ffd, 0x1ffd }, /* 0x1ffe */ { false, 0x1ffe, 0x1ffe }, /* 0x1fff */ { false, 0x1fff, 0x1fff }, /* 0x2000 */ { false, 0x2000, 0x2000 }, /* 0x2001 */ { false, 0x2001, 0x2001 }, /* 0x2002 */ { false, 0x2002, 0x2002 }, /* 0x2003 */ { false, 0x2003, 0x2003 }, /* 0x2004 */ { false, 0x2004, 0x2004 }, /* 0x2005 */ { false, 0x2005, 0x2005 }, /* 0x2006 */ { false, 0x2006, 0x2006 }, /* 0x2007 */ { false, 0x2007, 0x2007 }, /* 0x2008 */ { false, 0x2008, 0x2008 }, /* 0x2009 */ { false, 0x2009, 0x2009 }, /* 0x200a */ { false, 0x200a, 0x200a }, /* 0x200b */ { false, 0x200b, 0x200b }, /* 0x200c */ { false, 0x200c, 0x200c }, /* 0x200d */ { false, 0x200d, 0x200d }, /* 0x200e */ { false, 0x200e, 0x200e }, /* 0x200f */ { false, 0x200f, 0x200f }, /* 0x2010 */ { false, 0x2010, 0x2010 }, /* 0x2011 */ { false, 0x2011, 0x2011 }, /* 0x2012 */ { false, 0x2012, 0x2012 }, /* 0x2013 */ { false, 0x2013, 0x2013 }, /* 0x2014 */ { false, 0x2014, 0x2014 }, /* 0x2015 */ { false, 0x2015, 0x2015 }, /* 0x2016 */ { false, 0x2016, 0x2016 }, /* 0x2017 */ { false, 0x2017, 0x2017 }, /* 0x2018 */ { false, 0x2018, 0x2018 }, /* 0x2019 */ { false, 0x2019, 0x2019 }, /* 0x201a */ { false, 0x201a, 0x201a }, /* 0x201b */ { false, 0x201b, 0x201b }, /* 0x201c */ { false, 0x201c, 0x201c }, /* 0x201d */ { false, 0x201d, 0x201d }, /* 0x201e */ { false, 0x201e, 0x201e }, /* 0x201f */ { false, 0x201f, 0x201f }, /* 0x2020 */ { false, 0x2020, 0x2020 }, /* 0x2021 */ { false, 0x2021, 0x2021 }, /* 0x2022 */ { false, 0x2022, 0x2022 }, /* 0x2023 */ { false, 0x2023, 0x2023 }, /* 0x2024 */ { false, 0x2024, 0x2024 }, /* 0x2025 */ { false, 0x2025, 0x2025 }, /* 0x2026 */ { false, 0x2026, 0x2026 }, /* 0x2027 */ { false, 0x2027, 0x2027 }, /* 0x2028 */ { false, 0x2028, 0x2028 }, /* 0x2029 */ { false, 0x2029, 0x2029 }, /* 0x202a */ { false, 0x202a, 0x202a }, /* 0x202b */ { false, 0x202b, 0x202b }, /* 0x202c */ { false, 0x202c, 0x202c }, /* 0x202d */ { false, 0x202d, 0x202d }, /* 0x202e */ { false, 0x202e, 0x202e }, /* 0x202f */ { false, 0x202f, 0x202f }, /* 0x2030 */ { false, 0x2030, 0x2030 }, /* 0x2031 */ { false, 0x2031, 0x2031 }, /* 0x2032 */ { false, 0x2032, 0x2032 }, /* 0x2033 */ { false, 0x2033, 0x2033 }, /* 0x2034 */ { false, 0x2034, 0x2034 }, /* 0x2035 */ { false, 0x2035, 0x2035 }, /* 0x2036 */ { false, 0x2036, 0x2036 }, /* 0x2037 */ { false, 0x2037, 0x2037 }, /* 0x2038 */ { false, 0x2038, 0x2038 }, /* 0x2039 */ { false, 0x2039, 0x2039 }, /* 0x203a */ { false, 0x203a, 0x203a }, /* 0x203b */ { false, 0x203b, 0x203b }, /* 0x203c */ { false, 0x203c, 0x203c }, /* 0x203d */ { false, 0x203d, 0x203d }, /* 0x203e */ { false, 0x203e, 0x203e }, /* 0x203f */ { false, 0x203f, 0x203f }, /* 0x2040 */ { false, 0x2040, 0x2040 }, /* 0x2041 */ { false, 0x2041, 0x2041 }, /* 0x2042 */ { false, 0x2042, 0x2042 }, /* 0x2043 */ { false, 0x2043, 0x2043 }, /* 0x2044 */ { false, 0x2044, 0x2044 }, /* 0x2045 */ { false, 0x2045, 0x2045 }, /* 0x2046 */ { false, 0x2046, 0x2046 }, /* 0x2047 */ { false, 0x2047, 0x2047 }, /* 0x2048 */ { false, 0x2048, 0x2048 }, /* 0x2049 */ { false, 0x2049, 0x2049 }, /* 0x204a */ { false, 0x204a, 0x204a }, /* 0x204b */ { false, 0x204b, 0x204b }, /* 0x204c */ { false, 0x204c, 0x204c }, /* 0x204d */ { false, 0x204d, 0x204d }, /* 0x204e */ { false, 0x204e, 0x204e }, /* 0x204f */ { false, 0x204f, 0x204f }, /* 0x2050 */ { false, 0x2050, 0x2050 }, /* 0x2051 */ { false, 0x2051, 0x2051 }, /* 0x2052 */ { false, 0x2052, 0x2052 }, /* 0x2053 */ { false, 0x2053, 0x2053 }, /* 0x2054 */ { false, 0x2054, 0x2054 }, /* 0x2055 */ { false, 0x2055, 0x2055 }, /* 0x2056 */ { false, 0x2056, 0x2056 }, /* 0x2057 */ { false, 0x2057, 0x2057 }, /* 0x2058 */ { false, 0x2058, 0x2058 }, /* 0x2059 */ { false, 0x2059, 0x2059 }, /* 0x205a */ { false, 0x205a, 0x205a }, /* 0x205b */ { false, 0x205b, 0x205b }, /* 0x205c */ { false, 0x205c, 0x205c }, /* 0x205d */ { false, 0x205d, 0x205d }, /* 0x205e */ { false, 0x205e, 0x205e }, /* 0x205f */ { false, 0x205f, 0x205f }, /* 0x2060 */ { false, 0x2060, 0x2060 }, /* 0x2061 */ { false, 0x2061, 0x2061 }, /* 0x2062 */ { false, 0x2062, 0x2062 }, /* 0x2063 */ { false, 0x2063, 0x2063 }, /* 0x2064 */ { false, 0x2064, 0x2064 }, /* 0x2065 */ { false, 0x2065, 0x2065 }, /* 0x2066 */ { false, 0x2066, 0x2066 }, /* 0x2067 */ { false, 0x2067, 0x2067 }, /* 0x2068 */ { false, 0x2068, 0x2068 }, /* 0x2069 */ { false, 0x2069, 0x2069 }, /* 0x206a */ { false, 0x206a, 0x206a }, /* 0x206b */ { false, 0x206b, 0x206b }, /* 0x206c */ { false, 0x206c, 0x206c }, /* 0x206d */ { false, 0x206d, 0x206d }, /* 0x206e */ { false, 0x206e, 0x206e }, /* 0x206f */ { false, 0x206f, 0x206f }, /* 0x2070 */ { false, 0x2070, 0x2070 }, /* 0x2071 */ { true, 0x2071, 0x2071 }, /* 0x2072 */ { false, 0x2072, 0x2072 }, /* 0x2073 */ { false, 0x2073, 0x2073 }, /* 0x2074 */ { false, 0x2074, 0x2074 }, /* 0x2075 */ { false, 0x2075, 0x2075 }, /* 0x2076 */ { false, 0x2076, 0x2076 }, /* 0x2077 */ { false, 0x2077, 0x2077 }, /* 0x2078 */ { false, 0x2078, 0x2078 }, /* 0x2079 */ { false, 0x2079, 0x2079 }, /* 0x207a */ { false, 0x207a, 0x207a }, /* 0x207b */ { false, 0x207b, 0x207b }, /* 0x207c */ { false, 0x207c, 0x207c }, /* 0x207d */ { false, 0x207d, 0x207d }, /* 0x207e */ { false, 0x207e, 0x207e }, /* 0x207f */ { true, 0x207f, 0x207f }, /* 0x2080 */ { false, 0x2080, 0x2080 }, /* 0x2081 */ { false, 0x2081, 0x2081 }, /* 0x2082 */ { false, 0x2082, 0x2082 }, /* 0x2083 */ { false, 0x2083, 0x2083 }, /* 0x2084 */ { false, 0x2084, 0x2084 }, /* 0x2085 */ { false, 0x2085, 0x2085 }, /* 0x2086 */ { false, 0x2086, 0x2086 }, /* 0x2087 */ { false, 0x2087, 0x2087 }, /* 0x2088 */ { false, 0x2088, 0x2088 }, /* 0x2089 */ { false, 0x2089, 0x2089 }, /* 0x208a */ { false, 0x208a, 0x208a }, /* 0x208b */ { false, 0x208b, 0x208b }, /* 0x208c */ { false, 0x208c, 0x208c }, /* 0x208d */ { false, 0x208d, 0x208d }, /* 0x208e */ { false, 0x208e, 0x208e }, /* 0x208f */ { false, 0x208f, 0x208f }, /* 0x2090 */ { true, 0x2090, 0x2090 }, /* 0x2091 */ { true, 0x2091, 0x2091 }, /* 0x2092 */ { true, 0x2092, 0x2092 }, /* 0x2093 */ { true, 0x2093, 0x2093 }, /* 0x2094 */ { true, 0x2094, 0x2094 }, /* 0x2095 */ { false, 0x2095, 0x2095 }, /* 0x2096 */ { false, 0x2096, 0x2096 }, /* 0x2097 */ { false, 0x2097, 0x2097 }, /* 0x2098 */ { false, 0x2098, 0x2098 }, /* 0x2099 */ { false, 0x2099, 0x2099 }, /* 0x209a */ { false, 0x209a, 0x209a }, /* 0x209b */ { false, 0x209b, 0x209b }, /* 0x209c */ { false, 0x209c, 0x209c }, /* 0x209d */ { false, 0x209d, 0x209d }, /* 0x209e */ { false, 0x209e, 0x209e }, /* 0x209f */ { false, 0x209f, 0x209f }, /* 0x20a0 */ { false, 0x20a0, 0x20a0 }, /* 0x20a1 */ { false, 0x20a1, 0x20a1 }, /* 0x20a2 */ { false, 0x20a2, 0x20a2 }, /* 0x20a3 */ { false, 0x20a3, 0x20a3 }, /* 0x20a4 */ { false, 0x20a4, 0x20a4 }, /* 0x20a5 */ { false, 0x20a5, 0x20a5 }, /* 0x20a6 */ { false, 0x20a6, 0x20a6 }, /* 0x20a7 */ { false, 0x20a7, 0x20a7 }, /* 0x20a8 */ { false, 0x20a8, 0x20a8 }, /* 0x20a9 */ { false, 0x20a9, 0x20a9 }, /* 0x20aa */ { false, 0x20aa, 0x20aa }, /* 0x20ab */ { false, 0x20ab, 0x20ab }, /* 0x20ac */ { false, 0x20ac, 0x20ac }, /* 0x20ad */ { false, 0x20ad, 0x20ad }, /* 0x20ae */ { false, 0x20ae, 0x20ae }, /* 0x20af */ { false, 0x20af, 0x20af }, /* 0x20b0 */ { false, 0x20b0, 0x20b0 }, /* 0x20b1 */ { false, 0x20b1, 0x20b1 }, /* 0x20b2 */ { false, 0x20b2, 0x20b2 }, /* 0x20b3 */ { false, 0x20b3, 0x20b3 }, /* 0x20b4 */ { false, 0x20b4, 0x20b4 }, /* 0x20b5 */ { false, 0x20b5, 0x20b5 }, /* 0x20b6 */ { false, 0x20b6, 0x20b6 }, /* 0x20b7 */ { false, 0x20b7, 0x20b7 }, /* 0x20b8 */ { false, 0x20b8, 0x20b8 }, /* 0x20b9 */ { false, 0x20b9, 0x20b9 }, /* 0x20ba */ { false, 0x20ba, 0x20ba }, /* 0x20bb */ { false, 0x20bb, 0x20bb }, /* 0x20bc */ { false, 0x20bc, 0x20bc }, /* 0x20bd */ { false, 0x20bd, 0x20bd }, /* 0x20be */ { false, 0x20be, 0x20be }, /* 0x20bf */ { false, 0x20bf, 0x20bf }, /* 0x20c0 */ { false, 0x20c0, 0x20c0 }, /* 0x20c1 */ { false, 0x20c1, 0x20c1 }, /* 0x20c2 */ { false, 0x20c2, 0x20c2 }, /* 0x20c3 */ { false, 0x20c3, 0x20c3 }, /* 0x20c4 */ { false, 0x20c4, 0x20c4 }, /* 0x20c5 */ { false, 0x20c5, 0x20c5 }, /* 0x20c6 */ { false, 0x20c6, 0x20c6 }, /* 0x20c7 */ { false, 0x20c7, 0x20c7 }, /* 0x20c8 */ { false, 0x20c8, 0x20c8 }, /* 0x20c9 */ { false, 0x20c9, 0x20c9 }, /* 0x20ca */ { false, 0x20ca, 0x20ca }, /* 0x20cb */ { false, 0x20cb, 0x20cb }, /* 0x20cc */ { false, 0x20cc, 0x20cc }, /* 0x20cd */ { false, 0x20cd, 0x20cd }, /* 0x20ce */ { false, 0x20ce, 0x20ce }, /* 0x20cf */ { false, 0x20cf, 0x20cf }, /* 0x20d0 */ { true, 0x20d0, 0x20d0 }, /* 0x20d1 */ { true, 0x20d1, 0x20d1 }, /* 0x20d2 */ { true, 0x20d2, 0x20d2 }, /* 0x20d3 */ { true, 0x20d3, 0x20d3 }, /* 0x20d4 */ { true, 0x20d4, 0x20d4 }, /* 0x20d5 */ { true, 0x20d5, 0x20d5 }, /* 0x20d6 */ { true, 0x20d6, 0x20d6 }, /* 0x20d7 */ { true, 0x20d7, 0x20d7 }, /* 0x20d8 */ { true, 0x20d8, 0x20d8 }, /* 0x20d9 */ { true, 0x20d9, 0x20d9 }, /* 0x20da */ { true, 0x20da, 0x20da }, /* 0x20db */ { true, 0x20db, 0x20db }, /* 0x20dc */ { true, 0x20dc, 0x20dc }, /* 0x20dd */ { false, 0x20dd, 0x20dd }, /* 0x20de */ { false, 0x20de, 0x20de }, /* 0x20df */ { false, 0x20df, 0x20df }, /* 0x20e0 */ { false, 0x20e0, 0x20e0 }, /* 0x20e1 */ { true, 0x20e1, 0x20e1 }, /* 0x20e2 */ { false, 0x20e2, 0x20e2 }, /* 0x20e3 */ { false, 0x20e3, 0x20e3 }, /* 0x20e4 */ { false, 0x20e4, 0x20e4 }, /* 0x20e5 */ { true, 0x20e5, 0x20e5 }, /* 0x20e6 */ { true, 0x20e6, 0x20e6 }, /* 0x20e7 */ { true, 0x20e7, 0x20e7 }, /* 0x20e8 */ { true, 0x20e8, 0x20e8 }, /* 0x20e9 */ { true, 0x20e9, 0x20e9 }, /* 0x20ea */ { true, 0x20ea, 0x20ea }, /* 0x20eb */ { true, 0x20eb, 0x20eb }, /* 0x20ec */ { false, 0x20ec, 0x20ec }, /* 0x20ed */ { false, 0x20ed, 0x20ed }, /* 0x20ee */ { false, 0x20ee, 0x20ee }, /* 0x20ef */ { false, 0x20ef, 0x20ef }, /* 0x20f0 */ { false, 0x20f0, 0x20f0 }, /* 0x20f1 */ { false, 0x20f1, 0x20f1 }, /* 0x20f2 */ { false, 0x20f2, 0x20f2 }, /* 0x20f3 */ { false, 0x20f3, 0x20f3 }, /* 0x20f4 */ { false, 0x20f4, 0x20f4 }, /* 0x20f5 */ { false, 0x20f5, 0x20f5 }, /* 0x20f6 */ { false, 0x20f6, 0x20f6 }, /* 0x20f7 */ { false, 0x20f7, 0x20f7 }, /* 0x20f8 */ { false, 0x20f8, 0x20f8 }, /* 0x20f9 */ { false, 0x20f9, 0x20f9 }, /* 0x20fa */ { false, 0x20fa, 0x20fa }, /* 0x20fb */ { false, 0x20fb, 0x20fb }, /* 0x20fc */ { false, 0x20fc, 0x20fc }, /* 0x20fd */ { false, 0x20fd, 0x20fd }, /* 0x20fe */ { false, 0x20fe, 0x20fe }, /* 0x20ff */ { false, 0x20ff, 0x20ff }, /* 0x2100 */ { false, 0x2100, 0x2100 }, /* 0x2101 */ { false, 0x2101, 0x2101 }, /* 0x2102 */ { true, 0x2102, 0x2102 }, /* 0x2103 */ { false, 0x2103, 0x2103 }, /* 0x2104 */ { false, 0x2104, 0x2104 }, /* 0x2105 */ { false, 0x2105, 0x2105 }, /* 0x2106 */ { false, 0x2106, 0x2106 }, /* 0x2107 */ { true, 0x2107, 0x2107 }, /* 0x2108 */ { false, 0x2108, 0x2108 }, /* 0x2109 */ { false, 0x2109, 0x2109 }, /* 0x210a */ { true, 0x210a, 0x210a }, /* 0x210b */ { true, 0x210b, 0x210b }, /* 0x210c */ { true, 0x210c, 0x210c }, /* 0x210d */ { true, 0x210d, 0x210d }, /* 0x210e */ { true, 0x210e, 0x210e }, /* 0x210f */ { true, 0x210f, 0x210f }, /* 0x2110 */ { true, 0x2110, 0x2110 }, /* 0x2111 */ { true, 0x2111, 0x2111 }, /* 0x2112 */ { true, 0x2112, 0x2112 }, /* 0x2113 */ { true, 0x2113, 0x2113 }, /* 0x2114 */ { false, 0x2114, 0x2114 }, /* 0x2115 */ { true, 0x2115, 0x2115 }, /* 0x2116 */ { false, 0x2116, 0x2116 }, /* 0x2117 */ { false, 0x2117, 0x2117 }, /* 0x2118 */ { false, 0x2118, 0x2118 }, /* 0x2119 */ { true, 0x2119, 0x2119 }, /* 0x211a */ { true, 0x211a, 0x211a }, /* 0x211b */ { true, 0x211b, 0x211b }, /* 0x211c */ { true, 0x211c, 0x211c }, /* 0x211d */ { true, 0x211d, 0x211d }, /* 0x211e */ { false, 0x211e, 0x211e }, /* 0x211f */ { false, 0x211f, 0x211f }, /* 0x2120 */ { false, 0x2120, 0x2120 }, /* 0x2121 */ { false, 0x2121, 0x2121 }, /* 0x2122 */ { false, 0x2122, 0x2122 }, /* 0x2123 */ { false, 0x2123, 0x2123 }, /* 0x2124 */ { true, 0x2124, 0x2124 }, /* 0x2125 */ { false, 0x2125, 0x2125 }, /* 0x2126 */ { true, 0x2126, 0x03c9 }, /* 0x2127 */ { false, 0x2127, 0x2127 }, /* 0x2128 */ { true, 0x2128, 0x2128 }, /* 0x2129 */ { false, 0x2129, 0x2129 }, /* 0x212a */ { true, 0x212a, 0x006b }, /* 0x212b */ { true, 0x212b, 0x00e5 }, /* 0x212c */ { true, 0x212c, 0x212c }, /* 0x212d */ { true, 0x212d, 0x212d }, /* 0x212e */ { false, 0x212e, 0x212e }, /* 0x212f */ { true, 0x212f, 0x212f }, /* 0x2130 */ { true, 0x2130, 0x2130 }, /* 0x2131 */ { true, 0x2131, 0x2131 }, /* 0x2132 */ { false, 0x2132, 0x2132 }, /* 0x2133 */ { true, 0x2133, 0x2133 }, /* 0x2134 */ { true, 0x2134, 0x2134 }, /* 0x2135 */ { true, 0x2135, 0x2135 }, /* 0x2136 */ { true, 0x2136, 0x2136 }, /* 0x2137 */ { true, 0x2137, 0x2137 }, /* 0x2138 */ { true, 0x2138, 0x2138 }, /* 0x2139 */ { true, 0x2139, 0x2139 }, /* 0x213a */ { false, 0x213a, 0x213a }, /* 0x213b */ { false, 0x213b, 0x213b }, /* 0x213c */ { true, 0x213c, 0x213c }, /* 0x213d */ { true, 0x213d, 0x213d }, /* 0x213e */ { true, 0x213e, 0x213e }, /* 0x213f */ { true, 0x213f, 0x213f }, /* 0x2140 */ { false, 0x2140, 0x2140 }, /* 0x2141 */ { false, 0x2141, 0x2141 }, /* 0x2142 */ { false, 0x2142, 0x2142 }, /* 0x2143 */ { false, 0x2143, 0x2143 }, /* 0x2144 */ { false, 0x2144, 0x2144 }, /* 0x2145 */ { true, 0x2145, 0x2145 }, /* 0x2146 */ { true, 0x2146, 0x2146 }, /* 0x2147 */ { true, 0x2147, 0x2147 }, /* 0x2148 */ { true, 0x2148, 0x2148 }, /* 0x2149 */ { true, 0x2149, 0x2149 }, /* 0x214a */ { false, 0x214a, 0x214a }, /* 0x214b */ { false, 0x214b, 0x214b }, /* 0x214c */ { false, 0x214c, 0x214c }, /* 0x214d */ { false, 0x214d, 0x214d }, /* 0x214e */ { false, 0x214e, 0x214e }, /* 0x214f */ { false, 0x214f, 0x214f }, /* 0x2150 */ { false, 0x2150, 0x2150 }, /* 0x2151 */ { false, 0x2151, 0x2151 }, /* 0x2152 */ { false, 0x2152, 0x2152 }, /* 0x2153 */ { false, 0x2153, 0x2153 }, /* 0x2154 */ { false, 0x2154, 0x2154 }, /* 0x2155 */ { false, 0x2155, 0x2155 }, /* 0x2156 */ { false, 0x2156, 0x2156 }, /* 0x2157 */ { false, 0x2157, 0x2157 }, /* 0x2158 */ { false, 0x2158, 0x2158 }, /* 0x2159 */ { false, 0x2159, 0x2159 }, /* 0x215a */ { false, 0x215a, 0x215a }, /* 0x215b */ { false, 0x215b, 0x215b }, /* 0x215c */ { false, 0x215c, 0x215c }, /* 0x215d */ { false, 0x215d, 0x215d }, /* 0x215e */ { false, 0x215e, 0x215e }, /* 0x215f */ { false, 0x215f, 0x215f }, /* 0x2160 */ { false, 0x2160, 0x2160 }, /* 0x2161 */ { false, 0x2161, 0x2161 }, /* 0x2162 */ { false, 0x2162, 0x2162 }, /* 0x2163 */ { false, 0x2163, 0x2163 }, /* 0x2164 */ { false, 0x2164, 0x2164 }, /* 0x2165 */ { false, 0x2165, 0x2165 }, /* 0x2166 */ { false, 0x2166, 0x2166 }, /* 0x2167 */ { false, 0x2167, 0x2167 }, /* 0x2168 */ { false, 0x2168, 0x2168 }, /* 0x2169 */ { false, 0x2169, 0x2169 }, /* 0x216a */ { false, 0x216a, 0x216a }, /* 0x216b */ { false, 0x216b, 0x216b }, /* 0x216c */ { false, 0x216c, 0x216c }, /* 0x216d */ { false, 0x216d, 0x216d }, /* 0x216e */ { false, 0x216e, 0x216e }, /* 0x216f */ { false, 0x216f, 0x216f }, /* 0x2170 */ { false, 0x2170, 0x2170 }, /* 0x2171 */ { false, 0x2171, 0x2171 }, /* 0x2172 */ { false, 0x2172, 0x2172 }, /* 0x2173 */ { false, 0x2173, 0x2173 }, /* 0x2174 */ { false, 0x2174, 0x2174 }, /* 0x2175 */ { false, 0x2175, 0x2175 }, /* 0x2176 */ { false, 0x2176, 0x2176 }, /* 0x2177 */ { false, 0x2177, 0x2177 }, /* 0x2178 */ { false, 0x2178, 0x2178 }, /* 0x2179 */ { false, 0x2179, 0x2179 }, /* 0x217a */ { false, 0x217a, 0x217a }, /* 0x217b */ { false, 0x217b, 0x217b }, /* 0x217c */ { false, 0x217c, 0x217c }, /* 0x217d */ { false, 0x217d, 0x217d }, /* 0x217e */ { false, 0x217e, 0x217e }, /* 0x217f */ { false, 0x217f, 0x217f }, /* 0x2180 */ { false, 0x2180, 0x2180 }, /* 0x2181 */ { false, 0x2181, 0x2181 }, /* 0x2182 */ { false, 0x2182, 0x2182 }, /* 0x2183 */ { false, 0x2183, 0x2183 }, /* 0x2184 */ { false, 0x2184, 0x2184 }, /* 0x2185 */ { false, 0x2185, 0x2185 }, /* 0x2186 */ { false, 0x2186, 0x2186 }, /* 0x2187 */ { false, 0x2187, 0x2187 }, /* 0x2188 */ { false, 0x2188, 0x2188 }, /* 0x2189 */ { false, 0x2189, 0x2189 }, /* 0x218a */ { false, 0x218a, 0x218a }, /* 0x218b */ { false, 0x218b, 0x218b }, /* 0x218c */ { false, 0x218c, 0x218c }, /* 0x218d */ { false, 0x218d, 0x218d }, /* 0x218e */ { false, 0x218e, 0x218e }, /* 0x218f */ { false, 0x218f, 0x218f }, /* 0x2190 */ { false, 0x2190, 0x2190 }, /* 0x2191 */ { false, 0x2191, 0x2191 }, /* 0x2192 */ { false, 0x2192, 0x2192 }, /* 0x2193 */ { false, 0x2193, 0x2193 }, /* 0x2194 */ { false, 0x2194, 0x2194 }, /* 0x2195 */ { false, 0x2195, 0x2195 }, /* 0x2196 */ { false, 0x2196, 0x2196 }, /* 0x2197 */ { false, 0x2197, 0x2197 }, /* 0x2198 */ { false, 0x2198, 0x2198 }, /* 0x2199 */ { false, 0x2199, 0x2199 }, /* 0x219a */ { false, 0x219a, 0x219a }, /* 0x219b */ { false, 0x219b, 0x219b }, /* 0x219c */ { false, 0x219c, 0x219c }, /* 0x219d */ { false, 0x219d, 0x219d }, /* 0x219e */ { false, 0x219e, 0x219e }, /* 0x219f */ { false, 0x219f, 0x219f }, /* 0x21a0 */ { false, 0x21a0, 0x21a0 }, /* 0x21a1 */ { false, 0x21a1, 0x21a1 }, /* 0x21a2 */ { false, 0x21a2, 0x21a2 }, /* 0x21a3 */ { false, 0x21a3, 0x21a3 }, /* 0x21a4 */ { false, 0x21a4, 0x21a4 }, /* 0x21a5 */ { false, 0x21a5, 0x21a5 }, /* 0x21a6 */ { false, 0x21a6, 0x21a6 }, /* 0x21a7 */ { false, 0x21a7, 0x21a7 }, /* 0x21a8 */ { false, 0x21a8, 0x21a8 }, /* 0x21a9 */ { false, 0x21a9, 0x21a9 }, /* 0x21aa */ { false, 0x21aa, 0x21aa }, /* 0x21ab */ { false, 0x21ab, 0x21ab }, /* 0x21ac */ { false, 0x21ac, 0x21ac }, /* 0x21ad */ { false, 0x21ad, 0x21ad }, /* 0x21ae */ { false, 0x21ae, 0x21ae }, /* 0x21af */ { false, 0x21af, 0x21af }, /* 0x21b0 */ { false, 0x21b0, 0x21b0 }, /* 0x21b1 */ { false, 0x21b1, 0x21b1 }, /* 0x21b2 */ { false, 0x21b2, 0x21b2 }, /* 0x21b3 */ { false, 0x21b3, 0x21b3 }, /* 0x21b4 */ { false, 0x21b4, 0x21b4 }, /* 0x21b5 */ { false, 0x21b5, 0x21b5 }, /* 0x21b6 */ { false, 0x21b6, 0x21b6 }, /* 0x21b7 */ { false, 0x21b7, 0x21b7 }, /* 0x21b8 */ { false, 0x21b8, 0x21b8 }, /* 0x21b9 */ { false, 0x21b9, 0x21b9 }, /* 0x21ba */ { false, 0x21ba, 0x21ba }, /* 0x21bb */ { false, 0x21bb, 0x21bb }, /* 0x21bc */ { false, 0x21bc, 0x21bc }, /* 0x21bd */ { false, 0x21bd, 0x21bd }, /* 0x21be */ { false, 0x21be, 0x21be }, /* 0x21bf */ { false, 0x21bf, 0x21bf }, /* 0x21c0 */ { false, 0x21c0, 0x21c0 }, /* 0x21c1 */ { false, 0x21c1, 0x21c1 }, /* 0x21c2 */ { false, 0x21c2, 0x21c2 }, /* 0x21c3 */ { false, 0x21c3, 0x21c3 }, /* 0x21c4 */ { false, 0x21c4, 0x21c4 }, /* 0x21c5 */ { false, 0x21c5, 0x21c5 }, /* 0x21c6 */ { false, 0x21c6, 0x21c6 }, /* 0x21c7 */ { false, 0x21c7, 0x21c7 }, /* 0x21c8 */ { false, 0x21c8, 0x21c8 }, /* 0x21c9 */ { false, 0x21c9, 0x21c9 }, /* 0x21ca */ { false, 0x21ca, 0x21ca }, /* 0x21cb */ { false, 0x21cb, 0x21cb }, /* 0x21cc */ { false, 0x21cc, 0x21cc }, /* 0x21cd */ { false, 0x21cd, 0x21cd }, /* 0x21ce */ { false, 0x21ce, 0x21ce }, /* 0x21cf */ { false, 0x21cf, 0x21cf }, /* 0x21d0 */ { false, 0x21d0, 0x21d0 }, /* 0x21d1 */ { false, 0x21d1, 0x21d1 }, /* 0x21d2 */ { false, 0x21d2, 0x21d2 }, /* 0x21d3 */ { false, 0x21d3, 0x21d3 }, /* 0x21d4 */ { false, 0x21d4, 0x21d4 }, /* 0x21d5 */ { false, 0x21d5, 0x21d5 }, /* 0x21d6 */ { false, 0x21d6, 0x21d6 }, /* 0x21d7 */ { false, 0x21d7, 0x21d7 }, /* 0x21d8 */ { false, 0x21d8, 0x21d8 }, /* 0x21d9 */ { false, 0x21d9, 0x21d9 }, /* 0x21da */ { false, 0x21da, 0x21da }, /* 0x21db */ { false, 0x21db, 0x21db }, /* 0x21dc */ { false, 0x21dc, 0x21dc }, /* 0x21dd */ { false, 0x21dd, 0x21dd }, /* 0x21de */ { false, 0x21de, 0x21de }, /* 0x21df */ { false, 0x21df, 0x21df }, /* 0x21e0 */ { false, 0x21e0, 0x21e0 }, /* 0x21e1 */ { false, 0x21e1, 0x21e1 }, /* 0x21e2 */ { false, 0x21e2, 0x21e2 }, /* 0x21e3 */ { false, 0x21e3, 0x21e3 }, /* 0x21e4 */ { false, 0x21e4, 0x21e4 }, /* 0x21e5 */ { false, 0x21e5, 0x21e5 }, /* 0x21e6 */ { false, 0x21e6, 0x21e6 }, /* 0x21e7 */ { false, 0x21e7, 0x21e7 }, /* 0x21e8 */ { false, 0x21e8, 0x21e8 }, /* 0x21e9 */ { false, 0x21e9, 0x21e9 }, /* 0x21ea */ { false, 0x21ea, 0x21ea }, /* 0x21eb */ { false, 0x21eb, 0x21eb }, /* 0x21ec */ { false, 0x21ec, 0x21ec }, /* 0x21ed */ { false, 0x21ed, 0x21ed }, /* 0x21ee */ { false, 0x21ee, 0x21ee }, /* 0x21ef */ { false, 0x21ef, 0x21ef }, /* 0x21f0 */ { false, 0x21f0, 0x21f0 }, /* 0x21f1 */ { false, 0x21f1, 0x21f1 }, /* 0x21f2 */ { false, 0x21f2, 0x21f2 }, /* 0x21f3 */ { false, 0x21f3, 0x21f3 }, /* 0x21f4 */ { false, 0x21f4, 0x21f4 }, /* 0x21f5 */ { false, 0x21f5, 0x21f5 }, /* 0x21f6 */ { false, 0x21f6, 0x21f6 }, /* 0x21f7 */ { false, 0x21f7, 0x21f7 }, /* 0x21f8 */ { false, 0x21f8, 0x21f8 }, /* 0x21f9 */ { false, 0x21f9, 0x21f9 }, /* 0x21fa */ { false, 0x21fa, 0x21fa }, /* 0x21fb */ { false, 0x21fb, 0x21fb }, /* 0x21fc */ { false, 0x21fc, 0x21fc }, /* 0x21fd */ { false, 0x21fd, 0x21fd }, /* 0x21fe */ { false, 0x21fe, 0x21fe }, /* 0x21ff */ { false, 0x21ff, 0x21ff }, /* 0x2200 */ { false, 0x2200, 0x2200 }, /* 0x2201 */ { false, 0x2201, 0x2201 }, /* 0x2202 */ { false, 0x2202, 0x2202 }, /* 0x2203 */ { false, 0x2203, 0x2203 }, /* 0x2204 */ { false, 0x2204, 0x2204 }, /* 0x2205 */ { false, 0x2205, 0x2205 }, /* 0x2206 */ { false, 0x2206, 0x2206 }, /* 0x2207 */ { false, 0x2207, 0x2207 }, /* 0x2208 */ { false, 0x2208, 0x2208 }, /* 0x2209 */ { false, 0x2209, 0x2209 }, /* 0x220a */ { false, 0x220a, 0x220a }, /* 0x220b */ { false, 0x220b, 0x220b }, /* 0x220c */ { false, 0x220c, 0x220c }, /* 0x220d */ { false, 0x220d, 0x220d }, /* 0x220e */ { false, 0x220e, 0x220e }, /* 0x220f */ { false, 0x220f, 0x220f }, /* 0x2210 */ { false, 0x2210, 0x2210 }, /* 0x2211 */ { false, 0x2211, 0x2211 }, /* 0x2212 */ { false, 0x2212, 0x2212 }, /* 0x2213 */ { false, 0x2213, 0x2213 }, /* 0x2214 */ { false, 0x2214, 0x2214 }, /* 0x2215 */ { false, 0x2215, 0x2215 }, /* 0x2216 */ { false, 0x2216, 0x2216 }, /* 0x2217 */ { false, 0x2217, 0x2217 }, /* 0x2218 */ { false, 0x2218, 0x2218 }, /* 0x2219 */ { false, 0x2219, 0x2219 }, /* 0x221a */ { false, 0x221a, 0x221a }, /* 0x221b */ { false, 0x221b, 0x221b }, /* 0x221c */ { false, 0x221c, 0x221c }, /* 0x221d */ { false, 0x221d, 0x221d }, /* 0x221e */ { false, 0x221e, 0x221e }, /* 0x221f */ { false, 0x221f, 0x221f }, /* 0x2220 */ { false, 0x2220, 0x2220 }, /* 0x2221 */ { false, 0x2221, 0x2221 }, /* 0x2222 */ { false, 0x2222, 0x2222 }, /* 0x2223 */ { false, 0x2223, 0x2223 }, /* 0x2224 */ { false, 0x2224, 0x2224 }, /* 0x2225 */ { false, 0x2225, 0x2225 }, /* 0x2226 */ { false, 0x2226, 0x2226 }, /* 0x2227 */ { false, 0x2227, 0x2227 }, /* 0x2228 */ { false, 0x2228, 0x2228 }, /* 0x2229 */ { false, 0x2229, 0x2229 }, /* 0x222a */ { false, 0x222a, 0x222a }, /* 0x222b */ { false, 0x222b, 0x222b }, /* 0x222c */ { false, 0x222c, 0x222c }, /* 0x222d */ { false, 0x222d, 0x222d }, /* 0x222e */ { false, 0x222e, 0x222e }, /* 0x222f */ { false, 0x222f, 0x222f }, /* 0x2230 */ { false, 0x2230, 0x2230 }, /* 0x2231 */ { false, 0x2231, 0x2231 }, /* 0x2232 */ { false, 0x2232, 0x2232 }, /* 0x2233 */ { false, 0x2233, 0x2233 }, /* 0x2234 */ { false, 0x2234, 0x2234 }, /* 0x2235 */ { false, 0x2235, 0x2235 }, /* 0x2236 */ { false, 0x2236, 0x2236 }, /* 0x2237 */ { false, 0x2237, 0x2237 }, /* 0x2238 */ { false, 0x2238, 0x2238 }, /* 0x2239 */ { false, 0x2239, 0x2239 }, /* 0x223a */ { false, 0x223a, 0x223a }, /* 0x223b */ { false, 0x223b, 0x223b }, /* 0x223c */ { false, 0x223c, 0x223c }, /* 0x223d */ { false, 0x223d, 0x223d }, /* 0x223e */ { false, 0x223e, 0x223e }, /* 0x223f */ { false, 0x223f, 0x223f }, /* 0x2240 */ { false, 0x2240, 0x2240 }, /* 0x2241 */ { false, 0x2241, 0x2241 }, /* 0x2242 */ { false, 0x2242, 0x2242 }, /* 0x2243 */ { false, 0x2243, 0x2243 }, /* 0x2244 */ { false, 0x2244, 0x2244 }, /* 0x2245 */ { false, 0x2245, 0x2245 }, /* 0x2246 */ { false, 0x2246, 0x2246 }, /* 0x2247 */ { false, 0x2247, 0x2247 }, /* 0x2248 */ { false, 0x2248, 0x2248 }, /* 0x2249 */ { false, 0x2249, 0x2249 }, /* 0x224a */ { false, 0x224a, 0x224a }, /* 0x224b */ { false, 0x224b, 0x224b }, /* 0x224c */ { false, 0x224c, 0x224c }, /* 0x224d */ { false, 0x224d, 0x224d }, /* 0x224e */ { false, 0x224e, 0x224e }, /* 0x224f */ { false, 0x224f, 0x224f }, /* 0x2250 */ { false, 0x2250, 0x2250 }, /* 0x2251 */ { false, 0x2251, 0x2251 }, /* 0x2252 */ { false, 0x2252, 0x2252 }, /* 0x2253 */ { false, 0x2253, 0x2253 }, /* 0x2254 */ { false, 0x2254, 0x2254 }, /* 0x2255 */ { false, 0x2255, 0x2255 }, /* 0x2256 */ { false, 0x2256, 0x2256 }, /* 0x2257 */ { false, 0x2257, 0x2257 }, /* 0x2258 */ { false, 0x2258, 0x2258 }, /* 0x2259 */ { false, 0x2259, 0x2259 }, /* 0x225a */ { false, 0x225a, 0x225a }, /* 0x225b */ { false, 0x225b, 0x225b }, /* 0x225c */ { false, 0x225c, 0x225c }, /* 0x225d */ { false, 0x225d, 0x225d }, /* 0x225e */ { false, 0x225e, 0x225e }, /* 0x225f */ { false, 0x225f, 0x225f }, /* 0x2260 */ { false, 0x2260, 0x2260 }, /* 0x2261 */ { false, 0x2261, 0x2261 }, /* 0x2262 */ { false, 0x2262, 0x2262 }, /* 0x2263 */ { false, 0x2263, 0x2263 }, /* 0x2264 */ { false, 0x2264, 0x2264 }, /* 0x2265 */ { false, 0x2265, 0x2265 }, /* 0x2266 */ { false, 0x2266, 0x2266 }, /* 0x2267 */ { false, 0x2267, 0x2267 }, /* 0x2268 */ { false, 0x2268, 0x2268 }, /* 0x2269 */ { false, 0x2269, 0x2269 }, /* 0x226a */ { false, 0x226a, 0x226a }, /* 0x226b */ { false, 0x226b, 0x226b }, /* 0x226c */ { false, 0x226c, 0x226c }, /* 0x226d */ { false, 0x226d, 0x226d }, /* 0x226e */ { false, 0x226e, 0x226e }, /* 0x226f */ { false, 0x226f, 0x226f }, /* 0x2270 */ { false, 0x2270, 0x2270 }, /* 0x2271 */ { false, 0x2271, 0x2271 }, /* 0x2272 */ { false, 0x2272, 0x2272 }, /* 0x2273 */ { false, 0x2273, 0x2273 }, /* 0x2274 */ { false, 0x2274, 0x2274 }, /* 0x2275 */ { false, 0x2275, 0x2275 }, /* 0x2276 */ { false, 0x2276, 0x2276 }, /* 0x2277 */ { false, 0x2277, 0x2277 }, /* 0x2278 */ { false, 0x2278, 0x2278 }, /* 0x2279 */ { false, 0x2279, 0x2279 }, /* 0x227a */ { false, 0x227a, 0x227a }, /* 0x227b */ { false, 0x227b, 0x227b }, /* 0x227c */ { false, 0x227c, 0x227c }, /* 0x227d */ { false, 0x227d, 0x227d }, /* 0x227e */ { false, 0x227e, 0x227e }, /* 0x227f */ { false, 0x227f, 0x227f }, /* 0x2280 */ { false, 0x2280, 0x2280 }, /* 0x2281 */ { false, 0x2281, 0x2281 }, /* 0x2282 */ { false, 0x2282, 0x2282 }, /* 0x2283 */ { false, 0x2283, 0x2283 }, /* 0x2284 */ { false, 0x2284, 0x2284 }, /* 0x2285 */ { false, 0x2285, 0x2285 }, /* 0x2286 */ { false, 0x2286, 0x2286 }, /* 0x2287 */ { false, 0x2287, 0x2287 }, /* 0x2288 */ { false, 0x2288, 0x2288 }, /* 0x2289 */ { false, 0x2289, 0x2289 }, /* 0x228a */ { false, 0x228a, 0x228a }, /* 0x228b */ { false, 0x228b, 0x228b }, /* 0x228c */ { false, 0x228c, 0x228c }, /* 0x228d */ { false, 0x228d, 0x228d }, /* 0x228e */ { false, 0x228e, 0x228e }, /* 0x228f */ { false, 0x228f, 0x228f }, /* 0x2290 */ { false, 0x2290, 0x2290 }, /* 0x2291 */ { false, 0x2291, 0x2291 }, /* 0x2292 */ { false, 0x2292, 0x2292 }, /* 0x2293 */ { false, 0x2293, 0x2293 }, /* 0x2294 */ { false, 0x2294, 0x2294 }, /* 0x2295 */ { false, 0x2295, 0x2295 }, /* 0x2296 */ { false, 0x2296, 0x2296 }, /* 0x2297 */ { false, 0x2297, 0x2297 }, /* 0x2298 */ { false, 0x2298, 0x2298 }, /* 0x2299 */ { false, 0x2299, 0x2299 }, /* 0x229a */ { false, 0x229a, 0x229a }, /* 0x229b */ { false, 0x229b, 0x229b }, /* 0x229c */ { false, 0x229c, 0x229c }, /* 0x229d */ { false, 0x229d, 0x229d }, /* 0x229e */ { false, 0x229e, 0x229e }, /* 0x229f */ { false, 0x229f, 0x229f }, /* 0x22a0 */ { false, 0x22a0, 0x22a0 }, /* 0x22a1 */ { false, 0x22a1, 0x22a1 }, /* 0x22a2 */ { false, 0x22a2, 0x22a2 }, /* 0x22a3 */ { false, 0x22a3, 0x22a3 }, /* 0x22a4 */ { false, 0x22a4, 0x22a4 }, /* 0x22a5 */ { false, 0x22a5, 0x22a5 }, /* 0x22a6 */ { false, 0x22a6, 0x22a6 }, /* 0x22a7 */ { false, 0x22a7, 0x22a7 }, /* 0x22a8 */ { false, 0x22a8, 0x22a8 }, /* 0x22a9 */ { false, 0x22a9, 0x22a9 }, /* 0x22aa */ { false, 0x22aa, 0x22aa }, /* 0x22ab */ { false, 0x22ab, 0x22ab }, /* 0x22ac */ { false, 0x22ac, 0x22ac }, /* 0x22ad */ { false, 0x22ad, 0x22ad }, /* 0x22ae */ { false, 0x22ae, 0x22ae }, /* 0x22af */ { false, 0x22af, 0x22af }, /* 0x22b0 */ { false, 0x22b0, 0x22b0 }, /* 0x22b1 */ { false, 0x22b1, 0x22b1 }, /* 0x22b2 */ { false, 0x22b2, 0x22b2 }, /* 0x22b3 */ { false, 0x22b3, 0x22b3 }, /* 0x22b4 */ { false, 0x22b4, 0x22b4 }, /* 0x22b5 */ { false, 0x22b5, 0x22b5 }, /* 0x22b6 */ { false, 0x22b6, 0x22b6 }, /* 0x22b7 */ { false, 0x22b7, 0x22b7 }, /* 0x22b8 */ { false, 0x22b8, 0x22b8 }, /* 0x22b9 */ { false, 0x22b9, 0x22b9 }, /* 0x22ba */ { false, 0x22ba, 0x22ba }, /* 0x22bb */ { false, 0x22bb, 0x22bb }, /* 0x22bc */ { false, 0x22bc, 0x22bc }, /* 0x22bd */ { false, 0x22bd, 0x22bd }, /* 0x22be */ { false, 0x22be, 0x22be }, /* 0x22bf */ { false, 0x22bf, 0x22bf }, /* 0x22c0 */ { false, 0x22c0, 0x22c0 }, /* 0x22c1 */ { false, 0x22c1, 0x22c1 }, /* 0x22c2 */ { false, 0x22c2, 0x22c2 }, /* 0x22c3 */ { false, 0x22c3, 0x22c3 }, /* 0x22c4 */ { false, 0x22c4, 0x22c4 }, /* 0x22c5 */ { false, 0x22c5, 0x22c5 }, /* 0x22c6 */ { false, 0x22c6, 0x22c6 }, /* 0x22c7 */ { false, 0x22c7, 0x22c7 }, /* 0x22c8 */ { false, 0x22c8, 0x22c8 }, /* 0x22c9 */ { false, 0x22c9, 0x22c9 }, /* 0x22ca */ { false, 0x22ca, 0x22ca }, /* 0x22cb */ { false, 0x22cb, 0x22cb }, /* 0x22cc */ { false, 0x22cc, 0x22cc }, /* 0x22cd */ { false, 0x22cd, 0x22cd }, /* 0x22ce */ { false, 0x22ce, 0x22ce }, /* 0x22cf */ { false, 0x22cf, 0x22cf }, /* 0x22d0 */ { false, 0x22d0, 0x22d0 }, /* 0x22d1 */ { false, 0x22d1, 0x22d1 }, /* 0x22d2 */ { false, 0x22d2, 0x22d2 }, /* 0x22d3 */ { false, 0x22d3, 0x22d3 }, /* 0x22d4 */ { false, 0x22d4, 0x22d4 }, /* 0x22d5 */ { false, 0x22d5, 0x22d5 }, /* 0x22d6 */ { false, 0x22d6, 0x22d6 }, /* 0x22d7 */ { false, 0x22d7, 0x22d7 }, /* 0x22d8 */ { false, 0x22d8, 0x22d8 }, /* 0x22d9 */ { false, 0x22d9, 0x22d9 }, /* 0x22da */ { false, 0x22da, 0x22da }, /* 0x22db */ { false, 0x22db, 0x22db }, /* 0x22dc */ { false, 0x22dc, 0x22dc }, /* 0x22dd */ { false, 0x22dd, 0x22dd }, /* 0x22de */ { false, 0x22de, 0x22de }, /* 0x22df */ { false, 0x22df, 0x22df }, /* 0x22e0 */ { false, 0x22e0, 0x22e0 }, /* 0x22e1 */ { false, 0x22e1, 0x22e1 }, /* 0x22e2 */ { false, 0x22e2, 0x22e2 }, /* 0x22e3 */ { false, 0x22e3, 0x22e3 }, /* 0x22e4 */ { false, 0x22e4, 0x22e4 }, /* 0x22e5 */ { false, 0x22e5, 0x22e5 }, /* 0x22e6 */ { false, 0x22e6, 0x22e6 }, /* 0x22e7 */ { false, 0x22e7, 0x22e7 }, /* 0x22e8 */ { false, 0x22e8, 0x22e8 }, /* 0x22e9 */ { false, 0x22e9, 0x22e9 }, /* 0x22ea */ { false, 0x22ea, 0x22ea }, /* 0x22eb */ { false, 0x22eb, 0x22eb }, /* 0x22ec */ { false, 0x22ec, 0x22ec }, /* 0x22ed */ { false, 0x22ed, 0x22ed }, /* 0x22ee */ { false, 0x22ee, 0x22ee }, /* 0x22ef */ { false, 0x22ef, 0x22ef }, /* 0x22f0 */ { false, 0x22f0, 0x22f0 }, /* 0x22f1 */ { false, 0x22f1, 0x22f1 }, /* 0x22f2 */ { false, 0x22f2, 0x22f2 }, /* 0x22f3 */ { false, 0x22f3, 0x22f3 }, /* 0x22f4 */ { false, 0x22f4, 0x22f4 }, /* 0x22f5 */ { false, 0x22f5, 0x22f5 }, /* 0x22f6 */ { false, 0x22f6, 0x22f6 }, /* 0x22f7 */ { false, 0x22f7, 0x22f7 }, /* 0x22f8 */ { false, 0x22f8, 0x22f8 }, /* 0x22f9 */ { false, 0x22f9, 0x22f9 }, /* 0x22fa */ { false, 0x22fa, 0x22fa }, /* 0x22fb */ { false, 0x22fb, 0x22fb }, /* 0x22fc */ { false, 0x22fc, 0x22fc }, /* 0x22fd */ { false, 0x22fd, 0x22fd }, /* 0x22fe */ { false, 0x22fe, 0x22fe }, /* 0x22ff */ { false, 0x22ff, 0x22ff }, /* 0x2300 */ { false, 0x2300, 0x2300 }, /* 0x2301 */ { false, 0x2301, 0x2301 }, /* 0x2302 */ { false, 0x2302, 0x2302 }, /* 0x2303 */ { false, 0x2303, 0x2303 }, /* 0x2304 */ { false, 0x2304, 0x2304 }, /* 0x2305 */ { false, 0x2305, 0x2305 }, /* 0x2306 */ { false, 0x2306, 0x2306 }, /* 0x2307 */ { false, 0x2307, 0x2307 }, /* 0x2308 */ { false, 0x2308, 0x2308 }, /* 0x2309 */ { false, 0x2309, 0x2309 }, /* 0x230a */ { false, 0x230a, 0x230a }, /* 0x230b */ { false, 0x230b, 0x230b }, /* 0x230c */ { false, 0x230c, 0x230c }, /* 0x230d */ { false, 0x230d, 0x230d }, /* 0x230e */ { false, 0x230e, 0x230e }, /* 0x230f */ { false, 0x230f, 0x230f }, /* 0x2310 */ { false, 0x2310, 0x2310 }, /* 0x2311 */ { false, 0x2311, 0x2311 }, /* 0x2312 */ { false, 0x2312, 0x2312 }, /* 0x2313 */ { false, 0x2313, 0x2313 }, /* 0x2314 */ { false, 0x2314, 0x2314 }, /* 0x2315 */ { false, 0x2315, 0x2315 }, /* 0x2316 */ { false, 0x2316, 0x2316 }, /* 0x2317 */ { false, 0x2317, 0x2317 }, /* 0x2318 */ { false, 0x2318, 0x2318 }, /* 0x2319 */ { false, 0x2319, 0x2319 }, /* 0x231a */ { false, 0x231a, 0x231a }, /* 0x231b */ { false, 0x231b, 0x231b }, /* 0x231c */ { false, 0x231c, 0x231c }, /* 0x231d */ { false, 0x231d, 0x231d }, /* 0x231e */ { false, 0x231e, 0x231e }, /* 0x231f */ { false, 0x231f, 0x231f }, /* 0x2320 */ { false, 0x2320, 0x2320 }, /* 0x2321 */ { false, 0x2321, 0x2321 }, /* 0x2322 */ { false, 0x2322, 0x2322 }, /* 0x2323 */ { false, 0x2323, 0x2323 }, /* 0x2324 */ { false, 0x2324, 0x2324 }, /* 0x2325 */ { false, 0x2325, 0x2325 }, /* 0x2326 */ { false, 0x2326, 0x2326 }, /* 0x2327 */ { false, 0x2327, 0x2327 }, /* 0x2328 */ { false, 0x2328, 0x2328 }, /* 0x2329 */ { false, 0x2329, 0x2329 }, /* 0x232a */ { false, 0x232a, 0x232a }, /* 0x232b */ { false, 0x232b, 0x232b }, /* 0x232c */ { false, 0x232c, 0x232c }, /* 0x232d */ { false, 0x232d, 0x232d }, /* 0x232e */ { false, 0x232e, 0x232e }, /* 0x232f */ { false, 0x232f, 0x232f }, /* 0x2330 */ { false, 0x2330, 0x2330 }, /* 0x2331 */ { false, 0x2331, 0x2331 }, /* 0x2332 */ { false, 0x2332, 0x2332 }, /* 0x2333 */ { false, 0x2333, 0x2333 }, /* 0x2334 */ { false, 0x2334, 0x2334 }, /* 0x2335 */ { false, 0x2335, 0x2335 }, /* 0x2336 */ { false, 0x2336, 0x2336 }, /* 0x2337 */ { false, 0x2337, 0x2337 }, /* 0x2338 */ { false, 0x2338, 0x2338 }, /* 0x2339 */ { false, 0x2339, 0x2339 }, /* 0x233a */ { false, 0x233a, 0x233a }, /* 0x233b */ { false, 0x233b, 0x233b }, /* 0x233c */ { false, 0x233c, 0x233c }, /* 0x233d */ { false, 0x233d, 0x233d }, /* 0x233e */ { false, 0x233e, 0x233e }, /* 0x233f */ { false, 0x233f, 0x233f }, /* 0x2340 */ { false, 0x2340, 0x2340 }, /* 0x2341 */ { false, 0x2341, 0x2341 }, /* 0x2342 */ { false, 0x2342, 0x2342 }, /* 0x2343 */ { false, 0x2343, 0x2343 }, /* 0x2344 */ { false, 0x2344, 0x2344 }, /* 0x2345 */ { false, 0x2345, 0x2345 }, /* 0x2346 */ { false, 0x2346, 0x2346 }, /* 0x2347 */ { false, 0x2347, 0x2347 }, /* 0x2348 */ { false, 0x2348, 0x2348 }, /* 0x2349 */ { false, 0x2349, 0x2349 }, /* 0x234a */ { false, 0x234a, 0x234a }, /* 0x234b */ { false, 0x234b, 0x234b }, /* 0x234c */ { false, 0x234c, 0x234c }, /* 0x234d */ { false, 0x234d, 0x234d }, /* 0x234e */ { false, 0x234e, 0x234e }, /* 0x234f */ { false, 0x234f, 0x234f }, /* 0x2350 */ { false, 0x2350, 0x2350 }, /* 0x2351 */ { false, 0x2351, 0x2351 }, /* 0x2352 */ { false, 0x2352, 0x2352 }, /* 0x2353 */ { false, 0x2353, 0x2353 }, /* 0x2354 */ { false, 0x2354, 0x2354 }, /* 0x2355 */ { false, 0x2355, 0x2355 }, /* 0x2356 */ { false, 0x2356, 0x2356 }, /* 0x2357 */ { false, 0x2357, 0x2357 }, /* 0x2358 */ { false, 0x2358, 0x2358 }, /* 0x2359 */ { false, 0x2359, 0x2359 }, /* 0x235a */ { false, 0x235a, 0x235a }, /* 0x235b */ { false, 0x235b, 0x235b }, /* 0x235c */ { false, 0x235c, 0x235c }, /* 0x235d */ { false, 0x235d, 0x235d }, /* 0x235e */ { false, 0x235e, 0x235e }, /* 0x235f */ { false, 0x235f, 0x235f }, /* 0x2360 */ { false, 0x2360, 0x2360 }, /* 0x2361 */ { false, 0x2361, 0x2361 }, /* 0x2362 */ { false, 0x2362, 0x2362 }, /* 0x2363 */ { false, 0x2363, 0x2363 }, /* 0x2364 */ { false, 0x2364, 0x2364 }, /* 0x2365 */ { false, 0x2365, 0x2365 }, /* 0x2366 */ { false, 0x2366, 0x2366 }, /* 0x2367 */ { false, 0x2367, 0x2367 }, /* 0x2368 */ { false, 0x2368, 0x2368 }, /* 0x2369 */ { false, 0x2369, 0x2369 }, /* 0x236a */ { false, 0x236a, 0x236a }, /* 0x236b */ { false, 0x236b, 0x236b }, /* 0x236c */ { false, 0x236c, 0x236c }, /* 0x236d */ { false, 0x236d, 0x236d }, /* 0x236e */ { false, 0x236e, 0x236e }, /* 0x236f */ { false, 0x236f, 0x236f }, /* 0x2370 */ { false, 0x2370, 0x2370 }, /* 0x2371 */ { false, 0x2371, 0x2371 }, /* 0x2372 */ { false, 0x2372, 0x2372 }, /* 0x2373 */ { false, 0x2373, 0x2373 }, /* 0x2374 */ { false, 0x2374, 0x2374 }, /* 0x2375 */ { false, 0x2375, 0x2375 }, /* 0x2376 */ { false, 0x2376, 0x2376 }, /* 0x2377 */ { false, 0x2377, 0x2377 }, /* 0x2378 */ { false, 0x2378, 0x2378 }, /* 0x2379 */ { false, 0x2379, 0x2379 }, /* 0x237a */ { false, 0x237a, 0x237a }, /* 0x237b */ { false, 0x237b, 0x237b }, /* 0x237c */ { false, 0x237c, 0x237c }, /* 0x237d */ { false, 0x237d, 0x237d }, /* 0x237e */ { false, 0x237e, 0x237e }, /* 0x237f */ { false, 0x237f, 0x237f }, /* 0x2380 */ { false, 0x2380, 0x2380 }, /* 0x2381 */ { false, 0x2381, 0x2381 }, /* 0x2382 */ { false, 0x2382, 0x2382 }, /* 0x2383 */ { false, 0x2383, 0x2383 }, /* 0x2384 */ { false, 0x2384, 0x2384 }, /* 0x2385 */ { false, 0x2385, 0x2385 }, /* 0x2386 */ { false, 0x2386, 0x2386 }, /* 0x2387 */ { false, 0x2387, 0x2387 }, /* 0x2388 */ { false, 0x2388, 0x2388 }, /* 0x2389 */ { false, 0x2389, 0x2389 }, /* 0x238a */ { false, 0x238a, 0x238a }, /* 0x238b */ { false, 0x238b, 0x238b }, /* 0x238c */ { false, 0x238c, 0x238c }, /* 0x238d */ { false, 0x238d, 0x238d }, /* 0x238e */ { false, 0x238e, 0x238e }, /* 0x238f */ { false, 0x238f, 0x238f }, /* 0x2390 */ { false, 0x2390, 0x2390 }, /* 0x2391 */ { false, 0x2391, 0x2391 }, /* 0x2392 */ { false, 0x2392, 0x2392 }, /* 0x2393 */ { false, 0x2393, 0x2393 }, /* 0x2394 */ { false, 0x2394, 0x2394 }, /* 0x2395 */ { false, 0x2395, 0x2395 }, /* 0x2396 */ { false, 0x2396, 0x2396 }, /* 0x2397 */ { false, 0x2397, 0x2397 }, /* 0x2398 */ { false, 0x2398, 0x2398 }, /* 0x2399 */ { false, 0x2399, 0x2399 }, /* 0x239a */ { false, 0x239a, 0x239a }, /* 0x239b */ { false, 0x239b, 0x239b }, /* 0x239c */ { false, 0x239c, 0x239c }, /* 0x239d */ { false, 0x239d, 0x239d }, /* 0x239e */ { false, 0x239e, 0x239e }, /* 0x239f */ { false, 0x239f, 0x239f }, /* 0x23a0 */ { false, 0x23a0, 0x23a0 }, /* 0x23a1 */ { false, 0x23a1, 0x23a1 }, /* 0x23a2 */ { false, 0x23a2, 0x23a2 }, /* 0x23a3 */ { false, 0x23a3, 0x23a3 }, /* 0x23a4 */ { false, 0x23a4, 0x23a4 }, /* 0x23a5 */ { false, 0x23a5, 0x23a5 }, /* 0x23a6 */ { false, 0x23a6, 0x23a6 }, /* 0x23a7 */ { false, 0x23a7, 0x23a7 }, /* 0x23a8 */ { false, 0x23a8, 0x23a8 }, /* 0x23a9 */ { false, 0x23a9, 0x23a9 }, /* 0x23aa */ { false, 0x23aa, 0x23aa }, /* 0x23ab */ { false, 0x23ab, 0x23ab }, /* 0x23ac */ { false, 0x23ac, 0x23ac }, /* 0x23ad */ { false, 0x23ad, 0x23ad }, /* 0x23ae */ { false, 0x23ae, 0x23ae }, /* 0x23af */ { false, 0x23af, 0x23af }, /* 0x23b0 */ { false, 0x23b0, 0x23b0 }, /* 0x23b1 */ { false, 0x23b1, 0x23b1 }, /* 0x23b2 */ { false, 0x23b2, 0x23b2 }, /* 0x23b3 */ { false, 0x23b3, 0x23b3 }, /* 0x23b4 */ { false, 0x23b4, 0x23b4 }, /* 0x23b5 */ { false, 0x23b5, 0x23b5 }, /* 0x23b6 */ { false, 0x23b6, 0x23b6 }, /* 0x23b7 */ { false, 0x23b7, 0x23b7 }, /* 0x23b8 */ { false, 0x23b8, 0x23b8 }, /* 0x23b9 */ { false, 0x23b9, 0x23b9 }, /* 0x23ba */ { false, 0x23ba, 0x23ba }, /* 0x23bb */ { false, 0x23bb, 0x23bb }, /* 0x23bc */ { false, 0x23bc, 0x23bc }, /* 0x23bd */ { false, 0x23bd, 0x23bd }, /* 0x23be */ { false, 0x23be, 0x23be }, /* 0x23bf */ { false, 0x23bf, 0x23bf }, /* 0x23c0 */ { false, 0x23c0, 0x23c0 }, /* 0x23c1 */ { false, 0x23c1, 0x23c1 }, /* 0x23c2 */ { false, 0x23c2, 0x23c2 }, /* 0x23c3 */ { false, 0x23c3, 0x23c3 }, /* 0x23c4 */ { false, 0x23c4, 0x23c4 }, /* 0x23c5 */ { false, 0x23c5, 0x23c5 }, /* 0x23c6 */ { false, 0x23c6, 0x23c6 }, /* 0x23c7 */ { false, 0x23c7, 0x23c7 }, /* 0x23c8 */ { false, 0x23c8, 0x23c8 }, /* 0x23c9 */ { false, 0x23c9, 0x23c9 }, /* 0x23ca */ { false, 0x23ca, 0x23ca }, /* 0x23cb */ { false, 0x23cb, 0x23cb }, /* 0x23cc */ { false, 0x23cc, 0x23cc }, /* 0x23cd */ { false, 0x23cd, 0x23cd }, /* 0x23ce */ { false, 0x23ce, 0x23ce }, /* 0x23cf */ { false, 0x23cf, 0x23cf }, /* 0x23d0 */ { false, 0x23d0, 0x23d0 }, /* 0x23d1 */ { false, 0x23d1, 0x23d1 }, /* 0x23d2 */ { false, 0x23d2, 0x23d2 }, /* 0x23d3 */ { false, 0x23d3, 0x23d3 }, /* 0x23d4 */ { false, 0x23d4, 0x23d4 }, /* 0x23d5 */ { false, 0x23d5, 0x23d5 }, /* 0x23d6 */ { false, 0x23d6, 0x23d6 }, /* 0x23d7 */ { false, 0x23d7, 0x23d7 }, /* 0x23d8 */ { false, 0x23d8, 0x23d8 }, /* 0x23d9 */ { false, 0x23d9, 0x23d9 }, /* 0x23da */ { false, 0x23da, 0x23da }, /* 0x23db */ { false, 0x23db, 0x23db }, /* 0x23dc */ { false, 0x23dc, 0x23dc }, /* 0x23dd */ { false, 0x23dd, 0x23dd }, /* 0x23de */ { false, 0x23de, 0x23de }, /* 0x23df */ { false, 0x23df, 0x23df }, /* 0x23e0 */ { false, 0x23e0, 0x23e0 }, /* 0x23e1 */ { false, 0x23e1, 0x23e1 }, /* 0x23e2 */ { false, 0x23e2, 0x23e2 }, /* 0x23e3 */ { false, 0x23e3, 0x23e3 }, /* 0x23e4 */ { false, 0x23e4, 0x23e4 }, /* 0x23e5 */ { false, 0x23e5, 0x23e5 }, /* 0x23e6 */ { false, 0x23e6, 0x23e6 }, /* 0x23e7 */ { false, 0x23e7, 0x23e7 }, /* 0x23e8 */ { false, 0x23e8, 0x23e8 }, /* 0x23e9 */ { false, 0x23e9, 0x23e9 }, /* 0x23ea */ { false, 0x23ea, 0x23ea }, /* 0x23eb */ { false, 0x23eb, 0x23eb }, /* 0x23ec */ { false, 0x23ec, 0x23ec }, /* 0x23ed */ { false, 0x23ed, 0x23ed }, /* 0x23ee */ { false, 0x23ee, 0x23ee }, /* 0x23ef */ { false, 0x23ef, 0x23ef }, /* 0x23f0 */ { false, 0x23f0, 0x23f0 }, /* 0x23f1 */ { false, 0x23f1, 0x23f1 }, /* 0x23f2 */ { false, 0x23f2, 0x23f2 }, /* 0x23f3 */ { false, 0x23f3, 0x23f3 }, /* 0x23f4 */ { false, 0x23f4, 0x23f4 }, /* 0x23f5 */ { false, 0x23f5, 0x23f5 }, /* 0x23f6 */ { false, 0x23f6, 0x23f6 }, /* 0x23f7 */ { false, 0x23f7, 0x23f7 }, /* 0x23f8 */ { false, 0x23f8, 0x23f8 }, /* 0x23f9 */ { false, 0x23f9, 0x23f9 }, /* 0x23fa */ { false, 0x23fa, 0x23fa }, /* 0x23fb */ { false, 0x23fb, 0x23fb }, /* 0x23fc */ { false, 0x23fc, 0x23fc }, /* 0x23fd */ { false, 0x23fd, 0x23fd }, /* 0x23fe */ { false, 0x23fe, 0x23fe }, /* 0x23ff */ { false, 0x23ff, 0x23ff }, /* 0x2400 */ { false, 0x2400, 0x2400 }, /* 0x2401 */ { false, 0x2401, 0x2401 }, /* 0x2402 */ { false, 0x2402, 0x2402 }, /* 0x2403 */ { false, 0x2403, 0x2403 }, /* 0x2404 */ { false, 0x2404, 0x2404 }, /* 0x2405 */ { false, 0x2405, 0x2405 }, /* 0x2406 */ { false, 0x2406, 0x2406 }, /* 0x2407 */ { false, 0x2407, 0x2407 }, /* 0x2408 */ { false, 0x2408, 0x2408 }, /* 0x2409 */ { false, 0x2409, 0x2409 }, /* 0x240a */ { false, 0x240a, 0x240a }, /* 0x240b */ { false, 0x240b, 0x240b }, /* 0x240c */ { false, 0x240c, 0x240c }, /* 0x240d */ { false, 0x240d, 0x240d }, /* 0x240e */ { false, 0x240e, 0x240e }, /* 0x240f */ { false, 0x240f, 0x240f }, /* 0x2410 */ { false, 0x2410, 0x2410 }, /* 0x2411 */ { false, 0x2411, 0x2411 }, /* 0x2412 */ { false, 0x2412, 0x2412 }, /* 0x2413 */ { false, 0x2413, 0x2413 }, /* 0x2414 */ { false, 0x2414, 0x2414 }, /* 0x2415 */ { false, 0x2415, 0x2415 }, /* 0x2416 */ { false, 0x2416, 0x2416 }, /* 0x2417 */ { false, 0x2417, 0x2417 }, /* 0x2418 */ { false, 0x2418, 0x2418 }, /* 0x2419 */ { false, 0x2419, 0x2419 }, /* 0x241a */ { false, 0x241a, 0x241a }, /* 0x241b */ { false, 0x241b, 0x241b }, /* 0x241c */ { false, 0x241c, 0x241c }, /* 0x241d */ { false, 0x241d, 0x241d }, /* 0x241e */ { false, 0x241e, 0x241e }, /* 0x241f */ { false, 0x241f, 0x241f }, /* 0x2420 */ { false, 0x2420, 0x2420 }, /* 0x2421 */ { false, 0x2421, 0x2421 }, /* 0x2422 */ { false, 0x2422, 0x2422 }, /* 0x2423 */ { false, 0x2423, 0x2423 }, /* 0x2424 */ { false, 0x2424, 0x2424 }, /* 0x2425 */ { false, 0x2425, 0x2425 }, /* 0x2426 */ { false, 0x2426, 0x2426 }, /* 0x2427 */ { false, 0x2427, 0x2427 }, /* 0x2428 */ { false, 0x2428, 0x2428 }, /* 0x2429 */ { false, 0x2429, 0x2429 }, /* 0x242a */ { false, 0x242a, 0x242a }, /* 0x242b */ { false, 0x242b, 0x242b }, /* 0x242c */ { false, 0x242c, 0x242c }, /* 0x242d */ { false, 0x242d, 0x242d }, /* 0x242e */ { false, 0x242e, 0x242e }, /* 0x242f */ { false, 0x242f, 0x242f }, /* 0x2430 */ { false, 0x2430, 0x2430 }, /* 0x2431 */ { false, 0x2431, 0x2431 }, /* 0x2432 */ { false, 0x2432, 0x2432 }, /* 0x2433 */ { false, 0x2433, 0x2433 }, /* 0x2434 */ { false, 0x2434, 0x2434 }, /* 0x2435 */ { false, 0x2435, 0x2435 }, /* 0x2436 */ { false, 0x2436, 0x2436 }, /* 0x2437 */ { false, 0x2437, 0x2437 }, /* 0x2438 */ { false, 0x2438, 0x2438 }, /* 0x2439 */ { false, 0x2439, 0x2439 }, /* 0x243a */ { false, 0x243a, 0x243a }, /* 0x243b */ { false, 0x243b, 0x243b }, /* 0x243c */ { false, 0x243c, 0x243c }, /* 0x243d */ { false, 0x243d, 0x243d }, /* 0x243e */ { false, 0x243e, 0x243e }, /* 0x243f */ { false, 0x243f, 0x243f }, /* 0x2440 */ { false, 0x2440, 0x2440 }, /* 0x2441 */ { false, 0x2441, 0x2441 }, /* 0x2442 */ { false, 0x2442, 0x2442 }, /* 0x2443 */ { false, 0x2443, 0x2443 }, /* 0x2444 */ { false, 0x2444, 0x2444 }, /* 0x2445 */ { false, 0x2445, 0x2445 }, /* 0x2446 */ { false, 0x2446, 0x2446 }, /* 0x2447 */ { false, 0x2447, 0x2447 }, /* 0x2448 */ { false, 0x2448, 0x2448 }, /* 0x2449 */ { false, 0x2449, 0x2449 }, /* 0x244a */ { false, 0x244a, 0x244a }, /* 0x244b */ { false, 0x244b, 0x244b }, /* 0x244c */ { false, 0x244c, 0x244c }, /* 0x244d */ { false, 0x244d, 0x244d }, /* 0x244e */ { false, 0x244e, 0x244e }, /* 0x244f */ { false, 0x244f, 0x244f }, /* 0x2450 */ { false, 0x2450, 0x2450 }, /* 0x2451 */ { false, 0x2451, 0x2451 }, /* 0x2452 */ { false, 0x2452, 0x2452 }, /* 0x2453 */ { false, 0x2453, 0x2453 }, /* 0x2454 */ { false, 0x2454, 0x2454 }, /* 0x2455 */ { false, 0x2455, 0x2455 }, /* 0x2456 */ { false, 0x2456, 0x2456 }, /* 0x2457 */ { false, 0x2457, 0x2457 }, /* 0x2458 */ { false, 0x2458, 0x2458 }, /* 0x2459 */ { false, 0x2459, 0x2459 }, /* 0x245a */ { false, 0x245a, 0x245a }, /* 0x245b */ { false, 0x245b, 0x245b }, /* 0x245c */ { false, 0x245c, 0x245c }, /* 0x245d */ { false, 0x245d, 0x245d }, /* 0x245e */ { false, 0x245e, 0x245e }, /* 0x245f */ { false, 0x245f, 0x245f }, /* 0x2460 */ { false, 0x2460, 0x2460 }, /* 0x2461 */ { false, 0x2461, 0x2461 }, /* 0x2462 */ { false, 0x2462, 0x2462 }, /* 0x2463 */ { false, 0x2463, 0x2463 }, /* 0x2464 */ { false, 0x2464, 0x2464 }, /* 0x2465 */ { false, 0x2465, 0x2465 }, /* 0x2466 */ { false, 0x2466, 0x2466 }, /* 0x2467 */ { false, 0x2467, 0x2467 }, /* 0x2468 */ { false, 0x2468, 0x2468 }, /* 0x2469 */ { false, 0x2469, 0x2469 }, /* 0x246a */ { false, 0x246a, 0x246a }, /* 0x246b */ { false, 0x246b, 0x246b }, /* 0x246c */ { false, 0x246c, 0x246c }, /* 0x246d */ { false, 0x246d, 0x246d }, /* 0x246e */ { false, 0x246e, 0x246e }, /* 0x246f */ { false, 0x246f, 0x246f }, /* 0x2470 */ { false, 0x2470, 0x2470 }, /* 0x2471 */ { false, 0x2471, 0x2471 }, /* 0x2472 */ { false, 0x2472, 0x2472 }, /* 0x2473 */ { false, 0x2473, 0x2473 }, /* 0x2474 */ { false, 0x2474, 0x2474 }, /* 0x2475 */ { false, 0x2475, 0x2475 }, /* 0x2476 */ { false, 0x2476, 0x2476 }, /* 0x2477 */ { false, 0x2477, 0x2477 }, /* 0x2478 */ { false, 0x2478, 0x2478 }, /* 0x2479 */ { false, 0x2479, 0x2479 }, /* 0x247a */ { false, 0x247a, 0x247a }, /* 0x247b */ { false, 0x247b, 0x247b }, /* 0x247c */ { false, 0x247c, 0x247c }, /* 0x247d */ { false, 0x247d, 0x247d }, /* 0x247e */ { false, 0x247e, 0x247e }, /* 0x247f */ { false, 0x247f, 0x247f }, /* 0x2480 */ { false, 0x2480, 0x2480 }, /* 0x2481 */ { false, 0x2481, 0x2481 }, /* 0x2482 */ { false, 0x2482, 0x2482 }, /* 0x2483 */ { false, 0x2483, 0x2483 }, /* 0x2484 */ { false, 0x2484, 0x2484 }, /* 0x2485 */ { false, 0x2485, 0x2485 }, /* 0x2486 */ { false, 0x2486, 0x2486 }, /* 0x2487 */ { false, 0x2487, 0x2487 }, /* 0x2488 */ { false, 0x2488, 0x2488 }, /* 0x2489 */ { false, 0x2489, 0x2489 }, /* 0x248a */ { false, 0x248a, 0x248a }, /* 0x248b */ { false, 0x248b, 0x248b }, /* 0x248c */ { false, 0x248c, 0x248c }, /* 0x248d */ { false, 0x248d, 0x248d }, /* 0x248e */ { false, 0x248e, 0x248e }, /* 0x248f */ { false, 0x248f, 0x248f }, /* 0x2490 */ { false, 0x2490, 0x2490 }, /* 0x2491 */ { false, 0x2491, 0x2491 }, /* 0x2492 */ { false, 0x2492, 0x2492 }, /* 0x2493 */ { false, 0x2493, 0x2493 }, /* 0x2494 */ { false, 0x2494, 0x2494 }, /* 0x2495 */ { false, 0x2495, 0x2495 }, /* 0x2496 */ { false, 0x2496, 0x2496 }, /* 0x2497 */ { false, 0x2497, 0x2497 }, /* 0x2498 */ { false, 0x2498, 0x2498 }, /* 0x2499 */ { false, 0x2499, 0x2499 }, /* 0x249a */ { false, 0x249a, 0x249a }, /* 0x249b */ { false, 0x249b, 0x249b }, /* 0x249c */ { false, 0x249c, 0x249c }, /* 0x249d */ { false, 0x249d, 0x249d }, /* 0x249e */ { false, 0x249e, 0x249e }, /* 0x249f */ { false, 0x249f, 0x249f }, /* 0x24a0 */ { false, 0x24a0, 0x24a0 }, /* 0x24a1 */ { false, 0x24a1, 0x24a1 }, /* 0x24a2 */ { false, 0x24a2, 0x24a2 }, /* 0x24a3 */ { false, 0x24a3, 0x24a3 }, /* 0x24a4 */ { false, 0x24a4, 0x24a4 }, /* 0x24a5 */ { false, 0x24a5, 0x24a5 }, /* 0x24a6 */ { false, 0x24a6, 0x24a6 }, /* 0x24a7 */ { false, 0x24a7, 0x24a7 }, /* 0x24a8 */ { false, 0x24a8, 0x24a8 }, /* 0x24a9 */ { false, 0x24a9, 0x24a9 }, /* 0x24aa */ { false, 0x24aa, 0x24aa }, /* 0x24ab */ { false, 0x24ab, 0x24ab }, /* 0x24ac */ { false, 0x24ac, 0x24ac }, /* 0x24ad */ { false, 0x24ad, 0x24ad }, /* 0x24ae */ { false, 0x24ae, 0x24ae }, /* 0x24af */ { false, 0x24af, 0x24af }, /* 0x24b0 */ { false, 0x24b0, 0x24b0 }, /* 0x24b1 */ { false, 0x24b1, 0x24b1 }, /* 0x24b2 */ { false, 0x24b2, 0x24b2 }, /* 0x24b3 */ { false, 0x24b3, 0x24b3 }, /* 0x24b4 */ { false, 0x24b4, 0x24b4 }, /* 0x24b5 */ { false, 0x24b5, 0x24b5 }, /* 0x24b6 */ { false, 0x24b6, 0x24b6 }, /* 0x24b7 */ { false, 0x24b7, 0x24b7 }, /* 0x24b8 */ { false, 0x24b8, 0x24b8 }, /* 0x24b9 */ { false, 0x24b9, 0x24b9 }, /* 0x24ba */ { false, 0x24ba, 0x24ba }, /* 0x24bb */ { false, 0x24bb, 0x24bb }, /* 0x24bc */ { false, 0x24bc, 0x24bc }, /* 0x24bd */ { false, 0x24bd, 0x24bd }, /* 0x24be */ { false, 0x24be, 0x24be }, /* 0x24bf */ { false, 0x24bf, 0x24bf }, /* 0x24c0 */ { false, 0x24c0, 0x24c0 }, /* 0x24c1 */ { false, 0x24c1, 0x24c1 }, /* 0x24c2 */ { false, 0x24c2, 0x24c2 }, /* 0x24c3 */ { false, 0x24c3, 0x24c3 }, /* 0x24c4 */ { false, 0x24c4, 0x24c4 }, /* 0x24c5 */ { false, 0x24c5, 0x24c5 }, /* 0x24c6 */ { false, 0x24c6, 0x24c6 }, /* 0x24c7 */ { false, 0x24c7, 0x24c7 }, /* 0x24c8 */ { false, 0x24c8, 0x24c8 }, /* 0x24c9 */ { false, 0x24c9, 0x24c9 }, /* 0x24ca */ { false, 0x24ca, 0x24ca }, /* 0x24cb */ { false, 0x24cb, 0x24cb }, /* 0x24cc */ { false, 0x24cc, 0x24cc }, /* 0x24cd */ { false, 0x24cd, 0x24cd }, /* 0x24ce */ { false, 0x24ce, 0x24ce }, /* 0x24cf */ { false, 0x24cf, 0x24cf }, /* 0x24d0 */ { false, 0x24d0, 0x24d0 }, /* 0x24d1 */ { false, 0x24d1, 0x24d1 }, /* 0x24d2 */ { false, 0x24d2, 0x24d2 }, /* 0x24d3 */ { false, 0x24d3, 0x24d3 }, /* 0x24d4 */ { false, 0x24d4, 0x24d4 }, /* 0x24d5 */ { false, 0x24d5, 0x24d5 }, /* 0x24d6 */ { false, 0x24d6, 0x24d6 }, /* 0x24d7 */ { false, 0x24d7, 0x24d7 }, /* 0x24d8 */ { false, 0x24d8, 0x24d8 }, /* 0x24d9 */ { false, 0x24d9, 0x24d9 }, /* 0x24da */ { false, 0x24da, 0x24da }, /* 0x24db */ { false, 0x24db, 0x24db }, /* 0x24dc */ { false, 0x24dc, 0x24dc }, /* 0x24dd */ { false, 0x24dd, 0x24dd }, /* 0x24de */ { false, 0x24de, 0x24de }, /* 0x24df */ { false, 0x24df, 0x24df }, /* 0x24e0 */ { false, 0x24e0, 0x24e0 }, /* 0x24e1 */ { false, 0x24e1, 0x24e1 }, /* 0x24e2 */ { false, 0x24e2, 0x24e2 }, /* 0x24e3 */ { false, 0x24e3, 0x24e3 }, /* 0x24e4 */ { false, 0x24e4, 0x24e4 }, /* 0x24e5 */ { false, 0x24e5, 0x24e5 }, /* 0x24e6 */ { false, 0x24e6, 0x24e6 }, /* 0x24e7 */ { false, 0x24e7, 0x24e7 }, /* 0x24e8 */ { false, 0x24e8, 0x24e8 }, /* 0x24e9 */ { false, 0x24e9, 0x24e9 }, /* 0x24ea */ { false, 0x24ea, 0x24ea }, /* 0x24eb */ { false, 0x24eb, 0x24eb }, /* 0x24ec */ { false, 0x24ec, 0x24ec }, /* 0x24ed */ { false, 0x24ed, 0x24ed }, /* 0x24ee */ { false, 0x24ee, 0x24ee }, /* 0x24ef */ { false, 0x24ef, 0x24ef }, /* 0x24f0 */ { false, 0x24f0, 0x24f0 }, /* 0x24f1 */ { false, 0x24f1, 0x24f1 }, /* 0x24f2 */ { false, 0x24f2, 0x24f2 }, /* 0x24f3 */ { false, 0x24f3, 0x24f3 }, /* 0x24f4 */ { false, 0x24f4, 0x24f4 }, /* 0x24f5 */ { false, 0x24f5, 0x24f5 }, /* 0x24f6 */ { false, 0x24f6, 0x24f6 }, /* 0x24f7 */ { false, 0x24f7, 0x24f7 }, /* 0x24f8 */ { false, 0x24f8, 0x24f8 }, /* 0x24f9 */ { false, 0x24f9, 0x24f9 }, /* 0x24fa */ { false, 0x24fa, 0x24fa }, /* 0x24fb */ { false, 0x24fb, 0x24fb }, /* 0x24fc */ { false, 0x24fc, 0x24fc }, /* 0x24fd */ { false, 0x24fd, 0x24fd }, /* 0x24fe */ { false, 0x24fe, 0x24fe }, /* 0x24ff */ { false, 0x24ff, 0x24ff }, /* 0x2500 */ { false, 0x2500, 0x2500 }, /* 0x2501 */ { false, 0x2501, 0x2501 }, /* 0x2502 */ { false, 0x2502, 0x2502 }, /* 0x2503 */ { false, 0x2503, 0x2503 }, /* 0x2504 */ { false, 0x2504, 0x2504 }, /* 0x2505 */ { false, 0x2505, 0x2505 }, /* 0x2506 */ { false, 0x2506, 0x2506 }, /* 0x2507 */ { false, 0x2507, 0x2507 }, /* 0x2508 */ { false, 0x2508, 0x2508 }, /* 0x2509 */ { false, 0x2509, 0x2509 }, /* 0x250a */ { false, 0x250a, 0x250a }, /* 0x250b */ { false, 0x250b, 0x250b }, /* 0x250c */ { false, 0x250c, 0x250c }, /* 0x250d */ { false, 0x250d, 0x250d }, /* 0x250e */ { false, 0x250e, 0x250e }, /* 0x250f */ { false, 0x250f, 0x250f }, /* 0x2510 */ { false, 0x2510, 0x2510 }, /* 0x2511 */ { false, 0x2511, 0x2511 }, /* 0x2512 */ { false, 0x2512, 0x2512 }, /* 0x2513 */ { false, 0x2513, 0x2513 }, /* 0x2514 */ { false, 0x2514, 0x2514 }, /* 0x2515 */ { false, 0x2515, 0x2515 }, /* 0x2516 */ { false, 0x2516, 0x2516 }, /* 0x2517 */ { false, 0x2517, 0x2517 }, /* 0x2518 */ { false, 0x2518, 0x2518 }, /* 0x2519 */ { false, 0x2519, 0x2519 }, /* 0x251a */ { false, 0x251a, 0x251a }, /* 0x251b */ { false, 0x251b, 0x251b }, /* 0x251c */ { false, 0x251c, 0x251c }, /* 0x251d */ { false, 0x251d, 0x251d }, /* 0x251e */ { false, 0x251e, 0x251e }, /* 0x251f */ { false, 0x251f, 0x251f }, /* 0x2520 */ { false, 0x2520, 0x2520 }, /* 0x2521 */ { false, 0x2521, 0x2521 }, /* 0x2522 */ { false, 0x2522, 0x2522 }, /* 0x2523 */ { false, 0x2523, 0x2523 }, /* 0x2524 */ { false, 0x2524, 0x2524 }, /* 0x2525 */ { false, 0x2525, 0x2525 }, /* 0x2526 */ { false, 0x2526, 0x2526 }, /* 0x2527 */ { false, 0x2527, 0x2527 }, /* 0x2528 */ { false, 0x2528, 0x2528 }, /* 0x2529 */ { false, 0x2529, 0x2529 }, /* 0x252a */ { false, 0x252a, 0x252a }, /* 0x252b */ { false, 0x252b, 0x252b }, /* 0x252c */ { false, 0x252c, 0x252c }, /* 0x252d */ { false, 0x252d, 0x252d }, /* 0x252e */ { false, 0x252e, 0x252e }, /* 0x252f */ { false, 0x252f, 0x252f }, /* 0x2530 */ { false, 0x2530, 0x2530 }, /* 0x2531 */ { false, 0x2531, 0x2531 }, /* 0x2532 */ { false, 0x2532, 0x2532 }, /* 0x2533 */ { false, 0x2533, 0x2533 }, /* 0x2534 */ { false, 0x2534, 0x2534 }, /* 0x2535 */ { false, 0x2535, 0x2535 }, /* 0x2536 */ { false, 0x2536, 0x2536 }, /* 0x2537 */ { false, 0x2537, 0x2537 }, /* 0x2538 */ { false, 0x2538, 0x2538 }, /* 0x2539 */ { false, 0x2539, 0x2539 }, /* 0x253a */ { false, 0x253a, 0x253a }, /* 0x253b */ { false, 0x253b, 0x253b }, /* 0x253c */ { false, 0x253c, 0x253c }, /* 0x253d */ { false, 0x253d, 0x253d }, /* 0x253e */ { false, 0x253e, 0x253e }, /* 0x253f */ { false, 0x253f, 0x253f }, /* 0x2540 */ { false, 0x2540, 0x2540 }, /* 0x2541 */ { false, 0x2541, 0x2541 }, /* 0x2542 */ { false, 0x2542, 0x2542 }, /* 0x2543 */ { false, 0x2543, 0x2543 }, /* 0x2544 */ { false, 0x2544, 0x2544 }, /* 0x2545 */ { false, 0x2545, 0x2545 }, /* 0x2546 */ { false, 0x2546, 0x2546 }, /* 0x2547 */ { false, 0x2547, 0x2547 }, /* 0x2548 */ { false, 0x2548, 0x2548 }, /* 0x2549 */ { false, 0x2549, 0x2549 }, /* 0x254a */ { false, 0x254a, 0x254a }, /* 0x254b */ { false, 0x254b, 0x254b }, /* 0x254c */ { false, 0x254c, 0x254c }, /* 0x254d */ { false, 0x254d, 0x254d }, /* 0x254e */ { false, 0x254e, 0x254e }, /* 0x254f */ { false, 0x254f, 0x254f }, /* 0x2550 */ { false, 0x2550, 0x2550 }, /* 0x2551 */ { false, 0x2551, 0x2551 }, /* 0x2552 */ { false, 0x2552, 0x2552 }, /* 0x2553 */ { false, 0x2553, 0x2553 }, /* 0x2554 */ { false, 0x2554, 0x2554 }, /* 0x2555 */ { false, 0x2555, 0x2555 }, /* 0x2556 */ { false, 0x2556, 0x2556 }, /* 0x2557 */ { false, 0x2557, 0x2557 }, /* 0x2558 */ { false, 0x2558, 0x2558 }, /* 0x2559 */ { false, 0x2559, 0x2559 }, /* 0x255a */ { false, 0x255a, 0x255a }, /* 0x255b */ { false, 0x255b, 0x255b }, /* 0x255c */ { false, 0x255c, 0x255c }, /* 0x255d */ { false, 0x255d, 0x255d }, /* 0x255e */ { false, 0x255e, 0x255e }, /* 0x255f */ { false, 0x255f, 0x255f }, /* 0x2560 */ { false, 0x2560, 0x2560 }, /* 0x2561 */ { false, 0x2561, 0x2561 }, /* 0x2562 */ { false, 0x2562, 0x2562 }, /* 0x2563 */ { false, 0x2563, 0x2563 }, /* 0x2564 */ { false, 0x2564, 0x2564 }, /* 0x2565 */ { false, 0x2565, 0x2565 }, /* 0x2566 */ { false, 0x2566, 0x2566 }, /* 0x2567 */ { false, 0x2567, 0x2567 }, /* 0x2568 */ { false, 0x2568, 0x2568 }, /* 0x2569 */ { false, 0x2569, 0x2569 }, /* 0x256a */ { false, 0x256a, 0x256a }, /* 0x256b */ { false, 0x256b, 0x256b }, /* 0x256c */ { false, 0x256c, 0x256c }, /* 0x256d */ { false, 0x256d, 0x256d }, /* 0x256e */ { false, 0x256e, 0x256e }, /* 0x256f */ { false, 0x256f, 0x256f }, /* 0x2570 */ { false, 0x2570, 0x2570 }, /* 0x2571 */ { false, 0x2571, 0x2571 }, /* 0x2572 */ { false, 0x2572, 0x2572 }, /* 0x2573 */ { false, 0x2573, 0x2573 }, /* 0x2574 */ { false, 0x2574, 0x2574 }, /* 0x2575 */ { false, 0x2575, 0x2575 }, /* 0x2576 */ { false, 0x2576, 0x2576 }, /* 0x2577 */ { false, 0x2577, 0x2577 }, /* 0x2578 */ { false, 0x2578, 0x2578 }, /* 0x2579 */ { false, 0x2579, 0x2579 }, /* 0x257a */ { false, 0x257a, 0x257a }, /* 0x257b */ { false, 0x257b, 0x257b }, /* 0x257c */ { false, 0x257c, 0x257c }, /* 0x257d */ { false, 0x257d, 0x257d }, /* 0x257e */ { false, 0x257e, 0x257e }, /* 0x257f */ { false, 0x257f, 0x257f }, /* 0x2580 */ { false, 0x2580, 0x2580 }, /* 0x2581 */ { false, 0x2581, 0x2581 }, /* 0x2582 */ { false, 0x2582, 0x2582 }, /* 0x2583 */ { false, 0x2583, 0x2583 }, /* 0x2584 */ { false, 0x2584, 0x2584 }, /* 0x2585 */ { false, 0x2585, 0x2585 }, /* 0x2586 */ { false, 0x2586, 0x2586 }, /* 0x2587 */ { false, 0x2587, 0x2587 }, /* 0x2588 */ { false, 0x2588, 0x2588 }, /* 0x2589 */ { false, 0x2589, 0x2589 }, /* 0x258a */ { false, 0x258a, 0x258a }, /* 0x258b */ { false, 0x258b, 0x258b }, /* 0x258c */ { false, 0x258c, 0x258c }, /* 0x258d */ { false, 0x258d, 0x258d }, /* 0x258e */ { false, 0x258e, 0x258e }, /* 0x258f */ { false, 0x258f, 0x258f }, /* 0x2590 */ { false, 0x2590, 0x2590 }, /* 0x2591 */ { false, 0x2591, 0x2591 }, /* 0x2592 */ { false, 0x2592, 0x2592 }, /* 0x2593 */ { false, 0x2593, 0x2593 }, /* 0x2594 */ { false, 0x2594, 0x2594 }, /* 0x2595 */ { false, 0x2595, 0x2595 }, /* 0x2596 */ { false, 0x2596, 0x2596 }, /* 0x2597 */ { false, 0x2597, 0x2597 }, /* 0x2598 */ { false, 0x2598, 0x2598 }, /* 0x2599 */ { false, 0x2599, 0x2599 }, /* 0x259a */ { false, 0x259a, 0x259a }, /* 0x259b */ { false, 0x259b, 0x259b }, /* 0x259c */ { false, 0x259c, 0x259c }, /* 0x259d */ { false, 0x259d, 0x259d }, /* 0x259e */ { false, 0x259e, 0x259e }, /* 0x259f */ { false, 0x259f, 0x259f }, /* 0x25a0 */ { false, 0x25a0, 0x25a0 }, /* 0x25a1 */ { false, 0x25a1, 0x25a1 }, /* 0x25a2 */ { false, 0x25a2, 0x25a2 }, /* 0x25a3 */ { false, 0x25a3, 0x25a3 }, /* 0x25a4 */ { false, 0x25a4, 0x25a4 }, /* 0x25a5 */ { false, 0x25a5, 0x25a5 }, /* 0x25a6 */ { false, 0x25a6, 0x25a6 }, /* 0x25a7 */ { false, 0x25a7, 0x25a7 }, /* 0x25a8 */ { false, 0x25a8, 0x25a8 }, /* 0x25a9 */ { false, 0x25a9, 0x25a9 }, /* 0x25aa */ { false, 0x25aa, 0x25aa }, /* 0x25ab */ { false, 0x25ab, 0x25ab }, /* 0x25ac */ { false, 0x25ac, 0x25ac }, /* 0x25ad */ { false, 0x25ad, 0x25ad }, /* 0x25ae */ { false, 0x25ae, 0x25ae }, /* 0x25af */ { false, 0x25af, 0x25af }, /* 0x25b0 */ { false, 0x25b0, 0x25b0 }, /* 0x25b1 */ { false, 0x25b1, 0x25b1 }, /* 0x25b2 */ { false, 0x25b2, 0x25b2 }, /* 0x25b3 */ { false, 0x25b3, 0x25b3 }, /* 0x25b4 */ { false, 0x25b4, 0x25b4 }, /* 0x25b5 */ { false, 0x25b5, 0x25b5 }, /* 0x25b6 */ { false, 0x25b6, 0x25b6 }, /* 0x25b7 */ { false, 0x25b7, 0x25b7 }, /* 0x25b8 */ { false, 0x25b8, 0x25b8 }, /* 0x25b9 */ { false, 0x25b9, 0x25b9 }, /* 0x25ba */ { false, 0x25ba, 0x25ba }, /* 0x25bb */ { false, 0x25bb, 0x25bb }, /* 0x25bc */ { false, 0x25bc, 0x25bc }, /* 0x25bd */ { false, 0x25bd, 0x25bd }, /* 0x25be */ { false, 0x25be, 0x25be }, /* 0x25bf */ { false, 0x25bf, 0x25bf }, /* 0x25c0 */ { false, 0x25c0, 0x25c0 }, /* 0x25c1 */ { false, 0x25c1, 0x25c1 }, /* 0x25c2 */ { false, 0x25c2, 0x25c2 }, /* 0x25c3 */ { false, 0x25c3, 0x25c3 }, /* 0x25c4 */ { false, 0x25c4, 0x25c4 }, /* 0x25c5 */ { false, 0x25c5, 0x25c5 }, /* 0x25c6 */ { false, 0x25c6, 0x25c6 }, /* 0x25c7 */ { false, 0x25c7, 0x25c7 }, /* 0x25c8 */ { false, 0x25c8, 0x25c8 }, /* 0x25c9 */ { false, 0x25c9, 0x25c9 }, /* 0x25ca */ { false, 0x25ca, 0x25ca }, /* 0x25cb */ { false, 0x25cb, 0x25cb }, /* 0x25cc */ { false, 0x25cc, 0x25cc }, /* 0x25cd */ { false, 0x25cd, 0x25cd }, /* 0x25ce */ { false, 0x25ce, 0x25ce }, /* 0x25cf */ { false, 0x25cf, 0x25cf }, /* 0x25d0 */ { false, 0x25d0, 0x25d0 }, /* 0x25d1 */ { false, 0x25d1, 0x25d1 }, /* 0x25d2 */ { false, 0x25d2, 0x25d2 }, /* 0x25d3 */ { false, 0x25d3, 0x25d3 }, /* 0x25d4 */ { false, 0x25d4, 0x25d4 }, /* 0x25d5 */ { false, 0x25d5, 0x25d5 }, /* 0x25d6 */ { false, 0x25d6, 0x25d6 }, /* 0x25d7 */ { false, 0x25d7, 0x25d7 }, /* 0x25d8 */ { false, 0x25d8, 0x25d8 }, /* 0x25d9 */ { false, 0x25d9, 0x25d9 }, /* 0x25da */ { false, 0x25da, 0x25da }, /* 0x25db */ { false, 0x25db, 0x25db }, /* 0x25dc */ { false, 0x25dc, 0x25dc }, /* 0x25dd */ { false, 0x25dd, 0x25dd }, /* 0x25de */ { false, 0x25de, 0x25de }, /* 0x25df */ { false, 0x25df, 0x25df }, /* 0x25e0 */ { false, 0x25e0, 0x25e0 }, /* 0x25e1 */ { false, 0x25e1, 0x25e1 }, /* 0x25e2 */ { false, 0x25e2, 0x25e2 }, /* 0x25e3 */ { false, 0x25e3, 0x25e3 }, /* 0x25e4 */ { false, 0x25e4, 0x25e4 }, /* 0x25e5 */ { false, 0x25e5, 0x25e5 }, /* 0x25e6 */ { false, 0x25e6, 0x25e6 }, /* 0x25e7 */ { false, 0x25e7, 0x25e7 }, /* 0x25e8 */ { false, 0x25e8, 0x25e8 }, /* 0x25e9 */ { false, 0x25e9, 0x25e9 }, /* 0x25ea */ { false, 0x25ea, 0x25ea }, /* 0x25eb */ { false, 0x25eb, 0x25eb }, /* 0x25ec */ { false, 0x25ec, 0x25ec }, /* 0x25ed */ { false, 0x25ed, 0x25ed }, /* 0x25ee */ { false, 0x25ee, 0x25ee }, /* 0x25ef */ { false, 0x25ef, 0x25ef }, /* 0x25f0 */ { false, 0x25f0, 0x25f0 }, /* 0x25f1 */ { false, 0x25f1, 0x25f1 }, /* 0x25f2 */ { false, 0x25f2, 0x25f2 }, /* 0x25f3 */ { false, 0x25f3, 0x25f3 }, /* 0x25f4 */ { false, 0x25f4, 0x25f4 }, /* 0x25f5 */ { false, 0x25f5, 0x25f5 }, /* 0x25f6 */ { false, 0x25f6, 0x25f6 }, /* 0x25f7 */ { false, 0x25f7, 0x25f7 }, /* 0x25f8 */ { false, 0x25f8, 0x25f8 }, /* 0x25f9 */ { false, 0x25f9, 0x25f9 }, /* 0x25fa */ { false, 0x25fa, 0x25fa }, /* 0x25fb */ { false, 0x25fb, 0x25fb }, /* 0x25fc */ { false, 0x25fc, 0x25fc }, /* 0x25fd */ { false, 0x25fd, 0x25fd }, /* 0x25fe */ { false, 0x25fe, 0x25fe }, /* 0x25ff */ { false, 0x25ff, 0x25ff }, /* 0x2600 */ { false, 0x2600, 0x2600 }, /* 0x2601 */ { false, 0x2601, 0x2601 }, /* 0x2602 */ { false, 0x2602, 0x2602 }, /* 0x2603 */ { false, 0x2603, 0x2603 }, /* 0x2604 */ { false, 0x2604, 0x2604 }, /* 0x2605 */ { false, 0x2605, 0x2605 }, /* 0x2606 */ { false, 0x2606, 0x2606 }, /* 0x2607 */ { false, 0x2607, 0x2607 }, /* 0x2608 */ { false, 0x2608, 0x2608 }, /* 0x2609 */ { false, 0x2609, 0x2609 }, /* 0x260a */ { false, 0x260a, 0x260a }, /* 0x260b */ { false, 0x260b, 0x260b }, /* 0x260c */ { false, 0x260c, 0x260c }, /* 0x260d */ { false, 0x260d, 0x260d }, /* 0x260e */ { false, 0x260e, 0x260e }, /* 0x260f */ { false, 0x260f, 0x260f }, /* 0x2610 */ { false, 0x2610, 0x2610 }, /* 0x2611 */ { false, 0x2611, 0x2611 }, /* 0x2612 */ { false, 0x2612, 0x2612 }, /* 0x2613 */ { false, 0x2613, 0x2613 }, /* 0x2614 */ { false, 0x2614, 0x2614 }, /* 0x2615 */ { false, 0x2615, 0x2615 }, /* 0x2616 */ { false, 0x2616, 0x2616 }, /* 0x2617 */ { false, 0x2617, 0x2617 }, /* 0x2618 */ { false, 0x2618, 0x2618 }, /* 0x2619 */ { false, 0x2619, 0x2619 }, /* 0x261a */ { false, 0x261a, 0x261a }, /* 0x261b */ { false, 0x261b, 0x261b }, /* 0x261c */ { false, 0x261c, 0x261c }, /* 0x261d */ { false, 0x261d, 0x261d }, /* 0x261e */ { false, 0x261e, 0x261e }, /* 0x261f */ { false, 0x261f, 0x261f }, /* 0x2620 */ { false, 0x2620, 0x2620 }, /* 0x2621 */ { false, 0x2621, 0x2621 }, /* 0x2622 */ { false, 0x2622, 0x2622 }, /* 0x2623 */ { false, 0x2623, 0x2623 }, /* 0x2624 */ { false, 0x2624, 0x2624 }, /* 0x2625 */ { false, 0x2625, 0x2625 }, /* 0x2626 */ { false, 0x2626, 0x2626 }, /* 0x2627 */ { false, 0x2627, 0x2627 }, /* 0x2628 */ { false, 0x2628, 0x2628 }, /* 0x2629 */ { false, 0x2629, 0x2629 }, /* 0x262a */ { false, 0x262a, 0x262a }, /* 0x262b */ { false, 0x262b, 0x262b }, /* 0x262c */ { false, 0x262c, 0x262c }, /* 0x262d */ { false, 0x262d, 0x262d }, /* 0x262e */ { false, 0x262e, 0x262e }, /* 0x262f */ { false, 0x262f, 0x262f }, /* 0x2630 */ { false, 0x2630, 0x2630 }, /* 0x2631 */ { false, 0x2631, 0x2631 }, /* 0x2632 */ { false, 0x2632, 0x2632 }, /* 0x2633 */ { false, 0x2633, 0x2633 }, /* 0x2634 */ { false, 0x2634, 0x2634 }, /* 0x2635 */ { false, 0x2635, 0x2635 }, /* 0x2636 */ { false, 0x2636, 0x2636 }, /* 0x2637 */ { false, 0x2637, 0x2637 }, /* 0x2638 */ { false, 0x2638, 0x2638 }, /* 0x2639 */ { false, 0x2639, 0x2639 }, /* 0x263a */ { false, 0x263a, 0x263a }, /* 0x263b */ { false, 0x263b, 0x263b }, /* 0x263c */ { false, 0x263c, 0x263c }, /* 0x263d */ { false, 0x263d, 0x263d }, /* 0x263e */ { false, 0x263e, 0x263e }, /* 0x263f */ { false, 0x263f, 0x263f }, /* 0x2640 */ { false, 0x2640, 0x2640 }, /* 0x2641 */ { false, 0x2641, 0x2641 }, /* 0x2642 */ { false, 0x2642, 0x2642 }, /* 0x2643 */ { false, 0x2643, 0x2643 }, /* 0x2644 */ { false, 0x2644, 0x2644 }, /* 0x2645 */ { false, 0x2645, 0x2645 }, /* 0x2646 */ { false, 0x2646, 0x2646 }, /* 0x2647 */ { false, 0x2647, 0x2647 }, /* 0x2648 */ { false, 0x2648, 0x2648 }, /* 0x2649 */ { false, 0x2649, 0x2649 }, /* 0x264a */ { false, 0x264a, 0x264a }, /* 0x264b */ { false, 0x264b, 0x264b }, /* 0x264c */ { false, 0x264c, 0x264c }, /* 0x264d */ { false, 0x264d, 0x264d }, /* 0x264e */ { false, 0x264e, 0x264e }, /* 0x264f */ { false, 0x264f, 0x264f }, /* 0x2650 */ { false, 0x2650, 0x2650 }, /* 0x2651 */ { false, 0x2651, 0x2651 }, /* 0x2652 */ { false, 0x2652, 0x2652 }, /* 0x2653 */ { false, 0x2653, 0x2653 }, /* 0x2654 */ { false, 0x2654, 0x2654 }, /* 0x2655 */ { false, 0x2655, 0x2655 }, /* 0x2656 */ { false, 0x2656, 0x2656 }, /* 0x2657 */ { false, 0x2657, 0x2657 }, /* 0x2658 */ { false, 0x2658, 0x2658 }, /* 0x2659 */ { false, 0x2659, 0x2659 }, /* 0x265a */ { false, 0x265a, 0x265a }, /* 0x265b */ { false, 0x265b, 0x265b }, /* 0x265c */ { false, 0x265c, 0x265c }, /* 0x265d */ { false, 0x265d, 0x265d }, /* 0x265e */ { false, 0x265e, 0x265e }, /* 0x265f */ { false, 0x265f, 0x265f }, /* 0x2660 */ { false, 0x2660, 0x2660 }, /* 0x2661 */ { false, 0x2661, 0x2661 }, /* 0x2662 */ { false, 0x2662, 0x2662 }, /* 0x2663 */ { false, 0x2663, 0x2663 }, /* 0x2664 */ { false, 0x2664, 0x2664 }, /* 0x2665 */ { false, 0x2665, 0x2665 }, /* 0x2666 */ { false, 0x2666, 0x2666 }, /* 0x2667 */ { false, 0x2667, 0x2667 }, /* 0x2668 */ { false, 0x2668, 0x2668 }, /* 0x2669 */ { false, 0x2669, 0x2669 }, /* 0x266a */ { false, 0x266a, 0x266a }, /* 0x266b */ { false, 0x266b, 0x266b }, /* 0x266c */ { false, 0x266c, 0x266c }, /* 0x266d */ { false, 0x266d, 0x266d }, /* 0x266e */ { false, 0x266e, 0x266e }, /* 0x266f */ { false, 0x266f, 0x266f }, /* 0x2670 */ { false, 0x2670, 0x2670 }, /* 0x2671 */ { false, 0x2671, 0x2671 }, /* 0x2672 */ { false, 0x2672, 0x2672 }, /* 0x2673 */ { false, 0x2673, 0x2673 }, /* 0x2674 */ { false, 0x2674, 0x2674 }, /* 0x2675 */ { false, 0x2675, 0x2675 }, /* 0x2676 */ { false, 0x2676, 0x2676 }, /* 0x2677 */ { false, 0x2677, 0x2677 }, /* 0x2678 */ { false, 0x2678, 0x2678 }, /* 0x2679 */ { false, 0x2679, 0x2679 }, /* 0x267a */ { false, 0x267a, 0x267a }, /* 0x267b */ { false, 0x267b, 0x267b }, /* 0x267c */ { false, 0x267c, 0x267c }, /* 0x267d */ { false, 0x267d, 0x267d }, /* 0x267e */ { false, 0x267e, 0x267e }, /* 0x267f */ { false, 0x267f, 0x267f }, /* 0x2680 */ { false, 0x2680, 0x2680 }, /* 0x2681 */ { false, 0x2681, 0x2681 }, /* 0x2682 */ { false, 0x2682, 0x2682 }, /* 0x2683 */ { false, 0x2683, 0x2683 }, /* 0x2684 */ { false, 0x2684, 0x2684 }, /* 0x2685 */ { false, 0x2685, 0x2685 }, /* 0x2686 */ { false, 0x2686, 0x2686 }, /* 0x2687 */ { false, 0x2687, 0x2687 }, /* 0x2688 */ { false, 0x2688, 0x2688 }, /* 0x2689 */ { false, 0x2689, 0x2689 }, /* 0x268a */ { false, 0x268a, 0x268a }, /* 0x268b */ { false, 0x268b, 0x268b }, /* 0x268c */ { false, 0x268c, 0x268c }, /* 0x268d */ { false, 0x268d, 0x268d }, /* 0x268e */ { false, 0x268e, 0x268e }, /* 0x268f */ { false, 0x268f, 0x268f }, /* 0x2690 */ { false, 0x2690, 0x2690 }, /* 0x2691 */ { false, 0x2691, 0x2691 }, /* 0x2692 */ { false, 0x2692, 0x2692 }, /* 0x2693 */ { false, 0x2693, 0x2693 }, /* 0x2694 */ { false, 0x2694, 0x2694 }, /* 0x2695 */ { false, 0x2695, 0x2695 }, /* 0x2696 */ { false, 0x2696, 0x2696 }, /* 0x2697 */ { false, 0x2697, 0x2697 }, /* 0x2698 */ { false, 0x2698, 0x2698 }, /* 0x2699 */ { false, 0x2699, 0x2699 }, /* 0x269a */ { false, 0x269a, 0x269a }, /* 0x269b */ { false, 0x269b, 0x269b }, /* 0x269c */ { false, 0x269c, 0x269c }, /* 0x269d */ { false, 0x269d, 0x269d }, /* 0x269e */ { false, 0x269e, 0x269e }, /* 0x269f */ { false, 0x269f, 0x269f }, /* 0x26a0 */ { false, 0x26a0, 0x26a0 }, /* 0x26a1 */ { false, 0x26a1, 0x26a1 }, /* 0x26a2 */ { false, 0x26a2, 0x26a2 }, /* 0x26a3 */ { false, 0x26a3, 0x26a3 }, /* 0x26a4 */ { false, 0x26a4, 0x26a4 }, /* 0x26a5 */ { false, 0x26a5, 0x26a5 }, /* 0x26a6 */ { false, 0x26a6, 0x26a6 }, /* 0x26a7 */ { false, 0x26a7, 0x26a7 }, /* 0x26a8 */ { false, 0x26a8, 0x26a8 }, /* 0x26a9 */ { false, 0x26a9, 0x26a9 }, /* 0x26aa */ { false, 0x26aa, 0x26aa }, /* 0x26ab */ { false, 0x26ab, 0x26ab }, /* 0x26ac */ { false, 0x26ac, 0x26ac }, /* 0x26ad */ { false, 0x26ad, 0x26ad }, /* 0x26ae */ { false, 0x26ae, 0x26ae }, /* 0x26af */ { false, 0x26af, 0x26af }, /* 0x26b0 */ { false, 0x26b0, 0x26b0 }, /* 0x26b1 */ { false, 0x26b1, 0x26b1 }, /* 0x26b2 */ { false, 0x26b2, 0x26b2 }, /* 0x26b3 */ { false, 0x26b3, 0x26b3 }, /* 0x26b4 */ { false, 0x26b4, 0x26b4 }, /* 0x26b5 */ { false, 0x26b5, 0x26b5 }, /* 0x26b6 */ { false, 0x26b6, 0x26b6 }, /* 0x26b7 */ { false, 0x26b7, 0x26b7 }, /* 0x26b8 */ { false, 0x26b8, 0x26b8 }, /* 0x26b9 */ { false, 0x26b9, 0x26b9 }, /* 0x26ba */ { false, 0x26ba, 0x26ba }, /* 0x26bb */ { false, 0x26bb, 0x26bb }, /* 0x26bc */ { false, 0x26bc, 0x26bc }, /* 0x26bd */ { false, 0x26bd, 0x26bd }, /* 0x26be */ { false, 0x26be, 0x26be }, /* 0x26bf */ { false, 0x26bf, 0x26bf }, /* 0x26c0 */ { false, 0x26c0, 0x26c0 }, /* 0x26c1 */ { false, 0x26c1, 0x26c1 }, /* 0x26c2 */ { false, 0x26c2, 0x26c2 }, /* 0x26c3 */ { false, 0x26c3, 0x26c3 }, /* 0x26c4 */ { false, 0x26c4, 0x26c4 }, /* 0x26c5 */ { false, 0x26c5, 0x26c5 }, /* 0x26c6 */ { false, 0x26c6, 0x26c6 }, /* 0x26c7 */ { false, 0x26c7, 0x26c7 }, /* 0x26c8 */ { false, 0x26c8, 0x26c8 }, /* 0x26c9 */ { false, 0x26c9, 0x26c9 }, /* 0x26ca */ { false, 0x26ca, 0x26ca }, /* 0x26cb */ { false, 0x26cb, 0x26cb }, /* 0x26cc */ { false, 0x26cc, 0x26cc }, /* 0x26cd */ { false, 0x26cd, 0x26cd }, /* 0x26ce */ { false, 0x26ce, 0x26ce }, /* 0x26cf */ { false, 0x26cf, 0x26cf }, /* 0x26d0 */ { false, 0x26d0, 0x26d0 }, /* 0x26d1 */ { false, 0x26d1, 0x26d1 }, /* 0x26d2 */ { false, 0x26d2, 0x26d2 }, /* 0x26d3 */ { false, 0x26d3, 0x26d3 }, /* 0x26d4 */ { false, 0x26d4, 0x26d4 }, /* 0x26d5 */ { false, 0x26d5, 0x26d5 }, /* 0x26d6 */ { false, 0x26d6, 0x26d6 }, /* 0x26d7 */ { false, 0x26d7, 0x26d7 }, /* 0x26d8 */ { false, 0x26d8, 0x26d8 }, /* 0x26d9 */ { false, 0x26d9, 0x26d9 }, /* 0x26da */ { false, 0x26da, 0x26da }, /* 0x26db */ { false, 0x26db, 0x26db }, /* 0x26dc */ { false, 0x26dc, 0x26dc }, /* 0x26dd */ { false, 0x26dd, 0x26dd }, /* 0x26de */ { false, 0x26de, 0x26de }, /* 0x26df */ { false, 0x26df, 0x26df }, /* 0x26e0 */ { false, 0x26e0, 0x26e0 }, /* 0x26e1 */ { false, 0x26e1, 0x26e1 }, /* 0x26e2 */ { false, 0x26e2, 0x26e2 }, /* 0x26e3 */ { false, 0x26e3, 0x26e3 }, /* 0x26e4 */ { false, 0x26e4, 0x26e4 }, /* 0x26e5 */ { false, 0x26e5, 0x26e5 }, /* 0x26e6 */ { false, 0x26e6, 0x26e6 }, /* 0x26e7 */ { false, 0x26e7, 0x26e7 }, /* 0x26e8 */ { false, 0x26e8, 0x26e8 }, /* 0x26e9 */ { false, 0x26e9, 0x26e9 }, /* 0x26ea */ { false, 0x26ea, 0x26ea }, /* 0x26eb */ { false, 0x26eb, 0x26eb }, /* 0x26ec */ { false, 0x26ec, 0x26ec }, /* 0x26ed */ { false, 0x26ed, 0x26ed }, /* 0x26ee */ { false, 0x26ee, 0x26ee }, /* 0x26ef */ { false, 0x26ef, 0x26ef }, /* 0x26f0 */ { false, 0x26f0, 0x26f0 }, /* 0x26f1 */ { false, 0x26f1, 0x26f1 }, /* 0x26f2 */ { false, 0x26f2, 0x26f2 }, /* 0x26f3 */ { false, 0x26f3, 0x26f3 }, /* 0x26f4 */ { false, 0x26f4, 0x26f4 }, /* 0x26f5 */ { false, 0x26f5, 0x26f5 }, /* 0x26f6 */ { false, 0x26f6, 0x26f6 }, /* 0x26f7 */ { false, 0x26f7, 0x26f7 }, /* 0x26f8 */ { false, 0x26f8, 0x26f8 }, /* 0x26f9 */ { false, 0x26f9, 0x26f9 }, /* 0x26fa */ { false, 0x26fa, 0x26fa }, /* 0x26fb */ { false, 0x26fb, 0x26fb }, /* 0x26fc */ { false, 0x26fc, 0x26fc }, /* 0x26fd */ { false, 0x26fd, 0x26fd }, /* 0x26fe */ { false, 0x26fe, 0x26fe }, /* 0x26ff */ { false, 0x26ff, 0x26ff }, /* 0x2700 */ { false, 0x2700, 0x2700 }, /* 0x2701 */ { false, 0x2701, 0x2701 }, /* 0x2702 */ { false, 0x2702, 0x2702 }, /* 0x2703 */ { false, 0x2703, 0x2703 }, /* 0x2704 */ { false, 0x2704, 0x2704 }, /* 0x2705 */ { false, 0x2705, 0x2705 }, /* 0x2706 */ { false, 0x2706, 0x2706 }, /* 0x2707 */ { false, 0x2707, 0x2707 }, /* 0x2708 */ { false, 0x2708, 0x2708 }, /* 0x2709 */ { false, 0x2709, 0x2709 }, /* 0x270a */ { false, 0x270a, 0x270a }, /* 0x270b */ { false, 0x270b, 0x270b }, /* 0x270c */ { false, 0x270c, 0x270c }, /* 0x270d */ { false, 0x270d, 0x270d }, /* 0x270e */ { false, 0x270e, 0x270e }, /* 0x270f */ { false, 0x270f, 0x270f }, /* 0x2710 */ { false, 0x2710, 0x2710 }, /* 0x2711 */ { false, 0x2711, 0x2711 }, /* 0x2712 */ { false, 0x2712, 0x2712 }, /* 0x2713 */ { false, 0x2713, 0x2713 }, /* 0x2714 */ { false, 0x2714, 0x2714 }, /* 0x2715 */ { false, 0x2715, 0x2715 }, /* 0x2716 */ { false, 0x2716, 0x2716 }, /* 0x2717 */ { false, 0x2717, 0x2717 }, /* 0x2718 */ { false, 0x2718, 0x2718 }, /* 0x2719 */ { false, 0x2719, 0x2719 }, /* 0x271a */ { false, 0x271a, 0x271a }, /* 0x271b */ { false, 0x271b, 0x271b }, /* 0x271c */ { false, 0x271c, 0x271c }, /* 0x271d */ { false, 0x271d, 0x271d }, /* 0x271e */ { false, 0x271e, 0x271e }, /* 0x271f */ { false, 0x271f, 0x271f }, /* 0x2720 */ { false, 0x2720, 0x2720 }, /* 0x2721 */ { false, 0x2721, 0x2721 }, /* 0x2722 */ { false, 0x2722, 0x2722 }, /* 0x2723 */ { false, 0x2723, 0x2723 }, /* 0x2724 */ { false, 0x2724, 0x2724 }, /* 0x2725 */ { false, 0x2725, 0x2725 }, /* 0x2726 */ { false, 0x2726, 0x2726 }, /* 0x2727 */ { false, 0x2727, 0x2727 }, /* 0x2728 */ { false, 0x2728, 0x2728 }, /* 0x2729 */ { false, 0x2729, 0x2729 }, /* 0x272a */ { false, 0x272a, 0x272a }, /* 0x272b */ { false, 0x272b, 0x272b }, /* 0x272c */ { false, 0x272c, 0x272c }, /* 0x272d */ { false, 0x272d, 0x272d }, /* 0x272e */ { false, 0x272e, 0x272e }, /* 0x272f */ { false, 0x272f, 0x272f }, /* 0x2730 */ { false, 0x2730, 0x2730 }, /* 0x2731 */ { false, 0x2731, 0x2731 }, /* 0x2732 */ { false, 0x2732, 0x2732 }, /* 0x2733 */ { false, 0x2733, 0x2733 }, /* 0x2734 */ { false, 0x2734, 0x2734 }, /* 0x2735 */ { false, 0x2735, 0x2735 }, /* 0x2736 */ { false, 0x2736, 0x2736 }, /* 0x2737 */ { false, 0x2737, 0x2737 }, /* 0x2738 */ { false, 0x2738, 0x2738 }, /* 0x2739 */ { false, 0x2739, 0x2739 }, /* 0x273a */ { false, 0x273a, 0x273a }, /* 0x273b */ { false, 0x273b, 0x273b }, /* 0x273c */ { false, 0x273c, 0x273c }, /* 0x273d */ { false, 0x273d, 0x273d }, /* 0x273e */ { false, 0x273e, 0x273e }, /* 0x273f */ { false, 0x273f, 0x273f }, /* 0x2740 */ { false, 0x2740, 0x2740 }, /* 0x2741 */ { false, 0x2741, 0x2741 }, /* 0x2742 */ { false, 0x2742, 0x2742 }, /* 0x2743 */ { false, 0x2743, 0x2743 }, /* 0x2744 */ { false, 0x2744, 0x2744 }, /* 0x2745 */ { false, 0x2745, 0x2745 }, /* 0x2746 */ { false, 0x2746, 0x2746 }, /* 0x2747 */ { false, 0x2747, 0x2747 }, /* 0x2748 */ { false, 0x2748, 0x2748 }, /* 0x2749 */ { false, 0x2749, 0x2749 }, /* 0x274a */ { false, 0x274a, 0x274a }, /* 0x274b */ { false, 0x274b, 0x274b }, /* 0x274c */ { false, 0x274c, 0x274c }, /* 0x274d */ { false, 0x274d, 0x274d }, /* 0x274e */ { false, 0x274e, 0x274e }, /* 0x274f */ { false, 0x274f, 0x274f }, /* 0x2750 */ { false, 0x2750, 0x2750 }, /* 0x2751 */ { false, 0x2751, 0x2751 }, /* 0x2752 */ { false, 0x2752, 0x2752 }, /* 0x2753 */ { false, 0x2753, 0x2753 }, /* 0x2754 */ { false, 0x2754, 0x2754 }, /* 0x2755 */ { false, 0x2755, 0x2755 }, /* 0x2756 */ { false, 0x2756, 0x2756 }, /* 0x2757 */ { false, 0x2757, 0x2757 }, /* 0x2758 */ { false, 0x2758, 0x2758 }, /* 0x2759 */ { false, 0x2759, 0x2759 }, /* 0x275a */ { false, 0x275a, 0x275a }, /* 0x275b */ { false, 0x275b, 0x275b }, /* 0x275c */ { false, 0x275c, 0x275c }, /* 0x275d */ { false, 0x275d, 0x275d }, /* 0x275e */ { false, 0x275e, 0x275e }, /* 0x275f */ { false, 0x275f, 0x275f }, /* 0x2760 */ { false, 0x2760, 0x2760 }, /* 0x2761 */ { false, 0x2761, 0x2761 }, /* 0x2762 */ { false, 0x2762, 0x2762 }, /* 0x2763 */ { false, 0x2763, 0x2763 }, /* 0x2764 */ { false, 0x2764, 0x2764 }, /* 0x2765 */ { false, 0x2765, 0x2765 }, /* 0x2766 */ { false, 0x2766, 0x2766 }, /* 0x2767 */ { false, 0x2767, 0x2767 }, /* 0x2768 */ { false, 0x2768, 0x2768 }, /* 0x2769 */ { false, 0x2769, 0x2769 }, /* 0x276a */ { false, 0x276a, 0x276a }, /* 0x276b */ { false, 0x276b, 0x276b }, /* 0x276c */ { false, 0x276c, 0x276c }, /* 0x276d */ { false, 0x276d, 0x276d }, /* 0x276e */ { false, 0x276e, 0x276e }, /* 0x276f */ { false, 0x276f, 0x276f }, /* 0x2770 */ { false, 0x2770, 0x2770 }, /* 0x2771 */ { false, 0x2771, 0x2771 }, /* 0x2772 */ { false, 0x2772, 0x2772 }, /* 0x2773 */ { false, 0x2773, 0x2773 }, /* 0x2774 */ { false, 0x2774, 0x2774 }, /* 0x2775 */ { false, 0x2775, 0x2775 }, /* 0x2776 */ { false, 0x2776, 0x2776 }, /* 0x2777 */ { false, 0x2777, 0x2777 }, /* 0x2778 */ { false, 0x2778, 0x2778 }, /* 0x2779 */ { false, 0x2779, 0x2779 }, /* 0x277a */ { false, 0x277a, 0x277a }, /* 0x277b */ { false, 0x277b, 0x277b }, /* 0x277c */ { false, 0x277c, 0x277c }, /* 0x277d */ { false, 0x277d, 0x277d }, /* 0x277e */ { false, 0x277e, 0x277e }, /* 0x277f */ { false, 0x277f, 0x277f }, /* 0x2780 */ { false, 0x2780, 0x2780 }, /* 0x2781 */ { false, 0x2781, 0x2781 }, /* 0x2782 */ { false, 0x2782, 0x2782 }, /* 0x2783 */ { false, 0x2783, 0x2783 }, /* 0x2784 */ { false, 0x2784, 0x2784 }, /* 0x2785 */ { false, 0x2785, 0x2785 }, /* 0x2786 */ { false, 0x2786, 0x2786 }, /* 0x2787 */ { false, 0x2787, 0x2787 }, /* 0x2788 */ { false, 0x2788, 0x2788 }, /* 0x2789 */ { false, 0x2789, 0x2789 }, /* 0x278a */ { false, 0x278a, 0x278a }, /* 0x278b */ { false, 0x278b, 0x278b }, /* 0x278c */ { false, 0x278c, 0x278c }, /* 0x278d */ { false, 0x278d, 0x278d }, /* 0x278e */ { false, 0x278e, 0x278e }, /* 0x278f */ { false, 0x278f, 0x278f }, /* 0x2790 */ { false, 0x2790, 0x2790 }, /* 0x2791 */ { false, 0x2791, 0x2791 }, /* 0x2792 */ { false, 0x2792, 0x2792 }, /* 0x2793 */ { false, 0x2793, 0x2793 }, /* 0x2794 */ { false, 0x2794, 0x2794 }, /* 0x2795 */ { false, 0x2795, 0x2795 }, /* 0x2796 */ { false, 0x2796, 0x2796 }, /* 0x2797 */ { false, 0x2797, 0x2797 }, /* 0x2798 */ { false, 0x2798, 0x2798 }, /* 0x2799 */ { false, 0x2799, 0x2799 }, /* 0x279a */ { false, 0x279a, 0x279a }, /* 0x279b */ { false, 0x279b, 0x279b }, /* 0x279c */ { false, 0x279c, 0x279c }, /* 0x279d */ { false, 0x279d, 0x279d }, /* 0x279e */ { false, 0x279e, 0x279e }, /* 0x279f */ { false, 0x279f, 0x279f }, /* 0x27a0 */ { false, 0x27a0, 0x27a0 }, /* 0x27a1 */ { false, 0x27a1, 0x27a1 }, /* 0x27a2 */ { false, 0x27a2, 0x27a2 }, /* 0x27a3 */ { false, 0x27a3, 0x27a3 }, /* 0x27a4 */ { false, 0x27a4, 0x27a4 }, /* 0x27a5 */ { false, 0x27a5, 0x27a5 }, /* 0x27a6 */ { false, 0x27a6, 0x27a6 }, /* 0x27a7 */ { false, 0x27a7, 0x27a7 }, /* 0x27a8 */ { false, 0x27a8, 0x27a8 }, /* 0x27a9 */ { false, 0x27a9, 0x27a9 }, /* 0x27aa */ { false, 0x27aa, 0x27aa }, /* 0x27ab */ { false, 0x27ab, 0x27ab }, /* 0x27ac */ { false, 0x27ac, 0x27ac }, /* 0x27ad */ { false, 0x27ad, 0x27ad }, /* 0x27ae */ { false, 0x27ae, 0x27ae }, /* 0x27af */ { false, 0x27af, 0x27af }, /* 0x27b0 */ { false, 0x27b0, 0x27b0 }, /* 0x27b1 */ { false, 0x27b1, 0x27b1 }, /* 0x27b2 */ { false, 0x27b2, 0x27b2 }, /* 0x27b3 */ { false, 0x27b3, 0x27b3 }, /* 0x27b4 */ { false, 0x27b4, 0x27b4 }, /* 0x27b5 */ { false, 0x27b5, 0x27b5 }, /* 0x27b6 */ { false, 0x27b6, 0x27b6 }, /* 0x27b7 */ { false, 0x27b7, 0x27b7 }, /* 0x27b8 */ { false, 0x27b8, 0x27b8 }, /* 0x27b9 */ { false, 0x27b9, 0x27b9 }, /* 0x27ba */ { false, 0x27ba, 0x27ba }, /* 0x27bb */ { false, 0x27bb, 0x27bb }, /* 0x27bc */ { false, 0x27bc, 0x27bc }, /* 0x27bd */ { false, 0x27bd, 0x27bd }, /* 0x27be */ { false, 0x27be, 0x27be }, /* 0x27bf */ { false, 0x27bf, 0x27bf }, /* 0x27c0 */ { false, 0x27c0, 0x27c0 }, /* 0x27c1 */ { false, 0x27c1, 0x27c1 }, /* 0x27c2 */ { false, 0x27c2, 0x27c2 }, /* 0x27c3 */ { false, 0x27c3, 0x27c3 }, /* 0x27c4 */ { false, 0x27c4, 0x27c4 }, /* 0x27c5 */ { false, 0x27c5, 0x27c5 }, /* 0x27c6 */ { false, 0x27c6, 0x27c6 }, /* 0x27c7 */ { false, 0x27c7, 0x27c7 }, /* 0x27c8 */ { false, 0x27c8, 0x27c8 }, /* 0x27c9 */ { false, 0x27c9, 0x27c9 }, /* 0x27ca */ { false, 0x27ca, 0x27ca }, /* 0x27cb */ { false, 0x27cb, 0x27cb }, /* 0x27cc */ { false, 0x27cc, 0x27cc }, /* 0x27cd */ { false, 0x27cd, 0x27cd }, /* 0x27ce */ { false, 0x27ce, 0x27ce }, /* 0x27cf */ { false, 0x27cf, 0x27cf }, /* 0x27d0 */ { false, 0x27d0, 0x27d0 }, /* 0x27d1 */ { false, 0x27d1, 0x27d1 }, /* 0x27d2 */ { false, 0x27d2, 0x27d2 }, /* 0x27d3 */ { false, 0x27d3, 0x27d3 }, /* 0x27d4 */ { false, 0x27d4, 0x27d4 }, /* 0x27d5 */ { false, 0x27d5, 0x27d5 }, /* 0x27d6 */ { false, 0x27d6, 0x27d6 }, /* 0x27d7 */ { false, 0x27d7, 0x27d7 }, /* 0x27d8 */ { false, 0x27d8, 0x27d8 }, /* 0x27d9 */ { false, 0x27d9, 0x27d9 }, /* 0x27da */ { false, 0x27da, 0x27da }, /* 0x27db */ { false, 0x27db, 0x27db }, /* 0x27dc */ { false, 0x27dc, 0x27dc }, /* 0x27dd */ { false, 0x27dd, 0x27dd }, /* 0x27de */ { false, 0x27de, 0x27de }, /* 0x27df */ { false, 0x27df, 0x27df }, /* 0x27e0 */ { false, 0x27e0, 0x27e0 }, /* 0x27e1 */ { false, 0x27e1, 0x27e1 }, /* 0x27e2 */ { false, 0x27e2, 0x27e2 }, /* 0x27e3 */ { false, 0x27e3, 0x27e3 }, /* 0x27e4 */ { false, 0x27e4, 0x27e4 }, /* 0x27e5 */ { false, 0x27e5, 0x27e5 }, /* 0x27e6 */ { false, 0x27e6, 0x27e6 }, /* 0x27e7 */ { false, 0x27e7, 0x27e7 }, /* 0x27e8 */ { false, 0x27e8, 0x27e8 }, /* 0x27e9 */ { false, 0x27e9, 0x27e9 }, /* 0x27ea */ { false, 0x27ea, 0x27ea }, /* 0x27eb */ { false, 0x27eb, 0x27eb }, /* 0x27ec */ { false, 0x27ec, 0x27ec }, /* 0x27ed */ { false, 0x27ed, 0x27ed }, /* 0x27ee */ { false, 0x27ee, 0x27ee }, /* 0x27ef */ { false, 0x27ef, 0x27ef }, /* 0x27f0 */ { false, 0x27f0, 0x27f0 }, /* 0x27f1 */ { false, 0x27f1, 0x27f1 }, /* 0x27f2 */ { false, 0x27f2, 0x27f2 }, /* 0x27f3 */ { false, 0x27f3, 0x27f3 }, /* 0x27f4 */ { false, 0x27f4, 0x27f4 }, /* 0x27f5 */ { false, 0x27f5, 0x27f5 }, /* 0x27f6 */ { false, 0x27f6, 0x27f6 }, /* 0x27f7 */ { false, 0x27f7, 0x27f7 }, /* 0x27f8 */ { false, 0x27f8, 0x27f8 }, /* 0x27f9 */ { false, 0x27f9, 0x27f9 }, /* 0x27fa */ { false, 0x27fa, 0x27fa }, /* 0x27fb */ { false, 0x27fb, 0x27fb }, /* 0x27fc */ { false, 0x27fc, 0x27fc }, /* 0x27fd */ { false, 0x27fd, 0x27fd }, /* 0x27fe */ { false, 0x27fe, 0x27fe }, /* 0x27ff */ { false, 0x27ff, 0x27ff }, /* 0x2800 */ { false, 0x2800, 0x2800 }, /* 0x2801 */ { false, 0x2801, 0x2801 }, /* 0x2802 */ { false, 0x2802, 0x2802 }, /* 0x2803 */ { false, 0x2803, 0x2803 }, /* 0x2804 */ { false, 0x2804, 0x2804 }, /* 0x2805 */ { false, 0x2805, 0x2805 }, /* 0x2806 */ { false, 0x2806, 0x2806 }, /* 0x2807 */ { false, 0x2807, 0x2807 }, /* 0x2808 */ { false, 0x2808, 0x2808 }, /* 0x2809 */ { false, 0x2809, 0x2809 }, /* 0x280a */ { false, 0x280a, 0x280a }, /* 0x280b */ { false, 0x280b, 0x280b }, /* 0x280c */ { false, 0x280c, 0x280c }, /* 0x280d */ { false, 0x280d, 0x280d }, /* 0x280e */ { false, 0x280e, 0x280e }, /* 0x280f */ { false, 0x280f, 0x280f }, /* 0x2810 */ { false, 0x2810, 0x2810 }, /* 0x2811 */ { false, 0x2811, 0x2811 }, /* 0x2812 */ { false, 0x2812, 0x2812 }, /* 0x2813 */ { false, 0x2813, 0x2813 }, /* 0x2814 */ { false, 0x2814, 0x2814 }, /* 0x2815 */ { false, 0x2815, 0x2815 }, /* 0x2816 */ { false, 0x2816, 0x2816 }, /* 0x2817 */ { false, 0x2817, 0x2817 }, /* 0x2818 */ { false, 0x2818, 0x2818 }, /* 0x2819 */ { false, 0x2819, 0x2819 }, /* 0x281a */ { false, 0x281a, 0x281a }, /* 0x281b */ { false, 0x281b, 0x281b }, /* 0x281c */ { false, 0x281c, 0x281c }, /* 0x281d */ { false, 0x281d, 0x281d }, /* 0x281e */ { false, 0x281e, 0x281e }, /* 0x281f */ { false, 0x281f, 0x281f }, /* 0x2820 */ { false, 0x2820, 0x2820 }, /* 0x2821 */ { false, 0x2821, 0x2821 }, /* 0x2822 */ { false, 0x2822, 0x2822 }, /* 0x2823 */ { false, 0x2823, 0x2823 }, /* 0x2824 */ { false, 0x2824, 0x2824 }, /* 0x2825 */ { false, 0x2825, 0x2825 }, /* 0x2826 */ { false, 0x2826, 0x2826 }, /* 0x2827 */ { false, 0x2827, 0x2827 }, /* 0x2828 */ { false, 0x2828, 0x2828 }, /* 0x2829 */ { false, 0x2829, 0x2829 }, /* 0x282a */ { false, 0x282a, 0x282a }, /* 0x282b */ { false, 0x282b, 0x282b }, /* 0x282c */ { false, 0x282c, 0x282c }, /* 0x282d */ { false, 0x282d, 0x282d }, /* 0x282e */ { false, 0x282e, 0x282e }, /* 0x282f */ { false, 0x282f, 0x282f }, /* 0x2830 */ { false, 0x2830, 0x2830 }, /* 0x2831 */ { false, 0x2831, 0x2831 }, /* 0x2832 */ { false, 0x2832, 0x2832 }, /* 0x2833 */ { false, 0x2833, 0x2833 }, /* 0x2834 */ { false, 0x2834, 0x2834 }, /* 0x2835 */ { false, 0x2835, 0x2835 }, /* 0x2836 */ { false, 0x2836, 0x2836 }, /* 0x2837 */ { false, 0x2837, 0x2837 }, /* 0x2838 */ { false, 0x2838, 0x2838 }, /* 0x2839 */ { false, 0x2839, 0x2839 }, /* 0x283a */ { false, 0x283a, 0x283a }, /* 0x283b */ { false, 0x283b, 0x283b }, /* 0x283c */ { false, 0x283c, 0x283c }, /* 0x283d */ { false, 0x283d, 0x283d }, /* 0x283e */ { false, 0x283e, 0x283e }, /* 0x283f */ { false, 0x283f, 0x283f }, /* 0x2840 */ { false, 0x2840, 0x2840 }, /* 0x2841 */ { false, 0x2841, 0x2841 }, /* 0x2842 */ { false, 0x2842, 0x2842 }, /* 0x2843 */ { false, 0x2843, 0x2843 }, /* 0x2844 */ { false, 0x2844, 0x2844 }, /* 0x2845 */ { false, 0x2845, 0x2845 }, /* 0x2846 */ { false, 0x2846, 0x2846 }, /* 0x2847 */ { false, 0x2847, 0x2847 }, /* 0x2848 */ { false, 0x2848, 0x2848 }, /* 0x2849 */ { false, 0x2849, 0x2849 }, /* 0x284a */ { false, 0x284a, 0x284a }, /* 0x284b */ { false, 0x284b, 0x284b }, /* 0x284c */ { false, 0x284c, 0x284c }, /* 0x284d */ { false, 0x284d, 0x284d }, /* 0x284e */ { false, 0x284e, 0x284e }, /* 0x284f */ { false, 0x284f, 0x284f }, /* 0x2850 */ { false, 0x2850, 0x2850 }, /* 0x2851 */ { false, 0x2851, 0x2851 }, /* 0x2852 */ { false, 0x2852, 0x2852 }, /* 0x2853 */ { false, 0x2853, 0x2853 }, /* 0x2854 */ { false, 0x2854, 0x2854 }, /* 0x2855 */ { false, 0x2855, 0x2855 }, /* 0x2856 */ { false, 0x2856, 0x2856 }, /* 0x2857 */ { false, 0x2857, 0x2857 }, /* 0x2858 */ { false, 0x2858, 0x2858 }, /* 0x2859 */ { false, 0x2859, 0x2859 }, /* 0x285a */ { false, 0x285a, 0x285a }, /* 0x285b */ { false, 0x285b, 0x285b }, /* 0x285c */ { false, 0x285c, 0x285c }, /* 0x285d */ { false, 0x285d, 0x285d }, /* 0x285e */ { false, 0x285e, 0x285e }, /* 0x285f */ { false, 0x285f, 0x285f }, /* 0x2860 */ { false, 0x2860, 0x2860 }, /* 0x2861 */ { false, 0x2861, 0x2861 }, /* 0x2862 */ { false, 0x2862, 0x2862 }, /* 0x2863 */ { false, 0x2863, 0x2863 }, /* 0x2864 */ { false, 0x2864, 0x2864 }, /* 0x2865 */ { false, 0x2865, 0x2865 }, /* 0x2866 */ { false, 0x2866, 0x2866 }, /* 0x2867 */ { false, 0x2867, 0x2867 }, /* 0x2868 */ { false, 0x2868, 0x2868 }, /* 0x2869 */ { false, 0x2869, 0x2869 }, /* 0x286a */ { false, 0x286a, 0x286a }, /* 0x286b */ { false, 0x286b, 0x286b }, /* 0x286c */ { false, 0x286c, 0x286c }, /* 0x286d */ { false, 0x286d, 0x286d }, /* 0x286e */ { false, 0x286e, 0x286e }, /* 0x286f */ { false, 0x286f, 0x286f }, /* 0x2870 */ { false, 0x2870, 0x2870 }, /* 0x2871 */ { false, 0x2871, 0x2871 }, /* 0x2872 */ { false, 0x2872, 0x2872 }, /* 0x2873 */ { false, 0x2873, 0x2873 }, /* 0x2874 */ { false, 0x2874, 0x2874 }, /* 0x2875 */ { false, 0x2875, 0x2875 }, /* 0x2876 */ { false, 0x2876, 0x2876 }, /* 0x2877 */ { false, 0x2877, 0x2877 }, /* 0x2878 */ { false, 0x2878, 0x2878 }, /* 0x2879 */ { false, 0x2879, 0x2879 }, /* 0x287a */ { false, 0x287a, 0x287a }, /* 0x287b */ { false, 0x287b, 0x287b }, /* 0x287c */ { false, 0x287c, 0x287c }, /* 0x287d */ { false, 0x287d, 0x287d }, /* 0x287e */ { false, 0x287e, 0x287e }, /* 0x287f */ { false, 0x287f, 0x287f }, /* 0x2880 */ { false, 0x2880, 0x2880 }, /* 0x2881 */ { false, 0x2881, 0x2881 }, /* 0x2882 */ { false, 0x2882, 0x2882 }, /* 0x2883 */ { false, 0x2883, 0x2883 }, /* 0x2884 */ { false, 0x2884, 0x2884 }, /* 0x2885 */ { false, 0x2885, 0x2885 }, /* 0x2886 */ { false, 0x2886, 0x2886 }, /* 0x2887 */ { false, 0x2887, 0x2887 }, /* 0x2888 */ { false, 0x2888, 0x2888 }, /* 0x2889 */ { false, 0x2889, 0x2889 }, /* 0x288a */ { false, 0x288a, 0x288a }, /* 0x288b */ { false, 0x288b, 0x288b }, /* 0x288c */ { false, 0x288c, 0x288c }, /* 0x288d */ { false, 0x288d, 0x288d }, /* 0x288e */ { false, 0x288e, 0x288e }, /* 0x288f */ { false, 0x288f, 0x288f }, /* 0x2890 */ { false, 0x2890, 0x2890 }, /* 0x2891 */ { false, 0x2891, 0x2891 }, /* 0x2892 */ { false, 0x2892, 0x2892 }, /* 0x2893 */ { false, 0x2893, 0x2893 }, /* 0x2894 */ { false, 0x2894, 0x2894 }, /* 0x2895 */ { false, 0x2895, 0x2895 }, /* 0x2896 */ { false, 0x2896, 0x2896 }, /* 0x2897 */ { false, 0x2897, 0x2897 }, /* 0x2898 */ { false, 0x2898, 0x2898 }, /* 0x2899 */ { false, 0x2899, 0x2899 }, /* 0x289a */ { false, 0x289a, 0x289a }, /* 0x289b */ { false, 0x289b, 0x289b }, /* 0x289c */ { false, 0x289c, 0x289c }, /* 0x289d */ { false, 0x289d, 0x289d }, /* 0x289e */ { false, 0x289e, 0x289e }, /* 0x289f */ { false, 0x289f, 0x289f }, /* 0x28a0 */ { false, 0x28a0, 0x28a0 }, /* 0x28a1 */ { false, 0x28a1, 0x28a1 }, /* 0x28a2 */ { false, 0x28a2, 0x28a2 }, /* 0x28a3 */ { false, 0x28a3, 0x28a3 }, /* 0x28a4 */ { false, 0x28a4, 0x28a4 }, /* 0x28a5 */ { false, 0x28a5, 0x28a5 }, /* 0x28a6 */ { false, 0x28a6, 0x28a6 }, /* 0x28a7 */ { false, 0x28a7, 0x28a7 }, /* 0x28a8 */ { false, 0x28a8, 0x28a8 }, /* 0x28a9 */ { false, 0x28a9, 0x28a9 }, /* 0x28aa */ { false, 0x28aa, 0x28aa }, /* 0x28ab */ { false, 0x28ab, 0x28ab }, /* 0x28ac */ { false, 0x28ac, 0x28ac }, /* 0x28ad */ { false, 0x28ad, 0x28ad }, /* 0x28ae */ { false, 0x28ae, 0x28ae }, /* 0x28af */ { false, 0x28af, 0x28af }, /* 0x28b0 */ { false, 0x28b0, 0x28b0 }, /* 0x28b1 */ { false, 0x28b1, 0x28b1 }, /* 0x28b2 */ { false, 0x28b2, 0x28b2 }, /* 0x28b3 */ { false, 0x28b3, 0x28b3 }, /* 0x28b4 */ { false, 0x28b4, 0x28b4 }, /* 0x28b5 */ { false, 0x28b5, 0x28b5 }, /* 0x28b6 */ { false, 0x28b6, 0x28b6 }, /* 0x28b7 */ { false, 0x28b7, 0x28b7 }, /* 0x28b8 */ { false, 0x28b8, 0x28b8 }, /* 0x28b9 */ { false, 0x28b9, 0x28b9 }, /* 0x28ba */ { false, 0x28ba, 0x28ba }, /* 0x28bb */ { false, 0x28bb, 0x28bb }, /* 0x28bc */ { false, 0x28bc, 0x28bc }, /* 0x28bd */ { false, 0x28bd, 0x28bd }, /* 0x28be */ { false, 0x28be, 0x28be }, /* 0x28bf */ { false, 0x28bf, 0x28bf }, /* 0x28c0 */ { false, 0x28c0, 0x28c0 }, /* 0x28c1 */ { false, 0x28c1, 0x28c1 }, /* 0x28c2 */ { false, 0x28c2, 0x28c2 }, /* 0x28c3 */ { false, 0x28c3, 0x28c3 }, /* 0x28c4 */ { false, 0x28c4, 0x28c4 }, /* 0x28c5 */ { false, 0x28c5, 0x28c5 }, /* 0x28c6 */ { false, 0x28c6, 0x28c6 }, /* 0x28c7 */ { false, 0x28c7, 0x28c7 }, /* 0x28c8 */ { false, 0x28c8, 0x28c8 }, /* 0x28c9 */ { false, 0x28c9, 0x28c9 }, /* 0x28ca */ { false, 0x28ca, 0x28ca }, /* 0x28cb */ { false, 0x28cb, 0x28cb }, /* 0x28cc */ { false, 0x28cc, 0x28cc }, /* 0x28cd */ { false, 0x28cd, 0x28cd }, /* 0x28ce */ { false, 0x28ce, 0x28ce }, /* 0x28cf */ { false, 0x28cf, 0x28cf }, /* 0x28d0 */ { false, 0x28d0, 0x28d0 }, /* 0x28d1 */ { false, 0x28d1, 0x28d1 }, /* 0x28d2 */ { false, 0x28d2, 0x28d2 }, /* 0x28d3 */ { false, 0x28d3, 0x28d3 }, /* 0x28d4 */ { false, 0x28d4, 0x28d4 }, /* 0x28d5 */ { false, 0x28d5, 0x28d5 }, /* 0x28d6 */ { false, 0x28d6, 0x28d6 }, /* 0x28d7 */ { false, 0x28d7, 0x28d7 }, /* 0x28d8 */ { false, 0x28d8, 0x28d8 }, /* 0x28d9 */ { false, 0x28d9, 0x28d9 }, /* 0x28da */ { false, 0x28da, 0x28da }, /* 0x28db */ { false, 0x28db, 0x28db }, /* 0x28dc */ { false, 0x28dc, 0x28dc }, /* 0x28dd */ { false, 0x28dd, 0x28dd }, /* 0x28de */ { false, 0x28de, 0x28de }, /* 0x28df */ { false, 0x28df, 0x28df }, /* 0x28e0 */ { false, 0x28e0, 0x28e0 }, /* 0x28e1 */ { false, 0x28e1, 0x28e1 }, /* 0x28e2 */ { false, 0x28e2, 0x28e2 }, /* 0x28e3 */ { false, 0x28e3, 0x28e3 }, /* 0x28e4 */ { false, 0x28e4, 0x28e4 }, /* 0x28e5 */ { false, 0x28e5, 0x28e5 }, /* 0x28e6 */ { false, 0x28e6, 0x28e6 }, /* 0x28e7 */ { false, 0x28e7, 0x28e7 }, /* 0x28e8 */ { false, 0x28e8, 0x28e8 }, /* 0x28e9 */ { false, 0x28e9, 0x28e9 }, /* 0x28ea */ { false, 0x28ea, 0x28ea }, /* 0x28eb */ { false, 0x28eb, 0x28eb }, /* 0x28ec */ { false, 0x28ec, 0x28ec }, /* 0x28ed */ { false, 0x28ed, 0x28ed }, /* 0x28ee */ { false, 0x28ee, 0x28ee }, /* 0x28ef */ { false, 0x28ef, 0x28ef }, /* 0x28f0 */ { false, 0x28f0, 0x28f0 }, /* 0x28f1 */ { false, 0x28f1, 0x28f1 }, /* 0x28f2 */ { false, 0x28f2, 0x28f2 }, /* 0x28f3 */ { false, 0x28f3, 0x28f3 }, /* 0x28f4 */ { false, 0x28f4, 0x28f4 }, /* 0x28f5 */ { false, 0x28f5, 0x28f5 }, /* 0x28f6 */ { false, 0x28f6, 0x28f6 }, /* 0x28f7 */ { false, 0x28f7, 0x28f7 }, /* 0x28f8 */ { false, 0x28f8, 0x28f8 }, /* 0x28f9 */ { false, 0x28f9, 0x28f9 }, /* 0x28fa */ { false, 0x28fa, 0x28fa }, /* 0x28fb */ { false, 0x28fb, 0x28fb }, /* 0x28fc */ { false, 0x28fc, 0x28fc }, /* 0x28fd */ { false, 0x28fd, 0x28fd }, /* 0x28fe */ { false, 0x28fe, 0x28fe }, /* 0x28ff */ { false, 0x28ff, 0x28ff }, /* 0x2900 */ { false, 0x2900, 0x2900 }, /* 0x2901 */ { false, 0x2901, 0x2901 }, /* 0x2902 */ { false, 0x2902, 0x2902 }, /* 0x2903 */ { false, 0x2903, 0x2903 }, /* 0x2904 */ { false, 0x2904, 0x2904 }, /* 0x2905 */ { false, 0x2905, 0x2905 }, /* 0x2906 */ { false, 0x2906, 0x2906 }, /* 0x2907 */ { false, 0x2907, 0x2907 }, /* 0x2908 */ { false, 0x2908, 0x2908 }, /* 0x2909 */ { false, 0x2909, 0x2909 }, /* 0x290a */ { false, 0x290a, 0x290a }, /* 0x290b */ { false, 0x290b, 0x290b }, /* 0x290c */ { false, 0x290c, 0x290c }, /* 0x290d */ { false, 0x290d, 0x290d }, /* 0x290e */ { false, 0x290e, 0x290e }, /* 0x290f */ { false, 0x290f, 0x290f }, /* 0x2910 */ { false, 0x2910, 0x2910 }, /* 0x2911 */ { false, 0x2911, 0x2911 }, /* 0x2912 */ { false, 0x2912, 0x2912 }, /* 0x2913 */ { false, 0x2913, 0x2913 }, /* 0x2914 */ { false, 0x2914, 0x2914 }, /* 0x2915 */ { false, 0x2915, 0x2915 }, /* 0x2916 */ { false, 0x2916, 0x2916 }, /* 0x2917 */ { false, 0x2917, 0x2917 }, /* 0x2918 */ { false, 0x2918, 0x2918 }, /* 0x2919 */ { false, 0x2919, 0x2919 }, /* 0x291a */ { false, 0x291a, 0x291a }, /* 0x291b */ { false, 0x291b, 0x291b }, /* 0x291c */ { false, 0x291c, 0x291c }, /* 0x291d */ { false, 0x291d, 0x291d }, /* 0x291e */ { false, 0x291e, 0x291e }, /* 0x291f */ { false, 0x291f, 0x291f }, /* 0x2920 */ { false, 0x2920, 0x2920 }, /* 0x2921 */ { false, 0x2921, 0x2921 }, /* 0x2922 */ { false, 0x2922, 0x2922 }, /* 0x2923 */ { false, 0x2923, 0x2923 }, /* 0x2924 */ { false, 0x2924, 0x2924 }, /* 0x2925 */ { false, 0x2925, 0x2925 }, /* 0x2926 */ { false, 0x2926, 0x2926 }, /* 0x2927 */ { false, 0x2927, 0x2927 }, /* 0x2928 */ { false, 0x2928, 0x2928 }, /* 0x2929 */ { false, 0x2929, 0x2929 }, /* 0x292a */ { false, 0x292a, 0x292a }, /* 0x292b */ { false, 0x292b, 0x292b }, /* 0x292c */ { false, 0x292c, 0x292c }, /* 0x292d */ { false, 0x292d, 0x292d }, /* 0x292e */ { false, 0x292e, 0x292e }, /* 0x292f */ { false, 0x292f, 0x292f }, /* 0x2930 */ { false, 0x2930, 0x2930 }, /* 0x2931 */ { false, 0x2931, 0x2931 }, /* 0x2932 */ { false, 0x2932, 0x2932 }, /* 0x2933 */ { false, 0x2933, 0x2933 }, /* 0x2934 */ { false, 0x2934, 0x2934 }, /* 0x2935 */ { false, 0x2935, 0x2935 }, /* 0x2936 */ { false, 0x2936, 0x2936 }, /* 0x2937 */ { false, 0x2937, 0x2937 }, /* 0x2938 */ { false, 0x2938, 0x2938 }, /* 0x2939 */ { false, 0x2939, 0x2939 }, /* 0x293a */ { false, 0x293a, 0x293a }, /* 0x293b */ { false, 0x293b, 0x293b }, /* 0x293c */ { false, 0x293c, 0x293c }, /* 0x293d */ { false, 0x293d, 0x293d }, /* 0x293e */ { false, 0x293e, 0x293e }, /* 0x293f */ { false, 0x293f, 0x293f }, /* 0x2940 */ { false, 0x2940, 0x2940 }, /* 0x2941 */ { false, 0x2941, 0x2941 }, /* 0x2942 */ { false, 0x2942, 0x2942 }, /* 0x2943 */ { false, 0x2943, 0x2943 }, /* 0x2944 */ { false, 0x2944, 0x2944 }, /* 0x2945 */ { false, 0x2945, 0x2945 }, /* 0x2946 */ { false, 0x2946, 0x2946 }, /* 0x2947 */ { false, 0x2947, 0x2947 }, /* 0x2948 */ { false, 0x2948, 0x2948 }, /* 0x2949 */ { false, 0x2949, 0x2949 }, /* 0x294a */ { false, 0x294a, 0x294a }, /* 0x294b */ { false, 0x294b, 0x294b }, /* 0x294c */ { false, 0x294c, 0x294c }, /* 0x294d */ { false, 0x294d, 0x294d }, /* 0x294e */ { false, 0x294e, 0x294e }, /* 0x294f */ { false, 0x294f, 0x294f }, /* 0x2950 */ { false, 0x2950, 0x2950 }, /* 0x2951 */ { false, 0x2951, 0x2951 }, /* 0x2952 */ { false, 0x2952, 0x2952 }, /* 0x2953 */ { false, 0x2953, 0x2953 }, /* 0x2954 */ { false, 0x2954, 0x2954 }, /* 0x2955 */ { false, 0x2955, 0x2955 }, /* 0x2956 */ { false, 0x2956, 0x2956 }, /* 0x2957 */ { false, 0x2957, 0x2957 }, /* 0x2958 */ { false, 0x2958, 0x2958 }, /* 0x2959 */ { false, 0x2959, 0x2959 }, /* 0x295a */ { false, 0x295a, 0x295a }, /* 0x295b */ { false, 0x295b, 0x295b }, /* 0x295c */ { false, 0x295c, 0x295c }, /* 0x295d */ { false, 0x295d, 0x295d }, /* 0x295e */ { false, 0x295e, 0x295e }, /* 0x295f */ { false, 0x295f, 0x295f }, /* 0x2960 */ { false, 0x2960, 0x2960 }, /* 0x2961 */ { false, 0x2961, 0x2961 }, /* 0x2962 */ { false, 0x2962, 0x2962 }, /* 0x2963 */ { false, 0x2963, 0x2963 }, /* 0x2964 */ { false, 0x2964, 0x2964 }, /* 0x2965 */ { false, 0x2965, 0x2965 }, /* 0x2966 */ { false, 0x2966, 0x2966 }, /* 0x2967 */ { false, 0x2967, 0x2967 }, /* 0x2968 */ { false, 0x2968, 0x2968 }, /* 0x2969 */ { false, 0x2969, 0x2969 }, /* 0x296a */ { false, 0x296a, 0x296a }, /* 0x296b */ { false, 0x296b, 0x296b }, /* 0x296c */ { false, 0x296c, 0x296c }, /* 0x296d */ { false, 0x296d, 0x296d }, /* 0x296e */ { false, 0x296e, 0x296e }, /* 0x296f */ { false, 0x296f, 0x296f }, /* 0x2970 */ { false, 0x2970, 0x2970 }, /* 0x2971 */ { false, 0x2971, 0x2971 }, /* 0x2972 */ { false, 0x2972, 0x2972 }, /* 0x2973 */ { false, 0x2973, 0x2973 }, /* 0x2974 */ { false, 0x2974, 0x2974 }, /* 0x2975 */ { false, 0x2975, 0x2975 }, /* 0x2976 */ { false, 0x2976, 0x2976 }, /* 0x2977 */ { false, 0x2977, 0x2977 }, /* 0x2978 */ { false, 0x2978, 0x2978 }, /* 0x2979 */ { false, 0x2979, 0x2979 }, /* 0x297a */ { false, 0x297a, 0x297a }, /* 0x297b */ { false, 0x297b, 0x297b }, /* 0x297c */ { false, 0x297c, 0x297c }, /* 0x297d */ { false, 0x297d, 0x297d }, /* 0x297e */ { false, 0x297e, 0x297e }, /* 0x297f */ { false, 0x297f, 0x297f }, /* 0x2980 */ { false, 0x2980, 0x2980 }, /* 0x2981 */ { false, 0x2981, 0x2981 }, /* 0x2982 */ { false, 0x2982, 0x2982 }, /* 0x2983 */ { false, 0x2983, 0x2983 }, /* 0x2984 */ { false, 0x2984, 0x2984 }, /* 0x2985 */ { false, 0x2985, 0x2985 }, /* 0x2986 */ { false, 0x2986, 0x2986 }, /* 0x2987 */ { false, 0x2987, 0x2987 }, /* 0x2988 */ { false, 0x2988, 0x2988 }, /* 0x2989 */ { false, 0x2989, 0x2989 }, /* 0x298a */ { false, 0x298a, 0x298a }, /* 0x298b */ { false, 0x298b, 0x298b }, /* 0x298c */ { false, 0x298c, 0x298c }, /* 0x298d */ { false, 0x298d, 0x298d }, /* 0x298e */ { false, 0x298e, 0x298e }, /* 0x298f */ { false, 0x298f, 0x298f }, /* 0x2990 */ { false, 0x2990, 0x2990 }, /* 0x2991 */ { false, 0x2991, 0x2991 }, /* 0x2992 */ { false, 0x2992, 0x2992 }, /* 0x2993 */ { false, 0x2993, 0x2993 }, /* 0x2994 */ { false, 0x2994, 0x2994 }, /* 0x2995 */ { false, 0x2995, 0x2995 }, /* 0x2996 */ { false, 0x2996, 0x2996 }, /* 0x2997 */ { false, 0x2997, 0x2997 }, /* 0x2998 */ { false, 0x2998, 0x2998 }, /* 0x2999 */ { false, 0x2999, 0x2999 }, /* 0x299a */ { false, 0x299a, 0x299a }, /* 0x299b */ { false, 0x299b, 0x299b }, /* 0x299c */ { false, 0x299c, 0x299c }, /* 0x299d */ { false, 0x299d, 0x299d }, /* 0x299e */ { false, 0x299e, 0x299e }, /* 0x299f */ { false, 0x299f, 0x299f }, /* 0x29a0 */ { false, 0x29a0, 0x29a0 }, /* 0x29a1 */ { false, 0x29a1, 0x29a1 }, /* 0x29a2 */ { false, 0x29a2, 0x29a2 }, /* 0x29a3 */ { false, 0x29a3, 0x29a3 }, /* 0x29a4 */ { false, 0x29a4, 0x29a4 }, /* 0x29a5 */ { false, 0x29a5, 0x29a5 }, /* 0x29a6 */ { false, 0x29a6, 0x29a6 }, /* 0x29a7 */ { false, 0x29a7, 0x29a7 }, /* 0x29a8 */ { false, 0x29a8, 0x29a8 }, /* 0x29a9 */ { false, 0x29a9, 0x29a9 }, /* 0x29aa */ { false, 0x29aa, 0x29aa }, /* 0x29ab */ { false, 0x29ab, 0x29ab }, /* 0x29ac */ { false, 0x29ac, 0x29ac }, /* 0x29ad */ { false, 0x29ad, 0x29ad }, /* 0x29ae */ { false, 0x29ae, 0x29ae }, /* 0x29af */ { false, 0x29af, 0x29af }, /* 0x29b0 */ { false, 0x29b0, 0x29b0 }, /* 0x29b1 */ { false, 0x29b1, 0x29b1 }, /* 0x29b2 */ { false, 0x29b2, 0x29b2 }, /* 0x29b3 */ { false, 0x29b3, 0x29b3 }, /* 0x29b4 */ { false, 0x29b4, 0x29b4 }, /* 0x29b5 */ { false, 0x29b5, 0x29b5 }, /* 0x29b6 */ { false, 0x29b6, 0x29b6 }, /* 0x29b7 */ { false, 0x29b7, 0x29b7 }, /* 0x29b8 */ { false, 0x29b8, 0x29b8 }, /* 0x29b9 */ { false, 0x29b9, 0x29b9 }, /* 0x29ba */ { false, 0x29ba, 0x29ba }, /* 0x29bb */ { false, 0x29bb, 0x29bb }, /* 0x29bc */ { false, 0x29bc, 0x29bc }, /* 0x29bd */ { false, 0x29bd, 0x29bd }, /* 0x29be */ { false, 0x29be, 0x29be }, /* 0x29bf */ { false, 0x29bf, 0x29bf }, /* 0x29c0 */ { false, 0x29c0, 0x29c0 }, /* 0x29c1 */ { false, 0x29c1, 0x29c1 }, /* 0x29c2 */ { false, 0x29c2, 0x29c2 }, /* 0x29c3 */ { false, 0x29c3, 0x29c3 }, /* 0x29c4 */ { false, 0x29c4, 0x29c4 }, /* 0x29c5 */ { false, 0x29c5, 0x29c5 }, /* 0x29c6 */ { false, 0x29c6, 0x29c6 }, /* 0x29c7 */ { false, 0x29c7, 0x29c7 }, /* 0x29c8 */ { false, 0x29c8, 0x29c8 }, /* 0x29c9 */ { false, 0x29c9, 0x29c9 }, /* 0x29ca */ { false, 0x29ca, 0x29ca }, /* 0x29cb */ { false, 0x29cb, 0x29cb }, /* 0x29cc */ { false, 0x29cc, 0x29cc }, /* 0x29cd */ { false, 0x29cd, 0x29cd }, /* 0x29ce */ { false, 0x29ce, 0x29ce }, /* 0x29cf */ { false, 0x29cf, 0x29cf }, /* 0x29d0 */ { false, 0x29d0, 0x29d0 }, /* 0x29d1 */ { false, 0x29d1, 0x29d1 }, /* 0x29d2 */ { false, 0x29d2, 0x29d2 }, /* 0x29d3 */ { false, 0x29d3, 0x29d3 }, /* 0x29d4 */ { false, 0x29d4, 0x29d4 }, /* 0x29d5 */ { false, 0x29d5, 0x29d5 }, /* 0x29d6 */ { false, 0x29d6, 0x29d6 }, /* 0x29d7 */ { false, 0x29d7, 0x29d7 }, /* 0x29d8 */ { false, 0x29d8, 0x29d8 }, /* 0x29d9 */ { false, 0x29d9, 0x29d9 }, /* 0x29da */ { false, 0x29da, 0x29da }, /* 0x29db */ { false, 0x29db, 0x29db }, /* 0x29dc */ { false, 0x29dc, 0x29dc }, /* 0x29dd */ { false, 0x29dd, 0x29dd }, /* 0x29de */ { false, 0x29de, 0x29de }, /* 0x29df */ { false, 0x29df, 0x29df }, /* 0x29e0 */ { false, 0x29e0, 0x29e0 }, /* 0x29e1 */ { false, 0x29e1, 0x29e1 }, /* 0x29e2 */ { false, 0x29e2, 0x29e2 }, /* 0x29e3 */ { false, 0x29e3, 0x29e3 }, /* 0x29e4 */ { false, 0x29e4, 0x29e4 }, /* 0x29e5 */ { false, 0x29e5, 0x29e5 }, /* 0x29e6 */ { false, 0x29e6, 0x29e6 }, /* 0x29e7 */ { false, 0x29e7, 0x29e7 }, /* 0x29e8 */ { false, 0x29e8, 0x29e8 }, /* 0x29e9 */ { false, 0x29e9, 0x29e9 }, /* 0x29ea */ { false, 0x29ea, 0x29ea }, /* 0x29eb */ { false, 0x29eb, 0x29eb }, /* 0x29ec */ { false, 0x29ec, 0x29ec }, /* 0x29ed */ { false, 0x29ed, 0x29ed }, /* 0x29ee */ { false, 0x29ee, 0x29ee }, /* 0x29ef */ { false, 0x29ef, 0x29ef }, /* 0x29f0 */ { false, 0x29f0, 0x29f0 }, /* 0x29f1 */ { false, 0x29f1, 0x29f1 }, /* 0x29f2 */ { false, 0x29f2, 0x29f2 }, /* 0x29f3 */ { false, 0x29f3, 0x29f3 }, /* 0x29f4 */ { false, 0x29f4, 0x29f4 }, /* 0x29f5 */ { false, 0x29f5, 0x29f5 }, /* 0x29f6 */ { false, 0x29f6, 0x29f6 }, /* 0x29f7 */ { false, 0x29f7, 0x29f7 }, /* 0x29f8 */ { false, 0x29f8, 0x29f8 }, /* 0x29f9 */ { false, 0x29f9, 0x29f9 }, /* 0x29fa */ { false, 0x29fa, 0x29fa }, /* 0x29fb */ { false, 0x29fb, 0x29fb }, /* 0x29fc */ { false, 0x29fc, 0x29fc }, /* 0x29fd */ { false, 0x29fd, 0x29fd }, /* 0x29fe */ { false, 0x29fe, 0x29fe }, /* 0x29ff */ { false, 0x29ff, 0x29ff }, /* 0x2a00 */ { false, 0x2a00, 0x2a00 }, /* 0x2a01 */ { false, 0x2a01, 0x2a01 }, /* 0x2a02 */ { false, 0x2a02, 0x2a02 }, /* 0x2a03 */ { false, 0x2a03, 0x2a03 }, /* 0x2a04 */ { false, 0x2a04, 0x2a04 }, /* 0x2a05 */ { false, 0x2a05, 0x2a05 }, /* 0x2a06 */ { false, 0x2a06, 0x2a06 }, /* 0x2a07 */ { false, 0x2a07, 0x2a07 }, /* 0x2a08 */ { false, 0x2a08, 0x2a08 }, /* 0x2a09 */ { false, 0x2a09, 0x2a09 }, /* 0x2a0a */ { false, 0x2a0a, 0x2a0a }, /* 0x2a0b */ { false, 0x2a0b, 0x2a0b }, /* 0x2a0c */ { false, 0x2a0c, 0x2a0c }, /* 0x2a0d */ { false, 0x2a0d, 0x2a0d }, /* 0x2a0e */ { false, 0x2a0e, 0x2a0e }, /* 0x2a0f */ { false, 0x2a0f, 0x2a0f }, /* 0x2a10 */ { false, 0x2a10, 0x2a10 }, /* 0x2a11 */ { false, 0x2a11, 0x2a11 }, /* 0x2a12 */ { false, 0x2a12, 0x2a12 }, /* 0x2a13 */ { false, 0x2a13, 0x2a13 }, /* 0x2a14 */ { false, 0x2a14, 0x2a14 }, /* 0x2a15 */ { false, 0x2a15, 0x2a15 }, /* 0x2a16 */ { false, 0x2a16, 0x2a16 }, /* 0x2a17 */ { false, 0x2a17, 0x2a17 }, /* 0x2a18 */ { false, 0x2a18, 0x2a18 }, /* 0x2a19 */ { false, 0x2a19, 0x2a19 }, /* 0x2a1a */ { false, 0x2a1a, 0x2a1a }, /* 0x2a1b */ { false, 0x2a1b, 0x2a1b }, /* 0x2a1c */ { false, 0x2a1c, 0x2a1c }, /* 0x2a1d */ { false, 0x2a1d, 0x2a1d }, /* 0x2a1e */ { false, 0x2a1e, 0x2a1e }, /* 0x2a1f */ { false, 0x2a1f, 0x2a1f }, /* 0x2a20 */ { false, 0x2a20, 0x2a20 }, /* 0x2a21 */ { false, 0x2a21, 0x2a21 }, /* 0x2a22 */ { false, 0x2a22, 0x2a22 }, /* 0x2a23 */ { false, 0x2a23, 0x2a23 }, /* 0x2a24 */ { false, 0x2a24, 0x2a24 }, /* 0x2a25 */ { false, 0x2a25, 0x2a25 }, /* 0x2a26 */ { false, 0x2a26, 0x2a26 }, /* 0x2a27 */ { false, 0x2a27, 0x2a27 }, /* 0x2a28 */ { false, 0x2a28, 0x2a28 }, /* 0x2a29 */ { false, 0x2a29, 0x2a29 }, /* 0x2a2a */ { false, 0x2a2a, 0x2a2a }, /* 0x2a2b */ { false, 0x2a2b, 0x2a2b }, /* 0x2a2c */ { false, 0x2a2c, 0x2a2c }, /* 0x2a2d */ { false, 0x2a2d, 0x2a2d }, /* 0x2a2e */ { false, 0x2a2e, 0x2a2e }, /* 0x2a2f */ { false, 0x2a2f, 0x2a2f }, /* 0x2a30 */ { false, 0x2a30, 0x2a30 }, /* 0x2a31 */ { false, 0x2a31, 0x2a31 }, /* 0x2a32 */ { false, 0x2a32, 0x2a32 }, /* 0x2a33 */ { false, 0x2a33, 0x2a33 }, /* 0x2a34 */ { false, 0x2a34, 0x2a34 }, /* 0x2a35 */ { false, 0x2a35, 0x2a35 }, /* 0x2a36 */ { false, 0x2a36, 0x2a36 }, /* 0x2a37 */ { false, 0x2a37, 0x2a37 }, /* 0x2a38 */ { false, 0x2a38, 0x2a38 }, /* 0x2a39 */ { false, 0x2a39, 0x2a39 }, /* 0x2a3a */ { false, 0x2a3a, 0x2a3a }, /* 0x2a3b */ { false, 0x2a3b, 0x2a3b }, /* 0x2a3c */ { false, 0x2a3c, 0x2a3c }, /* 0x2a3d */ { false, 0x2a3d, 0x2a3d }, /* 0x2a3e */ { false, 0x2a3e, 0x2a3e }, /* 0x2a3f */ { false, 0x2a3f, 0x2a3f }, /* 0x2a40 */ { false, 0x2a40, 0x2a40 }, /* 0x2a41 */ { false, 0x2a41, 0x2a41 }, /* 0x2a42 */ { false, 0x2a42, 0x2a42 }, /* 0x2a43 */ { false, 0x2a43, 0x2a43 }, /* 0x2a44 */ { false, 0x2a44, 0x2a44 }, /* 0x2a45 */ { false, 0x2a45, 0x2a45 }, /* 0x2a46 */ { false, 0x2a46, 0x2a46 }, /* 0x2a47 */ { false, 0x2a47, 0x2a47 }, /* 0x2a48 */ { false, 0x2a48, 0x2a48 }, /* 0x2a49 */ { false, 0x2a49, 0x2a49 }, /* 0x2a4a */ { false, 0x2a4a, 0x2a4a }, /* 0x2a4b */ { false, 0x2a4b, 0x2a4b }, /* 0x2a4c */ { false, 0x2a4c, 0x2a4c }, /* 0x2a4d */ { false, 0x2a4d, 0x2a4d }, /* 0x2a4e */ { false, 0x2a4e, 0x2a4e }, /* 0x2a4f */ { false, 0x2a4f, 0x2a4f }, /* 0x2a50 */ { false, 0x2a50, 0x2a50 }, /* 0x2a51 */ { false, 0x2a51, 0x2a51 }, /* 0x2a52 */ { false, 0x2a52, 0x2a52 }, /* 0x2a53 */ { false, 0x2a53, 0x2a53 }, /* 0x2a54 */ { false, 0x2a54, 0x2a54 }, /* 0x2a55 */ { false, 0x2a55, 0x2a55 }, /* 0x2a56 */ { false, 0x2a56, 0x2a56 }, /* 0x2a57 */ { false, 0x2a57, 0x2a57 }, /* 0x2a58 */ { false, 0x2a58, 0x2a58 }, /* 0x2a59 */ { false, 0x2a59, 0x2a59 }, /* 0x2a5a */ { false, 0x2a5a, 0x2a5a }, /* 0x2a5b */ { false, 0x2a5b, 0x2a5b }, /* 0x2a5c */ { false, 0x2a5c, 0x2a5c }, /* 0x2a5d */ { false, 0x2a5d, 0x2a5d }, /* 0x2a5e */ { false, 0x2a5e, 0x2a5e }, /* 0x2a5f */ { false, 0x2a5f, 0x2a5f }, /* 0x2a60 */ { false, 0x2a60, 0x2a60 }, /* 0x2a61 */ { false, 0x2a61, 0x2a61 }, /* 0x2a62 */ { false, 0x2a62, 0x2a62 }, /* 0x2a63 */ { false, 0x2a63, 0x2a63 }, /* 0x2a64 */ { false, 0x2a64, 0x2a64 }, /* 0x2a65 */ { false, 0x2a65, 0x2a65 }, /* 0x2a66 */ { false, 0x2a66, 0x2a66 }, /* 0x2a67 */ { false, 0x2a67, 0x2a67 }, /* 0x2a68 */ { false, 0x2a68, 0x2a68 }, /* 0x2a69 */ { false, 0x2a69, 0x2a69 }, /* 0x2a6a */ { false, 0x2a6a, 0x2a6a }, /* 0x2a6b */ { false, 0x2a6b, 0x2a6b }, /* 0x2a6c */ { false, 0x2a6c, 0x2a6c }, /* 0x2a6d */ { false, 0x2a6d, 0x2a6d }, /* 0x2a6e */ { false, 0x2a6e, 0x2a6e }, /* 0x2a6f */ { false, 0x2a6f, 0x2a6f }, /* 0x2a70 */ { false, 0x2a70, 0x2a70 }, /* 0x2a71 */ { false, 0x2a71, 0x2a71 }, /* 0x2a72 */ { false, 0x2a72, 0x2a72 }, /* 0x2a73 */ { false, 0x2a73, 0x2a73 }, /* 0x2a74 */ { false, 0x2a74, 0x2a74 }, /* 0x2a75 */ { false, 0x2a75, 0x2a75 }, /* 0x2a76 */ { false, 0x2a76, 0x2a76 }, /* 0x2a77 */ { false, 0x2a77, 0x2a77 }, /* 0x2a78 */ { false, 0x2a78, 0x2a78 }, /* 0x2a79 */ { false, 0x2a79, 0x2a79 }, /* 0x2a7a */ { false, 0x2a7a, 0x2a7a }, /* 0x2a7b */ { false, 0x2a7b, 0x2a7b }, /* 0x2a7c */ { false, 0x2a7c, 0x2a7c }, /* 0x2a7d */ { false, 0x2a7d, 0x2a7d }, /* 0x2a7e */ { false, 0x2a7e, 0x2a7e }, /* 0x2a7f */ { false, 0x2a7f, 0x2a7f }, /* 0x2a80 */ { false, 0x2a80, 0x2a80 }, /* 0x2a81 */ { false, 0x2a81, 0x2a81 }, /* 0x2a82 */ { false, 0x2a82, 0x2a82 }, /* 0x2a83 */ { false, 0x2a83, 0x2a83 }, /* 0x2a84 */ { false, 0x2a84, 0x2a84 }, /* 0x2a85 */ { false, 0x2a85, 0x2a85 }, /* 0x2a86 */ { false, 0x2a86, 0x2a86 }, /* 0x2a87 */ { false, 0x2a87, 0x2a87 }, /* 0x2a88 */ { false, 0x2a88, 0x2a88 }, /* 0x2a89 */ { false, 0x2a89, 0x2a89 }, /* 0x2a8a */ { false, 0x2a8a, 0x2a8a }, /* 0x2a8b */ { false, 0x2a8b, 0x2a8b }, /* 0x2a8c */ { false, 0x2a8c, 0x2a8c }, /* 0x2a8d */ { false, 0x2a8d, 0x2a8d }, /* 0x2a8e */ { false, 0x2a8e, 0x2a8e }, /* 0x2a8f */ { false, 0x2a8f, 0x2a8f }, /* 0x2a90 */ { false, 0x2a90, 0x2a90 }, /* 0x2a91 */ { false, 0x2a91, 0x2a91 }, /* 0x2a92 */ { false, 0x2a92, 0x2a92 }, /* 0x2a93 */ { false, 0x2a93, 0x2a93 }, /* 0x2a94 */ { false, 0x2a94, 0x2a94 }, /* 0x2a95 */ { false, 0x2a95, 0x2a95 }, /* 0x2a96 */ { false, 0x2a96, 0x2a96 }, /* 0x2a97 */ { false, 0x2a97, 0x2a97 }, /* 0x2a98 */ { false, 0x2a98, 0x2a98 }, /* 0x2a99 */ { false, 0x2a99, 0x2a99 }, /* 0x2a9a */ { false, 0x2a9a, 0x2a9a }, /* 0x2a9b */ { false, 0x2a9b, 0x2a9b }, /* 0x2a9c */ { false, 0x2a9c, 0x2a9c }, /* 0x2a9d */ { false, 0x2a9d, 0x2a9d }, /* 0x2a9e */ { false, 0x2a9e, 0x2a9e }, /* 0x2a9f */ { false, 0x2a9f, 0x2a9f }, /* 0x2aa0 */ { false, 0x2aa0, 0x2aa0 }, /* 0x2aa1 */ { false, 0x2aa1, 0x2aa1 }, /* 0x2aa2 */ { false, 0x2aa2, 0x2aa2 }, /* 0x2aa3 */ { false, 0x2aa3, 0x2aa3 }, /* 0x2aa4 */ { false, 0x2aa4, 0x2aa4 }, /* 0x2aa5 */ { false, 0x2aa5, 0x2aa5 }, /* 0x2aa6 */ { false, 0x2aa6, 0x2aa6 }, /* 0x2aa7 */ { false, 0x2aa7, 0x2aa7 }, /* 0x2aa8 */ { false, 0x2aa8, 0x2aa8 }, /* 0x2aa9 */ { false, 0x2aa9, 0x2aa9 }, /* 0x2aaa */ { false, 0x2aaa, 0x2aaa }, /* 0x2aab */ { false, 0x2aab, 0x2aab }, /* 0x2aac */ { false, 0x2aac, 0x2aac }, /* 0x2aad */ { false, 0x2aad, 0x2aad }, /* 0x2aae */ { false, 0x2aae, 0x2aae }, /* 0x2aaf */ { false, 0x2aaf, 0x2aaf }, /* 0x2ab0 */ { false, 0x2ab0, 0x2ab0 }, /* 0x2ab1 */ { false, 0x2ab1, 0x2ab1 }, /* 0x2ab2 */ { false, 0x2ab2, 0x2ab2 }, /* 0x2ab3 */ { false, 0x2ab3, 0x2ab3 }, /* 0x2ab4 */ { false, 0x2ab4, 0x2ab4 }, /* 0x2ab5 */ { false, 0x2ab5, 0x2ab5 }, /* 0x2ab6 */ { false, 0x2ab6, 0x2ab6 }, /* 0x2ab7 */ { false, 0x2ab7, 0x2ab7 }, /* 0x2ab8 */ { false, 0x2ab8, 0x2ab8 }, /* 0x2ab9 */ { false, 0x2ab9, 0x2ab9 }, /* 0x2aba */ { false, 0x2aba, 0x2aba }, /* 0x2abb */ { false, 0x2abb, 0x2abb }, /* 0x2abc */ { false, 0x2abc, 0x2abc }, /* 0x2abd */ { false, 0x2abd, 0x2abd }, /* 0x2abe */ { false, 0x2abe, 0x2abe }, /* 0x2abf */ { false, 0x2abf, 0x2abf }, /* 0x2ac0 */ { false, 0x2ac0, 0x2ac0 }, /* 0x2ac1 */ { false, 0x2ac1, 0x2ac1 }, /* 0x2ac2 */ { false, 0x2ac2, 0x2ac2 }, /* 0x2ac3 */ { false, 0x2ac3, 0x2ac3 }, /* 0x2ac4 */ { false, 0x2ac4, 0x2ac4 }, /* 0x2ac5 */ { false, 0x2ac5, 0x2ac5 }, /* 0x2ac6 */ { false, 0x2ac6, 0x2ac6 }, /* 0x2ac7 */ { false, 0x2ac7, 0x2ac7 }, /* 0x2ac8 */ { false, 0x2ac8, 0x2ac8 }, /* 0x2ac9 */ { false, 0x2ac9, 0x2ac9 }, /* 0x2aca */ { false, 0x2aca, 0x2aca }, /* 0x2acb */ { false, 0x2acb, 0x2acb }, /* 0x2acc */ { false, 0x2acc, 0x2acc }, /* 0x2acd */ { false, 0x2acd, 0x2acd }, /* 0x2ace */ { false, 0x2ace, 0x2ace }, /* 0x2acf */ { false, 0x2acf, 0x2acf }, /* 0x2ad0 */ { false, 0x2ad0, 0x2ad0 }, /* 0x2ad1 */ { false, 0x2ad1, 0x2ad1 }, /* 0x2ad2 */ { false, 0x2ad2, 0x2ad2 }, /* 0x2ad3 */ { false, 0x2ad3, 0x2ad3 }, /* 0x2ad4 */ { false, 0x2ad4, 0x2ad4 }, /* 0x2ad5 */ { false, 0x2ad5, 0x2ad5 }, /* 0x2ad6 */ { false, 0x2ad6, 0x2ad6 }, /* 0x2ad7 */ { false, 0x2ad7, 0x2ad7 }, /* 0x2ad8 */ { false, 0x2ad8, 0x2ad8 }, /* 0x2ad9 */ { false, 0x2ad9, 0x2ad9 }, /* 0x2ada */ { false, 0x2ada, 0x2ada }, /* 0x2adb */ { false, 0x2adb, 0x2adb }, /* 0x2adc */ { false, 0x2adc, 0x2adc }, /* 0x2add */ { false, 0x2add, 0x2add }, /* 0x2ade */ { false, 0x2ade, 0x2ade }, /* 0x2adf */ { false, 0x2adf, 0x2adf }, /* 0x2ae0 */ { false, 0x2ae0, 0x2ae0 }, /* 0x2ae1 */ { false, 0x2ae1, 0x2ae1 }, /* 0x2ae2 */ { false, 0x2ae2, 0x2ae2 }, /* 0x2ae3 */ { false, 0x2ae3, 0x2ae3 }, /* 0x2ae4 */ { false, 0x2ae4, 0x2ae4 }, /* 0x2ae5 */ { false, 0x2ae5, 0x2ae5 }, /* 0x2ae6 */ { false, 0x2ae6, 0x2ae6 }, /* 0x2ae7 */ { false, 0x2ae7, 0x2ae7 }, /* 0x2ae8 */ { false, 0x2ae8, 0x2ae8 }, /* 0x2ae9 */ { false, 0x2ae9, 0x2ae9 }, /* 0x2aea */ { false, 0x2aea, 0x2aea }, /* 0x2aeb */ { false, 0x2aeb, 0x2aeb }, /* 0x2aec */ { false, 0x2aec, 0x2aec }, /* 0x2aed */ { false, 0x2aed, 0x2aed }, /* 0x2aee */ { false, 0x2aee, 0x2aee }, /* 0x2aef */ { false, 0x2aef, 0x2aef }, /* 0x2af0 */ { false, 0x2af0, 0x2af0 }, /* 0x2af1 */ { false, 0x2af1, 0x2af1 }, /* 0x2af2 */ { false, 0x2af2, 0x2af2 }, /* 0x2af3 */ { false, 0x2af3, 0x2af3 }, /* 0x2af4 */ { false, 0x2af4, 0x2af4 }, /* 0x2af5 */ { false, 0x2af5, 0x2af5 }, /* 0x2af6 */ { false, 0x2af6, 0x2af6 }, /* 0x2af7 */ { false, 0x2af7, 0x2af7 }, /* 0x2af8 */ { false, 0x2af8, 0x2af8 }, /* 0x2af9 */ { false, 0x2af9, 0x2af9 }, /* 0x2afa */ { false, 0x2afa, 0x2afa }, /* 0x2afb */ { false, 0x2afb, 0x2afb }, /* 0x2afc */ { false, 0x2afc, 0x2afc }, /* 0x2afd */ { false, 0x2afd, 0x2afd }, /* 0x2afe */ { false, 0x2afe, 0x2afe }, /* 0x2aff */ { false, 0x2aff, 0x2aff }, /* 0x2b00 */ { false, 0x2b00, 0x2b00 }, /* 0x2b01 */ { false, 0x2b01, 0x2b01 }, /* 0x2b02 */ { false, 0x2b02, 0x2b02 }, /* 0x2b03 */ { false, 0x2b03, 0x2b03 }, /* 0x2b04 */ { false, 0x2b04, 0x2b04 }, /* 0x2b05 */ { false, 0x2b05, 0x2b05 }, /* 0x2b06 */ { false, 0x2b06, 0x2b06 }, /* 0x2b07 */ { false, 0x2b07, 0x2b07 }, /* 0x2b08 */ { false, 0x2b08, 0x2b08 }, /* 0x2b09 */ { false, 0x2b09, 0x2b09 }, /* 0x2b0a */ { false, 0x2b0a, 0x2b0a }, /* 0x2b0b */ { false, 0x2b0b, 0x2b0b }, /* 0x2b0c */ { false, 0x2b0c, 0x2b0c }, /* 0x2b0d */ { false, 0x2b0d, 0x2b0d }, /* 0x2b0e */ { false, 0x2b0e, 0x2b0e }, /* 0x2b0f */ { false, 0x2b0f, 0x2b0f }, /* 0x2b10 */ { false, 0x2b10, 0x2b10 }, /* 0x2b11 */ { false, 0x2b11, 0x2b11 }, /* 0x2b12 */ { false, 0x2b12, 0x2b12 }, /* 0x2b13 */ { false, 0x2b13, 0x2b13 }, /* 0x2b14 */ { false, 0x2b14, 0x2b14 }, /* 0x2b15 */ { false, 0x2b15, 0x2b15 }, /* 0x2b16 */ { false, 0x2b16, 0x2b16 }, /* 0x2b17 */ { false, 0x2b17, 0x2b17 }, /* 0x2b18 */ { false, 0x2b18, 0x2b18 }, /* 0x2b19 */ { false, 0x2b19, 0x2b19 }, /* 0x2b1a */ { false, 0x2b1a, 0x2b1a }, /* 0x2b1b */ { false, 0x2b1b, 0x2b1b }, /* 0x2b1c */ { false, 0x2b1c, 0x2b1c }, /* 0x2b1d */ { false, 0x2b1d, 0x2b1d }, /* 0x2b1e */ { false, 0x2b1e, 0x2b1e }, /* 0x2b1f */ { false, 0x2b1f, 0x2b1f }, /* 0x2b20 */ { false, 0x2b20, 0x2b20 }, /* 0x2b21 */ { false, 0x2b21, 0x2b21 }, /* 0x2b22 */ { false, 0x2b22, 0x2b22 }, /* 0x2b23 */ { false, 0x2b23, 0x2b23 }, /* 0x2b24 */ { false, 0x2b24, 0x2b24 }, /* 0x2b25 */ { false, 0x2b25, 0x2b25 }, /* 0x2b26 */ { false, 0x2b26, 0x2b26 }, /* 0x2b27 */ { false, 0x2b27, 0x2b27 }, /* 0x2b28 */ { false, 0x2b28, 0x2b28 }, /* 0x2b29 */ { false, 0x2b29, 0x2b29 }, /* 0x2b2a */ { false, 0x2b2a, 0x2b2a }, /* 0x2b2b */ { false, 0x2b2b, 0x2b2b }, /* 0x2b2c */ { false, 0x2b2c, 0x2b2c }, /* 0x2b2d */ { false, 0x2b2d, 0x2b2d }, /* 0x2b2e */ { false, 0x2b2e, 0x2b2e }, /* 0x2b2f */ { false, 0x2b2f, 0x2b2f }, /* 0x2b30 */ { false, 0x2b30, 0x2b30 }, /* 0x2b31 */ { false, 0x2b31, 0x2b31 }, /* 0x2b32 */ { false, 0x2b32, 0x2b32 }, /* 0x2b33 */ { false, 0x2b33, 0x2b33 }, /* 0x2b34 */ { false, 0x2b34, 0x2b34 }, /* 0x2b35 */ { false, 0x2b35, 0x2b35 }, /* 0x2b36 */ { false, 0x2b36, 0x2b36 }, /* 0x2b37 */ { false, 0x2b37, 0x2b37 }, /* 0x2b38 */ { false, 0x2b38, 0x2b38 }, /* 0x2b39 */ { false, 0x2b39, 0x2b39 }, /* 0x2b3a */ { false, 0x2b3a, 0x2b3a }, /* 0x2b3b */ { false, 0x2b3b, 0x2b3b }, /* 0x2b3c */ { false, 0x2b3c, 0x2b3c }, /* 0x2b3d */ { false, 0x2b3d, 0x2b3d }, /* 0x2b3e */ { false, 0x2b3e, 0x2b3e }, /* 0x2b3f */ { false, 0x2b3f, 0x2b3f }, /* 0x2b40 */ { false, 0x2b40, 0x2b40 }, /* 0x2b41 */ { false, 0x2b41, 0x2b41 }, /* 0x2b42 */ { false, 0x2b42, 0x2b42 }, /* 0x2b43 */ { false, 0x2b43, 0x2b43 }, /* 0x2b44 */ { false, 0x2b44, 0x2b44 }, /* 0x2b45 */ { false, 0x2b45, 0x2b45 }, /* 0x2b46 */ { false, 0x2b46, 0x2b46 }, /* 0x2b47 */ { false, 0x2b47, 0x2b47 }, /* 0x2b48 */ { false, 0x2b48, 0x2b48 }, /* 0x2b49 */ { false, 0x2b49, 0x2b49 }, /* 0x2b4a */ { false, 0x2b4a, 0x2b4a }, /* 0x2b4b */ { false, 0x2b4b, 0x2b4b }, /* 0x2b4c */ { false, 0x2b4c, 0x2b4c }, /* 0x2b4d */ { false, 0x2b4d, 0x2b4d }, /* 0x2b4e */ { false, 0x2b4e, 0x2b4e }, /* 0x2b4f */ { false, 0x2b4f, 0x2b4f }, /* 0x2b50 */ { false, 0x2b50, 0x2b50 }, /* 0x2b51 */ { false, 0x2b51, 0x2b51 }, /* 0x2b52 */ { false, 0x2b52, 0x2b52 }, /* 0x2b53 */ { false, 0x2b53, 0x2b53 }, /* 0x2b54 */ { false, 0x2b54, 0x2b54 }, /* 0x2b55 */ { false, 0x2b55, 0x2b55 }, /* 0x2b56 */ { false, 0x2b56, 0x2b56 }, /* 0x2b57 */ { false, 0x2b57, 0x2b57 }, /* 0x2b58 */ { false, 0x2b58, 0x2b58 }, /* 0x2b59 */ { false, 0x2b59, 0x2b59 }, /* 0x2b5a */ { false, 0x2b5a, 0x2b5a }, /* 0x2b5b */ { false, 0x2b5b, 0x2b5b }, /* 0x2b5c */ { false, 0x2b5c, 0x2b5c }, /* 0x2b5d */ { false, 0x2b5d, 0x2b5d }, /* 0x2b5e */ { false, 0x2b5e, 0x2b5e }, /* 0x2b5f */ { false, 0x2b5f, 0x2b5f }, /* 0x2b60 */ { false, 0x2b60, 0x2b60 }, /* 0x2b61 */ { false, 0x2b61, 0x2b61 }, /* 0x2b62 */ { false, 0x2b62, 0x2b62 }, /* 0x2b63 */ { false, 0x2b63, 0x2b63 }, /* 0x2b64 */ { false, 0x2b64, 0x2b64 }, /* 0x2b65 */ { false, 0x2b65, 0x2b65 }, /* 0x2b66 */ { false, 0x2b66, 0x2b66 }, /* 0x2b67 */ { false, 0x2b67, 0x2b67 }, /* 0x2b68 */ { false, 0x2b68, 0x2b68 }, /* 0x2b69 */ { false, 0x2b69, 0x2b69 }, /* 0x2b6a */ { false, 0x2b6a, 0x2b6a }, /* 0x2b6b */ { false, 0x2b6b, 0x2b6b }, /* 0x2b6c */ { false, 0x2b6c, 0x2b6c }, /* 0x2b6d */ { false, 0x2b6d, 0x2b6d }, /* 0x2b6e */ { false, 0x2b6e, 0x2b6e }, /* 0x2b6f */ { false, 0x2b6f, 0x2b6f }, /* 0x2b70 */ { false, 0x2b70, 0x2b70 }, /* 0x2b71 */ { false, 0x2b71, 0x2b71 }, /* 0x2b72 */ { false, 0x2b72, 0x2b72 }, /* 0x2b73 */ { false, 0x2b73, 0x2b73 }, /* 0x2b74 */ { false, 0x2b74, 0x2b74 }, /* 0x2b75 */ { false, 0x2b75, 0x2b75 }, /* 0x2b76 */ { false, 0x2b76, 0x2b76 }, /* 0x2b77 */ { false, 0x2b77, 0x2b77 }, /* 0x2b78 */ { false, 0x2b78, 0x2b78 }, /* 0x2b79 */ { false, 0x2b79, 0x2b79 }, /* 0x2b7a */ { false, 0x2b7a, 0x2b7a }, /* 0x2b7b */ { false, 0x2b7b, 0x2b7b }, /* 0x2b7c */ { false, 0x2b7c, 0x2b7c }, /* 0x2b7d */ { false, 0x2b7d, 0x2b7d }, /* 0x2b7e */ { false, 0x2b7e, 0x2b7e }, /* 0x2b7f */ { false, 0x2b7f, 0x2b7f }, /* 0x2b80 */ { false, 0x2b80, 0x2b80 }, /* 0x2b81 */ { false, 0x2b81, 0x2b81 }, /* 0x2b82 */ { false, 0x2b82, 0x2b82 }, /* 0x2b83 */ { false, 0x2b83, 0x2b83 }, /* 0x2b84 */ { false, 0x2b84, 0x2b84 }, /* 0x2b85 */ { false, 0x2b85, 0x2b85 }, /* 0x2b86 */ { false, 0x2b86, 0x2b86 }, /* 0x2b87 */ { false, 0x2b87, 0x2b87 }, /* 0x2b88 */ { false, 0x2b88, 0x2b88 }, /* 0x2b89 */ { false, 0x2b89, 0x2b89 }, /* 0x2b8a */ { false, 0x2b8a, 0x2b8a }, /* 0x2b8b */ { false, 0x2b8b, 0x2b8b }, /* 0x2b8c */ { false, 0x2b8c, 0x2b8c }, /* 0x2b8d */ { false, 0x2b8d, 0x2b8d }, /* 0x2b8e */ { false, 0x2b8e, 0x2b8e }, /* 0x2b8f */ { false, 0x2b8f, 0x2b8f }, /* 0x2b90 */ { false, 0x2b90, 0x2b90 }, /* 0x2b91 */ { false, 0x2b91, 0x2b91 }, /* 0x2b92 */ { false, 0x2b92, 0x2b92 }, /* 0x2b93 */ { false, 0x2b93, 0x2b93 }, /* 0x2b94 */ { false, 0x2b94, 0x2b94 }, /* 0x2b95 */ { false, 0x2b95, 0x2b95 }, /* 0x2b96 */ { false, 0x2b96, 0x2b96 }, /* 0x2b97 */ { false, 0x2b97, 0x2b97 }, /* 0x2b98 */ { false, 0x2b98, 0x2b98 }, /* 0x2b99 */ { false, 0x2b99, 0x2b99 }, /* 0x2b9a */ { false, 0x2b9a, 0x2b9a }, /* 0x2b9b */ { false, 0x2b9b, 0x2b9b }, /* 0x2b9c */ { false, 0x2b9c, 0x2b9c }, /* 0x2b9d */ { false, 0x2b9d, 0x2b9d }, /* 0x2b9e */ { false, 0x2b9e, 0x2b9e }, /* 0x2b9f */ { false, 0x2b9f, 0x2b9f }, /* 0x2ba0 */ { false, 0x2ba0, 0x2ba0 }, /* 0x2ba1 */ { false, 0x2ba1, 0x2ba1 }, /* 0x2ba2 */ { false, 0x2ba2, 0x2ba2 }, /* 0x2ba3 */ { false, 0x2ba3, 0x2ba3 }, /* 0x2ba4 */ { false, 0x2ba4, 0x2ba4 }, /* 0x2ba5 */ { false, 0x2ba5, 0x2ba5 }, /* 0x2ba6 */ { false, 0x2ba6, 0x2ba6 }, /* 0x2ba7 */ { false, 0x2ba7, 0x2ba7 }, /* 0x2ba8 */ { false, 0x2ba8, 0x2ba8 }, /* 0x2ba9 */ { false, 0x2ba9, 0x2ba9 }, /* 0x2baa */ { false, 0x2baa, 0x2baa }, /* 0x2bab */ { false, 0x2bab, 0x2bab }, /* 0x2bac */ { false, 0x2bac, 0x2bac }, /* 0x2bad */ { false, 0x2bad, 0x2bad }, /* 0x2bae */ { false, 0x2bae, 0x2bae }, /* 0x2baf */ { false, 0x2baf, 0x2baf }, /* 0x2bb0 */ { false, 0x2bb0, 0x2bb0 }, /* 0x2bb1 */ { false, 0x2bb1, 0x2bb1 }, /* 0x2bb2 */ { false, 0x2bb2, 0x2bb2 }, /* 0x2bb3 */ { false, 0x2bb3, 0x2bb3 }, /* 0x2bb4 */ { false, 0x2bb4, 0x2bb4 }, /* 0x2bb5 */ { false, 0x2bb5, 0x2bb5 }, /* 0x2bb6 */ { false, 0x2bb6, 0x2bb6 }, /* 0x2bb7 */ { false, 0x2bb7, 0x2bb7 }, /* 0x2bb8 */ { false, 0x2bb8, 0x2bb8 }, /* 0x2bb9 */ { false, 0x2bb9, 0x2bb9 }, /* 0x2bba */ { false, 0x2bba, 0x2bba }, /* 0x2bbb */ { false, 0x2bbb, 0x2bbb }, /* 0x2bbc */ { false, 0x2bbc, 0x2bbc }, /* 0x2bbd */ { false, 0x2bbd, 0x2bbd }, /* 0x2bbe */ { false, 0x2bbe, 0x2bbe }, /* 0x2bbf */ { false, 0x2bbf, 0x2bbf }, /* 0x2bc0 */ { false, 0x2bc0, 0x2bc0 }, /* 0x2bc1 */ { false, 0x2bc1, 0x2bc1 }, /* 0x2bc2 */ { false, 0x2bc2, 0x2bc2 }, /* 0x2bc3 */ { false, 0x2bc3, 0x2bc3 }, /* 0x2bc4 */ { false, 0x2bc4, 0x2bc4 }, /* 0x2bc5 */ { false, 0x2bc5, 0x2bc5 }, /* 0x2bc6 */ { false, 0x2bc6, 0x2bc6 }, /* 0x2bc7 */ { false, 0x2bc7, 0x2bc7 }, /* 0x2bc8 */ { false, 0x2bc8, 0x2bc8 }, /* 0x2bc9 */ { false, 0x2bc9, 0x2bc9 }, /* 0x2bca */ { false, 0x2bca, 0x2bca }, /* 0x2bcb */ { false, 0x2bcb, 0x2bcb }, /* 0x2bcc */ { false, 0x2bcc, 0x2bcc }, /* 0x2bcd */ { false, 0x2bcd, 0x2bcd }, /* 0x2bce */ { false, 0x2bce, 0x2bce }, /* 0x2bcf */ { false, 0x2bcf, 0x2bcf }, /* 0x2bd0 */ { false, 0x2bd0, 0x2bd0 }, /* 0x2bd1 */ { false, 0x2bd1, 0x2bd1 }, /* 0x2bd2 */ { false, 0x2bd2, 0x2bd2 }, /* 0x2bd3 */ { false, 0x2bd3, 0x2bd3 }, /* 0x2bd4 */ { false, 0x2bd4, 0x2bd4 }, /* 0x2bd5 */ { false, 0x2bd5, 0x2bd5 }, /* 0x2bd6 */ { false, 0x2bd6, 0x2bd6 }, /* 0x2bd7 */ { false, 0x2bd7, 0x2bd7 }, /* 0x2bd8 */ { false, 0x2bd8, 0x2bd8 }, /* 0x2bd9 */ { false, 0x2bd9, 0x2bd9 }, /* 0x2bda */ { false, 0x2bda, 0x2bda }, /* 0x2bdb */ { false, 0x2bdb, 0x2bdb }, /* 0x2bdc */ { false, 0x2bdc, 0x2bdc }, /* 0x2bdd */ { false, 0x2bdd, 0x2bdd }, /* 0x2bde */ { false, 0x2bde, 0x2bde }, /* 0x2bdf */ { false, 0x2bdf, 0x2bdf }, /* 0x2be0 */ { false, 0x2be0, 0x2be0 }, /* 0x2be1 */ { false, 0x2be1, 0x2be1 }, /* 0x2be2 */ { false, 0x2be2, 0x2be2 }, /* 0x2be3 */ { false, 0x2be3, 0x2be3 }, /* 0x2be4 */ { false, 0x2be4, 0x2be4 }, /* 0x2be5 */ { false, 0x2be5, 0x2be5 }, /* 0x2be6 */ { false, 0x2be6, 0x2be6 }, /* 0x2be7 */ { false, 0x2be7, 0x2be7 }, /* 0x2be8 */ { false, 0x2be8, 0x2be8 }, /* 0x2be9 */ { false, 0x2be9, 0x2be9 }, /* 0x2bea */ { false, 0x2bea, 0x2bea }, /* 0x2beb */ { false, 0x2beb, 0x2beb }, /* 0x2bec */ { false, 0x2bec, 0x2bec }, /* 0x2bed */ { false, 0x2bed, 0x2bed }, /* 0x2bee */ { false, 0x2bee, 0x2bee }, /* 0x2bef */ { false, 0x2bef, 0x2bef }, /* 0x2bf0 */ { false, 0x2bf0, 0x2bf0 }, /* 0x2bf1 */ { false, 0x2bf1, 0x2bf1 }, /* 0x2bf2 */ { false, 0x2bf2, 0x2bf2 }, /* 0x2bf3 */ { false, 0x2bf3, 0x2bf3 }, /* 0x2bf4 */ { false, 0x2bf4, 0x2bf4 }, /* 0x2bf5 */ { false, 0x2bf5, 0x2bf5 }, /* 0x2bf6 */ { false, 0x2bf6, 0x2bf6 }, /* 0x2bf7 */ { false, 0x2bf7, 0x2bf7 }, /* 0x2bf8 */ { false, 0x2bf8, 0x2bf8 }, /* 0x2bf9 */ { false, 0x2bf9, 0x2bf9 }, /* 0x2bfa */ { false, 0x2bfa, 0x2bfa }, /* 0x2bfb */ { false, 0x2bfb, 0x2bfb }, /* 0x2bfc */ { false, 0x2bfc, 0x2bfc }, /* 0x2bfd */ { false, 0x2bfd, 0x2bfd }, /* 0x2bfe */ { false, 0x2bfe, 0x2bfe }, /* 0x2bff */ { false, 0x2bff, 0x2bff }, /* 0x2c00 */ { true, 0x2c00, 0x2c30 }, /* 0x2c01 */ { true, 0x2c01, 0x2c31 }, /* 0x2c02 */ { true, 0x2c02, 0x2c32 }, /* 0x2c03 */ { true, 0x2c03, 0x2c33 }, /* 0x2c04 */ { true, 0x2c04, 0x2c34 }, /* 0x2c05 */ { true, 0x2c05, 0x2c35 }, /* 0x2c06 */ { true, 0x2c06, 0x2c36 }, /* 0x2c07 */ { true, 0x2c07, 0x2c37 }, /* 0x2c08 */ { true, 0x2c08, 0x2c38 }, /* 0x2c09 */ { true, 0x2c09, 0x2c39 }, /* 0x2c0a */ { true, 0x2c0a, 0x2c3a }, /* 0x2c0b */ { true, 0x2c0b, 0x2c3b }, /* 0x2c0c */ { true, 0x2c0c, 0x2c3c }, /* 0x2c0d */ { true, 0x2c0d, 0x2c3d }, /* 0x2c0e */ { true, 0x2c0e, 0x2c3e }, /* 0x2c0f */ { true, 0x2c0f, 0x2c3f }, /* 0x2c10 */ { true, 0x2c10, 0x2c40 }, /* 0x2c11 */ { true, 0x2c11, 0x2c41 }, /* 0x2c12 */ { true, 0x2c12, 0x2c42 }, /* 0x2c13 */ { true, 0x2c13, 0x2c43 }, /* 0x2c14 */ { true, 0x2c14, 0x2c44 }, /* 0x2c15 */ { true, 0x2c15, 0x2c45 }, /* 0x2c16 */ { true, 0x2c16, 0x2c46 }, /* 0x2c17 */ { true, 0x2c17, 0x2c47 }, /* 0x2c18 */ { true, 0x2c18, 0x2c48 }, /* 0x2c19 */ { true, 0x2c19, 0x2c49 }, /* 0x2c1a */ { true, 0x2c1a, 0x2c4a }, /* 0x2c1b */ { true, 0x2c1b, 0x2c4b }, /* 0x2c1c */ { true, 0x2c1c, 0x2c4c }, /* 0x2c1d */ { true, 0x2c1d, 0x2c4d }, /* 0x2c1e */ { true, 0x2c1e, 0x2c4e }, /* 0x2c1f */ { true, 0x2c1f, 0x2c4f }, /* 0x2c20 */ { true, 0x2c20, 0x2c50 }, /* 0x2c21 */ { true, 0x2c21, 0x2c51 }, /* 0x2c22 */ { true, 0x2c22, 0x2c52 }, /* 0x2c23 */ { true, 0x2c23, 0x2c53 }, /* 0x2c24 */ { true, 0x2c24, 0x2c54 }, /* 0x2c25 */ { true, 0x2c25, 0x2c55 }, /* 0x2c26 */ { true, 0x2c26, 0x2c56 }, /* 0x2c27 */ { true, 0x2c27, 0x2c57 }, /* 0x2c28 */ { true, 0x2c28, 0x2c58 }, /* 0x2c29 */ { true, 0x2c29, 0x2c59 }, /* 0x2c2a */ { true, 0x2c2a, 0x2c5a }, /* 0x2c2b */ { true, 0x2c2b, 0x2c5b }, /* 0x2c2c */ { true, 0x2c2c, 0x2c5c }, /* 0x2c2d */ { true, 0x2c2d, 0x2c5d }, /* 0x2c2e */ { true, 0x2c2e, 0x2c5e }, /* 0x2c2f */ { false, 0x2c2f, 0x2c2f }, /* 0x2c30 */ { true, 0x2c00, 0x2c30 }, /* 0x2c31 */ { true, 0x2c01, 0x2c31 }, /* 0x2c32 */ { true, 0x2c02, 0x2c32 }, /* 0x2c33 */ { true, 0x2c03, 0x2c33 }, /* 0x2c34 */ { true, 0x2c04, 0x2c34 }, /* 0x2c35 */ { true, 0x2c05, 0x2c35 }, /* 0x2c36 */ { true, 0x2c06, 0x2c36 }, /* 0x2c37 */ { true, 0x2c07, 0x2c37 }, /* 0x2c38 */ { true, 0x2c08, 0x2c38 }, /* 0x2c39 */ { true, 0x2c09, 0x2c39 }, /* 0x2c3a */ { true, 0x2c0a, 0x2c3a }, /* 0x2c3b */ { true, 0x2c0b, 0x2c3b }, /* 0x2c3c */ { true, 0x2c0c, 0x2c3c }, /* 0x2c3d */ { true, 0x2c0d, 0x2c3d }, /* 0x2c3e */ { true, 0x2c0e, 0x2c3e }, /* 0x2c3f */ { true, 0x2c0f, 0x2c3f }, /* 0x2c40 */ { true, 0x2c10, 0x2c40 }, /* 0x2c41 */ { true, 0x2c11, 0x2c41 }, /* 0x2c42 */ { true, 0x2c12, 0x2c42 }, /* 0x2c43 */ { true, 0x2c13, 0x2c43 }, /* 0x2c44 */ { true, 0x2c14, 0x2c44 }, /* 0x2c45 */ { true, 0x2c15, 0x2c45 }, /* 0x2c46 */ { true, 0x2c16, 0x2c46 }, /* 0x2c47 */ { true, 0x2c17, 0x2c47 }, /* 0x2c48 */ { true, 0x2c18, 0x2c48 }, /* 0x2c49 */ { true, 0x2c19, 0x2c49 }, /* 0x2c4a */ { true, 0x2c1a, 0x2c4a }, /* 0x2c4b */ { true, 0x2c1b, 0x2c4b }, /* 0x2c4c */ { true, 0x2c1c, 0x2c4c }, /* 0x2c4d */ { true, 0x2c1d, 0x2c4d }, /* 0x2c4e */ { true, 0x2c1e, 0x2c4e }, /* 0x2c4f */ { true, 0x2c1f, 0x2c4f }, /* 0x2c50 */ { true, 0x2c20, 0x2c50 }, /* 0x2c51 */ { true, 0x2c21, 0x2c51 }, /* 0x2c52 */ { true, 0x2c22, 0x2c52 }, /* 0x2c53 */ { true, 0x2c23, 0x2c53 }, /* 0x2c54 */ { true, 0x2c24, 0x2c54 }, /* 0x2c55 */ { true, 0x2c25, 0x2c55 }, /* 0x2c56 */ { true, 0x2c26, 0x2c56 }, /* 0x2c57 */ { true, 0x2c27, 0x2c57 }, /* 0x2c58 */ { true, 0x2c28, 0x2c58 }, /* 0x2c59 */ { true, 0x2c29, 0x2c59 }, /* 0x2c5a */ { true, 0x2c2a, 0x2c5a }, /* 0x2c5b */ { true, 0x2c2b, 0x2c5b }, /* 0x2c5c */ { true, 0x2c2c, 0x2c5c }, /* 0x2c5d */ { true, 0x2c2d, 0x2c5d }, /* 0x2c5e */ { true, 0x2c2e, 0x2c5e }, /* 0x2c5f */ { false, 0x2c5f, 0x2c5f }, /* 0x2c60 */ { false, 0x2c60, 0x2c60 }, /* 0x2c61 */ { false, 0x2c61, 0x2c61 }, /* 0x2c62 */ { false, 0x2c62, 0x2c62 }, /* 0x2c63 */ { false, 0x2c63, 0x2c63 }, /* 0x2c64 */ { false, 0x2c64, 0x2c64 }, /* 0x2c65 */ { false, 0x2c65, 0x2c65 }, /* 0x2c66 */ { false, 0x2c66, 0x2c66 }, /* 0x2c67 */ { false, 0x2c67, 0x2c67 }, /* 0x2c68 */ { false, 0x2c68, 0x2c68 }, /* 0x2c69 */ { false, 0x2c69, 0x2c69 }, /* 0x2c6a */ { false, 0x2c6a, 0x2c6a }, /* 0x2c6b */ { false, 0x2c6b, 0x2c6b }, /* 0x2c6c */ { false, 0x2c6c, 0x2c6c }, /* 0x2c6d */ { false, 0x2c6d, 0x2c6d }, /* 0x2c6e */ { false, 0x2c6e, 0x2c6e }, /* 0x2c6f */ { false, 0x2c6f, 0x2c6f }, /* 0x2c70 */ { false, 0x2c70, 0x2c70 }, /* 0x2c71 */ { false, 0x2c71, 0x2c71 }, /* 0x2c72 */ { false, 0x2c72, 0x2c72 }, /* 0x2c73 */ { false, 0x2c73, 0x2c73 }, /* 0x2c74 */ { false, 0x2c74, 0x2c74 }, /* 0x2c75 */ { false, 0x2c75, 0x2c75 }, /* 0x2c76 */ { false, 0x2c76, 0x2c76 }, /* 0x2c77 */ { false, 0x2c77, 0x2c77 }, /* 0x2c78 */ { false, 0x2c78, 0x2c78 }, /* 0x2c79 */ { false, 0x2c79, 0x2c79 }, /* 0x2c7a */ { false, 0x2c7a, 0x2c7a }, /* 0x2c7b */ { false, 0x2c7b, 0x2c7b }, /* 0x2c7c */ { false, 0x2c7c, 0x2c7c }, /* 0x2c7d */ { false, 0x2c7d, 0x2c7d }, /* 0x2c7e */ { false, 0x2c7e, 0x2c7e }, /* 0x2c7f */ { false, 0x2c7f, 0x2c7f }, /* 0x2c80 */ { true, 0x2c80, 0x2c81 }, /* 0x2c81 */ { true, 0x2c80, 0x2c81 }, /* 0x2c82 */ { true, 0x2c82, 0x2c83 }, /* 0x2c83 */ { true, 0x2c82, 0x2c83 }, /* 0x2c84 */ { true, 0x2c84, 0x2c85 }, /* 0x2c85 */ { true, 0x2c84, 0x2c85 }, /* 0x2c86 */ { true, 0x2c86, 0x2c87 }, /* 0x2c87 */ { true, 0x2c86, 0x2c87 }, /* 0x2c88 */ { true, 0x2c88, 0x2c89 }, /* 0x2c89 */ { true, 0x2c88, 0x2c89 }, /* 0x2c8a */ { true, 0x2c8a, 0x2c8b }, /* 0x2c8b */ { true, 0x2c8a, 0x2c8b }, /* 0x2c8c */ { true, 0x2c8c, 0x2c8d }, /* 0x2c8d */ { true, 0x2c8c, 0x2c8d }, /* 0x2c8e */ { true, 0x2c8e, 0x2c8f }, /* 0x2c8f */ { true, 0x2c8e, 0x2c8f }, /* 0x2c90 */ { true, 0x2c90, 0x2c91 }, /* 0x2c91 */ { true, 0x2c90, 0x2c91 }, /* 0x2c92 */ { true, 0x2c92, 0x2c93 }, /* 0x2c93 */ { true, 0x2c92, 0x2c93 }, /* 0x2c94 */ { true, 0x2c94, 0x2c95 }, /* 0x2c95 */ { true, 0x2c94, 0x2c95 }, /* 0x2c96 */ { true, 0x2c96, 0x2c97 }, /* 0x2c97 */ { true, 0x2c96, 0x2c97 }, /* 0x2c98 */ { true, 0x2c98, 0x2c99 }, /* 0x2c99 */ { true, 0x2c98, 0x2c99 }, /* 0x2c9a */ { true, 0x2c9a, 0x2c9b }, /* 0x2c9b */ { true, 0x2c9a, 0x2c9b }, /* 0x2c9c */ { true, 0x2c9c, 0x2c9d }, /* 0x2c9d */ { true, 0x2c9c, 0x2c9d }, /* 0x2c9e */ { true, 0x2c9e, 0x2c9f }, /* 0x2c9f */ { true, 0x2c9e, 0x2c9f }, /* 0x2ca0 */ { true, 0x2ca0, 0x2ca1 }, /* 0x2ca1 */ { true, 0x2ca0, 0x2ca1 }, /* 0x2ca2 */ { true, 0x2ca2, 0x2ca3 }, /* 0x2ca3 */ { true, 0x2ca2, 0x2ca3 }, /* 0x2ca4 */ { true, 0x2ca4, 0x2ca5 }, /* 0x2ca5 */ { true, 0x2ca4, 0x2ca5 }, /* 0x2ca6 */ { true, 0x2ca6, 0x2ca7 }, /* 0x2ca7 */ { true, 0x2ca6, 0x2ca7 }, /* 0x2ca8 */ { true, 0x2ca8, 0x2ca9 }, /* 0x2ca9 */ { true, 0x2ca8, 0x2ca9 }, /* 0x2caa */ { true, 0x2caa, 0x2cab }, /* 0x2cab */ { true, 0x2caa, 0x2cab }, /* 0x2cac */ { true, 0x2cac, 0x2cad }, /* 0x2cad */ { true, 0x2cac, 0x2cad }, /* 0x2cae */ { true, 0x2cae, 0x2caf }, /* 0x2caf */ { true, 0x2cae, 0x2caf }, /* 0x2cb0 */ { true, 0x2cb0, 0x2cb1 }, /* 0x2cb1 */ { true, 0x2cb0, 0x2cb1 }, /* 0x2cb2 */ { true, 0x2cb2, 0x2cb3 }, /* 0x2cb3 */ { true, 0x2cb2, 0x2cb3 }, /* 0x2cb4 */ { true, 0x2cb4, 0x2cb5 }, /* 0x2cb5 */ { true, 0x2cb4, 0x2cb5 }, /* 0x2cb6 */ { true, 0x2cb6, 0x2cb7 }, /* 0x2cb7 */ { true, 0x2cb6, 0x2cb7 }, /* 0x2cb8 */ { true, 0x2cb8, 0x2cb9 }, /* 0x2cb9 */ { true, 0x2cb8, 0x2cb9 }, /* 0x2cba */ { true, 0x2cba, 0x2cbb }, /* 0x2cbb */ { true, 0x2cba, 0x2cbb }, /* 0x2cbc */ { true, 0x2cbc, 0x2cbd }, /* 0x2cbd */ { true, 0x2cbc, 0x2cbd }, /* 0x2cbe */ { true, 0x2cbe, 0x2cbf }, /* 0x2cbf */ { true, 0x2cbe, 0x2cbf }, /* 0x2cc0 */ { true, 0x2cc0, 0x2cc1 }, /* 0x2cc1 */ { true, 0x2cc0, 0x2cc1 }, /* 0x2cc2 */ { true, 0x2cc2, 0x2cc3 }, /* 0x2cc3 */ { true, 0x2cc2, 0x2cc3 }, /* 0x2cc4 */ { true, 0x2cc4, 0x2cc5 }, /* 0x2cc5 */ { true, 0x2cc4, 0x2cc5 }, /* 0x2cc6 */ { true, 0x2cc6, 0x2cc7 }, /* 0x2cc7 */ { true, 0x2cc6, 0x2cc7 }, /* 0x2cc8 */ { true, 0x2cc8, 0x2cc9 }, /* 0x2cc9 */ { true, 0x2cc8, 0x2cc9 }, /* 0x2cca */ { true, 0x2cca, 0x2ccb }, /* 0x2ccb */ { true, 0x2cca, 0x2ccb }, /* 0x2ccc */ { true, 0x2ccc, 0x2ccd }, /* 0x2ccd */ { true, 0x2ccc, 0x2ccd }, /* 0x2cce */ { true, 0x2cce, 0x2ccf }, /* 0x2ccf */ { true, 0x2cce, 0x2ccf }, /* 0x2cd0 */ { true, 0x2cd0, 0x2cd1 }, /* 0x2cd1 */ { true, 0x2cd0, 0x2cd1 }, /* 0x2cd2 */ { true, 0x2cd2, 0x2cd3 }, /* 0x2cd3 */ { true, 0x2cd2, 0x2cd3 }, /* 0x2cd4 */ { true, 0x2cd4, 0x2cd5 }, /* 0x2cd5 */ { true, 0x2cd4, 0x2cd5 }, /* 0x2cd6 */ { true, 0x2cd6, 0x2cd7 }, /* 0x2cd7 */ { true, 0x2cd6, 0x2cd7 }, /* 0x2cd8 */ { true, 0x2cd8, 0x2cd9 }, /* 0x2cd9 */ { true, 0x2cd8, 0x2cd9 }, /* 0x2cda */ { true, 0x2cda, 0x2cdb }, /* 0x2cdb */ { true, 0x2cda, 0x2cdb }, /* 0x2cdc */ { true, 0x2cdc, 0x2cdd }, /* 0x2cdd */ { true, 0x2cdc, 0x2cdd }, /* 0x2cde */ { true, 0x2cde, 0x2cdf }, /* 0x2cdf */ { true, 0x2cde, 0x2cdf }, /* 0x2ce0 */ { true, 0x2ce0, 0x2ce1 }, /* 0x2ce1 */ { true, 0x2ce0, 0x2ce1 }, /* 0x2ce2 */ { true, 0x2ce2, 0x2ce3 }, /* 0x2ce3 */ { true, 0x2ce2, 0x2ce3 }, /* 0x2ce4 */ { true, 0x2ce4, 0x2ce4 }, /* 0x2ce5 */ { false, 0x2ce5, 0x2ce5 }, /* 0x2ce6 */ { false, 0x2ce6, 0x2ce6 }, /* 0x2ce7 */ { false, 0x2ce7, 0x2ce7 }, /* 0x2ce8 */ { false, 0x2ce8, 0x2ce8 }, /* 0x2ce9 */ { false, 0x2ce9, 0x2ce9 }, /* 0x2cea */ { false, 0x2cea, 0x2cea }, /* 0x2ceb */ { false, 0x2ceb, 0x2ceb }, /* 0x2cec */ { false, 0x2cec, 0x2cec }, /* 0x2ced */ { false, 0x2ced, 0x2ced }, /* 0x2cee */ { false, 0x2cee, 0x2cee }, /* 0x2cef */ { false, 0x2cef, 0x2cef }, /* 0x2cf0 */ { false, 0x2cf0, 0x2cf0 }, /* 0x2cf1 */ { false, 0x2cf1, 0x2cf1 }, /* 0x2cf2 */ { false, 0x2cf2, 0x2cf2 }, /* 0x2cf3 */ { false, 0x2cf3, 0x2cf3 }, /* 0x2cf4 */ { false, 0x2cf4, 0x2cf4 }, /* 0x2cf5 */ { false, 0x2cf5, 0x2cf5 }, /* 0x2cf6 */ { false, 0x2cf6, 0x2cf6 }, /* 0x2cf7 */ { false, 0x2cf7, 0x2cf7 }, /* 0x2cf8 */ { false, 0x2cf8, 0x2cf8 }, /* 0x2cf9 */ { false, 0x2cf9, 0x2cf9 }, /* 0x2cfa */ { false, 0x2cfa, 0x2cfa }, /* 0x2cfb */ { false, 0x2cfb, 0x2cfb }, /* 0x2cfc */ { false, 0x2cfc, 0x2cfc }, /* 0x2cfd */ { false, 0x2cfd, 0x2cfd }, /* 0x2cfe */ { false, 0x2cfe, 0x2cfe }, /* 0x2cff */ { false, 0x2cff, 0x2cff }, /* 0x2d00 */ { true, 0x10a0, 0x2d00 }, /* 0x2d01 */ { true, 0x10a1, 0x2d01 }, /* 0x2d02 */ { true, 0x10a2, 0x2d02 }, /* 0x2d03 */ { true, 0x10a3, 0x2d03 }, /* 0x2d04 */ { true, 0x10a4, 0x2d04 }, /* 0x2d05 */ { true, 0x10a5, 0x2d05 }, /* 0x2d06 */ { true, 0x10a6, 0x2d06 }, /* 0x2d07 */ { true, 0x10a7, 0x2d07 }, /* 0x2d08 */ { true, 0x10a8, 0x2d08 }, /* 0x2d09 */ { true, 0x10a9, 0x2d09 }, /* 0x2d0a */ { true, 0x10aa, 0x2d0a }, /* 0x2d0b */ { true, 0x10ab, 0x2d0b }, /* 0x2d0c */ { true, 0x10ac, 0x2d0c }, /* 0x2d0d */ { true, 0x10ad, 0x2d0d }, /* 0x2d0e */ { true, 0x10ae, 0x2d0e }, /* 0x2d0f */ { true, 0x10af, 0x2d0f }, /* 0x2d10 */ { true, 0x10b0, 0x2d10 }, /* 0x2d11 */ { true, 0x10b1, 0x2d11 }, /* 0x2d12 */ { true, 0x10b2, 0x2d12 }, /* 0x2d13 */ { true, 0x10b3, 0x2d13 }, /* 0x2d14 */ { true, 0x10b4, 0x2d14 }, /* 0x2d15 */ { true, 0x10b5, 0x2d15 }, /* 0x2d16 */ { true, 0x10b6, 0x2d16 }, /* 0x2d17 */ { true, 0x10b7, 0x2d17 }, /* 0x2d18 */ { true, 0x10b8, 0x2d18 }, /* 0x2d19 */ { true, 0x10b9, 0x2d19 }, /* 0x2d1a */ { true, 0x10ba, 0x2d1a }, /* 0x2d1b */ { true, 0x10bb, 0x2d1b }, /* 0x2d1c */ { true, 0x10bc, 0x2d1c }, /* 0x2d1d */ { true, 0x10bd, 0x2d1d }, /* 0x2d1e */ { true, 0x10be, 0x2d1e }, /* 0x2d1f */ { true, 0x10bf, 0x2d1f }, /* 0x2d20 */ { true, 0x10c0, 0x2d20 }, /* 0x2d21 */ { true, 0x10c1, 0x2d21 }, /* 0x2d22 */ { true, 0x10c2, 0x2d22 }, /* 0x2d23 */ { true, 0x10c3, 0x2d23 }, /* 0x2d24 */ { true, 0x10c4, 0x2d24 }, /* 0x2d25 */ { true, 0x10c5, 0x2d25 }, /* 0x2d26 */ { false, 0x2d26, 0x2d26 }, /* 0x2d27 */ { false, 0x2d27, 0x2d27 }, /* 0x2d28 */ { false, 0x2d28, 0x2d28 }, /* 0x2d29 */ { false, 0x2d29, 0x2d29 }, /* 0x2d2a */ { false, 0x2d2a, 0x2d2a }, /* 0x2d2b */ { false, 0x2d2b, 0x2d2b }, /* 0x2d2c */ { false, 0x2d2c, 0x2d2c }, /* 0x2d2d */ { false, 0x2d2d, 0x2d2d }, /* 0x2d2e */ { false, 0x2d2e, 0x2d2e }, /* 0x2d2f */ { false, 0x2d2f, 0x2d2f }, /* 0x2d30 */ { true, 0x2d30, 0x2d30 }, /* 0x2d31 */ { true, 0x2d31, 0x2d31 }, /* 0x2d32 */ { true, 0x2d32, 0x2d32 }, /* 0x2d33 */ { true, 0x2d33, 0x2d33 }, /* 0x2d34 */ { true, 0x2d34, 0x2d34 }, /* 0x2d35 */ { true, 0x2d35, 0x2d35 }, /* 0x2d36 */ { true, 0x2d36, 0x2d36 }, /* 0x2d37 */ { true, 0x2d37, 0x2d37 }, /* 0x2d38 */ { true, 0x2d38, 0x2d38 }, /* 0x2d39 */ { true, 0x2d39, 0x2d39 }, /* 0x2d3a */ { true, 0x2d3a, 0x2d3a }, /* 0x2d3b */ { true, 0x2d3b, 0x2d3b }, /* 0x2d3c */ { true, 0x2d3c, 0x2d3c }, /* 0x2d3d */ { true, 0x2d3d, 0x2d3d }, /* 0x2d3e */ { true, 0x2d3e, 0x2d3e }, /* 0x2d3f */ { true, 0x2d3f, 0x2d3f }, /* 0x2d40 */ { true, 0x2d40, 0x2d40 }, /* 0x2d41 */ { true, 0x2d41, 0x2d41 }, /* 0x2d42 */ { true, 0x2d42, 0x2d42 }, /* 0x2d43 */ { true, 0x2d43, 0x2d43 }, /* 0x2d44 */ { true, 0x2d44, 0x2d44 }, /* 0x2d45 */ { true, 0x2d45, 0x2d45 }, /* 0x2d46 */ { true, 0x2d46, 0x2d46 }, /* 0x2d47 */ { true, 0x2d47, 0x2d47 }, /* 0x2d48 */ { true, 0x2d48, 0x2d48 }, /* 0x2d49 */ { true, 0x2d49, 0x2d49 }, /* 0x2d4a */ { true, 0x2d4a, 0x2d4a }, /* 0x2d4b */ { true, 0x2d4b, 0x2d4b }, /* 0x2d4c */ { true, 0x2d4c, 0x2d4c }, /* 0x2d4d */ { true, 0x2d4d, 0x2d4d }, /* 0x2d4e */ { true, 0x2d4e, 0x2d4e }, /* 0x2d4f */ { true, 0x2d4f, 0x2d4f }, /* 0x2d50 */ { true, 0x2d50, 0x2d50 }, /* 0x2d51 */ { true, 0x2d51, 0x2d51 }, /* 0x2d52 */ { true, 0x2d52, 0x2d52 }, /* 0x2d53 */ { true, 0x2d53, 0x2d53 }, /* 0x2d54 */ { true, 0x2d54, 0x2d54 }, /* 0x2d55 */ { true, 0x2d55, 0x2d55 }, /* 0x2d56 */ { true, 0x2d56, 0x2d56 }, /* 0x2d57 */ { true, 0x2d57, 0x2d57 }, /* 0x2d58 */ { true, 0x2d58, 0x2d58 }, /* 0x2d59 */ { true, 0x2d59, 0x2d59 }, /* 0x2d5a */ { true, 0x2d5a, 0x2d5a }, /* 0x2d5b */ { true, 0x2d5b, 0x2d5b }, /* 0x2d5c */ { true, 0x2d5c, 0x2d5c }, /* 0x2d5d */ { true, 0x2d5d, 0x2d5d }, /* 0x2d5e */ { true, 0x2d5e, 0x2d5e }, /* 0x2d5f */ { true, 0x2d5f, 0x2d5f }, /* 0x2d60 */ { true, 0x2d60, 0x2d60 }, /* 0x2d61 */ { true, 0x2d61, 0x2d61 }, /* 0x2d62 */ { true, 0x2d62, 0x2d62 }, /* 0x2d63 */ { true, 0x2d63, 0x2d63 }, /* 0x2d64 */ { true, 0x2d64, 0x2d64 }, /* 0x2d65 */ { true, 0x2d65, 0x2d65 }, /* 0x2d66 */ { false, 0x2d66, 0x2d66 }, /* 0x2d67 */ { false, 0x2d67, 0x2d67 }, /* 0x2d68 */ { false, 0x2d68, 0x2d68 }, /* 0x2d69 */ { false, 0x2d69, 0x2d69 }, /* 0x2d6a */ { false, 0x2d6a, 0x2d6a }, /* 0x2d6b */ { false, 0x2d6b, 0x2d6b }, /* 0x2d6c */ { false, 0x2d6c, 0x2d6c }, /* 0x2d6d */ { false, 0x2d6d, 0x2d6d }, /* 0x2d6e */ { false, 0x2d6e, 0x2d6e }, /* 0x2d6f */ { true, 0x2d6f, 0x2d6f }, /* 0x2d70 */ { false, 0x2d70, 0x2d70 }, /* 0x2d71 */ { false, 0x2d71, 0x2d71 }, /* 0x2d72 */ { false, 0x2d72, 0x2d72 }, /* 0x2d73 */ { false, 0x2d73, 0x2d73 }, /* 0x2d74 */ { false, 0x2d74, 0x2d74 }, /* 0x2d75 */ { false, 0x2d75, 0x2d75 }, /* 0x2d76 */ { false, 0x2d76, 0x2d76 }, /* 0x2d77 */ { false, 0x2d77, 0x2d77 }, /* 0x2d78 */ { false, 0x2d78, 0x2d78 }, /* 0x2d79 */ { false, 0x2d79, 0x2d79 }, /* 0x2d7a */ { false, 0x2d7a, 0x2d7a }, /* 0x2d7b */ { false, 0x2d7b, 0x2d7b }, /* 0x2d7c */ { false, 0x2d7c, 0x2d7c }, /* 0x2d7d */ { false, 0x2d7d, 0x2d7d }, /* 0x2d7e */ { false, 0x2d7e, 0x2d7e }, /* 0x2d7f */ { false, 0x2d7f, 0x2d7f }, /* 0x2d80 */ { true, 0x2d80, 0x2d80 }, /* 0x2d81 */ { true, 0x2d81, 0x2d81 }, /* 0x2d82 */ { true, 0x2d82, 0x2d82 }, /* 0x2d83 */ { true, 0x2d83, 0x2d83 }, /* 0x2d84 */ { true, 0x2d84, 0x2d84 }, /* 0x2d85 */ { true, 0x2d85, 0x2d85 }, /* 0x2d86 */ { true, 0x2d86, 0x2d86 }, /* 0x2d87 */ { true, 0x2d87, 0x2d87 }, /* 0x2d88 */ { true, 0x2d88, 0x2d88 }, /* 0x2d89 */ { true, 0x2d89, 0x2d89 }, /* 0x2d8a */ { true, 0x2d8a, 0x2d8a }, /* 0x2d8b */ { true, 0x2d8b, 0x2d8b }, /* 0x2d8c */ { true, 0x2d8c, 0x2d8c }, /* 0x2d8d */ { true, 0x2d8d, 0x2d8d }, /* 0x2d8e */ { true, 0x2d8e, 0x2d8e }, /* 0x2d8f */ { true, 0x2d8f, 0x2d8f }, /* 0x2d90 */ { true, 0x2d90, 0x2d90 }, /* 0x2d91 */ { true, 0x2d91, 0x2d91 }, /* 0x2d92 */ { true, 0x2d92, 0x2d92 }, /* 0x2d93 */ { true, 0x2d93, 0x2d93 }, /* 0x2d94 */ { true, 0x2d94, 0x2d94 }, /* 0x2d95 */ { true, 0x2d95, 0x2d95 }, /* 0x2d96 */ { true, 0x2d96, 0x2d96 }, /* 0x2d97 */ { false, 0x2d97, 0x2d97 }, /* 0x2d98 */ { false, 0x2d98, 0x2d98 }, /* 0x2d99 */ { false, 0x2d99, 0x2d99 }, /* 0x2d9a */ { false, 0x2d9a, 0x2d9a }, /* 0x2d9b */ { false, 0x2d9b, 0x2d9b }, /* 0x2d9c */ { false, 0x2d9c, 0x2d9c }, /* 0x2d9d */ { false, 0x2d9d, 0x2d9d }, /* 0x2d9e */ { false, 0x2d9e, 0x2d9e }, /* 0x2d9f */ { false, 0x2d9f, 0x2d9f }, /* 0x2da0 */ { true, 0x2da0, 0x2da0 }, /* 0x2da1 */ { true, 0x2da1, 0x2da1 }, /* 0x2da2 */ { true, 0x2da2, 0x2da2 }, /* 0x2da3 */ { true, 0x2da3, 0x2da3 }, /* 0x2da4 */ { true, 0x2da4, 0x2da4 }, /* 0x2da5 */ { true, 0x2da5, 0x2da5 }, /* 0x2da6 */ { true, 0x2da6, 0x2da6 }, /* 0x2da7 */ { false, 0x2da7, 0x2da7 }, /* 0x2da8 */ { true, 0x2da8, 0x2da8 }, /* 0x2da9 */ { true, 0x2da9, 0x2da9 }, /* 0x2daa */ { true, 0x2daa, 0x2daa }, /* 0x2dab */ { true, 0x2dab, 0x2dab }, /* 0x2dac */ { true, 0x2dac, 0x2dac }, /* 0x2dad */ { true, 0x2dad, 0x2dad }, /* 0x2dae */ { true, 0x2dae, 0x2dae }, /* 0x2daf */ { false, 0x2daf, 0x2daf }, /* 0x2db0 */ { true, 0x2db0, 0x2db0 }, /* 0x2db1 */ { true, 0x2db1, 0x2db1 }, /* 0x2db2 */ { true, 0x2db2, 0x2db2 }, /* 0x2db3 */ { true, 0x2db3, 0x2db3 }, /* 0x2db4 */ { true, 0x2db4, 0x2db4 }, /* 0x2db5 */ { true, 0x2db5, 0x2db5 }, /* 0x2db6 */ { true, 0x2db6, 0x2db6 }, /* 0x2db7 */ { false, 0x2db7, 0x2db7 }, /* 0x2db8 */ { true, 0x2db8, 0x2db8 }, /* 0x2db9 */ { true, 0x2db9, 0x2db9 }, /* 0x2dba */ { true, 0x2dba, 0x2dba }, /* 0x2dbb */ { true, 0x2dbb, 0x2dbb }, /* 0x2dbc */ { true, 0x2dbc, 0x2dbc }, /* 0x2dbd */ { true, 0x2dbd, 0x2dbd }, /* 0x2dbe */ { true, 0x2dbe, 0x2dbe }, /* 0x2dbf */ { false, 0x2dbf, 0x2dbf }, /* 0x2dc0 */ { true, 0x2dc0, 0x2dc0 }, /* 0x2dc1 */ { true, 0x2dc1, 0x2dc1 }, /* 0x2dc2 */ { true, 0x2dc2, 0x2dc2 }, /* 0x2dc3 */ { true, 0x2dc3, 0x2dc3 }, /* 0x2dc4 */ { true, 0x2dc4, 0x2dc4 }, /* 0x2dc5 */ { true, 0x2dc5, 0x2dc5 }, /* 0x2dc6 */ { true, 0x2dc6, 0x2dc6 }, /* 0x2dc7 */ { false, 0x2dc7, 0x2dc7 }, /* 0x2dc8 */ { true, 0x2dc8, 0x2dc8 }, /* 0x2dc9 */ { true, 0x2dc9, 0x2dc9 }, /* 0x2dca */ { true, 0x2dca, 0x2dca }, /* 0x2dcb */ { true, 0x2dcb, 0x2dcb }, /* 0x2dcc */ { true, 0x2dcc, 0x2dcc }, /* 0x2dcd */ { true, 0x2dcd, 0x2dcd }, /* 0x2dce */ { true, 0x2dce, 0x2dce }, /* 0x2dcf */ { false, 0x2dcf, 0x2dcf }, /* 0x2dd0 */ { true, 0x2dd0, 0x2dd0 }, /* 0x2dd1 */ { true, 0x2dd1, 0x2dd1 }, /* 0x2dd2 */ { true, 0x2dd2, 0x2dd2 }, /* 0x2dd3 */ { true, 0x2dd3, 0x2dd3 }, /* 0x2dd4 */ { true, 0x2dd4, 0x2dd4 }, /* 0x2dd5 */ { true, 0x2dd5, 0x2dd5 }, /* 0x2dd6 */ { true, 0x2dd6, 0x2dd6 }, /* 0x2dd7 */ { false, 0x2dd7, 0x2dd7 }, /* 0x2dd8 */ { true, 0x2dd8, 0x2dd8 }, /* 0x2dd9 */ { true, 0x2dd9, 0x2dd9 }, /* 0x2dda */ { true, 0x2dda, 0x2dda }, /* 0x2ddb */ { true, 0x2ddb, 0x2ddb }, /* 0x2ddc */ { true, 0x2ddc, 0x2ddc }, /* 0x2ddd */ { true, 0x2ddd, 0x2ddd }, /* 0x2dde */ { true, 0x2dde, 0x2dde }, /* 0x2ddf */ { false, 0x2ddf, 0x2ddf }, /* 0x2de0 */ { false, 0x2de0, 0x2de0 }, /* 0x2de1 */ { false, 0x2de1, 0x2de1 }, /* 0x2de2 */ { false, 0x2de2, 0x2de2 }, /* 0x2de3 */ { false, 0x2de3, 0x2de3 }, /* 0x2de4 */ { false, 0x2de4, 0x2de4 }, /* 0x2de5 */ { false, 0x2de5, 0x2de5 }, /* 0x2de6 */ { false, 0x2de6, 0x2de6 }, /* 0x2de7 */ { false, 0x2de7, 0x2de7 }, /* 0x2de8 */ { false, 0x2de8, 0x2de8 }, /* 0x2de9 */ { false, 0x2de9, 0x2de9 }, /* 0x2dea */ { false, 0x2dea, 0x2dea }, /* 0x2deb */ { false, 0x2deb, 0x2deb }, /* 0x2dec */ { false, 0x2dec, 0x2dec }, /* 0x2ded */ { false, 0x2ded, 0x2ded }, /* 0x2dee */ { false, 0x2dee, 0x2dee }, /* 0x2def */ { false, 0x2def, 0x2def }, /* 0x2df0 */ { false, 0x2df0, 0x2df0 }, /* 0x2df1 */ { false, 0x2df1, 0x2df1 }, /* 0x2df2 */ { false, 0x2df2, 0x2df2 }, /* 0x2df3 */ { false, 0x2df3, 0x2df3 }, /* 0x2df4 */ { false, 0x2df4, 0x2df4 }, /* 0x2df5 */ { false, 0x2df5, 0x2df5 }, /* 0x2df6 */ { false, 0x2df6, 0x2df6 }, /* 0x2df7 */ { false, 0x2df7, 0x2df7 }, /* 0x2df8 */ { false, 0x2df8, 0x2df8 }, /* 0x2df9 */ { false, 0x2df9, 0x2df9 }, /* 0x2dfa */ { false, 0x2dfa, 0x2dfa }, /* 0x2dfb */ { false, 0x2dfb, 0x2dfb }, /* 0x2dfc */ { false, 0x2dfc, 0x2dfc }, /* 0x2dfd */ { false, 0x2dfd, 0x2dfd }, /* 0x2dfe */ { false, 0x2dfe, 0x2dfe }, /* 0x2dff */ { false, 0x2dff, 0x2dff }, /* 0x2e00 */ { false, 0x2e00, 0x2e00 }, /* 0x2e01 */ { false, 0x2e01, 0x2e01 }, /* 0x2e02 */ { false, 0x2e02, 0x2e02 }, /* 0x2e03 */ { false, 0x2e03, 0x2e03 }, /* 0x2e04 */ { false, 0x2e04, 0x2e04 }, /* 0x2e05 */ { false, 0x2e05, 0x2e05 }, /* 0x2e06 */ { false, 0x2e06, 0x2e06 }, /* 0x2e07 */ { false, 0x2e07, 0x2e07 }, /* 0x2e08 */ { false, 0x2e08, 0x2e08 }, /* 0x2e09 */ { false, 0x2e09, 0x2e09 }, /* 0x2e0a */ { false, 0x2e0a, 0x2e0a }, /* 0x2e0b */ { false, 0x2e0b, 0x2e0b }, /* 0x2e0c */ { false, 0x2e0c, 0x2e0c }, /* 0x2e0d */ { false, 0x2e0d, 0x2e0d }, /* 0x2e0e */ { false, 0x2e0e, 0x2e0e }, /* 0x2e0f */ { false, 0x2e0f, 0x2e0f }, /* 0x2e10 */ { false, 0x2e10, 0x2e10 }, /* 0x2e11 */ { false, 0x2e11, 0x2e11 }, /* 0x2e12 */ { false, 0x2e12, 0x2e12 }, /* 0x2e13 */ { false, 0x2e13, 0x2e13 }, /* 0x2e14 */ { false, 0x2e14, 0x2e14 }, /* 0x2e15 */ { false, 0x2e15, 0x2e15 }, /* 0x2e16 */ { false, 0x2e16, 0x2e16 }, /* 0x2e17 */ { false, 0x2e17, 0x2e17 }, /* 0x2e18 */ { false, 0x2e18, 0x2e18 }, /* 0x2e19 */ { false, 0x2e19, 0x2e19 }, /* 0x2e1a */ { false, 0x2e1a, 0x2e1a }, /* 0x2e1b */ { false, 0x2e1b, 0x2e1b }, /* 0x2e1c */ { false, 0x2e1c, 0x2e1c }, /* 0x2e1d */ { false, 0x2e1d, 0x2e1d }, /* 0x2e1e */ { false, 0x2e1e, 0x2e1e }, /* 0x2e1f */ { false, 0x2e1f, 0x2e1f }, /* 0x2e20 */ { false, 0x2e20, 0x2e20 }, /* 0x2e21 */ { false, 0x2e21, 0x2e21 }, /* 0x2e22 */ { false, 0x2e22, 0x2e22 }, /* 0x2e23 */ { false, 0x2e23, 0x2e23 }, /* 0x2e24 */ { false, 0x2e24, 0x2e24 }, /* 0x2e25 */ { false, 0x2e25, 0x2e25 }, /* 0x2e26 */ { false, 0x2e26, 0x2e26 }, /* 0x2e27 */ { false, 0x2e27, 0x2e27 }, /* 0x2e28 */ { false, 0x2e28, 0x2e28 }, /* 0x2e29 */ { false, 0x2e29, 0x2e29 }, /* 0x2e2a */ { false, 0x2e2a, 0x2e2a }, /* 0x2e2b */ { false, 0x2e2b, 0x2e2b }, /* 0x2e2c */ { false, 0x2e2c, 0x2e2c }, /* 0x2e2d */ { false, 0x2e2d, 0x2e2d }, /* 0x2e2e */ { false, 0x2e2e, 0x2e2e }, /* 0x2e2f */ { false, 0x2e2f, 0x2e2f }, /* 0x2e30 */ { false, 0x2e30, 0x2e30 }, /* 0x2e31 */ { false, 0x2e31, 0x2e31 }, /* 0x2e32 */ { false, 0x2e32, 0x2e32 }, /* 0x2e33 */ { false, 0x2e33, 0x2e33 }, /* 0x2e34 */ { false, 0x2e34, 0x2e34 }, /* 0x2e35 */ { false, 0x2e35, 0x2e35 }, /* 0x2e36 */ { false, 0x2e36, 0x2e36 }, /* 0x2e37 */ { false, 0x2e37, 0x2e37 }, /* 0x2e38 */ { false, 0x2e38, 0x2e38 }, /* 0x2e39 */ { false, 0x2e39, 0x2e39 }, /* 0x2e3a */ { false, 0x2e3a, 0x2e3a }, /* 0x2e3b */ { false, 0x2e3b, 0x2e3b }, /* 0x2e3c */ { false, 0x2e3c, 0x2e3c }, /* 0x2e3d */ { false, 0x2e3d, 0x2e3d }, /* 0x2e3e */ { false, 0x2e3e, 0x2e3e }, /* 0x2e3f */ { false, 0x2e3f, 0x2e3f }, /* 0x2e40 */ { false, 0x2e40, 0x2e40 }, /* 0x2e41 */ { false, 0x2e41, 0x2e41 }, /* 0x2e42 */ { false, 0x2e42, 0x2e42 }, /* 0x2e43 */ { false, 0x2e43, 0x2e43 }, /* 0x2e44 */ { false, 0x2e44, 0x2e44 }, /* 0x2e45 */ { false, 0x2e45, 0x2e45 }, /* 0x2e46 */ { false, 0x2e46, 0x2e46 }, /* 0x2e47 */ { false, 0x2e47, 0x2e47 }, /* 0x2e48 */ { false, 0x2e48, 0x2e48 }, /* 0x2e49 */ { false, 0x2e49, 0x2e49 }, /* 0x2e4a */ { false, 0x2e4a, 0x2e4a }, /* 0x2e4b */ { false, 0x2e4b, 0x2e4b }, /* 0x2e4c */ { false, 0x2e4c, 0x2e4c }, /* 0x2e4d */ { false, 0x2e4d, 0x2e4d }, /* 0x2e4e */ { false, 0x2e4e, 0x2e4e }, /* 0x2e4f */ { false, 0x2e4f, 0x2e4f }, /* 0x2e50 */ { false, 0x2e50, 0x2e50 }, /* 0x2e51 */ { false, 0x2e51, 0x2e51 }, /* 0x2e52 */ { false, 0x2e52, 0x2e52 }, /* 0x2e53 */ { false, 0x2e53, 0x2e53 }, /* 0x2e54 */ { false, 0x2e54, 0x2e54 }, /* 0x2e55 */ { false, 0x2e55, 0x2e55 }, /* 0x2e56 */ { false, 0x2e56, 0x2e56 }, /* 0x2e57 */ { false, 0x2e57, 0x2e57 }, /* 0x2e58 */ { false, 0x2e58, 0x2e58 }, /* 0x2e59 */ { false, 0x2e59, 0x2e59 }, /* 0x2e5a */ { false, 0x2e5a, 0x2e5a }, /* 0x2e5b */ { false, 0x2e5b, 0x2e5b }, /* 0x2e5c */ { false, 0x2e5c, 0x2e5c }, /* 0x2e5d */ { false, 0x2e5d, 0x2e5d }, /* 0x2e5e */ { false, 0x2e5e, 0x2e5e }, /* 0x2e5f */ { false, 0x2e5f, 0x2e5f }, /* 0x2e60 */ { false, 0x2e60, 0x2e60 }, /* 0x2e61 */ { false, 0x2e61, 0x2e61 }, /* 0x2e62 */ { false, 0x2e62, 0x2e62 }, /* 0x2e63 */ { false, 0x2e63, 0x2e63 }, /* 0x2e64 */ { false, 0x2e64, 0x2e64 }, /* 0x2e65 */ { false, 0x2e65, 0x2e65 }, /* 0x2e66 */ { false, 0x2e66, 0x2e66 }, /* 0x2e67 */ { false, 0x2e67, 0x2e67 }, /* 0x2e68 */ { false, 0x2e68, 0x2e68 }, /* 0x2e69 */ { false, 0x2e69, 0x2e69 }, /* 0x2e6a */ { false, 0x2e6a, 0x2e6a }, /* 0x2e6b */ { false, 0x2e6b, 0x2e6b }, /* 0x2e6c */ { false, 0x2e6c, 0x2e6c }, /* 0x2e6d */ { false, 0x2e6d, 0x2e6d }, /* 0x2e6e */ { false, 0x2e6e, 0x2e6e }, /* 0x2e6f */ { false, 0x2e6f, 0x2e6f }, /* 0x2e70 */ { false, 0x2e70, 0x2e70 }, /* 0x2e71 */ { false, 0x2e71, 0x2e71 }, /* 0x2e72 */ { false, 0x2e72, 0x2e72 }, /* 0x2e73 */ { false, 0x2e73, 0x2e73 }, /* 0x2e74 */ { false, 0x2e74, 0x2e74 }, /* 0x2e75 */ { false, 0x2e75, 0x2e75 }, /* 0x2e76 */ { false, 0x2e76, 0x2e76 }, /* 0x2e77 */ { false, 0x2e77, 0x2e77 }, /* 0x2e78 */ { false, 0x2e78, 0x2e78 }, /* 0x2e79 */ { false, 0x2e79, 0x2e79 }, /* 0x2e7a */ { false, 0x2e7a, 0x2e7a }, /* 0x2e7b */ { false, 0x2e7b, 0x2e7b }, /* 0x2e7c */ { false, 0x2e7c, 0x2e7c }, /* 0x2e7d */ { false, 0x2e7d, 0x2e7d }, /* 0x2e7e */ { false, 0x2e7e, 0x2e7e }, /* 0x2e7f */ { false, 0x2e7f, 0x2e7f }, /* 0x2e80 */ { false, 0x2e80, 0x2e80 }, /* 0x2e81 */ { false, 0x2e81, 0x2e81 }, /* 0x2e82 */ { false, 0x2e82, 0x2e82 }, /* 0x2e83 */ { false, 0x2e83, 0x2e83 }, /* 0x2e84 */ { false, 0x2e84, 0x2e84 }, /* 0x2e85 */ { false, 0x2e85, 0x2e85 }, /* 0x2e86 */ { false, 0x2e86, 0x2e86 }, /* 0x2e87 */ { false, 0x2e87, 0x2e87 }, /* 0x2e88 */ { false, 0x2e88, 0x2e88 }, /* 0x2e89 */ { false, 0x2e89, 0x2e89 }, /* 0x2e8a */ { false, 0x2e8a, 0x2e8a }, /* 0x2e8b */ { false, 0x2e8b, 0x2e8b }, /* 0x2e8c */ { false, 0x2e8c, 0x2e8c }, /* 0x2e8d */ { false, 0x2e8d, 0x2e8d }, /* 0x2e8e */ { false, 0x2e8e, 0x2e8e }, /* 0x2e8f */ { false, 0x2e8f, 0x2e8f }, /* 0x2e90 */ { false, 0x2e90, 0x2e90 }, /* 0x2e91 */ { false, 0x2e91, 0x2e91 }, /* 0x2e92 */ { false, 0x2e92, 0x2e92 }, /* 0x2e93 */ { false, 0x2e93, 0x2e93 }, /* 0x2e94 */ { false, 0x2e94, 0x2e94 }, /* 0x2e95 */ { false, 0x2e95, 0x2e95 }, /* 0x2e96 */ { false, 0x2e96, 0x2e96 }, /* 0x2e97 */ { false, 0x2e97, 0x2e97 }, /* 0x2e98 */ { false, 0x2e98, 0x2e98 }, /* 0x2e99 */ { false, 0x2e99, 0x2e99 }, /* 0x2e9a */ { false, 0x2e9a, 0x2e9a }, /* 0x2e9b */ { false, 0x2e9b, 0x2e9b }, /* 0x2e9c */ { false, 0x2e9c, 0x2e9c }, /* 0x2e9d */ { false, 0x2e9d, 0x2e9d }, /* 0x2e9e */ { false, 0x2e9e, 0x2e9e }, /* 0x2e9f */ { false, 0x2e9f, 0x2e9f }, /* 0x2ea0 */ { false, 0x2ea0, 0x2ea0 }, /* 0x2ea1 */ { false, 0x2ea1, 0x2ea1 }, /* 0x2ea2 */ { false, 0x2ea2, 0x2ea2 }, /* 0x2ea3 */ { false, 0x2ea3, 0x2ea3 }, /* 0x2ea4 */ { false, 0x2ea4, 0x2ea4 }, /* 0x2ea5 */ { false, 0x2ea5, 0x2ea5 }, /* 0x2ea6 */ { false, 0x2ea6, 0x2ea6 }, /* 0x2ea7 */ { false, 0x2ea7, 0x2ea7 }, /* 0x2ea8 */ { false, 0x2ea8, 0x2ea8 }, /* 0x2ea9 */ { false, 0x2ea9, 0x2ea9 }, /* 0x2eaa */ { false, 0x2eaa, 0x2eaa }, /* 0x2eab */ { false, 0x2eab, 0x2eab }, /* 0x2eac */ { false, 0x2eac, 0x2eac }, /* 0x2ead */ { false, 0x2ead, 0x2ead }, /* 0x2eae */ { false, 0x2eae, 0x2eae }, /* 0x2eaf */ { false, 0x2eaf, 0x2eaf }, /* 0x2eb0 */ { false, 0x2eb0, 0x2eb0 }, /* 0x2eb1 */ { false, 0x2eb1, 0x2eb1 }, /* 0x2eb2 */ { false, 0x2eb2, 0x2eb2 }, /* 0x2eb3 */ { false, 0x2eb3, 0x2eb3 }, /* 0x2eb4 */ { false, 0x2eb4, 0x2eb4 }, /* 0x2eb5 */ { false, 0x2eb5, 0x2eb5 }, /* 0x2eb6 */ { false, 0x2eb6, 0x2eb6 }, /* 0x2eb7 */ { false, 0x2eb7, 0x2eb7 }, /* 0x2eb8 */ { false, 0x2eb8, 0x2eb8 }, /* 0x2eb9 */ { false, 0x2eb9, 0x2eb9 }, /* 0x2eba */ { false, 0x2eba, 0x2eba }, /* 0x2ebb */ { false, 0x2ebb, 0x2ebb }, /* 0x2ebc */ { false, 0x2ebc, 0x2ebc }, /* 0x2ebd */ { false, 0x2ebd, 0x2ebd }, /* 0x2ebe */ { false, 0x2ebe, 0x2ebe }, /* 0x2ebf */ { false, 0x2ebf, 0x2ebf }, /* 0x2ec0 */ { false, 0x2ec0, 0x2ec0 }, /* 0x2ec1 */ { false, 0x2ec1, 0x2ec1 }, /* 0x2ec2 */ { false, 0x2ec2, 0x2ec2 }, /* 0x2ec3 */ { false, 0x2ec3, 0x2ec3 }, /* 0x2ec4 */ { false, 0x2ec4, 0x2ec4 }, /* 0x2ec5 */ { false, 0x2ec5, 0x2ec5 }, /* 0x2ec6 */ { false, 0x2ec6, 0x2ec6 }, /* 0x2ec7 */ { false, 0x2ec7, 0x2ec7 }, /* 0x2ec8 */ { false, 0x2ec8, 0x2ec8 }, /* 0x2ec9 */ { false, 0x2ec9, 0x2ec9 }, /* 0x2eca */ { false, 0x2eca, 0x2eca }, /* 0x2ecb */ { false, 0x2ecb, 0x2ecb }, /* 0x2ecc */ { false, 0x2ecc, 0x2ecc }, /* 0x2ecd */ { false, 0x2ecd, 0x2ecd }, /* 0x2ece */ { false, 0x2ece, 0x2ece }, /* 0x2ecf */ { false, 0x2ecf, 0x2ecf }, /* 0x2ed0 */ { false, 0x2ed0, 0x2ed0 }, /* 0x2ed1 */ { false, 0x2ed1, 0x2ed1 }, /* 0x2ed2 */ { false, 0x2ed2, 0x2ed2 }, /* 0x2ed3 */ { false, 0x2ed3, 0x2ed3 }, /* 0x2ed4 */ { false, 0x2ed4, 0x2ed4 }, /* 0x2ed5 */ { false, 0x2ed5, 0x2ed5 }, /* 0x2ed6 */ { false, 0x2ed6, 0x2ed6 }, /* 0x2ed7 */ { false, 0x2ed7, 0x2ed7 }, /* 0x2ed8 */ { false, 0x2ed8, 0x2ed8 }, /* 0x2ed9 */ { false, 0x2ed9, 0x2ed9 }, /* 0x2eda */ { false, 0x2eda, 0x2eda }, /* 0x2edb */ { false, 0x2edb, 0x2edb }, /* 0x2edc */ { false, 0x2edc, 0x2edc }, /* 0x2edd */ { false, 0x2edd, 0x2edd }, /* 0x2ede */ { false, 0x2ede, 0x2ede }, /* 0x2edf */ { false, 0x2edf, 0x2edf }, /* 0x2ee0 */ { false, 0x2ee0, 0x2ee0 }, /* 0x2ee1 */ { false, 0x2ee1, 0x2ee1 }, /* 0x2ee2 */ { false, 0x2ee2, 0x2ee2 }, /* 0x2ee3 */ { false, 0x2ee3, 0x2ee3 }, /* 0x2ee4 */ { false, 0x2ee4, 0x2ee4 }, /* 0x2ee5 */ { false, 0x2ee5, 0x2ee5 }, /* 0x2ee6 */ { false, 0x2ee6, 0x2ee6 }, /* 0x2ee7 */ { false, 0x2ee7, 0x2ee7 }, /* 0x2ee8 */ { false, 0x2ee8, 0x2ee8 }, /* 0x2ee9 */ { false, 0x2ee9, 0x2ee9 }, /* 0x2eea */ { false, 0x2eea, 0x2eea }, /* 0x2eeb */ { false, 0x2eeb, 0x2eeb }, /* 0x2eec */ { false, 0x2eec, 0x2eec }, /* 0x2eed */ { false, 0x2eed, 0x2eed }, /* 0x2eee */ { false, 0x2eee, 0x2eee }, /* 0x2eef */ { false, 0x2eef, 0x2eef }, /* 0x2ef0 */ { false, 0x2ef0, 0x2ef0 }, /* 0x2ef1 */ { false, 0x2ef1, 0x2ef1 }, /* 0x2ef2 */ { false, 0x2ef2, 0x2ef2 }, /* 0x2ef3 */ { false, 0x2ef3, 0x2ef3 }, /* 0x2ef4 */ { false, 0x2ef4, 0x2ef4 }, /* 0x2ef5 */ { false, 0x2ef5, 0x2ef5 }, /* 0x2ef6 */ { false, 0x2ef6, 0x2ef6 }, /* 0x2ef7 */ { false, 0x2ef7, 0x2ef7 }, /* 0x2ef8 */ { false, 0x2ef8, 0x2ef8 }, /* 0x2ef9 */ { false, 0x2ef9, 0x2ef9 }, /* 0x2efa */ { false, 0x2efa, 0x2efa }, /* 0x2efb */ { false, 0x2efb, 0x2efb }, /* 0x2efc */ { false, 0x2efc, 0x2efc }, /* 0x2efd */ { false, 0x2efd, 0x2efd }, /* 0x2efe */ { false, 0x2efe, 0x2efe }, /* 0x2eff */ { false, 0x2eff, 0x2eff }, /* 0x2f00 */ { false, 0x2f00, 0x2f00 }, /* 0x2f01 */ { false, 0x2f01, 0x2f01 }, /* 0x2f02 */ { false, 0x2f02, 0x2f02 }, /* 0x2f03 */ { false, 0x2f03, 0x2f03 }, /* 0x2f04 */ { false, 0x2f04, 0x2f04 }, /* 0x2f05 */ { false, 0x2f05, 0x2f05 }, /* 0x2f06 */ { false, 0x2f06, 0x2f06 }, /* 0x2f07 */ { false, 0x2f07, 0x2f07 }, /* 0x2f08 */ { false, 0x2f08, 0x2f08 }, /* 0x2f09 */ { false, 0x2f09, 0x2f09 }, /* 0x2f0a */ { false, 0x2f0a, 0x2f0a }, /* 0x2f0b */ { false, 0x2f0b, 0x2f0b }, /* 0x2f0c */ { false, 0x2f0c, 0x2f0c }, /* 0x2f0d */ { false, 0x2f0d, 0x2f0d }, /* 0x2f0e */ { false, 0x2f0e, 0x2f0e }, /* 0x2f0f */ { false, 0x2f0f, 0x2f0f }, /* 0x2f10 */ { false, 0x2f10, 0x2f10 }, /* 0x2f11 */ { false, 0x2f11, 0x2f11 }, /* 0x2f12 */ { false, 0x2f12, 0x2f12 }, /* 0x2f13 */ { false, 0x2f13, 0x2f13 }, /* 0x2f14 */ { false, 0x2f14, 0x2f14 }, /* 0x2f15 */ { false, 0x2f15, 0x2f15 }, /* 0x2f16 */ { false, 0x2f16, 0x2f16 }, /* 0x2f17 */ { false, 0x2f17, 0x2f17 }, /* 0x2f18 */ { false, 0x2f18, 0x2f18 }, /* 0x2f19 */ { false, 0x2f19, 0x2f19 }, /* 0x2f1a */ { false, 0x2f1a, 0x2f1a }, /* 0x2f1b */ { false, 0x2f1b, 0x2f1b }, /* 0x2f1c */ { false, 0x2f1c, 0x2f1c }, /* 0x2f1d */ { false, 0x2f1d, 0x2f1d }, /* 0x2f1e */ { false, 0x2f1e, 0x2f1e }, /* 0x2f1f */ { false, 0x2f1f, 0x2f1f }, /* 0x2f20 */ { false, 0x2f20, 0x2f20 }, /* 0x2f21 */ { false, 0x2f21, 0x2f21 }, /* 0x2f22 */ { false, 0x2f22, 0x2f22 }, /* 0x2f23 */ { false, 0x2f23, 0x2f23 }, /* 0x2f24 */ { false, 0x2f24, 0x2f24 }, /* 0x2f25 */ { false, 0x2f25, 0x2f25 }, /* 0x2f26 */ { false, 0x2f26, 0x2f26 }, /* 0x2f27 */ { false, 0x2f27, 0x2f27 }, /* 0x2f28 */ { false, 0x2f28, 0x2f28 }, /* 0x2f29 */ { false, 0x2f29, 0x2f29 }, /* 0x2f2a */ { false, 0x2f2a, 0x2f2a }, /* 0x2f2b */ { false, 0x2f2b, 0x2f2b }, /* 0x2f2c */ { false, 0x2f2c, 0x2f2c }, /* 0x2f2d */ { false, 0x2f2d, 0x2f2d }, /* 0x2f2e */ { false, 0x2f2e, 0x2f2e }, /* 0x2f2f */ { false, 0x2f2f, 0x2f2f }, /* 0x2f30 */ { false, 0x2f30, 0x2f30 }, /* 0x2f31 */ { false, 0x2f31, 0x2f31 }, /* 0x2f32 */ { false, 0x2f32, 0x2f32 }, /* 0x2f33 */ { false, 0x2f33, 0x2f33 }, /* 0x2f34 */ { false, 0x2f34, 0x2f34 }, /* 0x2f35 */ { false, 0x2f35, 0x2f35 }, /* 0x2f36 */ { false, 0x2f36, 0x2f36 }, /* 0x2f37 */ { false, 0x2f37, 0x2f37 }, /* 0x2f38 */ { false, 0x2f38, 0x2f38 }, /* 0x2f39 */ { false, 0x2f39, 0x2f39 }, /* 0x2f3a */ { false, 0x2f3a, 0x2f3a }, /* 0x2f3b */ { false, 0x2f3b, 0x2f3b }, /* 0x2f3c */ { false, 0x2f3c, 0x2f3c }, /* 0x2f3d */ { false, 0x2f3d, 0x2f3d }, /* 0x2f3e */ { false, 0x2f3e, 0x2f3e }, /* 0x2f3f */ { false, 0x2f3f, 0x2f3f }, /* 0x2f40 */ { false, 0x2f40, 0x2f40 }, /* 0x2f41 */ { false, 0x2f41, 0x2f41 }, /* 0x2f42 */ { false, 0x2f42, 0x2f42 }, /* 0x2f43 */ { false, 0x2f43, 0x2f43 }, /* 0x2f44 */ { false, 0x2f44, 0x2f44 }, /* 0x2f45 */ { false, 0x2f45, 0x2f45 }, /* 0x2f46 */ { false, 0x2f46, 0x2f46 }, /* 0x2f47 */ { false, 0x2f47, 0x2f47 }, /* 0x2f48 */ { false, 0x2f48, 0x2f48 }, /* 0x2f49 */ { false, 0x2f49, 0x2f49 }, /* 0x2f4a */ { false, 0x2f4a, 0x2f4a }, /* 0x2f4b */ { false, 0x2f4b, 0x2f4b }, /* 0x2f4c */ { false, 0x2f4c, 0x2f4c }, /* 0x2f4d */ { false, 0x2f4d, 0x2f4d }, /* 0x2f4e */ { false, 0x2f4e, 0x2f4e }, /* 0x2f4f */ { false, 0x2f4f, 0x2f4f }, /* 0x2f50 */ { false, 0x2f50, 0x2f50 }, /* 0x2f51 */ { false, 0x2f51, 0x2f51 }, /* 0x2f52 */ { false, 0x2f52, 0x2f52 }, /* 0x2f53 */ { false, 0x2f53, 0x2f53 }, /* 0x2f54 */ { false, 0x2f54, 0x2f54 }, /* 0x2f55 */ { false, 0x2f55, 0x2f55 }, /* 0x2f56 */ { false, 0x2f56, 0x2f56 }, /* 0x2f57 */ { false, 0x2f57, 0x2f57 }, /* 0x2f58 */ { false, 0x2f58, 0x2f58 }, /* 0x2f59 */ { false, 0x2f59, 0x2f59 }, /* 0x2f5a */ { false, 0x2f5a, 0x2f5a }, /* 0x2f5b */ { false, 0x2f5b, 0x2f5b }, /* 0x2f5c */ { false, 0x2f5c, 0x2f5c }, /* 0x2f5d */ { false, 0x2f5d, 0x2f5d }, /* 0x2f5e */ { false, 0x2f5e, 0x2f5e }, /* 0x2f5f */ { false, 0x2f5f, 0x2f5f }, /* 0x2f60 */ { false, 0x2f60, 0x2f60 }, /* 0x2f61 */ { false, 0x2f61, 0x2f61 }, /* 0x2f62 */ { false, 0x2f62, 0x2f62 }, /* 0x2f63 */ { false, 0x2f63, 0x2f63 }, /* 0x2f64 */ { false, 0x2f64, 0x2f64 }, /* 0x2f65 */ { false, 0x2f65, 0x2f65 }, /* 0x2f66 */ { false, 0x2f66, 0x2f66 }, /* 0x2f67 */ { false, 0x2f67, 0x2f67 }, /* 0x2f68 */ { false, 0x2f68, 0x2f68 }, /* 0x2f69 */ { false, 0x2f69, 0x2f69 }, /* 0x2f6a */ { false, 0x2f6a, 0x2f6a }, /* 0x2f6b */ { false, 0x2f6b, 0x2f6b }, /* 0x2f6c */ { false, 0x2f6c, 0x2f6c }, /* 0x2f6d */ { false, 0x2f6d, 0x2f6d }, /* 0x2f6e */ { false, 0x2f6e, 0x2f6e }, /* 0x2f6f */ { false, 0x2f6f, 0x2f6f }, /* 0x2f70 */ { false, 0x2f70, 0x2f70 }, /* 0x2f71 */ { false, 0x2f71, 0x2f71 }, /* 0x2f72 */ { false, 0x2f72, 0x2f72 }, /* 0x2f73 */ { false, 0x2f73, 0x2f73 }, /* 0x2f74 */ { false, 0x2f74, 0x2f74 }, /* 0x2f75 */ { false, 0x2f75, 0x2f75 }, /* 0x2f76 */ { false, 0x2f76, 0x2f76 }, /* 0x2f77 */ { false, 0x2f77, 0x2f77 }, /* 0x2f78 */ { false, 0x2f78, 0x2f78 }, /* 0x2f79 */ { false, 0x2f79, 0x2f79 }, /* 0x2f7a */ { false, 0x2f7a, 0x2f7a }, /* 0x2f7b */ { false, 0x2f7b, 0x2f7b }, /* 0x2f7c */ { false, 0x2f7c, 0x2f7c }, /* 0x2f7d */ { false, 0x2f7d, 0x2f7d }, /* 0x2f7e */ { false, 0x2f7e, 0x2f7e }, /* 0x2f7f */ { false, 0x2f7f, 0x2f7f }, /* 0x2f80 */ { false, 0x2f80, 0x2f80 }, /* 0x2f81 */ { false, 0x2f81, 0x2f81 }, /* 0x2f82 */ { false, 0x2f82, 0x2f82 }, /* 0x2f83 */ { false, 0x2f83, 0x2f83 }, /* 0x2f84 */ { false, 0x2f84, 0x2f84 }, /* 0x2f85 */ { false, 0x2f85, 0x2f85 }, /* 0x2f86 */ { false, 0x2f86, 0x2f86 }, /* 0x2f87 */ { false, 0x2f87, 0x2f87 }, /* 0x2f88 */ { false, 0x2f88, 0x2f88 }, /* 0x2f89 */ { false, 0x2f89, 0x2f89 }, /* 0x2f8a */ { false, 0x2f8a, 0x2f8a }, /* 0x2f8b */ { false, 0x2f8b, 0x2f8b }, /* 0x2f8c */ { false, 0x2f8c, 0x2f8c }, /* 0x2f8d */ { false, 0x2f8d, 0x2f8d }, /* 0x2f8e */ { false, 0x2f8e, 0x2f8e }, /* 0x2f8f */ { false, 0x2f8f, 0x2f8f }, /* 0x2f90 */ { false, 0x2f90, 0x2f90 }, /* 0x2f91 */ { false, 0x2f91, 0x2f91 }, /* 0x2f92 */ { false, 0x2f92, 0x2f92 }, /* 0x2f93 */ { false, 0x2f93, 0x2f93 }, /* 0x2f94 */ { false, 0x2f94, 0x2f94 }, /* 0x2f95 */ { false, 0x2f95, 0x2f95 }, /* 0x2f96 */ { false, 0x2f96, 0x2f96 }, /* 0x2f97 */ { false, 0x2f97, 0x2f97 }, /* 0x2f98 */ { false, 0x2f98, 0x2f98 }, /* 0x2f99 */ { false, 0x2f99, 0x2f99 }, /* 0x2f9a */ { false, 0x2f9a, 0x2f9a }, /* 0x2f9b */ { false, 0x2f9b, 0x2f9b }, /* 0x2f9c */ { false, 0x2f9c, 0x2f9c }, /* 0x2f9d */ { false, 0x2f9d, 0x2f9d }, /* 0x2f9e */ { false, 0x2f9e, 0x2f9e }, /* 0x2f9f */ { false, 0x2f9f, 0x2f9f }, /* 0x2fa0 */ { false, 0x2fa0, 0x2fa0 }, /* 0x2fa1 */ { false, 0x2fa1, 0x2fa1 }, /* 0x2fa2 */ { false, 0x2fa2, 0x2fa2 }, /* 0x2fa3 */ { false, 0x2fa3, 0x2fa3 }, /* 0x2fa4 */ { false, 0x2fa4, 0x2fa4 }, /* 0x2fa5 */ { false, 0x2fa5, 0x2fa5 }, /* 0x2fa6 */ { false, 0x2fa6, 0x2fa6 }, /* 0x2fa7 */ { false, 0x2fa7, 0x2fa7 }, /* 0x2fa8 */ { false, 0x2fa8, 0x2fa8 }, /* 0x2fa9 */ { false, 0x2fa9, 0x2fa9 }, /* 0x2faa */ { false, 0x2faa, 0x2faa }, /* 0x2fab */ { false, 0x2fab, 0x2fab }, /* 0x2fac */ { false, 0x2fac, 0x2fac }, /* 0x2fad */ { false, 0x2fad, 0x2fad }, /* 0x2fae */ { false, 0x2fae, 0x2fae }, /* 0x2faf */ { false, 0x2faf, 0x2faf }, /* 0x2fb0 */ { false, 0x2fb0, 0x2fb0 }, /* 0x2fb1 */ { false, 0x2fb1, 0x2fb1 }, /* 0x2fb2 */ { false, 0x2fb2, 0x2fb2 }, /* 0x2fb3 */ { false, 0x2fb3, 0x2fb3 }, /* 0x2fb4 */ { false, 0x2fb4, 0x2fb4 }, /* 0x2fb5 */ { false, 0x2fb5, 0x2fb5 }, /* 0x2fb6 */ { false, 0x2fb6, 0x2fb6 }, /* 0x2fb7 */ { false, 0x2fb7, 0x2fb7 }, /* 0x2fb8 */ { false, 0x2fb8, 0x2fb8 }, /* 0x2fb9 */ { false, 0x2fb9, 0x2fb9 }, /* 0x2fba */ { false, 0x2fba, 0x2fba }, /* 0x2fbb */ { false, 0x2fbb, 0x2fbb }, /* 0x2fbc */ { false, 0x2fbc, 0x2fbc }, /* 0x2fbd */ { false, 0x2fbd, 0x2fbd }, /* 0x2fbe */ { false, 0x2fbe, 0x2fbe }, /* 0x2fbf */ { false, 0x2fbf, 0x2fbf }, /* 0x2fc0 */ { false, 0x2fc0, 0x2fc0 }, /* 0x2fc1 */ { false, 0x2fc1, 0x2fc1 }, /* 0x2fc2 */ { false, 0x2fc2, 0x2fc2 }, /* 0x2fc3 */ { false, 0x2fc3, 0x2fc3 }, /* 0x2fc4 */ { false, 0x2fc4, 0x2fc4 }, /* 0x2fc5 */ { false, 0x2fc5, 0x2fc5 }, /* 0x2fc6 */ { false, 0x2fc6, 0x2fc6 }, /* 0x2fc7 */ { false, 0x2fc7, 0x2fc7 }, /* 0x2fc8 */ { false, 0x2fc8, 0x2fc8 }, /* 0x2fc9 */ { false, 0x2fc9, 0x2fc9 }, /* 0x2fca */ { false, 0x2fca, 0x2fca }, /* 0x2fcb */ { false, 0x2fcb, 0x2fcb }, /* 0x2fcc */ { false, 0x2fcc, 0x2fcc }, /* 0x2fcd */ { false, 0x2fcd, 0x2fcd }, /* 0x2fce */ { false, 0x2fce, 0x2fce }, /* 0x2fcf */ { false, 0x2fcf, 0x2fcf }, /* 0x2fd0 */ { false, 0x2fd0, 0x2fd0 }, /* 0x2fd1 */ { false, 0x2fd1, 0x2fd1 }, /* 0x2fd2 */ { false, 0x2fd2, 0x2fd2 }, /* 0x2fd3 */ { false, 0x2fd3, 0x2fd3 }, /* 0x2fd4 */ { false, 0x2fd4, 0x2fd4 }, /* 0x2fd5 */ { false, 0x2fd5, 0x2fd5 }, /* 0x2fd6 */ { false, 0x2fd6, 0x2fd6 }, /* 0x2fd7 */ { false, 0x2fd7, 0x2fd7 }, /* 0x2fd8 */ { false, 0x2fd8, 0x2fd8 }, /* 0x2fd9 */ { false, 0x2fd9, 0x2fd9 }, /* 0x2fda */ { false, 0x2fda, 0x2fda }, /* 0x2fdb */ { false, 0x2fdb, 0x2fdb }, /* 0x2fdc */ { false, 0x2fdc, 0x2fdc }, /* 0x2fdd */ { false, 0x2fdd, 0x2fdd }, /* 0x2fde */ { false, 0x2fde, 0x2fde }, /* 0x2fdf */ { false, 0x2fdf, 0x2fdf }, /* 0x2fe0 */ { false, 0x2fe0, 0x2fe0 }, /* 0x2fe1 */ { false, 0x2fe1, 0x2fe1 }, /* 0x2fe2 */ { false, 0x2fe2, 0x2fe2 }, /* 0x2fe3 */ { false, 0x2fe3, 0x2fe3 }, /* 0x2fe4 */ { false, 0x2fe4, 0x2fe4 }, /* 0x2fe5 */ { false, 0x2fe5, 0x2fe5 }, /* 0x2fe6 */ { false, 0x2fe6, 0x2fe6 }, /* 0x2fe7 */ { false, 0x2fe7, 0x2fe7 }, /* 0x2fe8 */ { false, 0x2fe8, 0x2fe8 }, /* 0x2fe9 */ { false, 0x2fe9, 0x2fe9 }, /* 0x2fea */ { false, 0x2fea, 0x2fea }, /* 0x2feb */ { false, 0x2feb, 0x2feb }, /* 0x2fec */ { false, 0x2fec, 0x2fec }, /* 0x2fed */ { false, 0x2fed, 0x2fed }, /* 0x2fee */ { false, 0x2fee, 0x2fee }, /* 0x2fef */ { false, 0x2fef, 0x2fef }, /* 0x2ff0 */ { false, 0x2ff0, 0x2ff0 }, /* 0x2ff1 */ { false, 0x2ff1, 0x2ff1 }, /* 0x2ff2 */ { false, 0x2ff2, 0x2ff2 }, /* 0x2ff3 */ { false, 0x2ff3, 0x2ff3 }, /* 0x2ff4 */ { false, 0x2ff4, 0x2ff4 }, /* 0x2ff5 */ { false, 0x2ff5, 0x2ff5 }, /* 0x2ff6 */ { false, 0x2ff6, 0x2ff6 }, /* 0x2ff7 */ { false, 0x2ff7, 0x2ff7 }, /* 0x2ff8 */ { false, 0x2ff8, 0x2ff8 }, /* 0x2ff9 */ { false, 0x2ff9, 0x2ff9 }, /* 0x2ffa */ { false, 0x2ffa, 0x2ffa }, /* 0x2ffb */ { false, 0x2ffb, 0x2ffb }, /* 0x2ffc */ { false, 0x2ffc, 0x2ffc }, /* 0x2ffd */ { false, 0x2ffd, 0x2ffd }, /* 0x2ffe */ { false, 0x2ffe, 0x2ffe }, /* 0x2fff */ { false, 0x2fff, 0x2fff }, /* 0x3000 */ { false, 0x3000, 0x3000 }, /* 0x3001 */ { false, 0x3001, 0x3001 }, /* 0x3002 */ { false, 0x3002, 0x3002 }, /* 0x3003 */ { false, 0x3003, 0x3003 }, /* 0x3004 */ { false, 0x3004, 0x3004 }, /* 0x3005 */ { true, 0x3005, 0x3005 }, /* 0x3006 */ { true, 0x3006, 0x3006 }, /* 0x3007 */ { false, 0x3007, 0x3007 }, /* 0x3008 */ { false, 0x3008, 0x3008 }, /* 0x3009 */ { false, 0x3009, 0x3009 }, /* 0x300a */ { false, 0x300a, 0x300a }, /* 0x300b */ { false, 0x300b, 0x300b }, /* 0x300c */ { false, 0x300c, 0x300c }, /* 0x300d */ { false, 0x300d, 0x300d }, /* 0x300e */ { false, 0x300e, 0x300e }, /* 0x300f */ { false, 0x300f, 0x300f }, /* 0x3010 */ { false, 0x3010, 0x3010 }, /* 0x3011 */ { false, 0x3011, 0x3011 }, /* 0x3012 */ { false, 0x3012, 0x3012 }, /* 0x3013 */ { false, 0x3013, 0x3013 }, /* 0x3014 */ { false, 0x3014, 0x3014 }, /* 0x3015 */ { false, 0x3015, 0x3015 }, /* 0x3016 */ { false, 0x3016, 0x3016 }, /* 0x3017 */ { false, 0x3017, 0x3017 }, /* 0x3018 */ { false, 0x3018, 0x3018 }, /* 0x3019 */ { false, 0x3019, 0x3019 }, /* 0x301a */ { false, 0x301a, 0x301a }, /* 0x301b */ { false, 0x301b, 0x301b }, /* 0x301c */ { false, 0x301c, 0x301c }, /* 0x301d */ { false, 0x301d, 0x301d }, /* 0x301e */ { false, 0x301e, 0x301e }, /* 0x301f */ { false, 0x301f, 0x301f }, /* 0x3020 */ { false, 0x3020, 0x3020 }, /* 0x3021 */ { false, 0x3021, 0x3021 }, /* 0x3022 */ { false, 0x3022, 0x3022 }, /* 0x3023 */ { false, 0x3023, 0x3023 }, /* 0x3024 */ { false, 0x3024, 0x3024 }, /* 0x3025 */ { false, 0x3025, 0x3025 }, /* 0x3026 */ { false, 0x3026, 0x3026 }, /* 0x3027 */ { false, 0x3027, 0x3027 }, /* 0x3028 */ { false, 0x3028, 0x3028 }, /* 0x3029 */ { false, 0x3029, 0x3029 }, /* 0x302a */ { true, 0x302a, 0x302a }, /* 0x302b */ { true, 0x302b, 0x302b }, /* 0x302c */ { true, 0x302c, 0x302c }, /* 0x302d */ { true, 0x302d, 0x302d }, /* 0x302e */ { true, 0x302e, 0x302e }, /* 0x302f */ { true, 0x302f, 0x302f }, /* 0x3030 */ { false, 0x3030, 0x3030 }, /* 0x3031 */ { true, 0x3031, 0x3031 }, /* 0x3032 */ { true, 0x3032, 0x3032 }, /* 0x3033 */ { true, 0x3033, 0x3033 }, /* 0x3034 */ { true, 0x3034, 0x3034 }, /* 0x3035 */ { true, 0x3035, 0x3035 }, /* 0x3036 */ { false, 0x3036, 0x3036 }, /* 0x3037 */ { false, 0x3037, 0x3037 }, /* 0x3038 */ { false, 0x3038, 0x3038 }, /* 0x3039 */ { false, 0x3039, 0x3039 }, /* 0x303a */ { false, 0x303a, 0x303a }, /* 0x303b */ { true, 0x303b, 0x303b }, /* 0x303c */ { true, 0x303c, 0x303c }, /* 0x303d */ { false, 0x303d, 0x303d }, /* 0x303e */ { false, 0x303e, 0x303e }, /* 0x303f */ { false, 0x303f, 0x303f }, /* 0x3040 */ { false, 0x3040, 0x3040 }, /* 0x3041 */ { true, 0x3041, 0x3041 }, /* 0x3042 */ { true, 0x3042, 0x3042 }, /* 0x3043 */ { true, 0x3043, 0x3043 }, /* 0x3044 */ { true, 0x3044, 0x3044 }, /* 0x3045 */ { true, 0x3045, 0x3045 }, /* 0x3046 */ { true, 0x3046, 0x3046 }, /* 0x3047 */ { true, 0x3047, 0x3047 }, /* 0x3048 */ { true, 0x3048, 0x3048 }, /* 0x3049 */ { true, 0x3049, 0x3049 }, /* 0x304a */ { true, 0x304a, 0x304a }, /* 0x304b */ { true, 0x304b, 0x304b }, /* 0x304c */ { true, 0x304c, 0x304c }, /* 0x304d */ { true, 0x304d, 0x304d }, /* 0x304e */ { true, 0x304e, 0x304e }, /* 0x304f */ { true, 0x304f, 0x304f }, /* 0x3050 */ { true, 0x3050, 0x3050 }, /* 0x3051 */ { true, 0x3051, 0x3051 }, /* 0x3052 */ { true, 0x3052, 0x3052 }, /* 0x3053 */ { true, 0x3053, 0x3053 }, /* 0x3054 */ { true, 0x3054, 0x3054 }, /* 0x3055 */ { true, 0x3055, 0x3055 }, /* 0x3056 */ { true, 0x3056, 0x3056 }, /* 0x3057 */ { true, 0x3057, 0x3057 }, /* 0x3058 */ { true, 0x3058, 0x3058 }, /* 0x3059 */ { true, 0x3059, 0x3059 }, /* 0x305a */ { true, 0x305a, 0x305a }, /* 0x305b */ { true, 0x305b, 0x305b }, /* 0x305c */ { true, 0x305c, 0x305c }, /* 0x305d */ { true, 0x305d, 0x305d }, /* 0x305e */ { true, 0x305e, 0x305e }, /* 0x305f */ { true, 0x305f, 0x305f }, /* 0x3060 */ { true, 0x3060, 0x3060 }, /* 0x3061 */ { true, 0x3061, 0x3061 }, /* 0x3062 */ { true, 0x3062, 0x3062 }, /* 0x3063 */ { true, 0x3063, 0x3063 }, /* 0x3064 */ { true, 0x3064, 0x3064 }, /* 0x3065 */ { true, 0x3065, 0x3065 }, /* 0x3066 */ { true, 0x3066, 0x3066 }, /* 0x3067 */ { true, 0x3067, 0x3067 }, /* 0x3068 */ { true, 0x3068, 0x3068 }, /* 0x3069 */ { true, 0x3069, 0x3069 }, /* 0x306a */ { true, 0x306a, 0x306a }, /* 0x306b */ { true, 0x306b, 0x306b }, /* 0x306c */ { true, 0x306c, 0x306c }, /* 0x306d */ { true, 0x306d, 0x306d }, /* 0x306e */ { true, 0x306e, 0x306e }, /* 0x306f */ { true, 0x306f, 0x306f }, /* 0x3070 */ { true, 0x3070, 0x3070 }, /* 0x3071 */ { true, 0x3071, 0x3071 }, /* 0x3072 */ { true, 0x3072, 0x3072 }, /* 0x3073 */ { true, 0x3073, 0x3073 }, /* 0x3074 */ { true, 0x3074, 0x3074 }, /* 0x3075 */ { true, 0x3075, 0x3075 }, /* 0x3076 */ { true, 0x3076, 0x3076 }, /* 0x3077 */ { true, 0x3077, 0x3077 }, /* 0x3078 */ { true, 0x3078, 0x3078 }, /* 0x3079 */ { true, 0x3079, 0x3079 }, /* 0x307a */ { true, 0x307a, 0x307a }, /* 0x307b */ { true, 0x307b, 0x307b }, /* 0x307c */ { true, 0x307c, 0x307c }, /* 0x307d */ { true, 0x307d, 0x307d }, /* 0x307e */ { true, 0x307e, 0x307e }, /* 0x307f */ { true, 0x307f, 0x307f }, /* 0x3080 */ { true, 0x3080, 0x3080 }, /* 0x3081 */ { true, 0x3081, 0x3081 }, /* 0x3082 */ { true, 0x3082, 0x3082 }, /* 0x3083 */ { true, 0x3083, 0x3083 }, /* 0x3084 */ { true, 0x3084, 0x3084 }, /* 0x3085 */ { true, 0x3085, 0x3085 }, /* 0x3086 */ { true, 0x3086, 0x3086 }, /* 0x3087 */ { true, 0x3087, 0x3087 }, /* 0x3088 */ { true, 0x3088, 0x3088 }, /* 0x3089 */ { true, 0x3089, 0x3089 }, /* 0x308a */ { true, 0x308a, 0x308a }, /* 0x308b */ { true, 0x308b, 0x308b }, /* 0x308c */ { true, 0x308c, 0x308c }, /* 0x308d */ { true, 0x308d, 0x308d }, /* 0x308e */ { true, 0x308e, 0x308e }, /* 0x308f */ { true, 0x308f, 0x308f }, /* 0x3090 */ { true, 0x3090, 0x3090 }, /* 0x3091 */ { true, 0x3091, 0x3091 }, /* 0x3092 */ { true, 0x3092, 0x3092 }, /* 0x3093 */ { true, 0x3093, 0x3093 }, /* 0x3094 */ { true, 0x3094, 0x3094 }, /* 0x3095 */ { true, 0x3095, 0x3095 }, /* 0x3096 */ { true, 0x3096, 0x3096 }, /* 0x3097 */ { false, 0x3097, 0x3097 }, /* 0x3098 */ { false, 0x3098, 0x3098 }, /* 0x3099 */ { true, 0x3099, 0x3099 }, /* 0x309a */ { true, 0x309a, 0x309a }, /* 0x309b */ { false, 0x309b, 0x309b }, /* 0x309c */ { false, 0x309c, 0x309c }, /* 0x309d */ { true, 0x309d, 0x309d }, /* 0x309e */ { true, 0x309e, 0x309e }, /* 0x309f */ { true, 0x309f, 0x309f }, /* 0x30a0 */ { false, 0x30a0, 0x30a0 }, /* 0x30a1 */ { true, 0x30a1, 0x30a1 }, /* 0x30a2 */ { true, 0x30a2, 0x30a2 }, /* 0x30a3 */ { true, 0x30a3, 0x30a3 }, /* 0x30a4 */ { true, 0x30a4, 0x30a4 }, /* 0x30a5 */ { true, 0x30a5, 0x30a5 }, /* 0x30a6 */ { true, 0x30a6, 0x30a6 }, /* 0x30a7 */ { true, 0x30a7, 0x30a7 }, /* 0x30a8 */ { true, 0x30a8, 0x30a8 }, /* 0x30a9 */ { true, 0x30a9, 0x30a9 }, /* 0x30aa */ { true, 0x30aa, 0x30aa }, /* 0x30ab */ { true, 0x30ab, 0x30ab }, /* 0x30ac */ { true, 0x30ac, 0x30ac }, /* 0x30ad */ { true, 0x30ad, 0x30ad }, /* 0x30ae */ { true, 0x30ae, 0x30ae }, /* 0x30af */ { true, 0x30af, 0x30af }, /* 0x30b0 */ { true, 0x30b0, 0x30b0 }, /* 0x30b1 */ { true, 0x30b1, 0x30b1 }, /* 0x30b2 */ { true, 0x30b2, 0x30b2 }, /* 0x30b3 */ { true, 0x30b3, 0x30b3 }, /* 0x30b4 */ { true, 0x30b4, 0x30b4 }, /* 0x30b5 */ { true, 0x30b5, 0x30b5 }, /* 0x30b6 */ { true, 0x30b6, 0x30b6 }, /* 0x30b7 */ { true, 0x30b7, 0x30b7 }, /* 0x30b8 */ { true, 0x30b8, 0x30b8 }, /* 0x30b9 */ { true, 0x30b9, 0x30b9 }, /* 0x30ba */ { true, 0x30ba, 0x30ba }, /* 0x30bb */ { true, 0x30bb, 0x30bb }, /* 0x30bc */ { true, 0x30bc, 0x30bc }, /* 0x30bd */ { true, 0x30bd, 0x30bd }, /* 0x30be */ { true, 0x30be, 0x30be }, /* 0x30bf */ { true, 0x30bf, 0x30bf }, /* 0x30c0 */ { true, 0x30c0, 0x30c0 }, /* 0x30c1 */ { true, 0x30c1, 0x30c1 }, /* 0x30c2 */ { true, 0x30c2, 0x30c2 }, /* 0x30c3 */ { true, 0x30c3, 0x30c3 }, /* 0x30c4 */ { true, 0x30c4, 0x30c4 }, /* 0x30c5 */ { true, 0x30c5, 0x30c5 }, /* 0x30c6 */ { true, 0x30c6, 0x30c6 }, /* 0x30c7 */ { true, 0x30c7, 0x30c7 }, /* 0x30c8 */ { true, 0x30c8, 0x30c8 }, /* 0x30c9 */ { true, 0x30c9, 0x30c9 }, /* 0x30ca */ { true, 0x30ca, 0x30ca }, /* 0x30cb */ { true, 0x30cb, 0x30cb }, /* 0x30cc */ { true, 0x30cc, 0x30cc }, /* 0x30cd */ { true, 0x30cd, 0x30cd }, /* 0x30ce */ { true, 0x30ce, 0x30ce }, /* 0x30cf */ { true, 0x30cf, 0x30cf }, /* 0x30d0 */ { true, 0x30d0, 0x30d0 }, /* 0x30d1 */ { true, 0x30d1, 0x30d1 }, /* 0x30d2 */ { true, 0x30d2, 0x30d2 }, /* 0x30d3 */ { true, 0x30d3, 0x30d3 }, /* 0x30d4 */ { true, 0x30d4, 0x30d4 }, /* 0x30d5 */ { true, 0x30d5, 0x30d5 }, /* 0x30d6 */ { true, 0x30d6, 0x30d6 }, /* 0x30d7 */ { true, 0x30d7, 0x30d7 }, /* 0x30d8 */ { true, 0x30d8, 0x30d8 }, /* 0x30d9 */ { true, 0x30d9, 0x30d9 }, /* 0x30da */ { true, 0x30da, 0x30da }, /* 0x30db */ { true, 0x30db, 0x30db }, /* 0x30dc */ { true, 0x30dc, 0x30dc }, /* 0x30dd */ { true, 0x30dd, 0x30dd }, /* 0x30de */ { true, 0x30de, 0x30de }, /* 0x30df */ { true, 0x30df, 0x30df }, /* 0x30e0 */ { true, 0x30e0, 0x30e0 }, /* 0x30e1 */ { true, 0x30e1, 0x30e1 }, /* 0x30e2 */ { true, 0x30e2, 0x30e2 }, /* 0x30e3 */ { true, 0x30e3, 0x30e3 }, /* 0x30e4 */ { true, 0x30e4, 0x30e4 }, /* 0x30e5 */ { true, 0x30e5, 0x30e5 }, /* 0x30e6 */ { true, 0x30e6, 0x30e6 }, /* 0x30e7 */ { true, 0x30e7, 0x30e7 }, /* 0x30e8 */ { true, 0x30e8, 0x30e8 }, /* 0x30e9 */ { true, 0x30e9, 0x30e9 }, /* 0x30ea */ { true, 0x30ea, 0x30ea }, /* 0x30eb */ { true, 0x30eb, 0x30eb }, /* 0x30ec */ { true, 0x30ec, 0x30ec }, /* 0x30ed */ { true, 0x30ed, 0x30ed }, /* 0x30ee */ { true, 0x30ee, 0x30ee }, /* 0x30ef */ { true, 0x30ef, 0x30ef }, /* 0x30f0 */ { true, 0x30f0, 0x30f0 }, /* 0x30f1 */ { true, 0x30f1, 0x30f1 }, /* 0x30f2 */ { true, 0x30f2, 0x30f2 }, /* 0x30f3 */ { true, 0x30f3, 0x30f3 }, /* 0x30f4 */ { true, 0x30f4, 0x30f4 }, /* 0x30f5 */ { true, 0x30f5, 0x30f5 }, /* 0x30f6 */ { true, 0x30f6, 0x30f6 }, /* 0x30f7 */ { true, 0x30f7, 0x30f7 }, /* 0x30f8 */ { true, 0x30f8, 0x30f8 }, /* 0x30f9 */ { true, 0x30f9, 0x30f9 }, /* 0x30fa */ { true, 0x30fa, 0x30fa }, /* 0x30fb */ { false, 0x30fb, 0x30fb }, /* 0x30fc */ { true, 0x30fc, 0x30fc }, /* 0x30fd */ { true, 0x30fd, 0x30fd }, /* 0x30fe */ { true, 0x30fe, 0x30fe }, /* 0x30ff */ { true, 0x30ff, 0x30ff }, /* 0x3100 */ { false, 0x3100, 0x3100 }, /* 0x3101 */ { false, 0x3101, 0x3101 }, /* 0x3102 */ { false, 0x3102, 0x3102 }, /* 0x3103 */ { false, 0x3103, 0x3103 }, /* 0x3104 */ { false, 0x3104, 0x3104 }, /* 0x3105 */ { true, 0x3105, 0x3105 }, /* 0x3106 */ { true, 0x3106, 0x3106 }, /* 0x3107 */ { true, 0x3107, 0x3107 }, /* 0x3108 */ { true, 0x3108, 0x3108 }, /* 0x3109 */ { true, 0x3109, 0x3109 }, /* 0x310a */ { true, 0x310a, 0x310a }, /* 0x310b */ { true, 0x310b, 0x310b }, /* 0x310c */ { true, 0x310c, 0x310c }, /* 0x310d */ { true, 0x310d, 0x310d }, /* 0x310e */ { true, 0x310e, 0x310e }, /* 0x310f */ { true, 0x310f, 0x310f }, /* 0x3110 */ { true, 0x3110, 0x3110 }, /* 0x3111 */ { true, 0x3111, 0x3111 }, /* 0x3112 */ { true, 0x3112, 0x3112 }, /* 0x3113 */ { true, 0x3113, 0x3113 }, /* 0x3114 */ { true, 0x3114, 0x3114 }, /* 0x3115 */ { true, 0x3115, 0x3115 }, /* 0x3116 */ { true, 0x3116, 0x3116 }, /* 0x3117 */ { true, 0x3117, 0x3117 }, /* 0x3118 */ { true, 0x3118, 0x3118 }, /* 0x3119 */ { true, 0x3119, 0x3119 }, /* 0x311a */ { true, 0x311a, 0x311a }, /* 0x311b */ { true, 0x311b, 0x311b }, /* 0x311c */ { true, 0x311c, 0x311c }, /* 0x311d */ { true, 0x311d, 0x311d }, /* 0x311e */ { true, 0x311e, 0x311e }, /* 0x311f */ { true, 0x311f, 0x311f }, /* 0x3120 */ { true, 0x3120, 0x3120 }, /* 0x3121 */ { true, 0x3121, 0x3121 }, /* 0x3122 */ { true, 0x3122, 0x3122 }, /* 0x3123 */ { true, 0x3123, 0x3123 }, /* 0x3124 */ { true, 0x3124, 0x3124 }, /* 0x3125 */ { true, 0x3125, 0x3125 }, /* 0x3126 */ { true, 0x3126, 0x3126 }, /* 0x3127 */ { true, 0x3127, 0x3127 }, /* 0x3128 */ { true, 0x3128, 0x3128 }, /* 0x3129 */ { true, 0x3129, 0x3129 }, /* 0x312a */ { true, 0x312a, 0x312a }, /* 0x312b */ { true, 0x312b, 0x312b }, /* 0x312c */ { true, 0x312c, 0x312c }, /* 0x312d */ { false, 0x312d, 0x312d }, /* 0x312e */ { false, 0x312e, 0x312e }, /* 0x312f */ { false, 0x312f, 0x312f }, /* 0x3130 */ { false, 0x3130, 0x3130 }, /* 0x3131 */ { true, 0x3131, 0x3131 }, /* 0x3132 */ { true, 0x3132, 0x3132 }, /* 0x3133 */ { true, 0x3133, 0x3133 }, /* 0x3134 */ { true, 0x3134, 0x3134 }, /* 0x3135 */ { true, 0x3135, 0x3135 }, /* 0x3136 */ { true, 0x3136, 0x3136 }, /* 0x3137 */ { true, 0x3137, 0x3137 }, /* 0x3138 */ { true, 0x3138, 0x3138 }, /* 0x3139 */ { true, 0x3139, 0x3139 }, /* 0x313a */ { true, 0x313a, 0x313a }, /* 0x313b */ { true, 0x313b, 0x313b }, /* 0x313c */ { true, 0x313c, 0x313c }, /* 0x313d */ { true, 0x313d, 0x313d }, /* 0x313e */ { true, 0x313e, 0x313e }, /* 0x313f */ { true, 0x313f, 0x313f }, /* 0x3140 */ { true, 0x3140, 0x3140 }, /* 0x3141 */ { true, 0x3141, 0x3141 }, /* 0x3142 */ { true, 0x3142, 0x3142 }, /* 0x3143 */ { true, 0x3143, 0x3143 }, /* 0x3144 */ { true, 0x3144, 0x3144 }, /* 0x3145 */ { true, 0x3145, 0x3145 }, /* 0x3146 */ { true, 0x3146, 0x3146 }, /* 0x3147 */ { true, 0x3147, 0x3147 }, /* 0x3148 */ { true, 0x3148, 0x3148 }, /* 0x3149 */ { true, 0x3149, 0x3149 }, /* 0x314a */ { true, 0x314a, 0x314a }, /* 0x314b */ { true, 0x314b, 0x314b }, /* 0x314c */ { true, 0x314c, 0x314c }, /* 0x314d */ { true, 0x314d, 0x314d }, /* 0x314e */ { true, 0x314e, 0x314e }, /* 0x314f */ { true, 0x314f, 0x314f }, /* 0x3150 */ { true, 0x3150, 0x3150 }, /* 0x3151 */ { true, 0x3151, 0x3151 }, /* 0x3152 */ { true, 0x3152, 0x3152 }, /* 0x3153 */ { true, 0x3153, 0x3153 }, /* 0x3154 */ { true, 0x3154, 0x3154 }, /* 0x3155 */ { true, 0x3155, 0x3155 }, /* 0x3156 */ { true, 0x3156, 0x3156 }, /* 0x3157 */ { true, 0x3157, 0x3157 }, /* 0x3158 */ { true, 0x3158, 0x3158 }, /* 0x3159 */ { true, 0x3159, 0x3159 }, /* 0x315a */ { true, 0x315a, 0x315a }, /* 0x315b */ { true, 0x315b, 0x315b }, /* 0x315c */ { true, 0x315c, 0x315c }, /* 0x315d */ { true, 0x315d, 0x315d }, /* 0x315e */ { true, 0x315e, 0x315e }, /* 0x315f */ { true, 0x315f, 0x315f }, /* 0x3160 */ { true, 0x3160, 0x3160 }, /* 0x3161 */ { true, 0x3161, 0x3161 }, /* 0x3162 */ { true, 0x3162, 0x3162 }, /* 0x3163 */ { true, 0x3163, 0x3163 }, /* 0x3164 */ { true, 0x3164, 0x3164 }, /* 0x3165 */ { true, 0x3165, 0x3165 }, /* 0x3166 */ { true, 0x3166, 0x3166 }, /* 0x3167 */ { true, 0x3167, 0x3167 }, /* 0x3168 */ { true, 0x3168, 0x3168 }, /* 0x3169 */ { true, 0x3169, 0x3169 }, /* 0x316a */ { true, 0x316a, 0x316a }, /* 0x316b */ { true, 0x316b, 0x316b }, /* 0x316c */ { true, 0x316c, 0x316c }, /* 0x316d */ { true, 0x316d, 0x316d }, /* 0x316e */ { true, 0x316e, 0x316e }, /* 0x316f */ { true, 0x316f, 0x316f }, /* 0x3170 */ { true, 0x3170, 0x3170 }, /* 0x3171 */ { true, 0x3171, 0x3171 }, /* 0x3172 */ { true, 0x3172, 0x3172 }, /* 0x3173 */ { true, 0x3173, 0x3173 }, /* 0x3174 */ { true, 0x3174, 0x3174 }, /* 0x3175 */ { true, 0x3175, 0x3175 }, /* 0x3176 */ { true, 0x3176, 0x3176 }, /* 0x3177 */ { true, 0x3177, 0x3177 }, /* 0x3178 */ { true, 0x3178, 0x3178 }, /* 0x3179 */ { true, 0x3179, 0x3179 }, /* 0x317a */ { true, 0x317a, 0x317a }, /* 0x317b */ { true, 0x317b, 0x317b }, /* 0x317c */ { true, 0x317c, 0x317c }, /* 0x317d */ { true, 0x317d, 0x317d }, /* 0x317e */ { true, 0x317e, 0x317e }, /* 0x317f */ { true, 0x317f, 0x317f }, /* 0x3180 */ { true, 0x3180, 0x3180 }, /* 0x3181 */ { true, 0x3181, 0x3181 }, /* 0x3182 */ { true, 0x3182, 0x3182 }, /* 0x3183 */ { true, 0x3183, 0x3183 }, /* 0x3184 */ { true, 0x3184, 0x3184 }, /* 0x3185 */ { true, 0x3185, 0x3185 }, /* 0x3186 */ { true, 0x3186, 0x3186 }, /* 0x3187 */ { true, 0x3187, 0x3187 }, /* 0x3188 */ { true, 0x3188, 0x3188 }, /* 0x3189 */ { true, 0x3189, 0x3189 }, /* 0x318a */ { true, 0x318a, 0x318a }, /* 0x318b */ { true, 0x318b, 0x318b }, /* 0x318c */ { true, 0x318c, 0x318c }, /* 0x318d */ { true, 0x318d, 0x318d }, /* 0x318e */ { true, 0x318e, 0x318e }, /* 0x318f */ { false, 0x318f, 0x318f }, /* 0x3190 */ { false, 0x3190, 0x3190 }, /* 0x3191 */ { false, 0x3191, 0x3191 }, /* 0x3192 */ { false, 0x3192, 0x3192 }, /* 0x3193 */ { false, 0x3193, 0x3193 }, /* 0x3194 */ { false, 0x3194, 0x3194 }, /* 0x3195 */ { false, 0x3195, 0x3195 }, /* 0x3196 */ { false, 0x3196, 0x3196 }, /* 0x3197 */ { false, 0x3197, 0x3197 }, /* 0x3198 */ { false, 0x3198, 0x3198 }, /* 0x3199 */ { false, 0x3199, 0x3199 }, /* 0x319a */ { false, 0x319a, 0x319a }, /* 0x319b */ { false, 0x319b, 0x319b }, /* 0x319c */ { false, 0x319c, 0x319c }, /* 0x319d */ { false, 0x319d, 0x319d }, /* 0x319e */ { false, 0x319e, 0x319e }, /* 0x319f */ { false, 0x319f, 0x319f }, /* 0x31a0 */ { true, 0x31a0, 0x31a0 }, /* 0x31a1 */ { true, 0x31a1, 0x31a1 }, /* 0x31a2 */ { true, 0x31a2, 0x31a2 }, /* 0x31a3 */ { true, 0x31a3, 0x31a3 }, /* 0x31a4 */ { true, 0x31a4, 0x31a4 }, /* 0x31a5 */ { true, 0x31a5, 0x31a5 }, /* 0x31a6 */ { true, 0x31a6, 0x31a6 }, /* 0x31a7 */ { true, 0x31a7, 0x31a7 }, /* 0x31a8 */ { true, 0x31a8, 0x31a8 }, /* 0x31a9 */ { true, 0x31a9, 0x31a9 }, /* 0x31aa */ { true, 0x31aa, 0x31aa }, /* 0x31ab */ { true, 0x31ab, 0x31ab }, /* 0x31ac */ { true, 0x31ac, 0x31ac }, /* 0x31ad */ { true, 0x31ad, 0x31ad }, /* 0x31ae */ { true, 0x31ae, 0x31ae }, /* 0x31af */ { true, 0x31af, 0x31af }, /* 0x31b0 */ { true, 0x31b0, 0x31b0 }, /* 0x31b1 */ { true, 0x31b1, 0x31b1 }, /* 0x31b2 */ { true, 0x31b2, 0x31b2 }, /* 0x31b3 */ { true, 0x31b3, 0x31b3 }, /* 0x31b4 */ { true, 0x31b4, 0x31b4 }, /* 0x31b5 */ { true, 0x31b5, 0x31b5 }, /* 0x31b6 */ { true, 0x31b6, 0x31b6 }, /* 0x31b7 */ { true, 0x31b7, 0x31b7 }, /* 0x31b8 */ { false, 0x31b8, 0x31b8 }, /* 0x31b9 */ { false, 0x31b9, 0x31b9 }, /* 0x31ba */ { false, 0x31ba, 0x31ba }, /* 0x31bb */ { false, 0x31bb, 0x31bb }, /* 0x31bc */ { false, 0x31bc, 0x31bc }, /* 0x31bd */ { false, 0x31bd, 0x31bd }, /* 0x31be */ { false, 0x31be, 0x31be }, /* 0x31bf */ { false, 0x31bf, 0x31bf }, /* 0x31c0 */ { false, 0x31c0, 0x31c0 }, /* 0x31c1 */ { false, 0x31c1, 0x31c1 }, /* 0x31c2 */ { false, 0x31c2, 0x31c2 }, /* 0x31c3 */ { false, 0x31c3, 0x31c3 }, /* 0x31c4 */ { false, 0x31c4, 0x31c4 }, /* 0x31c5 */ { false, 0x31c5, 0x31c5 }, /* 0x31c6 */ { false, 0x31c6, 0x31c6 }, /* 0x31c7 */ { false, 0x31c7, 0x31c7 }, /* 0x31c8 */ { false, 0x31c8, 0x31c8 }, /* 0x31c9 */ { false, 0x31c9, 0x31c9 }, /* 0x31ca */ { false, 0x31ca, 0x31ca }, /* 0x31cb */ { false, 0x31cb, 0x31cb }, /* 0x31cc */ { false, 0x31cc, 0x31cc }, /* 0x31cd */ { false, 0x31cd, 0x31cd }, /* 0x31ce */ { false, 0x31ce, 0x31ce }, /* 0x31cf */ { false, 0x31cf, 0x31cf }, /* 0x31d0 */ { false, 0x31d0, 0x31d0 }, /* 0x31d1 */ { false, 0x31d1, 0x31d1 }, /* 0x31d2 */ { false, 0x31d2, 0x31d2 }, /* 0x31d3 */ { false, 0x31d3, 0x31d3 }, /* 0x31d4 */ { false, 0x31d4, 0x31d4 }, /* 0x31d5 */ { false, 0x31d5, 0x31d5 }, /* 0x31d6 */ { false, 0x31d6, 0x31d6 }, /* 0x31d7 */ { false, 0x31d7, 0x31d7 }, /* 0x31d8 */ { false, 0x31d8, 0x31d8 }, /* 0x31d9 */ { false, 0x31d9, 0x31d9 }, /* 0x31da */ { false, 0x31da, 0x31da }, /* 0x31db */ { false, 0x31db, 0x31db }, /* 0x31dc */ { false, 0x31dc, 0x31dc }, /* 0x31dd */ { false, 0x31dd, 0x31dd }, /* 0x31de */ { false, 0x31de, 0x31de }, /* 0x31df */ { false, 0x31df, 0x31df }, /* 0x31e0 */ { false, 0x31e0, 0x31e0 }, /* 0x31e1 */ { false, 0x31e1, 0x31e1 }, /* 0x31e2 */ { false, 0x31e2, 0x31e2 }, /* 0x31e3 */ { false, 0x31e3, 0x31e3 }, /* 0x31e4 */ { false, 0x31e4, 0x31e4 }, /* 0x31e5 */ { false, 0x31e5, 0x31e5 }, /* 0x31e6 */ { false, 0x31e6, 0x31e6 }, /* 0x31e7 */ { false, 0x31e7, 0x31e7 }, /* 0x31e8 */ { false, 0x31e8, 0x31e8 }, /* 0x31e9 */ { false, 0x31e9, 0x31e9 }, /* 0x31ea */ { false, 0x31ea, 0x31ea }, /* 0x31eb */ { false, 0x31eb, 0x31eb }, /* 0x31ec */ { false, 0x31ec, 0x31ec }, /* 0x31ed */ { false, 0x31ed, 0x31ed }, /* 0x31ee */ { false, 0x31ee, 0x31ee }, /* 0x31ef */ { false, 0x31ef, 0x31ef }, /* 0x31f0 */ { true, 0x31f0, 0x31f0 }, /* 0x31f1 */ { true, 0x31f1, 0x31f1 }, /* 0x31f2 */ { true, 0x31f2, 0x31f2 }, /* 0x31f3 */ { true, 0x31f3, 0x31f3 }, /* 0x31f4 */ { true, 0x31f4, 0x31f4 }, /* 0x31f5 */ { true, 0x31f5, 0x31f5 }, /* 0x31f6 */ { true, 0x31f6, 0x31f6 }, /* 0x31f7 */ { true, 0x31f7, 0x31f7 }, /* 0x31f8 */ { true, 0x31f8, 0x31f8 }, /* 0x31f9 */ { true, 0x31f9, 0x31f9 }, /* 0x31fa */ { true, 0x31fa, 0x31fa }, /* 0x31fb */ { true, 0x31fb, 0x31fb }, /* 0x31fc */ { true, 0x31fc, 0x31fc }, /* 0x31fd */ { true, 0x31fd, 0x31fd }, /* 0x31fe */ { true, 0x31fe, 0x31fe }, /* 0x31ff */ { true, 0x31ff, 0x31ff }, /* 0x3200 */ { false, 0x3200, 0x3200 }, /* 0x3201 */ { false, 0x3201, 0x3201 }, /* 0x3202 */ { false, 0x3202, 0x3202 }, /* 0x3203 */ { false, 0x3203, 0x3203 }, /* 0x3204 */ { false, 0x3204, 0x3204 }, /* 0x3205 */ { false, 0x3205, 0x3205 }, /* 0x3206 */ { false, 0x3206, 0x3206 }, /* 0x3207 */ { false, 0x3207, 0x3207 }, /* 0x3208 */ { false, 0x3208, 0x3208 }, /* 0x3209 */ { false, 0x3209, 0x3209 }, /* 0x320a */ { false, 0x320a, 0x320a }, /* 0x320b */ { false, 0x320b, 0x320b }, /* 0x320c */ { false, 0x320c, 0x320c }, /* 0x320d */ { false, 0x320d, 0x320d }, /* 0x320e */ { false, 0x320e, 0x320e }, /* 0x320f */ { false, 0x320f, 0x320f }, /* 0x3210 */ { false, 0x3210, 0x3210 }, /* 0x3211 */ { false, 0x3211, 0x3211 }, /* 0x3212 */ { false, 0x3212, 0x3212 }, /* 0x3213 */ { false, 0x3213, 0x3213 }, /* 0x3214 */ { false, 0x3214, 0x3214 }, /* 0x3215 */ { false, 0x3215, 0x3215 }, /* 0x3216 */ { false, 0x3216, 0x3216 }, /* 0x3217 */ { false, 0x3217, 0x3217 }, /* 0x3218 */ { false, 0x3218, 0x3218 }, /* 0x3219 */ { false, 0x3219, 0x3219 }, /* 0x321a */ { false, 0x321a, 0x321a }, /* 0x321b */ { false, 0x321b, 0x321b }, /* 0x321c */ { false, 0x321c, 0x321c }, /* 0x321d */ { false, 0x321d, 0x321d }, /* 0x321e */ { false, 0x321e, 0x321e }, /* 0x321f */ { false, 0x321f, 0x321f }, /* 0x3220 */ { false, 0x3220, 0x3220 }, /* 0x3221 */ { false, 0x3221, 0x3221 }, /* 0x3222 */ { false, 0x3222, 0x3222 }, /* 0x3223 */ { false, 0x3223, 0x3223 }, /* 0x3224 */ { false, 0x3224, 0x3224 }, /* 0x3225 */ { false, 0x3225, 0x3225 }, /* 0x3226 */ { false, 0x3226, 0x3226 }, /* 0x3227 */ { false, 0x3227, 0x3227 }, /* 0x3228 */ { false, 0x3228, 0x3228 }, /* 0x3229 */ { false, 0x3229, 0x3229 }, /* 0x322a */ { false, 0x322a, 0x322a }, /* 0x322b */ { false, 0x322b, 0x322b }, /* 0x322c */ { false, 0x322c, 0x322c }, /* 0x322d */ { false, 0x322d, 0x322d }, /* 0x322e */ { false, 0x322e, 0x322e }, /* 0x322f */ { false, 0x322f, 0x322f }, /* 0x3230 */ { false, 0x3230, 0x3230 }, /* 0x3231 */ { false, 0x3231, 0x3231 }, /* 0x3232 */ { false, 0x3232, 0x3232 }, /* 0x3233 */ { false, 0x3233, 0x3233 }, /* 0x3234 */ { false, 0x3234, 0x3234 }, /* 0x3235 */ { false, 0x3235, 0x3235 }, /* 0x3236 */ { false, 0x3236, 0x3236 }, /* 0x3237 */ { false, 0x3237, 0x3237 }, /* 0x3238 */ { false, 0x3238, 0x3238 }, /* 0x3239 */ { false, 0x3239, 0x3239 }, /* 0x323a */ { false, 0x323a, 0x323a }, /* 0x323b */ { false, 0x323b, 0x323b }, /* 0x323c */ { false, 0x323c, 0x323c }, /* 0x323d */ { false, 0x323d, 0x323d }, /* 0x323e */ { false, 0x323e, 0x323e }, /* 0x323f */ { false, 0x323f, 0x323f }, /* 0x3240 */ { false, 0x3240, 0x3240 }, /* 0x3241 */ { false, 0x3241, 0x3241 }, /* 0x3242 */ { false, 0x3242, 0x3242 }, /* 0x3243 */ { false, 0x3243, 0x3243 }, /* 0x3244 */ { false, 0x3244, 0x3244 }, /* 0x3245 */ { false, 0x3245, 0x3245 }, /* 0x3246 */ { false, 0x3246, 0x3246 }, /* 0x3247 */ { false, 0x3247, 0x3247 }, /* 0x3248 */ { false, 0x3248, 0x3248 }, /* 0x3249 */ { false, 0x3249, 0x3249 }, /* 0x324a */ { false, 0x324a, 0x324a }, /* 0x324b */ { false, 0x324b, 0x324b }, /* 0x324c */ { false, 0x324c, 0x324c }, /* 0x324d */ { false, 0x324d, 0x324d }, /* 0x324e */ { false, 0x324e, 0x324e }, /* 0x324f */ { false, 0x324f, 0x324f }, /* 0x3250 */ { false, 0x3250, 0x3250 }, /* 0x3251 */ { false, 0x3251, 0x3251 }, /* 0x3252 */ { false, 0x3252, 0x3252 }, /* 0x3253 */ { false, 0x3253, 0x3253 }, /* 0x3254 */ { false, 0x3254, 0x3254 }, /* 0x3255 */ { false, 0x3255, 0x3255 }, /* 0x3256 */ { false, 0x3256, 0x3256 }, /* 0x3257 */ { false, 0x3257, 0x3257 }, /* 0x3258 */ { false, 0x3258, 0x3258 }, /* 0x3259 */ { false, 0x3259, 0x3259 }, /* 0x325a */ { false, 0x325a, 0x325a }, /* 0x325b */ { false, 0x325b, 0x325b }, /* 0x325c */ { false, 0x325c, 0x325c }, /* 0x325d */ { false, 0x325d, 0x325d }, /* 0x325e */ { false, 0x325e, 0x325e }, /* 0x325f */ { false, 0x325f, 0x325f }, /* 0x3260 */ { false, 0x3260, 0x3260 }, /* 0x3261 */ { false, 0x3261, 0x3261 }, /* 0x3262 */ { false, 0x3262, 0x3262 }, /* 0x3263 */ { false, 0x3263, 0x3263 }, /* 0x3264 */ { false, 0x3264, 0x3264 }, /* 0x3265 */ { false, 0x3265, 0x3265 }, /* 0x3266 */ { false, 0x3266, 0x3266 }, /* 0x3267 */ { false, 0x3267, 0x3267 }, /* 0x3268 */ { false, 0x3268, 0x3268 }, /* 0x3269 */ { false, 0x3269, 0x3269 }, /* 0x326a */ { false, 0x326a, 0x326a }, /* 0x326b */ { false, 0x326b, 0x326b }, /* 0x326c */ { false, 0x326c, 0x326c }, /* 0x326d */ { false, 0x326d, 0x326d }, /* 0x326e */ { false, 0x326e, 0x326e }, /* 0x326f */ { false, 0x326f, 0x326f }, /* 0x3270 */ { false, 0x3270, 0x3270 }, /* 0x3271 */ { false, 0x3271, 0x3271 }, /* 0x3272 */ { false, 0x3272, 0x3272 }, /* 0x3273 */ { false, 0x3273, 0x3273 }, /* 0x3274 */ { false, 0x3274, 0x3274 }, /* 0x3275 */ { false, 0x3275, 0x3275 }, /* 0x3276 */ { false, 0x3276, 0x3276 }, /* 0x3277 */ { false, 0x3277, 0x3277 }, /* 0x3278 */ { false, 0x3278, 0x3278 }, /* 0x3279 */ { false, 0x3279, 0x3279 }, /* 0x327a */ { false, 0x327a, 0x327a }, /* 0x327b */ { false, 0x327b, 0x327b }, /* 0x327c */ { false, 0x327c, 0x327c }, /* 0x327d */ { false, 0x327d, 0x327d }, /* 0x327e */ { false, 0x327e, 0x327e }, /* 0x327f */ { false, 0x327f, 0x327f }, /* 0x3280 */ { false, 0x3280, 0x3280 }, /* 0x3281 */ { false, 0x3281, 0x3281 }, /* 0x3282 */ { false, 0x3282, 0x3282 }, /* 0x3283 */ { false, 0x3283, 0x3283 }, /* 0x3284 */ { false, 0x3284, 0x3284 }, /* 0x3285 */ { false, 0x3285, 0x3285 }, /* 0x3286 */ { false, 0x3286, 0x3286 }, /* 0x3287 */ { false, 0x3287, 0x3287 }, /* 0x3288 */ { false, 0x3288, 0x3288 }, /* 0x3289 */ { false, 0x3289, 0x3289 }, /* 0x328a */ { false, 0x328a, 0x328a }, /* 0x328b */ { false, 0x328b, 0x328b }, /* 0x328c */ { false, 0x328c, 0x328c }, /* 0x328d */ { false, 0x328d, 0x328d }, /* 0x328e */ { false, 0x328e, 0x328e }, /* 0x328f */ { false, 0x328f, 0x328f }, /* 0x3290 */ { false, 0x3290, 0x3290 }, /* 0x3291 */ { false, 0x3291, 0x3291 }, /* 0x3292 */ { false, 0x3292, 0x3292 }, /* 0x3293 */ { false, 0x3293, 0x3293 }, /* 0x3294 */ { false, 0x3294, 0x3294 }, /* 0x3295 */ { false, 0x3295, 0x3295 }, /* 0x3296 */ { false, 0x3296, 0x3296 }, /* 0x3297 */ { false, 0x3297, 0x3297 }, /* 0x3298 */ { false, 0x3298, 0x3298 }, /* 0x3299 */ { false, 0x3299, 0x3299 }, /* 0x329a */ { false, 0x329a, 0x329a }, /* 0x329b */ { false, 0x329b, 0x329b }, /* 0x329c */ { false, 0x329c, 0x329c }, /* 0x329d */ { false, 0x329d, 0x329d }, /* 0x329e */ { false, 0x329e, 0x329e }, /* 0x329f */ { false, 0x329f, 0x329f }, /* 0x32a0 */ { false, 0x32a0, 0x32a0 }, /* 0x32a1 */ { false, 0x32a1, 0x32a1 }, /* 0x32a2 */ { false, 0x32a2, 0x32a2 }, /* 0x32a3 */ { false, 0x32a3, 0x32a3 }, /* 0x32a4 */ { false, 0x32a4, 0x32a4 }, /* 0x32a5 */ { false, 0x32a5, 0x32a5 }, /* 0x32a6 */ { false, 0x32a6, 0x32a6 }, /* 0x32a7 */ { false, 0x32a7, 0x32a7 }, /* 0x32a8 */ { false, 0x32a8, 0x32a8 }, /* 0x32a9 */ { false, 0x32a9, 0x32a9 }, /* 0x32aa */ { false, 0x32aa, 0x32aa }, /* 0x32ab */ { false, 0x32ab, 0x32ab }, /* 0x32ac */ { false, 0x32ac, 0x32ac }, /* 0x32ad */ { false, 0x32ad, 0x32ad }, /* 0x32ae */ { false, 0x32ae, 0x32ae }, /* 0x32af */ { false, 0x32af, 0x32af }, /* 0x32b0 */ { false, 0x32b0, 0x32b0 }, /* 0x32b1 */ { false, 0x32b1, 0x32b1 }, /* 0x32b2 */ { false, 0x32b2, 0x32b2 }, /* 0x32b3 */ { false, 0x32b3, 0x32b3 }, /* 0x32b4 */ { false, 0x32b4, 0x32b4 }, /* 0x32b5 */ { false, 0x32b5, 0x32b5 }, /* 0x32b6 */ { false, 0x32b6, 0x32b6 }, /* 0x32b7 */ { false, 0x32b7, 0x32b7 }, /* 0x32b8 */ { false, 0x32b8, 0x32b8 }, /* 0x32b9 */ { false, 0x32b9, 0x32b9 }, /* 0x32ba */ { false, 0x32ba, 0x32ba }, /* 0x32bb */ { false, 0x32bb, 0x32bb }, /* 0x32bc */ { false, 0x32bc, 0x32bc }, /* 0x32bd */ { false, 0x32bd, 0x32bd }, /* 0x32be */ { false, 0x32be, 0x32be }, /* 0x32bf */ { false, 0x32bf, 0x32bf }, /* 0x32c0 */ { false, 0x32c0, 0x32c0 }, /* 0x32c1 */ { false, 0x32c1, 0x32c1 }, /* 0x32c2 */ { false, 0x32c2, 0x32c2 }, /* 0x32c3 */ { false, 0x32c3, 0x32c3 }, /* 0x32c4 */ { false, 0x32c4, 0x32c4 }, /* 0x32c5 */ { false, 0x32c5, 0x32c5 }, /* 0x32c6 */ { false, 0x32c6, 0x32c6 }, /* 0x32c7 */ { false, 0x32c7, 0x32c7 }, /* 0x32c8 */ { false, 0x32c8, 0x32c8 }, /* 0x32c9 */ { false, 0x32c9, 0x32c9 }, /* 0x32ca */ { false, 0x32ca, 0x32ca }, /* 0x32cb */ { false, 0x32cb, 0x32cb }, /* 0x32cc */ { false, 0x32cc, 0x32cc }, /* 0x32cd */ { false, 0x32cd, 0x32cd }, /* 0x32ce */ { false, 0x32ce, 0x32ce }, /* 0x32cf */ { false, 0x32cf, 0x32cf }, /* 0x32d0 */ { false, 0x32d0, 0x32d0 }, /* 0x32d1 */ { false, 0x32d1, 0x32d1 }, /* 0x32d2 */ { false, 0x32d2, 0x32d2 }, /* 0x32d3 */ { false, 0x32d3, 0x32d3 }, /* 0x32d4 */ { false, 0x32d4, 0x32d4 }, /* 0x32d5 */ { false, 0x32d5, 0x32d5 }, /* 0x32d6 */ { false, 0x32d6, 0x32d6 }, /* 0x32d7 */ { false, 0x32d7, 0x32d7 }, /* 0x32d8 */ { false, 0x32d8, 0x32d8 }, /* 0x32d9 */ { false, 0x32d9, 0x32d9 }, /* 0x32da */ { false, 0x32da, 0x32da }, /* 0x32db */ { false, 0x32db, 0x32db }, /* 0x32dc */ { false, 0x32dc, 0x32dc }, /* 0x32dd */ { false, 0x32dd, 0x32dd }, /* 0x32de */ { false, 0x32de, 0x32de }, /* 0x32df */ { false, 0x32df, 0x32df }, /* 0x32e0 */ { false, 0x32e0, 0x32e0 }, /* 0x32e1 */ { false, 0x32e1, 0x32e1 }, /* 0x32e2 */ { false, 0x32e2, 0x32e2 }, /* 0x32e3 */ { false, 0x32e3, 0x32e3 }, /* 0x32e4 */ { false, 0x32e4, 0x32e4 }, /* 0x32e5 */ { false, 0x32e5, 0x32e5 }, /* 0x32e6 */ { false, 0x32e6, 0x32e6 }, /* 0x32e7 */ { false, 0x32e7, 0x32e7 }, /* 0x32e8 */ { false, 0x32e8, 0x32e8 }, /* 0x32e9 */ { false, 0x32e9, 0x32e9 }, /* 0x32ea */ { false, 0x32ea, 0x32ea }, /* 0x32eb */ { false, 0x32eb, 0x32eb }, /* 0x32ec */ { false, 0x32ec, 0x32ec }, /* 0x32ed */ { false, 0x32ed, 0x32ed }, /* 0x32ee */ { false, 0x32ee, 0x32ee }, /* 0x32ef */ { false, 0x32ef, 0x32ef }, /* 0x32f0 */ { false, 0x32f0, 0x32f0 }, /* 0x32f1 */ { false, 0x32f1, 0x32f1 }, /* 0x32f2 */ { false, 0x32f2, 0x32f2 }, /* 0x32f3 */ { false, 0x32f3, 0x32f3 }, /* 0x32f4 */ { false, 0x32f4, 0x32f4 }, /* 0x32f5 */ { false, 0x32f5, 0x32f5 }, /* 0x32f6 */ { false, 0x32f6, 0x32f6 }, /* 0x32f7 */ { false, 0x32f7, 0x32f7 }, /* 0x32f8 */ { false, 0x32f8, 0x32f8 }, /* 0x32f9 */ { false, 0x32f9, 0x32f9 }, /* 0x32fa */ { false, 0x32fa, 0x32fa }, /* 0x32fb */ { false, 0x32fb, 0x32fb }, /* 0x32fc */ { false, 0x32fc, 0x32fc }, /* 0x32fd */ { false, 0x32fd, 0x32fd }, /* 0x32fe */ { false, 0x32fe, 0x32fe }, /* 0x32ff */ { false, 0x32ff, 0x32ff }, /* 0x3300 */ { false, 0x3300, 0x3300 }, /* 0x3301 */ { false, 0x3301, 0x3301 }, /* 0x3302 */ { false, 0x3302, 0x3302 }, /* 0x3303 */ { false, 0x3303, 0x3303 }, /* 0x3304 */ { false, 0x3304, 0x3304 }, /* 0x3305 */ { false, 0x3305, 0x3305 }, /* 0x3306 */ { false, 0x3306, 0x3306 }, /* 0x3307 */ { false, 0x3307, 0x3307 }, /* 0x3308 */ { false, 0x3308, 0x3308 }, /* 0x3309 */ { false, 0x3309, 0x3309 }, /* 0x330a */ { false, 0x330a, 0x330a }, /* 0x330b */ { false, 0x330b, 0x330b }, /* 0x330c */ { false, 0x330c, 0x330c }, /* 0x330d */ { false, 0x330d, 0x330d }, /* 0x330e */ { false, 0x330e, 0x330e }, /* 0x330f */ { false, 0x330f, 0x330f }, /* 0x3310 */ { false, 0x3310, 0x3310 }, /* 0x3311 */ { false, 0x3311, 0x3311 }, /* 0x3312 */ { false, 0x3312, 0x3312 }, /* 0x3313 */ { false, 0x3313, 0x3313 }, /* 0x3314 */ { false, 0x3314, 0x3314 }, /* 0x3315 */ { false, 0x3315, 0x3315 }, /* 0x3316 */ { false, 0x3316, 0x3316 }, /* 0x3317 */ { false, 0x3317, 0x3317 }, /* 0x3318 */ { false, 0x3318, 0x3318 }, /* 0x3319 */ { false, 0x3319, 0x3319 }, /* 0x331a */ { false, 0x331a, 0x331a }, /* 0x331b */ { false, 0x331b, 0x331b }, /* 0x331c */ { false, 0x331c, 0x331c }, /* 0x331d */ { false, 0x331d, 0x331d }, /* 0x331e */ { false, 0x331e, 0x331e }, /* 0x331f */ { false, 0x331f, 0x331f }, /* 0x3320 */ { false, 0x3320, 0x3320 }, /* 0x3321 */ { false, 0x3321, 0x3321 }, /* 0x3322 */ { false, 0x3322, 0x3322 }, /* 0x3323 */ { false, 0x3323, 0x3323 }, /* 0x3324 */ { false, 0x3324, 0x3324 }, /* 0x3325 */ { false, 0x3325, 0x3325 }, /* 0x3326 */ { false, 0x3326, 0x3326 }, /* 0x3327 */ { false, 0x3327, 0x3327 }, /* 0x3328 */ { false, 0x3328, 0x3328 }, /* 0x3329 */ { false, 0x3329, 0x3329 }, /* 0x332a */ { false, 0x332a, 0x332a }, /* 0x332b */ { false, 0x332b, 0x332b }, /* 0x332c */ { false, 0x332c, 0x332c }, /* 0x332d */ { false, 0x332d, 0x332d }, /* 0x332e */ { false, 0x332e, 0x332e }, /* 0x332f */ { false, 0x332f, 0x332f }, /* 0x3330 */ { false, 0x3330, 0x3330 }, /* 0x3331 */ { false, 0x3331, 0x3331 }, /* 0x3332 */ { false, 0x3332, 0x3332 }, /* 0x3333 */ { false, 0x3333, 0x3333 }, /* 0x3334 */ { false, 0x3334, 0x3334 }, /* 0x3335 */ { false, 0x3335, 0x3335 }, /* 0x3336 */ { false, 0x3336, 0x3336 }, /* 0x3337 */ { false, 0x3337, 0x3337 }, /* 0x3338 */ { false, 0x3338, 0x3338 }, /* 0x3339 */ { false, 0x3339, 0x3339 }, /* 0x333a */ { false, 0x333a, 0x333a }, /* 0x333b */ { false, 0x333b, 0x333b }, /* 0x333c */ { false, 0x333c, 0x333c }, /* 0x333d */ { false, 0x333d, 0x333d }, /* 0x333e */ { false, 0x333e, 0x333e }, /* 0x333f */ { false, 0x333f, 0x333f }, /* 0x3340 */ { false, 0x3340, 0x3340 }, /* 0x3341 */ { false, 0x3341, 0x3341 }, /* 0x3342 */ { false, 0x3342, 0x3342 }, /* 0x3343 */ { false, 0x3343, 0x3343 }, /* 0x3344 */ { false, 0x3344, 0x3344 }, /* 0x3345 */ { false, 0x3345, 0x3345 }, /* 0x3346 */ { false, 0x3346, 0x3346 }, /* 0x3347 */ { false, 0x3347, 0x3347 }, /* 0x3348 */ { false, 0x3348, 0x3348 }, /* 0x3349 */ { false, 0x3349, 0x3349 }, /* 0x334a */ { false, 0x334a, 0x334a }, /* 0x334b */ { false, 0x334b, 0x334b }, /* 0x334c */ { false, 0x334c, 0x334c }, /* 0x334d */ { false, 0x334d, 0x334d }, /* 0x334e */ { false, 0x334e, 0x334e }, /* 0x334f */ { false, 0x334f, 0x334f }, /* 0x3350 */ { false, 0x3350, 0x3350 }, /* 0x3351 */ { false, 0x3351, 0x3351 }, /* 0x3352 */ { false, 0x3352, 0x3352 }, /* 0x3353 */ { false, 0x3353, 0x3353 }, /* 0x3354 */ { false, 0x3354, 0x3354 }, /* 0x3355 */ { false, 0x3355, 0x3355 }, /* 0x3356 */ { false, 0x3356, 0x3356 }, /* 0x3357 */ { false, 0x3357, 0x3357 }, /* 0x3358 */ { false, 0x3358, 0x3358 }, /* 0x3359 */ { false, 0x3359, 0x3359 }, /* 0x335a */ { false, 0x335a, 0x335a }, /* 0x335b */ { false, 0x335b, 0x335b }, /* 0x335c */ { false, 0x335c, 0x335c }, /* 0x335d */ { false, 0x335d, 0x335d }, /* 0x335e */ { false, 0x335e, 0x335e }, /* 0x335f */ { false, 0x335f, 0x335f }, /* 0x3360 */ { false, 0x3360, 0x3360 }, /* 0x3361 */ { false, 0x3361, 0x3361 }, /* 0x3362 */ { false, 0x3362, 0x3362 }, /* 0x3363 */ { false, 0x3363, 0x3363 }, /* 0x3364 */ { false, 0x3364, 0x3364 }, /* 0x3365 */ { false, 0x3365, 0x3365 }, /* 0x3366 */ { false, 0x3366, 0x3366 }, /* 0x3367 */ { false, 0x3367, 0x3367 }, /* 0x3368 */ { false, 0x3368, 0x3368 }, /* 0x3369 */ { false, 0x3369, 0x3369 }, /* 0x336a */ { false, 0x336a, 0x336a }, /* 0x336b */ { false, 0x336b, 0x336b }, /* 0x336c */ { false, 0x336c, 0x336c }, /* 0x336d */ { false, 0x336d, 0x336d }, /* 0x336e */ { false, 0x336e, 0x336e }, /* 0x336f */ { false, 0x336f, 0x336f }, /* 0x3370 */ { false, 0x3370, 0x3370 }, /* 0x3371 */ { false, 0x3371, 0x3371 }, /* 0x3372 */ { false, 0x3372, 0x3372 }, /* 0x3373 */ { false, 0x3373, 0x3373 }, /* 0x3374 */ { false, 0x3374, 0x3374 }, /* 0x3375 */ { false, 0x3375, 0x3375 }, /* 0x3376 */ { false, 0x3376, 0x3376 }, /* 0x3377 */ { false, 0x3377, 0x3377 }, /* 0x3378 */ { false, 0x3378, 0x3378 }, /* 0x3379 */ { false, 0x3379, 0x3379 }, /* 0x337a */ { false, 0x337a, 0x337a }, /* 0x337b */ { false, 0x337b, 0x337b }, /* 0x337c */ { false, 0x337c, 0x337c }, /* 0x337d */ { false, 0x337d, 0x337d }, /* 0x337e */ { false, 0x337e, 0x337e }, /* 0x337f */ { false, 0x337f, 0x337f }, /* 0x3380 */ { false, 0x3380, 0x3380 }, /* 0x3381 */ { false, 0x3381, 0x3381 }, /* 0x3382 */ { false, 0x3382, 0x3382 }, /* 0x3383 */ { false, 0x3383, 0x3383 }, /* 0x3384 */ { false, 0x3384, 0x3384 }, /* 0x3385 */ { false, 0x3385, 0x3385 }, /* 0x3386 */ { false, 0x3386, 0x3386 }, /* 0x3387 */ { false, 0x3387, 0x3387 }, /* 0x3388 */ { false, 0x3388, 0x3388 }, /* 0x3389 */ { false, 0x3389, 0x3389 }, /* 0x338a */ { false, 0x338a, 0x338a }, /* 0x338b */ { false, 0x338b, 0x338b }, /* 0x338c */ { false, 0x338c, 0x338c }, /* 0x338d */ { false, 0x338d, 0x338d }, /* 0x338e */ { false, 0x338e, 0x338e }, /* 0x338f */ { false, 0x338f, 0x338f }, /* 0x3390 */ { false, 0x3390, 0x3390 }, /* 0x3391 */ { false, 0x3391, 0x3391 }, /* 0x3392 */ { false, 0x3392, 0x3392 }, /* 0x3393 */ { false, 0x3393, 0x3393 }, /* 0x3394 */ { false, 0x3394, 0x3394 }, /* 0x3395 */ { false, 0x3395, 0x3395 }, /* 0x3396 */ { false, 0x3396, 0x3396 }, /* 0x3397 */ { false, 0x3397, 0x3397 }, /* 0x3398 */ { false, 0x3398, 0x3398 }, /* 0x3399 */ { false, 0x3399, 0x3399 }, /* 0x339a */ { false, 0x339a, 0x339a }, /* 0x339b */ { false, 0x339b, 0x339b }, /* 0x339c */ { false, 0x339c, 0x339c }, /* 0x339d */ { false, 0x339d, 0x339d }, /* 0x339e */ { false, 0x339e, 0x339e }, /* 0x339f */ { false, 0x339f, 0x339f }, /* 0x33a0 */ { false, 0x33a0, 0x33a0 }, /* 0x33a1 */ { false, 0x33a1, 0x33a1 }, /* 0x33a2 */ { false, 0x33a2, 0x33a2 }, /* 0x33a3 */ { false, 0x33a3, 0x33a3 }, /* 0x33a4 */ { false, 0x33a4, 0x33a4 }, /* 0x33a5 */ { false, 0x33a5, 0x33a5 }, /* 0x33a6 */ { false, 0x33a6, 0x33a6 }, /* 0x33a7 */ { false, 0x33a7, 0x33a7 }, /* 0x33a8 */ { false, 0x33a8, 0x33a8 }, /* 0x33a9 */ { false, 0x33a9, 0x33a9 }, /* 0x33aa */ { false, 0x33aa, 0x33aa }, /* 0x33ab */ { false, 0x33ab, 0x33ab }, /* 0x33ac */ { false, 0x33ac, 0x33ac }, /* 0x33ad */ { false, 0x33ad, 0x33ad }, /* 0x33ae */ { false, 0x33ae, 0x33ae }, /* 0x33af */ { false, 0x33af, 0x33af }, /* 0x33b0 */ { false, 0x33b0, 0x33b0 }, /* 0x33b1 */ { false, 0x33b1, 0x33b1 }, /* 0x33b2 */ { false, 0x33b2, 0x33b2 }, /* 0x33b3 */ { false, 0x33b3, 0x33b3 }, /* 0x33b4 */ { false, 0x33b4, 0x33b4 }, /* 0x33b5 */ { false, 0x33b5, 0x33b5 }, /* 0x33b6 */ { false, 0x33b6, 0x33b6 }, /* 0x33b7 */ { false, 0x33b7, 0x33b7 }, /* 0x33b8 */ { false, 0x33b8, 0x33b8 }, /* 0x33b9 */ { false, 0x33b9, 0x33b9 }, /* 0x33ba */ { false, 0x33ba, 0x33ba }, /* 0x33bb */ { false, 0x33bb, 0x33bb }, /* 0x33bc */ { false, 0x33bc, 0x33bc }, /* 0x33bd */ { false, 0x33bd, 0x33bd }, /* 0x33be */ { false, 0x33be, 0x33be }, /* 0x33bf */ { false, 0x33bf, 0x33bf }, /* 0x33c0 */ { false, 0x33c0, 0x33c0 }, /* 0x33c1 */ { false, 0x33c1, 0x33c1 }, /* 0x33c2 */ { false, 0x33c2, 0x33c2 }, /* 0x33c3 */ { false, 0x33c3, 0x33c3 }, /* 0x33c4 */ { false, 0x33c4, 0x33c4 }, /* 0x33c5 */ { false, 0x33c5, 0x33c5 }, /* 0x33c6 */ { false, 0x33c6, 0x33c6 }, /* 0x33c7 */ { false, 0x33c7, 0x33c7 }, /* 0x33c8 */ { false, 0x33c8, 0x33c8 }, /* 0x33c9 */ { false, 0x33c9, 0x33c9 }, /* 0x33ca */ { false, 0x33ca, 0x33ca }, /* 0x33cb */ { false, 0x33cb, 0x33cb }, /* 0x33cc */ { false, 0x33cc, 0x33cc }, /* 0x33cd */ { false, 0x33cd, 0x33cd }, /* 0x33ce */ { false, 0x33ce, 0x33ce }, /* 0x33cf */ { false, 0x33cf, 0x33cf }, /* 0x33d0 */ { false, 0x33d0, 0x33d0 }, /* 0x33d1 */ { false, 0x33d1, 0x33d1 }, /* 0x33d2 */ { false, 0x33d2, 0x33d2 }, /* 0x33d3 */ { false, 0x33d3, 0x33d3 }, /* 0x33d4 */ { false, 0x33d4, 0x33d4 }, /* 0x33d5 */ { false, 0x33d5, 0x33d5 }, /* 0x33d6 */ { false, 0x33d6, 0x33d6 }, /* 0x33d7 */ { false, 0x33d7, 0x33d7 }, /* 0x33d8 */ { false, 0x33d8, 0x33d8 }, /* 0x33d9 */ { false, 0x33d9, 0x33d9 }, /* 0x33da */ { false, 0x33da, 0x33da }, /* 0x33db */ { false, 0x33db, 0x33db }, /* 0x33dc */ { false, 0x33dc, 0x33dc }, /* 0x33dd */ { false, 0x33dd, 0x33dd }, /* 0x33de */ { false, 0x33de, 0x33de }, /* 0x33df */ { false, 0x33df, 0x33df }, /* 0x33e0 */ { false, 0x33e0, 0x33e0 }, /* 0x33e1 */ { false, 0x33e1, 0x33e1 }, /* 0x33e2 */ { false, 0x33e2, 0x33e2 }, /* 0x33e3 */ { false, 0x33e3, 0x33e3 }, /* 0x33e4 */ { false, 0x33e4, 0x33e4 }, /* 0x33e5 */ { false, 0x33e5, 0x33e5 }, /* 0x33e6 */ { false, 0x33e6, 0x33e6 }, /* 0x33e7 */ { false, 0x33e7, 0x33e7 }, /* 0x33e8 */ { false, 0x33e8, 0x33e8 }, /* 0x33e9 */ { false, 0x33e9, 0x33e9 }, /* 0x33ea */ { false, 0x33ea, 0x33ea }, /* 0x33eb */ { false, 0x33eb, 0x33eb }, /* 0x33ec */ { false, 0x33ec, 0x33ec }, /* 0x33ed */ { false, 0x33ed, 0x33ed }, /* 0x33ee */ { false, 0x33ee, 0x33ee }, /* 0x33ef */ { false, 0x33ef, 0x33ef }, /* 0x33f0 */ { false, 0x33f0, 0x33f0 }, /* 0x33f1 */ { false, 0x33f1, 0x33f1 }, /* 0x33f2 */ { false, 0x33f2, 0x33f2 }, /* 0x33f3 */ { false, 0x33f3, 0x33f3 }, /* 0x33f4 */ { false, 0x33f4, 0x33f4 }, /* 0x33f5 */ { false, 0x33f5, 0x33f5 }, /* 0x33f6 */ { false, 0x33f6, 0x33f6 }, /* 0x33f7 */ { false, 0x33f7, 0x33f7 }, /* 0x33f8 */ { false, 0x33f8, 0x33f8 }, /* 0x33f9 */ { false, 0x33f9, 0x33f9 }, /* 0x33fa */ { false, 0x33fa, 0x33fa }, /* 0x33fb */ { false, 0x33fb, 0x33fb }, /* 0x33fc */ { false, 0x33fc, 0x33fc }, /* 0x33fd */ { false, 0x33fd, 0x33fd }, /* 0x33fe */ { false, 0x33fe, 0x33fe }, /* 0x33ff */ { false, 0x33ff, 0x33ff }, /* 0x3400 */ { true, 0x3400, 0x3400 }, /* 0x3401 */ { false, 0x3401, 0x3401 }, /* 0x3402 */ { false, 0x3402, 0x3402 }, /* 0x3403 */ { false, 0x3403, 0x3403 }, /* 0x3404 */ { false, 0x3404, 0x3404 }, /* 0x3405 */ { false, 0x3405, 0x3405 }, /* 0x3406 */ { false, 0x3406, 0x3406 }, /* 0x3407 */ { false, 0x3407, 0x3407 }, /* 0x3408 */ { false, 0x3408, 0x3408 }, /* 0x3409 */ { false, 0x3409, 0x3409 }, /* 0x340a */ { false, 0x340a, 0x340a }, /* 0x340b */ { false, 0x340b, 0x340b }, /* 0x340c */ { false, 0x340c, 0x340c }, /* 0x340d */ { false, 0x340d, 0x340d }, /* 0x340e */ { false, 0x340e, 0x340e }, /* 0x340f */ { false, 0x340f, 0x340f }, /* 0x3410 */ { false, 0x3410, 0x3410 }, /* 0x3411 */ { false, 0x3411, 0x3411 }, /* 0x3412 */ { false, 0x3412, 0x3412 }, /* 0x3413 */ { false, 0x3413, 0x3413 }, /* 0x3414 */ { false, 0x3414, 0x3414 }, /* 0x3415 */ { false, 0x3415, 0x3415 }, /* 0x3416 */ { false, 0x3416, 0x3416 }, /* 0x3417 */ { false, 0x3417, 0x3417 }, /* 0x3418 */ { false, 0x3418, 0x3418 }, /* 0x3419 */ { false, 0x3419, 0x3419 }, /* 0x341a */ { false, 0x341a, 0x341a }, /* 0x341b */ { false, 0x341b, 0x341b }, /* 0x341c */ { false, 0x341c, 0x341c }, /* 0x341d */ { false, 0x341d, 0x341d }, /* 0x341e */ { false, 0x341e, 0x341e }, /* 0x341f */ { false, 0x341f, 0x341f }, /* 0x3420 */ { false, 0x3420, 0x3420 }, /* 0x3421 */ { false, 0x3421, 0x3421 }, /* 0x3422 */ { false, 0x3422, 0x3422 }, /* 0x3423 */ { false, 0x3423, 0x3423 }, /* 0x3424 */ { false, 0x3424, 0x3424 }, /* 0x3425 */ { false, 0x3425, 0x3425 }, /* 0x3426 */ { false, 0x3426, 0x3426 }, /* 0x3427 */ { false, 0x3427, 0x3427 }, /* 0x3428 */ { false, 0x3428, 0x3428 }, /* 0x3429 */ { false, 0x3429, 0x3429 }, /* 0x342a */ { false, 0x342a, 0x342a }, /* 0x342b */ { false, 0x342b, 0x342b }, /* 0x342c */ { false, 0x342c, 0x342c }, /* 0x342d */ { false, 0x342d, 0x342d }, /* 0x342e */ { false, 0x342e, 0x342e }, /* 0x342f */ { false, 0x342f, 0x342f }, /* 0x3430 */ { false, 0x3430, 0x3430 }, /* 0x3431 */ { false, 0x3431, 0x3431 }, /* 0x3432 */ { false, 0x3432, 0x3432 }, /* 0x3433 */ { false, 0x3433, 0x3433 }, /* 0x3434 */ { false, 0x3434, 0x3434 }, /* 0x3435 */ { false, 0x3435, 0x3435 }, /* 0x3436 */ { false, 0x3436, 0x3436 }, /* 0x3437 */ { false, 0x3437, 0x3437 }, /* 0x3438 */ { false, 0x3438, 0x3438 }, /* 0x3439 */ { false, 0x3439, 0x3439 }, /* 0x343a */ { false, 0x343a, 0x343a }, /* 0x343b */ { false, 0x343b, 0x343b }, /* 0x343c */ { false, 0x343c, 0x343c }, /* 0x343d */ { false, 0x343d, 0x343d }, /* 0x343e */ { false, 0x343e, 0x343e }, /* 0x343f */ { false, 0x343f, 0x343f }, /* 0x3440 */ { false, 0x3440, 0x3440 }, /* 0x3441 */ { false, 0x3441, 0x3441 }, /* 0x3442 */ { false, 0x3442, 0x3442 }, /* 0x3443 */ { false, 0x3443, 0x3443 }, /* 0x3444 */ { false, 0x3444, 0x3444 }, /* 0x3445 */ { false, 0x3445, 0x3445 }, /* 0x3446 */ { false, 0x3446, 0x3446 }, /* 0x3447 */ { false, 0x3447, 0x3447 }, /* 0x3448 */ { false, 0x3448, 0x3448 }, /* 0x3449 */ { false, 0x3449, 0x3449 }, /* 0x344a */ { false, 0x344a, 0x344a }, /* 0x344b */ { false, 0x344b, 0x344b }, /* 0x344c */ { false, 0x344c, 0x344c }, /* 0x344d */ { false, 0x344d, 0x344d }, /* 0x344e */ { false, 0x344e, 0x344e }, /* 0x344f */ { false, 0x344f, 0x344f }, /* 0x3450 */ { false, 0x3450, 0x3450 }, /* 0x3451 */ { false, 0x3451, 0x3451 }, /* 0x3452 */ { false, 0x3452, 0x3452 }, /* 0x3453 */ { false, 0x3453, 0x3453 }, /* 0x3454 */ { false, 0x3454, 0x3454 }, /* 0x3455 */ { false, 0x3455, 0x3455 }, /* 0x3456 */ { false, 0x3456, 0x3456 }, /* 0x3457 */ { false, 0x3457, 0x3457 }, /* 0x3458 */ { false, 0x3458, 0x3458 }, /* 0x3459 */ { false, 0x3459, 0x3459 }, /* 0x345a */ { false, 0x345a, 0x345a }, /* 0x345b */ { false, 0x345b, 0x345b }, /* 0x345c */ { false, 0x345c, 0x345c }, /* 0x345d */ { false, 0x345d, 0x345d }, /* 0x345e */ { false, 0x345e, 0x345e }, /* 0x345f */ { false, 0x345f, 0x345f }, /* 0x3460 */ { false, 0x3460, 0x3460 }, /* 0x3461 */ { false, 0x3461, 0x3461 }, /* 0x3462 */ { false, 0x3462, 0x3462 }, /* 0x3463 */ { false, 0x3463, 0x3463 }, /* 0x3464 */ { false, 0x3464, 0x3464 }, /* 0x3465 */ { false, 0x3465, 0x3465 }, /* 0x3466 */ { false, 0x3466, 0x3466 }, /* 0x3467 */ { false, 0x3467, 0x3467 }, /* 0x3468 */ { false, 0x3468, 0x3468 }, /* 0x3469 */ { false, 0x3469, 0x3469 }, /* 0x346a */ { false, 0x346a, 0x346a }, /* 0x346b */ { false, 0x346b, 0x346b }, /* 0x346c */ { false, 0x346c, 0x346c }, /* 0x346d */ { false, 0x346d, 0x346d }, /* 0x346e */ { false, 0x346e, 0x346e }, /* 0x346f */ { false, 0x346f, 0x346f }, /* 0x3470 */ { false, 0x3470, 0x3470 }, /* 0x3471 */ { false, 0x3471, 0x3471 }, /* 0x3472 */ { false, 0x3472, 0x3472 }, /* 0x3473 */ { false, 0x3473, 0x3473 }, /* 0x3474 */ { false, 0x3474, 0x3474 }, /* 0x3475 */ { false, 0x3475, 0x3475 }, /* 0x3476 */ { false, 0x3476, 0x3476 }, /* 0x3477 */ { false, 0x3477, 0x3477 }, /* 0x3478 */ { false, 0x3478, 0x3478 }, /* 0x3479 */ { false, 0x3479, 0x3479 }, /* 0x347a */ { false, 0x347a, 0x347a }, /* 0x347b */ { false, 0x347b, 0x347b }, /* 0x347c */ { false, 0x347c, 0x347c }, /* 0x347d */ { false, 0x347d, 0x347d }, /* 0x347e */ { false, 0x347e, 0x347e }, /* 0x347f */ { false, 0x347f, 0x347f }, /* 0x3480 */ { false, 0x3480, 0x3480 }, /* 0x3481 */ { false, 0x3481, 0x3481 }, /* 0x3482 */ { false, 0x3482, 0x3482 }, /* 0x3483 */ { false, 0x3483, 0x3483 }, /* 0x3484 */ { false, 0x3484, 0x3484 }, /* 0x3485 */ { false, 0x3485, 0x3485 }, /* 0x3486 */ { false, 0x3486, 0x3486 }, /* 0x3487 */ { false, 0x3487, 0x3487 }, /* 0x3488 */ { false, 0x3488, 0x3488 }, /* 0x3489 */ { false, 0x3489, 0x3489 }, /* 0x348a */ { false, 0x348a, 0x348a }, /* 0x348b */ { false, 0x348b, 0x348b }, /* 0x348c */ { false, 0x348c, 0x348c }, /* 0x348d */ { false, 0x348d, 0x348d }, /* 0x348e */ { false, 0x348e, 0x348e }, /* 0x348f */ { false, 0x348f, 0x348f }, /* 0x3490 */ { false, 0x3490, 0x3490 }, /* 0x3491 */ { false, 0x3491, 0x3491 }, /* 0x3492 */ { false, 0x3492, 0x3492 }, /* 0x3493 */ { false, 0x3493, 0x3493 }, /* 0x3494 */ { false, 0x3494, 0x3494 }, /* 0x3495 */ { false, 0x3495, 0x3495 }, /* 0x3496 */ { false, 0x3496, 0x3496 }, /* 0x3497 */ { false, 0x3497, 0x3497 }, /* 0x3498 */ { false, 0x3498, 0x3498 }, /* 0x3499 */ { false, 0x3499, 0x3499 }, /* 0x349a */ { false, 0x349a, 0x349a }, /* 0x349b */ { false, 0x349b, 0x349b }, /* 0x349c */ { false, 0x349c, 0x349c }, /* 0x349d */ { false, 0x349d, 0x349d }, /* 0x349e */ { false, 0x349e, 0x349e }, /* 0x349f */ { false, 0x349f, 0x349f }, /* 0x34a0 */ { false, 0x34a0, 0x34a0 }, /* 0x34a1 */ { false, 0x34a1, 0x34a1 }, /* 0x34a2 */ { false, 0x34a2, 0x34a2 }, /* 0x34a3 */ { false, 0x34a3, 0x34a3 }, /* 0x34a4 */ { false, 0x34a4, 0x34a4 }, /* 0x34a5 */ { false, 0x34a5, 0x34a5 }, /* 0x34a6 */ { false, 0x34a6, 0x34a6 }, /* 0x34a7 */ { false, 0x34a7, 0x34a7 }, /* 0x34a8 */ { false, 0x34a8, 0x34a8 }, /* 0x34a9 */ { false, 0x34a9, 0x34a9 }, /* 0x34aa */ { false, 0x34aa, 0x34aa }, /* 0x34ab */ { false, 0x34ab, 0x34ab }, /* 0x34ac */ { false, 0x34ac, 0x34ac }, /* 0x34ad */ { false, 0x34ad, 0x34ad }, /* 0x34ae */ { false, 0x34ae, 0x34ae }, /* 0x34af */ { false, 0x34af, 0x34af }, /* 0x34b0 */ { false, 0x34b0, 0x34b0 }, /* 0x34b1 */ { false, 0x34b1, 0x34b1 }, /* 0x34b2 */ { false, 0x34b2, 0x34b2 }, /* 0x34b3 */ { false, 0x34b3, 0x34b3 }, /* 0x34b4 */ { false, 0x34b4, 0x34b4 }, /* 0x34b5 */ { false, 0x34b5, 0x34b5 }, /* 0x34b6 */ { false, 0x34b6, 0x34b6 }, /* 0x34b7 */ { false, 0x34b7, 0x34b7 }, /* 0x34b8 */ { false, 0x34b8, 0x34b8 }, /* 0x34b9 */ { false, 0x34b9, 0x34b9 }, /* 0x34ba */ { false, 0x34ba, 0x34ba }, /* 0x34bb */ { false, 0x34bb, 0x34bb }, /* 0x34bc */ { false, 0x34bc, 0x34bc }, /* 0x34bd */ { false, 0x34bd, 0x34bd }, /* 0x34be */ { false, 0x34be, 0x34be }, /* 0x34bf */ { false, 0x34bf, 0x34bf }, /* 0x34c0 */ { false, 0x34c0, 0x34c0 }, /* 0x34c1 */ { false, 0x34c1, 0x34c1 }, /* 0x34c2 */ { false, 0x34c2, 0x34c2 }, /* 0x34c3 */ { false, 0x34c3, 0x34c3 }, /* 0x34c4 */ { false, 0x34c4, 0x34c4 }, /* 0x34c5 */ { false, 0x34c5, 0x34c5 }, /* 0x34c6 */ { false, 0x34c6, 0x34c6 }, /* 0x34c7 */ { false, 0x34c7, 0x34c7 }, /* 0x34c8 */ { false, 0x34c8, 0x34c8 }, /* 0x34c9 */ { false, 0x34c9, 0x34c9 }, /* 0x34ca */ { false, 0x34ca, 0x34ca }, /* 0x34cb */ { false, 0x34cb, 0x34cb }, /* 0x34cc */ { false, 0x34cc, 0x34cc }, /* 0x34cd */ { false, 0x34cd, 0x34cd }, /* 0x34ce */ { false, 0x34ce, 0x34ce }, /* 0x34cf */ { false, 0x34cf, 0x34cf }, /* 0x34d0 */ { false, 0x34d0, 0x34d0 }, /* 0x34d1 */ { false, 0x34d1, 0x34d1 }, /* 0x34d2 */ { false, 0x34d2, 0x34d2 }, /* 0x34d3 */ { false, 0x34d3, 0x34d3 }, /* 0x34d4 */ { false, 0x34d4, 0x34d4 }, /* 0x34d5 */ { false, 0x34d5, 0x34d5 }, /* 0x34d6 */ { false, 0x34d6, 0x34d6 }, /* 0x34d7 */ { false, 0x34d7, 0x34d7 }, /* 0x34d8 */ { false, 0x34d8, 0x34d8 }, /* 0x34d9 */ { false, 0x34d9, 0x34d9 }, /* 0x34da */ { false, 0x34da, 0x34da }, /* 0x34db */ { false, 0x34db, 0x34db }, /* 0x34dc */ { false, 0x34dc, 0x34dc }, /* 0x34dd */ { false, 0x34dd, 0x34dd }, /* 0x34de */ { false, 0x34de, 0x34de }, /* 0x34df */ { false, 0x34df, 0x34df }, /* 0x34e0 */ { false, 0x34e0, 0x34e0 }, /* 0x34e1 */ { false, 0x34e1, 0x34e1 }, /* 0x34e2 */ { false, 0x34e2, 0x34e2 }, /* 0x34e3 */ { false, 0x34e3, 0x34e3 }, /* 0x34e4 */ { false, 0x34e4, 0x34e4 }, /* 0x34e5 */ { false, 0x34e5, 0x34e5 }, /* 0x34e6 */ { false, 0x34e6, 0x34e6 }, /* 0x34e7 */ { false, 0x34e7, 0x34e7 }, /* 0x34e8 */ { false, 0x34e8, 0x34e8 }, /* 0x34e9 */ { false, 0x34e9, 0x34e9 }, /* 0x34ea */ { false, 0x34ea, 0x34ea }, /* 0x34eb */ { false, 0x34eb, 0x34eb }, /* 0x34ec */ { false, 0x34ec, 0x34ec }, /* 0x34ed */ { false, 0x34ed, 0x34ed }, /* 0x34ee */ { false, 0x34ee, 0x34ee }, /* 0x34ef */ { false, 0x34ef, 0x34ef }, /* 0x34f0 */ { false, 0x34f0, 0x34f0 }, /* 0x34f1 */ { false, 0x34f1, 0x34f1 }, /* 0x34f2 */ { false, 0x34f2, 0x34f2 }, /* 0x34f3 */ { false, 0x34f3, 0x34f3 }, /* 0x34f4 */ { false, 0x34f4, 0x34f4 }, /* 0x34f5 */ { false, 0x34f5, 0x34f5 }, /* 0x34f6 */ { false, 0x34f6, 0x34f6 }, /* 0x34f7 */ { false, 0x34f7, 0x34f7 }, /* 0x34f8 */ { false, 0x34f8, 0x34f8 }, /* 0x34f9 */ { false, 0x34f9, 0x34f9 }, /* 0x34fa */ { false, 0x34fa, 0x34fa }, /* 0x34fb */ { false, 0x34fb, 0x34fb }, /* 0x34fc */ { false, 0x34fc, 0x34fc }, /* 0x34fd */ { false, 0x34fd, 0x34fd }, /* 0x34fe */ { false, 0x34fe, 0x34fe }, /* 0x34ff */ { false, 0x34ff, 0x34ff }, /* 0x3500 */ { false, 0x3500, 0x3500 }, /* 0x3501 */ { false, 0x3501, 0x3501 }, /* 0x3502 */ { false, 0x3502, 0x3502 }, /* 0x3503 */ { false, 0x3503, 0x3503 }, /* 0x3504 */ { false, 0x3504, 0x3504 }, /* 0x3505 */ { false, 0x3505, 0x3505 }, /* 0x3506 */ { false, 0x3506, 0x3506 }, /* 0x3507 */ { false, 0x3507, 0x3507 }, /* 0x3508 */ { false, 0x3508, 0x3508 }, /* 0x3509 */ { false, 0x3509, 0x3509 }, /* 0x350a */ { false, 0x350a, 0x350a }, /* 0x350b */ { false, 0x350b, 0x350b }, /* 0x350c */ { false, 0x350c, 0x350c }, /* 0x350d */ { false, 0x350d, 0x350d }, /* 0x350e */ { false, 0x350e, 0x350e }, /* 0x350f */ { false, 0x350f, 0x350f }, /* 0x3510 */ { false, 0x3510, 0x3510 }, /* 0x3511 */ { false, 0x3511, 0x3511 }, /* 0x3512 */ { false, 0x3512, 0x3512 }, /* 0x3513 */ { false, 0x3513, 0x3513 }, /* 0x3514 */ { false, 0x3514, 0x3514 }, /* 0x3515 */ { false, 0x3515, 0x3515 }, /* 0x3516 */ { false, 0x3516, 0x3516 }, /* 0x3517 */ { false, 0x3517, 0x3517 }, /* 0x3518 */ { false, 0x3518, 0x3518 }, /* 0x3519 */ { false, 0x3519, 0x3519 }, /* 0x351a */ { false, 0x351a, 0x351a }, /* 0x351b */ { false, 0x351b, 0x351b }, /* 0x351c */ { false, 0x351c, 0x351c }, /* 0x351d */ { false, 0x351d, 0x351d }, /* 0x351e */ { false, 0x351e, 0x351e }, /* 0x351f */ { false, 0x351f, 0x351f }, /* 0x3520 */ { false, 0x3520, 0x3520 }, /* 0x3521 */ { false, 0x3521, 0x3521 }, /* 0x3522 */ { false, 0x3522, 0x3522 }, /* 0x3523 */ { false, 0x3523, 0x3523 }, /* 0x3524 */ { false, 0x3524, 0x3524 }, /* 0x3525 */ { false, 0x3525, 0x3525 }, /* 0x3526 */ { false, 0x3526, 0x3526 }, /* 0x3527 */ { false, 0x3527, 0x3527 }, /* 0x3528 */ { false, 0x3528, 0x3528 }, /* 0x3529 */ { false, 0x3529, 0x3529 }, /* 0x352a */ { false, 0x352a, 0x352a }, /* 0x352b */ { false, 0x352b, 0x352b }, /* 0x352c */ { false, 0x352c, 0x352c }, /* 0x352d */ { false, 0x352d, 0x352d }, /* 0x352e */ { false, 0x352e, 0x352e }, /* 0x352f */ { false, 0x352f, 0x352f }, /* 0x3530 */ { false, 0x3530, 0x3530 }, /* 0x3531 */ { false, 0x3531, 0x3531 }, /* 0x3532 */ { false, 0x3532, 0x3532 }, /* 0x3533 */ { false, 0x3533, 0x3533 }, /* 0x3534 */ { false, 0x3534, 0x3534 }, /* 0x3535 */ { false, 0x3535, 0x3535 }, /* 0x3536 */ { false, 0x3536, 0x3536 }, /* 0x3537 */ { false, 0x3537, 0x3537 }, /* 0x3538 */ { false, 0x3538, 0x3538 }, /* 0x3539 */ { false, 0x3539, 0x3539 }, /* 0x353a */ { false, 0x353a, 0x353a }, /* 0x353b */ { false, 0x353b, 0x353b }, /* 0x353c */ { false, 0x353c, 0x353c }, /* 0x353d */ { false, 0x353d, 0x353d }, /* 0x353e */ { false, 0x353e, 0x353e }, /* 0x353f */ { false, 0x353f, 0x353f }, /* 0x3540 */ { false, 0x3540, 0x3540 }, /* 0x3541 */ { false, 0x3541, 0x3541 }, /* 0x3542 */ { false, 0x3542, 0x3542 }, /* 0x3543 */ { false, 0x3543, 0x3543 }, /* 0x3544 */ { false, 0x3544, 0x3544 }, /* 0x3545 */ { false, 0x3545, 0x3545 }, /* 0x3546 */ { false, 0x3546, 0x3546 }, /* 0x3547 */ { false, 0x3547, 0x3547 }, /* 0x3548 */ { false, 0x3548, 0x3548 }, /* 0x3549 */ { false, 0x3549, 0x3549 }, /* 0x354a */ { false, 0x354a, 0x354a }, /* 0x354b */ { false, 0x354b, 0x354b }, /* 0x354c */ { false, 0x354c, 0x354c }, /* 0x354d */ { false, 0x354d, 0x354d }, /* 0x354e */ { false, 0x354e, 0x354e }, /* 0x354f */ { false, 0x354f, 0x354f }, /* 0x3550 */ { false, 0x3550, 0x3550 }, /* 0x3551 */ { false, 0x3551, 0x3551 }, /* 0x3552 */ { false, 0x3552, 0x3552 }, /* 0x3553 */ { false, 0x3553, 0x3553 }, /* 0x3554 */ { false, 0x3554, 0x3554 }, /* 0x3555 */ { false, 0x3555, 0x3555 }, /* 0x3556 */ { false, 0x3556, 0x3556 }, /* 0x3557 */ { false, 0x3557, 0x3557 }, /* 0x3558 */ { false, 0x3558, 0x3558 }, /* 0x3559 */ { false, 0x3559, 0x3559 }, /* 0x355a */ { false, 0x355a, 0x355a }, /* 0x355b */ { false, 0x355b, 0x355b }, /* 0x355c */ { false, 0x355c, 0x355c }, /* 0x355d */ { false, 0x355d, 0x355d }, /* 0x355e */ { false, 0x355e, 0x355e }, /* 0x355f */ { false, 0x355f, 0x355f }, /* 0x3560 */ { false, 0x3560, 0x3560 }, /* 0x3561 */ { false, 0x3561, 0x3561 }, /* 0x3562 */ { false, 0x3562, 0x3562 }, /* 0x3563 */ { false, 0x3563, 0x3563 }, /* 0x3564 */ { false, 0x3564, 0x3564 }, /* 0x3565 */ { false, 0x3565, 0x3565 }, /* 0x3566 */ { false, 0x3566, 0x3566 }, /* 0x3567 */ { false, 0x3567, 0x3567 }, /* 0x3568 */ { false, 0x3568, 0x3568 }, /* 0x3569 */ { false, 0x3569, 0x3569 }, /* 0x356a */ { false, 0x356a, 0x356a }, /* 0x356b */ { false, 0x356b, 0x356b }, /* 0x356c */ { false, 0x356c, 0x356c }, /* 0x356d */ { false, 0x356d, 0x356d }, /* 0x356e */ { false, 0x356e, 0x356e }, /* 0x356f */ { false, 0x356f, 0x356f }, /* 0x3570 */ { false, 0x3570, 0x3570 }, /* 0x3571 */ { false, 0x3571, 0x3571 }, /* 0x3572 */ { false, 0x3572, 0x3572 }, /* 0x3573 */ { false, 0x3573, 0x3573 }, /* 0x3574 */ { false, 0x3574, 0x3574 }, /* 0x3575 */ { false, 0x3575, 0x3575 }, /* 0x3576 */ { false, 0x3576, 0x3576 }, /* 0x3577 */ { false, 0x3577, 0x3577 }, /* 0x3578 */ { false, 0x3578, 0x3578 }, /* 0x3579 */ { false, 0x3579, 0x3579 }, /* 0x357a */ { false, 0x357a, 0x357a }, /* 0x357b */ { false, 0x357b, 0x357b }, /* 0x357c */ { false, 0x357c, 0x357c }, /* 0x357d */ { false, 0x357d, 0x357d }, /* 0x357e */ { false, 0x357e, 0x357e }, /* 0x357f */ { false, 0x357f, 0x357f }, /* 0x3580 */ { false, 0x3580, 0x3580 }, /* 0x3581 */ { false, 0x3581, 0x3581 }, /* 0x3582 */ { false, 0x3582, 0x3582 }, /* 0x3583 */ { false, 0x3583, 0x3583 }, /* 0x3584 */ { false, 0x3584, 0x3584 }, /* 0x3585 */ { false, 0x3585, 0x3585 }, /* 0x3586 */ { false, 0x3586, 0x3586 }, /* 0x3587 */ { false, 0x3587, 0x3587 }, /* 0x3588 */ { false, 0x3588, 0x3588 }, /* 0x3589 */ { false, 0x3589, 0x3589 }, /* 0x358a */ { false, 0x358a, 0x358a }, /* 0x358b */ { false, 0x358b, 0x358b }, /* 0x358c */ { false, 0x358c, 0x358c }, /* 0x358d */ { false, 0x358d, 0x358d }, /* 0x358e */ { false, 0x358e, 0x358e }, /* 0x358f */ { false, 0x358f, 0x358f }, /* 0x3590 */ { false, 0x3590, 0x3590 }, /* 0x3591 */ { false, 0x3591, 0x3591 }, /* 0x3592 */ { false, 0x3592, 0x3592 }, /* 0x3593 */ { false, 0x3593, 0x3593 }, /* 0x3594 */ { false, 0x3594, 0x3594 }, /* 0x3595 */ { false, 0x3595, 0x3595 }, /* 0x3596 */ { false, 0x3596, 0x3596 }, /* 0x3597 */ { false, 0x3597, 0x3597 }, /* 0x3598 */ { false, 0x3598, 0x3598 }, /* 0x3599 */ { false, 0x3599, 0x3599 }, /* 0x359a */ { false, 0x359a, 0x359a }, /* 0x359b */ { false, 0x359b, 0x359b }, /* 0x359c */ { false, 0x359c, 0x359c }, /* 0x359d */ { false, 0x359d, 0x359d }, /* 0x359e */ { false, 0x359e, 0x359e }, /* 0x359f */ { false, 0x359f, 0x359f }, /* 0x35a0 */ { false, 0x35a0, 0x35a0 }, /* 0x35a1 */ { false, 0x35a1, 0x35a1 }, /* 0x35a2 */ { false, 0x35a2, 0x35a2 }, /* 0x35a3 */ { false, 0x35a3, 0x35a3 }, /* 0x35a4 */ { false, 0x35a4, 0x35a4 }, /* 0x35a5 */ { false, 0x35a5, 0x35a5 }, /* 0x35a6 */ { false, 0x35a6, 0x35a6 }, /* 0x35a7 */ { false, 0x35a7, 0x35a7 }, /* 0x35a8 */ { false, 0x35a8, 0x35a8 }, /* 0x35a9 */ { false, 0x35a9, 0x35a9 }, /* 0x35aa */ { false, 0x35aa, 0x35aa }, /* 0x35ab */ { false, 0x35ab, 0x35ab }, /* 0x35ac */ { false, 0x35ac, 0x35ac }, /* 0x35ad */ { false, 0x35ad, 0x35ad }, /* 0x35ae */ { false, 0x35ae, 0x35ae }, /* 0x35af */ { false, 0x35af, 0x35af }, /* 0x35b0 */ { false, 0x35b0, 0x35b0 }, /* 0x35b1 */ { false, 0x35b1, 0x35b1 }, /* 0x35b2 */ { false, 0x35b2, 0x35b2 }, /* 0x35b3 */ { false, 0x35b3, 0x35b3 }, /* 0x35b4 */ { false, 0x35b4, 0x35b4 }, /* 0x35b5 */ { false, 0x35b5, 0x35b5 }, /* 0x35b6 */ { false, 0x35b6, 0x35b6 }, /* 0x35b7 */ { false, 0x35b7, 0x35b7 }, /* 0x35b8 */ { false, 0x35b8, 0x35b8 }, /* 0x35b9 */ { false, 0x35b9, 0x35b9 }, /* 0x35ba */ { false, 0x35ba, 0x35ba }, /* 0x35bb */ { false, 0x35bb, 0x35bb }, /* 0x35bc */ { false, 0x35bc, 0x35bc }, /* 0x35bd */ { false, 0x35bd, 0x35bd }, /* 0x35be */ { false, 0x35be, 0x35be }, /* 0x35bf */ { false, 0x35bf, 0x35bf }, /* 0x35c0 */ { false, 0x35c0, 0x35c0 }, /* 0x35c1 */ { false, 0x35c1, 0x35c1 }, /* 0x35c2 */ { false, 0x35c2, 0x35c2 }, /* 0x35c3 */ { false, 0x35c3, 0x35c3 }, /* 0x35c4 */ { false, 0x35c4, 0x35c4 }, /* 0x35c5 */ { false, 0x35c5, 0x35c5 }, /* 0x35c6 */ { false, 0x35c6, 0x35c6 }, /* 0x35c7 */ { false, 0x35c7, 0x35c7 }, /* 0x35c8 */ { false, 0x35c8, 0x35c8 }, /* 0x35c9 */ { false, 0x35c9, 0x35c9 }, /* 0x35ca */ { false, 0x35ca, 0x35ca }, /* 0x35cb */ { false, 0x35cb, 0x35cb }, /* 0x35cc */ { false, 0x35cc, 0x35cc }, /* 0x35cd */ { false, 0x35cd, 0x35cd }, /* 0x35ce */ { false, 0x35ce, 0x35ce }, /* 0x35cf */ { false, 0x35cf, 0x35cf }, /* 0x35d0 */ { false, 0x35d0, 0x35d0 }, /* 0x35d1 */ { false, 0x35d1, 0x35d1 }, /* 0x35d2 */ { false, 0x35d2, 0x35d2 }, /* 0x35d3 */ { false, 0x35d3, 0x35d3 }, /* 0x35d4 */ { false, 0x35d4, 0x35d4 }, /* 0x35d5 */ { false, 0x35d5, 0x35d5 }, /* 0x35d6 */ { false, 0x35d6, 0x35d6 }, /* 0x35d7 */ { false, 0x35d7, 0x35d7 }, /* 0x35d8 */ { false, 0x35d8, 0x35d8 }, /* 0x35d9 */ { false, 0x35d9, 0x35d9 }, /* 0x35da */ { false, 0x35da, 0x35da }, /* 0x35db */ { false, 0x35db, 0x35db }, /* 0x35dc */ { false, 0x35dc, 0x35dc }, /* 0x35dd */ { false, 0x35dd, 0x35dd }, /* 0x35de */ { false, 0x35de, 0x35de }, /* 0x35df */ { false, 0x35df, 0x35df }, /* 0x35e0 */ { false, 0x35e0, 0x35e0 }, /* 0x35e1 */ { false, 0x35e1, 0x35e1 }, /* 0x35e2 */ { false, 0x35e2, 0x35e2 }, /* 0x35e3 */ { false, 0x35e3, 0x35e3 }, /* 0x35e4 */ { false, 0x35e4, 0x35e4 }, /* 0x35e5 */ { false, 0x35e5, 0x35e5 }, /* 0x35e6 */ { false, 0x35e6, 0x35e6 }, /* 0x35e7 */ { false, 0x35e7, 0x35e7 }, /* 0x35e8 */ { false, 0x35e8, 0x35e8 }, /* 0x35e9 */ { false, 0x35e9, 0x35e9 }, /* 0x35ea */ { false, 0x35ea, 0x35ea }, /* 0x35eb */ { false, 0x35eb, 0x35eb }, /* 0x35ec */ { false, 0x35ec, 0x35ec }, /* 0x35ed */ { false, 0x35ed, 0x35ed }, /* 0x35ee */ { false, 0x35ee, 0x35ee }, /* 0x35ef */ { false, 0x35ef, 0x35ef }, /* 0x35f0 */ { false, 0x35f0, 0x35f0 }, /* 0x35f1 */ { false, 0x35f1, 0x35f1 }, /* 0x35f2 */ { false, 0x35f2, 0x35f2 }, /* 0x35f3 */ { false, 0x35f3, 0x35f3 }, /* 0x35f4 */ { false, 0x35f4, 0x35f4 }, /* 0x35f5 */ { false, 0x35f5, 0x35f5 }, /* 0x35f6 */ { false, 0x35f6, 0x35f6 }, /* 0x35f7 */ { false, 0x35f7, 0x35f7 }, /* 0x35f8 */ { false, 0x35f8, 0x35f8 }, /* 0x35f9 */ { false, 0x35f9, 0x35f9 }, /* 0x35fa */ { false, 0x35fa, 0x35fa }, /* 0x35fb */ { false, 0x35fb, 0x35fb }, /* 0x35fc */ { false, 0x35fc, 0x35fc }, /* 0x35fd */ { false, 0x35fd, 0x35fd }, /* 0x35fe */ { false, 0x35fe, 0x35fe }, /* 0x35ff */ { false, 0x35ff, 0x35ff }, /* 0x3600 */ { false, 0x3600, 0x3600 }, /* 0x3601 */ { false, 0x3601, 0x3601 }, /* 0x3602 */ { false, 0x3602, 0x3602 }, /* 0x3603 */ { false, 0x3603, 0x3603 }, /* 0x3604 */ { false, 0x3604, 0x3604 }, /* 0x3605 */ { false, 0x3605, 0x3605 }, /* 0x3606 */ { false, 0x3606, 0x3606 }, /* 0x3607 */ { false, 0x3607, 0x3607 }, /* 0x3608 */ { false, 0x3608, 0x3608 }, /* 0x3609 */ { false, 0x3609, 0x3609 }, /* 0x360a */ { false, 0x360a, 0x360a }, /* 0x360b */ { false, 0x360b, 0x360b }, /* 0x360c */ { false, 0x360c, 0x360c }, /* 0x360d */ { false, 0x360d, 0x360d }, /* 0x360e */ { false, 0x360e, 0x360e }, /* 0x360f */ { false, 0x360f, 0x360f }, /* 0x3610 */ { false, 0x3610, 0x3610 }, /* 0x3611 */ { false, 0x3611, 0x3611 }, /* 0x3612 */ { false, 0x3612, 0x3612 }, /* 0x3613 */ { false, 0x3613, 0x3613 }, /* 0x3614 */ { false, 0x3614, 0x3614 }, /* 0x3615 */ { false, 0x3615, 0x3615 }, /* 0x3616 */ { false, 0x3616, 0x3616 }, /* 0x3617 */ { false, 0x3617, 0x3617 }, /* 0x3618 */ { false, 0x3618, 0x3618 }, /* 0x3619 */ { false, 0x3619, 0x3619 }, /* 0x361a */ { false, 0x361a, 0x361a }, /* 0x361b */ { false, 0x361b, 0x361b }, /* 0x361c */ { false, 0x361c, 0x361c }, /* 0x361d */ { false, 0x361d, 0x361d }, /* 0x361e */ { false, 0x361e, 0x361e }, /* 0x361f */ { false, 0x361f, 0x361f }, /* 0x3620 */ { false, 0x3620, 0x3620 }, /* 0x3621 */ { false, 0x3621, 0x3621 }, /* 0x3622 */ { false, 0x3622, 0x3622 }, /* 0x3623 */ { false, 0x3623, 0x3623 }, /* 0x3624 */ { false, 0x3624, 0x3624 }, /* 0x3625 */ { false, 0x3625, 0x3625 }, /* 0x3626 */ { false, 0x3626, 0x3626 }, /* 0x3627 */ { false, 0x3627, 0x3627 }, /* 0x3628 */ { false, 0x3628, 0x3628 }, /* 0x3629 */ { false, 0x3629, 0x3629 }, /* 0x362a */ { false, 0x362a, 0x362a }, /* 0x362b */ { false, 0x362b, 0x362b }, /* 0x362c */ { false, 0x362c, 0x362c }, /* 0x362d */ { false, 0x362d, 0x362d }, /* 0x362e */ { false, 0x362e, 0x362e }, /* 0x362f */ { false, 0x362f, 0x362f }, /* 0x3630 */ { false, 0x3630, 0x3630 }, /* 0x3631 */ { false, 0x3631, 0x3631 }, /* 0x3632 */ { false, 0x3632, 0x3632 }, /* 0x3633 */ { false, 0x3633, 0x3633 }, /* 0x3634 */ { false, 0x3634, 0x3634 }, /* 0x3635 */ { false, 0x3635, 0x3635 }, /* 0x3636 */ { false, 0x3636, 0x3636 }, /* 0x3637 */ { false, 0x3637, 0x3637 }, /* 0x3638 */ { false, 0x3638, 0x3638 }, /* 0x3639 */ { false, 0x3639, 0x3639 }, /* 0x363a */ { false, 0x363a, 0x363a }, /* 0x363b */ { false, 0x363b, 0x363b }, /* 0x363c */ { false, 0x363c, 0x363c }, /* 0x363d */ { false, 0x363d, 0x363d }, /* 0x363e */ { false, 0x363e, 0x363e }, /* 0x363f */ { false, 0x363f, 0x363f }, /* 0x3640 */ { false, 0x3640, 0x3640 }, /* 0x3641 */ { false, 0x3641, 0x3641 }, /* 0x3642 */ { false, 0x3642, 0x3642 }, /* 0x3643 */ { false, 0x3643, 0x3643 }, /* 0x3644 */ { false, 0x3644, 0x3644 }, /* 0x3645 */ { false, 0x3645, 0x3645 }, /* 0x3646 */ { false, 0x3646, 0x3646 }, /* 0x3647 */ { false, 0x3647, 0x3647 }, /* 0x3648 */ { false, 0x3648, 0x3648 }, /* 0x3649 */ { false, 0x3649, 0x3649 }, /* 0x364a */ { false, 0x364a, 0x364a }, /* 0x364b */ { false, 0x364b, 0x364b }, /* 0x364c */ { false, 0x364c, 0x364c }, /* 0x364d */ { false, 0x364d, 0x364d }, /* 0x364e */ { false, 0x364e, 0x364e }, /* 0x364f */ { false, 0x364f, 0x364f }, /* 0x3650 */ { false, 0x3650, 0x3650 }, /* 0x3651 */ { false, 0x3651, 0x3651 }, /* 0x3652 */ { false, 0x3652, 0x3652 }, /* 0x3653 */ { false, 0x3653, 0x3653 }, /* 0x3654 */ { false, 0x3654, 0x3654 }, /* 0x3655 */ { false, 0x3655, 0x3655 }, /* 0x3656 */ { false, 0x3656, 0x3656 }, /* 0x3657 */ { false, 0x3657, 0x3657 }, /* 0x3658 */ { false, 0x3658, 0x3658 }, /* 0x3659 */ { false, 0x3659, 0x3659 }, /* 0x365a */ { false, 0x365a, 0x365a }, /* 0x365b */ { false, 0x365b, 0x365b }, /* 0x365c */ { false, 0x365c, 0x365c }, /* 0x365d */ { false, 0x365d, 0x365d }, /* 0x365e */ { false, 0x365e, 0x365e }, /* 0x365f */ { false, 0x365f, 0x365f }, /* 0x3660 */ { false, 0x3660, 0x3660 }, /* 0x3661 */ { false, 0x3661, 0x3661 }, /* 0x3662 */ { false, 0x3662, 0x3662 }, /* 0x3663 */ { false, 0x3663, 0x3663 }, /* 0x3664 */ { false, 0x3664, 0x3664 }, /* 0x3665 */ { false, 0x3665, 0x3665 }, /* 0x3666 */ { false, 0x3666, 0x3666 }, /* 0x3667 */ { false, 0x3667, 0x3667 }, /* 0x3668 */ { false, 0x3668, 0x3668 }, /* 0x3669 */ { false, 0x3669, 0x3669 }, /* 0x366a */ { false, 0x366a, 0x366a }, /* 0x366b */ { false, 0x366b, 0x366b }, /* 0x366c */ { false, 0x366c, 0x366c }, /* 0x366d */ { false, 0x366d, 0x366d }, /* 0x366e */ { false, 0x366e, 0x366e }, /* 0x366f */ { false, 0x366f, 0x366f }, /* 0x3670 */ { false, 0x3670, 0x3670 }, /* 0x3671 */ { false, 0x3671, 0x3671 }, /* 0x3672 */ { false, 0x3672, 0x3672 }, /* 0x3673 */ { false, 0x3673, 0x3673 }, /* 0x3674 */ { false, 0x3674, 0x3674 }, /* 0x3675 */ { false, 0x3675, 0x3675 }, /* 0x3676 */ { false, 0x3676, 0x3676 }, /* 0x3677 */ { false, 0x3677, 0x3677 }, /* 0x3678 */ { false, 0x3678, 0x3678 }, /* 0x3679 */ { false, 0x3679, 0x3679 }, /* 0x367a */ { false, 0x367a, 0x367a }, /* 0x367b */ { false, 0x367b, 0x367b }, /* 0x367c */ { false, 0x367c, 0x367c }, /* 0x367d */ { false, 0x367d, 0x367d }, /* 0x367e */ { false, 0x367e, 0x367e }, /* 0x367f */ { false, 0x367f, 0x367f }, /* 0x3680 */ { false, 0x3680, 0x3680 }, /* 0x3681 */ { false, 0x3681, 0x3681 }, /* 0x3682 */ { false, 0x3682, 0x3682 }, /* 0x3683 */ { false, 0x3683, 0x3683 }, /* 0x3684 */ { false, 0x3684, 0x3684 }, /* 0x3685 */ { false, 0x3685, 0x3685 }, /* 0x3686 */ { false, 0x3686, 0x3686 }, /* 0x3687 */ { false, 0x3687, 0x3687 }, /* 0x3688 */ { false, 0x3688, 0x3688 }, /* 0x3689 */ { false, 0x3689, 0x3689 }, /* 0x368a */ { false, 0x368a, 0x368a }, /* 0x368b */ { false, 0x368b, 0x368b }, /* 0x368c */ { false, 0x368c, 0x368c }, /* 0x368d */ { false, 0x368d, 0x368d }, /* 0x368e */ { false, 0x368e, 0x368e }, /* 0x368f */ { false, 0x368f, 0x368f }, /* 0x3690 */ { false, 0x3690, 0x3690 }, /* 0x3691 */ { false, 0x3691, 0x3691 }, /* 0x3692 */ { false, 0x3692, 0x3692 }, /* 0x3693 */ { false, 0x3693, 0x3693 }, /* 0x3694 */ { false, 0x3694, 0x3694 }, /* 0x3695 */ { false, 0x3695, 0x3695 }, /* 0x3696 */ { false, 0x3696, 0x3696 }, /* 0x3697 */ { false, 0x3697, 0x3697 }, /* 0x3698 */ { false, 0x3698, 0x3698 }, /* 0x3699 */ { false, 0x3699, 0x3699 }, /* 0x369a */ { false, 0x369a, 0x369a }, /* 0x369b */ { false, 0x369b, 0x369b }, /* 0x369c */ { false, 0x369c, 0x369c }, /* 0x369d */ { false, 0x369d, 0x369d }, /* 0x369e */ { false, 0x369e, 0x369e }, /* 0x369f */ { false, 0x369f, 0x369f }, /* 0x36a0 */ { false, 0x36a0, 0x36a0 }, /* 0x36a1 */ { false, 0x36a1, 0x36a1 }, /* 0x36a2 */ { false, 0x36a2, 0x36a2 }, /* 0x36a3 */ { false, 0x36a3, 0x36a3 }, /* 0x36a4 */ { false, 0x36a4, 0x36a4 }, /* 0x36a5 */ { false, 0x36a5, 0x36a5 }, /* 0x36a6 */ { false, 0x36a6, 0x36a6 }, /* 0x36a7 */ { false, 0x36a7, 0x36a7 }, /* 0x36a8 */ { false, 0x36a8, 0x36a8 }, /* 0x36a9 */ { false, 0x36a9, 0x36a9 }, /* 0x36aa */ { false, 0x36aa, 0x36aa }, /* 0x36ab */ { false, 0x36ab, 0x36ab }, /* 0x36ac */ { false, 0x36ac, 0x36ac }, /* 0x36ad */ { false, 0x36ad, 0x36ad }, /* 0x36ae */ { false, 0x36ae, 0x36ae }, /* 0x36af */ { false, 0x36af, 0x36af }, /* 0x36b0 */ { false, 0x36b0, 0x36b0 }, /* 0x36b1 */ { false, 0x36b1, 0x36b1 }, /* 0x36b2 */ { false, 0x36b2, 0x36b2 }, /* 0x36b3 */ { false, 0x36b3, 0x36b3 }, /* 0x36b4 */ { false, 0x36b4, 0x36b4 }, /* 0x36b5 */ { false, 0x36b5, 0x36b5 }, /* 0x36b6 */ { false, 0x36b6, 0x36b6 }, /* 0x36b7 */ { false, 0x36b7, 0x36b7 }, /* 0x36b8 */ { false, 0x36b8, 0x36b8 }, /* 0x36b9 */ { false, 0x36b9, 0x36b9 }, /* 0x36ba */ { false, 0x36ba, 0x36ba }, /* 0x36bb */ { false, 0x36bb, 0x36bb }, /* 0x36bc */ { false, 0x36bc, 0x36bc }, /* 0x36bd */ { false, 0x36bd, 0x36bd }, /* 0x36be */ { false, 0x36be, 0x36be }, /* 0x36bf */ { false, 0x36bf, 0x36bf }, /* 0x36c0 */ { false, 0x36c0, 0x36c0 }, /* 0x36c1 */ { false, 0x36c1, 0x36c1 }, /* 0x36c2 */ { false, 0x36c2, 0x36c2 }, /* 0x36c3 */ { false, 0x36c3, 0x36c3 }, /* 0x36c4 */ { false, 0x36c4, 0x36c4 }, /* 0x36c5 */ { false, 0x36c5, 0x36c5 }, /* 0x36c6 */ { false, 0x36c6, 0x36c6 }, /* 0x36c7 */ { false, 0x36c7, 0x36c7 }, /* 0x36c8 */ { false, 0x36c8, 0x36c8 }, /* 0x36c9 */ { false, 0x36c9, 0x36c9 }, /* 0x36ca */ { false, 0x36ca, 0x36ca }, /* 0x36cb */ { false, 0x36cb, 0x36cb }, /* 0x36cc */ { false, 0x36cc, 0x36cc }, /* 0x36cd */ { false, 0x36cd, 0x36cd }, /* 0x36ce */ { false, 0x36ce, 0x36ce }, /* 0x36cf */ { false, 0x36cf, 0x36cf }, /* 0x36d0 */ { false, 0x36d0, 0x36d0 }, /* 0x36d1 */ { false, 0x36d1, 0x36d1 }, /* 0x36d2 */ { false, 0x36d2, 0x36d2 }, /* 0x36d3 */ { false, 0x36d3, 0x36d3 }, /* 0x36d4 */ { false, 0x36d4, 0x36d4 }, /* 0x36d5 */ { false, 0x36d5, 0x36d5 }, /* 0x36d6 */ { false, 0x36d6, 0x36d6 }, /* 0x36d7 */ { false, 0x36d7, 0x36d7 }, /* 0x36d8 */ { false, 0x36d8, 0x36d8 }, /* 0x36d9 */ { false, 0x36d9, 0x36d9 }, /* 0x36da */ { false, 0x36da, 0x36da }, /* 0x36db */ { false, 0x36db, 0x36db }, /* 0x36dc */ { false, 0x36dc, 0x36dc }, /* 0x36dd */ { false, 0x36dd, 0x36dd }, /* 0x36de */ { false, 0x36de, 0x36de }, /* 0x36df */ { false, 0x36df, 0x36df }, /* 0x36e0 */ { false, 0x36e0, 0x36e0 }, /* 0x36e1 */ { false, 0x36e1, 0x36e1 }, /* 0x36e2 */ { false, 0x36e2, 0x36e2 }, /* 0x36e3 */ { false, 0x36e3, 0x36e3 }, /* 0x36e4 */ { false, 0x36e4, 0x36e4 }, /* 0x36e5 */ { false, 0x36e5, 0x36e5 }, /* 0x36e6 */ { false, 0x36e6, 0x36e6 }, /* 0x36e7 */ { false, 0x36e7, 0x36e7 }, /* 0x36e8 */ { false, 0x36e8, 0x36e8 }, /* 0x36e9 */ { false, 0x36e9, 0x36e9 }, /* 0x36ea */ { false, 0x36ea, 0x36ea }, /* 0x36eb */ { false, 0x36eb, 0x36eb }, /* 0x36ec */ { false, 0x36ec, 0x36ec }, /* 0x36ed */ { false, 0x36ed, 0x36ed }, /* 0x36ee */ { false, 0x36ee, 0x36ee }, /* 0x36ef */ { false, 0x36ef, 0x36ef }, /* 0x36f0 */ { false, 0x36f0, 0x36f0 }, /* 0x36f1 */ { false, 0x36f1, 0x36f1 }, /* 0x36f2 */ { false, 0x36f2, 0x36f2 }, /* 0x36f3 */ { false, 0x36f3, 0x36f3 }, /* 0x36f4 */ { false, 0x36f4, 0x36f4 }, /* 0x36f5 */ { false, 0x36f5, 0x36f5 }, /* 0x36f6 */ { false, 0x36f6, 0x36f6 }, /* 0x36f7 */ { false, 0x36f7, 0x36f7 }, /* 0x36f8 */ { false, 0x36f8, 0x36f8 }, /* 0x36f9 */ { false, 0x36f9, 0x36f9 }, /* 0x36fa */ { false, 0x36fa, 0x36fa }, /* 0x36fb */ { false, 0x36fb, 0x36fb }, /* 0x36fc */ { false, 0x36fc, 0x36fc }, /* 0x36fd */ { false, 0x36fd, 0x36fd }, /* 0x36fe */ { false, 0x36fe, 0x36fe }, /* 0x36ff */ { false, 0x36ff, 0x36ff }, /* 0x3700 */ { false, 0x3700, 0x3700 }, /* 0x3701 */ { false, 0x3701, 0x3701 }, /* 0x3702 */ { false, 0x3702, 0x3702 }, /* 0x3703 */ { false, 0x3703, 0x3703 }, /* 0x3704 */ { false, 0x3704, 0x3704 }, /* 0x3705 */ { false, 0x3705, 0x3705 }, /* 0x3706 */ { false, 0x3706, 0x3706 }, /* 0x3707 */ { false, 0x3707, 0x3707 }, /* 0x3708 */ { false, 0x3708, 0x3708 }, /* 0x3709 */ { false, 0x3709, 0x3709 }, /* 0x370a */ { false, 0x370a, 0x370a }, /* 0x370b */ { false, 0x370b, 0x370b }, /* 0x370c */ { false, 0x370c, 0x370c }, /* 0x370d */ { false, 0x370d, 0x370d }, /* 0x370e */ { false, 0x370e, 0x370e }, /* 0x370f */ { false, 0x370f, 0x370f }, /* 0x3710 */ { false, 0x3710, 0x3710 }, /* 0x3711 */ { false, 0x3711, 0x3711 }, /* 0x3712 */ { false, 0x3712, 0x3712 }, /* 0x3713 */ { false, 0x3713, 0x3713 }, /* 0x3714 */ { false, 0x3714, 0x3714 }, /* 0x3715 */ { false, 0x3715, 0x3715 }, /* 0x3716 */ { false, 0x3716, 0x3716 }, /* 0x3717 */ { false, 0x3717, 0x3717 }, /* 0x3718 */ { false, 0x3718, 0x3718 }, /* 0x3719 */ { false, 0x3719, 0x3719 }, /* 0x371a */ { false, 0x371a, 0x371a }, /* 0x371b */ { false, 0x371b, 0x371b }, /* 0x371c */ { false, 0x371c, 0x371c }, /* 0x371d */ { false, 0x371d, 0x371d }, /* 0x371e */ { false, 0x371e, 0x371e }, /* 0x371f */ { false, 0x371f, 0x371f }, /* 0x3720 */ { false, 0x3720, 0x3720 }, /* 0x3721 */ { false, 0x3721, 0x3721 }, /* 0x3722 */ { false, 0x3722, 0x3722 }, /* 0x3723 */ { false, 0x3723, 0x3723 }, /* 0x3724 */ { false, 0x3724, 0x3724 }, /* 0x3725 */ { false, 0x3725, 0x3725 }, /* 0x3726 */ { false, 0x3726, 0x3726 }, /* 0x3727 */ { false, 0x3727, 0x3727 }, /* 0x3728 */ { false, 0x3728, 0x3728 }, /* 0x3729 */ { false, 0x3729, 0x3729 }, /* 0x372a */ { false, 0x372a, 0x372a }, /* 0x372b */ { false, 0x372b, 0x372b }, /* 0x372c */ { false, 0x372c, 0x372c }, /* 0x372d */ { false, 0x372d, 0x372d }, /* 0x372e */ { false, 0x372e, 0x372e }, /* 0x372f */ { false, 0x372f, 0x372f }, /* 0x3730 */ { false, 0x3730, 0x3730 }, /* 0x3731 */ { false, 0x3731, 0x3731 }, /* 0x3732 */ { false, 0x3732, 0x3732 }, /* 0x3733 */ { false, 0x3733, 0x3733 }, /* 0x3734 */ { false, 0x3734, 0x3734 }, /* 0x3735 */ { false, 0x3735, 0x3735 }, /* 0x3736 */ { false, 0x3736, 0x3736 }, /* 0x3737 */ { false, 0x3737, 0x3737 }, /* 0x3738 */ { false, 0x3738, 0x3738 }, /* 0x3739 */ { false, 0x3739, 0x3739 }, /* 0x373a */ { false, 0x373a, 0x373a }, /* 0x373b */ { false, 0x373b, 0x373b }, /* 0x373c */ { false, 0x373c, 0x373c }, /* 0x373d */ { false, 0x373d, 0x373d }, /* 0x373e */ { false, 0x373e, 0x373e }, /* 0x373f */ { false, 0x373f, 0x373f }, /* 0x3740 */ { false, 0x3740, 0x3740 }, /* 0x3741 */ { false, 0x3741, 0x3741 }, /* 0x3742 */ { false, 0x3742, 0x3742 }, /* 0x3743 */ { false, 0x3743, 0x3743 }, /* 0x3744 */ { false, 0x3744, 0x3744 }, /* 0x3745 */ { false, 0x3745, 0x3745 }, /* 0x3746 */ { false, 0x3746, 0x3746 }, /* 0x3747 */ { false, 0x3747, 0x3747 }, /* 0x3748 */ { false, 0x3748, 0x3748 }, /* 0x3749 */ { false, 0x3749, 0x3749 }, /* 0x374a */ { false, 0x374a, 0x374a }, /* 0x374b */ { false, 0x374b, 0x374b }, /* 0x374c */ { false, 0x374c, 0x374c }, /* 0x374d */ { false, 0x374d, 0x374d }, /* 0x374e */ { false, 0x374e, 0x374e }, /* 0x374f */ { false, 0x374f, 0x374f }, /* 0x3750 */ { false, 0x3750, 0x3750 }, /* 0x3751 */ { false, 0x3751, 0x3751 }, /* 0x3752 */ { false, 0x3752, 0x3752 }, /* 0x3753 */ { false, 0x3753, 0x3753 }, /* 0x3754 */ { false, 0x3754, 0x3754 }, /* 0x3755 */ { false, 0x3755, 0x3755 }, /* 0x3756 */ { false, 0x3756, 0x3756 }, /* 0x3757 */ { false, 0x3757, 0x3757 }, /* 0x3758 */ { false, 0x3758, 0x3758 }, /* 0x3759 */ { false, 0x3759, 0x3759 }, /* 0x375a */ { false, 0x375a, 0x375a }, /* 0x375b */ { false, 0x375b, 0x375b }, /* 0x375c */ { false, 0x375c, 0x375c }, /* 0x375d */ { false, 0x375d, 0x375d }, /* 0x375e */ { false, 0x375e, 0x375e }, /* 0x375f */ { false, 0x375f, 0x375f }, /* 0x3760 */ { false, 0x3760, 0x3760 }, /* 0x3761 */ { false, 0x3761, 0x3761 }, /* 0x3762 */ { false, 0x3762, 0x3762 }, /* 0x3763 */ { false, 0x3763, 0x3763 }, /* 0x3764 */ { false, 0x3764, 0x3764 }, /* 0x3765 */ { false, 0x3765, 0x3765 }, /* 0x3766 */ { false, 0x3766, 0x3766 }, /* 0x3767 */ { false, 0x3767, 0x3767 }, /* 0x3768 */ { false, 0x3768, 0x3768 }, /* 0x3769 */ { false, 0x3769, 0x3769 }, /* 0x376a */ { false, 0x376a, 0x376a }, /* 0x376b */ { false, 0x376b, 0x376b }, /* 0x376c */ { false, 0x376c, 0x376c }, /* 0x376d */ { false, 0x376d, 0x376d }, /* 0x376e */ { false, 0x376e, 0x376e }, /* 0x376f */ { false, 0x376f, 0x376f }, /* 0x3770 */ { false, 0x3770, 0x3770 }, /* 0x3771 */ { false, 0x3771, 0x3771 }, /* 0x3772 */ { false, 0x3772, 0x3772 }, /* 0x3773 */ { false, 0x3773, 0x3773 }, /* 0x3774 */ { false, 0x3774, 0x3774 }, /* 0x3775 */ { false, 0x3775, 0x3775 }, /* 0x3776 */ { false, 0x3776, 0x3776 }, /* 0x3777 */ { false, 0x3777, 0x3777 }, /* 0x3778 */ { false, 0x3778, 0x3778 }, /* 0x3779 */ { false, 0x3779, 0x3779 }, /* 0x377a */ { false, 0x377a, 0x377a }, /* 0x377b */ { false, 0x377b, 0x377b }, /* 0x377c */ { false, 0x377c, 0x377c }, /* 0x377d */ { false, 0x377d, 0x377d }, /* 0x377e */ { false, 0x377e, 0x377e }, /* 0x377f */ { false, 0x377f, 0x377f }, /* 0x3780 */ { false, 0x3780, 0x3780 }, /* 0x3781 */ { false, 0x3781, 0x3781 }, /* 0x3782 */ { false, 0x3782, 0x3782 }, /* 0x3783 */ { false, 0x3783, 0x3783 }, /* 0x3784 */ { false, 0x3784, 0x3784 }, /* 0x3785 */ { false, 0x3785, 0x3785 }, /* 0x3786 */ { false, 0x3786, 0x3786 }, /* 0x3787 */ { false, 0x3787, 0x3787 }, /* 0x3788 */ { false, 0x3788, 0x3788 }, /* 0x3789 */ { false, 0x3789, 0x3789 }, /* 0x378a */ { false, 0x378a, 0x378a }, /* 0x378b */ { false, 0x378b, 0x378b }, /* 0x378c */ { false, 0x378c, 0x378c }, /* 0x378d */ { false, 0x378d, 0x378d }, /* 0x378e */ { false, 0x378e, 0x378e }, /* 0x378f */ { false, 0x378f, 0x378f }, /* 0x3790 */ { false, 0x3790, 0x3790 }, /* 0x3791 */ { false, 0x3791, 0x3791 }, /* 0x3792 */ { false, 0x3792, 0x3792 }, /* 0x3793 */ { false, 0x3793, 0x3793 }, /* 0x3794 */ { false, 0x3794, 0x3794 }, /* 0x3795 */ { false, 0x3795, 0x3795 }, /* 0x3796 */ { false, 0x3796, 0x3796 }, /* 0x3797 */ { false, 0x3797, 0x3797 }, /* 0x3798 */ { false, 0x3798, 0x3798 }, /* 0x3799 */ { false, 0x3799, 0x3799 }, /* 0x379a */ { false, 0x379a, 0x379a }, /* 0x379b */ { false, 0x379b, 0x379b }, /* 0x379c */ { false, 0x379c, 0x379c }, /* 0x379d */ { false, 0x379d, 0x379d }, /* 0x379e */ { false, 0x379e, 0x379e }, /* 0x379f */ { false, 0x379f, 0x379f }, /* 0x37a0 */ { false, 0x37a0, 0x37a0 }, /* 0x37a1 */ { false, 0x37a1, 0x37a1 }, /* 0x37a2 */ { false, 0x37a2, 0x37a2 }, /* 0x37a3 */ { false, 0x37a3, 0x37a3 }, /* 0x37a4 */ { false, 0x37a4, 0x37a4 }, /* 0x37a5 */ { false, 0x37a5, 0x37a5 }, /* 0x37a6 */ { false, 0x37a6, 0x37a6 }, /* 0x37a7 */ { false, 0x37a7, 0x37a7 }, /* 0x37a8 */ { false, 0x37a8, 0x37a8 }, /* 0x37a9 */ { false, 0x37a9, 0x37a9 }, /* 0x37aa */ { false, 0x37aa, 0x37aa }, /* 0x37ab */ { false, 0x37ab, 0x37ab }, /* 0x37ac */ { false, 0x37ac, 0x37ac }, /* 0x37ad */ { false, 0x37ad, 0x37ad }, /* 0x37ae */ { false, 0x37ae, 0x37ae }, /* 0x37af */ { false, 0x37af, 0x37af }, /* 0x37b0 */ { false, 0x37b0, 0x37b0 }, /* 0x37b1 */ { false, 0x37b1, 0x37b1 }, /* 0x37b2 */ { false, 0x37b2, 0x37b2 }, /* 0x37b3 */ { false, 0x37b3, 0x37b3 }, /* 0x37b4 */ { false, 0x37b4, 0x37b4 }, /* 0x37b5 */ { false, 0x37b5, 0x37b5 }, /* 0x37b6 */ { false, 0x37b6, 0x37b6 }, /* 0x37b7 */ { false, 0x37b7, 0x37b7 }, /* 0x37b8 */ { false, 0x37b8, 0x37b8 }, /* 0x37b9 */ { false, 0x37b9, 0x37b9 }, /* 0x37ba */ { false, 0x37ba, 0x37ba }, /* 0x37bb */ { false, 0x37bb, 0x37bb }, /* 0x37bc */ { false, 0x37bc, 0x37bc }, /* 0x37bd */ { false, 0x37bd, 0x37bd }, /* 0x37be */ { false, 0x37be, 0x37be }, /* 0x37bf */ { false, 0x37bf, 0x37bf }, /* 0x37c0 */ { false, 0x37c0, 0x37c0 }, /* 0x37c1 */ { false, 0x37c1, 0x37c1 }, /* 0x37c2 */ { false, 0x37c2, 0x37c2 }, /* 0x37c3 */ { false, 0x37c3, 0x37c3 }, /* 0x37c4 */ { false, 0x37c4, 0x37c4 }, /* 0x37c5 */ { false, 0x37c5, 0x37c5 }, /* 0x37c6 */ { false, 0x37c6, 0x37c6 }, /* 0x37c7 */ { false, 0x37c7, 0x37c7 }, /* 0x37c8 */ { false, 0x37c8, 0x37c8 }, /* 0x37c9 */ { false, 0x37c9, 0x37c9 }, /* 0x37ca */ { false, 0x37ca, 0x37ca }, /* 0x37cb */ { false, 0x37cb, 0x37cb }, /* 0x37cc */ { false, 0x37cc, 0x37cc }, /* 0x37cd */ { false, 0x37cd, 0x37cd }, /* 0x37ce */ { false, 0x37ce, 0x37ce }, /* 0x37cf */ { false, 0x37cf, 0x37cf }, /* 0x37d0 */ { false, 0x37d0, 0x37d0 }, /* 0x37d1 */ { false, 0x37d1, 0x37d1 }, /* 0x37d2 */ { false, 0x37d2, 0x37d2 }, /* 0x37d3 */ { false, 0x37d3, 0x37d3 }, /* 0x37d4 */ { false, 0x37d4, 0x37d4 }, /* 0x37d5 */ { false, 0x37d5, 0x37d5 }, /* 0x37d6 */ { false, 0x37d6, 0x37d6 }, /* 0x37d7 */ { false, 0x37d7, 0x37d7 }, /* 0x37d8 */ { false, 0x37d8, 0x37d8 }, /* 0x37d9 */ { false, 0x37d9, 0x37d9 }, /* 0x37da */ { false, 0x37da, 0x37da }, /* 0x37db */ { false, 0x37db, 0x37db }, /* 0x37dc */ { false, 0x37dc, 0x37dc }, /* 0x37dd */ { false, 0x37dd, 0x37dd }, /* 0x37de */ { false, 0x37de, 0x37de }, /* 0x37df */ { false, 0x37df, 0x37df }, /* 0x37e0 */ { false, 0x37e0, 0x37e0 }, /* 0x37e1 */ { false, 0x37e1, 0x37e1 }, /* 0x37e2 */ { false, 0x37e2, 0x37e2 }, /* 0x37e3 */ { false, 0x37e3, 0x37e3 }, /* 0x37e4 */ { false, 0x37e4, 0x37e4 }, /* 0x37e5 */ { false, 0x37e5, 0x37e5 }, /* 0x37e6 */ { false, 0x37e6, 0x37e6 }, /* 0x37e7 */ { false, 0x37e7, 0x37e7 }, /* 0x37e8 */ { false, 0x37e8, 0x37e8 }, /* 0x37e9 */ { false, 0x37e9, 0x37e9 }, /* 0x37ea */ { false, 0x37ea, 0x37ea }, /* 0x37eb */ { false, 0x37eb, 0x37eb }, /* 0x37ec */ { false, 0x37ec, 0x37ec }, /* 0x37ed */ { false, 0x37ed, 0x37ed }, /* 0x37ee */ { false, 0x37ee, 0x37ee }, /* 0x37ef */ { false, 0x37ef, 0x37ef }, /* 0x37f0 */ { false, 0x37f0, 0x37f0 }, /* 0x37f1 */ { false, 0x37f1, 0x37f1 }, /* 0x37f2 */ { false, 0x37f2, 0x37f2 }, /* 0x37f3 */ { false, 0x37f3, 0x37f3 }, /* 0x37f4 */ { false, 0x37f4, 0x37f4 }, /* 0x37f5 */ { false, 0x37f5, 0x37f5 }, /* 0x37f6 */ { false, 0x37f6, 0x37f6 }, /* 0x37f7 */ { false, 0x37f7, 0x37f7 }, /* 0x37f8 */ { false, 0x37f8, 0x37f8 }, /* 0x37f9 */ { false, 0x37f9, 0x37f9 }, /* 0x37fa */ { false, 0x37fa, 0x37fa }, /* 0x37fb */ { false, 0x37fb, 0x37fb }, /* 0x37fc */ { false, 0x37fc, 0x37fc }, /* 0x37fd */ { false, 0x37fd, 0x37fd }, /* 0x37fe */ { false, 0x37fe, 0x37fe }, /* 0x37ff */ { false, 0x37ff, 0x37ff }, /* 0x3800 */ { false, 0x3800, 0x3800 }, /* 0x3801 */ { false, 0x3801, 0x3801 }, /* 0x3802 */ { false, 0x3802, 0x3802 }, /* 0x3803 */ { false, 0x3803, 0x3803 }, /* 0x3804 */ { false, 0x3804, 0x3804 }, /* 0x3805 */ { false, 0x3805, 0x3805 }, /* 0x3806 */ { false, 0x3806, 0x3806 }, /* 0x3807 */ { false, 0x3807, 0x3807 }, /* 0x3808 */ { false, 0x3808, 0x3808 }, /* 0x3809 */ { false, 0x3809, 0x3809 }, /* 0x380a */ { false, 0x380a, 0x380a }, /* 0x380b */ { false, 0x380b, 0x380b }, /* 0x380c */ { false, 0x380c, 0x380c }, /* 0x380d */ { false, 0x380d, 0x380d }, /* 0x380e */ { false, 0x380e, 0x380e }, /* 0x380f */ { false, 0x380f, 0x380f }, /* 0x3810 */ { false, 0x3810, 0x3810 }, /* 0x3811 */ { false, 0x3811, 0x3811 }, /* 0x3812 */ { false, 0x3812, 0x3812 }, /* 0x3813 */ { false, 0x3813, 0x3813 }, /* 0x3814 */ { false, 0x3814, 0x3814 }, /* 0x3815 */ { false, 0x3815, 0x3815 }, /* 0x3816 */ { false, 0x3816, 0x3816 }, /* 0x3817 */ { false, 0x3817, 0x3817 }, /* 0x3818 */ { false, 0x3818, 0x3818 }, /* 0x3819 */ { false, 0x3819, 0x3819 }, /* 0x381a */ { false, 0x381a, 0x381a }, /* 0x381b */ { false, 0x381b, 0x381b }, /* 0x381c */ { false, 0x381c, 0x381c }, /* 0x381d */ { false, 0x381d, 0x381d }, /* 0x381e */ { false, 0x381e, 0x381e }, /* 0x381f */ { false, 0x381f, 0x381f }, /* 0x3820 */ { false, 0x3820, 0x3820 }, /* 0x3821 */ { false, 0x3821, 0x3821 }, /* 0x3822 */ { false, 0x3822, 0x3822 }, /* 0x3823 */ { false, 0x3823, 0x3823 }, /* 0x3824 */ { false, 0x3824, 0x3824 }, /* 0x3825 */ { false, 0x3825, 0x3825 }, /* 0x3826 */ { false, 0x3826, 0x3826 }, /* 0x3827 */ { false, 0x3827, 0x3827 }, /* 0x3828 */ { false, 0x3828, 0x3828 }, /* 0x3829 */ { false, 0x3829, 0x3829 }, /* 0x382a */ { false, 0x382a, 0x382a }, /* 0x382b */ { false, 0x382b, 0x382b }, /* 0x382c */ { false, 0x382c, 0x382c }, /* 0x382d */ { false, 0x382d, 0x382d }, /* 0x382e */ { false, 0x382e, 0x382e }, /* 0x382f */ { false, 0x382f, 0x382f }, /* 0x3830 */ { false, 0x3830, 0x3830 }, /* 0x3831 */ { false, 0x3831, 0x3831 }, /* 0x3832 */ { false, 0x3832, 0x3832 }, /* 0x3833 */ { false, 0x3833, 0x3833 }, /* 0x3834 */ { false, 0x3834, 0x3834 }, /* 0x3835 */ { false, 0x3835, 0x3835 }, /* 0x3836 */ { false, 0x3836, 0x3836 }, /* 0x3837 */ { false, 0x3837, 0x3837 }, /* 0x3838 */ { false, 0x3838, 0x3838 }, /* 0x3839 */ { false, 0x3839, 0x3839 }, /* 0x383a */ { false, 0x383a, 0x383a }, /* 0x383b */ { false, 0x383b, 0x383b }, /* 0x383c */ { false, 0x383c, 0x383c }, /* 0x383d */ { false, 0x383d, 0x383d }, /* 0x383e */ { false, 0x383e, 0x383e }, /* 0x383f */ { false, 0x383f, 0x383f }, /* 0x3840 */ { false, 0x3840, 0x3840 }, /* 0x3841 */ { false, 0x3841, 0x3841 }, /* 0x3842 */ { false, 0x3842, 0x3842 }, /* 0x3843 */ { false, 0x3843, 0x3843 }, /* 0x3844 */ { false, 0x3844, 0x3844 }, /* 0x3845 */ { false, 0x3845, 0x3845 }, /* 0x3846 */ { false, 0x3846, 0x3846 }, /* 0x3847 */ { false, 0x3847, 0x3847 }, /* 0x3848 */ { false, 0x3848, 0x3848 }, /* 0x3849 */ { false, 0x3849, 0x3849 }, /* 0x384a */ { false, 0x384a, 0x384a }, /* 0x384b */ { false, 0x384b, 0x384b }, /* 0x384c */ { false, 0x384c, 0x384c }, /* 0x384d */ { false, 0x384d, 0x384d }, /* 0x384e */ { false, 0x384e, 0x384e }, /* 0x384f */ { false, 0x384f, 0x384f }, /* 0x3850 */ { false, 0x3850, 0x3850 }, /* 0x3851 */ { false, 0x3851, 0x3851 }, /* 0x3852 */ { false, 0x3852, 0x3852 }, /* 0x3853 */ { false, 0x3853, 0x3853 }, /* 0x3854 */ { false, 0x3854, 0x3854 }, /* 0x3855 */ { false, 0x3855, 0x3855 }, /* 0x3856 */ { false, 0x3856, 0x3856 }, /* 0x3857 */ { false, 0x3857, 0x3857 }, /* 0x3858 */ { false, 0x3858, 0x3858 }, /* 0x3859 */ { false, 0x3859, 0x3859 }, /* 0x385a */ { false, 0x385a, 0x385a }, /* 0x385b */ { false, 0x385b, 0x385b }, /* 0x385c */ { false, 0x385c, 0x385c }, /* 0x385d */ { false, 0x385d, 0x385d }, /* 0x385e */ { false, 0x385e, 0x385e }, /* 0x385f */ { false, 0x385f, 0x385f }, /* 0x3860 */ { false, 0x3860, 0x3860 }, /* 0x3861 */ { false, 0x3861, 0x3861 }, /* 0x3862 */ { false, 0x3862, 0x3862 }, /* 0x3863 */ { false, 0x3863, 0x3863 }, /* 0x3864 */ { false, 0x3864, 0x3864 }, /* 0x3865 */ { false, 0x3865, 0x3865 }, /* 0x3866 */ { false, 0x3866, 0x3866 }, /* 0x3867 */ { false, 0x3867, 0x3867 }, /* 0x3868 */ { false, 0x3868, 0x3868 }, /* 0x3869 */ { false, 0x3869, 0x3869 }, /* 0x386a */ { false, 0x386a, 0x386a }, /* 0x386b */ { false, 0x386b, 0x386b }, /* 0x386c */ { false, 0x386c, 0x386c }, /* 0x386d */ { false, 0x386d, 0x386d }, /* 0x386e */ { false, 0x386e, 0x386e }, /* 0x386f */ { false, 0x386f, 0x386f }, /* 0x3870 */ { false, 0x3870, 0x3870 }, /* 0x3871 */ { false, 0x3871, 0x3871 }, /* 0x3872 */ { false, 0x3872, 0x3872 }, /* 0x3873 */ { false, 0x3873, 0x3873 }, /* 0x3874 */ { false, 0x3874, 0x3874 }, /* 0x3875 */ { false, 0x3875, 0x3875 }, /* 0x3876 */ { false, 0x3876, 0x3876 }, /* 0x3877 */ { false, 0x3877, 0x3877 }, /* 0x3878 */ { false, 0x3878, 0x3878 }, /* 0x3879 */ { false, 0x3879, 0x3879 }, /* 0x387a */ { false, 0x387a, 0x387a }, /* 0x387b */ { false, 0x387b, 0x387b }, /* 0x387c */ { false, 0x387c, 0x387c }, /* 0x387d */ { false, 0x387d, 0x387d }, /* 0x387e */ { false, 0x387e, 0x387e }, /* 0x387f */ { false, 0x387f, 0x387f }, /* 0x3880 */ { false, 0x3880, 0x3880 }, /* 0x3881 */ { false, 0x3881, 0x3881 }, /* 0x3882 */ { false, 0x3882, 0x3882 }, /* 0x3883 */ { false, 0x3883, 0x3883 }, /* 0x3884 */ { false, 0x3884, 0x3884 }, /* 0x3885 */ { false, 0x3885, 0x3885 }, /* 0x3886 */ { false, 0x3886, 0x3886 }, /* 0x3887 */ { false, 0x3887, 0x3887 }, /* 0x3888 */ { false, 0x3888, 0x3888 }, /* 0x3889 */ { false, 0x3889, 0x3889 }, /* 0x388a */ { false, 0x388a, 0x388a }, /* 0x388b */ { false, 0x388b, 0x388b }, /* 0x388c */ { false, 0x388c, 0x388c }, /* 0x388d */ { false, 0x388d, 0x388d }, /* 0x388e */ { false, 0x388e, 0x388e }, /* 0x388f */ { false, 0x388f, 0x388f }, /* 0x3890 */ { false, 0x3890, 0x3890 }, /* 0x3891 */ { false, 0x3891, 0x3891 }, /* 0x3892 */ { false, 0x3892, 0x3892 }, /* 0x3893 */ { false, 0x3893, 0x3893 }, /* 0x3894 */ { false, 0x3894, 0x3894 }, /* 0x3895 */ { false, 0x3895, 0x3895 }, /* 0x3896 */ { false, 0x3896, 0x3896 }, /* 0x3897 */ { false, 0x3897, 0x3897 }, /* 0x3898 */ { false, 0x3898, 0x3898 }, /* 0x3899 */ { false, 0x3899, 0x3899 }, /* 0x389a */ { false, 0x389a, 0x389a }, /* 0x389b */ { false, 0x389b, 0x389b }, /* 0x389c */ { false, 0x389c, 0x389c }, /* 0x389d */ { false, 0x389d, 0x389d }, /* 0x389e */ { false, 0x389e, 0x389e }, /* 0x389f */ { false, 0x389f, 0x389f }, /* 0x38a0 */ { false, 0x38a0, 0x38a0 }, /* 0x38a1 */ { false, 0x38a1, 0x38a1 }, /* 0x38a2 */ { false, 0x38a2, 0x38a2 }, /* 0x38a3 */ { false, 0x38a3, 0x38a3 }, /* 0x38a4 */ { false, 0x38a4, 0x38a4 }, /* 0x38a5 */ { false, 0x38a5, 0x38a5 }, /* 0x38a6 */ { false, 0x38a6, 0x38a6 }, /* 0x38a7 */ { false, 0x38a7, 0x38a7 }, /* 0x38a8 */ { false, 0x38a8, 0x38a8 }, /* 0x38a9 */ { false, 0x38a9, 0x38a9 }, /* 0x38aa */ { false, 0x38aa, 0x38aa }, /* 0x38ab */ { false, 0x38ab, 0x38ab }, /* 0x38ac */ { false, 0x38ac, 0x38ac }, /* 0x38ad */ { false, 0x38ad, 0x38ad }, /* 0x38ae */ { false, 0x38ae, 0x38ae }, /* 0x38af */ { false, 0x38af, 0x38af }, /* 0x38b0 */ { false, 0x38b0, 0x38b0 }, /* 0x38b1 */ { false, 0x38b1, 0x38b1 }, /* 0x38b2 */ { false, 0x38b2, 0x38b2 }, /* 0x38b3 */ { false, 0x38b3, 0x38b3 }, /* 0x38b4 */ { false, 0x38b4, 0x38b4 }, /* 0x38b5 */ { false, 0x38b5, 0x38b5 }, /* 0x38b6 */ { false, 0x38b6, 0x38b6 }, /* 0x38b7 */ { false, 0x38b7, 0x38b7 }, /* 0x38b8 */ { false, 0x38b8, 0x38b8 }, /* 0x38b9 */ { false, 0x38b9, 0x38b9 }, /* 0x38ba */ { false, 0x38ba, 0x38ba }, /* 0x38bb */ { false, 0x38bb, 0x38bb }, /* 0x38bc */ { false, 0x38bc, 0x38bc }, /* 0x38bd */ { false, 0x38bd, 0x38bd }, /* 0x38be */ { false, 0x38be, 0x38be }, /* 0x38bf */ { false, 0x38bf, 0x38bf }, /* 0x38c0 */ { false, 0x38c0, 0x38c0 }, /* 0x38c1 */ { false, 0x38c1, 0x38c1 }, /* 0x38c2 */ { false, 0x38c2, 0x38c2 }, /* 0x38c3 */ { false, 0x38c3, 0x38c3 }, /* 0x38c4 */ { false, 0x38c4, 0x38c4 }, /* 0x38c5 */ { false, 0x38c5, 0x38c5 }, /* 0x38c6 */ { false, 0x38c6, 0x38c6 }, /* 0x38c7 */ { false, 0x38c7, 0x38c7 }, /* 0x38c8 */ { false, 0x38c8, 0x38c8 }, /* 0x38c9 */ { false, 0x38c9, 0x38c9 }, /* 0x38ca */ { false, 0x38ca, 0x38ca }, /* 0x38cb */ { false, 0x38cb, 0x38cb }, /* 0x38cc */ { false, 0x38cc, 0x38cc }, /* 0x38cd */ { false, 0x38cd, 0x38cd }, /* 0x38ce */ { false, 0x38ce, 0x38ce }, /* 0x38cf */ { false, 0x38cf, 0x38cf }, /* 0x38d0 */ { false, 0x38d0, 0x38d0 }, /* 0x38d1 */ { false, 0x38d1, 0x38d1 }, /* 0x38d2 */ { false, 0x38d2, 0x38d2 }, /* 0x38d3 */ { false, 0x38d3, 0x38d3 }, /* 0x38d4 */ { false, 0x38d4, 0x38d4 }, /* 0x38d5 */ { false, 0x38d5, 0x38d5 }, /* 0x38d6 */ { false, 0x38d6, 0x38d6 }, /* 0x38d7 */ { false, 0x38d7, 0x38d7 }, /* 0x38d8 */ { false, 0x38d8, 0x38d8 }, /* 0x38d9 */ { false, 0x38d9, 0x38d9 }, /* 0x38da */ { false, 0x38da, 0x38da }, /* 0x38db */ { false, 0x38db, 0x38db }, /* 0x38dc */ { false, 0x38dc, 0x38dc }, /* 0x38dd */ { false, 0x38dd, 0x38dd }, /* 0x38de */ { false, 0x38de, 0x38de }, /* 0x38df */ { false, 0x38df, 0x38df }, /* 0x38e0 */ { false, 0x38e0, 0x38e0 }, /* 0x38e1 */ { false, 0x38e1, 0x38e1 }, /* 0x38e2 */ { false, 0x38e2, 0x38e2 }, /* 0x38e3 */ { false, 0x38e3, 0x38e3 }, /* 0x38e4 */ { false, 0x38e4, 0x38e4 }, /* 0x38e5 */ { false, 0x38e5, 0x38e5 }, /* 0x38e6 */ { false, 0x38e6, 0x38e6 }, /* 0x38e7 */ { false, 0x38e7, 0x38e7 }, /* 0x38e8 */ { false, 0x38e8, 0x38e8 }, /* 0x38e9 */ { false, 0x38e9, 0x38e9 }, /* 0x38ea */ { false, 0x38ea, 0x38ea }, /* 0x38eb */ { false, 0x38eb, 0x38eb }, /* 0x38ec */ { false, 0x38ec, 0x38ec }, /* 0x38ed */ { false, 0x38ed, 0x38ed }, /* 0x38ee */ { false, 0x38ee, 0x38ee }, /* 0x38ef */ { false, 0x38ef, 0x38ef }, /* 0x38f0 */ { false, 0x38f0, 0x38f0 }, /* 0x38f1 */ { false, 0x38f1, 0x38f1 }, /* 0x38f2 */ { false, 0x38f2, 0x38f2 }, /* 0x38f3 */ { false, 0x38f3, 0x38f3 }, /* 0x38f4 */ { false, 0x38f4, 0x38f4 }, /* 0x38f5 */ { false, 0x38f5, 0x38f5 }, /* 0x38f6 */ { false, 0x38f6, 0x38f6 }, /* 0x38f7 */ { false, 0x38f7, 0x38f7 }, /* 0x38f8 */ { false, 0x38f8, 0x38f8 }, /* 0x38f9 */ { false, 0x38f9, 0x38f9 }, /* 0x38fa */ { false, 0x38fa, 0x38fa }, /* 0x38fb */ { false, 0x38fb, 0x38fb }, /* 0x38fc */ { false, 0x38fc, 0x38fc }, /* 0x38fd */ { false, 0x38fd, 0x38fd }, /* 0x38fe */ { false, 0x38fe, 0x38fe }, /* 0x38ff */ { false, 0x38ff, 0x38ff }, /* 0x3900 */ { false, 0x3900, 0x3900 }, /* 0x3901 */ { false, 0x3901, 0x3901 }, /* 0x3902 */ { false, 0x3902, 0x3902 }, /* 0x3903 */ { false, 0x3903, 0x3903 }, /* 0x3904 */ { false, 0x3904, 0x3904 }, /* 0x3905 */ { false, 0x3905, 0x3905 }, /* 0x3906 */ { false, 0x3906, 0x3906 }, /* 0x3907 */ { false, 0x3907, 0x3907 }, /* 0x3908 */ { false, 0x3908, 0x3908 }, /* 0x3909 */ { false, 0x3909, 0x3909 }, /* 0x390a */ { false, 0x390a, 0x390a }, /* 0x390b */ { false, 0x390b, 0x390b }, /* 0x390c */ { false, 0x390c, 0x390c }, /* 0x390d */ { false, 0x390d, 0x390d }, /* 0x390e */ { false, 0x390e, 0x390e }, /* 0x390f */ { false, 0x390f, 0x390f }, /* 0x3910 */ { false, 0x3910, 0x3910 }, /* 0x3911 */ { false, 0x3911, 0x3911 }, /* 0x3912 */ { false, 0x3912, 0x3912 }, /* 0x3913 */ { false, 0x3913, 0x3913 }, /* 0x3914 */ { false, 0x3914, 0x3914 }, /* 0x3915 */ { false, 0x3915, 0x3915 }, /* 0x3916 */ { false, 0x3916, 0x3916 }, /* 0x3917 */ { false, 0x3917, 0x3917 }, /* 0x3918 */ { false, 0x3918, 0x3918 }, /* 0x3919 */ { false, 0x3919, 0x3919 }, /* 0x391a */ { false, 0x391a, 0x391a }, /* 0x391b */ { false, 0x391b, 0x391b }, /* 0x391c */ { false, 0x391c, 0x391c }, /* 0x391d */ { false, 0x391d, 0x391d }, /* 0x391e */ { false, 0x391e, 0x391e }, /* 0x391f */ { false, 0x391f, 0x391f }, /* 0x3920 */ { false, 0x3920, 0x3920 }, /* 0x3921 */ { false, 0x3921, 0x3921 }, /* 0x3922 */ { false, 0x3922, 0x3922 }, /* 0x3923 */ { false, 0x3923, 0x3923 }, /* 0x3924 */ { false, 0x3924, 0x3924 }, /* 0x3925 */ { false, 0x3925, 0x3925 }, /* 0x3926 */ { false, 0x3926, 0x3926 }, /* 0x3927 */ { false, 0x3927, 0x3927 }, /* 0x3928 */ { false, 0x3928, 0x3928 }, /* 0x3929 */ { false, 0x3929, 0x3929 }, /* 0x392a */ { false, 0x392a, 0x392a }, /* 0x392b */ { false, 0x392b, 0x392b }, /* 0x392c */ { false, 0x392c, 0x392c }, /* 0x392d */ { false, 0x392d, 0x392d }, /* 0x392e */ { false, 0x392e, 0x392e }, /* 0x392f */ { false, 0x392f, 0x392f }, /* 0x3930 */ { false, 0x3930, 0x3930 }, /* 0x3931 */ { false, 0x3931, 0x3931 }, /* 0x3932 */ { false, 0x3932, 0x3932 }, /* 0x3933 */ { false, 0x3933, 0x3933 }, /* 0x3934 */ { false, 0x3934, 0x3934 }, /* 0x3935 */ { false, 0x3935, 0x3935 }, /* 0x3936 */ { false, 0x3936, 0x3936 }, /* 0x3937 */ { false, 0x3937, 0x3937 }, /* 0x3938 */ { false, 0x3938, 0x3938 }, /* 0x3939 */ { false, 0x3939, 0x3939 }, /* 0x393a */ { false, 0x393a, 0x393a }, /* 0x393b */ { false, 0x393b, 0x393b }, /* 0x393c */ { false, 0x393c, 0x393c }, /* 0x393d */ { false, 0x393d, 0x393d }, /* 0x393e */ { false, 0x393e, 0x393e }, /* 0x393f */ { false, 0x393f, 0x393f }, /* 0x3940 */ { false, 0x3940, 0x3940 }, /* 0x3941 */ { false, 0x3941, 0x3941 }, /* 0x3942 */ { false, 0x3942, 0x3942 }, /* 0x3943 */ { false, 0x3943, 0x3943 }, /* 0x3944 */ { false, 0x3944, 0x3944 }, /* 0x3945 */ { false, 0x3945, 0x3945 }, /* 0x3946 */ { false, 0x3946, 0x3946 }, /* 0x3947 */ { false, 0x3947, 0x3947 }, /* 0x3948 */ { false, 0x3948, 0x3948 }, /* 0x3949 */ { false, 0x3949, 0x3949 }, /* 0x394a */ { false, 0x394a, 0x394a }, /* 0x394b */ { false, 0x394b, 0x394b }, /* 0x394c */ { false, 0x394c, 0x394c }, /* 0x394d */ { false, 0x394d, 0x394d }, /* 0x394e */ { false, 0x394e, 0x394e }, /* 0x394f */ { false, 0x394f, 0x394f }, /* 0x3950 */ { false, 0x3950, 0x3950 }, /* 0x3951 */ { false, 0x3951, 0x3951 }, /* 0x3952 */ { false, 0x3952, 0x3952 }, /* 0x3953 */ { false, 0x3953, 0x3953 }, /* 0x3954 */ { false, 0x3954, 0x3954 }, /* 0x3955 */ { false, 0x3955, 0x3955 }, /* 0x3956 */ { false, 0x3956, 0x3956 }, /* 0x3957 */ { false, 0x3957, 0x3957 }, /* 0x3958 */ { false, 0x3958, 0x3958 }, /* 0x3959 */ { false, 0x3959, 0x3959 }, /* 0x395a */ { false, 0x395a, 0x395a }, /* 0x395b */ { false, 0x395b, 0x395b }, /* 0x395c */ { false, 0x395c, 0x395c }, /* 0x395d */ { false, 0x395d, 0x395d }, /* 0x395e */ { false, 0x395e, 0x395e }, /* 0x395f */ { false, 0x395f, 0x395f }, /* 0x3960 */ { false, 0x3960, 0x3960 }, /* 0x3961 */ { false, 0x3961, 0x3961 }, /* 0x3962 */ { false, 0x3962, 0x3962 }, /* 0x3963 */ { false, 0x3963, 0x3963 }, /* 0x3964 */ { false, 0x3964, 0x3964 }, /* 0x3965 */ { false, 0x3965, 0x3965 }, /* 0x3966 */ { false, 0x3966, 0x3966 }, /* 0x3967 */ { false, 0x3967, 0x3967 }, /* 0x3968 */ { false, 0x3968, 0x3968 }, /* 0x3969 */ { false, 0x3969, 0x3969 }, /* 0x396a */ { false, 0x396a, 0x396a }, /* 0x396b */ { false, 0x396b, 0x396b }, /* 0x396c */ { false, 0x396c, 0x396c }, /* 0x396d */ { false, 0x396d, 0x396d }, /* 0x396e */ { false, 0x396e, 0x396e }, /* 0x396f */ { false, 0x396f, 0x396f }, /* 0x3970 */ { false, 0x3970, 0x3970 }, /* 0x3971 */ { false, 0x3971, 0x3971 }, /* 0x3972 */ { false, 0x3972, 0x3972 }, /* 0x3973 */ { false, 0x3973, 0x3973 }, /* 0x3974 */ { false, 0x3974, 0x3974 }, /* 0x3975 */ { false, 0x3975, 0x3975 }, /* 0x3976 */ { false, 0x3976, 0x3976 }, /* 0x3977 */ { false, 0x3977, 0x3977 }, /* 0x3978 */ { false, 0x3978, 0x3978 }, /* 0x3979 */ { false, 0x3979, 0x3979 }, /* 0x397a */ { false, 0x397a, 0x397a }, /* 0x397b */ { false, 0x397b, 0x397b }, /* 0x397c */ { false, 0x397c, 0x397c }, /* 0x397d */ { false, 0x397d, 0x397d }, /* 0x397e */ { false, 0x397e, 0x397e }, /* 0x397f */ { false, 0x397f, 0x397f }, /* 0x3980 */ { false, 0x3980, 0x3980 }, /* 0x3981 */ { false, 0x3981, 0x3981 }, /* 0x3982 */ { false, 0x3982, 0x3982 }, /* 0x3983 */ { false, 0x3983, 0x3983 }, /* 0x3984 */ { false, 0x3984, 0x3984 }, /* 0x3985 */ { false, 0x3985, 0x3985 }, /* 0x3986 */ { false, 0x3986, 0x3986 }, /* 0x3987 */ { false, 0x3987, 0x3987 }, /* 0x3988 */ { false, 0x3988, 0x3988 }, /* 0x3989 */ { false, 0x3989, 0x3989 }, /* 0x398a */ { false, 0x398a, 0x398a }, /* 0x398b */ { false, 0x398b, 0x398b }, /* 0x398c */ { false, 0x398c, 0x398c }, /* 0x398d */ { false, 0x398d, 0x398d }, /* 0x398e */ { false, 0x398e, 0x398e }, /* 0x398f */ { false, 0x398f, 0x398f }, /* 0x3990 */ { false, 0x3990, 0x3990 }, /* 0x3991 */ { false, 0x3991, 0x3991 }, /* 0x3992 */ { false, 0x3992, 0x3992 }, /* 0x3993 */ { false, 0x3993, 0x3993 }, /* 0x3994 */ { false, 0x3994, 0x3994 }, /* 0x3995 */ { false, 0x3995, 0x3995 }, /* 0x3996 */ { false, 0x3996, 0x3996 }, /* 0x3997 */ { false, 0x3997, 0x3997 }, /* 0x3998 */ { false, 0x3998, 0x3998 }, /* 0x3999 */ { false, 0x3999, 0x3999 }, /* 0x399a */ { false, 0x399a, 0x399a }, /* 0x399b */ { false, 0x399b, 0x399b }, /* 0x399c */ { false, 0x399c, 0x399c }, /* 0x399d */ { false, 0x399d, 0x399d }, /* 0x399e */ { false, 0x399e, 0x399e }, /* 0x399f */ { false, 0x399f, 0x399f }, /* 0x39a0 */ { false, 0x39a0, 0x39a0 }, /* 0x39a1 */ { false, 0x39a1, 0x39a1 }, /* 0x39a2 */ { false, 0x39a2, 0x39a2 }, /* 0x39a3 */ { false, 0x39a3, 0x39a3 }, /* 0x39a4 */ { false, 0x39a4, 0x39a4 }, /* 0x39a5 */ { false, 0x39a5, 0x39a5 }, /* 0x39a6 */ { false, 0x39a6, 0x39a6 }, /* 0x39a7 */ { false, 0x39a7, 0x39a7 }, /* 0x39a8 */ { false, 0x39a8, 0x39a8 }, /* 0x39a9 */ { false, 0x39a9, 0x39a9 }, /* 0x39aa */ { false, 0x39aa, 0x39aa }, /* 0x39ab */ { false, 0x39ab, 0x39ab }, /* 0x39ac */ { false, 0x39ac, 0x39ac }, /* 0x39ad */ { false, 0x39ad, 0x39ad }, /* 0x39ae */ { false, 0x39ae, 0x39ae }, /* 0x39af */ { false, 0x39af, 0x39af }, /* 0x39b0 */ { false, 0x39b0, 0x39b0 }, /* 0x39b1 */ { false, 0x39b1, 0x39b1 }, /* 0x39b2 */ { false, 0x39b2, 0x39b2 }, /* 0x39b3 */ { false, 0x39b3, 0x39b3 }, /* 0x39b4 */ { false, 0x39b4, 0x39b4 }, /* 0x39b5 */ { false, 0x39b5, 0x39b5 }, /* 0x39b6 */ { false, 0x39b6, 0x39b6 }, /* 0x39b7 */ { false, 0x39b7, 0x39b7 }, /* 0x39b8 */ { false, 0x39b8, 0x39b8 }, /* 0x39b9 */ { false, 0x39b9, 0x39b9 }, /* 0x39ba */ { false, 0x39ba, 0x39ba }, /* 0x39bb */ { false, 0x39bb, 0x39bb }, /* 0x39bc */ { false, 0x39bc, 0x39bc }, /* 0x39bd */ { false, 0x39bd, 0x39bd }, /* 0x39be */ { false, 0x39be, 0x39be }, /* 0x39bf */ { false, 0x39bf, 0x39bf }, /* 0x39c0 */ { false, 0x39c0, 0x39c0 }, /* 0x39c1 */ { false, 0x39c1, 0x39c1 }, /* 0x39c2 */ { false, 0x39c2, 0x39c2 }, /* 0x39c3 */ { false, 0x39c3, 0x39c3 }, /* 0x39c4 */ { false, 0x39c4, 0x39c4 }, /* 0x39c5 */ { false, 0x39c5, 0x39c5 }, /* 0x39c6 */ { false, 0x39c6, 0x39c6 }, /* 0x39c7 */ { false, 0x39c7, 0x39c7 }, /* 0x39c8 */ { false, 0x39c8, 0x39c8 }, /* 0x39c9 */ { false, 0x39c9, 0x39c9 }, /* 0x39ca */ { false, 0x39ca, 0x39ca }, /* 0x39cb */ { false, 0x39cb, 0x39cb }, /* 0x39cc */ { false, 0x39cc, 0x39cc }, /* 0x39cd */ { false, 0x39cd, 0x39cd }, /* 0x39ce */ { false, 0x39ce, 0x39ce }, /* 0x39cf */ { false, 0x39cf, 0x39cf }, /* 0x39d0 */ { false, 0x39d0, 0x39d0 }, /* 0x39d1 */ { false, 0x39d1, 0x39d1 }, /* 0x39d2 */ { false, 0x39d2, 0x39d2 }, /* 0x39d3 */ { false, 0x39d3, 0x39d3 }, /* 0x39d4 */ { false, 0x39d4, 0x39d4 }, /* 0x39d5 */ { false, 0x39d5, 0x39d5 }, /* 0x39d6 */ { false, 0x39d6, 0x39d6 }, /* 0x39d7 */ { false, 0x39d7, 0x39d7 }, /* 0x39d8 */ { false, 0x39d8, 0x39d8 }, /* 0x39d9 */ { false, 0x39d9, 0x39d9 }, /* 0x39da */ { false, 0x39da, 0x39da }, /* 0x39db */ { false, 0x39db, 0x39db }, /* 0x39dc */ { false, 0x39dc, 0x39dc }, /* 0x39dd */ { false, 0x39dd, 0x39dd }, /* 0x39de */ { false, 0x39de, 0x39de }, /* 0x39df */ { false, 0x39df, 0x39df }, /* 0x39e0 */ { false, 0x39e0, 0x39e0 }, /* 0x39e1 */ { false, 0x39e1, 0x39e1 }, /* 0x39e2 */ { false, 0x39e2, 0x39e2 }, /* 0x39e3 */ { false, 0x39e3, 0x39e3 }, /* 0x39e4 */ { false, 0x39e4, 0x39e4 }, /* 0x39e5 */ { false, 0x39e5, 0x39e5 }, /* 0x39e6 */ { false, 0x39e6, 0x39e6 }, /* 0x39e7 */ { false, 0x39e7, 0x39e7 }, /* 0x39e8 */ { false, 0x39e8, 0x39e8 }, /* 0x39e9 */ { false, 0x39e9, 0x39e9 }, /* 0x39ea */ { false, 0x39ea, 0x39ea }, /* 0x39eb */ { false, 0x39eb, 0x39eb }, /* 0x39ec */ { false, 0x39ec, 0x39ec }, /* 0x39ed */ { false, 0x39ed, 0x39ed }, /* 0x39ee */ { false, 0x39ee, 0x39ee }, /* 0x39ef */ { false, 0x39ef, 0x39ef }, /* 0x39f0 */ { false, 0x39f0, 0x39f0 }, /* 0x39f1 */ { false, 0x39f1, 0x39f1 }, /* 0x39f2 */ { false, 0x39f2, 0x39f2 }, /* 0x39f3 */ { false, 0x39f3, 0x39f3 }, /* 0x39f4 */ { false, 0x39f4, 0x39f4 }, /* 0x39f5 */ { false, 0x39f5, 0x39f5 }, /* 0x39f6 */ { false, 0x39f6, 0x39f6 }, /* 0x39f7 */ { false, 0x39f7, 0x39f7 }, /* 0x39f8 */ { false, 0x39f8, 0x39f8 }, /* 0x39f9 */ { false, 0x39f9, 0x39f9 }, /* 0x39fa */ { false, 0x39fa, 0x39fa }, /* 0x39fb */ { false, 0x39fb, 0x39fb }, /* 0x39fc */ { false, 0x39fc, 0x39fc }, /* 0x39fd */ { false, 0x39fd, 0x39fd }, /* 0x39fe */ { false, 0x39fe, 0x39fe }, /* 0x39ff */ { false, 0x39ff, 0x39ff }, /* 0x3a00 */ { false, 0x3a00, 0x3a00 }, /* 0x3a01 */ { false, 0x3a01, 0x3a01 }, /* 0x3a02 */ { false, 0x3a02, 0x3a02 }, /* 0x3a03 */ { false, 0x3a03, 0x3a03 }, /* 0x3a04 */ { false, 0x3a04, 0x3a04 }, /* 0x3a05 */ { false, 0x3a05, 0x3a05 }, /* 0x3a06 */ { false, 0x3a06, 0x3a06 }, /* 0x3a07 */ { false, 0x3a07, 0x3a07 }, /* 0x3a08 */ { false, 0x3a08, 0x3a08 }, /* 0x3a09 */ { false, 0x3a09, 0x3a09 }, /* 0x3a0a */ { false, 0x3a0a, 0x3a0a }, /* 0x3a0b */ { false, 0x3a0b, 0x3a0b }, /* 0x3a0c */ { false, 0x3a0c, 0x3a0c }, /* 0x3a0d */ { false, 0x3a0d, 0x3a0d }, /* 0x3a0e */ { false, 0x3a0e, 0x3a0e }, /* 0x3a0f */ { false, 0x3a0f, 0x3a0f }, /* 0x3a10 */ { false, 0x3a10, 0x3a10 }, /* 0x3a11 */ { false, 0x3a11, 0x3a11 }, /* 0x3a12 */ { false, 0x3a12, 0x3a12 }, /* 0x3a13 */ { false, 0x3a13, 0x3a13 }, /* 0x3a14 */ { false, 0x3a14, 0x3a14 }, /* 0x3a15 */ { false, 0x3a15, 0x3a15 }, /* 0x3a16 */ { false, 0x3a16, 0x3a16 }, /* 0x3a17 */ { false, 0x3a17, 0x3a17 }, /* 0x3a18 */ { false, 0x3a18, 0x3a18 }, /* 0x3a19 */ { false, 0x3a19, 0x3a19 }, /* 0x3a1a */ { false, 0x3a1a, 0x3a1a }, /* 0x3a1b */ { false, 0x3a1b, 0x3a1b }, /* 0x3a1c */ { false, 0x3a1c, 0x3a1c }, /* 0x3a1d */ { false, 0x3a1d, 0x3a1d }, /* 0x3a1e */ { false, 0x3a1e, 0x3a1e }, /* 0x3a1f */ { false, 0x3a1f, 0x3a1f }, /* 0x3a20 */ { false, 0x3a20, 0x3a20 }, /* 0x3a21 */ { false, 0x3a21, 0x3a21 }, /* 0x3a22 */ { false, 0x3a22, 0x3a22 }, /* 0x3a23 */ { false, 0x3a23, 0x3a23 }, /* 0x3a24 */ { false, 0x3a24, 0x3a24 }, /* 0x3a25 */ { false, 0x3a25, 0x3a25 }, /* 0x3a26 */ { false, 0x3a26, 0x3a26 }, /* 0x3a27 */ { false, 0x3a27, 0x3a27 }, /* 0x3a28 */ { false, 0x3a28, 0x3a28 }, /* 0x3a29 */ { false, 0x3a29, 0x3a29 }, /* 0x3a2a */ { false, 0x3a2a, 0x3a2a }, /* 0x3a2b */ { false, 0x3a2b, 0x3a2b }, /* 0x3a2c */ { false, 0x3a2c, 0x3a2c }, /* 0x3a2d */ { false, 0x3a2d, 0x3a2d }, /* 0x3a2e */ { false, 0x3a2e, 0x3a2e }, /* 0x3a2f */ { false, 0x3a2f, 0x3a2f }, /* 0x3a30 */ { false, 0x3a30, 0x3a30 }, /* 0x3a31 */ { false, 0x3a31, 0x3a31 }, /* 0x3a32 */ { false, 0x3a32, 0x3a32 }, /* 0x3a33 */ { false, 0x3a33, 0x3a33 }, /* 0x3a34 */ { false, 0x3a34, 0x3a34 }, /* 0x3a35 */ { false, 0x3a35, 0x3a35 }, /* 0x3a36 */ { false, 0x3a36, 0x3a36 }, /* 0x3a37 */ { false, 0x3a37, 0x3a37 }, /* 0x3a38 */ { false, 0x3a38, 0x3a38 }, /* 0x3a39 */ { false, 0x3a39, 0x3a39 }, /* 0x3a3a */ { false, 0x3a3a, 0x3a3a }, /* 0x3a3b */ { false, 0x3a3b, 0x3a3b }, /* 0x3a3c */ { false, 0x3a3c, 0x3a3c }, /* 0x3a3d */ { false, 0x3a3d, 0x3a3d }, /* 0x3a3e */ { false, 0x3a3e, 0x3a3e }, /* 0x3a3f */ { false, 0x3a3f, 0x3a3f }, /* 0x3a40 */ { false, 0x3a40, 0x3a40 }, /* 0x3a41 */ { false, 0x3a41, 0x3a41 }, /* 0x3a42 */ { false, 0x3a42, 0x3a42 }, /* 0x3a43 */ { false, 0x3a43, 0x3a43 }, /* 0x3a44 */ { false, 0x3a44, 0x3a44 }, /* 0x3a45 */ { false, 0x3a45, 0x3a45 }, /* 0x3a46 */ { false, 0x3a46, 0x3a46 }, /* 0x3a47 */ { false, 0x3a47, 0x3a47 }, /* 0x3a48 */ { false, 0x3a48, 0x3a48 }, /* 0x3a49 */ { false, 0x3a49, 0x3a49 }, /* 0x3a4a */ { false, 0x3a4a, 0x3a4a }, /* 0x3a4b */ { false, 0x3a4b, 0x3a4b }, /* 0x3a4c */ { false, 0x3a4c, 0x3a4c }, /* 0x3a4d */ { false, 0x3a4d, 0x3a4d }, /* 0x3a4e */ { false, 0x3a4e, 0x3a4e }, /* 0x3a4f */ { false, 0x3a4f, 0x3a4f }, /* 0x3a50 */ { false, 0x3a50, 0x3a50 }, /* 0x3a51 */ { false, 0x3a51, 0x3a51 }, /* 0x3a52 */ { false, 0x3a52, 0x3a52 }, /* 0x3a53 */ { false, 0x3a53, 0x3a53 }, /* 0x3a54 */ { false, 0x3a54, 0x3a54 }, /* 0x3a55 */ { false, 0x3a55, 0x3a55 }, /* 0x3a56 */ { false, 0x3a56, 0x3a56 }, /* 0x3a57 */ { false, 0x3a57, 0x3a57 }, /* 0x3a58 */ { false, 0x3a58, 0x3a58 }, /* 0x3a59 */ { false, 0x3a59, 0x3a59 }, /* 0x3a5a */ { false, 0x3a5a, 0x3a5a }, /* 0x3a5b */ { false, 0x3a5b, 0x3a5b }, /* 0x3a5c */ { false, 0x3a5c, 0x3a5c }, /* 0x3a5d */ { false, 0x3a5d, 0x3a5d }, /* 0x3a5e */ { false, 0x3a5e, 0x3a5e }, /* 0x3a5f */ { false, 0x3a5f, 0x3a5f }, /* 0x3a60 */ { false, 0x3a60, 0x3a60 }, /* 0x3a61 */ { false, 0x3a61, 0x3a61 }, /* 0x3a62 */ { false, 0x3a62, 0x3a62 }, /* 0x3a63 */ { false, 0x3a63, 0x3a63 }, /* 0x3a64 */ { false, 0x3a64, 0x3a64 }, /* 0x3a65 */ { false, 0x3a65, 0x3a65 }, /* 0x3a66 */ { false, 0x3a66, 0x3a66 }, /* 0x3a67 */ { false, 0x3a67, 0x3a67 }, /* 0x3a68 */ { false, 0x3a68, 0x3a68 }, /* 0x3a69 */ { false, 0x3a69, 0x3a69 }, /* 0x3a6a */ { false, 0x3a6a, 0x3a6a }, /* 0x3a6b */ { false, 0x3a6b, 0x3a6b }, /* 0x3a6c */ { false, 0x3a6c, 0x3a6c }, /* 0x3a6d */ { false, 0x3a6d, 0x3a6d }, /* 0x3a6e */ { false, 0x3a6e, 0x3a6e }, /* 0x3a6f */ { false, 0x3a6f, 0x3a6f }, /* 0x3a70 */ { false, 0x3a70, 0x3a70 }, /* 0x3a71 */ { false, 0x3a71, 0x3a71 }, /* 0x3a72 */ { false, 0x3a72, 0x3a72 }, /* 0x3a73 */ { false, 0x3a73, 0x3a73 }, /* 0x3a74 */ { false, 0x3a74, 0x3a74 }, /* 0x3a75 */ { false, 0x3a75, 0x3a75 }, /* 0x3a76 */ { false, 0x3a76, 0x3a76 }, /* 0x3a77 */ { false, 0x3a77, 0x3a77 }, /* 0x3a78 */ { false, 0x3a78, 0x3a78 }, /* 0x3a79 */ { false, 0x3a79, 0x3a79 }, /* 0x3a7a */ { false, 0x3a7a, 0x3a7a }, /* 0x3a7b */ { false, 0x3a7b, 0x3a7b }, /* 0x3a7c */ { false, 0x3a7c, 0x3a7c }, /* 0x3a7d */ { false, 0x3a7d, 0x3a7d }, /* 0x3a7e */ { false, 0x3a7e, 0x3a7e }, /* 0x3a7f */ { false, 0x3a7f, 0x3a7f }, /* 0x3a80 */ { false, 0x3a80, 0x3a80 }, /* 0x3a81 */ { false, 0x3a81, 0x3a81 }, /* 0x3a82 */ { false, 0x3a82, 0x3a82 }, /* 0x3a83 */ { false, 0x3a83, 0x3a83 }, /* 0x3a84 */ { false, 0x3a84, 0x3a84 }, /* 0x3a85 */ { false, 0x3a85, 0x3a85 }, /* 0x3a86 */ { false, 0x3a86, 0x3a86 }, /* 0x3a87 */ { false, 0x3a87, 0x3a87 }, /* 0x3a88 */ { false, 0x3a88, 0x3a88 }, /* 0x3a89 */ { false, 0x3a89, 0x3a89 }, /* 0x3a8a */ { false, 0x3a8a, 0x3a8a }, /* 0x3a8b */ { false, 0x3a8b, 0x3a8b }, /* 0x3a8c */ { false, 0x3a8c, 0x3a8c }, /* 0x3a8d */ { false, 0x3a8d, 0x3a8d }, /* 0x3a8e */ { false, 0x3a8e, 0x3a8e }, /* 0x3a8f */ { false, 0x3a8f, 0x3a8f }, /* 0x3a90 */ { false, 0x3a90, 0x3a90 }, /* 0x3a91 */ { false, 0x3a91, 0x3a91 }, /* 0x3a92 */ { false, 0x3a92, 0x3a92 }, /* 0x3a93 */ { false, 0x3a93, 0x3a93 }, /* 0x3a94 */ { false, 0x3a94, 0x3a94 }, /* 0x3a95 */ { false, 0x3a95, 0x3a95 }, /* 0x3a96 */ { false, 0x3a96, 0x3a96 }, /* 0x3a97 */ { false, 0x3a97, 0x3a97 }, /* 0x3a98 */ { false, 0x3a98, 0x3a98 }, /* 0x3a99 */ { false, 0x3a99, 0x3a99 }, /* 0x3a9a */ { false, 0x3a9a, 0x3a9a }, /* 0x3a9b */ { false, 0x3a9b, 0x3a9b }, /* 0x3a9c */ { false, 0x3a9c, 0x3a9c }, /* 0x3a9d */ { false, 0x3a9d, 0x3a9d }, /* 0x3a9e */ { false, 0x3a9e, 0x3a9e }, /* 0x3a9f */ { false, 0x3a9f, 0x3a9f }, /* 0x3aa0 */ { false, 0x3aa0, 0x3aa0 }, /* 0x3aa1 */ { false, 0x3aa1, 0x3aa1 }, /* 0x3aa2 */ { false, 0x3aa2, 0x3aa2 }, /* 0x3aa3 */ { false, 0x3aa3, 0x3aa3 }, /* 0x3aa4 */ { false, 0x3aa4, 0x3aa4 }, /* 0x3aa5 */ { false, 0x3aa5, 0x3aa5 }, /* 0x3aa6 */ { false, 0x3aa6, 0x3aa6 }, /* 0x3aa7 */ { false, 0x3aa7, 0x3aa7 }, /* 0x3aa8 */ { false, 0x3aa8, 0x3aa8 }, /* 0x3aa9 */ { false, 0x3aa9, 0x3aa9 }, /* 0x3aaa */ { false, 0x3aaa, 0x3aaa }, /* 0x3aab */ { false, 0x3aab, 0x3aab }, /* 0x3aac */ { false, 0x3aac, 0x3aac }, /* 0x3aad */ { false, 0x3aad, 0x3aad }, /* 0x3aae */ { false, 0x3aae, 0x3aae }, /* 0x3aaf */ { false, 0x3aaf, 0x3aaf }, /* 0x3ab0 */ { false, 0x3ab0, 0x3ab0 }, /* 0x3ab1 */ { false, 0x3ab1, 0x3ab1 }, /* 0x3ab2 */ { false, 0x3ab2, 0x3ab2 }, /* 0x3ab3 */ { false, 0x3ab3, 0x3ab3 }, /* 0x3ab4 */ { false, 0x3ab4, 0x3ab4 }, /* 0x3ab5 */ { false, 0x3ab5, 0x3ab5 }, /* 0x3ab6 */ { false, 0x3ab6, 0x3ab6 }, /* 0x3ab7 */ { false, 0x3ab7, 0x3ab7 }, /* 0x3ab8 */ { false, 0x3ab8, 0x3ab8 }, /* 0x3ab9 */ { false, 0x3ab9, 0x3ab9 }, /* 0x3aba */ { false, 0x3aba, 0x3aba }, /* 0x3abb */ { false, 0x3abb, 0x3abb }, /* 0x3abc */ { false, 0x3abc, 0x3abc }, /* 0x3abd */ { false, 0x3abd, 0x3abd }, /* 0x3abe */ { false, 0x3abe, 0x3abe }, /* 0x3abf */ { false, 0x3abf, 0x3abf }, /* 0x3ac0 */ { false, 0x3ac0, 0x3ac0 }, /* 0x3ac1 */ { false, 0x3ac1, 0x3ac1 }, /* 0x3ac2 */ { false, 0x3ac2, 0x3ac2 }, /* 0x3ac3 */ { false, 0x3ac3, 0x3ac3 }, /* 0x3ac4 */ { false, 0x3ac4, 0x3ac4 }, /* 0x3ac5 */ { false, 0x3ac5, 0x3ac5 }, /* 0x3ac6 */ { false, 0x3ac6, 0x3ac6 }, /* 0x3ac7 */ { false, 0x3ac7, 0x3ac7 }, /* 0x3ac8 */ { false, 0x3ac8, 0x3ac8 }, /* 0x3ac9 */ { false, 0x3ac9, 0x3ac9 }, /* 0x3aca */ { false, 0x3aca, 0x3aca }, /* 0x3acb */ { false, 0x3acb, 0x3acb }, /* 0x3acc */ { false, 0x3acc, 0x3acc }, /* 0x3acd */ { false, 0x3acd, 0x3acd }, /* 0x3ace */ { false, 0x3ace, 0x3ace }, /* 0x3acf */ { false, 0x3acf, 0x3acf }, /* 0x3ad0 */ { false, 0x3ad0, 0x3ad0 }, /* 0x3ad1 */ { false, 0x3ad1, 0x3ad1 }, /* 0x3ad2 */ { false, 0x3ad2, 0x3ad2 }, /* 0x3ad3 */ { false, 0x3ad3, 0x3ad3 }, /* 0x3ad4 */ { false, 0x3ad4, 0x3ad4 }, /* 0x3ad5 */ { false, 0x3ad5, 0x3ad5 }, /* 0x3ad6 */ { false, 0x3ad6, 0x3ad6 }, /* 0x3ad7 */ { false, 0x3ad7, 0x3ad7 }, /* 0x3ad8 */ { false, 0x3ad8, 0x3ad8 }, /* 0x3ad9 */ { false, 0x3ad9, 0x3ad9 }, /* 0x3ada */ { false, 0x3ada, 0x3ada }, /* 0x3adb */ { false, 0x3adb, 0x3adb }, /* 0x3adc */ { false, 0x3adc, 0x3adc }, /* 0x3add */ { false, 0x3add, 0x3add }, /* 0x3ade */ { false, 0x3ade, 0x3ade }, /* 0x3adf */ { false, 0x3adf, 0x3adf }, /* 0x3ae0 */ { false, 0x3ae0, 0x3ae0 }, /* 0x3ae1 */ { false, 0x3ae1, 0x3ae1 }, /* 0x3ae2 */ { false, 0x3ae2, 0x3ae2 }, /* 0x3ae3 */ { false, 0x3ae3, 0x3ae3 }, /* 0x3ae4 */ { false, 0x3ae4, 0x3ae4 }, /* 0x3ae5 */ { false, 0x3ae5, 0x3ae5 }, /* 0x3ae6 */ { false, 0x3ae6, 0x3ae6 }, /* 0x3ae7 */ { false, 0x3ae7, 0x3ae7 }, /* 0x3ae8 */ { false, 0x3ae8, 0x3ae8 }, /* 0x3ae9 */ { false, 0x3ae9, 0x3ae9 }, /* 0x3aea */ { false, 0x3aea, 0x3aea }, /* 0x3aeb */ { false, 0x3aeb, 0x3aeb }, /* 0x3aec */ { false, 0x3aec, 0x3aec }, /* 0x3aed */ { false, 0x3aed, 0x3aed }, /* 0x3aee */ { false, 0x3aee, 0x3aee }, /* 0x3aef */ { false, 0x3aef, 0x3aef }, /* 0x3af0 */ { false, 0x3af0, 0x3af0 }, /* 0x3af1 */ { false, 0x3af1, 0x3af1 }, /* 0x3af2 */ { false, 0x3af2, 0x3af2 }, /* 0x3af3 */ { false, 0x3af3, 0x3af3 }, /* 0x3af4 */ { false, 0x3af4, 0x3af4 }, /* 0x3af5 */ { false, 0x3af5, 0x3af5 }, /* 0x3af6 */ { false, 0x3af6, 0x3af6 }, /* 0x3af7 */ { false, 0x3af7, 0x3af7 }, /* 0x3af8 */ { false, 0x3af8, 0x3af8 }, /* 0x3af9 */ { false, 0x3af9, 0x3af9 }, /* 0x3afa */ { false, 0x3afa, 0x3afa }, /* 0x3afb */ { false, 0x3afb, 0x3afb }, /* 0x3afc */ { false, 0x3afc, 0x3afc }, /* 0x3afd */ { false, 0x3afd, 0x3afd }, /* 0x3afe */ { false, 0x3afe, 0x3afe }, /* 0x3aff */ { false, 0x3aff, 0x3aff }, /* 0x3b00 */ { false, 0x3b00, 0x3b00 }, /* 0x3b01 */ { false, 0x3b01, 0x3b01 }, /* 0x3b02 */ { false, 0x3b02, 0x3b02 }, /* 0x3b03 */ { false, 0x3b03, 0x3b03 }, /* 0x3b04 */ { false, 0x3b04, 0x3b04 }, /* 0x3b05 */ { false, 0x3b05, 0x3b05 }, /* 0x3b06 */ { false, 0x3b06, 0x3b06 }, /* 0x3b07 */ { false, 0x3b07, 0x3b07 }, /* 0x3b08 */ { false, 0x3b08, 0x3b08 }, /* 0x3b09 */ { false, 0x3b09, 0x3b09 }, /* 0x3b0a */ { false, 0x3b0a, 0x3b0a }, /* 0x3b0b */ { false, 0x3b0b, 0x3b0b }, /* 0x3b0c */ { false, 0x3b0c, 0x3b0c }, /* 0x3b0d */ { false, 0x3b0d, 0x3b0d }, /* 0x3b0e */ { false, 0x3b0e, 0x3b0e }, /* 0x3b0f */ { false, 0x3b0f, 0x3b0f }, /* 0x3b10 */ { false, 0x3b10, 0x3b10 }, /* 0x3b11 */ { false, 0x3b11, 0x3b11 }, /* 0x3b12 */ { false, 0x3b12, 0x3b12 }, /* 0x3b13 */ { false, 0x3b13, 0x3b13 }, /* 0x3b14 */ { false, 0x3b14, 0x3b14 }, /* 0x3b15 */ { false, 0x3b15, 0x3b15 }, /* 0x3b16 */ { false, 0x3b16, 0x3b16 }, /* 0x3b17 */ { false, 0x3b17, 0x3b17 }, /* 0x3b18 */ { false, 0x3b18, 0x3b18 }, /* 0x3b19 */ { false, 0x3b19, 0x3b19 }, /* 0x3b1a */ { false, 0x3b1a, 0x3b1a }, /* 0x3b1b */ { false, 0x3b1b, 0x3b1b }, /* 0x3b1c */ { false, 0x3b1c, 0x3b1c }, /* 0x3b1d */ { false, 0x3b1d, 0x3b1d }, /* 0x3b1e */ { false, 0x3b1e, 0x3b1e }, /* 0x3b1f */ { false, 0x3b1f, 0x3b1f }, /* 0x3b20 */ { false, 0x3b20, 0x3b20 }, /* 0x3b21 */ { false, 0x3b21, 0x3b21 }, /* 0x3b22 */ { false, 0x3b22, 0x3b22 }, /* 0x3b23 */ { false, 0x3b23, 0x3b23 }, /* 0x3b24 */ { false, 0x3b24, 0x3b24 }, /* 0x3b25 */ { false, 0x3b25, 0x3b25 }, /* 0x3b26 */ { false, 0x3b26, 0x3b26 }, /* 0x3b27 */ { false, 0x3b27, 0x3b27 }, /* 0x3b28 */ { false, 0x3b28, 0x3b28 }, /* 0x3b29 */ { false, 0x3b29, 0x3b29 }, /* 0x3b2a */ { false, 0x3b2a, 0x3b2a }, /* 0x3b2b */ { false, 0x3b2b, 0x3b2b }, /* 0x3b2c */ { false, 0x3b2c, 0x3b2c }, /* 0x3b2d */ { false, 0x3b2d, 0x3b2d }, /* 0x3b2e */ { false, 0x3b2e, 0x3b2e }, /* 0x3b2f */ { false, 0x3b2f, 0x3b2f }, /* 0x3b30 */ { false, 0x3b30, 0x3b30 }, /* 0x3b31 */ { false, 0x3b31, 0x3b31 }, /* 0x3b32 */ { false, 0x3b32, 0x3b32 }, /* 0x3b33 */ { false, 0x3b33, 0x3b33 }, /* 0x3b34 */ { false, 0x3b34, 0x3b34 }, /* 0x3b35 */ { false, 0x3b35, 0x3b35 }, /* 0x3b36 */ { false, 0x3b36, 0x3b36 }, /* 0x3b37 */ { false, 0x3b37, 0x3b37 }, /* 0x3b38 */ { false, 0x3b38, 0x3b38 }, /* 0x3b39 */ { false, 0x3b39, 0x3b39 }, /* 0x3b3a */ { false, 0x3b3a, 0x3b3a }, /* 0x3b3b */ { false, 0x3b3b, 0x3b3b }, /* 0x3b3c */ { false, 0x3b3c, 0x3b3c }, /* 0x3b3d */ { false, 0x3b3d, 0x3b3d }, /* 0x3b3e */ { false, 0x3b3e, 0x3b3e }, /* 0x3b3f */ { false, 0x3b3f, 0x3b3f }, /* 0x3b40 */ { false, 0x3b40, 0x3b40 }, /* 0x3b41 */ { false, 0x3b41, 0x3b41 }, /* 0x3b42 */ { false, 0x3b42, 0x3b42 }, /* 0x3b43 */ { false, 0x3b43, 0x3b43 }, /* 0x3b44 */ { false, 0x3b44, 0x3b44 }, /* 0x3b45 */ { false, 0x3b45, 0x3b45 }, /* 0x3b46 */ { false, 0x3b46, 0x3b46 }, /* 0x3b47 */ { false, 0x3b47, 0x3b47 }, /* 0x3b48 */ { false, 0x3b48, 0x3b48 }, /* 0x3b49 */ { false, 0x3b49, 0x3b49 }, /* 0x3b4a */ { false, 0x3b4a, 0x3b4a }, /* 0x3b4b */ { false, 0x3b4b, 0x3b4b }, /* 0x3b4c */ { false, 0x3b4c, 0x3b4c }, /* 0x3b4d */ { false, 0x3b4d, 0x3b4d }, /* 0x3b4e */ { false, 0x3b4e, 0x3b4e }, /* 0x3b4f */ { false, 0x3b4f, 0x3b4f }, /* 0x3b50 */ { false, 0x3b50, 0x3b50 }, /* 0x3b51 */ { false, 0x3b51, 0x3b51 }, /* 0x3b52 */ { false, 0x3b52, 0x3b52 }, /* 0x3b53 */ { false, 0x3b53, 0x3b53 }, /* 0x3b54 */ { false, 0x3b54, 0x3b54 }, /* 0x3b55 */ { false, 0x3b55, 0x3b55 }, /* 0x3b56 */ { false, 0x3b56, 0x3b56 }, /* 0x3b57 */ { false, 0x3b57, 0x3b57 }, /* 0x3b58 */ { false, 0x3b58, 0x3b58 }, /* 0x3b59 */ { false, 0x3b59, 0x3b59 }, /* 0x3b5a */ { false, 0x3b5a, 0x3b5a }, /* 0x3b5b */ { false, 0x3b5b, 0x3b5b }, /* 0x3b5c */ { false, 0x3b5c, 0x3b5c }, /* 0x3b5d */ { false, 0x3b5d, 0x3b5d }, /* 0x3b5e */ { false, 0x3b5e, 0x3b5e }, /* 0x3b5f */ { false, 0x3b5f, 0x3b5f }, /* 0x3b60 */ { false, 0x3b60, 0x3b60 }, /* 0x3b61 */ { false, 0x3b61, 0x3b61 }, /* 0x3b62 */ { false, 0x3b62, 0x3b62 }, /* 0x3b63 */ { false, 0x3b63, 0x3b63 }, /* 0x3b64 */ { false, 0x3b64, 0x3b64 }, /* 0x3b65 */ { false, 0x3b65, 0x3b65 }, /* 0x3b66 */ { false, 0x3b66, 0x3b66 }, /* 0x3b67 */ { false, 0x3b67, 0x3b67 }, /* 0x3b68 */ { false, 0x3b68, 0x3b68 }, /* 0x3b69 */ { false, 0x3b69, 0x3b69 }, /* 0x3b6a */ { false, 0x3b6a, 0x3b6a }, /* 0x3b6b */ { false, 0x3b6b, 0x3b6b }, /* 0x3b6c */ { false, 0x3b6c, 0x3b6c }, /* 0x3b6d */ { false, 0x3b6d, 0x3b6d }, /* 0x3b6e */ { false, 0x3b6e, 0x3b6e }, /* 0x3b6f */ { false, 0x3b6f, 0x3b6f }, /* 0x3b70 */ { false, 0x3b70, 0x3b70 }, /* 0x3b71 */ { false, 0x3b71, 0x3b71 }, /* 0x3b72 */ { false, 0x3b72, 0x3b72 }, /* 0x3b73 */ { false, 0x3b73, 0x3b73 }, /* 0x3b74 */ { false, 0x3b74, 0x3b74 }, /* 0x3b75 */ { false, 0x3b75, 0x3b75 }, /* 0x3b76 */ { false, 0x3b76, 0x3b76 }, /* 0x3b77 */ { false, 0x3b77, 0x3b77 }, /* 0x3b78 */ { false, 0x3b78, 0x3b78 }, /* 0x3b79 */ { false, 0x3b79, 0x3b79 }, /* 0x3b7a */ { false, 0x3b7a, 0x3b7a }, /* 0x3b7b */ { false, 0x3b7b, 0x3b7b }, /* 0x3b7c */ { false, 0x3b7c, 0x3b7c }, /* 0x3b7d */ { false, 0x3b7d, 0x3b7d }, /* 0x3b7e */ { false, 0x3b7e, 0x3b7e }, /* 0x3b7f */ { false, 0x3b7f, 0x3b7f }, /* 0x3b80 */ { false, 0x3b80, 0x3b80 }, /* 0x3b81 */ { false, 0x3b81, 0x3b81 }, /* 0x3b82 */ { false, 0x3b82, 0x3b82 }, /* 0x3b83 */ { false, 0x3b83, 0x3b83 }, /* 0x3b84 */ { false, 0x3b84, 0x3b84 }, /* 0x3b85 */ { false, 0x3b85, 0x3b85 }, /* 0x3b86 */ { false, 0x3b86, 0x3b86 }, /* 0x3b87 */ { false, 0x3b87, 0x3b87 }, /* 0x3b88 */ { false, 0x3b88, 0x3b88 }, /* 0x3b89 */ { false, 0x3b89, 0x3b89 }, /* 0x3b8a */ { false, 0x3b8a, 0x3b8a }, /* 0x3b8b */ { false, 0x3b8b, 0x3b8b }, /* 0x3b8c */ { false, 0x3b8c, 0x3b8c }, /* 0x3b8d */ { false, 0x3b8d, 0x3b8d }, /* 0x3b8e */ { false, 0x3b8e, 0x3b8e }, /* 0x3b8f */ { false, 0x3b8f, 0x3b8f }, /* 0x3b90 */ { false, 0x3b90, 0x3b90 }, /* 0x3b91 */ { false, 0x3b91, 0x3b91 }, /* 0x3b92 */ { false, 0x3b92, 0x3b92 }, /* 0x3b93 */ { false, 0x3b93, 0x3b93 }, /* 0x3b94 */ { false, 0x3b94, 0x3b94 }, /* 0x3b95 */ { false, 0x3b95, 0x3b95 }, /* 0x3b96 */ { false, 0x3b96, 0x3b96 }, /* 0x3b97 */ { false, 0x3b97, 0x3b97 }, /* 0x3b98 */ { false, 0x3b98, 0x3b98 }, /* 0x3b99 */ { false, 0x3b99, 0x3b99 }, /* 0x3b9a */ { false, 0x3b9a, 0x3b9a }, /* 0x3b9b */ { false, 0x3b9b, 0x3b9b }, /* 0x3b9c */ { false, 0x3b9c, 0x3b9c }, /* 0x3b9d */ { false, 0x3b9d, 0x3b9d }, /* 0x3b9e */ { false, 0x3b9e, 0x3b9e }, /* 0x3b9f */ { false, 0x3b9f, 0x3b9f }, /* 0x3ba0 */ { false, 0x3ba0, 0x3ba0 }, /* 0x3ba1 */ { false, 0x3ba1, 0x3ba1 }, /* 0x3ba2 */ { false, 0x3ba2, 0x3ba2 }, /* 0x3ba3 */ { false, 0x3ba3, 0x3ba3 }, /* 0x3ba4 */ { false, 0x3ba4, 0x3ba4 }, /* 0x3ba5 */ { false, 0x3ba5, 0x3ba5 }, /* 0x3ba6 */ { false, 0x3ba6, 0x3ba6 }, /* 0x3ba7 */ { false, 0x3ba7, 0x3ba7 }, /* 0x3ba8 */ { false, 0x3ba8, 0x3ba8 }, /* 0x3ba9 */ { false, 0x3ba9, 0x3ba9 }, /* 0x3baa */ { false, 0x3baa, 0x3baa }, /* 0x3bab */ { false, 0x3bab, 0x3bab }, /* 0x3bac */ { false, 0x3bac, 0x3bac }, /* 0x3bad */ { false, 0x3bad, 0x3bad }, /* 0x3bae */ { false, 0x3bae, 0x3bae }, /* 0x3baf */ { false, 0x3baf, 0x3baf }, /* 0x3bb0 */ { false, 0x3bb0, 0x3bb0 }, /* 0x3bb1 */ { false, 0x3bb1, 0x3bb1 }, /* 0x3bb2 */ { false, 0x3bb2, 0x3bb2 }, /* 0x3bb3 */ { false, 0x3bb3, 0x3bb3 }, /* 0x3bb4 */ { false, 0x3bb4, 0x3bb4 }, /* 0x3bb5 */ { false, 0x3bb5, 0x3bb5 }, /* 0x3bb6 */ { false, 0x3bb6, 0x3bb6 }, /* 0x3bb7 */ { false, 0x3bb7, 0x3bb7 }, /* 0x3bb8 */ { false, 0x3bb8, 0x3bb8 }, /* 0x3bb9 */ { false, 0x3bb9, 0x3bb9 }, /* 0x3bba */ { false, 0x3bba, 0x3bba }, /* 0x3bbb */ { false, 0x3bbb, 0x3bbb }, /* 0x3bbc */ { false, 0x3bbc, 0x3bbc }, /* 0x3bbd */ { false, 0x3bbd, 0x3bbd }, /* 0x3bbe */ { false, 0x3bbe, 0x3bbe }, /* 0x3bbf */ { false, 0x3bbf, 0x3bbf }, /* 0x3bc0 */ { false, 0x3bc0, 0x3bc0 }, /* 0x3bc1 */ { false, 0x3bc1, 0x3bc1 }, /* 0x3bc2 */ { false, 0x3bc2, 0x3bc2 }, /* 0x3bc3 */ { false, 0x3bc3, 0x3bc3 }, /* 0x3bc4 */ { false, 0x3bc4, 0x3bc4 }, /* 0x3bc5 */ { false, 0x3bc5, 0x3bc5 }, /* 0x3bc6 */ { false, 0x3bc6, 0x3bc6 }, /* 0x3bc7 */ { false, 0x3bc7, 0x3bc7 }, /* 0x3bc8 */ { false, 0x3bc8, 0x3bc8 }, /* 0x3bc9 */ { false, 0x3bc9, 0x3bc9 }, /* 0x3bca */ { false, 0x3bca, 0x3bca }, /* 0x3bcb */ { false, 0x3bcb, 0x3bcb }, /* 0x3bcc */ { false, 0x3bcc, 0x3bcc }, /* 0x3bcd */ { false, 0x3bcd, 0x3bcd }, /* 0x3bce */ { false, 0x3bce, 0x3bce }, /* 0x3bcf */ { false, 0x3bcf, 0x3bcf }, /* 0x3bd0 */ { false, 0x3bd0, 0x3bd0 }, /* 0x3bd1 */ { false, 0x3bd1, 0x3bd1 }, /* 0x3bd2 */ { false, 0x3bd2, 0x3bd2 }, /* 0x3bd3 */ { false, 0x3bd3, 0x3bd3 }, /* 0x3bd4 */ { false, 0x3bd4, 0x3bd4 }, /* 0x3bd5 */ { false, 0x3bd5, 0x3bd5 }, /* 0x3bd6 */ { false, 0x3bd6, 0x3bd6 }, /* 0x3bd7 */ { false, 0x3bd7, 0x3bd7 }, /* 0x3bd8 */ { false, 0x3bd8, 0x3bd8 }, /* 0x3bd9 */ { false, 0x3bd9, 0x3bd9 }, /* 0x3bda */ { false, 0x3bda, 0x3bda }, /* 0x3bdb */ { false, 0x3bdb, 0x3bdb }, /* 0x3bdc */ { false, 0x3bdc, 0x3bdc }, /* 0x3bdd */ { false, 0x3bdd, 0x3bdd }, /* 0x3bde */ { false, 0x3bde, 0x3bde }, /* 0x3bdf */ { false, 0x3bdf, 0x3bdf }, /* 0x3be0 */ { false, 0x3be0, 0x3be0 }, /* 0x3be1 */ { false, 0x3be1, 0x3be1 }, /* 0x3be2 */ { false, 0x3be2, 0x3be2 }, /* 0x3be3 */ { false, 0x3be3, 0x3be3 }, /* 0x3be4 */ { false, 0x3be4, 0x3be4 }, /* 0x3be5 */ { false, 0x3be5, 0x3be5 }, /* 0x3be6 */ { false, 0x3be6, 0x3be6 }, /* 0x3be7 */ { false, 0x3be7, 0x3be7 }, /* 0x3be8 */ { false, 0x3be8, 0x3be8 }, /* 0x3be9 */ { false, 0x3be9, 0x3be9 }, /* 0x3bea */ { false, 0x3bea, 0x3bea }, /* 0x3beb */ { false, 0x3beb, 0x3beb }, /* 0x3bec */ { false, 0x3bec, 0x3bec }, /* 0x3bed */ { false, 0x3bed, 0x3bed }, /* 0x3bee */ { false, 0x3bee, 0x3bee }, /* 0x3bef */ { false, 0x3bef, 0x3bef }, /* 0x3bf0 */ { false, 0x3bf0, 0x3bf0 }, /* 0x3bf1 */ { false, 0x3bf1, 0x3bf1 }, /* 0x3bf2 */ { false, 0x3bf2, 0x3bf2 }, /* 0x3bf3 */ { false, 0x3bf3, 0x3bf3 }, /* 0x3bf4 */ { false, 0x3bf4, 0x3bf4 }, /* 0x3bf5 */ { false, 0x3bf5, 0x3bf5 }, /* 0x3bf6 */ { false, 0x3bf6, 0x3bf6 }, /* 0x3bf7 */ { false, 0x3bf7, 0x3bf7 }, /* 0x3bf8 */ { false, 0x3bf8, 0x3bf8 }, /* 0x3bf9 */ { false, 0x3bf9, 0x3bf9 }, /* 0x3bfa */ { false, 0x3bfa, 0x3bfa }, /* 0x3bfb */ { false, 0x3bfb, 0x3bfb }, /* 0x3bfc */ { false, 0x3bfc, 0x3bfc }, /* 0x3bfd */ { false, 0x3bfd, 0x3bfd }, /* 0x3bfe */ { false, 0x3bfe, 0x3bfe }, /* 0x3bff */ { false, 0x3bff, 0x3bff }, /* 0x3c00 */ { false, 0x3c00, 0x3c00 }, /* 0x3c01 */ { false, 0x3c01, 0x3c01 }, /* 0x3c02 */ { false, 0x3c02, 0x3c02 }, /* 0x3c03 */ { false, 0x3c03, 0x3c03 }, /* 0x3c04 */ { false, 0x3c04, 0x3c04 }, /* 0x3c05 */ { false, 0x3c05, 0x3c05 }, /* 0x3c06 */ { false, 0x3c06, 0x3c06 }, /* 0x3c07 */ { false, 0x3c07, 0x3c07 }, /* 0x3c08 */ { false, 0x3c08, 0x3c08 }, /* 0x3c09 */ { false, 0x3c09, 0x3c09 }, /* 0x3c0a */ { false, 0x3c0a, 0x3c0a }, /* 0x3c0b */ { false, 0x3c0b, 0x3c0b }, /* 0x3c0c */ { false, 0x3c0c, 0x3c0c }, /* 0x3c0d */ { false, 0x3c0d, 0x3c0d }, /* 0x3c0e */ { false, 0x3c0e, 0x3c0e }, /* 0x3c0f */ { false, 0x3c0f, 0x3c0f }, /* 0x3c10 */ { false, 0x3c10, 0x3c10 }, /* 0x3c11 */ { false, 0x3c11, 0x3c11 }, /* 0x3c12 */ { false, 0x3c12, 0x3c12 }, /* 0x3c13 */ { false, 0x3c13, 0x3c13 }, /* 0x3c14 */ { false, 0x3c14, 0x3c14 }, /* 0x3c15 */ { false, 0x3c15, 0x3c15 }, /* 0x3c16 */ { false, 0x3c16, 0x3c16 }, /* 0x3c17 */ { false, 0x3c17, 0x3c17 }, /* 0x3c18 */ { false, 0x3c18, 0x3c18 }, /* 0x3c19 */ { false, 0x3c19, 0x3c19 }, /* 0x3c1a */ { false, 0x3c1a, 0x3c1a }, /* 0x3c1b */ { false, 0x3c1b, 0x3c1b }, /* 0x3c1c */ { false, 0x3c1c, 0x3c1c }, /* 0x3c1d */ { false, 0x3c1d, 0x3c1d }, /* 0x3c1e */ { false, 0x3c1e, 0x3c1e }, /* 0x3c1f */ { false, 0x3c1f, 0x3c1f }, /* 0x3c20 */ { false, 0x3c20, 0x3c20 }, /* 0x3c21 */ { false, 0x3c21, 0x3c21 }, /* 0x3c22 */ { false, 0x3c22, 0x3c22 }, /* 0x3c23 */ { false, 0x3c23, 0x3c23 }, /* 0x3c24 */ { false, 0x3c24, 0x3c24 }, /* 0x3c25 */ { false, 0x3c25, 0x3c25 }, /* 0x3c26 */ { false, 0x3c26, 0x3c26 }, /* 0x3c27 */ { false, 0x3c27, 0x3c27 }, /* 0x3c28 */ { false, 0x3c28, 0x3c28 }, /* 0x3c29 */ { false, 0x3c29, 0x3c29 }, /* 0x3c2a */ { false, 0x3c2a, 0x3c2a }, /* 0x3c2b */ { false, 0x3c2b, 0x3c2b }, /* 0x3c2c */ { false, 0x3c2c, 0x3c2c }, /* 0x3c2d */ { false, 0x3c2d, 0x3c2d }, /* 0x3c2e */ { false, 0x3c2e, 0x3c2e }, /* 0x3c2f */ { false, 0x3c2f, 0x3c2f }, /* 0x3c30 */ { false, 0x3c30, 0x3c30 }, /* 0x3c31 */ { false, 0x3c31, 0x3c31 }, /* 0x3c32 */ { false, 0x3c32, 0x3c32 }, /* 0x3c33 */ { false, 0x3c33, 0x3c33 }, /* 0x3c34 */ { false, 0x3c34, 0x3c34 }, /* 0x3c35 */ { false, 0x3c35, 0x3c35 }, /* 0x3c36 */ { false, 0x3c36, 0x3c36 }, /* 0x3c37 */ { false, 0x3c37, 0x3c37 }, /* 0x3c38 */ { false, 0x3c38, 0x3c38 }, /* 0x3c39 */ { false, 0x3c39, 0x3c39 }, /* 0x3c3a */ { false, 0x3c3a, 0x3c3a }, /* 0x3c3b */ { false, 0x3c3b, 0x3c3b }, /* 0x3c3c */ { false, 0x3c3c, 0x3c3c }, /* 0x3c3d */ { false, 0x3c3d, 0x3c3d }, /* 0x3c3e */ { false, 0x3c3e, 0x3c3e }, /* 0x3c3f */ { false, 0x3c3f, 0x3c3f }, /* 0x3c40 */ { false, 0x3c40, 0x3c40 }, /* 0x3c41 */ { false, 0x3c41, 0x3c41 }, /* 0x3c42 */ { false, 0x3c42, 0x3c42 }, /* 0x3c43 */ { false, 0x3c43, 0x3c43 }, /* 0x3c44 */ { false, 0x3c44, 0x3c44 }, /* 0x3c45 */ { false, 0x3c45, 0x3c45 }, /* 0x3c46 */ { false, 0x3c46, 0x3c46 }, /* 0x3c47 */ { false, 0x3c47, 0x3c47 }, /* 0x3c48 */ { false, 0x3c48, 0x3c48 }, /* 0x3c49 */ { false, 0x3c49, 0x3c49 }, /* 0x3c4a */ { false, 0x3c4a, 0x3c4a }, /* 0x3c4b */ { false, 0x3c4b, 0x3c4b }, /* 0x3c4c */ { false, 0x3c4c, 0x3c4c }, /* 0x3c4d */ { false, 0x3c4d, 0x3c4d }, /* 0x3c4e */ { false, 0x3c4e, 0x3c4e }, /* 0x3c4f */ { false, 0x3c4f, 0x3c4f }, /* 0x3c50 */ { false, 0x3c50, 0x3c50 }, /* 0x3c51 */ { false, 0x3c51, 0x3c51 }, /* 0x3c52 */ { false, 0x3c52, 0x3c52 }, /* 0x3c53 */ { false, 0x3c53, 0x3c53 }, /* 0x3c54 */ { false, 0x3c54, 0x3c54 }, /* 0x3c55 */ { false, 0x3c55, 0x3c55 }, /* 0x3c56 */ { false, 0x3c56, 0x3c56 }, /* 0x3c57 */ { false, 0x3c57, 0x3c57 }, /* 0x3c58 */ { false, 0x3c58, 0x3c58 }, /* 0x3c59 */ { false, 0x3c59, 0x3c59 }, /* 0x3c5a */ { false, 0x3c5a, 0x3c5a }, /* 0x3c5b */ { false, 0x3c5b, 0x3c5b }, /* 0x3c5c */ { false, 0x3c5c, 0x3c5c }, /* 0x3c5d */ { false, 0x3c5d, 0x3c5d }, /* 0x3c5e */ { false, 0x3c5e, 0x3c5e }, /* 0x3c5f */ { false, 0x3c5f, 0x3c5f }, /* 0x3c60 */ { false, 0x3c60, 0x3c60 }, /* 0x3c61 */ { false, 0x3c61, 0x3c61 }, /* 0x3c62 */ { false, 0x3c62, 0x3c62 }, /* 0x3c63 */ { false, 0x3c63, 0x3c63 }, /* 0x3c64 */ { false, 0x3c64, 0x3c64 }, /* 0x3c65 */ { false, 0x3c65, 0x3c65 }, /* 0x3c66 */ { false, 0x3c66, 0x3c66 }, /* 0x3c67 */ { false, 0x3c67, 0x3c67 }, /* 0x3c68 */ { false, 0x3c68, 0x3c68 }, /* 0x3c69 */ { false, 0x3c69, 0x3c69 }, /* 0x3c6a */ { false, 0x3c6a, 0x3c6a }, /* 0x3c6b */ { false, 0x3c6b, 0x3c6b }, /* 0x3c6c */ { false, 0x3c6c, 0x3c6c }, /* 0x3c6d */ { false, 0x3c6d, 0x3c6d }, /* 0x3c6e */ { false, 0x3c6e, 0x3c6e }, /* 0x3c6f */ { false, 0x3c6f, 0x3c6f }, /* 0x3c70 */ { false, 0x3c70, 0x3c70 }, /* 0x3c71 */ { false, 0x3c71, 0x3c71 }, /* 0x3c72 */ { false, 0x3c72, 0x3c72 }, /* 0x3c73 */ { false, 0x3c73, 0x3c73 }, /* 0x3c74 */ { false, 0x3c74, 0x3c74 }, /* 0x3c75 */ { false, 0x3c75, 0x3c75 }, /* 0x3c76 */ { false, 0x3c76, 0x3c76 }, /* 0x3c77 */ { false, 0x3c77, 0x3c77 }, /* 0x3c78 */ { false, 0x3c78, 0x3c78 }, /* 0x3c79 */ { false, 0x3c79, 0x3c79 }, /* 0x3c7a */ { false, 0x3c7a, 0x3c7a }, /* 0x3c7b */ { false, 0x3c7b, 0x3c7b }, /* 0x3c7c */ { false, 0x3c7c, 0x3c7c }, /* 0x3c7d */ { false, 0x3c7d, 0x3c7d }, /* 0x3c7e */ { false, 0x3c7e, 0x3c7e }, /* 0x3c7f */ { false, 0x3c7f, 0x3c7f }, /* 0x3c80 */ { false, 0x3c80, 0x3c80 }, /* 0x3c81 */ { false, 0x3c81, 0x3c81 }, /* 0x3c82 */ { false, 0x3c82, 0x3c82 }, /* 0x3c83 */ { false, 0x3c83, 0x3c83 }, /* 0x3c84 */ { false, 0x3c84, 0x3c84 }, /* 0x3c85 */ { false, 0x3c85, 0x3c85 }, /* 0x3c86 */ { false, 0x3c86, 0x3c86 }, /* 0x3c87 */ { false, 0x3c87, 0x3c87 }, /* 0x3c88 */ { false, 0x3c88, 0x3c88 }, /* 0x3c89 */ { false, 0x3c89, 0x3c89 }, /* 0x3c8a */ { false, 0x3c8a, 0x3c8a }, /* 0x3c8b */ { false, 0x3c8b, 0x3c8b }, /* 0x3c8c */ { false, 0x3c8c, 0x3c8c }, /* 0x3c8d */ { false, 0x3c8d, 0x3c8d }, /* 0x3c8e */ { false, 0x3c8e, 0x3c8e }, /* 0x3c8f */ { false, 0x3c8f, 0x3c8f }, /* 0x3c90 */ { false, 0x3c90, 0x3c90 }, /* 0x3c91 */ { false, 0x3c91, 0x3c91 }, /* 0x3c92 */ { false, 0x3c92, 0x3c92 }, /* 0x3c93 */ { false, 0x3c93, 0x3c93 }, /* 0x3c94 */ { false, 0x3c94, 0x3c94 }, /* 0x3c95 */ { false, 0x3c95, 0x3c95 }, /* 0x3c96 */ { false, 0x3c96, 0x3c96 }, /* 0x3c97 */ { false, 0x3c97, 0x3c97 }, /* 0x3c98 */ { false, 0x3c98, 0x3c98 }, /* 0x3c99 */ { false, 0x3c99, 0x3c99 }, /* 0x3c9a */ { false, 0x3c9a, 0x3c9a }, /* 0x3c9b */ { false, 0x3c9b, 0x3c9b }, /* 0x3c9c */ { false, 0x3c9c, 0x3c9c }, /* 0x3c9d */ { false, 0x3c9d, 0x3c9d }, /* 0x3c9e */ { false, 0x3c9e, 0x3c9e }, /* 0x3c9f */ { false, 0x3c9f, 0x3c9f }, /* 0x3ca0 */ { false, 0x3ca0, 0x3ca0 }, /* 0x3ca1 */ { false, 0x3ca1, 0x3ca1 }, /* 0x3ca2 */ { false, 0x3ca2, 0x3ca2 }, /* 0x3ca3 */ { false, 0x3ca3, 0x3ca3 }, /* 0x3ca4 */ { false, 0x3ca4, 0x3ca4 }, /* 0x3ca5 */ { false, 0x3ca5, 0x3ca5 }, /* 0x3ca6 */ { false, 0x3ca6, 0x3ca6 }, /* 0x3ca7 */ { false, 0x3ca7, 0x3ca7 }, /* 0x3ca8 */ { false, 0x3ca8, 0x3ca8 }, /* 0x3ca9 */ { false, 0x3ca9, 0x3ca9 }, /* 0x3caa */ { false, 0x3caa, 0x3caa }, /* 0x3cab */ { false, 0x3cab, 0x3cab }, /* 0x3cac */ { false, 0x3cac, 0x3cac }, /* 0x3cad */ { false, 0x3cad, 0x3cad }, /* 0x3cae */ { false, 0x3cae, 0x3cae }, /* 0x3caf */ { false, 0x3caf, 0x3caf }, /* 0x3cb0 */ { false, 0x3cb0, 0x3cb0 }, /* 0x3cb1 */ { false, 0x3cb1, 0x3cb1 }, /* 0x3cb2 */ { false, 0x3cb2, 0x3cb2 }, /* 0x3cb3 */ { false, 0x3cb3, 0x3cb3 }, /* 0x3cb4 */ { false, 0x3cb4, 0x3cb4 }, /* 0x3cb5 */ { false, 0x3cb5, 0x3cb5 }, /* 0x3cb6 */ { false, 0x3cb6, 0x3cb6 }, /* 0x3cb7 */ { false, 0x3cb7, 0x3cb7 }, /* 0x3cb8 */ { false, 0x3cb8, 0x3cb8 }, /* 0x3cb9 */ { false, 0x3cb9, 0x3cb9 }, /* 0x3cba */ { false, 0x3cba, 0x3cba }, /* 0x3cbb */ { false, 0x3cbb, 0x3cbb }, /* 0x3cbc */ { false, 0x3cbc, 0x3cbc }, /* 0x3cbd */ { false, 0x3cbd, 0x3cbd }, /* 0x3cbe */ { false, 0x3cbe, 0x3cbe }, /* 0x3cbf */ { false, 0x3cbf, 0x3cbf }, /* 0x3cc0 */ { false, 0x3cc0, 0x3cc0 }, /* 0x3cc1 */ { false, 0x3cc1, 0x3cc1 }, /* 0x3cc2 */ { false, 0x3cc2, 0x3cc2 }, /* 0x3cc3 */ { false, 0x3cc3, 0x3cc3 }, /* 0x3cc4 */ { false, 0x3cc4, 0x3cc4 }, /* 0x3cc5 */ { false, 0x3cc5, 0x3cc5 }, /* 0x3cc6 */ { false, 0x3cc6, 0x3cc6 }, /* 0x3cc7 */ { false, 0x3cc7, 0x3cc7 }, /* 0x3cc8 */ { false, 0x3cc8, 0x3cc8 }, /* 0x3cc9 */ { false, 0x3cc9, 0x3cc9 }, /* 0x3cca */ { false, 0x3cca, 0x3cca }, /* 0x3ccb */ { false, 0x3ccb, 0x3ccb }, /* 0x3ccc */ { false, 0x3ccc, 0x3ccc }, /* 0x3ccd */ { false, 0x3ccd, 0x3ccd }, /* 0x3cce */ { false, 0x3cce, 0x3cce }, /* 0x3ccf */ { false, 0x3ccf, 0x3ccf }, /* 0x3cd0 */ { false, 0x3cd0, 0x3cd0 }, /* 0x3cd1 */ { false, 0x3cd1, 0x3cd1 }, /* 0x3cd2 */ { false, 0x3cd2, 0x3cd2 }, /* 0x3cd3 */ { false, 0x3cd3, 0x3cd3 }, /* 0x3cd4 */ { false, 0x3cd4, 0x3cd4 }, /* 0x3cd5 */ { false, 0x3cd5, 0x3cd5 }, /* 0x3cd6 */ { false, 0x3cd6, 0x3cd6 }, /* 0x3cd7 */ { false, 0x3cd7, 0x3cd7 }, /* 0x3cd8 */ { false, 0x3cd8, 0x3cd8 }, /* 0x3cd9 */ { false, 0x3cd9, 0x3cd9 }, /* 0x3cda */ { false, 0x3cda, 0x3cda }, /* 0x3cdb */ { false, 0x3cdb, 0x3cdb }, /* 0x3cdc */ { false, 0x3cdc, 0x3cdc }, /* 0x3cdd */ { false, 0x3cdd, 0x3cdd }, /* 0x3cde */ { false, 0x3cde, 0x3cde }, /* 0x3cdf */ { false, 0x3cdf, 0x3cdf }, /* 0x3ce0 */ { false, 0x3ce0, 0x3ce0 }, /* 0x3ce1 */ { false, 0x3ce1, 0x3ce1 }, /* 0x3ce2 */ { false, 0x3ce2, 0x3ce2 }, /* 0x3ce3 */ { false, 0x3ce3, 0x3ce3 }, /* 0x3ce4 */ { false, 0x3ce4, 0x3ce4 }, /* 0x3ce5 */ { false, 0x3ce5, 0x3ce5 }, /* 0x3ce6 */ { false, 0x3ce6, 0x3ce6 }, /* 0x3ce7 */ { false, 0x3ce7, 0x3ce7 }, /* 0x3ce8 */ { false, 0x3ce8, 0x3ce8 }, /* 0x3ce9 */ { false, 0x3ce9, 0x3ce9 }, /* 0x3cea */ { false, 0x3cea, 0x3cea }, /* 0x3ceb */ { false, 0x3ceb, 0x3ceb }, /* 0x3cec */ { false, 0x3cec, 0x3cec }, /* 0x3ced */ { false, 0x3ced, 0x3ced }, /* 0x3cee */ { false, 0x3cee, 0x3cee }, /* 0x3cef */ { false, 0x3cef, 0x3cef }, /* 0x3cf0 */ { false, 0x3cf0, 0x3cf0 }, /* 0x3cf1 */ { false, 0x3cf1, 0x3cf1 }, /* 0x3cf2 */ { false, 0x3cf2, 0x3cf2 }, /* 0x3cf3 */ { false, 0x3cf3, 0x3cf3 }, /* 0x3cf4 */ { false, 0x3cf4, 0x3cf4 }, /* 0x3cf5 */ { false, 0x3cf5, 0x3cf5 }, /* 0x3cf6 */ { false, 0x3cf6, 0x3cf6 }, /* 0x3cf7 */ { false, 0x3cf7, 0x3cf7 }, /* 0x3cf8 */ { false, 0x3cf8, 0x3cf8 }, /* 0x3cf9 */ { false, 0x3cf9, 0x3cf9 }, /* 0x3cfa */ { false, 0x3cfa, 0x3cfa }, /* 0x3cfb */ { false, 0x3cfb, 0x3cfb }, /* 0x3cfc */ { false, 0x3cfc, 0x3cfc }, /* 0x3cfd */ { false, 0x3cfd, 0x3cfd }, /* 0x3cfe */ { false, 0x3cfe, 0x3cfe }, /* 0x3cff */ { false, 0x3cff, 0x3cff }, /* 0x3d00 */ { false, 0x3d00, 0x3d00 }, /* 0x3d01 */ { false, 0x3d01, 0x3d01 }, /* 0x3d02 */ { false, 0x3d02, 0x3d02 }, /* 0x3d03 */ { false, 0x3d03, 0x3d03 }, /* 0x3d04 */ { false, 0x3d04, 0x3d04 }, /* 0x3d05 */ { false, 0x3d05, 0x3d05 }, /* 0x3d06 */ { false, 0x3d06, 0x3d06 }, /* 0x3d07 */ { false, 0x3d07, 0x3d07 }, /* 0x3d08 */ { false, 0x3d08, 0x3d08 }, /* 0x3d09 */ { false, 0x3d09, 0x3d09 }, /* 0x3d0a */ { false, 0x3d0a, 0x3d0a }, /* 0x3d0b */ { false, 0x3d0b, 0x3d0b }, /* 0x3d0c */ { false, 0x3d0c, 0x3d0c }, /* 0x3d0d */ { false, 0x3d0d, 0x3d0d }, /* 0x3d0e */ { false, 0x3d0e, 0x3d0e }, /* 0x3d0f */ { false, 0x3d0f, 0x3d0f }, /* 0x3d10 */ { false, 0x3d10, 0x3d10 }, /* 0x3d11 */ { false, 0x3d11, 0x3d11 }, /* 0x3d12 */ { false, 0x3d12, 0x3d12 }, /* 0x3d13 */ { false, 0x3d13, 0x3d13 }, /* 0x3d14 */ { false, 0x3d14, 0x3d14 }, /* 0x3d15 */ { false, 0x3d15, 0x3d15 }, /* 0x3d16 */ { false, 0x3d16, 0x3d16 }, /* 0x3d17 */ { false, 0x3d17, 0x3d17 }, /* 0x3d18 */ { false, 0x3d18, 0x3d18 }, /* 0x3d19 */ { false, 0x3d19, 0x3d19 }, /* 0x3d1a */ { false, 0x3d1a, 0x3d1a }, /* 0x3d1b */ { false, 0x3d1b, 0x3d1b }, /* 0x3d1c */ { false, 0x3d1c, 0x3d1c }, /* 0x3d1d */ { false, 0x3d1d, 0x3d1d }, /* 0x3d1e */ { false, 0x3d1e, 0x3d1e }, /* 0x3d1f */ { false, 0x3d1f, 0x3d1f }, /* 0x3d20 */ { false, 0x3d20, 0x3d20 }, /* 0x3d21 */ { false, 0x3d21, 0x3d21 }, /* 0x3d22 */ { false, 0x3d22, 0x3d22 }, /* 0x3d23 */ { false, 0x3d23, 0x3d23 }, /* 0x3d24 */ { false, 0x3d24, 0x3d24 }, /* 0x3d25 */ { false, 0x3d25, 0x3d25 }, /* 0x3d26 */ { false, 0x3d26, 0x3d26 }, /* 0x3d27 */ { false, 0x3d27, 0x3d27 }, /* 0x3d28 */ { false, 0x3d28, 0x3d28 }, /* 0x3d29 */ { false, 0x3d29, 0x3d29 }, /* 0x3d2a */ { false, 0x3d2a, 0x3d2a }, /* 0x3d2b */ { false, 0x3d2b, 0x3d2b }, /* 0x3d2c */ { false, 0x3d2c, 0x3d2c }, /* 0x3d2d */ { false, 0x3d2d, 0x3d2d }, /* 0x3d2e */ { false, 0x3d2e, 0x3d2e }, /* 0x3d2f */ { false, 0x3d2f, 0x3d2f }, /* 0x3d30 */ { false, 0x3d30, 0x3d30 }, /* 0x3d31 */ { false, 0x3d31, 0x3d31 }, /* 0x3d32 */ { false, 0x3d32, 0x3d32 }, /* 0x3d33 */ { false, 0x3d33, 0x3d33 }, /* 0x3d34 */ { false, 0x3d34, 0x3d34 }, /* 0x3d35 */ { false, 0x3d35, 0x3d35 }, /* 0x3d36 */ { false, 0x3d36, 0x3d36 }, /* 0x3d37 */ { false, 0x3d37, 0x3d37 }, /* 0x3d38 */ { false, 0x3d38, 0x3d38 }, /* 0x3d39 */ { false, 0x3d39, 0x3d39 }, /* 0x3d3a */ { false, 0x3d3a, 0x3d3a }, /* 0x3d3b */ { false, 0x3d3b, 0x3d3b }, /* 0x3d3c */ { false, 0x3d3c, 0x3d3c }, /* 0x3d3d */ { false, 0x3d3d, 0x3d3d }, /* 0x3d3e */ { false, 0x3d3e, 0x3d3e }, /* 0x3d3f */ { false, 0x3d3f, 0x3d3f }, /* 0x3d40 */ { false, 0x3d40, 0x3d40 }, /* 0x3d41 */ { false, 0x3d41, 0x3d41 }, /* 0x3d42 */ { false, 0x3d42, 0x3d42 }, /* 0x3d43 */ { false, 0x3d43, 0x3d43 }, /* 0x3d44 */ { false, 0x3d44, 0x3d44 }, /* 0x3d45 */ { false, 0x3d45, 0x3d45 }, /* 0x3d46 */ { false, 0x3d46, 0x3d46 }, /* 0x3d47 */ { false, 0x3d47, 0x3d47 }, /* 0x3d48 */ { false, 0x3d48, 0x3d48 }, /* 0x3d49 */ { false, 0x3d49, 0x3d49 }, /* 0x3d4a */ { false, 0x3d4a, 0x3d4a }, /* 0x3d4b */ { false, 0x3d4b, 0x3d4b }, /* 0x3d4c */ { false, 0x3d4c, 0x3d4c }, /* 0x3d4d */ { false, 0x3d4d, 0x3d4d }, /* 0x3d4e */ { false, 0x3d4e, 0x3d4e }, /* 0x3d4f */ { false, 0x3d4f, 0x3d4f }, /* 0x3d50 */ { false, 0x3d50, 0x3d50 }, /* 0x3d51 */ { false, 0x3d51, 0x3d51 }, /* 0x3d52 */ { false, 0x3d52, 0x3d52 }, /* 0x3d53 */ { false, 0x3d53, 0x3d53 }, /* 0x3d54 */ { false, 0x3d54, 0x3d54 }, /* 0x3d55 */ { false, 0x3d55, 0x3d55 }, /* 0x3d56 */ { false, 0x3d56, 0x3d56 }, /* 0x3d57 */ { false, 0x3d57, 0x3d57 }, /* 0x3d58 */ { false, 0x3d58, 0x3d58 }, /* 0x3d59 */ { false, 0x3d59, 0x3d59 }, /* 0x3d5a */ { false, 0x3d5a, 0x3d5a }, /* 0x3d5b */ { false, 0x3d5b, 0x3d5b }, /* 0x3d5c */ { false, 0x3d5c, 0x3d5c }, /* 0x3d5d */ { false, 0x3d5d, 0x3d5d }, /* 0x3d5e */ { false, 0x3d5e, 0x3d5e }, /* 0x3d5f */ { false, 0x3d5f, 0x3d5f }, /* 0x3d60 */ { false, 0x3d60, 0x3d60 }, /* 0x3d61 */ { false, 0x3d61, 0x3d61 }, /* 0x3d62 */ { false, 0x3d62, 0x3d62 }, /* 0x3d63 */ { false, 0x3d63, 0x3d63 }, /* 0x3d64 */ { false, 0x3d64, 0x3d64 }, /* 0x3d65 */ { false, 0x3d65, 0x3d65 }, /* 0x3d66 */ { false, 0x3d66, 0x3d66 }, /* 0x3d67 */ { false, 0x3d67, 0x3d67 }, /* 0x3d68 */ { false, 0x3d68, 0x3d68 }, /* 0x3d69 */ { false, 0x3d69, 0x3d69 }, /* 0x3d6a */ { false, 0x3d6a, 0x3d6a }, /* 0x3d6b */ { false, 0x3d6b, 0x3d6b }, /* 0x3d6c */ { false, 0x3d6c, 0x3d6c }, /* 0x3d6d */ { false, 0x3d6d, 0x3d6d }, /* 0x3d6e */ { false, 0x3d6e, 0x3d6e }, /* 0x3d6f */ { false, 0x3d6f, 0x3d6f }, /* 0x3d70 */ { false, 0x3d70, 0x3d70 }, /* 0x3d71 */ { false, 0x3d71, 0x3d71 }, /* 0x3d72 */ { false, 0x3d72, 0x3d72 }, /* 0x3d73 */ { false, 0x3d73, 0x3d73 }, /* 0x3d74 */ { false, 0x3d74, 0x3d74 }, /* 0x3d75 */ { false, 0x3d75, 0x3d75 }, /* 0x3d76 */ { false, 0x3d76, 0x3d76 }, /* 0x3d77 */ { false, 0x3d77, 0x3d77 }, /* 0x3d78 */ { false, 0x3d78, 0x3d78 }, /* 0x3d79 */ { false, 0x3d79, 0x3d79 }, /* 0x3d7a */ { false, 0x3d7a, 0x3d7a }, /* 0x3d7b */ { false, 0x3d7b, 0x3d7b }, /* 0x3d7c */ { false, 0x3d7c, 0x3d7c }, /* 0x3d7d */ { false, 0x3d7d, 0x3d7d }, /* 0x3d7e */ { false, 0x3d7e, 0x3d7e }, /* 0x3d7f */ { false, 0x3d7f, 0x3d7f }, /* 0x3d80 */ { false, 0x3d80, 0x3d80 }, /* 0x3d81 */ { false, 0x3d81, 0x3d81 }, /* 0x3d82 */ { false, 0x3d82, 0x3d82 }, /* 0x3d83 */ { false, 0x3d83, 0x3d83 }, /* 0x3d84 */ { false, 0x3d84, 0x3d84 }, /* 0x3d85 */ { false, 0x3d85, 0x3d85 }, /* 0x3d86 */ { false, 0x3d86, 0x3d86 }, /* 0x3d87 */ { false, 0x3d87, 0x3d87 }, /* 0x3d88 */ { false, 0x3d88, 0x3d88 }, /* 0x3d89 */ { false, 0x3d89, 0x3d89 }, /* 0x3d8a */ { false, 0x3d8a, 0x3d8a }, /* 0x3d8b */ { false, 0x3d8b, 0x3d8b }, /* 0x3d8c */ { false, 0x3d8c, 0x3d8c }, /* 0x3d8d */ { false, 0x3d8d, 0x3d8d }, /* 0x3d8e */ { false, 0x3d8e, 0x3d8e }, /* 0x3d8f */ { false, 0x3d8f, 0x3d8f }, /* 0x3d90 */ { false, 0x3d90, 0x3d90 }, /* 0x3d91 */ { false, 0x3d91, 0x3d91 }, /* 0x3d92 */ { false, 0x3d92, 0x3d92 }, /* 0x3d93 */ { false, 0x3d93, 0x3d93 }, /* 0x3d94 */ { false, 0x3d94, 0x3d94 }, /* 0x3d95 */ { false, 0x3d95, 0x3d95 }, /* 0x3d96 */ { false, 0x3d96, 0x3d96 }, /* 0x3d97 */ { false, 0x3d97, 0x3d97 }, /* 0x3d98 */ { false, 0x3d98, 0x3d98 }, /* 0x3d99 */ { false, 0x3d99, 0x3d99 }, /* 0x3d9a */ { false, 0x3d9a, 0x3d9a }, /* 0x3d9b */ { false, 0x3d9b, 0x3d9b }, /* 0x3d9c */ { false, 0x3d9c, 0x3d9c }, /* 0x3d9d */ { false, 0x3d9d, 0x3d9d }, /* 0x3d9e */ { false, 0x3d9e, 0x3d9e }, /* 0x3d9f */ { false, 0x3d9f, 0x3d9f }, /* 0x3da0 */ { false, 0x3da0, 0x3da0 }, /* 0x3da1 */ { false, 0x3da1, 0x3da1 }, /* 0x3da2 */ { false, 0x3da2, 0x3da2 }, /* 0x3da3 */ { false, 0x3da3, 0x3da3 }, /* 0x3da4 */ { false, 0x3da4, 0x3da4 }, /* 0x3da5 */ { false, 0x3da5, 0x3da5 }, /* 0x3da6 */ { false, 0x3da6, 0x3da6 }, /* 0x3da7 */ { false, 0x3da7, 0x3da7 }, /* 0x3da8 */ { false, 0x3da8, 0x3da8 }, /* 0x3da9 */ { false, 0x3da9, 0x3da9 }, /* 0x3daa */ { false, 0x3daa, 0x3daa }, /* 0x3dab */ { false, 0x3dab, 0x3dab }, /* 0x3dac */ { false, 0x3dac, 0x3dac }, /* 0x3dad */ { false, 0x3dad, 0x3dad }, /* 0x3dae */ { false, 0x3dae, 0x3dae }, /* 0x3daf */ { false, 0x3daf, 0x3daf }, /* 0x3db0 */ { false, 0x3db0, 0x3db0 }, /* 0x3db1 */ { false, 0x3db1, 0x3db1 }, /* 0x3db2 */ { false, 0x3db2, 0x3db2 }, /* 0x3db3 */ { false, 0x3db3, 0x3db3 }, /* 0x3db4 */ { false, 0x3db4, 0x3db4 }, /* 0x3db5 */ { false, 0x3db5, 0x3db5 }, /* 0x3db6 */ { false, 0x3db6, 0x3db6 }, /* 0x3db7 */ { false, 0x3db7, 0x3db7 }, /* 0x3db8 */ { false, 0x3db8, 0x3db8 }, /* 0x3db9 */ { false, 0x3db9, 0x3db9 }, /* 0x3dba */ { false, 0x3dba, 0x3dba }, /* 0x3dbb */ { false, 0x3dbb, 0x3dbb }, /* 0x3dbc */ { false, 0x3dbc, 0x3dbc }, /* 0x3dbd */ { false, 0x3dbd, 0x3dbd }, /* 0x3dbe */ { false, 0x3dbe, 0x3dbe }, /* 0x3dbf */ { false, 0x3dbf, 0x3dbf }, /* 0x3dc0 */ { false, 0x3dc0, 0x3dc0 }, /* 0x3dc1 */ { false, 0x3dc1, 0x3dc1 }, /* 0x3dc2 */ { false, 0x3dc2, 0x3dc2 }, /* 0x3dc3 */ { false, 0x3dc3, 0x3dc3 }, /* 0x3dc4 */ { false, 0x3dc4, 0x3dc4 }, /* 0x3dc5 */ { false, 0x3dc5, 0x3dc5 }, /* 0x3dc6 */ { false, 0x3dc6, 0x3dc6 }, /* 0x3dc7 */ { false, 0x3dc7, 0x3dc7 }, /* 0x3dc8 */ { false, 0x3dc8, 0x3dc8 }, /* 0x3dc9 */ { false, 0x3dc9, 0x3dc9 }, /* 0x3dca */ { false, 0x3dca, 0x3dca }, /* 0x3dcb */ { false, 0x3dcb, 0x3dcb }, /* 0x3dcc */ { false, 0x3dcc, 0x3dcc }, /* 0x3dcd */ { false, 0x3dcd, 0x3dcd }, /* 0x3dce */ { false, 0x3dce, 0x3dce }, /* 0x3dcf */ { false, 0x3dcf, 0x3dcf }, /* 0x3dd0 */ { false, 0x3dd0, 0x3dd0 }, /* 0x3dd1 */ { false, 0x3dd1, 0x3dd1 }, /* 0x3dd2 */ { false, 0x3dd2, 0x3dd2 }, /* 0x3dd3 */ { false, 0x3dd3, 0x3dd3 }, /* 0x3dd4 */ { false, 0x3dd4, 0x3dd4 }, /* 0x3dd5 */ { false, 0x3dd5, 0x3dd5 }, /* 0x3dd6 */ { false, 0x3dd6, 0x3dd6 }, /* 0x3dd7 */ { false, 0x3dd7, 0x3dd7 }, /* 0x3dd8 */ { false, 0x3dd8, 0x3dd8 }, /* 0x3dd9 */ { false, 0x3dd9, 0x3dd9 }, /* 0x3dda */ { false, 0x3dda, 0x3dda }, /* 0x3ddb */ { false, 0x3ddb, 0x3ddb }, /* 0x3ddc */ { false, 0x3ddc, 0x3ddc }, /* 0x3ddd */ { false, 0x3ddd, 0x3ddd }, /* 0x3dde */ { false, 0x3dde, 0x3dde }, /* 0x3ddf */ { false, 0x3ddf, 0x3ddf }, /* 0x3de0 */ { false, 0x3de0, 0x3de0 }, /* 0x3de1 */ { false, 0x3de1, 0x3de1 }, /* 0x3de2 */ { false, 0x3de2, 0x3de2 }, /* 0x3de3 */ { false, 0x3de3, 0x3de3 }, /* 0x3de4 */ { false, 0x3de4, 0x3de4 }, /* 0x3de5 */ { false, 0x3de5, 0x3de5 }, /* 0x3de6 */ { false, 0x3de6, 0x3de6 }, /* 0x3de7 */ { false, 0x3de7, 0x3de7 }, /* 0x3de8 */ { false, 0x3de8, 0x3de8 }, /* 0x3de9 */ { false, 0x3de9, 0x3de9 }, /* 0x3dea */ { false, 0x3dea, 0x3dea }, /* 0x3deb */ { false, 0x3deb, 0x3deb }, /* 0x3dec */ { false, 0x3dec, 0x3dec }, /* 0x3ded */ { false, 0x3ded, 0x3ded }, /* 0x3dee */ { false, 0x3dee, 0x3dee }, /* 0x3def */ { false, 0x3def, 0x3def }, /* 0x3df0 */ { false, 0x3df0, 0x3df0 }, /* 0x3df1 */ { false, 0x3df1, 0x3df1 }, /* 0x3df2 */ { false, 0x3df2, 0x3df2 }, /* 0x3df3 */ { false, 0x3df3, 0x3df3 }, /* 0x3df4 */ { false, 0x3df4, 0x3df4 }, /* 0x3df5 */ { false, 0x3df5, 0x3df5 }, /* 0x3df6 */ { false, 0x3df6, 0x3df6 }, /* 0x3df7 */ { false, 0x3df7, 0x3df7 }, /* 0x3df8 */ { false, 0x3df8, 0x3df8 }, /* 0x3df9 */ { false, 0x3df9, 0x3df9 }, /* 0x3dfa */ { false, 0x3dfa, 0x3dfa }, /* 0x3dfb */ { false, 0x3dfb, 0x3dfb }, /* 0x3dfc */ { false, 0x3dfc, 0x3dfc }, /* 0x3dfd */ { false, 0x3dfd, 0x3dfd }, /* 0x3dfe */ { false, 0x3dfe, 0x3dfe }, /* 0x3dff */ { false, 0x3dff, 0x3dff }, /* 0x3e00 */ { false, 0x3e00, 0x3e00 }, /* 0x3e01 */ { false, 0x3e01, 0x3e01 }, /* 0x3e02 */ { false, 0x3e02, 0x3e02 }, /* 0x3e03 */ { false, 0x3e03, 0x3e03 }, /* 0x3e04 */ { false, 0x3e04, 0x3e04 }, /* 0x3e05 */ { false, 0x3e05, 0x3e05 }, /* 0x3e06 */ { false, 0x3e06, 0x3e06 }, /* 0x3e07 */ { false, 0x3e07, 0x3e07 }, /* 0x3e08 */ { false, 0x3e08, 0x3e08 }, /* 0x3e09 */ { false, 0x3e09, 0x3e09 }, /* 0x3e0a */ { false, 0x3e0a, 0x3e0a }, /* 0x3e0b */ { false, 0x3e0b, 0x3e0b }, /* 0x3e0c */ { false, 0x3e0c, 0x3e0c }, /* 0x3e0d */ { false, 0x3e0d, 0x3e0d }, /* 0x3e0e */ { false, 0x3e0e, 0x3e0e }, /* 0x3e0f */ { false, 0x3e0f, 0x3e0f }, /* 0x3e10 */ { false, 0x3e10, 0x3e10 }, /* 0x3e11 */ { false, 0x3e11, 0x3e11 }, /* 0x3e12 */ { false, 0x3e12, 0x3e12 }, /* 0x3e13 */ { false, 0x3e13, 0x3e13 }, /* 0x3e14 */ { false, 0x3e14, 0x3e14 }, /* 0x3e15 */ { false, 0x3e15, 0x3e15 }, /* 0x3e16 */ { false, 0x3e16, 0x3e16 }, /* 0x3e17 */ { false, 0x3e17, 0x3e17 }, /* 0x3e18 */ { false, 0x3e18, 0x3e18 }, /* 0x3e19 */ { false, 0x3e19, 0x3e19 }, /* 0x3e1a */ { false, 0x3e1a, 0x3e1a }, /* 0x3e1b */ { false, 0x3e1b, 0x3e1b }, /* 0x3e1c */ { false, 0x3e1c, 0x3e1c }, /* 0x3e1d */ { false, 0x3e1d, 0x3e1d }, /* 0x3e1e */ { false, 0x3e1e, 0x3e1e }, /* 0x3e1f */ { false, 0x3e1f, 0x3e1f }, /* 0x3e20 */ { false, 0x3e20, 0x3e20 }, /* 0x3e21 */ { false, 0x3e21, 0x3e21 }, /* 0x3e22 */ { false, 0x3e22, 0x3e22 }, /* 0x3e23 */ { false, 0x3e23, 0x3e23 }, /* 0x3e24 */ { false, 0x3e24, 0x3e24 }, /* 0x3e25 */ { false, 0x3e25, 0x3e25 }, /* 0x3e26 */ { false, 0x3e26, 0x3e26 }, /* 0x3e27 */ { false, 0x3e27, 0x3e27 }, /* 0x3e28 */ { false, 0x3e28, 0x3e28 }, /* 0x3e29 */ { false, 0x3e29, 0x3e29 }, /* 0x3e2a */ { false, 0x3e2a, 0x3e2a }, /* 0x3e2b */ { false, 0x3e2b, 0x3e2b }, /* 0x3e2c */ { false, 0x3e2c, 0x3e2c }, /* 0x3e2d */ { false, 0x3e2d, 0x3e2d }, /* 0x3e2e */ { false, 0x3e2e, 0x3e2e }, /* 0x3e2f */ { false, 0x3e2f, 0x3e2f }, /* 0x3e30 */ { false, 0x3e30, 0x3e30 }, /* 0x3e31 */ { false, 0x3e31, 0x3e31 }, /* 0x3e32 */ { false, 0x3e32, 0x3e32 }, /* 0x3e33 */ { false, 0x3e33, 0x3e33 }, /* 0x3e34 */ { false, 0x3e34, 0x3e34 }, /* 0x3e35 */ { false, 0x3e35, 0x3e35 }, /* 0x3e36 */ { false, 0x3e36, 0x3e36 }, /* 0x3e37 */ { false, 0x3e37, 0x3e37 }, /* 0x3e38 */ { false, 0x3e38, 0x3e38 }, /* 0x3e39 */ { false, 0x3e39, 0x3e39 }, /* 0x3e3a */ { false, 0x3e3a, 0x3e3a }, /* 0x3e3b */ { false, 0x3e3b, 0x3e3b }, /* 0x3e3c */ { false, 0x3e3c, 0x3e3c }, /* 0x3e3d */ { false, 0x3e3d, 0x3e3d }, /* 0x3e3e */ { false, 0x3e3e, 0x3e3e }, /* 0x3e3f */ { false, 0x3e3f, 0x3e3f }, /* 0x3e40 */ { false, 0x3e40, 0x3e40 }, /* 0x3e41 */ { false, 0x3e41, 0x3e41 }, /* 0x3e42 */ { false, 0x3e42, 0x3e42 }, /* 0x3e43 */ { false, 0x3e43, 0x3e43 }, /* 0x3e44 */ { false, 0x3e44, 0x3e44 }, /* 0x3e45 */ { false, 0x3e45, 0x3e45 }, /* 0x3e46 */ { false, 0x3e46, 0x3e46 }, /* 0x3e47 */ { false, 0x3e47, 0x3e47 }, /* 0x3e48 */ { false, 0x3e48, 0x3e48 }, /* 0x3e49 */ { false, 0x3e49, 0x3e49 }, /* 0x3e4a */ { false, 0x3e4a, 0x3e4a }, /* 0x3e4b */ { false, 0x3e4b, 0x3e4b }, /* 0x3e4c */ { false, 0x3e4c, 0x3e4c }, /* 0x3e4d */ { false, 0x3e4d, 0x3e4d }, /* 0x3e4e */ { false, 0x3e4e, 0x3e4e }, /* 0x3e4f */ { false, 0x3e4f, 0x3e4f }, /* 0x3e50 */ { false, 0x3e50, 0x3e50 }, /* 0x3e51 */ { false, 0x3e51, 0x3e51 }, /* 0x3e52 */ { false, 0x3e52, 0x3e52 }, /* 0x3e53 */ { false, 0x3e53, 0x3e53 }, /* 0x3e54 */ { false, 0x3e54, 0x3e54 }, /* 0x3e55 */ { false, 0x3e55, 0x3e55 }, /* 0x3e56 */ { false, 0x3e56, 0x3e56 }, /* 0x3e57 */ { false, 0x3e57, 0x3e57 }, /* 0x3e58 */ { false, 0x3e58, 0x3e58 }, /* 0x3e59 */ { false, 0x3e59, 0x3e59 }, /* 0x3e5a */ { false, 0x3e5a, 0x3e5a }, /* 0x3e5b */ { false, 0x3e5b, 0x3e5b }, /* 0x3e5c */ { false, 0x3e5c, 0x3e5c }, /* 0x3e5d */ { false, 0x3e5d, 0x3e5d }, /* 0x3e5e */ { false, 0x3e5e, 0x3e5e }, /* 0x3e5f */ { false, 0x3e5f, 0x3e5f }, /* 0x3e60 */ { false, 0x3e60, 0x3e60 }, /* 0x3e61 */ { false, 0x3e61, 0x3e61 }, /* 0x3e62 */ { false, 0x3e62, 0x3e62 }, /* 0x3e63 */ { false, 0x3e63, 0x3e63 }, /* 0x3e64 */ { false, 0x3e64, 0x3e64 }, /* 0x3e65 */ { false, 0x3e65, 0x3e65 }, /* 0x3e66 */ { false, 0x3e66, 0x3e66 }, /* 0x3e67 */ { false, 0x3e67, 0x3e67 }, /* 0x3e68 */ { false, 0x3e68, 0x3e68 }, /* 0x3e69 */ { false, 0x3e69, 0x3e69 }, /* 0x3e6a */ { false, 0x3e6a, 0x3e6a }, /* 0x3e6b */ { false, 0x3e6b, 0x3e6b }, /* 0x3e6c */ { false, 0x3e6c, 0x3e6c }, /* 0x3e6d */ { false, 0x3e6d, 0x3e6d }, /* 0x3e6e */ { false, 0x3e6e, 0x3e6e }, /* 0x3e6f */ { false, 0x3e6f, 0x3e6f }, /* 0x3e70 */ { false, 0x3e70, 0x3e70 }, /* 0x3e71 */ { false, 0x3e71, 0x3e71 }, /* 0x3e72 */ { false, 0x3e72, 0x3e72 }, /* 0x3e73 */ { false, 0x3e73, 0x3e73 }, /* 0x3e74 */ { false, 0x3e74, 0x3e74 }, /* 0x3e75 */ { false, 0x3e75, 0x3e75 }, /* 0x3e76 */ { false, 0x3e76, 0x3e76 }, /* 0x3e77 */ { false, 0x3e77, 0x3e77 }, /* 0x3e78 */ { false, 0x3e78, 0x3e78 }, /* 0x3e79 */ { false, 0x3e79, 0x3e79 }, /* 0x3e7a */ { false, 0x3e7a, 0x3e7a }, /* 0x3e7b */ { false, 0x3e7b, 0x3e7b }, /* 0x3e7c */ { false, 0x3e7c, 0x3e7c }, /* 0x3e7d */ { false, 0x3e7d, 0x3e7d }, /* 0x3e7e */ { false, 0x3e7e, 0x3e7e }, /* 0x3e7f */ { false, 0x3e7f, 0x3e7f }, /* 0x3e80 */ { false, 0x3e80, 0x3e80 }, /* 0x3e81 */ { false, 0x3e81, 0x3e81 }, /* 0x3e82 */ { false, 0x3e82, 0x3e82 }, /* 0x3e83 */ { false, 0x3e83, 0x3e83 }, /* 0x3e84 */ { false, 0x3e84, 0x3e84 }, /* 0x3e85 */ { false, 0x3e85, 0x3e85 }, /* 0x3e86 */ { false, 0x3e86, 0x3e86 }, /* 0x3e87 */ { false, 0x3e87, 0x3e87 }, /* 0x3e88 */ { false, 0x3e88, 0x3e88 }, /* 0x3e89 */ { false, 0x3e89, 0x3e89 }, /* 0x3e8a */ { false, 0x3e8a, 0x3e8a }, /* 0x3e8b */ { false, 0x3e8b, 0x3e8b }, /* 0x3e8c */ { false, 0x3e8c, 0x3e8c }, /* 0x3e8d */ { false, 0x3e8d, 0x3e8d }, /* 0x3e8e */ { false, 0x3e8e, 0x3e8e }, /* 0x3e8f */ { false, 0x3e8f, 0x3e8f }, /* 0x3e90 */ { false, 0x3e90, 0x3e90 }, /* 0x3e91 */ { false, 0x3e91, 0x3e91 }, /* 0x3e92 */ { false, 0x3e92, 0x3e92 }, /* 0x3e93 */ { false, 0x3e93, 0x3e93 }, /* 0x3e94 */ { false, 0x3e94, 0x3e94 }, /* 0x3e95 */ { false, 0x3e95, 0x3e95 }, /* 0x3e96 */ { false, 0x3e96, 0x3e96 }, /* 0x3e97 */ { false, 0x3e97, 0x3e97 }, /* 0x3e98 */ { false, 0x3e98, 0x3e98 }, /* 0x3e99 */ { false, 0x3e99, 0x3e99 }, /* 0x3e9a */ { false, 0x3e9a, 0x3e9a }, /* 0x3e9b */ { false, 0x3e9b, 0x3e9b }, /* 0x3e9c */ { false, 0x3e9c, 0x3e9c }, /* 0x3e9d */ { false, 0x3e9d, 0x3e9d }, /* 0x3e9e */ { false, 0x3e9e, 0x3e9e }, /* 0x3e9f */ { false, 0x3e9f, 0x3e9f }, /* 0x3ea0 */ { false, 0x3ea0, 0x3ea0 }, /* 0x3ea1 */ { false, 0x3ea1, 0x3ea1 }, /* 0x3ea2 */ { false, 0x3ea2, 0x3ea2 }, /* 0x3ea3 */ { false, 0x3ea3, 0x3ea3 }, /* 0x3ea4 */ { false, 0x3ea4, 0x3ea4 }, /* 0x3ea5 */ { false, 0x3ea5, 0x3ea5 }, /* 0x3ea6 */ { false, 0x3ea6, 0x3ea6 }, /* 0x3ea7 */ { false, 0x3ea7, 0x3ea7 }, /* 0x3ea8 */ { false, 0x3ea8, 0x3ea8 }, /* 0x3ea9 */ { false, 0x3ea9, 0x3ea9 }, /* 0x3eaa */ { false, 0x3eaa, 0x3eaa }, /* 0x3eab */ { false, 0x3eab, 0x3eab }, /* 0x3eac */ { false, 0x3eac, 0x3eac }, /* 0x3ead */ { false, 0x3ead, 0x3ead }, /* 0x3eae */ { false, 0x3eae, 0x3eae }, /* 0x3eaf */ { false, 0x3eaf, 0x3eaf }, /* 0x3eb0 */ { false, 0x3eb0, 0x3eb0 }, /* 0x3eb1 */ { false, 0x3eb1, 0x3eb1 }, /* 0x3eb2 */ { false, 0x3eb2, 0x3eb2 }, /* 0x3eb3 */ { false, 0x3eb3, 0x3eb3 }, /* 0x3eb4 */ { false, 0x3eb4, 0x3eb4 }, /* 0x3eb5 */ { false, 0x3eb5, 0x3eb5 }, /* 0x3eb6 */ { false, 0x3eb6, 0x3eb6 }, /* 0x3eb7 */ { false, 0x3eb7, 0x3eb7 }, /* 0x3eb8 */ { false, 0x3eb8, 0x3eb8 }, /* 0x3eb9 */ { false, 0x3eb9, 0x3eb9 }, /* 0x3eba */ { false, 0x3eba, 0x3eba }, /* 0x3ebb */ { false, 0x3ebb, 0x3ebb }, /* 0x3ebc */ { false, 0x3ebc, 0x3ebc }, /* 0x3ebd */ { false, 0x3ebd, 0x3ebd }, /* 0x3ebe */ { false, 0x3ebe, 0x3ebe }, /* 0x3ebf */ { false, 0x3ebf, 0x3ebf }, /* 0x3ec0 */ { false, 0x3ec0, 0x3ec0 }, /* 0x3ec1 */ { false, 0x3ec1, 0x3ec1 }, /* 0x3ec2 */ { false, 0x3ec2, 0x3ec2 }, /* 0x3ec3 */ { false, 0x3ec3, 0x3ec3 }, /* 0x3ec4 */ { false, 0x3ec4, 0x3ec4 }, /* 0x3ec5 */ { false, 0x3ec5, 0x3ec5 }, /* 0x3ec6 */ { false, 0x3ec6, 0x3ec6 }, /* 0x3ec7 */ { false, 0x3ec7, 0x3ec7 }, /* 0x3ec8 */ { false, 0x3ec8, 0x3ec8 }, /* 0x3ec9 */ { false, 0x3ec9, 0x3ec9 }, /* 0x3eca */ { false, 0x3eca, 0x3eca }, /* 0x3ecb */ { false, 0x3ecb, 0x3ecb }, /* 0x3ecc */ { false, 0x3ecc, 0x3ecc }, /* 0x3ecd */ { false, 0x3ecd, 0x3ecd }, /* 0x3ece */ { false, 0x3ece, 0x3ece }, /* 0x3ecf */ { false, 0x3ecf, 0x3ecf }, /* 0x3ed0 */ { false, 0x3ed0, 0x3ed0 }, /* 0x3ed1 */ { false, 0x3ed1, 0x3ed1 }, /* 0x3ed2 */ { false, 0x3ed2, 0x3ed2 }, /* 0x3ed3 */ { false, 0x3ed3, 0x3ed3 }, /* 0x3ed4 */ { false, 0x3ed4, 0x3ed4 }, /* 0x3ed5 */ { false, 0x3ed5, 0x3ed5 }, /* 0x3ed6 */ { false, 0x3ed6, 0x3ed6 }, /* 0x3ed7 */ { false, 0x3ed7, 0x3ed7 }, /* 0x3ed8 */ { false, 0x3ed8, 0x3ed8 }, /* 0x3ed9 */ { false, 0x3ed9, 0x3ed9 }, /* 0x3eda */ { false, 0x3eda, 0x3eda }, /* 0x3edb */ { false, 0x3edb, 0x3edb }, /* 0x3edc */ { false, 0x3edc, 0x3edc }, /* 0x3edd */ { false, 0x3edd, 0x3edd }, /* 0x3ede */ { false, 0x3ede, 0x3ede }, /* 0x3edf */ { false, 0x3edf, 0x3edf }, /* 0x3ee0 */ { false, 0x3ee0, 0x3ee0 }, /* 0x3ee1 */ { false, 0x3ee1, 0x3ee1 }, /* 0x3ee2 */ { false, 0x3ee2, 0x3ee2 }, /* 0x3ee3 */ { false, 0x3ee3, 0x3ee3 }, /* 0x3ee4 */ { false, 0x3ee4, 0x3ee4 }, /* 0x3ee5 */ { false, 0x3ee5, 0x3ee5 }, /* 0x3ee6 */ { false, 0x3ee6, 0x3ee6 }, /* 0x3ee7 */ { false, 0x3ee7, 0x3ee7 }, /* 0x3ee8 */ { false, 0x3ee8, 0x3ee8 }, /* 0x3ee9 */ { false, 0x3ee9, 0x3ee9 }, /* 0x3eea */ { false, 0x3eea, 0x3eea }, /* 0x3eeb */ { false, 0x3eeb, 0x3eeb }, /* 0x3eec */ { false, 0x3eec, 0x3eec }, /* 0x3eed */ { false, 0x3eed, 0x3eed }, /* 0x3eee */ { false, 0x3eee, 0x3eee }, /* 0x3eef */ { false, 0x3eef, 0x3eef }, /* 0x3ef0 */ { false, 0x3ef0, 0x3ef0 }, /* 0x3ef1 */ { false, 0x3ef1, 0x3ef1 }, /* 0x3ef2 */ { false, 0x3ef2, 0x3ef2 }, /* 0x3ef3 */ { false, 0x3ef3, 0x3ef3 }, /* 0x3ef4 */ { false, 0x3ef4, 0x3ef4 }, /* 0x3ef5 */ { false, 0x3ef5, 0x3ef5 }, /* 0x3ef6 */ { false, 0x3ef6, 0x3ef6 }, /* 0x3ef7 */ { false, 0x3ef7, 0x3ef7 }, /* 0x3ef8 */ { false, 0x3ef8, 0x3ef8 }, /* 0x3ef9 */ { false, 0x3ef9, 0x3ef9 }, /* 0x3efa */ { false, 0x3efa, 0x3efa }, /* 0x3efb */ { false, 0x3efb, 0x3efb }, /* 0x3efc */ { false, 0x3efc, 0x3efc }, /* 0x3efd */ { false, 0x3efd, 0x3efd }, /* 0x3efe */ { false, 0x3efe, 0x3efe }, /* 0x3eff */ { false, 0x3eff, 0x3eff }, /* 0x3f00 */ { false, 0x3f00, 0x3f00 }, /* 0x3f01 */ { false, 0x3f01, 0x3f01 }, /* 0x3f02 */ { false, 0x3f02, 0x3f02 }, /* 0x3f03 */ { false, 0x3f03, 0x3f03 }, /* 0x3f04 */ { false, 0x3f04, 0x3f04 }, /* 0x3f05 */ { false, 0x3f05, 0x3f05 }, /* 0x3f06 */ { false, 0x3f06, 0x3f06 }, /* 0x3f07 */ { false, 0x3f07, 0x3f07 }, /* 0x3f08 */ { false, 0x3f08, 0x3f08 }, /* 0x3f09 */ { false, 0x3f09, 0x3f09 }, /* 0x3f0a */ { false, 0x3f0a, 0x3f0a }, /* 0x3f0b */ { false, 0x3f0b, 0x3f0b }, /* 0x3f0c */ { false, 0x3f0c, 0x3f0c }, /* 0x3f0d */ { false, 0x3f0d, 0x3f0d }, /* 0x3f0e */ { false, 0x3f0e, 0x3f0e }, /* 0x3f0f */ { false, 0x3f0f, 0x3f0f }, /* 0x3f10 */ { false, 0x3f10, 0x3f10 }, /* 0x3f11 */ { false, 0x3f11, 0x3f11 }, /* 0x3f12 */ { false, 0x3f12, 0x3f12 }, /* 0x3f13 */ { false, 0x3f13, 0x3f13 }, /* 0x3f14 */ { false, 0x3f14, 0x3f14 }, /* 0x3f15 */ { false, 0x3f15, 0x3f15 }, /* 0x3f16 */ { false, 0x3f16, 0x3f16 }, /* 0x3f17 */ { false, 0x3f17, 0x3f17 }, /* 0x3f18 */ { false, 0x3f18, 0x3f18 }, /* 0x3f19 */ { false, 0x3f19, 0x3f19 }, /* 0x3f1a */ { false, 0x3f1a, 0x3f1a }, /* 0x3f1b */ { false, 0x3f1b, 0x3f1b }, /* 0x3f1c */ { false, 0x3f1c, 0x3f1c }, /* 0x3f1d */ { false, 0x3f1d, 0x3f1d }, /* 0x3f1e */ { false, 0x3f1e, 0x3f1e }, /* 0x3f1f */ { false, 0x3f1f, 0x3f1f }, /* 0x3f20 */ { false, 0x3f20, 0x3f20 }, /* 0x3f21 */ { false, 0x3f21, 0x3f21 }, /* 0x3f22 */ { false, 0x3f22, 0x3f22 }, /* 0x3f23 */ { false, 0x3f23, 0x3f23 }, /* 0x3f24 */ { false, 0x3f24, 0x3f24 }, /* 0x3f25 */ { false, 0x3f25, 0x3f25 }, /* 0x3f26 */ { false, 0x3f26, 0x3f26 }, /* 0x3f27 */ { false, 0x3f27, 0x3f27 }, /* 0x3f28 */ { false, 0x3f28, 0x3f28 }, /* 0x3f29 */ { false, 0x3f29, 0x3f29 }, /* 0x3f2a */ { false, 0x3f2a, 0x3f2a }, /* 0x3f2b */ { false, 0x3f2b, 0x3f2b }, /* 0x3f2c */ { false, 0x3f2c, 0x3f2c }, /* 0x3f2d */ { false, 0x3f2d, 0x3f2d }, /* 0x3f2e */ { false, 0x3f2e, 0x3f2e }, /* 0x3f2f */ { false, 0x3f2f, 0x3f2f }, /* 0x3f30 */ { false, 0x3f30, 0x3f30 }, /* 0x3f31 */ { false, 0x3f31, 0x3f31 }, /* 0x3f32 */ { false, 0x3f32, 0x3f32 }, /* 0x3f33 */ { false, 0x3f33, 0x3f33 }, /* 0x3f34 */ { false, 0x3f34, 0x3f34 }, /* 0x3f35 */ { false, 0x3f35, 0x3f35 }, /* 0x3f36 */ { false, 0x3f36, 0x3f36 }, /* 0x3f37 */ { false, 0x3f37, 0x3f37 }, /* 0x3f38 */ { false, 0x3f38, 0x3f38 }, /* 0x3f39 */ { false, 0x3f39, 0x3f39 }, /* 0x3f3a */ { false, 0x3f3a, 0x3f3a }, /* 0x3f3b */ { false, 0x3f3b, 0x3f3b }, /* 0x3f3c */ { false, 0x3f3c, 0x3f3c }, /* 0x3f3d */ { false, 0x3f3d, 0x3f3d }, /* 0x3f3e */ { false, 0x3f3e, 0x3f3e }, /* 0x3f3f */ { false, 0x3f3f, 0x3f3f }, /* 0x3f40 */ { false, 0x3f40, 0x3f40 }, /* 0x3f41 */ { false, 0x3f41, 0x3f41 }, /* 0x3f42 */ { false, 0x3f42, 0x3f42 }, /* 0x3f43 */ { false, 0x3f43, 0x3f43 }, /* 0x3f44 */ { false, 0x3f44, 0x3f44 }, /* 0x3f45 */ { false, 0x3f45, 0x3f45 }, /* 0x3f46 */ { false, 0x3f46, 0x3f46 }, /* 0x3f47 */ { false, 0x3f47, 0x3f47 }, /* 0x3f48 */ { false, 0x3f48, 0x3f48 }, /* 0x3f49 */ { false, 0x3f49, 0x3f49 }, /* 0x3f4a */ { false, 0x3f4a, 0x3f4a }, /* 0x3f4b */ { false, 0x3f4b, 0x3f4b }, /* 0x3f4c */ { false, 0x3f4c, 0x3f4c }, /* 0x3f4d */ { false, 0x3f4d, 0x3f4d }, /* 0x3f4e */ { false, 0x3f4e, 0x3f4e }, /* 0x3f4f */ { false, 0x3f4f, 0x3f4f }, /* 0x3f50 */ { false, 0x3f50, 0x3f50 }, /* 0x3f51 */ { false, 0x3f51, 0x3f51 }, /* 0x3f52 */ { false, 0x3f52, 0x3f52 }, /* 0x3f53 */ { false, 0x3f53, 0x3f53 }, /* 0x3f54 */ { false, 0x3f54, 0x3f54 }, /* 0x3f55 */ { false, 0x3f55, 0x3f55 }, /* 0x3f56 */ { false, 0x3f56, 0x3f56 }, /* 0x3f57 */ { false, 0x3f57, 0x3f57 }, /* 0x3f58 */ { false, 0x3f58, 0x3f58 }, /* 0x3f59 */ { false, 0x3f59, 0x3f59 }, /* 0x3f5a */ { false, 0x3f5a, 0x3f5a }, /* 0x3f5b */ { false, 0x3f5b, 0x3f5b }, /* 0x3f5c */ { false, 0x3f5c, 0x3f5c }, /* 0x3f5d */ { false, 0x3f5d, 0x3f5d }, /* 0x3f5e */ { false, 0x3f5e, 0x3f5e }, /* 0x3f5f */ { false, 0x3f5f, 0x3f5f }, /* 0x3f60 */ { false, 0x3f60, 0x3f60 }, /* 0x3f61 */ { false, 0x3f61, 0x3f61 }, /* 0x3f62 */ { false, 0x3f62, 0x3f62 }, /* 0x3f63 */ { false, 0x3f63, 0x3f63 }, /* 0x3f64 */ { false, 0x3f64, 0x3f64 }, /* 0x3f65 */ { false, 0x3f65, 0x3f65 }, /* 0x3f66 */ { false, 0x3f66, 0x3f66 }, /* 0x3f67 */ { false, 0x3f67, 0x3f67 }, /* 0x3f68 */ { false, 0x3f68, 0x3f68 }, /* 0x3f69 */ { false, 0x3f69, 0x3f69 }, /* 0x3f6a */ { false, 0x3f6a, 0x3f6a }, /* 0x3f6b */ { false, 0x3f6b, 0x3f6b }, /* 0x3f6c */ { false, 0x3f6c, 0x3f6c }, /* 0x3f6d */ { false, 0x3f6d, 0x3f6d }, /* 0x3f6e */ { false, 0x3f6e, 0x3f6e }, /* 0x3f6f */ { false, 0x3f6f, 0x3f6f }, /* 0x3f70 */ { false, 0x3f70, 0x3f70 }, /* 0x3f71 */ { false, 0x3f71, 0x3f71 }, /* 0x3f72 */ { false, 0x3f72, 0x3f72 }, /* 0x3f73 */ { false, 0x3f73, 0x3f73 }, /* 0x3f74 */ { false, 0x3f74, 0x3f74 }, /* 0x3f75 */ { false, 0x3f75, 0x3f75 }, /* 0x3f76 */ { false, 0x3f76, 0x3f76 }, /* 0x3f77 */ { false, 0x3f77, 0x3f77 }, /* 0x3f78 */ { false, 0x3f78, 0x3f78 }, /* 0x3f79 */ { false, 0x3f79, 0x3f79 }, /* 0x3f7a */ { false, 0x3f7a, 0x3f7a }, /* 0x3f7b */ { false, 0x3f7b, 0x3f7b }, /* 0x3f7c */ { false, 0x3f7c, 0x3f7c }, /* 0x3f7d */ { false, 0x3f7d, 0x3f7d }, /* 0x3f7e */ { false, 0x3f7e, 0x3f7e }, /* 0x3f7f */ { false, 0x3f7f, 0x3f7f }, /* 0x3f80 */ { false, 0x3f80, 0x3f80 }, /* 0x3f81 */ { false, 0x3f81, 0x3f81 }, /* 0x3f82 */ { false, 0x3f82, 0x3f82 }, /* 0x3f83 */ { false, 0x3f83, 0x3f83 }, /* 0x3f84 */ { false, 0x3f84, 0x3f84 }, /* 0x3f85 */ { false, 0x3f85, 0x3f85 }, /* 0x3f86 */ { false, 0x3f86, 0x3f86 }, /* 0x3f87 */ { false, 0x3f87, 0x3f87 }, /* 0x3f88 */ { false, 0x3f88, 0x3f88 }, /* 0x3f89 */ { false, 0x3f89, 0x3f89 }, /* 0x3f8a */ { false, 0x3f8a, 0x3f8a }, /* 0x3f8b */ { false, 0x3f8b, 0x3f8b }, /* 0x3f8c */ { false, 0x3f8c, 0x3f8c }, /* 0x3f8d */ { false, 0x3f8d, 0x3f8d }, /* 0x3f8e */ { false, 0x3f8e, 0x3f8e }, /* 0x3f8f */ { false, 0x3f8f, 0x3f8f }, /* 0x3f90 */ { false, 0x3f90, 0x3f90 }, /* 0x3f91 */ { false, 0x3f91, 0x3f91 }, /* 0x3f92 */ { false, 0x3f92, 0x3f92 }, /* 0x3f93 */ { false, 0x3f93, 0x3f93 }, /* 0x3f94 */ { false, 0x3f94, 0x3f94 }, /* 0x3f95 */ { false, 0x3f95, 0x3f95 }, /* 0x3f96 */ { false, 0x3f96, 0x3f96 }, /* 0x3f97 */ { false, 0x3f97, 0x3f97 }, /* 0x3f98 */ { false, 0x3f98, 0x3f98 }, /* 0x3f99 */ { false, 0x3f99, 0x3f99 }, /* 0x3f9a */ { false, 0x3f9a, 0x3f9a }, /* 0x3f9b */ { false, 0x3f9b, 0x3f9b }, /* 0x3f9c */ { false, 0x3f9c, 0x3f9c }, /* 0x3f9d */ { false, 0x3f9d, 0x3f9d }, /* 0x3f9e */ { false, 0x3f9e, 0x3f9e }, /* 0x3f9f */ { false, 0x3f9f, 0x3f9f }, /* 0x3fa0 */ { false, 0x3fa0, 0x3fa0 }, /* 0x3fa1 */ { false, 0x3fa1, 0x3fa1 }, /* 0x3fa2 */ { false, 0x3fa2, 0x3fa2 }, /* 0x3fa3 */ { false, 0x3fa3, 0x3fa3 }, /* 0x3fa4 */ { false, 0x3fa4, 0x3fa4 }, /* 0x3fa5 */ { false, 0x3fa5, 0x3fa5 }, /* 0x3fa6 */ { false, 0x3fa6, 0x3fa6 }, /* 0x3fa7 */ { false, 0x3fa7, 0x3fa7 }, /* 0x3fa8 */ { false, 0x3fa8, 0x3fa8 }, /* 0x3fa9 */ { false, 0x3fa9, 0x3fa9 }, /* 0x3faa */ { false, 0x3faa, 0x3faa }, /* 0x3fab */ { false, 0x3fab, 0x3fab }, /* 0x3fac */ { false, 0x3fac, 0x3fac }, /* 0x3fad */ { false, 0x3fad, 0x3fad }, /* 0x3fae */ { false, 0x3fae, 0x3fae }, /* 0x3faf */ { false, 0x3faf, 0x3faf }, /* 0x3fb0 */ { false, 0x3fb0, 0x3fb0 }, /* 0x3fb1 */ { false, 0x3fb1, 0x3fb1 }, /* 0x3fb2 */ { false, 0x3fb2, 0x3fb2 }, /* 0x3fb3 */ { false, 0x3fb3, 0x3fb3 }, /* 0x3fb4 */ { false, 0x3fb4, 0x3fb4 }, /* 0x3fb5 */ { false, 0x3fb5, 0x3fb5 }, /* 0x3fb6 */ { false, 0x3fb6, 0x3fb6 }, /* 0x3fb7 */ { false, 0x3fb7, 0x3fb7 }, /* 0x3fb8 */ { false, 0x3fb8, 0x3fb8 }, /* 0x3fb9 */ { false, 0x3fb9, 0x3fb9 }, /* 0x3fba */ { false, 0x3fba, 0x3fba }, /* 0x3fbb */ { false, 0x3fbb, 0x3fbb }, /* 0x3fbc */ { false, 0x3fbc, 0x3fbc }, /* 0x3fbd */ { false, 0x3fbd, 0x3fbd }, /* 0x3fbe */ { false, 0x3fbe, 0x3fbe }, /* 0x3fbf */ { false, 0x3fbf, 0x3fbf }, /* 0x3fc0 */ { false, 0x3fc0, 0x3fc0 }, /* 0x3fc1 */ { false, 0x3fc1, 0x3fc1 }, /* 0x3fc2 */ { false, 0x3fc2, 0x3fc2 }, /* 0x3fc3 */ { false, 0x3fc3, 0x3fc3 }, /* 0x3fc4 */ { false, 0x3fc4, 0x3fc4 }, /* 0x3fc5 */ { false, 0x3fc5, 0x3fc5 }, /* 0x3fc6 */ { false, 0x3fc6, 0x3fc6 }, /* 0x3fc7 */ { false, 0x3fc7, 0x3fc7 }, /* 0x3fc8 */ { false, 0x3fc8, 0x3fc8 }, /* 0x3fc9 */ { false, 0x3fc9, 0x3fc9 }, /* 0x3fca */ { false, 0x3fca, 0x3fca }, /* 0x3fcb */ { false, 0x3fcb, 0x3fcb }, /* 0x3fcc */ { false, 0x3fcc, 0x3fcc }, /* 0x3fcd */ { false, 0x3fcd, 0x3fcd }, /* 0x3fce */ { false, 0x3fce, 0x3fce }, /* 0x3fcf */ { false, 0x3fcf, 0x3fcf }, /* 0x3fd0 */ { false, 0x3fd0, 0x3fd0 }, /* 0x3fd1 */ { false, 0x3fd1, 0x3fd1 }, /* 0x3fd2 */ { false, 0x3fd2, 0x3fd2 }, /* 0x3fd3 */ { false, 0x3fd3, 0x3fd3 }, /* 0x3fd4 */ { false, 0x3fd4, 0x3fd4 }, /* 0x3fd5 */ { false, 0x3fd5, 0x3fd5 }, /* 0x3fd6 */ { false, 0x3fd6, 0x3fd6 }, /* 0x3fd7 */ { false, 0x3fd7, 0x3fd7 }, /* 0x3fd8 */ { false, 0x3fd8, 0x3fd8 }, /* 0x3fd9 */ { false, 0x3fd9, 0x3fd9 }, /* 0x3fda */ { false, 0x3fda, 0x3fda }, /* 0x3fdb */ { false, 0x3fdb, 0x3fdb }, /* 0x3fdc */ { false, 0x3fdc, 0x3fdc }, /* 0x3fdd */ { false, 0x3fdd, 0x3fdd }, /* 0x3fde */ { false, 0x3fde, 0x3fde }, /* 0x3fdf */ { false, 0x3fdf, 0x3fdf }, /* 0x3fe0 */ { false, 0x3fe0, 0x3fe0 }, /* 0x3fe1 */ { false, 0x3fe1, 0x3fe1 }, /* 0x3fe2 */ { false, 0x3fe2, 0x3fe2 }, /* 0x3fe3 */ { false, 0x3fe3, 0x3fe3 }, /* 0x3fe4 */ { false, 0x3fe4, 0x3fe4 }, /* 0x3fe5 */ { false, 0x3fe5, 0x3fe5 }, /* 0x3fe6 */ { false, 0x3fe6, 0x3fe6 }, /* 0x3fe7 */ { false, 0x3fe7, 0x3fe7 }, /* 0x3fe8 */ { false, 0x3fe8, 0x3fe8 }, /* 0x3fe9 */ { false, 0x3fe9, 0x3fe9 }, /* 0x3fea */ { false, 0x3fea, 0x3fea }, /* 0x3feb */ { false, 0x3feb, 0x3feb }, /* 0x3fec */ { false, 0x3fec, 0x3fec }, /* 0x3fed */ { false, 0x3fed, 0x3fed }, /* 0x3fee */ { false, 0x3fee, 0x3fee }, /* 0x3fef */ { false, 0x3fef, 0x3fef }, /* 0x3ff0 */ { false, 0x3ff0, 0x3ff0 }, /* 0x3ff1 */ { false, 0x3ff1, 0x3ff1 }, /* 0x3ff2 */ { false, 0x3ff2, 0x3ff2 }, /* 0x3ff3 */ { false, 0x3ff3, 0x3ff3 }, /* 0x3ff4 */ { false, 0x3ff4, 0x3ff4 }, /* 0x3ff5 */ { false, 0x3ff5, 0x3ff5 }, /* 0x3ff6 */ { false, 0x3ff6, 0x3ff6 }, /* 0x3ff7 */ { false, 0x3ff7, 0x3ff7 }, /* 0x3ff8 */ { false, 0x3ff8, 0x3ff8 }, /* 0x3ff9 */ { false, 0x3ff9, 0x3ff9 }, /* 0x3ffa */ { false, 0x3ffa, 0x3ffa }, /* 0x3ffb */ { false, 0x3ffb, 0x3ffb }, /* 0x3ffc */ { false, 0x3ffc, 0x3ffc }, /* 0x3ffd */ { false, 0x3ffd, 0x3ffd }, /* 0x3ffe */ { false, 0x3ffe, 0x3ffe }, /* 0x3fff */ { false, 0x3fff, 0x3fff }, /* 0x4000 */ { false, 0x4000, 0x4000 }, /* 0x4001 */ { false, 0x4001, 0x4001 }, /* 0x4002 */ { false, 0x4002, 0x4002 }, /* 0x4003 */ { false, 0x4003, 0x4003 }, /* 0x4004 */ { false, 0x4004, 0x4004 }, /* 0x4005 */ { false, 0x4005, 0x4005 }, /* 0x4006 */ { false, 0x4006, 0x4006 }, /* 0x4007 */ { false, 0x4007, 0x4007 }, /* 0x4008 */ { false, 0x4008, 0x4008 }, /* 0x4009 */ { false, 0x4009, 0x4009 }, /* 0x400a */ { false, 0x400a, 0x400a }, /* 0x400b */ { false, 0x400b, 0x400b }, /* 0x400c */ { false, 0x400c, 0x400c }, /* 0x400d */ { false, 0x400d, 0x400d }, /* 0x400e */ { false, 0x400e, 0x400e }, /* 0x400f */ { false, 0x400f, 0x400f }, /* 0x4010 */ { false, 0x4010, 0x4010 }, /* 0x4011 */ { false, 0x4011, 0x4011 }, /* 0x4012 */ { false, 0x4012, 0x4012 }, /* 0x4013 */ { false, 0x4013, 0x4013 }, /* 0x4014 */ { false, 0x4014, 0x4014 }, /* 0x4015 */ { false, 0x4015, 0x4015 }, /* 0x4016 */ { false, 0x4016, 0x4016 }, /* 0x4017 */ { false, 0x4017, 0x4017 }, /* 0x4018 */ { false, 0x4018, 0x4018 }, /* 0x4019 */ { false, 0x4019, 0x4019 }, /* 0x401a */ { false, 0x401a, 0x401a }, /* 0x401b */ { false, 0x401b, 0x401b }, /* 0x401c */ { false, 0x401c, 0x401c }, /* 0x401d */ { false, 0x401d, 0x401d }, /* 0x401e */ { false, 0x401e, 0x401e }, /* 0x401f */ { false, 0x401f, 0x401f }, /* 0x4020 */ { false, 0x4020, 0x4020 }, /* 0x4021 */ { false, 0x4021, 0x4021 }, /* 0x4022 */ { false, 0x4022, 0x4022 }, /* 0x4023 */ { false, 0x4023, 0x4023 }, /* 0x4024 */ { false, 0x4024, 0x4024 }, /* 0x4025 */ { false, 0x4025, 0x4025 }, /* 0x4026 */ { false, 0x4026, 0x4026 }, /* 0x4027 */ { false, 0x4027, 0x4027 }, /* 0x4028 */ { false, 0x4028, 0x4028 }, /* 0x4029 */ { false, 0x4029, 0x4029 }, /* 0x402a */ { false, 0x402a, 0x402a }, /* 0x402b */ { false, 0x402b, 0x402b }, /* 0x402c */ { false, 0x402c, 0x402c }, /* 0x402d */ { false, 0x402d, 0x402d }, /* 0x402e */ { false, 0x402e, 0x402e }, /* 0x402f */ { false, 0x402f, 0x402f }, /* 0x4030 */ { false, 0x4030, 0x4030 }, /* 0x4031 */ { false, 0x4031, 0x4031 }, /* 0x4032 */ { false, 0x4032, 0x4032 }, /* 0x4033 */ { false, 0x4033, 0x4033 }, /* 0x4034 */ { false, 0x4034, 0x4034 }, /* 0x4035 */ { false, 0x4035, 0x4035 }, /* 0x4036 */ { false, 0x4036, 0x4036 }, /* 0x4037 */ { false, 0x4037, 0x4037 }, /* 0x4038 */ { false, 0x4038, 0x4038 }, /* 0x4039 */ { false, 0x4039, 0x4039 }, /* 0x403a */ { false, 0x403a, 0x403a }, /* 0x403b */ { false, 0x403b, 0x403b }, /* 0x403c */ { false, 0x403c, 0x403c }, /* 0x403d */ { false, 0x403d, 0x403d }, /* 0x403e */ { false, 0x403e, 0x403e }, /* 0x403f */ { false, 0x403f, 0x403f }, /* 0x4040 */ { false, 0x4040, 0x4040 }, /* 0x4041 */ { false, 0x4041, 0x4041 }, /* 0x4042 */ { false, 0x4042, 0x4042 }, /* 0x4043 */ { false, 0x4043, 0x4043 }, /* 0x4044 */ { false, 0x4044, 0x4044 }, /* 0x4045 */ { false, 0x4045, 0x4045 }, /* 0x4046 */ { false, 0x4046, 0x4046 }, /* 0x4047 */ { false, 0x4047, 0x4047 }, /* 0x4048 */ { false, 0x4048, 0x4048 }, /* 0x4049 */ { false, 0x4049, 0x4049 }, /* 0x404a */ { false, 0x404a, 0x404a }, /* 0x404b */ { false, 0x404b, 0x404b }, /* 0x404c */ { false, 0x404c, 0x404c }, /* 0x404d */ { false, 0x404d, 0x404d }, /* 0x404e */ { false, 0x404e, 0x404e }, /* 0x404f */ { false, 0x404f, 0x404f }, /* 0x4050 */ { false, 0x4050, 0x4050 }, /* 0x4051 */ { false, 0x4051, 0x4051 }, /* 0x4052 */ { false, 0x4052, 0x4052 }, /* 0x4053 */ { false, 0x4053, 0x4053 }, /* 0x4054 */ { false, 0x4054, 0x4054 }, /* 0x4055 */ { false, 0x4055, 0x4055 }, /* 0x4056 */ { false, 0x4056, 0x4056 }, /* 0x4057 */ { false, 0x4057, 0x4057 }, /* 0x4058 */ { false, 0x4058, 0x4058 }, /* 0x4059 */ { false, 0x4059, 0x4059 }, /* 0x405a */ { false, 0x405a, 0x405a }, /* 0x405b */ { false, 0x405b, 0x405b }, /* 0x405c */ { false, 0x405c, 0x405c }, /* 0x405d */ { false, 0x405d, 0x405d }, /* 0x405e */ { false, 0x405e, 0x405e }, /* 0x405f */ { false, 0x405f, 0x405f }, /* 0x4060 */ { false, 0x4060, 0x4060 }, /* 0x4061 */ { false, 0x4061, 0x4061 }, /* 0x4062 */ { false, 0x4062, 0x4062 }, /* 0x4063 */ { false, 0x4063, 0x4063 }, /* 0x4064 */ { false, 0x4064, 0x4064 }, /* 0x4065 */ { false, 0x4065, 0x4065 }, /* 0x4066 */ { false, 0x4066, 0x4066 }, /* 0x4067 */ { false, 0x4067, 0x4067 }, /* 0x4068 */ { false, 0x4068, 0x4068 }, /* 0x4069 */ { false, 0x4069, 0x4069 }, /* 0x406a */ { false, 0x406a, 0x406a }, /* 0x406b */ { false, 0x406b, 0x406b }, /* 0x406c */ { false, 0x406c, 0x406c }, /* 0x406d */ { false, 0x406d, 0x406d }, /* 0x406e */ { false, 0x406e, 0x406e }, /* 0x406f */ { false, 0x406f, 0x406f }, /* 0x4070 */ { false, 0x4070, 0x4070 }, /* 0x4071 */ { false, 0x4071, 0x4071 }, /* 0x4072 */ { false, 0x4072, 0x4072 }, /* 0x4073 */ { false, 0x4073, 0x4073 }, /* 0x4074 */ { false, 0x4074, 0x4074 }, /* 0x4075 */ { false, 0x4075, 0x4075 }, /* 0x4076 */ { false, 0x4076, 0x4076 }, /* 0x4077 */ { false, 0x4077, 0x4077 }, /* 0x4078 */ { false, 0x4078, 0x4078 }, /* 0x4079 */ { false, 0x4079, 0x4079 }, /* 0x407a */ { false, 0x407a, 0x407a }, /* 0x407b */ { false, 0x407b, 0x407b }, /* 0x407c */ { false, 0x407c, 0x407c }, /* 0x407d */ { false, 0x407d, 0x407d }, /* 0x407e */ { false, 0x407e, 0x407e }, /* 0x407f */ { false, 0x407f, 0x407f }, /* 0x4080 */ { false, 0x4080, 0x4080 }, /* 0x4081 */ { false, 0x4081, 0x4081 }, /* 0x4082 */ { false, 0x4082, 0x4082 }, /* 0x4083 */ { false, 0x4083, 0x4083 }, /* 0x4084 */ { false, 0x4084, 0x4084 }, /* 0x4085 */ { false, 0x4085, 0x4085 }, /* 0x4086 */ { false, 0x4086, 0x4086 }, /* 0x4087 */ { false, 0x4087, 0x4087 }, /* 0x4088 */ { false, 0x4088, 0x4088 }, /* 0x4089 */ { false, 0x4089, 0x4089 }, /* 0x408a */ { false, 0x408a, 0x408a }, /* 0x408b */ { false, 0x408b, 0x408b }, /* 0x408c */ { false, 0x408c, 0x408c }, /* 0x408d */ { false, 0x408d, 0x408d }, /* 0x408e */ { false, 0x408e, 0x408e }, /* 0x408f */ { false, 0x408f, 0x408f }, /* 0x4090 */ { false, 0x4090, 0x4090 }, /* 0x4091 */ { false, 0x4091, 0x4091 }, /* 0x4092 */ { false, 0x4092, 0x4092 }, /* 0x4093 */ { false, 0x4093, 0x4093 }, /* 0x4094 */ { false, 0x4094, 0x4094 }, /* 0x4095 */ { false, 0x4095, 0x4095 }, /* 0x4096 */ { false, 0x4096, 0x4096 }, /* 0x4097 */ { false, 0x4097, 0x4097 }, /* 0x4098 */ { false, 0x4098, 0x4098 }, /* 0x4099 */ { false, 0x4099, 0x4099 }, /* 0x409a */ { false, 0x409a, 0x409a }, /* 0x409b */ { false, 0x409b, 0x409b }, /* 0x409c */ { false, 0x409c, 0x409c }, /* 0x409d */ { false, 0x409d, 0x409d }, /* 0x409e */ { false, 0x409e, 0x409e }, /* 0x409f */ { false, 0x409f, 0x409f }, /* 0x40a0 */ { false, 0x40a0, 0x40a0 }, /* 0x40a1 */ { false, 0x40a1, 0x40a1 }, /* 0x40a2 */ { false, 0x40a2, 0x40a2 }, /* 0x40a3 */ { false, 0x40a3, 0x40a3 }, /* 0x40a4 */ { false, 0x40a4, 0x40a4 }, /* 0x40a5 */ { false, 0x40a5, 0x40a5 }, /* 0x40a6 */ { false, 0x40a6, 0x40a6 }, /* 0x40a7 */ { false, 0x40a7, 0x40a7 }, /* 0x40a8 */ { false, 0x40a8, 0x40a8 }, /* 0x40a9 */ { false, 0x40a9, 0x40a9 }, /* 0x40aa */ { false, 0x40aa, 0x40aa }, /* 0x40ab */ { false, 0x40ab, 0x40ab }, /* 0x40ac */ { false, 0x40ac, 0x40ac }, /* 0x40ad */ { false, 0x40ad, 0x40ad }, /* 0x40ae */ { false, 0x40ae, 0x40ae }, /* 0x40af */ { false, 0x40af, 0x40af }, /* 0x40b0 */ { false, 0x40b0, 0x40b0 }, /* 0x40b1 */ { false, 0x40b1, 0x40b1 }, /* 0x40b2 */ { false, 0x40b2, 0x40b2 }, /* 0x40b3 */ { false, 0x40b3, 0x40b3 }, /* 0x40b4 */ { false, 0x40b4, 0x40b4 }, /* 0x40b5 */ { false, 0x40b5, 0x40b5 }, /* 0x40b6 */ { false, 0x40b6, 0x40b6 }, /* 0x40b7 */ { false, 0x40b7, 0x40b7 }, /* 0x40b8 */ { false, 0x40b8, 0x40b8 }, /* 0x40b9 */ { false, 0x40b9, 0x40b9 }, /* 0x40ba */ { false, 0x40ba, 0x40ba }, /* 0x40bb */ { false, 0x40bb, 0x40bb }, /* 0x40bc */ { false, 0x40bc, 0x40bc }, /* 0x40bd */ { false, 0x40bd, 0x40bd }, /* 0x40be */ { false, 0x40be, 0x40be }, /* 0x40bf */ { false, 0x40bf, 0x40bf }, /* 0x40c0 */ { false, 0x40c0, 0x40c0 }, /* 0x40c1 */ { false, 0x40c1, 0x40c1 }, /* 0x40c2 */ { false, 0x40c2, 0x40c2 }, /* 0x40c3 */ { false, 0x40c3, 0x40c3 }, /* 0x40c4 */ { false, 0x40c4, 0x40c4 }, /* 0x40c5 */ { false, 0x40c5, 0x40c5 }, /* 0x40c6 */ { false, 0x40c6, 0x40c6 }, /* 0x40c7 */ { false, 0x40c7, 0x40c7 }, /* 0x40c8 */ { false, 0x40c8, 0x40c8 }, /* 0x40c9 */ { false, 0x40c9, 0x40c9 }, /* 0x40ca */ { false, 0x40ca, 0x40ca }, /* 0x40cb */ { false, 0x40cb, 0x40cb }, /* 0x40cc */ { false, 0x40cc, 0x40cc }, /* 0x40cd */ { false, 0x40cd, 0x40cd }, /* 0x40ce */ { false, 0x40ce, 0x40ce }, /* 0x40cf */ { false, 0x40cf, 0x40cf }, /* 0x40d0 */ { false, 0x40d0, 0x40d0 }, /* 0x40d1 */ { false, 0x40d1, 0x40d1 }, /* 0x40d2 */ { false, 0x40d2, 0x40d2 }, /* 0x40d3 */ { false, 0x40d3, 0x40d3 }, /* 0x40d4 */ { false, 0x40d4, 0x40d4 }, /* 0x40d5 */ { false, 0x40d5, 0x40d5 }, /* 0x40d6 */ { false, 0x40d6, 0x40d6 }, /* 0x40d7 */ { false, 0x40d7, 0x40d7 }, /* 0x40d8 */ { false, 0x40d8, 0x40d8 }, /* 0x40d9 */ { false, 0x40d9, 0x40d9 }, /* 0x40da */ { false, 0x40da, 0x40da }, /* 0x40db */ { false, 0x40db, 0x40db }, /* 0x40dc */ { false, 0x40dc, 0x40dc }, /* 0x40dd */ { false, 0x40dd, 0x40dd }, /* 0x40de */ { false, 0x40de, 0x40de }, /* 0x40df */ { false, 0x40df, 0x40df }, /* 0x40e0 */ { false, 0x40e0, 0x40e0 }, /* 0x40e1 */ { false, 0x40e1, 0x40e1 }, /* 0x40e2 */ { false, 0x40e2, 0x40e2 }, /* 0x40e3 */ { false, 0x40e3, 0x40e3 }, /* 0x40e4 */ { false, 0x40e4, 0x40e4 }, /* 0x40e5 */ { false, 0x40e5, 0x40e5 }, /* 0x40e6 */ { false, 0x40e6, 0x40e6 }, /* 0x40e7 */ { false, 0x40e7, 0x40e7 }, /* 0x40e8 */ { false, 0x40e8, 0x40e8 }, /* 0x40e9 */ { false, 0x40e9, 0x40e9 }, /* 0x40ea */ { false, 0x40ea, 0x40ea }, /* 0x40eb */ { false, 0x40eb, 0x40eb }, /* 0x40ec */ { false, 0x40ec, 0x40ec }, /* 0x40ed */ { false, 0x40ed, 0x40ed }, /* 0x40ee */ { false, 0x40ee, 0x40ee }, /* 0x40ef */ { false, 0x40ef, 0x40ef }, /* 0x40f0 */ { false, 0x40f0, 0x40f0 }, /* 0x40f1 */ { false, 0x40f1, 0x40f1 }, /* 0x40f2 */ { false, 0x40f2, 0x40f2 }, /* 0x40f3 */ { false, 0x40f3, 0x40f3 }, /* 0x40f4 */ { false, 0x40f4, 0x40f4 }, /* 0x40f5 */ { false, 0x40f5, 0x40f5 }, /* 0x40f6 */ { false, 0x40f6, 0x40f6 }, /* 0x40f7 */ { false, 0x40f7, 0x40f7 }, /* 0x40f8 */ { false, 0x40f8, 0x40f8 }, /* 0x40f9 */ { false, 0x40f9, 0x40f9 }, /* 0x40fa */ { false, 0x40fa, 0x40fa }, /* 0x40fb */ { false, 0x40fb, 0x40fb }, /* 0x40fc */ { false, 0x40fc, 0x40fc }, /* 0x40fd */ { false, 0x40fd, 0x40fd }, /* 0x40fe */ { false, 0x40fe, 0x40fe }, /* 0x40ff */ { false, 0x40ff, 0x40ff }, /* 0x4100 */ { false, 0x4100, 0x4100 }, /* 0x4101 */ { false, 0x4101, 0x4101 }, /* 0x4102 */ { false, 0x4102, 0x4102 }, /* 0x4103 */ { false, 0x4103, 0x4103 }, /* 0x4104 */ { false, 0x4104, 0x4104 }, /* 0x4105 */ { false, 0x4105, 0x4105 }, /* 0x4106 */ { false, 0x4106, 0x4106 }, /* 0x4107 */ { false, 0x4107, 0x4107 }, /* 0x4108 */ { false, 0x4108, 0x4108 }, /* 0x4109 */ { false, 0x4109, 0x4109 }, /* 0x410a */ { false, 0x410a, 0x410a }, /* 0x410b */ { false, 0x410b, 0x410b }, /* 0x410c */ { false, 0x410c, 0x410c }, /* 0x410d */ { false, 0x410d, 0x410d }, /* 0x410e */ { false, 0x410e, 0x410e }, /* 0x410f */ { false, 0x410f, 0x410f }, /* 0x4110 */ { false, 0x4110, 0x4110 }, /* 0x4111 */ { false, 0x4111, 0x4111 }, /* 0x4112 */ { false, 0x4112, 0x4112 }, /* 0x4113 */ { false, 0x4113, 0x4113 }, /* 0x4114 */ { false, 0x4114, 0x4114 }, /* 0x4115 */ { false, 0x4115, 0x4115 }, /* 0x4116 */ { false, 0x4116, 0x4116 }, /* 0x4117 */ { false, 0x4117, 0x4117 }, /* 0x4118 */ { false, 0x4118, 0x4118 }, /* 0x4119 */ { false, 0x4119, 0x4119 }, /* 0x411a */ { false, 0x411a, 0x411a }, /* 0x411b */ { false, 0x411b, 0x411b }, /* 0x411c */ { false, 0x411c, 0x411c }, /* 0x411d */ { false, 0x411d, 0x411d }, /* 0x411e */ { false, 0x411e, 0x411e }, /* 0x411f */ { false, 0x411f, 0x411f }, /* 0x4120 */ { false, 0x4120, 0x4120 }, /* 0x4121 */ { false, 0x4121, 0x4121 }, /* 0x4122 */ { false, 0x4122, 0x4122 }, /* 0x4123 */ { false, 0x4123, 0x4123 }, /* 0x4124 */ { false, 0x4124, 0x4124 }, /* 0x4125 */ { false, 0x4125, 0x4125 }, /* 0x4126 */ { false, 0x4126, 0x4126 }, /* 0x4127 */ { false, 0x4127, 0x4127 }, /* 0x4128 */ { false, 0x4128, 0x4128 }, /* 0x4129 */ { false, 0x4129, 0x4129 }, /* 0x412a */ { false, 0x412a, 0x412a }, /* 0x412b */ { false, 0x412b, 0x412b }, /* 0x412c */ { false, 0x412c, 0x412c }, /* 0x412d */ { false, 0x412d, 0x412d }, /* 0x412e */ { false, 0x412e, 0x412e }, /* 0x412f */ { false, 0x412f, 0x412f }, /* 0x4130 */ { false, 0x4130, 0x4130 }, /* 0x4131 */ { false, 0x4131, 0x4131 }, /* 0x4132 */ { false, 0x4132, 0x4132 }, /* 0x4133 */ { false, 0x4133, 0x4133 }, /* 0x4134 */ { false, 0x4134, 0x4134 }, /* 0x4135 */ { false, 0x4135, 0x4135 }, /* 0x4136 */ { false, 0x4136, 0x4136 }, /* 0x4137 */ { false, 0x4137, 0x4137 }, /* 0x4138 */ { false, 0x4138, 0x4138 }, /* 0x4139 */ { false, 0x4139, 0x4139 }, /* 0x413a */ { false, 0x413a, 0x413a }, /* 0x413b */ { false, 0x413b, 0x413b }, /* 0x413c */ { false, 0x413c, 0x413c }, /* 0x413d */ { false, 0x413d, 0x413d }, /* 0x413e */ { false, 0x413e, 0x413e }, /* 0x413f */ { false, 0x413f, 0x413f }, /* 0x4140 */ { false, 0x4140, 0x4140 }, /* 0x4141 */ { false, 0x4141, 0x4141 }, /* 0x4142 */ { false, 0x4142, 0x4142 }, /* 0x4143 */ { false, 0x4143, 0x4143 }, /* 0x4144 */ { false, 0x4144, 0x4144 }, /* 0x4145 */ { false, 0x4145, 0x4145 }, /* 0x4146 */ { false, 0x4146, 0x4146 }, /* 0x4147 */ { false, 0x4147, 0x4147 }, /* 0x4148 */ { false, 0x4148, 0x4148 }, /* 0x4149 */ { false, 0x4149, 0x4149 }, /* 0x414a */ { false, 0x414a, 0x414a }, /* 0x414b */ { false, 0x414b, 0x414b }, /* 0x414c */ { false, 0x414c, 0x414c }, /* 0x414d */ { false, 0x414d, 0x414d }, /* 0x414e */ { false, 0x414e, 0x414e }, /* 0x414f */ { false, 0x414f, 0x414f }, /* 0x4150 */ { false, 0x4150, 0x4150 }, /* 0x4151 */ { false, 0x4151, 0x4151 }, /* 0x4152 */ { false, 0x4152, 0x4152 }, /* 0x4153 */ { false, 0x4153, 0x4153 }, /* 0x4154 */ { false, 0x4154, 0x4154 }, /* 0x4155 */ { false, 0x4155, 0x4155 }, /* 0x4156 */ { false, 0x4156, 0x4156 }, /* 0x4157 */ { false, 0x4157, 0x4157 }, /* 0x4158 */ { false, 0x4158, 0x4158 }, /* 0x4159 */ { false, 0x4159, 0x4159 }, /* 0x415a */ { false, 0x415a, 0x415a }, /* 0x415b */ { false, 0x415b, 0x415b }, /* 0x415c */ { false, 0x415c, 0x415c }, /* 0x415d */ { false, 0x415d, 0x415d }, /* 0x415e */ { false, 0x415e, 0x415e }, /* 0x415f */ { false, 0x415f, 0x415f }, /* 0x4160 */ { false, 0x4160, 0x4160 }, /* 0x4161 */ { false, 0x4161, 0x4161 }, /* 0x4162 */ { false, 0x4162, 0x4162 }, /* 0x4163 */ { false, 0x4163, 0x4163 }, /* 0x4164 */ { false, 0x4164, 0x4164 }, /* 0x4165 */ { false, 0x4165, 0x4165 }, /* 0x4166 */ { false, 0x4166, 0x4166 }, /* 0x4167 */ { false, 0x4167, 0x4167 }, /* 0x4168 */ { false, 0x4168, 0x4168 }, /* 0x4169 */ { false, 0x4169, 0x4169 }, /* 0x416a */ { false, 0x416a, 0x416a }, /* 0x416b */ { false, 0x416b, 0x416b }, /* 0x416c */ { false, 0x416c, 0x416c }, /* 0x416d */ { false, 0x416d, 0x416d }, /* 0x416e */ { false, 0x416e, 0x416e }, /* 0x416f */ { false, 0x416f, 0x416f }, /* 0x4170 */ { false, 0x4170, 0x4170 }, /* 0x4171 */ { false, 0x4171, 0x4171 }, /* 0x4172 */ { false, 0x4172, 0x4172 }, /* 0x4173 */ { false, 0x4173, 0x4173 }, /* 0x4174 */ { false, 0x4174, 0x4174 }, /* 0x4175 */ { false, 0x4175, 0x4175 }, /* 0x4176 */ { false, 0x4176, 0x4176 }, /* 0x4177 */ { false, 0x4177, 0x4177 }, /* 0x4178 */ { false, 0x4178, 0x4178 }, /* 0x4179 */ { false, 0x4179, 0x4179 }, /* 0x417a */ { false, 0x417a, 0x417a }, /* 0x417b */ { false, 0x417b, 0x417b }, /* 0x417c */ { false, 0x417c, 0x417c }, /* 0x417d */ { false, 0x417d, 0x417d }, /* 0x417e */ { false, 0x417e, 0x417e }, /* 0x417f */ { false, 0x417f, 0x417f }, /* 0x4180 */ { false, 0x4180, 0x4180 }, /* 0x4181 */ { false, 0x4181, 0x4181 }, /* 0x4182 */ { false, 0x4182, 0x4182 }, /* 0x4183 */ { false, 0x4183, 0x4183 }, /* 0x4184 */ { false, 0x4184, 0x4184 }, /* 0x4185 */ { false, 0x4185, 0x4185 }, /* 0x4186 */ { false, 0x4186, 0x4186 }, /* 0x4187 */ { false, 0x4187, 0x4187 }, /* 0x4188 */ { false, 0x4188, 0x4188 }, /* 0x4189 */ { false, 0x4189, 0x4189 }, /* 0x418a */ { false, 0x418a, 0x418a }, /* 0x418b */ { false, 0x418b, 0x418b }, /* 0x418c */ { false, 0x418c, 0x418c }, /* 0x418d */ { false, 0x418d, 0x418d }, /* 0x418e */ { false, 0x418e, 0x418e }, /* 0x418f */ { false, 0x418f, 0x418f }, /* 0x4190 */ { false, 0x4190, 0x4190 }, /* 0x4191 */ { false, 0x4191, 0x4191 }, /* 0x4192 */ { false, 0x4192, 0x4192 }, /* 0x4193 */ { false, 0x4193, 0x4193 }, /* 0x4194 */ { false, 0x4194, 0x4194 }, /* 0x4195 */ { false, 0x4195, 0x4195 }, /* 0x4196 */ { false, 0x4196, 0x4196 }, /* 0x4197 */ { false, 0x4197, 0x4197 }, /* 0x4198 */ { false, 0x4198, 0x4198 }, /* 0x4199 */ { false, 0x4199, 0x4199 }, /* 0x419a */ { false, 0x419a, 0x419a }, /* 0x419b */ { false, 0x419b, 0x419b }, /* 0x419c */ { false, 0x419c, 0x419c }, /* 0x419d */ { false, 0x419d, 0x419d }, /* 0x419e */ { false, 0x419e, 0x419e }, /* 0x419f */ { false, 0x419f, 0x419f }, /* 0x41a0 */ { false, 0x41a0, 0x41a0 }, /* 0x41a1 */ { false, 0x41a1, 0x41a1 }, /* 0x41a2 */ { false, 0x41a2, 0x41a2 }, /* 0x41a3 */ { false, 0x41a3, 0x41a3 }, /* 0x41a4 */ { false, 0x41a4, 0x41a4 }, /* 0x41a5 */ { false, 0x41a5, 0x41a5 }, /* 0x41a6 */ { false, 0x41a6, 0x41a6 }, /* 0x41a7 */ { false, 0x41a7, 0x41a7 }, /* 0x41a8 */ { false, 0x41a8, 0x41a8 }, /* 0x41a9 */ { false, 0x41a9, 0x41a9 }, /* 0x41aa */ { false, 0x41aa, 0x41aa }, /* 0x41ab */ { false, 0x41ab, 0x41ab }, /* 0x41ac */ { false, 0x41ac, 0x41ac }, /* 0x41ad */ { false, 0x41ad, 0x41ad }, /* 0x41ae */ { false, 0x41ae, 0x41ae }, /* 0x41af */ { false, 0x41af, 0x41af }, /* 0x41b0 */ { false, 0x41b0, 0x41b0 }, /* 0x41b1 */ { false, 0x41b1, 0x41b1 }, /* 0x41b2 */ { false, 0x41b2, 0x41b2 }, /* 0x41b3 */ { false, 0x41b3, 0x41b3 }, /* 0x41b4 */ { false, 0x41b4, 0x41b4 }, /* 0x41b5 */ { false, 0x41b5, 0x41b5 }, /* 0x41b6 */ { false, 0x41b6, 0x41b6 }, /* 0x41b7 */ { false, 0x41b7, 0x41b7 }, /* 0x41b8 */ { false, 0x41b8, 0x41b8 }, /* 0x41b9 */ { false, 0x41b9, 0x41b9 }, /* 0x41ba */ { false, 0x41ba, 0x41ba }, /* 0x41bb */ { false, 0x41bb, 0x41bb }, /* 0x41bc */ { false, 0x41bc, 0x41bc }, /* 0x41bd */ { false, 0x41bd, 0x41bd }, /* 0x41be */ { false, 0x41be, 0x41be }, /* 0x41bf */ { false, 0x41bf, 0x41bf }, /* 0x41c0 */ { false, 0x41c0, 0x41c0 }, /* 0x41c1 */ { false, 0x41c1, 0x41c1 }, /* 0x41c2 */ { false, 0x41c2, 0x41c2 }, /* 0x41c3 */ { false, 0x41c3, 0x41c3 }, /* 0x41c4 */ { false, 0x41c4, 0x41c4 }, /* 0x41c5 */ { false, 0x41c5, 0x41c5 }, /* 0x41c6 */ { false, 0x41c6, 0x41c6 }, /* 0x41c7 */ { false, 0x41c7, 0x41c7 }, /* 0x41c8 */ { false, 0x41c8, 0x41c8 }, /* 0x41c9 */ { false, 0x41c9, 0x41c9 }, /* 0x41ca */ { false, 0x41ca, 0x41ca }, /* 0x41cb */ { false, 0x41cb, 0x41cb }, /* 0x41cc */ { false, 0x41cc, 0x41cc }, /* 0x41cd */ { false, 0x41cd, 0x41cd }, /* 0x41ce */ { false, 0x41ce, 0x41ce }, /* 0x41cf */ { false, 0x41cf, 0x41cf }, /* 0x41d0 */ { false, 0x41d0, 0x41d0 }, /* 0x41d1 */ { false, 0x41d1, 0x41d1 }, /* 0x41d2 */ { false, 0x41d2, 0x41d2 }, /* 0x41d3 */ { false, 0x41d3, 0x41d3 }, /* 0x41d4 */ { false, 0x41d4, 0x41d4 }, /* 0x41d5 */ { false, 0x41d5, 0x41d5 }, /* 0x41d6 */ { false, 0x41d6, 0x41d6 }, /* 0x41d7 */ { false, 0x41d7, 0x41d7 }, /* 0x41d8 */ { false, 0x41d8, 0x41d8 }, /* 0x41d9 */ { false, 0x41d9, 0x41d9 }, /* 0x41da */ { false, 0x41da, 0x41da }, /* 0x41db */ { false, 0x41db, 0x41db }, /* 0x41dc */ { false, 0x41dc, 0x41dc }, /* 0x41dd */ { false, 0x41dd, 0x41dd }, /* 0x41de */ { false, 0x41de, 0x41de }, /* 0x41df */ { false, 0x41df, 0x41df }, /* 0x41e0 */ { false, 0x41e0, 0x41e0 }, /* 0x41e1 */ { false, 0x41e1, 0x41e1 }, /* 0x41e2 */ { false, 0x41e2, 0x41e2 }, /* 0x41e3 */ { false, 0x41e3, 0x41e3 }, /* 0x41e4 */ { false, 0x41e4, 0x41e4 }, /* 0x41e5 */ { false, 0x41e5, 0x41e5 }, /* 0x41e6 */ { false, 0x41e6, 0x41e6 }, /* 0x41e7 */ { false, 0x41e7, 0x41e7 }, /* 0x41e8 */ { false, 0x41e8, 0x41e8 }, /* 0x41e9 */ { false, 0x41e9, 0x41e9 }, /* 0x41ea */ { false, 0x41ea, 0x41ea }, /* 0x41eb */ { false, 0x41eb, 0x41eb }, /* 0x41ec */ { false, 0x41ec, 0x41ec }, /* 0x41ed */ { false, 0x41ed, 0x41ed }, /* 0x41ee */ { false, 0x41ee, 0x41ee }, /* 0x41ef */ { false, 0x41ef, 0x41ef }, /* 0x41f0 */ { false, 0x41f0, 0x41f0 }, /* 0x41f1 */ { false, 0x41f1, 0x41f1 }, /* 0x41f2 */ { false, 0x41f2, 0x41f2 }, /* 0x41f3 */ { false, 0x41f3, 0x41f3 }, /* 0x41f4 */ { false, 0x41f4, 0x41f4 }, /* 0x41f5 */ { false, 0x41f5, 0x41f5 }, /* 0x41f6 */ { false, 0x41f6, 0x41f6 }, /* 0x41f7 */ { false, 0x41f7, 0x41f7 }, /* 0x41f8 */ { false, 0x41f8, 0x41f8 }, /* 0x41f9 */ { false, 0x41f9, 0x41f9 }, /* 0x41fa */ { false, 0x41fa, 0x41fa }, /* 0x41fb */ { false, 0x41fb, 0x41fb }, /* 0x41fc */ { false, 0x41fc, 0x41fc }, /* 0x41fd */ { false, 0x41fd, 0x41fd }, /* 0x41fe */ { false, 0x41fe, 0x41fe }, /* 0x41ff */ { false, 0x41ff, 0x41ff }, /* 0x4200 */ { false, 0x4200, 0x4200 }, /* 0x4201 */ { false, 0x4201, 0x4201 }, /* 0x4202 */ { false, 0x4202, 0x4202 }, /* 0x4203 */ { false, 0x4203, 0x4203 }, /* 0x4204 */ { false, 0x4204, 0x4204 }, /* 0x4205 */ { false, 0x4205, 0x4205 }, /* 0x4206 */ { false, 0x4206, 0x4206 }, /* 0x4207 */ { false, 0x4207, 0x4207 }, /* 0x4208 */ { false, 0x4208, 0x4208 }, /* 0x4209 */ { false, 0x4209, 0x4209 }, /* 0x420a */ { false, 0x420a, 0x420a }, /* 0x420b */ { false, 0x420b, 0x420b }, /* 0x420c */ { false, 0x420c, 0x420c }, /* 0x420d */ { false, 0x420d, 0x420d }, /* 0x420e */ { false, 0x420e, 0x420e }, /* 0x420f */ { false, 0x420f, 0x420f }, /* 0x4210 */ { false, 0x4210, 0x4210 }, /* 0x4211 */ { false, 0x4211, 0x4211 }, /* 0x4212 */ { false, 0x4212, 0x4212 }, /* 0x4213 */ { false, 0x4213, 0x4213 }, /* 0x4214 */ { false, 0x4214, 0x4214 }, /* 0x4215 */ { false, 0x4215, 0x4215 }, /* 0x4216 */ { false, 0x4216, 0x4216 }, /* 0x4217 */ { false, 0x4217, 0x4217 }, /* 0x4218 */ { false, 0x4218, 0x4218 }, /* 0x4219 */ { false, 0x4219, 0x4219 }, /* 0x421a */ { false, 0x421a, 0x421a }, /* 0x421b */ { false, 0x421b, 0x421b }, /* 0x421c */ { false, 0x421c, 0x421c }, /* 0x421d */ { false, 0x421d, 0x421d }, /* 0x421e */ { false, 0x421e, 0x421e }, /* 0x421f */ { false, 0x421f, 0x421f }, /* 0x4220 */ { false, 0x4220, 0x4220 }, /* 0x4221 */ { false, 0x4221, 0x4221 }, /* 0x4222 */ { false, 0x4222, 0x4222 }, /* 0x4223 */ { false, 0x4223, 0x4223 }, /* 0x4224 */ { false, 0x4224, 0x4224 }, /* 0x4225 */ { false, 0x4225, 0x4225 }, /* 0x4226 */ { false, 0x4226, 0x4226 }, /* 0x4227 */ { false, 0x4227, 0x4227 }, /* 0x4228 */ { false, 0x4228, 0x4228 }, /* 0x4229 */ { false, 0x4229, 0x4229 }, /* 0x422a */ { false, 0x422a, 0x422a }, /* 0x422b */ { false, 0x422b, 0x422b }, /* 0x422c */ { false, 0x422c, 0x422c }, /* 0x422d */ { false, 0x422d, 0x422d }, /* 0x422e */ { false, 0x422e, 0x422e }, /* 0x422f */ { false, 0x422f, 0x422f }, /* 0x4230 */ { false, 0x4230, 0x4230 }, /* 0x4231 */ { false, 0x4231, 0x4231 }, /* 0x4232 */ { false, 0x4232, 0x4232 }, /* 0x4233 */ { false, 0x4233, 0x4233 }, /* 0x4234 */ { false, 0x4234, 0x4234 }, /* 0x4235 */ { false, 0x4235, 0x4235 }, /* 0x4236 */ { false, 0x4236, 0x4236 }, /* 0x4237 */ { false, 0x4237, 0x4237 }, /* 0x4238 */ { false, 0x4238, 0x4238 }, /* 0x4239 */ { false, 0x4239, 0x4239 }, /* 0x423a */ { false, 0x423a, 0x423a }, /* 0x423b */ { false, 0x423b, 0x423b }, /* 0x423c */ { false, 0x423c, 0x423c }, /* 0x423d */ { false, 0x423d, 0x423d }, /* 0x423e */ { false, 0x423e, 0x423e }, /* 0x423f */ { false, 0x423f, 0x423f }, /* 0x4240 */ { false, 0x4240, 0x4240 }, /* 0x4241 */ { false, 0x4241, 0x4241 }, /* 0x4242 */ { false, 0x4242, 0x4242 }, /* 0x4243 */ { false, 0x4243, 0x4243 }, /* 0x4244 */ { false, 0x4244, 0x4244 }, /* 0x4245 */ { false, 0x4245, 0x4245 }, /* 0x4246 */ { false, 0x4246, 0x4246 }, /* 0x4247 */ { false, 0x4247, 0x4247 }, /* 0x4248 */ { false, 0x4248, 0x4248 }, /* 0x4249 */ { false, 0x4249, 0x4249 }, /* 0x424a */ { false, 0x424a, 0x424a }, /* 0x424b */ { false, 0x424b, 0x424b }, /* 0x424c */ { false, 0x424c, 0x424c }, /* 0x424d */ { false, 0x424d, 0x424d }, /* 0x424e */ { false, 0x424e, 0x424e }, /* 0x424f */ { false, 0x424f, 0x424f }, /* 0x4250 */ { false, 0x4250, 0x4250 }, /* 0x4251 */ { false, 0x4251, 0x4251 }, /* 0x4252 */ { false, 0x4252, 0x4252 }, /* 0x4253 */ { false, 0x4253, 0x4253 }, /* 0x4254 */ { false, 0x4254, 0x4254 }, /* 0x4255 */ { false, 0x4255, 0x4255 }, /* 0x4256 */ { false, 0x4256, 0x4256 }, /* 0x4257 */ { false, 0x4257, 0x4257 }, /* 0x4258 */ { false, 0x4258, 0x4258 }, /* 0x4259 */ { false, 0x4259, 0x4259 }, /* 0x425a */ { false, 0x425a, 0x425a }, /* 0x425b */ { false, 0x425b, 0x425b }, /* 0x425c */ { false, 0x425c, 0x425c }, /* 0x425d */ { false, 0x425d, 0x425d }, /* 0x425e */ { false, 0x425e, 0x425e }, /* 0x425f */ { false, 0x425f, 0x425f }, /* 0x4260 */ { false, 0x4260, 0x4260 }, /* 0x4261 */ { false, 0x4261, 0x4261 }, /* 0x4262 */ { false, 0x4262, 0x4262 }, /* 0x4263 */ { false, 0x4263, 0x4263 }, /* 0x4264 */ { false, 0x4264, 0x4264 }, /* 0x4265 */ { false, 0x4265, 0x4265 }, /* 0x4266 */ { false, 0x4266, 0x4266 }, /* 0x4267 */ { false, 0x4267, 0x4267 }, /* 0x4268 */ { false, 0x4268, 0x4268 }, /* 0x4269 */ { false, 0x4269, 0x4269 }, /* 0x426a */ { false, 0x426a, 0x426a }, /* 0x426b */ { false, 0x426b, 0x426b }, /* 0x426c */ { false, 0x426c, 0x426c }, /* 0x426d */ { false, 0x426d, 0x426d }, /* 0x426e */ { false, 0x426e, 0x426e }, /* 0x426f */ { false, 0x426f, 0x426f }, /* 0x4270 */ { false, 0x4270, 0x4270 }, /* 0x4271 */ { false, 0x4271, 0x4271 }, /* 0x4272 */ { false, 0x4272, 0x4272 }, /* 0x4273 */ { false, 0x4273, 0x4273 }, /* 0x4274 */ { false, 0x4274, 0x4274 }, /* 0x4275 */ { false, 0x4275, 0x4275 }, /* 0x4276 */ { false, 0x4276, 0x4276 }, /* 0x4277 */ { false, 0x4277, 0x4277 }, /* 0x4278 */ { false, 0x4278, 0x4278 }, /* 0x4279 */ { false, 0x4279, 0x4279 }, /* 0x427a */ { false, 0x427a, 0x427a }, /* 0x427b */ { false, 0x427b, 0x427b }, /* 0x427c */ { false, 0x427c, 0x427c }, /* 0x427d */ { false, 0x427d, 0x427d }, /* 0x427e */ { false, 0x427e, 0x427e }, /* 0x427f */ { false, 0x427f, 0x427f }, /* 0x4280 */ { false, 0x4280, 0x4280 }, /* 0x4281 */ { false, 0x4281, 0x4281 }, /* 0x4282 */ { false, 0x4282, 0x4282 }, /* 0x4283 */ { false, 0x4283, 0x4283 }, /* 0x4284 */ { false, 0x4284, 0x4284 }, /* 0x4285 */ { false, 0x4285, 0x4285 }, /* 0x4286 */ { false, 0x4286, 0x4286 }, /* 0x4287 */ { false, 0x4287, 0x4287 }, /* 0x4288 */ { false, 0x4288, 0x4288 }, /* 0x4289 */ { false, 0x4289, 0x4289 }, /* 0x428a */ { false, 0x428a, 0x428a }, /* 0x428b */ { false, 0x428b, 0x428b }, /* 0x428c */ { false, 0x428c, 0x428c }, /* 0x428d */ { false, 0x428d, 0x428d }, /* 0x428e */ { false, 0x428e, 0x428e }, /* 0x428f */ { false, 0x428f, 0x428f }, /* 0x4290 */ { false, 0x4290, 0x4290 }, /* 0x4291 */ { false, 0x4291, 0x4291 }, /* 0x4292 */ { false, 0x4292, 0x4292 }, /* 0x4293 */ { false, 0x4293, 0x4293 }, /* 0x4294 */ { false, 0x4294, 0x4294 }, /* 0x4295 */ { false, 0x4295, 0x4295 }, /* 0x4296 */ { false, 0x4296, 0x4296 }, /* 0x4297 */ { false, 0x4297, 0x4297 }, /* 0x4298 */ { false, 0x4298, 0x4298 }, /* 0x4299 */ { false, 0x4299, 0x4299 }, /* 0x429a */ { false, 0x429a, 0x429a }, /* 0x429b */ { false, 0x429b, 0x429b }, /* 0x429c */ { false, 0x429c, 0x429c }, /* 0x429d */ { false, 0x429d, 0x429d }, /* 0x429e */ { false, 0x429e, 0x429e }, /* 0x429f */ { false, 0x429f, 0x429f }, /* 0x42a0 */ { false, 0x42a0, 0x42a0 }, /* 0x42a1 */ { false, 0x42a1, 0x42a1 }, /* 0x42a2 */ { false, 0x42a2, 0x42a2 }, /* 0x42a3 */ { false, 0x42a3, 0x42a3 }, /* 0x42a4 */ { false, 0x42a4, 0x42a4 }, /* 0x42a5 */ { false, 0x42a5, 0x42a5 }, /* 0x42a6 */ { false, 0x42a6, 0x42a6 }, /* 0x42a7 */ { false, 0x42a7, 0x42a7 }, /* 0x42a8 */ { false, 0x42a8, 0x42a8 }, /* 0x42a9 */ { false, 0x42a9, 0x42a9 }, /* 0x42aa */ { false, 0x42aa, 0x42aa }, /* 0x42ab */ { false, 0x42ab, 0x42ab }, /* 0x42ac */ { false, 0x42ac, 0x42ac }, /* 0x42ad */ { false, 0x42ad, 0x42ad }, /* 0x42ae */ { false, 0x42ae, 0x42ae }, /* 0x42af */ { false, 0x42af, 0x42af }, /* 0x42b0 */ { false, 0x42b0, 0x42b0 }, /* 0x42b1 */ { false, 0x42b1, 0x42b1 }, /* 0x42b2 */ { false, 0x42b2, 0x42b2 }, /* 0x42b3 */ { false, 0x42b3, 0x42b3 }, /* 0x42b4 */ { false, 0x42b4, 0x42b4 }, /* 0x42b5 */ { false, 0x42b5, 0x42b5 }, /* 0x42b6 */ { false, 0x42b6, 0x42b6 }, /* 0x42b7 */ { false, 0x42b7, 0x42b7 }, /* 0x42b8 */ { false, 0x42b8, 0x42b8 }, /* 0x42b9 */ { false, 0x42b9, 0x42b9 }, /* 0x42ba */ { false, 0x42ba, 0x42ba }, /* 0x42bb */ { false, 0x42bb, 0x42bb }, /* 0x42bc */ { false, 0x42bc, 0x42bc }, /* 0x42bd */ { false, 0x42bd, 0x42bd }, /* 0x42be */ { false, 0x42be, 0x42be }, /* 0x42bf */ { false, 0x42bf, 0x42bf }, /* 0x42c0 */ { false, 0x42c0, 0x42c0 }, /* 0x42c1 */ { false, 0x42c1, 0x42c1 }, /* 0x42c2 */ { false, 0x42c2, 0x42c2 }, /* 0x42c3 */ { false, 0x42c3, 0x42c3 }, /* 0x42c4 */ { false, 0x42c4, 0x42c4 }, /* 0x42c5 */ { false, 0x42c5, 0x42c5 }, /* 0x42c6 */ { false, 0x42c6, 0x42c6 }, /* 0x42c7 */ { false, 0x42c7, 0x42c7 }, /* 0x42c8 */ { false, 0x42c8, 0x42c8 }, /* 0x42c9 */ { false, 0x42c9, 0x42c9 }, /* 0x42ca */ { false, 0x42ca, 0x42ca }, /* 0x42cb */ { false, 0x42cb, 0x42cb }, /* 0x42cc */ { false, 0x42cc, 0x42cc }, /* 0x42cd */ { false, 0x42cd, 0x42cd }, /* 0x42ce */ { false, 0x42ce, 0x42ce }, /* 0x42cf */ { false, 0x42cf, 0x42cf }, /* 0x42d0 */ { false, 0x42d0, 0x42d0 }, /* 0x42d1 */ { false, 0x42d1, 0x42d1 }, /* 0x42d2 */ { false, 0x42d2, 0x42d2 }, /* 0x42d3 */ { false, 0x42d3, 0x42d3 }, /* 0x42d4 */ { false, 0x42d4, 0x42d4 }, /* 0x42d5 */ { false, 0x42d5, 0x42d5 }, /* 0x42d6 */ { false, 0x42d6, 0x42d6 }, /* 0x42d7 */ { false, 0x42d7, 0x42d7 }, /* 0x42d8 */ { false, 0x42d8, 0x42d8 }, /* 0x42d9 */ { false, 0x42d9, 0x42d9 }, /* 0x42da */ { false, 0x42da, 0x42da }, /* 0x42db */ { false, 0x42db, 0x42db }, /* 0x42dc */ { false, 0x42dc, 0x42dc }, /* 0x42dd */ { false, 0x42dd, 0x42dd }, /* 0x42de */ { false, 0x42de, 0x42de }, /* 0x42df */ { false, 0x42df, 0x42df }, /* 0x42e0 */ { false, 0x42e0, 0x42e0 }, /* 0x42e1 */ { false, 0x42e1, 0x42e1 }, /* 0x42e2 */ { false, 0x42e2, 0x42e2 }, /* 0x42e3 */ { false, 0x42e3, 0x42e3 }, /* 0x42e4 */ { false, 0x42e4, 0x42e4 }, /* 0x42e5 */ { false, 0x42e5, 0x42e5 }, /* 0x42e6 */ { false, 0x42e6, 0x42e6 }, /* 0x42e7 */ { false, 0x42e7, 0x42e7 }, /* 0x42e8 */ { false, 0x42e8, 0x42e8 }, /* 0x42e9 */ { false, 0x42e9, 0x42e9 }, /* 0x42ea */ { false, 0x42ea, 0x42ea }, /* 0x42eb */ { false, 0x42eb, 0x42eb }, /* 0x42ec */ { false, 0x42ec, 0x42ec }, /* 0x42ed */ { false, 0x42ed, 0x42ed }, /* 0x42ee */ { false, 0x42ee, 0x42ee }, /* 0x42ef */ { false, 0x42ef, 0x42ef }, /* 0x42f0 */ { false, 0x42f0, 0x42f0 }, /* 0x42f1 */ { false, 0x42f1, 0x42f1 }, /* 0x42f2 */ { false, 0x42f2, 0x42f2 }, /* 0x42f3 */ { false, 0x42f3, 0x42f3 }, /* 0x42f4 */ { false, 0x42f4, 0x42f4 }, /* 0x42f5 */ { false, 0x42f5, 0x42f5 }, /* 0x42f6 */ { false, 0x42f6, 0x42f6 }, /* 0x42f7 */ { false, 0x42f7, 0x42f7 }, /* 0x42f8 */ { false, 0x42f8, 0x42f8 }, /* 0x42f9 */ { false, 0x42f9, 0x42f9 }, /* 0x42fa */ { false, 0x42fa, 0x42fa }, /* 0x42fb */ { false, 0x42fb, 0x42fb }, /* 0x42fc */ { false, 0x42fc, 0x42fc }, /* 0x42fd */ { false, 0x42fd, 0x42fd }, /* 0x42fe */ { false, 0x42fe, 0x42fe }, /* 0x42ff */ { false, 0x42ff, 0x42ff }, /* 0x4300 */ { false, 0x4300, 0x4300 }, /* 0x4301 */ { false, 0x4301, 0x4301 }, /* 0x4302 */ { false, 0x4302, 0x4302 }, /* 0x4303 */ { false, 0x4303, 0x4303 }, /* 0x4304 */ { false, 0x4304, 0x4304 }, /* 0x4305 */ { false, 0x4305, 0x4305 }, /* 0x4306 */ { false, 0x4306, 0x4306 }, /* 0x4307 */ { false, 0x4307, 0x4307 }, /* 0x4308 */ { false, 0x4308, 0x4308 }, /* 0x4309 */ { false, 0x4309, 0x4309 }, /* 0x430a */ { false, 0x430a, 0x430a }, /* 0x430b */ { false, 0x430b, 0x430b }, /* 0x430c */ { false, 0x430c, 0x430c }, /* 0x430d */ { false, 0x430d, 0x430d }, /* 0x430e */ { false, 0x430e, 0x430e }, /* 0x430f */ { false, 0x430f, 0x430f }, /* 0x4310 */ { false, 0x4310, 0x4310 }, /* 0x4311 */ { false, 0x4311, 0x4311 }, /* 0x4312 */ { false, 0x4312, 0x4312 }, /* 0x4313 */ { false, 0x4313, 0x4313 }, /* 0x4314 */ { false, 0x4314, 0x4314 }, /* 0x4315 */ { false, 0x4315, 0x4315 }, /* 0x4316 */ { false, 0x4316, 0x4316 }, /* 0x4317 */ { false, 0x4317, 0x4317 }, /* 0x4318 */ { false, 0x4318, 0x4318 }, /* 0x4319 */ { false, 0x4319, 0x4319 }, /* 0x431a */ { false, 0x431a, 0x431a }, /* 0x431b */ { false, 0x431b, 0x431b }, /* 0x431c */ { false, 0x431c, 0x431c }, /* 0x431d */ { false, 0x431d, 0x431d }, /* 0x431e */ { false, 0x431e, 0x431e }, /* 0x431f */ { false, 0x431f, 0x431f }, /* 0x4320 */ { false, 0x4320, 0x4320 }, /* 0x4321 */ { false, 0x4321, 0x4321 }, /* 0x4322 */ { false, 0x4322, 0x4322 }, /* 0x4323 */ { false, 0x4323, 0x4323 }, /* 0x4324 */ { false, 0x4324, 0x4324 }, /* 0x4325 */ { false, 0x4325, 0x4325 }, /* 0x4326 */ { false, 0x4326, 0x4326 }, /* 0x4327 */ { false, 0x4327, 0x4327 }, /* 0x4328 */ { false, 0x4328, 0x4328 }, /* 0x4329 */ { false, 0x4329, 0x4329 }, /* 0x432a */ { false, 0x432a, 0x432a }, /* 0x432b */ { false, 0x432b, 0x432b }, /* 0x432c */ { false, 0x432c, 0x432c }, /* 0x432d */ { false, 0x432d, 0x432d }, /* 0x432e */ { false, 0x432e, 0x432e }, /* 0x432f */ { false, 0x432f, 0x432f }, /* 0x4330 */ { false, 0x4330, 0x4330 }, /* 0x4331 */ { false, 0x4331, 0x4331 }, /* 0x4332 */ { false, 0x4332, 0x4332 }, /* 0x4333 */ { false, 0x4333, 0x4333 }, /* 0x4334 */ { false, 0x4334, 0x4334 }, /* 0x4335 */ { false, 0x4335, 0x4335 }, /* 0x4336 */ { false, 0x4336, 0x4336 }, /* 0x4337 */ { false, 0x4337, 0x4337 }, /* 0x4338 */ { false, 0x4338, 0x4338 }, /* 0x4339 */ { false, 0x4339, 0x4339 }, /* 0x433a */ { false, 0x433a, 0x433a }, /* 0x433b */ { false, 0x433b, 0x433b }, /* 0x433c */ { false, 0x433c, 0x433c }, /* 0x433d */ { false, 0x433d, 0x433d }, /* 0x433e */ { false, 0x433e, 0x433e }, /* 0x433f */ { false, 0x433f, 0x433f }, /* 0x4340 */ { false, 0x4340, 0x4340 }, /* 0x4341 */ { false, 0x4341, 0x4341 }, /* 0x4342 */ { false, 0x4342, 0x4342 }, /* 0x4343 */ { false, 0x4343, 0x4343 }, /* 0x4344 */ { false, 0x4344, 0x4344 }, /* 0x4345 */ { false, 0x4345, 0x4345 }, /* 0x4346 */ { false, 0x4346, 0x4346 }, /* 0x4347 */ { false, 0x4347, 0x4347 }, /* 0x4348 */ { false, 0x4348, 0x4348 }, /* 0x4349 */ { false, 0x4349, 0x4349 }, /* 0x434a */ { false, 0x434a, 0x434a }, /* 0x434b */ { false, 0x434b, 0x434b }, /* 0x434c */ { false, 0x434c, 0x434c }, /* 0x434d */ { false, 0x434d, 0x434d }, /* 0x434e */ { false, 0x434e, 0x434e }, /* 0x434f */ { false, 0x434f, 0x434f }, /* 0x4350 */ { false, 0x4350, 0x4350 }, /* 0x4351 */ { false, 0x4351, 0x4351 }, /* 0x4352 */ { false, 0x4352, 0x4352 }, /* 0x4353 */ { false, 0x4353, 0x4353 }, /* 0x4354 */ { false, 0x4354, 0x4354 }, /* 0x4355 */ { false, 0x4355, 0x4355 }, /* 0x4356 */ { false, 0x4356, 0x4356 }, /* 0x4357 */ { false, 0x4357, 0x4357 }, /* 0x4358 */ { false, 0x4358, 0x4358 }, /* 0x4359 */ { false, 0x4359, 0x4359 }, /* 0x435a */ { false, 0x435a, 0x435a }, /* 0x435b */ { false, 0x435b, 0x435b }, /* 0x435c */ { false, 0x435c, 0x435c }, /* 0x435d */ { false, 0x435d, 0x435d }, /* 0x435e */ { false, 0x435e, 0x435e }, /* 0x435f */ { false, 0x435f, 0x435f }, /* 0x4360 */ { false, 0x4360, 0x4360 }, /* 0x4361 */ { false, 0x4361, 0x4361 }, /* 0x4362 */ { false, 0x4362, 0x4362 }, /* 0x4363 */ { false, 0x4363, 0x4363 }, /* 0x4364 */ { false, 0x4364, 0x4364 }, /* 0x4365 */ { false, 0x4365, 0x4365 }, /* 0x4366 */ { false, 0x4366, 0x4366 }, /* 0x4367 */ { false, 0x4367, 0x4367 }, /* 0x4368 */ { false, 0x4368, 0x4368 }, /* 0x4369 */ { false, 0x4369, 0x4369 }, /* 0x436a */ { false, 0x436a, 0x436a }, /* 0x436b */ { false, 0x436b, 0x436b }, /* 0x436c */ { false, 0x436c, 0x436c }, /* 0x436d */ { false, 0x436d, 0x436d }, /* 0x436e */ { false, 0x436e, 0x436e }, /* 0x436f */ { false, 0x436f, 0x436f }, /* 0x4370 */ { false, 0x4370, 0x4370 }, /* 0x4371 */ { false, 0x4371, 0x4371 }, /* 0x4372 */ { false, 0x4372, 0x4372 }, /* 0x4373 */ { false, 0x4373, 0x4373 }, /* 0x4374 */ { false, 0x4374, 0x4374 }, /* 0x4375 */ { false, 0x4375, 0x4375 }, /* 0x4376 */ { false, 0x4376, 0x4376 }, /* 0x4377 */ { false, 0x4377, 0x4377 }, /* 0x4378 */ { false, 0x4378, 0x4378 }, /* 0x4379 */ { false, 0x4379, 0x4379 }, /* 0x437a */ { false, 0x437a, 0x437a }, /* 0x437b */ { false, 0x437b, 0x437b }, /* 0x437c */ { false, 0x437c, 0x437c }, /* 0x437d */ { false, 0x437d, 0x437d }, /* 0x437e */ { false, 0x437e, 0x437e }, /* 0x437f */ { false, 0x437f, 0x437f }, /* 0x4380 */ { false, 0x4380, 0x4380 }, /* 0x4381 */ { false, 0x4381, 0x4381 }, /* 0x4382 */ { false, 0x4382, 0x4382 }, /* 0x4383 */ { false, 0x4383, 0x4383 }, /* 0x4384 */ { false, 0x4384, 0x4384 }, /* 0x4385 */ { false, 0x4385, 0x4385 }, /* 0x4386 */ { false, 0x4386, 0x4386 }, /* 0x4387 */ { false, 0x4387, 0x4387 }, /* 0x4388 */ { false, 0x4388, 0x4388 }, /* 0x4389 */ { false, 0x4389, 0x4389 }, /* 0x438a */ { false, 0x438a, 0x438a }, /* 0x438b */ { false, 0x438b, 0x438b }, /* 0x438c */ { false, 0x438c, 0x438c }, /* 0x438d */ { false, 0x438d, 0x438d }, /* 0x438e */ { false, 0x438e, 0x438e }, /* 0x438f */ { false, 0x438f, 0x438f }, /* 0x4390 */ { false, 0x4390, 0x4390 }, /* 0x4391 */ { false, 0x4391, 0x4391 }, /* 0x4392 */ { false, 0x4392, 0x4392 }, /* 0x4393 */ { false, 0x4393, 0x4393 }, /* 0x4394 */ { false, 0x4394, 0x4394 }, /* 0x4395 */ { false, 0x4395, 0x4395 }, /* 0x4396 */ { false, 0x4396, 0x4396 }, /* 0x4397 */ { false, 0x4397, 0x4397 }, /* 0x4398 */ { false, 0x4398, 0x4398 }, /* 0x4399 */ { false, 0x4399, 0x4399 }, /* 0x439a */ { false, 0x439a, 0x439a }, /* 0x439b */ { false, 0x439b, 0x439b }, /* 0x439c */ { false, 0x439c, 0x439c }, /* 0x439d */ { false, 0x439d, 0x439d }, /* 0x439e */ { false, 0x439e, 0x439e }, /* 0x439f */ { false, 0x439f, 0x439f }, /* 0x43a0 */ { false, 0x43a0, 0x43a0 }, /* 0x43a1 */ { false, 0x43a1, 0x43a1 }, /* 0x43a2 */ { false, 0x43a2, 0x43a2 }, /* 0x43a3 */ { false, 0x43a3, 0x43a3 }, /* 0x43a4 */ { false, 0x43a4, 0x43a4 }, /* 0x43a5 */ { false, 0x43a5, 0x43a5 }, /* 0x43a6 */ { false, 0x43a6, 0x43a6 }, /* 0x43a7 */ { false, 0x43a7, 0x43a7 }, /* 0x43a8 */ { false, 0x43a8, 0x43a8 }, /* 0x43a9 */ { false, 0x43a9, 0x43a9 }, /* 0x43aa */ { false, 0x43aa, 0x43aa }, /* 0x43ab */ { false, 0x43ab, 0x43ab }, /* 0x43ac */ { false, 0x43ac, 0x43ac }, /* 0x43ad */ { false, 0x43ad, 0x43ad }, /* 0x43ae */ { false, 0x43ae, 0x43ae }, /* 0x43af */ { false, 0x43af, 0x43af }, /* 0x43b0 */ { false, 0x43b0, 0x43b0 }, /* 0x43b1 */ { false, 0x43b1, 0x43b1 }, /* 0x43b2 */ { false, 0x43b2, 0x43b2 }, /* 0x43b3 */ { false, 0x43b3, 0x43b3 }, /* 0x43b4 */ { false, 0x43b4, 0x43b4 }, /* 0x43b5 */ { false, 0x43b5, 0x43b5 }, /* 0x43b6 */ { false, 0x43b6, 0x43b6 }, /* 0x43b7 */ { false, 0x43b7, 0x43b7 }, /* 0x43b8 */ { false, 0x43b8, 0x43b8 }, /* 0x43b9 */ { false, 0x43b9, 0x43b9 }, /* 0x43ba */ { false, 0x43ba, 0x43ba }, /* 0x43bb */ { false, 0x43bb, 0x43bb }, /* 0x43bc */ { false, 0x43bc, 0x43bc }, /* 0x43bd */ { false, 0x43bd, 0x43bd }, /* 0x43be */ { false, 0x43be, 0x43be }, /* 0x43bf */ { false, 0x43bf, 0x43bf }, /* 0x43c0 */ { false, 0x43c0, 0x43c0 }, /* 0x43c1 */ { false, 0x43c1, 0x43c1 }, /* 0x43c2 */ { false, 0x43c2, 0x43c2 }, /* 0x43c3 */ { false, 0x43c3, 0x43c3 }, /* 0x43c4 */ { false, 0x43c4, 0x43c4 }, /* 0x43c5 */ { false, 0x43c5, 0x43c5 }, /* 0x43c6 */ { false, 0x43c6, 0x43c6 }, /* 0x43c7 */ { false, 0x43c7, 0x43c7 }, /* 0x43c8 */ { false, 0x43c8, 0x43c8 }, /* 0x43c9 */ { false, 0x43c9, 0x43c9 }, /* 0x43ca */ { false, 0x43ca, 0x43ca }, /* 0x43cb */ { false, 0x43cb, 0x43cb }, /* 0x43cc */ { false, 0x43cc, 0x43cc }, /* 0x43cd */ { false, 0x43cd, 0x43cd }, /* 0x43ce */ { false, 0x43ce, 0x43ce }, /* 0x43cf */ { false, 0x43cf, 0x43cf }, /* 0x43d0 */ { false, 0x43d0, 0x43d0 }, /* 0x43d1 */ { false, 0x43d1, 0x43d1 }, /* 0x43d2 */ { false, 0x43d2, 0x43d2 }, /* 0x43d3 */ { false, 0x43d3, 0x43d3 }, /* 0x43d4 */ { false, 0x43d4, 0x43d4 }, /* 0x43d5 */ { false, 0x43d5, 0x43d5 }, /* 0x43d6 */ { false, 0x43d6, 0x43d6 }, /* 0x43d7 */ { false, 0x43d7, 0x43d7 }, /* 0x43d8 */ { false, 0x43d8, 0x43d8 }, /* 0x43d9 */ { false, 0x43d9, 0x43d9 }, /* 0x43da */ { false, 0x43da, 0x43da }, /* 0x43db */ { false, 0x43db, 0x43db }, /* 0x43dc */ { false, 0x43dc, 0x43dc }, /* 0x43dd */ { false, 0x43dd, 0x43dd }, /* 0x43de */ { false, 0x43de, 0x43de }, /* 0x43df */ { false, 0x43df, 0x43df }, /* 0x43e0 */ { false, 0x43e0, 0x43e0 }, /* 0x43e1 */ { false, 0x43e1, 0x43e1 }, /* 0x43e2 */ { false, 0x43e2, 0x43e2 }, /* 0x43e3 */ { false, 0x43e3, 0x43e3 }, /* 0x43e4 */ { false, 0x43e4, 0x43e4 }, /* 0x43e5 */ { false, 0x43e5, 0x43e5 }, /* 0x43e6 */ { false, 0x43e6, 0x43e6 }, /* 0x43e7 */ { false, 0x43e7, 0x43e7 }, /* 0x43e8 */ { false, 0x43e8, 0x43e8 }, /* 0x43e9 */ { false, 0x43e9, 0x43e9 }, /* 0x43ea */ { false, 0x43ea, 0x43ea }, /* 0x43eb */ { false, 0x43eb, 0x43eb }, /* 0x43ec */ { false, 0x43ec, 0x43ec }, /* 0x43ed */ { false, 0x43ed, 0x43ed }, /* 0x43ee */ { false, 0x43ee, 0x43ee }, /* 0x43ef */ { false, 0x43ef, 0x43ef }, /* 0x43f0 */ { false, 0x43f0, 0x43f0 }, /* 0x43f1 */ { false, 0x43f1, 0x43f1 }, /* 0x43f2 */ { false, 0x43f2, 0x43f2 }, /* 0x43f3 */ { false, 0x43f3, 0x43f3 }, /* 0x43f4 */ { false, 0x43f4, 0x43f4 }, /* 0x43f5 */ { false, 0x43f5, 0x43f5 }, /* 0x43f6 */ { false, 0x43f6, 0x43f6 }, /* 0x43f7 */ { false, 0x43f7, 0x43f7 }, /* 0x43f8 */ { false, 0x43f8, 0x43f8 }, /* 0x43f9 */ { false, 0x43f9, 0x43f9 }, /* 0x43fa */ { false, 0x43fa, 0x43fa }, /* 0x43fb */ { false, 0x43fb, 0x43fb }, /* 0x43fc */ { false, 0x43fc, 0x43fc }, /* 0x43fd */ { false, 0x43fd, 0x43fd }, /* 0x43fe */ { false, 0x43fe, 0x43fe }, /* 0x43ff */ { false, 0x43ff, 0x43ff }, /* 0x4400 */ { false, 0x4400, 0x4400 }, /* 0x4401 */ { false, 0x4401, 0x4401 }, /* 0x4402 */ { false, 0x4402, 0x4402 }, /* 0x4403 */ { false, 0x4403, 0x4403 }, /* 0x4404 */ { false, 0x4404, 0x4404 }, /* 0x4405 */ { false, 0x4405, 0x4405 }, /* 0x4406 */ { false, 0x4406, 0x4406 }, /* 0x4407 */ { false, 0x4407, 0x4407 }, /* 0x4408 */ { false, 0x4408, 0x4408 }, /* 0x4409 */ { false, 0x4409, 0x4409 }, /* 0x440a */ { false, 0x440a, 0x440a }, /* 0x440b */ { false, 0x440b, 0x440b }, /* 0x440c */ { false, 0x440c, 0x440c }, /* 0x440d */ { false, 0x440d, 0x440d }, /* 0x440e */ { false, 0x440e, 0x440e }, /* 0x440f */ { false, 0x440f, 0x440f }, /* 0x4410 */ { false, 0x4410, 0x4410 }, /* 0x4411 */ { false, 0x4411, 0x4411 }, /* 0x4412 */ { false, 0x4412, 0x4412 }, /* 0x4413 */ { false, 0x4413, 0x4413 }, /* 0x4414 */ { false, 0x4414, 0x4414 }, /* 0x4415 */ { false, 0x4415, 0x4415 }, /* 0x4416 */ { false, 0x4416, 0x4416 }, /* 0x4417 */ { false, 0x4417, 0x4417 }, /* 0x4418 */ { false, 0x4418, 0x4418 }, /* 0x4419 */ { false, 0x4419, 0x4419 }, /* 0x441a */ { false, 0x441a, 0x441a }, /* 0x441b */ { false, 0x441b, 0x441b }, /* 0x441c */ { false, 0x441c, 0x441c }, /* 0x441d */ { false, 0x441d, 0x441d }, /* 0x441e */ { false, 0x441e, 0x441e }, /* 0x441f */ { false, 0x441f, 0x441f }, /* 0x4420 */ { false, 0x4420, 0x4420 }, /* 0x4421 */ { false, 0x4421, 0x4421 }, /* 0x4422 */ { false, 0x4422, 0x4422 }, /* 0x4423 */ { false, 0x4423, 0x4423 }, /* 0x4424 */ { false, 0x4424, 0x4424 }, /* 0x4425 */ { false, 0x4425, 0x4425 }, /* 0x4426 */ { false, 0x4426, 0x4426 }, /* 0x4427 */ { false, 0x4427, 0x4427 }, /* 0x4428 */ { false, 0x4428, 0x4428 }, /* 0x4429 */ { false, 0x4429, 0x4429 }, /* 0x442a */ { false, 0x442a, 0x442a }, /* 0x442b */ { false, 0x442b, 0x442b }, /* 0x442c */ { false, 0x442c, 0x442c }, /* 0x442d */ { false, 0x442d, 0x442d }, /* 0x442e */ { false, 0x442e, 0x442e }, /* 0x442f */ { false, 0x442f, 0x442f }, /* 0x4430 */ { false, 0x4430, 0x4430 }, /* 0x4431 */ { false, 0x4431, 0x4431 }, /* 0x4432 */ { false, 0x4432, 0x4432 }, /* 0x4433 */ { false, 0x4433, 0x4433 }, /* 0x4434 */ { false, 0x4434, 0x4434 }, /* 0x4435 */ { false, 0x4435, 0x4435 }, /* 0x4436 */ { false, 0x4436, 0x4436 }, /* 0x4437 */ { false, 0x4437, 0x4437 }, /* 0x4438 */ { false, 0x4438, 0x4438 }, /* 0x4439 */ { false, 0x4439, 0x4439 }, /* 0x443a */ { false, 0x443a, 0x443a }, /* 0x443b */ { false, 0x443b, 0x443b }, /* 0x443c */ { false, 0x443c, 0x443c }, /* 0x443d */ { false, 0x443d, 0x443d }, /* 0x443e */ { false, 0x443e, 0x443e }, /* 0x443f */ { false, 0x443f, 0x443f }, /* 0x4440 */ { false, 0x4440, 0x4440 }, /* 0x4441 */ { false, 0x4441, 0x4441 }, /* 0x4442 */ { false, 0x4442, 0x4442 }, /* 0x4443 */ { false, 0x4443, 0x4443 }, /* 0x4444 */ { false, 0x4444, 0x4444 }, /* 0x4445 */ { false, 0x4445, 0x4445 }, /* 0x4446 */ { false, 0x4446, 0x4446 }, /* 0x4447 */ { false, 0x4447, 0x4447 }, /* 0x4448 */ { false, 0x4448, 0x4448 }, /* 0x4449 */ { false, 0x4449, 0x4449 }, /* 0x444a */ { false, 0x444a, 0x444a }, /* 0x444b */ { false, 0x444b, 0x444b }, /* 0x444c */ { false, 0x444c, 0x444c }, /* 0x444d */ { false, 0x444d, 0x444d }, /* 0x444e */ { false, 0x444e, 0x444e }, /* 0x444f */ { false, 0x444f, 0x444f }, /* 0x4450 */ { false, 0x4450, 0x4450 }, /* 0x4451 */ { false, 0x4451, 0x4451 }, /* 0x4452 */ { false, 0x4452, 0x4452 }, /* 0x4453 */ { false, 0x4453, 0x4453 }, /* 0x4454 */ { false, 0x4454, 0x4454 }, /* 0x4455 */ { false, 0x4455, 0x4455 }, /* 0x4456 */ { false, 0x4456, 0x4456 }, /* 0x4457 */ { false, 0x4457, 0x4457 }, /* 0x4458 */ { false, 0x4458, 0x4458 }, /* 0x4459 */ { false, 0x4459, 0x4459 }, /* 0x445a */ { false, 0x445a, 0x445a }, /* 0x445b */ { false, 0x445b, 0x445b }, /* 0x445c */ { false, 0x445c, 0x445c }, /* 0x445d */ { false, 0x445d, 0x445d }, /* 0x445e */ { false, 0x445e, 0x445e }, /* 0x445f */ { false, 0x445f, 0x445f }, /* 0x4460 */ { false, 0x4460, 0x4460 }, /* 0x4461 */ { false, 0x4461, 0x4461 }, /* 0x4462 */ { false, 0x4462, 0x4462 }, /* 0x4463 */ { false, 0x4463, 0x4463 }, /* 0x4464 */ { false, 0x4464, 0x4464 }, /* 0x4465 */ { false, 0x4465, 0x4465 }, /* 0x4466 */ { false, 0x4466, 0x4466 }, /* 0x4467 */ { false, 0x4467, 0x4467 }, /* 0x4468 */ { false, 0x4468, 0x4468 }, /* 0x4469 */ { false, 0x4469, 0x4469 }, /* 0x446a */ { false, 0x446a, 0x446a }, /* 0x446b */ { false, 0x446b, 0x446b }, /* 0x446c */ { false, 0x446c, 0x446c }, /* 0x446d */ { false, 0x446d, 0x446d }, /* 0x446e */ { false, 0x446e, 0x446e }, /* 0x446f */ { false, 0x446f, 0x446f }, /* 0x4470 */ { false, 0x4470, 0x4470 }, /* 0x4471 */ { false, 0x4471, 0x4471 }, /* 0x4472 */ { false, 0x4472, 0x4472 }, /* 0x4473 */ { false, 0x4473, 0x4473 }, /* 0x4474 */ { false, 0x4474, 0x4474 }, /* 0x4475 */ { false, 0x4475, 0x4475 }, /* 0x4476 */ { false, 0x4476, 0x4476 }, /* 0x4477 */ { false, 0x4477, 0x4477 }, /* 0x4478 */ { false, 0x4478, 0x4478 }, /* 0x4479 */ { false, 0x4479, 0x4479 }, /* 0x447a */ { false, 0x447a, 0x447a }, /* 0x447b */ { false, 0x447b, 0x447b }, /* 0x447c */ { false, 0x447c, 0x447c }, /* 0x447d */ { false, 0x447d, 0x447d }, /* 0x447e */ { false, 0x447e, 0x447e }, /* 0x447f */ { false, 0x447f, 0x447f }, /* 0x4480 */ { false, 0x4480, 0x4480 }, /* 0x4481 */ { false, 0x4481, 0x4481 }, /* 0x4482 */ { false, 0x4482, 0x4482 }, /* 0x4483 */ { false, 0x4483, 0x4483 }, /* 0x4484 */ { false, 0x4484, 0x4484 }, /* 0x4485 */ { false, 0x4485, 0x4485 }, /* 0x4486 */ { false, 0x4486, 0x4486 }, /* 0x4487 */ { false, 0x4487, 0x4487 }, /* 0x4488 */ { false, 0x4488, 0x4488 }, /* 0x4489 */ { false, 0x4489, 0x4489 }, /* 0x448a */ { false, 0x448a, 0x448a }, /* 0x448b */ { false, 0x448b, 0x448b }, /* 0x448c */ { false, 0x448c, 0x448c }, /* 0x448d */ { false, 0x448d, 0x448d }, /* 0x448e */ { false, 0x448e, 0x448e }, /* 0x448f */ { false, 0x448f, 0x448f }, /* 0x4490 */ { false, 0x4490, 0x4490 }, /* 0x4491 */ { false, 0x4491, 0x4491 }, /* 0x4492 */ { false, 0x4492, 0x4492 }, /* 0x4493 */ { false, 0x4493, 0x4493 }, /* 0x4494 */ { false, 0x4494, 0x4494 }, /* 0x4495 */ { false, 0x4495, 0x4495 }, /* 0x4496 */ { false, 0x4496, 0x4496 }, /* 0x4497 */ { false, 0x4497, 0x4497 }, /* 0x4498 */ { false, 0x4498, 0x4498 }, /* 0x4499 */ { false, 0x4499, 0x4499 }, /* 0x449a */ { false, 0x449a, 0x449a }, /* 0x449b */ { false, 0x449b, 0x449b }, /* 0x449c */ { false, 0x449c, 0x449c }, /* 0x449d */ { false, 0x449d, 0x449d }, /* 0x449e */ { false, 0x449e, 0x449e }, /* 0x449f */ { false, 0x449f, 0x449f }, /* 0x44a0 */ { false, 0x44a0, 0x44a0 }, /* 0x44a1 */ { false, 0x44a1, 0x44a1 }, /* 0x44a2 */ { false, 0x44a2, 0x44a2 }, /* 0x44a3 */ { false, 0x44a3, 0x44a3 }, /* 0x44a4 */ { false, 0x44a4, 0x44a4 }, /* 0x44a5 */ { false, 0x44a5, 0x44a5 }, /* 0x44a6 */ { false, 0x44a6, 0x44a6 }, /* 0x44a7 */ { false, 0x44a7, 0x44a7 }, /* 0x44a8 */ { false, 0x44a8, 0x44a8 }, /* 0x44a9 */ { false, 0x44a9, 0x44a9 }, /* 0x44aa */ { false, 0x44aa, 0x44aa }, /* 0x44ab */ { false, 0x44ab, 0x44ab }, /* 0x44ac */ { false, 0x44ac, 0x44ac }, /* 0x44ad */ { false, 0x44ad, 0x44ad }, /* 0x44ae */ { false, 0x44ae, 0x44ae }, /* 0x44af */ { false, 0x44af, 0x44af }, /* 0x44b0 */ { false, 0x44b0, 0x44b0 }, /* 0x44b1 */ { false, 0x44b1, 0x44b1 }, /* 0x44b2 */ { false, 0x44b2, 0x44b2 }, /* 0x44b3 */ { false, 0x44b3, 0x44b3 }, /* 0x44b4 */ { false, 0x44b4, 0x44b4 }, /* 0x44b5 */ { false, 0x44b5, 0x44b5 }, /* 0x44b6 */ { false, 0x44b6, 0x44b6 }, /* 0x44b7 */ { false, 0x44b7, 0x44b7 }, /* 0x44b8 */ { false, 0x44b8, 0x44b8 }, /* 0x44b9 */ { false, 0x44b9, 0x44b9 }, /* 0x44ba */ { false, 0x44ba, 0x44ba }, /* 0x44bb */ { false, 0x44bb, 0x44bb }, /* 0x44bc */ { false, 0x44bc, 0x44bc }, /* 0x44bd */ { false, 0x44bd, 0x44bd }, /* 0x44be */ { false, 0x44be, 0x44be }, /* 0x44bf */ { false, 0x44bf, 0x44bf }, /* 0x44c0 */ { false, 0x44c0, 0x44c0 }, /* 0x44c1 */ { false, 0x44c1, 0x44c1 }, /* 0x44c2 */ { false, 0x44c2, 0x44c2 }, /* 0x44c3 */ { false, 0x44c3, 0x44c3 }, /* 0x44c4 */ { false, 0x44c4, 0x44c4 }, /* 0x44c5 */ { false, 0x44c5, 0x44c5 }, /* 0x44c6 */ { false, 0x44c6, 0x44c6 }, /* 0x44c7 */ { false, 0x44c7, 0x44c7 }, /* 0x44c8 */ { false, 0x44c8, 0x44c8 }, /* 0x44c9 */ { false, 0x44c9, 0x44c9 }, /* 0x44ca */ { false, 0x44ca, 0x44ca }, /* 0x44cb */ { false, 0x44cb, 0x44cb }, /* 0x44cc */ { false, 0x44cc, 0x44cc }, /* 0x44cd */ { false, 0x44cd, 0x44cd }, /* 0x44ce */ { false, 0x44ce, 0x44ce }, /* 0x44cf */ { false, 0x44cf, 0x44cf }, /* 0x44d0 */ { false, 0x44d0, 0x44d0 }, /* 0x44d1 */ { false, 0x44d1, 0x44d1 }, /* 0x44d2 */ { false, 0x44d2, 0x44d2 }, /* 0x44d3 */ { false, 0x44d3, 0x44d3 }, /* 0x44d4 */ { false, 0x44d4, 0x44d4 }, /* 0x44d5 */ { false, 0x44d5, 0x44d5 }, /* 0x44d6 */ { false, 0x44d6, 0x44d6 }, /* 0x44d7 */ { false, 0x44d7, 0x44d7 }, /* 0x44d8 */ { false, 0x44d8, 0x44d8 }, /* 0x44d9 */ { false, 0x44d9, 0x44d9 }, /* 0x44da */ { false, 0x44da, 0x44da }, /* 0x44db */ { false, 0x44db, 0x44db }, /* 0x44dc */ { false, 0x44dc, 0x44dc }, /* 0x44dd */ { false, 0x44dd, 0x44dd }, /* 0x44de */ { false, 0x44de, 0x44de }, /* 0x44df */ { false, 0x44df, 0x44df }, /* 0x44e0 */ { false, 0x44e0, 0x44e0 }, /* 0x44e1 */ { false, 0x44e1, 0x44e1 }, /* 0x44e2 */ { false, 0x44e2, 0x44e2 }, /* 0x44e3 */ { false, 0x44e3, 0x44e3 }, /* 0x44e4 */ { false, 0x44e4, 0x44e4 }, /* 0x44e5 */ { false, 0x44e5, 0x44e5 }, /* 0x44e6 */ { false, 0x44e6, 0x44e6 }, /* 0x44e7 */ { false, 0x44e7, 0x44e7 }, /* 0x44e8 */ { false, 0x44e8, 0x44e8 }, /* 0x44e9 */ { false, 0x44e9, 0x44e9 }, /* 0x44ea */ { false, 0x44ea, 0x44ea }, /* 0x44eb */ { false, 0x44eb, 0x44eb }, /* 0x44ec */ { false, 0x44ec, 0x44ec }, /* 0x44ed */ { false, 0x44ed, 0x44ed }, /* 0x44ee */ { false, 0x44ee, 0x44ee }, /* 0x44ef */ { false, 0x44ef, 0x44ef }, /* 0x44f0 */ { false, 0x44f0, 0x44f0 }, /* 0x44f1 */ { false, 0x44f1, 0x44f1 }, /* 0x44f2 */ { false, 0x44f2, 0x44f2 }, /* 0x44f3 */ { false, 0x44f3, 0x44f3 }, /* 0x44f4 */ { false, 0x44f4, 0x44f4 }, /* 0x44f5 */ { false, 0x44f5, 0x44f5 }, /* 0x44f6 */ { false, 0x44f6, 0x44f6 }, /* 0x44f7 */ { false, 0x44f7, 0x44f7 }, /* 0x44f8 */ { false, 0x44f8, 0x44f8 }, /* 0x44f9 */ { false, 0x44f9, 0x44f9 }, /* 0x44fa */ { false, 0x44fa, 0x44fa }, /* 0x44fb */ { false, 0x44fb, 0x44fb }, /* 0x44fc */ { false, 0x44fc, 0x44fc }, /* 0x44fd */ { false, 0x44fd, 0x44fd }, /* 0x44fe */ { false, 0x44fe, 0x44fe }, /* 0x44ff */ { false, 0x44ff, 0x44ff }, /* 0x4500 */ { false, 0x4500, 0x4500 }, /* 0x4501 */ { false, 0x4501, 0x4501 }, /* 0x4502 */ { false, 0x4502, 0x4502 }, /* 0x4503 */ { false, 0x4503, 0x4503 }, /* 0x4504 */ { false, 0x4504, 0x4504 }, /* 0x4505 */ { false, 0x4505, 0x4505 }, /* 0x4506 */ { false, 0x4506, 0x4506 }, /* 0x4507 */ { false, 0x4507, 0x4507 }, /* 0x4508 */ { false, 0x4508, 0x4508 }, /* 0x4509 */ { false, 0x4509, 0x4509 }, /* 0x450a */ { false, 0x450a, 0x450a }, /* 0x450b */ { false, 0x450b, 0x450b }, /* 0x450c */ { false, 0x450c, 0x450c }, /* 0x450d */ { false, 0x450d, 0x450d }, /* 0x450e */ { false, 0x450e, 0x450e }, /* 0x450f */ { false, 0x450f, 0x450f }, /* 0x4510 */ { false, 0x4510, 0x4510 }, /* 0x4511 */ { false, 0x4511, 0x4511 }, /* 0x4512 */ { false, 0x4512, 0x4512 }, /* 0x4513 */ { false, 0x4513, 0x4513 }, /* 0x4514 */ { false, 0x4514, 0x4514 }, /* 0x4515 */ { false, 0x4515, 0x4515 }, /* 0x4516 */ { false, 0x4516, 0x4516 }, /* 0x4517 */ { false, 0x4517, 0x4517 }, /* 0x4518 */ { false, 0x4518, 0x4518 }, /* 0x4519 */ { false, 0x4519, 0x4519 }, /* 0x451a */ { false, 0x451a, 0x451a }, /* 0x451b */ { false, 0x451b, 0x451b }, /* 0x451c */ { false, 0x451c, 0x451c }, /* 0x451d */ { false, 0x451d, 0x451d }, /* 0x451e */ { false, 0x451e, 0x451e }, /* 0x451f */ { false, 0x451f, 0x451f }, /* 0x4520 */ { false, 0x4520, 0x4520 }, /* 0x4521 */ { false, 0x4521, 0x4521 }, /* 0x4522 */ { false, 0x4522, 0x4522 }, /* 0x4523 */ { false, 0x4523, 0x4523 }, /* 0x4524 */ { false, 0x4524, 0x4524 }, /* 0x4525 */ { false, 0x4525, 0x4525 }, /* 0x4526 */ { false, 0x4526, 0x4526 }, /* 0x4527 */ { false, 0x4527, 0x4527 }, /* 0x4528 */ { false, 0x4528, 0x4528 }, /* 0x4529 */ { false, 0x4529, 0x4529 }, /* 0x452a */ { false, 0x452a, 0x452a }, /* 0x452b */ { false, 0x452b, 0x452b }, /* 0x452c */ { false, 0x452c, 0x452c }, /* 0x452d */ { false, 0x452d, 0x452d }, /* 0x452e */ { false, 0x452e, 0x452e }, /* 0x452f */ { false, 0x452f, 0x452f }, /* 0x4530 */ { false, 0x4530, 0x4530 }, /* 0x4531 */ { false, 0x4531, 0x4531 }, /* 0x4532 */ { false, 0x4532, 0x4532 }, /* 0x4533 */ { false, 0x4533, 0x4533 }, /* 0x4534 */ { false, 0x4534, 0x4534 }, /* 0x4535 */ { false, 0x4535, 0x4535 }, /* 0x4536 */ { false, 0x4536, 0x4536 }, /* 0x4537 */ { false, 0x4537, 0x4537 }, /* 0x4538 */ { false, 0x4538, 0x4538 }, /* 0x4539 */ { false, 0x4539, 0x4539 }, /* 0x453a */ { false, 0x453a, 0x453a }, /* 0x453b */ { false, 0x453b, 0x453b }, /* 0x453c */ { false, 0x453c, 0x453c }, /* 0x453d */ { false, 0x453d, 0x453d }, /* 0x453e */ { false, 0x453e, 0x453e }, /* 0x453f */ { false, 0x453f, 0x453f }, /* 0x4540 */ { false, 0x4540, 0x4540 }, /* 0x4541 */ { false, 0x4541, 0x4541 }, /* 0x4542 */ { false, 0x4542, 0x4542 }, /* 0x4543 */ { false, 0x4543, 0x4543 }, /* 0x4544 */ { false, 0x4544, 0x4544 }, /* 0x4545 */ { false, 0x4545, 0x4545 }, /* 0x4546 */ { false, 0x4546, 0x4546 }, /* 0x4547 */ { false, 0x4547, 0x4547 }, /* 0x4548 */ { false, 0x4548, 0x4548 }, /* 0x4549 */ { false, 0x4549, 0x4549 }, /* 0x454a */ { false, 0x454a, 0x454a }, /* 0x454b */ { false, 0x454b, 0x454b }, /* 0x454c */ { false, 0x454c, 0x454c }, /* 0x454d */ { false, 0x454d, 0x454d }, /* 0x454e */ { false, 0x454e, 0x454e }, /* 0x454f */ { false, 0x454f, 0x454f }, /* 0x4550 */ { false, 0x4550, 0x4550 }, /* 0x4551 */ { false, 0x4551, 0x4551 }, /* 0x4552 */ { false, 0x4552, 0x4552 }, /* 0x4553 */ { false, 0x4553, 0x4553 }, /* 0x4554 */ { false, 0x4554, 0x4554 }, /* 0x4555 */ { false, 0x4555, 0x4555 }, /* 0x4556 */ { false, 0x4556, 0x4556 }, /* 0x4557 */ { false, 0x4557, 0x4557 }, /* 0x4558 */ { false, 0x4558, 0x4558 }, /* 0x4559 */ { false, 0x4559, 0x4559 }, /* 0x455a */ { false, 0x455a, 0x455a }, /* 0x455b */ { false, 0x455b, 0x455b }, /* 0x455c */ { false, 0x455c, 0x455c }, /* 0x455d */ { false, 0x455d, 0x455d }, /* 0x455e */ { false, 0x455e, 0x455e }, /* 0x455f */ { false, 0x455f, 0x455f }, /* 0x4560 */ { false, 0x4560, 0x4560 }, /* 0x4561 */ { false, 0x4561, 0x4561 }, /* 0x4562 */ { false, 0x4562, 0x4562 }, /* 0x4563 */ { false, 0x4563, 0x4563 }, /* 0x4564 */ { false, 0x4564, 0x4564 }, /* 0x4565 */ { false, 0x4565, 0x4565 }, /* 0x4566 */ { false, 0x4566, 0x4566 }, /* 0x4567 */ { false, 0x4567, 0x4567 }, /* 0x4568 */ { false, 0x4568, 0x4568 }, /* 0x4569 */ { false, 0x4569, 0x4569 }, /* 0x456a */ { false, 0x456a, 0x456a }, /* 0x456b */ { false, 0x456b, 0x456b }, /* 0x456c */ { false, 0x456c, 0x456c }, /* 0x456d */ { false, 0x456d, 0x456d }, /* 0x456e */ { false, 0x456e, 0x456e }, /* 0x456f */ { false, 0x456f, 0x456f }, /* 0x4570 */ { false, 0x4570, 0x4570 }, /* 0x4571 */ { false, 0x4571, 0x4571 }, /* 0x4572 */ { false, 0x4572, 0x4572 }, /* 0x4573 */ { false, 0x4573, 0x4573 }, /* 0x4574 */ { false, 0x4574, 0x4574 }, /* 0x4575 */ { false, 0x4575, 0x4575 }, /* 0x4576 */ { false, 0x4576, 0x4576 }, /* 0x4577 */ { false, 0x4577, 0x4577 }, /* 0x4578 */ { false, 0x4578, 0x4578 }, /* 0x4579 */ { false, 0x4579, 0x4579 }, /* 0x457a */ { false, 0x457a, 0x457a }, /* 0x457b */ { false, 0x457b, 0x457b }, /* 0x457c */ { false, 0x457c, 0x457c }, /* 0x457d */ { false, 0x457d, 0x457d }, /* 0x457e */ { false, 0x457e, 0x457e }, /* 0x457f */ { false, 0x457f, 0x457f }, /* 0x4580 */ { false, 0x4580, 0x4580 }, /* 0x4581 */ { false, 0x4581, 0x4581 }, /* 0x4582 */ { false, 0x4582, 0x4582 }, /* 0x4583 */ { false, 0x4583, 0x4583 }, /* 0x4584 */ { false, 0x4584, 0x4584 }, /* 0x4585 */ { false, 0x4585, 0x4585 }, /* 0x4586 */ { false, 0x4586, 0x4586 }, /* 0x4587 */ { false, 0x4587, 0x4587 }, /* 0x4588 */ { false, 0x4588, 0x4588 }, /* 0x4589 */ { false, 0x4589, 0x4589 }, /* 0x458a */ { false, 0x458a, 0x458a }, /* 0x458b */ { false, 0x458b, 0x458b }, /* 0x458c */ { false, 0x458c, 0x458c }, /* 0x458d */ { false, 0x458d, 0x458d }, /* 0x458e */ { false, 0x458e, 0x458e }, /* 0x458f */ { false, 0x458f, 0x458f }, /* 0x4590 */ { false, 0x4590, 0x4590 }, /* 0x4591 */ { false, 0x4591, 0x4591 }, /* 0x4592 */ { false, 0x4592, 0x4592 }, /* 0x4593 */ { false, 0x4593, 0x4593 }, /* 0x4594 */ { false, 0x4594, 0x4594 }, /* 0x4595 */ { false, 0x4595, 0x4595 }, /* 0x4596 */ { false, 0x4596, 0x4596 }, /* 0x4597 */ { false, 0x4597, 0x4597 }, /* 0x4598 */ { false, 0x4598, 0x4598 }, /* 0x4599 */ { false, 0x4599, 0x4599 }, /* 0x459a */ { false, 0x459a, 0x459a }, /* 0x459b */ { false, 0x459b, 0x459b }, /* 0x459c */ { false, 0x459c, 0x459c }, /* 0x459d */ { false, 0x459d, 0x459d }, /* 0x459e */ { false, 0x459e, 0x459e }, /* 0x459f */ { false, 0x459f, 0x459f }, /* 0x45a0 */ { false, 0x45a0, 0x45a0 }, /* 0x45a1 */ { false, 0x45a1, 0x45a1 }, /* 0x45a2 */ { false, 0x45a2, 0x45a2 }, /* 0x45a3 */ { false, 0x45a3, 0x45a3 }, /* 0x45a4 */ { false, 0x45a4, 0x45a4 }, /* 0x45a5 */ { false, 0x45a5, 0x45a5 }, /* 0x45a6 */ { false, 0x45a6, 0x45a6 }, /* 0x45a7 */ { false, 0x45a7, 0x45a7 }, /* 0x45a8 */ { false, 0x45a8, 0x45a8 }, /* 0x45a9 */ { false, 0x45a9, 0x45a9 }, /* 0x45aa */ { false, 0x45aa, 0x45aa }, /* 0x45ab */ { false, 0x45ab, 0x45ab }, /* 0x45ac */ { false, 0x45ac, 0x45ac }, /* 0x45ad */ { false, 0x45ad, 0x45ad }, /* 0x45ae */ { false, 0x45ae, 0x45ae }, /* 0x45af */ { false, 0x45af, 0x45af }, /* 0x45b0 */ { false, 0x45b0, 0x45b0 }, /* 0x45b1 */ { false, 0x45b1, 0x45b1 }, /* 0x45b2 */ { false, 0x45b2, 0x45b2 }, /* 0x45b3 */ { false, 0x45b3, 0x45b3 }, /* 0x45b4 */ { false, 0x45b4, 0x45b4 }, /* 0x45b5 */ { false, 0x45b5, 0x45b5 }, /* 0x45b6 */ { false, 0x45b6, 0x45b6 }, /* 0x45b7 */ { false, 0x45b7, 0x45b7 }, /* 0x45b8 */ { false, 0x45b8, 0x45b8 }, /* 0x45b9 */ { false, 0x45b9, 0x45b9 }, /* 0x45ba */ { false, 0x45ba, 0x45ba }, /* 0x45bb */ { false, 0x45bb, 0x45bb }, /* 0x45bc */ { false, 0x45bc, 0x45bc }, /* 0x45bd */ { false, 0x45bd, 0x45bd }, /* 0x45be */ { false, 0x45be, 0x45be }, /* 0x45bf */ { false, 0x45bf, 0x45bf }, /* 0x45c0 */ { false, 0x45c0, 0x45c0 }, /* 0x45c1 */ { false, 0x45c1, 0x45c1 }, /* 0x45c2 */ { false, 0x45c2, 0x45c2 }, /* 0x45c3 */ { false, 0x45c3, 0x45c3 }, /* 0x45c4 */ { false, 0x45c4, 0x45c4 }, /* 0x45c5 */ { false, 0x45c5, 0x45c5 }, /* 0x45c6 */ { false, 0x45c6, 0x45c6 }, /* 0x45c7 */ { false, 0x45c7, 0x45c7 }, /* 0x45c8 */ { false, 0x45c8, 0x45c8 }, /* 0x45c9 */ { false, 0x45c9, 0x45c9 }, /* 0x45ca */ { false, 0x45ca, 0x45ca }, /* 0x45cb */ { false, 0x45cb, 0x45cb }, /* 0x45cc */ { false, 0x45cc, 0x45cc }, /* 0x45cd */ { false, 0x45cd, 0x45cd }, /* 0x45ce */ { false, 0x45ce, 0x45ce }, /* 0x45cf */ { false, 0x45cf, 0x45cf }, /* 0x45d0 */ { false, 0x45d0, 0x45d0 }, /* 0x45d1 */ { false, 0x45d1, 0x45d1 }, /* 0x45d2 */ { false, 0x45d2, 0x45d2 }, /* 0x45d3 */ { false, 0x45d3, 0x45d3 }, /* 0x45d4 */ { false, 0x45d4, 0x45d4 }, /* 0x45d5 */ { false, 0x45d5, 0x45d5 }, /* 0x45d6 */ { false, 0x45d6, 0x45d6 }, /* 0x45d7 */ { false, 0x45d7, 0x45d7 }, /* 0x45d8 */ { false, 0x45d8, 0x45d8 }, /* 0x45d9 */ { false, 0x45d9, 0x45d9 }, /* 0x45da */ { false, 0x45da, 0x45da }, /* 0x45db */ { false, 0x45db, 0x45db }, /* 0x45dc */ { false, 0x45dc, 0x45dc }, /* 0x45dd */ { false, 0x45dd, 0x45dd }, /* 0x45de */ { false, 0x45de, 0x45de }, /* 0x45df */ { false, 0x45df, 0x45df }, /* 0x45e0 */ { false, 0x45e0, 0x45e0 }, /* 0x45e1 */ { false, 0x45e1, 0x45e1 }, /* 0x45e2 */ { false, 0x45e2, 0x45e2 }, /* 0x45e3 */ { false, 0x45e3, 0x45e3 }, /* 0x45e4 */ { false, 0x45e4, 0x45e4 }, /* 0x45e5 */ { false, 0x45e5, 0x45e5 }, /* 0x45e6 */ { false, 0x45e6, 0x45e6 }, /* 0x45e7 */ { false, 0x45e7, 0x45e7 }, /* 0x45e8 */ { false, 0x45e8, 0x45e8 }, /* 0x45e9 */ { false, 0x45e9, 0x45e9 }, /* 0x45ea */ { false, 0x45ea, 0x45ea }, /* 0x45eb */ { false, 0x45eb, 0x45eb }, /* 0x45ec */ { false, 0x45ec, 0x45ec }, /* 0x45ed */ { false, 0x45ed, 0x45ed }, /* 0x45ee */ { false, 0x45ee, 0x45ee }, /* 0x45ef */ { false, 0x45ef, 0x45ef }, /* 0x45f0 */ { false, 0x45f0, 0x45f0 }, /* 0x45f1 */ { false, 0x45f1, 0x45f1 }, /* 0x45f2 */ { false, 0x45f2, 0x45f2 }, /* 0x45f3 */ { false, 0x45f3, 0x45f3 }, /* 0x45f4 */ { false, 0x45f4, 0x45f4 }, /* 0x45f5 */ { false, 0x45f5, 0x45f5 }, /* 0x45f6 */ { false, 0x45f6, 0x45f6 }, /* 0x45f7 */ { false, 0x45f7, 0x45f7 }, /* 0x45f8 */ { false, 0x45f8, 0x45f8 }, /* 0x45f9 */ { false, 0x45f9, 0x45f9 }, /* 0x45fa */ { false, 0x45fa, 0x45fa }, /* 0x45fb */ { false, 0x45fb, 0x45fb }, /* 0x45fc */ { false, 0x45fc, 0x45fc }, /* 0x45fd */ { false, 0x45fd, 0x45fd }, /* 0x45fe */ { false, 0x45fe, 0x45fe }, /* 0x45ff */ { false, 0x45ff, 0x45ff }, /* 0x4600 */ { false, 0x4600, 0x4600 }, /* 0x4601 */ { false, 0x4601, 0x4601 }, /* 0x4602 */ { false, 0x4602, 0x4602 }, /* 0x4603 */ { false, 0x4603, 0x4603 }, /* 0x4604 */ { false, 0x4604, 0x4604 }, /* 0x4605 */ { false, 0x4605, 0x4605 }, /* 0x4606 */ { false, 0x4606, 0x4606 }, /* 0x4607 */ { false, 0x4607, 0x4607 }, /* 0x4608 */ { false, 0x4608, 0x4608 }, /* 0x4609 */ { false, 0x4609, 0x4609 }, /* 0x460a */ { false, 0x460a, 0x460a }, /* 0x460b */ { false, 0x460b, 0x460b }, /* 0x460c */ { false, 0x460c, 0x460c }, /* 0x460d */ { false, 0x460d, 0x460d }, /* 0x460e */ { false, 0x460e, 0x460e }, /* 0x460f */ { false, 0x460f, 0x460f }, /* 0x4610 */ { false, 0x4610, 0x4610 }, /* 0x4611 */ { false, 0x4611, 0x4611 }, /* 0x4612 */ { false, 0x4612, 0x4612 }, /* 0x4613 */ { false, 0x4613, 0x4613 }, /* 0x4614 */ { false, 0x4614, 0x4614 }, /* 0x4615 */ { false, 0x4615, 0x4615 }, /* 0x4616 */ { false, 0x4616, 0x4616 }, /* 0x4617 */ { false, 0x4617, 0x4617 }, /* 0x4618 */ { false, 0x4618, 0x4618 }, /* 0x4619 */ { false, 0x4619, 0x4619 }, /* 0x461a */ { false, 0x461a, 0x461a }, /* 0x461b */ { false, 0x461b, 0x461b }, /* 0x461c */ { false, 0x461c, 0x461c }, /* 0x461d */ { false, 0x461d, 0x461d }, /* 0x461e */ { false, 0x461e, 0x461e }, /* 0x461f */ { false, 0x461f, 0x461f }, /* 0x4620 */ { false, 0x4620, 0x4620 }, /* 0x4621 */ { false, 0x4621, 0x4621 }, /* 0x4622 */ { false, 0x4622, 0x4622 }, /* 0x4623 */ { false, 0x4623, 0x4623 }, /* 0x4624 */ { false, 0x4624, 0x4624 }, /* 0x4625 */ { false, 0x4625, 0x4625 }, /* 0x4626 */ { false, 0x4626, 0x4626 }, /* 0x4627 */ { false, 0x4627, 0x4627 }, /* 0x4628 */ { false, 0x4628, 0x4628 }, /* 0x4629 */ { false, 0x4629, 0x4629 }, /* 0x462a */ { false, 0x462a, 0x462a }, /* 0x462b */ { false, 0x462b, 0x462b }, /* 0x462c */ { false, 0x462c, 0x462c }, /* 0x462d */ { false, 0x462d, 0x462d }, /* 0x462e */ { false, 0x462e, 0x462e }, /* 0x462f */ { false, 0x462f, 0x462f }, /* 0x4630 */ { false, 0x4630, 0x4630 }, /* 0x4631 */ { false, 0x4631, 0x4631 }, /* 0x4632 */ { false, 0x4632, 0x4632 }, /* 0x4633 */ { false, 0x4633, 0x4633 }, /* 0x4634 */ { false, 0x4634, 0x4634 }, /* 0x4635 */ { false, 0x4635, 0x4635 }, /* 0x4636 */ { false, 0x4636, 0x4636 }, /* 0x4637 */ { false, 0x4637, 0x4637 }, /* 0x4638 */ { false, 0x4638, 0x4638 }, /* 0x4639 */ { false, 0x4639, 0x4639 }, /* 0x463a */ { false, 0x463a, 0x463a }, /* 0x463b */ { false, 0x463b, 0x463b }, /* 0x463c */ { false, 0x463c, 0x463c }, /* 0x463d */ { false, 0x463d, 0x463d }, /* 0x463e */ { false, 0x463e, 0x463e }, /* 0x463f */ { false, 0x463f, 0x463f }, /* 0x4640 */ { false, 0x4640, 0x4640 }, /* 0x4641 */ { false, 0x4641, 0x4641 }, /* 0x4642 */ { false, 0x4642, 0x4642 }, /* 0x4643 */ { false, 0x4643, 0x4643 }, /* 0x4644 */ { false, 0x4644, 0x4644 }, /* 0x4645 */ { false, 0x4645, 0x4645 }, /* 0x4646 */ { false, 0x4646, 0x4646 }, /* 0x4647 */ { false, 0x4647, 0x4647 }, /* 0x4648 */ { false, 0x4648, 0x4648 }, /* 0x4649 */ { false, 0x4649, 0x4649 }, /* 0x464a */ { false, 0x464a, 0x464a }, /* 0x464b */ { false, 0x464b, 0x464b }, /* 0x464c */ { false, 0x464c, 0x464c }, /* 0x464d */ { false, 0x464d, 0x464d }, /* 0x464e */ { false, 0x464e, 0x464e }, /* 0x464f */ { false, 0x464f, 0x464f }, /* 0x4650 */ { false, 0x4650, 0x4650 }, /* 0x4651 */ { false, 0x4651, 0x4651 }, /* 0x4652 */ { false, 0x4652, 0x4652 }, /* 0x4653 */ { false, 0x4653, 0x4653 }, /* 0x4654 */ { false, 0x4654, 0x4654 }, /* 0x4655 */ { false, 0x4655, 0x4655 }, /* 0x4656 */ { false, 0x4656, 0x4656 }, /* 0x4657 */ { false, 0x4657, 0x4657 }, /* 0x4658 */ { false, 0x4658, 0x4658 }, /* 0x4659 */ { false, 0x4659, 0x4659 }, /* 0x465a */ { false, 0x465a, 0x465a }, /* 0x465b */ { false, 0x465b, 0x465b }, /* 0x465c */ { false, 0x465c, 0x465c }, /* 0x465d */ { false, 0x465d, 0x465d }, /* 0x465e */ { false, 0x465e, 0x465e }, /* 0x465f */ { false, 0x465f, 0x465f }, /* 0x4660 */ { false, 0x4660, 0x4660 }, /* 0x4661 */ { false, 0x4661, 0x4661 }, /* 0x4662 */ { false, 0x4662, 0x4662 }, /* 0x4663 */ { false, 0x4663, 0x4663 }, /* 0x4664 */ { false, 0x4664, 0x4664 }, /* 0x4665 */ { false, 0x4665, 0x4665 }, /* 0x4666 */ { false, 0x4666, 0x4666 }, /* 0x4667 */ { false, 0x4667, 0x4667 }, /* 0x4668 */ { false, 0x4668, 0x4668 }, /* 0x4669 */ { false, 0x4669, 0x4669 }, /* 0x466a */ { false, 0x466a, 0x466a }, /* 0x466b */ { false, 0x466b, 0x466b }, /* 0x466c */ { false, 0x466c, 0x466c }, /* 0x466d */ { false, 0x466d, 0x466d }, /* 0x466e */ { false, 0x466e, 0x466e }, /* 0x466f */ { false, 0x466f, 0x466f }, /* 0x4670 */ { false, 0x4670, 0x4670 }, /* 0x4671 */ { false, 0x4671, 0x4671 }, /* 0x4672 */ { false, 0x4672, 0x4672 }, /* 0x4673 */ { false, 0x4673, 0x4673 }, /* 0x4674 */ { false, 0x4674, 0x4674 }, /* 0x4675 */ { false, 0x4675, 0x4675 }, /* 0x4676 */ { false, 0x4676, 0x4676 }, /* 0x4677 */ { false, 0x4677, 0x4677 }, /* 0x4678 */ { false, 0x4678, 0x4678 }, /* 0x4679 */ { false, 0x4679, 0x4679 }, /* 0x467a */ { false, 0x467a, 0x467a }, /* 0x467b */ { false, 0x467b, 0x467b }, /* 0x467c */ { false, 0x467c, 0x467c }, /* 0x467d */ { false, 0x467d, 0x467d }, /* 0x467e */ { false, 0x467e, 0x467e }, /* 0x467f */ { false, 0x467f, 0x467f }, /* 0x4680 */ { false, 0x4680, 0x4680 }, /* 0x4681 */ { false, 0x4681, 0x4681 }, /* 0x4682 */ { false, 0x4682, 0x4682 }, /* 0x4683 */ { false, 0x4683, 0x4683 }, /* 0x4684 */ { false, 0x4684, 0x4684 }, /* 0x4685 */ { false, 0x4685, 0x4685 }, /* 0x4686 */ { false, 0x4686, 0x4686 }, /* 0x4687 */ { false, 0x4687, 0x4687 }, /* 0x4688 */ { false, 0x4688, 0x4688 }, /* 0x4689 */ { false, 0x4689, 0x4689 }, /* 0x468a */ { false, 0x468a, 0x468a }, /* 0x468b */ { false, 0x468b, 0x468b }, /* 0x468c */ { false, 0x468c, 0x468c }, /* 0x468d */ { false, 0x468d, 0x468d }, /* 0x468e */ { false, 0x468e, 0x468e }, /* 0x468f */ { false, 0x468f, 0x468f }, /* 0x4690 */ { false, 0x4690, 0x4690 }, /* 0x4691 */ { false, 0x4691, 0x4691 }, /* 0x4692 */ { false, 0x4692, 0x4692 }, /* 0x4693 */ { false, 0x4693, 0x4693 }, /* 0x4694 */ { false, 0x4694, 0x4694 }, /* 0x4695 */ { false, 0x4695, 0x4695 }, /* 0x4696 */ { false, 0x4696, 0x4696 }, /* 0x4697 */ { false, 0x4697, 0x4697 }, /* 0x4698 */ { false, 0x4698, 0x4698 }, /* 0x4699 */ { false, 0x4699, 0x4699 }, /* 0x469a */ { false, 0x469a, 0x469a }, /* 0x469b */ { false, 0x469b, 0x469b }, /* 0x469c */ { false, 0x469c, 0x469c }, /* 0x469d */ { false, 0x469d, 0x469d }, /* 0x469e */ { false, 0x469e, 0x469e }, /* 0x469f */ { false, 0x469f, 0x469f }, /* 0x46a0 */ { false, 0x46a0, 0x46a0 }, /* 0x46a1 */ { false, 0x46a1, 0x46a1 }, /* 0x46a2 */ { false, 0x46a2, 0x46a2 }, /* 0x46a3 */ { false, 0x46a3, 0x46a3 }, /* 0x46a4 */ { false, 0x46a4, 0x46a4 }, /* 0x46a5 */ { false, 0x46a5, 0x46a5 }, /* 0x46a6 */ { false, 0x46a6, 0x46a6 }, /* 0x46a7 */ { false, 0x46a7, 0x46a7 }, /* 0x46a8 */ { false, 0x46a8, 0x46a8 }, /* 0x46a9 */ { false, 0x46a9, 0x46a9 }, /* 0x46aa */ { false, 0x46aa, 0x46aa }, /* 0x46ab */ { false, 0x46ab, 0x46ab }, /* 0x46ac */ { false, 0x46ac, 0x46ac }, /* 0x46ad */ { false, 0x46ad, 0x46ad }, /* 0x46ae */ { false, 0x46ae, 0x46ae }, /* 0x46af */ { false, 0x46af, 0x46af }, /* 0x46b0 */ { false, 0x46b0, 0x46b0 }, /* 0x46b1 */ { false, 0x46b1, 0x46b1 }, /* 0x46b2 */ { false, 0x46b2, 0x46b2 }, /* 0x46b3 */ { false, 0x46b3, 0x46b3 }, /* 0x46b4 */ { false, 0x46b4, 0x46b4 }, /* 0x46b5 */ { false, 0x46b5, 0x46b5 }, /* 0x46b6 */ { false, 0x46b6, 0x46b6 }, /* 0x46b7 */ { false, 0x46b7, 0x46b7 }, /* 0x46b8 */ { false, 0x46b8, 0x46b8 }, /* 0x46b9 */ { false, 0x46b9, 0x46b9 }, /* 0x46ba */ { false, 0x46ba, 0x46ba }, /* 0x46bb */ { false, 0x46bb, 0x46bb }, /* 0x46bc */ { false, 0x46bc, 0x46bc }, /* 0x46bd */ { false, 0x46bd, 0x46bd }, /* 0x46be */ { false, 0x46be, 0x46be }, /* 0x46bf */ { false, 0x46bf, 0x46bf }, /* 0x46c0 */ { false, 0x46c0, 0x46c0 }, /* 0x46c1 */ { false, 0x46c1, 0x46c1 }, /* 0x46c2 */ { false, 0x46c2, 0x46c2 }, /* 0x46c3 */ { false, 0x46c3, 0x46c3 }, /* 0x46c4 */ { false, 0x46c4, 0x46c4 }, /* 0x46c5 */ { false, 0x46c5, 0x46c5 }, /* 0x46c6 */ { false, 0x46c6, 0x46c6 }, /* 0x46c7 */ { false, 0x46c7, 0x46c7 }, /* 0x46c8 */ { false, 0x46c8, 0x46c8 }, /* 0x46c9 */ { false, 0x46c9, 0x46c9 }, /* 0x46ca */ { false, 0x46ca, 0x46ca }, /* 0x46cb */ { false, 0x46cb, 0x46cb }, /* 0x46cc */ { false, 0x46cc, 0x46cc }, /* 0x46cd */ { false, 0x46cd, 0x46cd }, /* 0x46ce */ { false, 0x46ce, 0x46ce }, /* 0x46cf */ { false, 0x46cf, 0x46cf }, /* 0x46d0 */ { false, 0x46d0, 0x46d0 }, /* 0x46d1 */ { false, 0x46d1, 0x46d1 }, /* 0x46d2 */ { false, 0x46d2, 0x46d2 }, /* 0x46d3 */ { false, 0x46d3, 0x46d3 }, /* 0x46d4 */ { false, 0x46d4, 0x46d4 }, /* 0x46d5 */ { false, 0x46d5, 0x46d5 }, /* 0x46d6 */ { false, 0x46d6, 0x46d6 }, /* 0x46d7 */ { false, 0x46d7, 0x46d7 }, /* 0x46d8 */ { false, 0x46d8, 0x46d8 }, /* 0x46d9 */ { false, 0x46d9, 0x46d9 }, /* 0x46da */ { false, 0x46da, 0x46da }, /* 0x46db */ { false, 0x46db, 0x46db }, /* 0x46dc */ { false, 0x46dc, 0x46dc }, /* 0x46dd */ { false, 0x46dd, 0x46dd }, /* 0x46de */ { false, 0x46de, 0x46de }, /* 0x46df */ { false, 0x46df, 0x46df }, /* 0x46e0 */ { false, 0x46e0, 0x46e0 }, /* 0x46e1 */ { false, 0x46e1, 0x46e1 }, /* 0x46e2 */ { false, 0x46e2, 0x46e2 }, /* 0x46e3 */ { false, 0x46e3, 0x46e3 }, /* 0x46e4 */ { false, 0x46e4, 0x46e4 }, /* 0x46e5 */ { false, 0x46e5, 0x46e5 }, /* 0x46e6 */ { false, 0x46e6, 0x46e6 }, /* 0x46e7 */ { false, 0x46e7, 0x46e7 }, /* 0x46e8 */ { false, 0x46e8, 0x46e8 }, /* 0x46e9 */ { false, 0x46e9, 0x46e9 }, /* 0x46ea */ { false, 0x46ea, 0x46ea }, /* 0x46eb */ { false, 0x46eb, 0x46eb }, /* 0x46ec */ { false, 0x46ec, 0x46ec }, /* 0x46ed */ { false, 0x46ed, 0x46ed }, /* 0x46ee */ { false, 0x46ee, 0x46ee }, /* 0x46ef */ { false, 0x46ef, 0x46ef }, /* 0x46f0 */ { false, 0x46f0, 0x46f0 }, /* 0x46f1 */ { false, 0x46f1, 0x46f1 }, /* 0x46f2 */ { false, 0x46f2, 0x46f2 }, /* 0x46f3 */ { false, 0x46f3, 0x46f3 }, /* 0x46f4 */ { false, 0x46f4, 0x46f4 }, /* 0x46f5 */ { false, 0x46f5, 0x46f5 }, /* 0x46f6 */ { false, 0x46f6, 0x46f6 }, /* 0x46f7 */ { false, 0x46f7, 0x46f7 }, /* 0x46f8 */ { false, 0x46f8, 0x46f8 }, /* 0x46f9 */ { false, 0x46f9, 0x46f9 }, /* 0x46fa */ { false, 0x46fa, 0x46fa }, /* 0x46fb */ { false, 0x46fb, 0x46fb }, /* 0x46fc */ { false, 0x46fc, 0x46fc }, /* 0x46fd */ { false, 0x46fd, 0x46fd }, /* 0x46fe */ { false, 0x46fe, 0x46fe }, /* 0x46ff */ { false, 0x46ff, 0x46ff }, /* 0x4700 */ { false, 0x4700, 0x4700 }, /* 0x4701 */ { false, 0x4701, 0x4701 }, /* 0x4702 */ { false, 0x4702, 0x4702 }, /* 0x4703 */ { false, 0x4703, 0x4703 }, /* 0x4704 */ { false, 0x4704, 0x4704 }, /* 0x4705 */ { false, 0x4705, 0x4705 }, /* 0x4706 */ { false, 0x4706, 0x4706 }, /* 0x4707 */ { false, 0x4707, 0x4707 }, /* 0x4708 */ { false, 0x4708, 0x4708 }, /* 0x4709 */ { false, 0x4709, 0x4709 }, /* 0x470a */ { false, 0x470a, 0x470a }, /* 0x470b */ { false, 0x470b, 0x470b }, /* 0x470c */ { false, 0x470c, 0x470c }, /* 0x470d */ { false, 0x470d, 0x470d }, /* 0x470e */ { false, 0x470e, 0x470e }, /* 0x470f */ { false, 0x470f, 0x470f }, /* 0x4710 */ { false, 0x4710, 0x4710 }, /* 0x4711 */ { false, 0x4711, 0x4711 }, /* 0x4712 */ { false, 0x4712, 0x4712 }, /* 0x4713 */ { false, 0x4713, 0x4713 }, /* 0x4714 */ { false, 0x4714, 0x4714 }, /* 0x4715 */ { false, 0x4715, 0x4715 }, /* 0x4716 */ { false, 0x4716, 0x4716 }, /* 0x4717 */ { false, 0x4717, 0x4717 }, /* 0x4718 */ { false, 0x4718, 0x4718 }, /* 0x4719 */ { false, 0x4719, 0x4719 }, /* 0x471a */ { false, 0x471a, 0x471a }, /* 0x471b */ { false, 0x471b, 0x471b }, /* 0x471c */ { false, 0x471c, 0x471c }, /* 0x471d */ { false, 0x471d, 0x471d }, /* 0x471e */ { false, 0x471e, 0x471e }, /* 0x471f */ { false, 0x471f, 0x471f }, /* 0x4720 */ { false, 0x4720, 0x4720 }, /* 0x4721 */ { false, 0x4721, 0x4721 }, /* 0x4722 */ { false, 0x4722, 0x4722 }, /* 0x4723 */ { false, 0x4723, 0x4723 }, /* 0x4724 */ { false, 0x4724, 0x4724 }, /* 0x4725 */ { false, 0x4725, 0x4725 }, /* 0x4726 */ { false, 0x4726, 0x4726 }, /* 0x4727 */ { false, 0x4727, 0x4727 }, /* 0x4728 */ { false, 0x4728, 0x4728 }, /* 0x4729 */ { false, 0x4729, 0x4729 }, /* 0x472a */ { false, 0x472a, 0x472a }, /* 0x472b */ { false, 0x472b, 0x472b }, /* 0x472c */ { false, 0x472c, 0x472c }, /* 0x472d */ { false, 0x472d, 0x472d }, /* 0x472e */ { false, 0x472e, 0x472e }, /* 0x472f */ { false, 0x472f, 0x472f }, /* 0x4730 */ { false, 0x4730, 0x4730 }, /* 0x4731 */ { false, 0x4731, 0x4731 }, /* 0x4732 */ { false, 0x4732, 0x4732 }, /* 0x4733 */ { false, 0x4733, 0x4733 }, /* 0x4734 */ { false, 0x4734, 0x4734 }, /* 0x4735 */ { false, 0x4735, 0x4735 }, /* 0x4736 */ { false, 0x4736, 0x4736 }, /* 0x4737 */ { false, 0x4737, 0x4737 }, /* 0x4738 */ { false, 0x4738, 0x4738 }, /* 0x4739 */ { false, 0x4739, 0x4739 }, /* 0x473a */ { false, 0x473a, 0x473a }, /* 0x473b */ { false, 0x473b, 0x473b }, /* 0x473c */ { false, 0x473c, 0x473c }, /* 0x473d */ { false, 0x473d, 0x473d }, /* 0x473e */ { false, 0x473e, 0x473e }, /* 0x473f */ { false, 0x473f, 0x473f }, /* 0x4740 */ { false, 0x4740, 0x4740 }, /* 0x4741 */ { false, 0x4741, 0x4741 }, /* 0x4742 */ { false, 0x4742, 0x4742 }, /* 0x4743 */ { false, 0x4743, 0x4743 }, /* 0x4744 */ { false, 0x4744, 0x4744 }, /* 0x4745 */ { false, 0x4745, 0x4745 }, /* 0x4746 */ { false, 0x4746, 0x4746 }, /* 0x4747 */ { false, 0x4747, 0x4747 }, /* 0x4748 */ { false, 0x4748, 0x4748 }, /* 0x4749 */ { false, 0x4749, 0x4749 }, /* 0x474a */ { false, 0x474a, 0x474a }, /* 0x474b */ { false, 0x474b, 0x474b }, /* 0x474c */ { false, 0x474c, 0x474c }, /* 0x474d */ { false, 0x474d, 0x474d }, /* 0x474e */ { false, 0x474e, 0x474e }, /* 0x474f */ { false, 0x474f, 0x474f }, /* 0x4750 */ { false, 0x4750, 0x4750 }, /* 0x4751 */ { false, 0x4751, 0x4751 }, /* 0x4752 */ { false, 0x4752, 0x4752 }, /* 0x4753 */ { false, 0x4753, 0x4753 }, /* 0x4754 */ { false, 0x4754, 0x4754 }, /* 0x4755 */ { false, 0x4755, 0x4755 }, /* 0x4756 */ { false, 0x4756, 0x4756 }, /* 0x4757 */ { false, 0x4757, 0x4757 }, /* 0x4758 */ { false, 0x4758, 0x4758 }, /* 0x4759 */ { false, 0x4759, 0x4759 }, /* 0x475a */ { false, 0x475a, 0x475a }, /* 0x475b */ { false, 0x475b, 0x475b }, /* 0x475c */ { false, 0x475c, 0x475c }, /* 0x475d */ { false, 0x475d, 0x475d }, /* 0x475e */ { false, 0x475e, 0x475e }, /* 0x475f */ { false, 0x475f, 0x475f }, /* 0x4760 */ { false, 0x4760, 0x4760 }, /* 0x4761 */ { false, 0x4761, 0x4761 }, /* 0x4762 */ { false, 0x4762, 0x4762 }, /* 0x4763 */ { false, 0x4763, 0x4763 }, /* 0x4764 */ { false, 0x4764, 0x4764 }, /* 0x4765 */ { false, 0x4765, 0x4765 }, /* 0x4766 */ { false, 0x4766, 0x4766 }, /* 0x4767 */ { false, 0x4767, 0x4767 }, /* 0x4768 */ { false, 0x4768, 0x4768 }, /* 0x4769 */ { false, 0x4769, 0x4769 }, /* 0x476a */ { false, 0x476a, 0x476a }, /* 0x476b */ { false, 0x476b, 0x476b }, /* 0x476c */ { false, 0x476c, 0x476c }, /* 0x476d */ { false, 0x476d, 0x476d }, /* 0x476e */ { false, 0x476e, 0x476e }, /* 0x476f */ { false, 0x476f, 0x476f }, /* 0x4770 */ { false, 0x4770, 0x4770 }, /* 0x4771 */ { false, 0x4771, 0x4771 }, /* 0x4772 */ { false, 0x4772, 0x4772 }, /* 0x4773 */ { false, 0x4773, 0x4773 }, /* 0x4774 */ { false, 0x4774, 0x4774 }, /* 0x4775 */ { false, 0x4775, 0x4775 }, /* 0x4776 */ { false, 0x4776, 0x4776 }, /* 0x4777 */ { false, 0x4777, 0x4777 }, /* 0x4778 */ { false, 0x4778, 0x4778 }, /* 0x4779 */ { false, 0x4779, 0x4779 }, /* 0x477a */ { false, 0x477a, 0x477a }, /* 0x477b */ { false, 0x477b, 0x477b }, /* 0x477c */ { false, 0x477c, 0x477c }, /* 0x477d */ { false, 0x477d, 0x477d }, /* 0x477e */ { false, 0x477e, 0x477e }, /* 0x477f */ { false, 0x477f, 0x477f }, /* 0x4780 */ { false, 0x4780, 0x4780 }, /* 0x4781 */ { false, 0x4781, 0x4781 }, /* 0x4782 */ { false, 0x4782, 0x4782 }, /* 0x4783 */ { false, 0x4783, 0x4783 }, /* 0x4784 */ { false, 0x4784, 0x4784 }, /* 0x4785 */ { false, 0x4785, 0x4785 }, /* 0x4786 */ { false, 0x4786, 0x4786 }, /* 0x4787 */ { false, 0x4787, 0x4787 }, /* 0x4788 */ { false, 0x4788, 0x4788 }, /* 0x4789 */ { false, 0x4789, 0x4789 }, /* 0x478a */ { false, 0x478a, 0x478a }, /* 0x478b */ { false, 0x478b, 0x478b }, /* 0x478c */ { false, 0x478c, 0x478c }, /* 0x478d */ { false, 0x478d, 0x478d }, /* 0x478e */ { false, 0x478e, 0x478e }, /* 0x478f */ { false, 0x478f, 0x478f }, /* 0x4790 */ { false, 0x4790, 0x4790 }, /* 0x4791 */ { false, 0x4791, 0x4791 }, /* 0x4792 */ { false, 0x4792, 0x4792 }, /* 0x4793 */ { false, 0x4793, 0x4793 }, /* 0x4794 */ { false, 0x4794, 0x4794 }, /* 0x4795 */ { false, 0x4795, 0x4795 }, /* 0x4796 */ { false, 0x4796, 0x4796 }, /* 0x4797 */ { false, 0x4797, 0x4797 }, /* 0x4798 */ { false, 0x4798, 0x4798 }, /* 0x4799 */ { false, 0x4799, 0x4799 }, /* 0x479a */ { false, 0x479a, 0x479a }, /* 0x479b */ { false, 0x479b, 0x479b }, /* 0x479c */ { false, 0x479c, 0x479c }, /* 0x479d */ { false, 0x479d, 0x479d }, /* 0x479e */ { false, 0x479e, 0x479e }, /* 0x479f */ { false, 0x479f, 0x479f }, /* 0x47a0 */ { false, 0x47a0, 0x47a0 }, /* 0x47a1 */ { false, 0x47a1, 0x47a1 }, /* 0x47a2 */ { false, 0x47a2, 0x47a2 }, /* 0x47a3 */ { false, 0x47a3, 0x47a3 }, /* 0x47a4 */ { false, 0x47a4, 0x47a4 }, /* 0x47a5 */ { false, 0x47a5, 0x47a5 }, /* 0x47a6 */ { false, 0x47a6, 0x47a6 }, /* 0x47a7 */ { false, 0x47a7, 0x47a7 }, /* 0x47a8 */ { false, 0x47a8, 0x47a8 }, /* 0x47a9 */ { false, 0x47a9, 0x47a9 }, /* 0x47aa */ { false, 0x47aa, 0x47aa }, /* 0x47ab */ { false, 0x47ab, 0x47ab }, /* 0x47ac */ { false, 0x47ac, 0x47ac }, /* 0x47ad */ { false, 0x47ad, 0x47ad }, /* 0x47ae */ { false, 0x47ae, 0x47ae }, /* 0x47af */ { false, 0x47af, 0x47af }, /* 0x47b0 */ { false, 0x47b0, 0x47b0 }, /* 0x47b1 */ { false, 0x47b1, 0x47b1 }, /* 0x47b2 */ { false, 0x47b2, 0x47b2 }, /* 0x47b3 */ { false, 0x47b3, 0x47b3 }, /* 0x47b4 */ { false, 0x47b4, 0x47b4 }, /* 0x47b5 */ { false, 0x47b5, 0x47b5 }, /* 0x47b6 */ { false, 0x47b6, 0x47b6 }, /* 0x47b7 */ { false, 0x47b7, 0x47b7 }, /* 0x47b8 */ { false, 0x47b8, 0x47b8 }, /* 0x47b9 */ { false, 0x47b9, 0x47b9 }, /* 0x47ba */ { false, 0x47ba, 0x47ba }, /* 0x47bb */ { false, 0x47bb, 0x47bb }, /* 0x47bc */ { false, 0x47bc, 0x47bc }, /* 0x47bd */ { false, 0x47bd, 0x47bd }, /* 0x47be */ { false, 0x47be, 0x47be }, /* 0x47bf */ { false, 0x47bf, 0x47bf }, /* 0x47c0 */ { false, 0x47c0, 0x47c0 }, /* 0x47c1 */ { false, 0x47c1, 0x47c1 }, /* 0x47c2 */ { false, 0x47c2, 0x47c2 }, /* 0x47c3 */ { false, 0x47c3, 0x47c3 }, /* 0x47c4 */ { false, 0x47c4, 0x47c4 }, /* 0x47c5 */ { false, 0x47c5, 0x47c5 }, /* 0x47c6 */ { false, 0x47c6, 0x47c6 }, /* 0x47c7 */ { false, 0x47c7, 0x47c7 }, /* 0x47c8 */ { false, 0x47c8, 0x47c8 }, /* 0x47c9 */ { false, 0x47c9, 0x47c9 }, /* 0x47ca */ { false, 0x47ca, 0x47ca }, /* 0x47cb */ { false, 0x47cb, 0x47cb }, /* 0x47cc */ { false, 0x47cc, 0x47cc }, /* 0x47cd */ { false, 0x47cd, 0x47cd }, /* 0x47ce */ { false, 0x47ce, 0x47ce }, /* 0x47cf */ { false, 0x47cf, 0x47cf }, /* 0x47d0 */ { false, 0x47d0, 0x47d0 }, /* 0x47d1 */ { false, 0x47d1, 0x47d1 }, /* 0x47d2 */ { false, 0x47d2, 0x47d2 }, /* 0x47d3 */ { false, 0x47d3, 0x47d3 }, /* 0x47d4 */ { false, 0x47d4, 0x47d4 }, /* 0x47d5 */ { false, 0x47d5, 0x47d5 }, /* 0x47d6 */ { false, 0x47d6, 0x47d6 }, /* 0x47d7 */ { false, 0x47d7, 0x47d7 }, /* 0x47d8 */ { false, 0x47d8, 0x47d8 }, /* 0x47d9 */ { false, 0x47d9, 0x47d9 }, /* 0x47da */ { false, 0x47da, 0x47da }, /* 0x47db */ { false, 0x47db, 0x47db }, /* 0x47dc */ { false, 0x47dc, 0x47dc }, /* 0x47dd */ { false, 0x47dd, 0x47dd }, /* 0x47de */ { false, 0x47de, 0x47de }, /* 0x47df */ { false, 0x47df, 0x47df }, /* 0x47e0 */ { false, 0x47e0, 0x47e0 }, /* 0x47e1 */ { false, 0x47e1, 0x47e1 }, /* 0x47e2 */ { false, 0x47e2, 0x47e2 }, /* 0x47e3 */ { false, 0x47e3, 0x47e3 }, /* 0x47e4 */ { false, 0x47e4, 0x47e4 }, /* 0x47e5 */ { false, 0x47e5, 0x47e5 }, /* 0x47e6 */ { false, 0x47e6, 0x47e6 }, /* 0x47e7 */ { false, 0x47e7, 0x47e7 }, /* 0x47e8 */ { false, 0x47e8, 0x47e8 }, /* 0x47e9 */ { false, 0x47e9, 0x47e9 }, /* 0x47ea */ { false, 0x47ea, 0x47ea }, /* 0x47eb */ { false, 0x47eb, 0x47eb }, /* 0x47ec */ { false, 0x47ec, 0x47ec }, /* 0x47ed */ { false, 0x47ed, 0x47ed }, /* 0x47ee */ { false, 0x47ee, 0x47ee }, /* 0x47ef */ { false, 0x47ef, 0x47ef }, /* 0x47f0 */ { false, 0x47f0, 0x47f0 }, /* 0x47f1 */ { false, 0x47f1, 0x47f1 }, /* 0x47f2 */ { false, 0x47f2, 0x47f2 }, /* 0x47f3 */ { false, 0x47f3, 0x47f3 }, /* 0x47f4 */ { false, 0x47f4, 0x47f4 }, /* 0x47f5 */ { false, 0x47f5, 0x47f5 }, /* 0x47f6 */ { false, 0x47f6, 0x47f6 }, /* 0x47f7 */ { false, 0x47f7, 0x47f7 }, /* 0x47f8 */ { false, 0x47f8, 0x47f8 }, /* 0x47f9 */ { false, 0x47f9, 0x47f9 }, /* 0x47fa */ { false, 0x47fa, 0x47fa }, /* 0x47fb */ { false, 0x47fb, 0x47fb }, /* 0x47fc */ { false, 0x47fc, 0x47fc }, /* 0x47fd */ { false, 0x47fd, 0x47fd }, /* 0x47fe */ { false, 0x47fe, 0x47fe }, /* 0x47ff */ { false, 0x47ff, 0x47ff }, /* 0x4800 */ { false, 0x4800, 0x4800 }, /* 0x4801 */ { false, 0x4801, 0x4801 }, /* 0x4802 */ { false, 0x4802, 0x4802 }, /* 0x4803 */ { false, 0x4803, 0x4803 }, /* 0x4804 */ { false, 0x4804, 0x4804 }, /* 0x4805 */ { false, 0x4805, 0x4805 }, /* 0x4806 */ { false, 0x4806, 0x4806 }, /* 0x4807 */ { false, 0x4807, 0x4807 }, /* 0x4808 */ { false, 0x4808, 0x4808 }, /* 0x4809 */ { false, 0x4809, 0x4809 }, /* 0x480a */ { false, 0x480a, 0x480a }, /* 0x480b */ { false, 0x480b, 0x480b }, /* 0x480c */ { false, 0x480c, 0x480c }, /* 0x480d */ { false, 0x480d, 0x480d }, /* 0x480e */ { false, 0x480e, 0x480e }, /* 0x480f */ { false, 0x480f, 0x480f }, /* 0x4810 */ { false, 0x4810, 0x4810 }, /* 0x4811 */ { false, 0x4811, 0x4811 }, /* 0x4812 */ { false, 0x4812, 0x4812 }, /* 0x4813 */ { false, 0x4813, 0x4813 }, /* 0x4814 */ { false, 0x4814, 0x4814 }, /* 0x4815 */ { false, 0x4815, 0x4815 }, /* 0x4816 */ { false, 0x4816, 0x4816 }, /* 0x4817 */ { false, 0x4817, 0x4817 }, /* 0x4818 */ { false, 0x4818, 0x4818 }, /* 0x4819 */ { false, 0x4819, 0x4819 }, /* 0x481a */ { false, 0x481a, 0x481a }, /* 0x481b */ { false, 0x481b, 0x481b }, /* 0x481c */ { false, 0x481c, 0x481c }, /* 0x481d */ { false, 0x481d, 0x481d }, /* 0x481e */ { false, 0x481e, 0x481e }, /* 0x481f */ { false, 0x481f, 0x481f }, /* 0x4820 */ { false, 0x4820, 0x4820 }, /* 0x4821 */ { false, 0x4821, 0x4821 }, /* 0x4822 */ { false, 0x4822, 0x4822 }, /* 0x4823 */ { false, 0x4823, 0x4823 }, /* 0x4824 */ { false, 0x4824, 0x4824 }, /* 0x4825 */ { false, 0x4825, 0x4825 }, /* 0x4826 */ { false, 0x4826, 0x4826 }, /* 0x4827 */ { false, 0x4827, 0x4827 }, /* 0x4828 */ { false, 0x4828, 0x4828 }, /* 0x4829 */ { false, 0x4829, 0x4829 }, /* 0x482a */ { false, 0x482a, 0x482a }, /* 0x482b */ { false, 0x482b, 0x482b }, /* 0x482c */ { false, 0x482c, 0x482c }, /* 0x482d */ { false, 0x482d, 0x482d }, /* 0x482e */ { false, 0x482e, 0x482e }, /* 0x482f */ { false, 0x482f, 0x482f }, /* 0x4830 */ { false, 0x4830, 0x4830 }, /* 0x4831 */ { false, 0x4831, 0x4831 }, /* 0x4832 */ { false, 0x4832, 0x4832 }, /* 0x4833 */ { false, 0x4833, 0x4833 }, /* 0x4834 */ { false, 0x4834, 0x4834 }, /* 0x4835 */ { false, 0x4835, 0x4835 }, /* 0x4836 */ { false, 0x4836, 0x4836 }, /* 0x4837 */ { false, 0x4837, 0x4837 }, /* 0x4838 */ { false, 0x4838, 0x4838 }, /* 0x4839 */ { false, 0x4839, 0x4839 }, /* 0x483a */ { false, 0x483a, 0x483a }, /* 0x483b */ { false, 0x483b, 0x483b }, /* 0x483c */ { false, 0x483c, 0x483c }, /* 0x483d */ { false, 0x483d, 0x483d }, /* 0x483e */ { false, 0x483e, 0x483e }, /* 0x483f */ { false, 0x483f, 0x483f }, /* 0x4840 */ { false, 0x4840, 0x4840 }, /* 0x4841 */ { false, 0x4841, 0x4841 }, /* 0x4842 */ { false, 0x4842, 0x4842 }, /* 0x4843 */ { false, 0x4843, 0x4843 }, /* 0x4844 */ { false, 0x4844, 0x4844 }, /* 0x4845 */ { false, 0x4845, 0x4845 }, /* 0x4846 */ { false, 0x4846, 0x4846 }, /* 0x4847 */ { false, 0x4847, 0x4847 }, /* 0x4848 */ { false, 0x4848, 0x4848 }, /* 0x4849 */ { false, 0x4849, 0x4849 }, /* 0x484a */ { false, 0x484a, 0x484a }, /* 0x484b */ { false, 0x484b, 0x484b }, /* 0x484c */ { false, 0x484c, 0x484c }, /* 0x484d */ { false, 0x484d, 0x484d }, /* 0x484e */ { false, 0x484e, 0x484e }, /* 0x484f */ { false, 0x484f, 0x484f }, /* 0x4850 */ { false, 0x4850, 0x4850 }, /* 0x4851 */ { false, 0x4851, 0x4851 }, /* 0x4852 */ { false, 0x4852, 0x4852 }, /* 0x4853 */ { false, 0x4853, 0x4853 }, /* 0x4854 */ { false, 0x4854, 0x4854 }, /* 0x4855 */ { false, 0x4855, 0x4855 }, /* 0x4856 */ { false, 0x4856, 0x4856 }, /* 0x4857 */ { false, 0x4857, 0x4857 }, /* 0x4858 */ { false, 0x4858, 0x4858 }, /* 0x4859 */ { false, 0x4859, 0x4859 }, /* 0x485a */ { false, 0x485a, 0x485a }, /* 0x485b */ { false, 0x485b, 0x485b }, /* 0x485c */ { false, 0x485c, 0x485c }, /* 0x485d */ { false, 0x485d, 0x485d }, /* 0x485e */ { false, 0x485e, 0x485e }, /* 0x485f */ { false, 0x485f, 0x485f }, /* 0x4860 */ { false, 0x4860, 0x4860 }, /* 0x4861 */ { false, 0x4861, 0x4861 }, /* 0x4862 */ { false, 0x4862, 0x4862 }, /* 0x4863 */ { false, 0x4863, 0x4863 }, /* 0x4864 */ { false, 0x4864, 0x4864 }, /* 0x4865 */ { false, 0x4865, 0x4865 }, /* 0x4866 */ { false, 0x4866, 0x4866 }, /* 0x4867 */ { false, 0x4867, 0x4867 }, /* 0x4868 */ { false, 0x4868, 0x4868 }, /* 0x4869 */ { false, 0x4869, 0x4869 }, /* 0x486a */ { false, 0x486a, 0x486a }, /* 0x486b */ { false, 0x486b, 0x486b }, /* 0x486c */ { false, 0x486c, 0x486c }, /* 0x486d */ { false, 0x486d, 0x486d }, /* 0x486e */ { false, 0x486e, 0x486e }, /* 0x486f */ { false, 0x486f, 0x486f }, /* 0x4870 */ { false, 0x4870, 0x4870 }, /* 0x4871 */ { false, 0x4871, 0x4871 }, /* 0x4872 */ { false, 0x4872, 0x4872 }, /* 0x4873 */ { false, 0x4873, 0x4873 }, /* 0x4874 */ { false, 0x4874, 0x4874 }, /* 0x4875 */ { false, 0x4875, 0x4875 }, /* 0x4876 */ { false, 0x4876, 0x4876 }, /* 0x4877 */ { false, 0x4877, 0x4877 }, /* 0x4878 */ { false, 0x4878, 0x4878 }, /* 0x4879 */ { false, 0x4879, 0x4879 }, /* 0x487a */ { false, 0x487a, 0x487a }, /* 0x487b */ { false, 0x487b, 0x487b }, /* 0x487c */ { false, 0x487c, 0x487c }, /* 0x487d */ { false, 0x487d, 0x487d }, /* 0x487e */ { false, 0x487e, 0x487e }, /* 0x487f */ { false, 0x487f, 0x487f }, /* 0x4880 */ { false, 0x4880, 0x4880 }, /* 0x4881 */ { false, 0x4881, 0x4881 }, /* 0x4882 */ { false, 0x4882, 0x4882 }, /* 0x4883 */ { false, 0x4883, 0x4883 }, /* 0x4884 */ { false, 0x4884, 0x4884 }, /* 0x4885 */ { false, 0x4885, 0x4885 }, /* 0x4886 */ { false, 0x4886, 0x4886 }, /* 0x4887 */ { false, 0x4887, 0x4887 }, /* 0x4888 */ { false, 0x4888, 0x4888 }, /* 0x4889 */ { false, 0x4889, 0x4889 }, /* 0x488a */ { false, 0x488a, 0x488a }, /* 0x488b */ { false, 0x488b, 0x488b }, /* 0x488c */ { false, 0x488c, 0x488c }, /* 0x488d */ { false, 0x488d, 0x488d }, /* 0x488e */ { false, 0x488e, 0x488e }, /* 0x488f */ { false, 0x488f, 0x488f }, /* 0x4890 */ { false, 0x4890, 0x4890 }, /* 0x4891 */ { false, 0x4891, 0x4891 }, /* 0x4892 */ { false, 0x4892, 0x4892 }, /* 0x4893 */ { false, 0x4893, 0x4893 }, /* 0x4894 */ { false, 0x4894, 0x4894 }, /* 0x4895 */ { false, 0x4895, 0x4895 }, /* 0x4896 */ { false, 0x4896, 0x4896 }, /* 0x4897 */ { false, 0x4897, 0x4897 }, /* 0x4898 */ { false, 0x4898, 0x4898 }, /* 0x4899 */ { false, 0x4899, 0x4899 }, /* 0x489a */ { false, 0x489a, 0x489a }, /* 0x489b */ { false, 0x489b, 0x489b }, /* 0x489c */ { false, 0x489c, 0x489c }, /* 0x489d */ { false, 0x489d, 0x489d }, /* 0x489e */ { false, 0x489e, 0x489e }, /* 0x489f */ { false, 0x489f, 0x489f }, /* 0x48a0 */ { false, 0x48a0, 0x48a0 }, /* 0x48a1 */ { false, 0x48a1, 0x48a1 }, /* 0x48a2 */ { false, 0x48a2, 0x48a2 }, /* 0x48a3 */ { false, 0x48a3, 0x48a3 }, /* 0x48a4 */ { false, 0x48a4, 0x48a4 }, /* 0x48a5 */ { false, 0x48a5, 0x48a5 }, /* 0x48a6 */ { false, 0x48a6, 0x48a6 }, /* 0x48a7 */ { false, 0x48a7, 0x48a7 }, /* 0x48a8 */ { false, 0x48a8, 0x48a8 }, /* 0x48a9 */ { false, 0x48a9, 0x48a9 }, /* 0x48aa */ { false, 0x48aa, 0x48aa }, /* 0x48ab */ { false, 0x48ab, 0x48ab }, /* 0x48ac */ { false, 0x48ac, 0x48ac }, /* 0x48ad */ { false, 0x48ad, 0x48ad }, /* 0x48ae */ { false, 0x48ae, 0x48ae }, /* 0x48af */ { false, 0x48af, 0x48af }, /* 0x48b0 */ { false, 0x48b0, 0x48b0 }, /* 0x48b1 */ { false, 0x48b1, 0x48b1 }, /* 0x48b2 */ { false, 0x48b2, 0x48b2 }, /* 0x48b3 */ { false, 0x48b3, 0x48b3 }, /* 0x48b4 */ { false, 0x48b4, 0x48b4 }, /* 0x48b5 */ { false, 0x48b5, 0x48b5 }, /* 0x48b6 */ { false, 0x48b6, 0x48b6 }, /* 0x48b7 */ { false, 0x48b7, 0x48b7 }, /* 0x48b8 */ { false, 0x48b8, 0x48b8 }, /* 0x48b9 */ { false, 0x48b9, 0x48b9 }, /* 0x48ba */ { false, 0x48ba, 0x48ba }, /* 0x48bb */ { false, 0x48bb, 0x48bb }, /* 0x48bc */ { false, 0x48bc, 0x48bc }, /* 0x48bd */ { false, 0x48bd, 0x48bd }, /* 0x48be */ { false, 0x48be, 0x48be }, /* 0x48bf */ { false, 0x48bf, 0x48bf }, /* 0x48c0 */ { false, 0x48c0, 0x48c0 }, /* 0x48c1 */ { false, 0x48c1, 0x48c1 }, /* 0x48c2 */ { false, 0x48c2, 0x48c2 }, /* 0x48c3 */ { false, 0x48c3, 0x48c3 }, /* 0x48c4 */ { false, 0x48c4, 0x48c4 }, /* 0x48c5 */ { false, 0x48c5, 0x48c5 }, /* 0x48c6 */ { false, 0x48c6, 0x48c6 }, /* 0x48c7 */ { false, 0x48c7, 0x48c7 }, /* 0x48c8 */ { false, 0x48c8, 0x48c8 }, /* 0x48c9 */ { false, 0x48c9, 0x48c9 }, /* 0x48ca */ { false, 0x48ca, 0x48ca }, /* 0x48cb */ { false, 0x48cb, 0x48cb }, /* 0x48cc */ { false, 0x48cc, 0x48cc }, /* 0x48cd */ { false, 0x48cd, 0x48cd }, /* 0x48ce */ { false, 0x48ce, 0x48ce }, /* 0x48cf */ { false, 0x48cf, 0x48cf }, /* 0x48d0 */ { false, 0x48d0, 0x48d0 }, /* 0x48d1 */ { false, 0x48d1, 0x48d1 }, /* 0x48d2 */ { false, 0x48d2, 0x48d2 }, /* 0x48d3 */ { false, 0x48d3, 0x48d3 }, /* 0x48d4 */ { false, 0x48d4, 0x48d4 }, /* 0x48d5 */ { false, 0x48d5, 0x48d5 }, /* 0x48d6 */ { false, 0x48d6, 0x48d6 }, /* 0x48d7 */ { false, 0x48d7, 0x48d7 }, /* 0x48d8 */ { false, 0x48d8, 0x48d8 }, /* 0x48d9 */ { false, 0x48d9, 0x48d9 }, /* 0x48da */ { false, 0x48da, 0x48da }, /* 0x48db */ { false, 0x48db, 0x48db }, /* 0x48dc */ { false, 0x48dc, 0x48dc }, /* 0x48dd */ { false, 0x48dd, 0x48dd }, /* 0x48de */ { false, 0x48de, 0x48de }, /* 0x48df */ { false, 0x48df, 0x48df }, /* 0x48e0 */ { false, 0x48e0, 0x48e0 }, /* 0x48e1 */ { false, 0x48e1, 0x48e1 }, /* 0x48e2 */ { false, 0x48e2, 0x48e2 }, /* 0x48e3 */ { false, 0x48e3, 0x48e3 }, /* 0x48e4 */ { false, 0x48e4, 0x48e4 }, /* 0x48e5 */ { false, 0x48e5, 0x48e5 }, /* 0x48e6 */ { false, 0x48e6, 0x48e6 }, /* 0x48e7 */ { false, 0x48e7, 0x48e7 }, /* 0x48e8 */ { false, 0x48e8, 0x48e8 }, /* 0x48e9 */ { false, 0x48e9, 0x48e9 }, /* 0x48ea */ { false, 0x48ea, 0x48ea }, /* 0x48eb */ { false, 0x48eb, 0x48eb }, /* 0x48ec */ { false, 0x48ec, 0x48ec }, /* 0x48ed */ { false, 0x48ed, 0x48ed }, /* 0x48ee */ { false, 0x48ee, 0x48ee }, /* 0x48ef */ { false, 0x48ef, 0x48ef }, /* 0x48f0 */ { false, 0x48f0, 0x48f0 }, /* 0x48f1 */ { false, 0x48f1, 0x48f1 }, /* 0x48f2 */ { false, 0x48f2, 0x48f2 }, /* 0x48f3 */ { false, 0x48f3, 0x48f3 }, /* 0x48f4 */ { false, 0x48f4, 0x48f4 }, /* 0x48f5 */ { false, 0x48f5, 0x48f5 }, /* 0x48f6 */ { false, 0x48f6, 0x48f6 }, /* 0x48f7 */ { false, 0x48f7, 0x48f7 }, /* 0x48f8 */ { false, 0x48f8, 0x48f8 }, /* 0x48f9 */ { false, 0x48f9, 0x48f9 }, /* 0x48fa */ { false, 0x48fa, 0x48fa }, /* 0x48fb */ { false, 0x48fb, 0x48fb }, /* 0x48fc */ { false, 0x48fc, 0x48fc }, /* 0x48fd */ { false, 0x48fd, 0x48fd }, /* 0x48fe */ { false, 0x48fe, 0x48fe }, /* 0x48ff */ { false, 0x48ff, 0x48ff }, /* 0x4900 */ { false, 0x4900, 0x4900 }, /* 0x4901 */ { false, 0x4901, 0x4901 }, /* 0x4902 */ { false, 0x4902, 0x4902 }, /* 0x4903 */ { false, 0x4903, 0x4903 }, /* 0x4904 */ { false, 0x4904, 0x4904 }, /* 0x4905 */ { false, 0x4905, 0x4905 }, /* 0x4906 */ { false, 0x4906, 0x4906 }, /* 0x4907 */ { false, 0x4907, 0x4907 }, /* 0x4908 */ { false, 0x4908, 0x4908 }, /* 0x4909 */ { false, 0x4909, 0x4909 }, /* 0x490a */ { false, 0x490a, 0x490a }, /* 0x490b */ { false, 0x490b, 0x490b }, /* 0x490c */ { false, 0x490c, 0x490c }, /* 0x490d */ { false, 0x490d, 0x490d }, /* 0x490e */ { false, 0x490e, 0x490e }, /* 0x490f */ { false, 0x490f, 0x490f }, /* 0x4910 */ { false, 0x4910, 0x4910 }, /* 0x4911 */ { false, 0x4911, 0x4911 }, /* 0x4912 */ { false, 0x4912, 0x4912 }, /* 0x4913 */ { false, 0x4913, 0x4913 }, /* 0x4914 */ { false, 0x4914, 0x4914 }, /* 0x4915 */ { false, 0x4915, 0x4915 }, /* 0x4916 */ { false, 0x4916, 0x4916 }, /* 0x4917 */ { false, 0x4917, 0x4917 }, /* 0x4918 */ { false, 0x4918, 0x4918 }, /* 0x4919 */ { false, 0x4919, 0x4919 }, /* 0x491a */ { false, 0x491a, 0x491a }, /* 0x491b */ { false, 0x491b, 0x491b }, /* 0x491c */ { false, 0x491c, 0x491c }, /* 0x491d */ { false, 0x491d, 0x491d }, /* 0x491e */ { false, 0x491e, 0x491e }, /* 0x491f */ { false, 0x491f, 0x491f }, /* 0x4920 */ { false, 0x4920, 0x4920 }, /* 0x4921 */ { false, 0x4921, 0x4921 }, /* 0x4922 */ { false, 0x4922, 0x4922 }, /* 0x4923 */ { false, 0x4923, 0x4923 }, /* 0x4924 */ { false, 0x4924, 0x4924 }, /* 0x4925 */ { false, 0x4925, 0x4925 }, /* 0x4926 */ { false, 0x4926, 0x4926 }, /* 0x4927 */ { false, 0x4927, 0x4927 }, /* 0x4928 */ { false, 0x4928, 0x4928 }, /* 0x4929 */ { false, 0x4929, 0x4929 }, /* 0x492a */ { false, 0x492a, 0x492a }, /* 0x492b */ { false, 0x492b, 0x492b }, /* 0x492c */ { false, 0x492c, 0x492c }, /* 0x492d */ { false, 0x492d, 0x492d }, /* 0x492e */ { false, 0x492e, 0x492e }, /* 0x492f */ { false, 0x492f, 0x492f }, /* 0x4930 */ { false, 0x4930, 0x4930 }, /* 0x4931 */ { false, 0x4931, 0x4931 }, /* 0x4932 */ { false, 0x4932, 0x4932 }, /* 0x4933 */ { false, 0x4933, 0x4933 }, /* 0x4934 */ { false, 0x4934, 0x4934 }, /* 0x4935 */ { false, 0x4935, 0x4935 }, /* 0x4936 */ { false, 0x4936, 0x4936 }, /* 0x4937 */ { false, 0x4937, 0x4937 }, /* 0x4938 */ { false, 0x4938, 0x4938 }, /* 0x4939 */ { false, 0x4939, 0x4939 }, /* 0x493a */ { false, 0x493a, 0x493a }, /* 0x493b */ { false, 0x493b, 0x493b }, /* 0x493c */ { false, 0x493c, 0x493c }, /* 0x493d */ { false, 0x493d, 0x493d }, /* 0x493e */ { false, 0x493e, 0x493e }, /* 0x493f */ { false, 0x493f, 0x493f }, /* 0x4940 */ { false, 0x4940, 0x4940 }, /* 0x4941 */ { false, 0x4941, 0x4941 }, /* 0x4942 */ { false, 0x4942, 0x4942 }, /* 0x4943 */ { false, 0x4943, 0x4943 }, /* 0x4944 */ { false, 0x4944, 0x4944 }, /* 0x4945 */ { false, 0x4945, 0x4945 }, /* 0x4946 */ { false, 0x4946, 0x4946 }, /* 0x4947 */ { false, 0x4947, 0x4947 }, /* 0x4948 */ { false, 0x4948, 0x4948 }, /* 0x4949 */ { false, 0x4949, 0x4949 }, /* 0x494a */ { false, 0x494a, 0x494a }, /* 0x494b */ { false, 0x494b, 0x494b }, /* 0x494c */ { false, 0x494c, 0x494c }, /* 0x494d */ { false, 0x494d, 0x494d }, /* 0x494e */ { false, 0x494e, 0x494e }, /* 0x494f */ { false, 0x494f, 0x494f }, /* 0x4950 */ { false, 0x4950, 0x4950 }, /* 0x4951 */ { false, 0x4951, 0x4951 }, /* 0x4952 */ { false, 0x4952, 0x4952 }, /* 0x4953 */ { false, 0x4953, 0x4953 }, /* 0x4954 */ { false, 0x4954, 0x4954 }, /* 0x4955 */ { false, 0x4955, 0x4955 }, /* 0x4956 */ { false, 0x4956, 0x4956 }, /* 0x4957 */ { false, 0x4957, 0x4957 }, /* 0x4958 */ { false, 0x4958, 0x4958 }, /* 0x4959 */ { false, 0x4959, 0x4959 }, /* 0x495a */ { false, 0x495a, 0x495a }, /* 0x495b */ { false, 0x495b, 0x495b }, /* 0x495c */ { false, 0x495c, 0x495c }, /* 0x495d */ { false, 0x495d, 0x495d }, /* 0x495e */ { false, 0x495e, 0x495e }, /* 0x495f */ { false, 0x495f, 0x495f }, /* 0x4960 */ { false, 0x4960, 0x4960 }, /* 0x4961 */ { false, 0x4961, 0x4961 }, /* 0x4962 */ { false, 0x4962, 0x4962 }, /* 0x4963 */ { false, 0x4963, 0x4963 }, /* 0x4964 */ { false, 0x4964, 0x4964 }, /* 0x4965 */ { false, 0x4965, 0x4965 }, /* 0x4966 */ { false, 0x4966, 0x4966 }, /* 0x4967 */ { false, 0x4967, 0x4967 }, /* 0x4968 */ { false, 0x4968, 0x4968 }, /* 0x4969 */ { false, 0x4969, 0x4969 }, /* 0x496a */ { false, 0x496a, 0x496a }, /* 0x496b */ { false, 0x496b, 0x496b }, /* 0x496c */ { false, 0x496c, 0x496c }, /* 0x496d */ { false, 0x496d, 0x496d }, /* 0x496e */ { false, 0x496e, 0x496e }, /* 0x496f */ { false, 0x496f, 0x496f }, /* 0x4970 */ { false, 0x4970, 0x4970 }, /* 0x4971 */ { false, 0x4971, 0x4971 }, /* 0x4972 */ { false, 0x4972, 0x4972 }, /* 0x4973 */ { false, 0x4973, 0x4973 }, /* 0x4974 */ { false, 0x4974, 0x4974 }, /* 0x4975 */ { false, 0x4975, 0x4975 }, /* 0x4976 */ { false, 0x4976, 0x4976 }, /* 0x4977 */ { false, 0x4977, 0x4977 }, /* 0x4978 */ { false, 0x4978, 0x4978 }, /* 0x4979 */ { false, 0x4979, 0x4979 }, /* 0x497a */ { false, 0x497a, 0x497a }, /* 0x497b */ { false, 0x497b, 0x497b }, /* 0x497c */ { false, 0x497c, 0x497c }, /* 0x497d */ { false, 0x497d, 0x497d }, /* 0x497e */ { false, 0x497e, 0x497e }, /* 0x497f */ { false, 0x497f, 0x497f }, /* 0x4980 */ { false, 0x4980, 0x4980 }, /* 0x4981 */ { false, 0x4981, 0x4981 }, /* 0x4982 */ { false, 0x4982, 0x4982 }, /* 0x4983 */ { false, 0x4983, 0x4983 }, /* 0x4984 */ { false, 0x4984, 0x4984 }, /* 0x4985 */ { false, 0x4985, 0x4985 }, /* 0x4986 */ { false, 0x4986, 0x4986 }, /* 0x4987 */ { false, 0x4987, 0x4987 }, /* 0x4988 */ { false, 0x4988, 0x4988 }, /* 0x4989 */ { false, 0x4989, 0x4989 }, /* 0x498a */ { false, 0x498a, 0x498a }, /* 0x498b */ { false, 0x498b, 0x498b }, /* 0x498c */ { false, 0x498c, 0x498c }, /* 0x498d */ { false, 0x498d, 0x498d }, /* 0x498e */ { false, 0x498e, 0x498e }, /* 0x498f */ { false, 0x498f, 0x498f }, /* 0x4990 */ { false, 0x4990, 0x4990 }, /* 0x4991 */ { false, 0x4991, 0x4991 }, /* 0x4992 */ { false, 0x4992, 0x4992 }, /* 0x4993 */ { false, 0x4993, 0x4993 }, /* 0x4994 */ { false, 0x4994, 0x4994 }, /* 0x4995 */ { false, 0x4995, 0x4995 }, /* 0x4996 */ { false, 0x4996, 0x4996 }, /* 0x4997 */ { false, 0x4997, 0x4997 }, /* 0x4998 */ { false, 0x4998, 0x4998 }, /* 0x4999 */ { false, 0x4999, 0x4999 }, /* 0x499a */ { false, 0x499a, 0x499a }, /* 0x499b */ { false, 0x499b, 0x499b }, /* 0x499c */ { false, 0x499c, 0x499c }, /* 0x499d */ { false, 0x499d, 0x499d }, /* 0x499e */ { false, 0x499e, 0x499e }, /* 0x499f */ { false, 0x499f, 0x499f }, /* 0x49a0 */ { false, 0x49a0, 0x49a0 }, /* 0x49a1 */ { false, 0x49a1, 0x49a1 }, /* 0x49a2 */ { false, 0x49a2, 0x49a2 }, /* 0x49a3 */ { false, 0x49a3, 0x49a3 }, /* 0x49a4 */ { false, 0x49a4, 0x49a4 }, /* 0x49a5 */ { false, 0x49a5, 0x49a5 }, /* 0x49a6 */ { false, 0x49a6, 0x49a6 }, /* 0x49a7 */ { false, 0x49a7, 0x49a7 }, /* 0x49a8 */ { false, 0x49a8, 0x49a8 }, /* 0x49a9 */ { false, 0x49a9, 0x49a9 }, /* 0x49aa */ { false, 0x49aa, 0x49aa }, /* 0x49ab */ { false, 0x49ab, 0x49ab }, /* 0x49ac */ { false, 0x49ac, 0x49ac }, /* 0x49ad */ { false, 0x49ad, 0x49ad }, /* 0x49ae */ { false, 0x49ae, 0x49ae }, /* 0x49af */ { false, 0x49af, 0x49af }, /* 0x49b0 */ { false, 0x49b0, 0x49b0 }, /* 0x49b1 */ { false, 0x49b1, 0x49b1 }, /* 0x49b2 */ { false, 0x49b2, 0x49b2 }, /* 0x49b3 */ { false, 0x49b3, 0x49b3 }, /* 0x49b4 */ { false, 0x49b4, 0x49b4 }, /* 0x49b5 */ { false, 0x49b5, 0x49b5 }, /* 0x49b6 */ { false, 0x49b6, 0x49b6 }, /* 0x49b7 */ { false, 0x49b7, 0x49b7 }, /* 0x49b8 */ { false, 0x49b8, 0x49b8 }, /* 0x49b9 */ { false, 0x49b9, 0x49b9 }, /* 0x49ba */ { false, 0x49ba, 0x49ba }, /* 0x49bb */ { false, 0x49bb, 0x49bb }, /* 0x49bc */ { false, 0x49bc, 0x49bc }, /* 0x49bd */ { false, 0x49bd, 0x49bd }, /* 0x49be */ { false, 0x49be, 0x49be }, /* 0x49bf */ { false, 0x49bf, 0x49bf }, /* 0x49c0 */ { false, 0x49c0, 0x49c0 }, /* 0x49c1 */ { false, 0x49c1, 0x49c1 }, /* 0x49c2 */ { false, 0x49c2, 0x49c2 }, /* 0x49c3 */ { false, 0x49c3, 0x49c3 }, /* 0x49c4 */ { false, 0x49c4, 0x49c4 }, /* 0x49c5 */ { false, 0x49c5, 0x49c5 }, /* 0x49c6 */ { false, 0x49c6, 0x49c6 }, /* 0x49c7 */ { false, 0x49c7, 0x49c7 }, /* 0x49c8 */ { false, 0x49c8, 0x49c8 }, /* 0x49c9 */ { false, 0x49c9, 0x49c9 }, /* 0x49ca */ { false, 0x49ca, 0x49ca }, /* 0x49cb */ { false, 0x49cb, 0x49cb }, /* 0x49cc */ { false, 0x49cc, 0x49cc }, /* 0x49cd */ { false, 0x49cd, 0x49cd }, /* 0x49ce */ { false, 0x49ce, 0x49ce }, /* 0x49cf */ { false, 0x49cf, 0x49cf }, /* 0x49d0 */ { false, 0x49d0, 0x49d0 }, /* 0x49d1 */ { false, 0x49d1, 0x49d1 }, /* 0x49d2 */ { false, 0x49d2, 0x49d2 }, /* 0x49d3 */ { false, 0x49d3, 0x49d3 }, /* 0x49d4 */ { false, 0x49d4, 0x49d4 }, /* 0x49d5 */ { false, 0x49d5, 0x49d5 }, /* 0x49d6 */ { false, 0x49d6, 0x49d6 }, /* 0x49d7 */ { false, 0x49d7, 0x49d7 }, /* 0x49d8 */ { false, 0x49d8, 0x49d8 }, /* 0x49d9 */ { false, 0x49d9, 0x49d9 }, /* 0x49da */ { false, 0x49da, 0x49da }, /* 0x49db */ { false, 0x49db, 0x49db }, /* 0x49dc */ { false, 0x49dc, 0x49dc }, /* 0x49dd */ { false, 0x49dd, 0x49dd }, /* 0x49de */ { false, 0x49de, 0x49de }, /* 0x49df */ { false, 0x49df, 0x49df }, /* 0x49e0 */ { false, 0x49e0, 0x49e0 }, /* 0x49e1 */ { false, 0x49e1, 0x49e1 }, /* 0x49e2 */ { false, 0x49e2, 0x49e2 }, /* 0x49e3 */ { false, 0x49e3, 0x49e3 }, /* 0x49e4 */ { false, 0x49e4, 0x49e4 }, /* 0x49e5 */ { false, 0x49e5, 0x49e5 }, /* 0x49e6 */ { false, 0x49e6, 0x49e6 }, /* 0x49e7 */ { false, 0x49e7, 0x49e7 }, /* 0x49e8 */ { false, 0x49e8, 0x49e8 }, /* 0x49e9 */ { false, 0x49e9, 0x49e9 }, /* 0x49ea */ { false, 0x49ea, 0x49ea }, /* 0x49eb */ { false, 0x49eb, 0x49eb }, /* 0x49ec */ { false, 0x49ec, 0x49ec }, /* 0x49ed */ { false, 0x49ed, 0x49ed }, /* 0x49ee */ { false, 0x49ee, 0x49ee }, /* 0x49ef */ { false, 0x49ef, 0x49ef }, /* 0x49f0 */ { false, 0x49f0, 0x49f0 }, /* 0x49f1 */ { false, 0x49f1, 0x49f1 }, /* 0x49f2 */ { false, 0x49f2, 0x49f2 }, /* 0x49f3 */ { false, 0x49f3, 0x49f3 }, /* 0x49f4 */ { false, 0x49f4, 0x49f4 }, /* 0x49f5 */ { false, 0x49f5, 0x49f5 }, /* 0x49f6 */ { false, 0x49f6, 0x49f6 }, /* 0x49f7 */ { false, 0x49f7, 0x49f7 }, /* 0x49f8 */ { false, 0x49f8, 0x49f8 }, /* 0x49f9 */ { false, 0x49f9, 0x49f9 }, /* 0x49fa */ { false, 0x49fa, 0x49fa }, /* 0x49fb */ { false, 0x49fb, 0x49fb }, /* 0x49fc */ { false, 0x49fc, 0x49fc }, /* 0x49fd */ { false, 0x49fd, 0x49fd }, /* 0x49fe */ { false, 0x49fe, 0x49fe }, /* 0x49ff */ { false, 0x49ff, 0x49ff }, /* 0x4a00 */ { false, 0x4a00, 0x4a00 }, /* 0x4a01 */ { false, 0x4a01, 0x4a01 }, /* 0x4a02 */ { false, 0x4a02, 0x4a02 }, /* 0x4a03 */ { false, 0x4a03, 0x4a03 }, /* 0x4a04 */ { false, 0x4a04, 0x4a04 }, /* 0x4a05 */ { false, 0x4a05, 0x4a05 }, /* 0x4a06 */ { false, 0x4a06, 0x4a06 }, /* 0x4a07 */ { false, 0x4a07, 0x4a07 }, /* 0x4a08 */ { false, 0x4a08, 0x4a08 }, /* 0x4a09 */ { false, 0x4a09, 0x4a09 }, /* 0x4a0a */ { false, 0x4a0a, 0x4a0a }, /* 0x4a0b */ { false, 0x4a0b, 0x4a0b }, /* 0x4a0c */ { false, 0x4a0c, 0x4a0c }, /* 0x4a0d */ { false, 0x4a0d, 0x4a0d }, /* 0x4a0e */ { false, 0x4a0e, 0x4a0e }, /* 0x4a0f */ { false, 0x4a0f, 0x4a0f }, /* 0x4a10 */ { false, 0x4a10, 0x4a10 }, /* 0x4a11 */ { false, 0x4a11, 0x4a11 }, /* 0x4a12 */ { false, 0x4a12, 0x4a12 }, /* 0x4a13 */ { false, 0x4a13, 0x4a13 }, /* 0x4a14 */ { false, 0x4a14, 0x4a14 }, /* 0x4a15 */ { false, 0x4a15, 0x4a15 }, /* 0x4a16 */ { false, 0x4a16, 0x4a16 }, /* 0x4a17 */ { false, 0x4a17, 0x4a17 }, /* 0x4a18 */ { false, 0x4a18, 0x4a18 }, /* 0x4a19 */ { false, 0x4a19, 0x4a19 }, /* 0x4a1a */ { false, 0x4a1a, 0x4a1a }, /* 0x4a1b */ { false, 0x4a1b, 0x4a1b }, /* 0x4a1c */ { false, 0x4a1c, 0x4a1c }, /* 0x4a1d */ { false, 0x4a1d, 0x4a1d }, /* 0x4a1e */ { false, 0x4a1e, 0x4a1e }, /* 0x4a1f */ { false, 0x4a1f, 0x4a1f }, /* 0x4a20 */ { false, 0x4a20, 0x4a20 }, /* 0x4a21 */ { false, 0x4a21, 0x4a21 }, /* 0x4a22 */ { false, 0x4a22, 0x4a22 }, /* 0x4a23 */ { false, 0x4a23, 0x4a23 }, /* 0x4a24 */ { false, 0x4a24, 0x4a24 }, /* 0x4a25 */ { false, 0x4a25, 0x4a25 }, /* 0x4a26 */ { false, 0x4a26, 0x4a26 }, /* 0x4a27 */ { false, 0x4a27, 0x4a27 }, /* 0x4a28 */ { false, 0x4a28, 0x4a28 }, /* 0x4a29 */ { false, 0x4a29, 0x4a29 }, /* 0x4a2a */ { false, 0x4a2a, 0x4a2a }, /* 0x4a2b */ { false, 0x4a2b, 0x4a2b }, /* 0x4a2c */ { false, 0x4a2c, 0x4a2c }, /* 0x4a2d */ { false, 0x4a2d, 0x4a2d }, /* 0x4a2e */ { false, 0x4a2e, 0x4a2e }, /* 0x4a2f */ { false, 0x4a2f, 0x4a2f }, /* 0x4a30 */ { false, 0x4a30, 0x4a30 }, /* 0x4a31 */ { false, 0x4a31, 0x4a31 }, /* 0x4a32 */ { false, 0x4a32, 0x4a32 }, /* 0x4a33 */ { false, 0x4a33, 0x4a33 }, /* 0x4a34 */ { false, 0x4a34, 0x4a34 }, /* 0x4a35 */ { false, 0x4a35, 0x4a35 }, /* 0x4a36 */ { false, 0x4a36, 0x4a36 }, /* 0x4a37 */ { false, 0x4a37, 0x4a37 }, /* 0x4a38 */ { false, 0x4a38, 0x4a38 }, /* 0x4a39 */ { false, 0x4a39, 0x4a39 }, /* 0x4a3a */ { false, 0x4a3a, 0x4a3a }, /* 0x4a3b */ { false, 0x4a3b, 0x4a3b }, /* 0x4a3c */ { false, 0x4a3c, 0x4a3c }, /* 0x4a3d */ { false, 0x4a3d, 0x4a3d }, /* 0x4a3e */ { false, 0x4a3e, 0x4a3e }, /* 0x4a3f */ { false, 0x4a3f, 0x4a3f }, /* 0x4a40 */ { false, 0x4a40, 0x4a40 }, /* 0x4a41 */ { false, 0x4a41, 0x4a41 }, /* 0x4a42 */ { false, 0x4a42, 0x4a42 }, /* 0x4a43 */ { false, 0x4a43, 0x4a43 }, /* 0x4a44 */ { false, 0x4a44, 0x4a44 }, /* 0x4a45 */ { false, 0x4a45, 0x4a45 }, /* 0x4a46 */ { false, 0x4a46, 0x4a46 }, /* 0x4a47 */ { false, 0x4a47, 0x4a47 }, /* 0x4a48 */ { false, 0x4a48, 0x4a48 }, /* 0x4a49 */ { false, 0x4a49, 0x4a49 }, /* 0x4a4a */ { false, 0x4a4a, 0x4a4a }, /* 0x4a4b */ { false, 0x4a4b, 0x4a4b }, /* 0x4a4c */ { false, 0x4a4c, 0x4a4c }, /* 0x4a4d */ { false, 0x4a4d, 0x4a4d }, /* 0x4a4e */ { false, 0x4a4e, 0x4a4e }, /* 0x4a4f */ { false, 0x4a4f, 0x4a4f }, /* 0x4a50 */ { false, 0x4a50, 0x4a50 }, /* 0x4a51 */ { false, 0x4a51, 0x4a51 }, /* 0x4a52 */ { false, 0x4a52, 0x4a52 }, /* 0x4a53 */ { false, 0x4a53, 0x4a53 }, /* 0x4a54 */ { false, 0x4a54, 0x4a54 }, /* 0x4a55 */ { false, 0x4a55, 0x4a55 }, /* 0x4a56 */ { false, 0x4a56, 0x4a56 }, /* 0x4a57 */ { false, 0x4a57, 0x4a57 }, /* 0x4a58 */ { false, 0x4a58, 0x4a58 }, /* 0x4a59 */ { false, 0x4a59, 0x4a59 }, /* 0x4a5a */ { false, 0x4a5a, 0x4a5a }, /* 0x4a5b */ { false, 0x4a5b, 0x4a5b }, /* 0x4a5c */ { false, 0x4a5c, 0x4a5c }, /* 0x4a5d */ { false, 0x4a5d, 0x4a5d }, /* 0x4a5e */ { false, 0x4a5e, 0x4a5e }, /* 0x4a5f */ { false, 0x4a5f, 0x4a5f }, /* 0x4a60 */ { false, 0x4a60, 0x4a60 }, /* 0x4a61 */ { false, 0x4a61, 0x4a61 }, /* 0x4a62 */ { false, 0x4a62, 0x4a62 }, /* 0x4a63 */ { false, 0x4a63, 0x4a63 }, /* 0x4a64 */ { false, 0x4a64, 0x4a64 }, /* 0x4a65 */ { false, 0x4a65, 0x4a65 }, /* 0x4a66 */ { false, 0x4a66, 0x4a66 }, /* 0x4a67 */ { false, 0x4a67, 0x4a67 }, /* 0x4a68 */ { false, 0x4a68, 0x4a68 }, /* 0x4a69 */ { false, 0x4a69, 0x4a69 }, /* 0x4a6a */ { false, 0x4a6a, 0x4a6a }, /* 0x4a6b */ { false, 0x4a6b, 0x4a6b }, /* 0x4a6c */ { false, 0x4a6c, 0x4a6c }, /* 0x4a6d */ { false, 0x4a6d, 0x4a6d }, /* 0x4a6e */ { false, 0x4a6e, 0x4a6e }, /* 0x4a6f */ { false, 0x4a6f, 0x4a6f }, /* 0x4a70 */ { false, 0x4a70, 0x4a70 }, /* 0x4a71 */ { false, 0x4a71, 0x4a71 }, /* 0x4a72 */ { false, 0x4a72, 0x4a72 }, /* 0x4a73 */ { false, 0x4a73, 0x4a73 }, /* 0x4a74 */ { false, 0x4a74, 0x4a74 }, /* 0x4a75 */ { false, 0x4a75, 0x4a75 }, /* 0x4a76 */ { false, 0x4a76, 0x4a76 }, /* 0x4a77 */ { false, 0x4a77, 0x4a77 }, /* 0x4a78 */ { false, 0x4a78, 0x4a78 }, /* 0x4a79 */ { false, 0x4a79, 0x4a79 }, /* 0x4a7a */ { false, 0x4a7a, 0x4a7a }, /* 0x4a7b */ { false, 0x4a7b, 0x4a7b }, /* 0x4a7c */ { false, 0x4a7c, 0x4a7c }, /* 0x4a7d */ { false, 0x4a7d, 0x4a7d }, /* 0x4a7e */ { false, 0x4a7e, 0x4a7e }, /* 0x4a7f */ { false, 0x4a7f, 0x4a7f }, /* 0x4a80 */ { false, 0x4a80, 0x4a80 }, /* 0x4a81 */ { false, 0x4a81, 0x4a81 }, /* 0x4a82 */ { false, 0x4a82, 0x4a82 }, /* 0x4a83 */ { false, 0x4a83, 0x4a83 }, /* 0x4a84 */ { false, 0x4a84, 0x4a84 }, /* 0x4a85 */ { false, 0x4a85, 0x4a85 }, /* 0x4a86 */ { false, 0x4a86, 0x4a86 }, /* 0x4a87 */ { false, 0x4a87, 0x4a87 }, /* 0x4a88 */ { false, 0x4a88, 0x4a88 }, /* 0x4a89 */ { false, 0x4a89, 0x4a89 }, /* 0x4a8a */ { false, 0x4a8a, 0x4a8a }, /* 0x4a8b */ { false, 0x4a8b, 0x4a8b }, /* 0x4a8c */ { false, 0x4a8c, 0x4a8c }, /* 0x4a8d */ { false, 0x4a8d, 0x4a8d }, /* 0x4a8e */ { false, 0x4a8e, 0x4a8e }, /* 0x4a8f */ { false, 0x4a8f, 0x4a8f }, /* 0x4a90 */ { false, 0x4a90, 0x4a90 }, /* 0x4a91 */ { false, 0x4a91, 0x4a91 }, /* 0x4a92 */ { false, 0x4a92, 0x4a92 }, /* 0x4a93 */ { false, 0x4a93, 0x4a93 }, /* 0x4a94 */ { false, 0x4a94, 0x4a94 }, /* 0x4a95 */ { false, 0x4a95, 0x4a95 }, /* 0x4a96 */ { false, 0x4a96, 0x4a96 }, /* 0x4a97 */ { false, 0x4a97, 0x4a97 }, /* 0x4a98 */ { false, 0x4a98, 0x4a98 }, /* 0x4a99 */ { false, 0x4a99, 0x4a99 }, /* 0x4a9a */ { false, 0x4a9a, 0x4a9a }, /* 0x4a9b */ { false, 0x4a9b, 0x4a9b }, /* 0x4a9c */ { false, 0x4a9c, 0x4a9c }, /* 0x4a9d */ { false, 0x4a9d, 0x4a9d }, /* 0x4a9e */ { false, 0x4a9e, 0x4a9e }, /* 0x4a9f */ { false, 0x4a9f, 0x4a9f }, /* 0x4aa0 */ { false, 0x4aa0, 0x4aa0 }, /* 0x4aa1 */ { false, 0x4aa1, 0x4aa1 }, /* 0x4aa2 */ { false, 0x4aa2, 0x4aa2 }, /* 0x4aa3 */ { false, 0x4aa3, 0x4aa3 }, /* 0x4aa4 */ { false, 0x4aa4, 0x4aa4 }, /* 0x4aa5 */ { false, 0x4aa5, 0x4aa5 }, /* 0x4aa6 */ { false, 0x4aa6, 0x4aa6 }, /* 0x4aa7 */ { false, 0x4aa7, 0x4aa7 }, /* 0x4aa8 */ { false, 0x4aa8, 0x4aa8 }, /* 0x4aa9 */ { false, 0x4aa9, 0x4aa9 }, /* 0x4aaa */ { false, 0x4aaa, 0x4aaa }, /* 0x4aab */ { false, 0x4aab, 0x4aab }, /* 0x4aac */ { false, 0x4aac, 0x4aac }, /* 0x4aad */ { false, 0x4aad, 0x4aad }, /* 0x4aae */ { false, 0x4aae, 0x4aae }, /* 0x4aaf */ { false, 0x4aaf, 0x4aaf }, /* 0x4ab0 */ { false, 0x4ab0, 0x4ab0 }, /* 0x4ab1 */ { false, 0x4ab1, 0x4ab1 }, /* 0x4ab2 */ { false, 0x4ab2, 0x4ab2 }, /* 0x4ab3 */ { false, 0x4ab3, 0x4ab3 }, /* 0x4ab4 */ { false, 0x4ab4, 0x4ab4 }, /* 0x4ab5 */ { false, 0x4ab5, 0x4ab5 }, /* 0x4ab6 */ { false, 0x4ab6, 0x4ab6 }, /* 0x4ab7 */ { false, 0x4ab7, 0x4ab7 }, /* 0x4ab8 */ { false, 0x4ab8, 0x4ab8 }, /* 0x4ab9 */ { false, 0x4ab9, 0x4ab9 }, /* 0x4aba */ { false, 0x4aba, 0x4aba }, /* 0x4abb */ { false, 0x4abb, 0x4abb }, /* 0x4abc */ { false, 0x4abc, 0x4abc }, /* 0x4abd */ { false, 0x4abd, 0x4abd }, /* 0x4abe */ { false, 0x4abe, 0x4abe }, /* 0x4abf */ { false, 0x4abf, 0x4abf }, /* 0x4ac0 */ { false, 0x4ac0, 0x4ac0 }, /* 0x4ac1 */ { false, 0x4ac1, 0x4ac1 }, /* 0x4ac2 */ { false, 0x4ac2, 0x4ac2 }, /* 0x4ac3 */ { false, 0x4ac3, 0x4ac3 }, /* 0x4ac4 */ { false, 0x4ac4, 0x4ac4 }, /* 0x4ac5 */ { false, 0x4ac5, 0x4ac5 }, /* 0x4ac6 */ { false, 0x4ac6, 0x4ac6 }, /* 0x4ac7 */ { false, 0x4ac7, 0x4ac7 }, /* 0x4ac8 */ { false, 0x4ac8, 0x4ac8 }, /* 0x4ac9 */ { false, 0x4ac9, 0x4ac9 }, /* 0x4aca */ { false, 0x4aca, 0x4aca }, /* 0x4acb */ { false, 0x4acb, 0x4acb }, /* 0x4acc */ { false, 0x4acc, 0x4acc }, /* 0x4acd */ { false, 0x4acd, 0x4acd }, /* 0x4ace */ { false, 0x4ace, 0x4ace }, /* 0x4acf */ { false, 0x4acf, 0x4acf }, /* 0x4ad0 */ { false, 0x4ad0, 0x4ad0 }, /* 0x4ad1 */ { false, 0x4ad1, 0x4ad1 }, /* 0x4ad2 */ { false, 0x4ad2, 0x4ad2 }, /* 0x4ad3 */ { false, 0x4ad3, 0x4ad3 }, /* 0x4ad4 */ { false, 0x4ad4, 0x4ad4 }, /* 0x4ad5 */ { false, 0x4ad5, 0x4ad5 }, /* 0x4ad6 */ { false, 0x4ad6, 0x4ad6 }, /* 0x4ad7 */ { false, 0x4ad7, 0x4ad7 }, /* 0x4ad8 */ { false, 0x4ad8, 0x4ad8 }, /* 0x4ad9 */ { false, 0x4ad9, 0x4ad9 }, /* 0x4ada */ { false, 0x4ada, 0x4ada }, /* 0x4adb */ { false, 0x4adb, 0x4adb }, /* 0x4adc */ { false, 0x4adc, 0x4adc }, /* 0x4add */ { false, 0x4add, 0x4add }, /* 0x4ade */ { false, 0x4ade, 0x4ade }, /* 0x4adf */ { false, 0x4adf, 0x4adf }, /* 0x4ae0 */ { false, 0x4ae0, 0x4ae0 }, /* 0x4ae1 */ { false, 0x4ae1, 0x4ae1 }, /* 0x4ae2 */ { false, 0x4ae2, 0x4ae2 }, /* 0x4ae3 */ { false, 0x4ae3, 0x4ae3 }, /* 0x4ae4 */ { false, 0x4ae4, 0x4ae4 }, /* 0x4ae5 */ { false, 0x4ae5, 0x4ae5 }, /* 0x4ae6 */ { false, 0x4ae6, 0x4ae6 }, /* 0x4ae7 */ { false, 0x4ae7, 0x4ae7 }, /* 0x4ae8 */ { false, 0x4ae8, 0x4ae8 }, /* 0x4ae9 */ { false, 0x4ae9, 0x4ae9 }, /* 0x4aea */ { false, 0x4aea, 0x4aea }, /* 0x4aeb */ { false, 0x4aeb, 0x4aeb }, /* 0x4aec */ { false, 0x4aec, 0x4aec }, /* 0x4aed */ { false, 0x4aed, 0x4aed }, /* 0x4aee */ { false, 0x4aee, 0x4aee }, /* 0x4aef */ { false, 0x4aef, 0x4aef }, /* 0x4af0 */ { false, 0x4af0, 0x4af0 }, /* 0x4af1 */ { false, 0x4af1, 0x4af1 }, /* 0x4af2 */ { false, 0x4af2, 0x4af2 }, /* 0x4af3 */ { false, 0x4af3, 0x4af3 }, /* 0x4af4 */ { false, 0x4af4, 0x4af4 }, /* 0x4af5 */ { false, 0x4af5, 0x4af5 }, /* 0x4af6 */ { false, 0x4af6, 0x4af6 }, /* 0x4af7 */ { false, 0x4af7, 0x4af7 }, /* 0x4af8 */ { false, 0x4af8, 0x4af8 }, /* 0x4af9 */ { false, 0x4af9, 0x4af9 }, /* 0x4afa */ { false, 0x4afa, 0x4afa }, /* 0x4afb */ { false, 0x4afb, 0x4afb }, /* 0x4afc */ { false, 0x4afc, 0x4afc }, /* 0x4afd */ { false, 0x4afd, 0x4afd }, /* 0x4afe */ { false, 0x4afe, 0x4afe }, /* 0x4aff */ { false, 0x4aff, 0x4aff }, /* 0x4b00 */ { false, 0x4b00, 0x4b00 }, /* 0x4b01 */ { false, 0x4b01, 0x4b01 }, /* 0x4b02 */ { false, 0x4b02, 0x4b02 }, /* 0x4b03 */ { false, 0x4b03, 0x4b03 }, /* 0x4b04 */ { false, 0x4b04, 0x4b04 }, /* 0x4b05 */ { false, 0x4b05, 0x4b05 }, /* 0x4b06 */ { false, 0x4b06, 0x4b06 }, /* 0x4b07 */ { false, 0x4b07, 0x4b07 }, /* 0x4b08 */ { false, 0x4b08, 0x4b08 }, /* 0x4b09 */ { false, 0x4b09, 0x4b09 }, /* 0x4b0a */ { false, 0x4b0a, 0x4b0a }, /* 0x4b0b */ { false, 0x4b0b, 0x4b0b }, /* 0x4b0c */ { false, 0x4b0c, 0x4b0c }, /* 0x4b0d */ { false, 0x4b0d, 0x4b0d }, /* 0x4b0e */ { false, 0x4b0e, 0x4b0e }, /* 0x4b0f */ { false, 0x4b0f, 0x4b0f }, /* 0x4b10 */ { false, 0x4b10, 0x4b10 }, /* 0x4b11 */ { false, 0x4b11, 0x4b11 }, /* 0x4b12 */ { false, 0x4b12, 0x4b12 }, /* 0x4b13 */ { false, 0x4b13, 0x4b13 }, /* 0x4b14 */ { false, 0x4b14, 0x4b14 }, /* 0x4b15 */ { false, 0x4b15, 0x4b15 }, /* 0x4b16 */ { false, 0x4b16, 0x4b16 }, /* 0x4b17 */ { false, 0x4b17, 0x4b17 }, /* 0x4b18 */ { false, 0x4b18, 0x4b18 }, /* 0x4b19 */ { false, 0x4b19, 0x4b19 }, /* 0x4b1a */ { false, 0x4b1a, 0x4b1a }, /* 0x4b1b */ { false, 0x4b1b, 0x4b1b }, /* 0x4b1c */ { false, 0x4b1c, 0x4b1c }, /* 0x4b1d */ { false, 0x4b1d, 0x4b1d }, /* 0x4b1e */ { false, 0x4b1e, 0x4b1e }, /* 0x4b1f */ { false, 0x4b1f, 0x4b1f }, /* 0x4b20 */ { false, 0x4b20, 0x4b20 }, /* 0x4b21 */ { false, 0x4b21, 0x4b21 }, /* 0x4b22 */ { false, 0x4b22, 0x4b22 }, /* 0x4b23 */ { false, 0x4b23, 0x4b23 }, /* 0x4b24 */ { false, 0x4b24, 0x4b24 }, /* 0x4b25 */ { false, 0x4b25, 0x4b25 }, /* 0x4b26 */ { false, 0x4b26, 0x4b26 }, /* 0x4b27 */ { false, 0x4b27, 0x4b27 }, /* 0x4b28 */ { false, 0x4b28, 0x4b28 }, /* 0x4b29 */ { false, 0x4b29, 0x4b29 }, /* 0x4b2a */ { false, 0x4b2a, 0x4b2a }, /* 0x4b2b */ { false, 0x4b2b, 0x4b2b }, /* 0x4b2c */ { false, 0x4b2c, 0x4b2c }, /* 0x4b2d */ { false, 0x4b2d, 0x4b2d }, /* 0x4b2e */ { false, 0x4b2e, 0x4b2e }, /* 0x4b2f */ { false, 0x4b2f, 0x4b2f }, /* 0x4b30 */ { false, 0x4b30, 0x4b30 }, /* 0x4b31 */ { false, 0x4b31, 0x4b31 }, /* 0x4b32 */ { false, 0x4b32, 0x4b32 }, /* 0x4b33 */ { false, 0x4b33, 0x4b33 }, /* 0x4b34 */ { false, 0x4b34, 0x4b34 }, /* 0x4b35 */ { false, 0x4b35, 0x4b35 }, /* 0x4b36 */ { false, 0x4b36, 0x4b36 }, /* 0x4b37 */ { false, 0x4b37, 0x4b37 }, /* 0x4b38 */ { false, 0x4b38, 0x4b38 }, /* 0x4b39 */ { false, 0x4b39, 0x4b39 }, /* 0x4b3a */ { false, 0x4b3a, 0x4b3a }, /* 0x4b3b */ { false, 0x4b3b, 0x4b3b }, /* 0x4b3c */ { false, 0x4b3c, 0x4b3c }, /* 0x4b3d */ { false, 0x4b3d, 0x4b3d }, /* 0x4b3e */ { false, 0x4b3e, 0x4b3e }, /* 0x4b3f */ { false, 0x4b3f, 0x4b3f }, /* 0x4b40 */ { false, 0x4b40, 0x4b40 }, /* 0x4b41 */ { false, 0x4b41, 0x4b41 }, /* 0x4b42 */ { false, 0x4b42, 0x4b42 }, /* 0x4b43 */ { false, 0x4b43, 0x4b43 }, /* 0x4b44 */ { false, 0x4b44, 0x4b44 }, /* 0x4b45 */ { false, 0x4b45, 0x4b45 }, /* 0x4b46 */ { false, 0x4b46, 0x4b46 }, /* 0x4b47 */ { false, 0x4b47, 0x4b47 }, /* 0x4b48 */ { false, 0x4b48, 0x4b48 }, /* 0x4b49 */ { false, 0x4b49, 0x4b49 }, /* 0x4b4a */ { false, 0x4b4a, 0x4b4a }, /* 0x4b4b */ { false, 0x4b4b, 0x4b4b }, /* 0x4b4c */ { false, 0x4b4c, 0x4b4c }, /* 0x4b4d */ { false, 0x4b4d, 0x4b4d }, /* 0x4b4e */ { false, 0x4b4e, 0x4b4e }, /* 0x4b4f */ { false, 0x4b4f, 0x4b4f }, /* 0x4b50 */ { false, 0x4b50, 0x4b50 }, /* 0x4b51 */ { false, 0x4b51, 0x4b51 }, /* 0x4b52 */ { false, 0x4b52, 0x4b52 }, /* 0x4b53 */ { false, 0x4b53, 0x4b53 }, /* 0x4b54 */ { false, 0x4b54, 0x4b54 }, /* 0x4b55 */ { false, 0x4b55, 0x4b55 }, /* 0x4b56 */ { false, 0x4b56, 0x4b56 }, /* 0x4b57 */ { false, 0x4b57, 0x4b57 }, /* 0x4b58 */ { false, 0x4b58, 0x4b58 }, /* 0x4b59 */ { false, 0x4b59, 0x4b59 }, /* 0x4b5a */ { false, 0x4b5a, 0x4b5a }, /* 0x4b5b */ { false, 0x4b5b, 0x4b5b }, /* 0x4b5c */ { false, 0x4b5c, 0x4b5c }, /* 0x4b5d */ { false, 0x4b5d, 0x4b5d }, /* 0x4b5e */ { false, 0x4b5e, 0x4b5e }, /* 0x4b5f */ { false, 0x4b5f, 0x4b5f }, /* 0x4b60 */ { false, 0x4b60, 0x4b60 }, /* 0x4b61 */ { false, 0x4b61, 0x4b61 }, /* 0x4b62 */ { false, 0x4b62, 0x4b62 }, /* 0x4b63 */ { false, 0x4b63, 0x4b63 }, /* 0x4b64 */ { false, 0x4b64, 0x4b64 }, /* 0x4b65 */ { false, 0x4b65, 0x4b65 }, /* 0x4b66 */ { false, 0x4b66, 0x4b66 }, /* 0x4b67 */ { false, 0x4b67, 0x4b67 }, /* 0x4b68 */ { false, 0x4b68, 0x4b68 }, /* 0x4b69 */ { false, 0x4b69, 0x4b69 }, /* 0x4b6a */ { false, 0x4b6a, 0x4b6a }, /* 0x4b6b */ { false, 0x4b6b, 0x4b6b }, /* 0x4b6c */ { false, 0x4b6c, 0x4b6c }, /* 0x4b6d */ { false, 0x4b6d, 0x4b6d }, /* 0x4b6e */ { false, 0x4b6e, 0x4b6e }, /* 0x4b6f */ { false, 0x4b6f, 0x4b6f }, /* 0x4b70 */ { false, 0x4b70, 0x4b70 }, /* 0x4b71 */ { false, 0x4b71, 0x4b71 }, /* 0x4b72 */ { false, 0x4b72, 0x4b72 }, /* 0x4b73 */ { false, 0x4b73, 0x4b73 }, /* 0x4b74 */ { false, 0x4b74, 0x4b74 }, /* 0x4b75 */ { false, 0x4b75, 0x4b75 }, /* 0x4b76 */ { false, 0x4b76, 0x4b76 }, /* 0x4b77 */ { false, 0x4b77, 0x4b77 }, /* 0x4b78 */ { false, 0x4b78, 0x4b78 }, /* 0x4b79 */ { false, 0x4b79, 0x4b79 }, /* 0x4b7a */ { false, 0x4b7a, 0x4b7a }, /* 0x4b7b */ { false, 0x4b7b, 0x4b7b }, /* 0x4b7c */ { false, 0x4b7c, 0x4b7c }, /* 0x4b7d */ { false, 0x4b7d, 0x4b7d }, /* 0x4b7e */ { false, 0x4b7e, 0x4b7e }, /* 0x4b7f */ { false, 0x4b7f, 0x4b7f }, /* 0x4b80 */ { false, 0x4b80, 0x4b80 }, /* 0x4b81 */ { false, 0x4b81, 0x4b81 }, /* 0x4b82 */ { false, 0x4b82, 0x4b82 }, /* 0x4b83 */ { false, 0x4b83, 0x4b83 }, /* 0x4b84 */ { false, 0x4b84, 0x4b84 }, /* 0x4b85 */ { false, 0x4b85, 0x4b85 }, /* 0x4b86 */ { false, 0x4b86, 0x4b86 }, /* 0x4b87 */ { false, 0x4b87, 0x4b87 }, /* 0x4b88 */ { false, 0x4b88, 0x4b88 }, /* 0x4b89 */ { false, 0x4b89, 0x4b89 }, /* 0x4b8a */ { false, 0x4b8a, 0x4b8a }, /* 0x4b8b */ { false, 0x4b8b, 0x4b8b }, /* 0x4b8c */ { false, 0x4b8c, 0x4b8c }, /* 0x4b8d */ { false, 0x4b8d, 0x4b8d }, /* 0x4b8e */ { false, 0x4b8e, 0x4b8e }, /* 0x4b8f */ { false, 0x4b8f, 0x4b8f }, /* 0x4b90 */ { false, 0x4b90, 0x4b90 }, /* 0x4b91 */ { false, 0x4b91, 0x4b91 }, /* 0x4b92 */ { false, 0x4b92, 0x4b92 }, /* 0x4b93 */ { false, 0x4b93, 0x4b93 }, /* 0x4b94 */ { false, 0x4b94, 0x4b94 }, /* 0x4b95 */ { false, 0x4b95, 0x4b95 }, /* 0x4b96 */ { false, 0x4b96, 0x4b96 }, /* 0x4b97 */ { false, 0x4b97, 0x4b97 }, /* 0x4b98 */ { false, 0x4b98, 0x4b98 }, /* 0x4b99 */ { false, 0x4b99, 0x4b99 }, /* 0x4b9a */ { false, 0x4b9a, 0x4b9a }, /* 0x4b9b */ { false, 0x4b9b, 0x4b9b }, /* 0x4b9c */ { false, 0x4b9c, 0x4b9c }, /* 0x4b9d */ { false, 0x4b9d, 0x4b9d }, /* 0x4b9e */ { false, 0x4b9e, 0x4b9e }, /* 0x4b9f */ { false, 0x4b9f, 0x4b9f }, /* 0x4ba0 */ { false, 0x4ba0, 0x4ba0 }, /* 0x4ba1 */ { false, 0x4ba1, 0x4ba1 }, /* 0x4ba2 */ { false, 0x4ba2, 0x4ba2 }, /* 0x4ba3 */ { false, 0x4ba3, 0x4ba3 }, /* 0x4ba4 */ { false, 0x4ba4, 0x4ba4 }, /* 0x4ba5 */ { false, 0x4ba5, 0x4ba5 }, /* 0x4ba6 */ { false, 0x4ba6, 0x4ba6 }, /* 0x4ba7 */ { false, 0x4ba7, 0x4ba7 }, /* 0x4ba8 */ { false, 0x4ba8, 0x4ba8 }, /* 0x4ba9 */ { false, 0x4ba9, 0x4ba9 }, /* 0x4baa */ { false, 0x4baa, 0x4baa }, /* 0x4bab */ { false, 0x4bab, 0x4bab }, /* 0x4bac */ { false, 0x4bac, 0x4bac }, /* 0x4bad */ { false, 0x4bad, 0x4bad }, /* 0x4bae */ { false, 0x4bae, 0x4bae }, /* 0x4baf */ { false, 0x4baf, 0x4baf }, /* 0x4bb0 */ { false, 0x4bb0, 0x4bb0 }, /* 0x4bb1 */ { false, 0x4bb1, 0x4bb1 }, /* 0x4bb2 */ { false, 0x4bb2, 0x4bb2 }, /* 0x4bb3 */ { false, 0x4bb3, 0x4bb3 }, /* 0x4bb4 */ { false, 0x4bb4, 0x4bb4 }, /* 0x4bb5 */ { false, 0x4bb5, 0x4bb5 }, /* 0x4bb6 */ { false, 0x4bb6, 0x4bb6 }, /* 0x4bb7 */ { false, 0x4bb7, 0x4bb7 }, /* 0x4bb8 */ { false, 0x4bb8, 0x4bb8 }, /* 0x4bb9 */ { false, 0x4bb9, 0x4bb9 }, /* 0x4bba */ { false, 0x4bba, 0x4bba }, /* 0x4bbb */ { false, 0x4bbb, 0x4bbb }, /* 0x4bbc */ { false, 0x4bbc, 0x4bbc }, /* 0x4bbd */ { false, 0x4bbd, 0x4bbd }, /* 0x4bbe */ { false, 0x4bbe, 0x4bbe }, /* 0x4bbf */ { false, 0x4bbf, 0x4bbf }, /* 0x4bc0 */ { false, 0x4bc0, 0x4bc0 }, /* 0x4bc1 */ { false, 0x4bc1, 0x4bc1 }, /* 0x4bc2 */ { false, 0x4bc2, 0x4bc2 }, /* 0x4bc3 */ { false, 0x4bc3, 0x4bc3 }, /* 0x4bc4 */ { false, 0x4bc4, 0x4bc4 }, /* 0x4bc5 */ { false, 0x4bc5, 0x4bc5 }, /* 0x4bc6 */ { false, 0x4bc6, 0x4bc6 }, /* 0x4bc7 */ { false, 0x4bc7, 0x4bc7 }, /* 0x4bc8 */ { false, 0x4bc8, 0x4bc8 }, /* 0x4bc9 */ { false, 0x4bc9, 0x4bc9 }, /* 0x4bca */ { false, 0x4bca, 0x4bca }, /* 0x4bcb */ { false, 0x4bcb, 0x4bcb }, /* 0x4bcc */ { false, 0x4bcc, 0x4bcc }, /* 0x4bcd */ { false, 0x4bcd, 0x4bcd }, /* 0x4bce */ { false, 0x4bce, 0x4bce }, /* 0x4bcf */ { false, 0x4bcf, 0x4bcf }, /* 0x4bd0 */ { false, 0x4bd0, 0x4bd0 }, /* 0x4bd1 */ { false, 0x4bd1, 0x4bd1 }, /* 0x4bd2 */ { false, 0x4bd2, 0x4bd2 }, /* 0x4bd3 */ { false, 0x4bd3, 0x4bd3 }, /* 0x4bd4 */ { false, 0x4bd4, 0x4bd4 }, /* 0x4bd5 */ { false, 0x4bd5, 0x4bd5 }, /* 0x4bd6 */ { false, 0x4bd6, 0x4bd6 }, /* 0x4bd7 */ { false, 0x4bd7, 0x4bd7 }, /* 0x4bd8 */ { false, 0x4bd8, 0x4bd8 }, /* 0x4bd9 */ { false, 0x4bd9, 0x4bd9 }, /* 0x4bda */ { false, 0x4bda, 0x4bda }, /* 0x4bdb */ { false, 0x4bdb, 0x4bdb }, /* 0x4bdc */ { false, 0x4bdc, 0x4bdc }, /* 0x4bdd */ { false, 0x4bdd, 0x4bdd }, /* 0x4bde */ { false, 0x4bde, 0x4bde }, /* 0x4bdf */ { false, 0x4bdf, 0x4bdf }, /* 0x4be0 */ { false, 0x4be0, 0x4be0 }, /* 0x4be1 */ { false, 0x4be1, 0x4be1 }, /* 0x4be2 */ { false, 0x4be2, 0x4be2 }, /* 0x4be3 */ { false, 0x4be3, 0x4be3 }, /* 0x4be4 */ { false, 0x4be4, 0x4be4 }, /* 0x4be5 */ { false, 0x4be5, 0x4be5 }, /* 0x4be6 */ { false, 0x4be6, 0x4be6 }, /* 0x4be7 */ { false, 0x4be7, 0x4be7 }, /* 0x4be8 */ { false, 0x4be8, 0x4be8 }, /* 0x4be9 */ { false, 0x4be9, 0x4be9 }, /* 0x4bea */ { false, 0x4bea, 0x4bea }, /* 0x4beb */ { false, 0x4beb, 0x4beb }, /* 0x4bec */ { false, 0x4bec, 0x4bec }, /* 0x4bed */ { false, 0x4bed, 0x4bed }, /* 0x4bee */ { false, 0x4bee, 0x4bee }, /* 0x4bef */ { false, 0x4bef, 0x4bef }, /* 0x4bf0 */ { false, 0x4bf0, 0x4bf0 }, /* 0x4bf1 */ { false, 0x4bf1, 0x4bf1 }, /* 0x4bf2 */ { false, 0x4bf2, 0x4bf2 }, /* 0x4bf3 */ { false, 0x4bf3, 0x4bf3 }, /* 0x4bf4 */ { false, 0x4bf4, 0x4bf4 }, /* 0x4bf5 */ { false, 0x4bf5, 0x4bf5 }, /* 0x4bf6 */ { false, 0x4bf6, 0x4bf6 }, /* 0x4bf7 */ { false, 0x4bf7, 0x4bf7 }, /* 0x4bf8 */ { false, 0x4bf8, 0x4bf8 }, /* 0x4bf9 */ { false, 0x4bf9, 0x4bf9 }, /* 0x4bfa */ { false, 0x4bfa, 0x4bfa }, /* 0x4bfb */ { false, 0x4bfb, 0x4bfb }, /* 0x4bfc */ { false, 0x4bfc, 0x4bfc }, /* 0x4bfd */ { false, 0x4bfd, 0x4bfd }, /* 0x4bfe */ { false, 0x4bfe, 0x4bfe }, /* 0x4bff */ { false, 0x4bff, 0x4bff }, /* 0x4c00 */ { false, 0x4c00, 0x4c00 }, /* 0x4c01 */ { false, 0x4c01, 0x4c01 }, /* 0x4c02 */ { false, 0x4c02, 0x4c02 }, /* 0x4c03 */ { false, 0x4c03, 0x4c03 }, /* 0x4c04 */ { false, 0x4c04, 0x4c04 }, /* 0x4c05 */ { false, 0x4c05, 0x4c05 }, /* 0x4c06 */ { false, 0x4c06, 0x4c06 }, /* 0x4c07 */ { false, 0x4c07, 0x4c07 }, /* 0x4c08 */ { false, 0x4c08, 0x4c08 }, /* 0x4c09 */ { false, 0x4c09, 0x4c09 }, /* 0x4c0a */ { false, 0x4c0a, 0x4c0a }, /* 0x4c0b */ { false, 0x4c0b, 0x4c0b }, /* 0x4c0c */ { false, 0x4c0c, 0x4c0c }, /* 0x4c0d */ { false, 0x4c0d, 0x4c0d }, /* 0x4c0e */ { false, 0x4c0e, 0x4c0e }, /* 0x4c0f */ { false, 0x4c0f, 0x4c0f }, /* 0x4c10 */ { false, 0x4c10, 0x4c10 }, /* 0x4c11 */ { false, 0x4c11, 0x4c11 }, /* 0x4c12 */ { false, 0x4c12, 0x4c12 }, /* 0x4c13 */ { false, 0x4c13, 0x4c13 }, /* 0x4c14 */ { false, 0x4c14, 0x4c14 }, /* 0x4c15 */ { false, 0x4c15, 0x4c15 }, /* 0x4c16 */ { false, 0x4c16, 0x4c16 }, /* 0x4c17 */ { false, 0x4c17, 0x4c17 }, /* 0x4c18 */ { false, 0x4c18, 0x4c18 }, /* 0x4c19 */ { false, 0x4c19, 0x4c19 }, /* 0x4c1a */ { false, 0x4c1a, 0x4c1a }, /* 0x4c1b */ { false, 0x4c1b, 0x4c1b }, /* 0x4c1c */ { false, 0x4c1c, 0x4c1c }, /* 0x4c1d */ { false, 0x4c1d, 0x4c1d }, /* 0x4c1e */ { false, 0x4c1e, 0x4c1e }, /* 0x4c1f */ { false, 0x4c1f, 0x4c1f }, /* 0x4c20 */ { false, 0x4c20, 0x4c20 }, /* 0x4c21 */ { false, 0x4c21, 0x4c21 }, /* 0x4c22 */ { false, 0x4c22, 0x4c22 }, /* 0x4c23 */ { false, 0x4c23, 0x4c23 }, /* 0x4c24 */ { false, 0x4c24, 0x4c24 }, /* 0x4c25 */ { false, 0x4c25, 0x4c25 }, /* 0x4c26 */ { false, 0x4c26, 0x4c26 }, /* 0x4c27 */ { false, 0x4c27, 0x4c27 }, /* 0x4c28 */ { false, 0x4c28, 0x4c28 }, /* 0x4c29 */ { false, 0x4c29, 0x4c29 }, /* 0x4c2a */ { false, 0x4c2a, 0x4c2a }, /* 0x4c2b */ { false, 0x4c2b, 0x4c2b }, /* 0x4c2c */ { false, 0x4c2c, 0x4c2c }, /* 0x4c2d */ { false, 0x4c2d, 0x4c2d }, /* 0x4c2e */ { false, 0x4c2e, 0x4c2e }, /* 0x4c2f */ { false, 0x4c2f, 0x4c2f }, /* 0x4c30 */ { false, 0x4c30, 0x4c30 }, /* 0x4c31 */ { false, 0x4c31, 0x4c31 }, /* 0x4c32 */ { false, 0x4c32, 0x4c32 }, /* 0x4c33 */ { false, 0x4c33, 0x4c33 }, /* 0x4c34 */ { false, 0x4c34, 0x4c34 }, /* 0x4c35 */ { false, 0x4c35, 0x4c35 }, /* 0x4c36 */ { false, 0x4c36, 0x4c36 }, /* 0x4c37 */ { false, 0x4c37, 0x4c37 }, /* 0x4c38 */ { false, 0x4c38, 0x4c38 }, /* 0x4c39 */ { false, 0x4c39, 0x4c39 }, /* 0x4c3a */ { false, 0x4c3a, 0x4c3a }, /* 0x4c3b */ { false, 0x4c3b, 0x4c3b }, /* 0x4c3c */ { false, 0x4c3c, 0x4c3c }, /* 0x4c3d */ { false, 0x4c3d, 0x4c3d }, /* 0x4c3e */ { false, 0x4c3e, 0x4c3e }, /* 0x4c3f */ { false, 0x4c3f, 0x4c3f }, /* 0x4c40 */ { false, 0x4c40, 0x4c40 }, /* 0x4c41 */ { false, 0x4c41, 0x4c41 }, /* 0x4c42 */ { false, 0x4c42, 0x4c42 }, /* 0x4c43 */ { false, 0x4c43, 0x4c43 }, /* 0x4c44 */ { false, 0x4c44, 0x4c44 }, /* 0x4c45 */ { false, 0x4c45, 0x4c45 }, /* 0x4c46 */ { false, 0x4c46, 0x4c46 }, /* 0x4c47 */ { false, 0x4c47, 0x4c47 }, /* 0x4c48 */ { false, 0x4c48, 0x4c48 }, /* 0x4c49 */ { false, 0x4c49, 0x4c49 }, /* 0x4c4a */ { false, 0x4c4a, 0x4c4a }, /* 0x4c4b */ { false, 0x4c4b, 0x4c4b }, /* 0x4c4c */ { false, 0x4c4c, 0x4c4c }, /* 0x4c4d */ { false, 0x4c4d, 0x4c4d }, /* 0x4c4e */ { false, 0x4c4e, 0x4c4e }, /* 0x4c4f */ { false, 0x4c4f, 0x4c4f }, /* 0x4c50 */ { false, 0x4c50, 0x4c50 }, /* 0x4c51 */ { false, 0x4c51, 0x4c51 }, /* 0x4c52 */ { false, 0x4c52, 0x4c52 }, /* 0x4c53 */ { false, 0x4c53, 0x4c53 }, /* 0x4c54 */ { false, 0x4c54, 0x4c54 }, /* 0x4c55 */ { false, 0x4c55, 0x4c55 }, /* 0x4c56 */ { false, 0x4c56, 0x4c56 }, /* 0x4c57 */ { false, 0x4c57, 0x4c57 }, /* 0x4c58 */ { false, 0x4c58, 0x4c58 }, /* 0x4c59 */ { false, 0x4c59, 0x4c59 }, /* 0x4c5a */ { false, 0x4c5a, 0x4c5a }, /* 0x4c5b */ { false, 0x4c5b, 0x4c5b }, /* 0x4c5c */ { false, 0x4c5c, 0x4c5c }, /* 0x4c5d */ { false, 0x4c5d, 0x4c5d }, /* 0x4c5e */ { false, 0x4c5e, 0x4c5e }, /* 0x4c5f */ { false, 0x4c5f, 0x4c5f }, /* 0x4c60 */ { false, 0x4c60, 0x4c60 }, /* 0x4c61 */ { false, 0x4c61, 0x4c61 }, /* 0x4c62 */ { false, 0x4c62, 0x4c62 }, /* 0x4c63 */ { false, 0x4c63, 0x4c63 }, /* 0x4c64 */ { false, 0x4c64, 0x4c64 }, /* 0x4c65 */ { false, 0x4c65, 0x4c65 }, /* 0x4c66 */ { false, 0x4c66, 0x4c66 }, /* 0x4c67 */ { false, 0x4c67, 0x4c67 }, /* 0x4c68 */ { false, 0x4c68, 0x4c68 }, /* 0x4c69 */ { false, 0x4c69, 0x4c69 }, /* 0x4c6a */ { false, 0x4c6a, 0x4c6a }, /* 0x4c6b */ { false, 0x4c6b, 0x4c6b }, /* 0x4c6c */ { false, 0x4c6c, 0x4c6c }, /* 0x4c6d */ { false, 0x4c6d, 0x4c6d }, /* 0x4c6e */ { false, 0x4c6e, 0x4c6e }, /* 0x4c6f */ { false, 0x4c6f, 0x4c6f }, /* 0x4c70 */ { false, 0x4c70, 0x4c70 }, /* 0x4c71 */ { false, 0x4c71, 0x4c71 }, /* 0x4c72 */ { false, 0x4c72, 0x4c72 }, /* 0x4c73 */ { false, 0x4c73, 0x4c73 }, /* 0x4c74 */ { false, 0x4c74, 0x4c74 }, /* 0x4c75 */ { false, 0x4c75, 0x4c75 }, /* 0x4c76 */ { false, 0x4c76, 0x4c76 }, /* 0x4c77 */ { false, 0x4c77, 0x4c77 }, /* 0x4c78 */ { false, 0x4c78, 0x4c78 }, /* 0x4c79 */ { false, 0x4c79, 0x4c79 }, /* 0x4c7a */ { false, 0x4c7a, 0x4c7a }, /* 0x4c7b */ { false, 0x4c7b, 0x4c7b }, /* 0x4c7c */ { false, 0x4c7c, 0x4c7c }, /* 0x4c7d */ { false, 0x4c7d, 0x4c7d }, /* 0x4c7e */ { false, 0x4c7e, 0x4c7e }, /* 0x4c7f */ { false, 0x4c7f, 0x4c7f }, /* 0x4c80 */ { false, 0x4c80, 0x4c80 }, /* 0x4c81 */ { false, 0x4c81, 0x4c81 }, /* 0x4c82 */ { false, 0x4c82, 0x4c82 }, /* 0x4c83 */ { false, 0x4c83, 0x4c83 }, /* 0x4c84 */ { false, 0x4c84, 0x4c84 }, /* 0x4c85 */ { false, 0x4c85, 0x4c85 }, /* 0x4c86 */ { false, 0x4c86, 0x4c86 }, /* 0x4c87 */ { false, 0x4c87, 0x4c87 }, /* 0x4c88 */ { false, 0x4c88, 0x4c88 }, /* 0x4c89 */ { false, 0x4c89, 0x4c89 }, /* 0x4c8a */ { false, 0x4c8a, 0x4c8a }, /* 0x4c8b */ { false, 0x4c8b, 0x4c8b }, /* 0x4c8c */ { false, 0x4c8c, 0x4c8c }, /* 0x4c8d */ { false, 0x4c8d, 0x4c8d }, /* 0x4c8e */ { false, 0x4c8e, 0x4c8e }, /* 0x4c8f */ { false, 0x4c8f, 0x4c8f }, /* 0x4c90 */ { false, 0x4c90, 0x4c90 }, /* 0x4c91 */ { false, 0x4c91, 0x4c91 }, /* 0x4c92 */ { false, 0x4c92, 0x4c92 }, /* 0x4c93 */ { false, 0x4c93, 0x4c93 }, /* 0x4c94 */ { false, 0x4c94, 0x4c94 }, /* 0x4c95 */ { false, 0x4c95, 0x4c95 }, /* 0x4c96 */ { false, 0x4c96, 0x4c96 }, /* 0x4c97 */ { false, 0x4c97, 0x4c97 }, /* 0x4c98 */ { false, 0x4c98, 0x4c98 }, /* 0x4c99 */ { false, 0x4c99, 0x4c99 }, /* 0x4c9a */ { false, 0x4c9a, 0x4c9a }, /* 0x4c9b */ { false, 0x4c9b, 0x4c9b }, /* 0x4c9c */ { false, 0x4c9c, 0x4c9c }, /* 0x4c9d */ { false, 0x4c9d, 0x4c9d }, /* 0x4c9e */ { false, 0x4c9e, 0x4c9e }, /* 0x4c9f */ { false, 0x4c9f, 0x4c9f }, /* 0x4ca0 */ { false, 0x4ca0, 0x4ca0 }, /* 0x4ca1 */ { false, 0x4ca1, 0x4ca1 }, /* 0x4ca2 */ { false, 0x4ca2, 0x4ca2 }, /* 0x4ca3 */ { false, 0x4ca3, 0x4ca3 }, /* 0x4ca4 */ { false, 0x4ca4, 0x4ca4 }, /* 0x4ca5 */ { false, 0x4ca5, 0x4ca5 }, /* 0x4ca6 */ { false, 0x4ca6, 0x4ca6 }, /* 0x4ca7 */ { false, 0x4ca7, 0x4ca7 }, /* 0x4ca8 */ { false, 0x4ca8, 0x4ca8 }, /* 0x4ca9 */ { false, 0x4ca9, 0x4ca9 }, /* 0x4caa */ { false, 0x4caa, 0x4caa }, /* 0x4cab */ { false, 0x4cab, 0x4cab }, /* 0x4cac */ { false, 0x4cac, 0x4cac }, /* 0x4cad */ { false, 0x4cad, 0x4cad }, /* 0x4cae */ { false, 0x4cae, 0x4cae }, /* 0x4caf */ { false, 0x4caf, 0x4caf }, /* 0x4cb0 */ { false, 0x4cb0, 0x4cb0 }, /* 0x4cb1 */ { false, 0x4cb1, 0x4cb1 }, /* 0x4cb2 */ { false, 0x4cb2, 0x4cb2 }, /* 0x4cb3 */ { false, 0x4cb3, 0x4cb3 }, /* 0x4cb4 */ { false, 0x4cb4, 0x4cb4 }, /* 0x4cb5 */ { false, 0x4cb5, 0x4cb5 }, /* 0x4cb6 */ { false, 0x4cb6, 0x4cb6 }, /* 0x4cb7 */ { false, 0x4cb7, 0x4cb7 }, /* 0x4cb8 */ { false, 0x4cb8, 0x4cb8 }, /* 0x4cb9 */ { false, 0x4cb9, 0x4cb9 }, /* 0x4cba */ { false, 0x4cba, 0x4cba }, /* 0x4cbb */ { false, 0x4cbb, 0x4cbb }, /* 0x4cbc */ { false, 0x4cbc, 0x4cbc }, /* 0x4cbd */ { false, 0x4cbd, 0x4cbd }, /* 0x4cbe */ { false, 0x4cbe, 0x4cbe }, /* 0x4cbf */ { false, 0x4cbf, 0x4cbf }, /* 0x4cc0 */ { false, 0x4cc0, 0x4cc0 }, /* 0x4cc1 */ { false, 0x4cc1, 0x4cc1 }, /* 0x4cc2 */ { false, 0x4cc2, 0x4cc2 }, /* 0x4cc3 */ { false, 0x4cc3, 0x4cc3 }, /* 0x4cc4 */ { false, 0x4cc4, 0x4cc4 }, /* 0x4cc5 */ { false, 0x4cc5, 0x4cc5 }, /* 0x4cc6 */ { false, 0x4cc6, 0x4cc6 }, /* 0x4cc7 */ { false, 0x4cc7, 0x4cc7 }, /* 0x4cc8 */ { false, 0x4cc8, 0x4cc8 }, /* 0x4cc9 */ { false, 0x4cc9, 0x4cc9 }, /* 0x4cca */ { false, 0x4cca, 0x4cca }, /* 0x4ccb */ { false, 0x4ccb, 0x4ccb }, /* 0x4ccc */ { false, 0x4ccc, 0x4ccc }, /* 0x4ccd */ { false, 0x4ccd, 0x4ccd }, /* 0x4cce */ { false, 0x4cce, 0x4cce }, /* 0x4ccf */ { false, 0x4ccf, 0x4ccf }, /* 0x4cd0 */ { false, 0x4cd0, 0x4cd0 }, /* 0x4cd1 */ { false, 0x4cd1, 0x4cd1 }, /* 0x4cd2 */ { false, 0x4cd2, 0x4cd2 }, /* 0x4cd3 */ { false, 0x4cd3, 0x4cd3 }, /* 0x4cd4 */ { false, 0x4cd4, 0x4cd4 }, /* 0x4cd5 */ { false, 0x4cd5, 0x4cd5 }, /* 0x4cd6 */ { false, 0x4cd6, 0x4cd6 }, /* 0x4cd7 */ { false, 0x4cd7, 0x4cd7 }, /* 0x4cd8 */ { false, 0x4cd8, 0x4cd8 }, /* 0x4cd9 */ { false, 0x4cd9, 0x4cd9 }, /* 0x4cda */ { false, 0x4cda, 0x4cda }, /* 0x4cdb */ { false, 0x4cdb, 0x4cdb }, /* 0x4cdc */ { false, 0x4cdc, 0x4cdc }, /* 0x4cdd */ { false, 0x4cdd, 0x4cdd }, /* 0x4cde */ { false, 0x4cde, 0x4cde }, /* 0x4cdf */ { false, 0x4cdf, 0x4cdf }, /* 0x4ce0 */ { false, 0x4ce0, 0x4ce0 }, /* 0x4ce1 */ { false, 0x4ce1, 0x4ce1 }, /* 0x4ce2 */ { false, 0x4ce2, 0x4ce2 }, /* 0x4ce3 */ { false, 0x4ce3, 0x4ce3 }, /* 0x4ce4 */ { false, 0x4ce4, 0x4ce4 }, /* 0x4ce5 */ { false, 0x4ce5, 0x4ce5 }, /* 0x4ce6 */ { false, 0x4ce6, 0x4ce6 }, /* 0x4ce7 */ { false, 0x4ce7, 0x4ce7 }, /* 0x4ce8 */ { false, 0x4ce8, 0x4ce8 }, /* 0x4ce9 */ { false, 0x4ce9, 0x4ce9 }, /* 0x4cea */ { false, 0x4cea, 0x4cea }, /* 0x4ceb */ { false, 0x4ceb, 0x4ceb }, /* 0x4cec */ { false, 0x4cec, 0x4cec }, /* 0x4ced */ { false, 0x4ced, 0x4ced }, /* 0x4cee */ { false, 0x4cee, 0x4cee }, /* 0x4cef */ { false, 0x4cef, 0x4cef }, /* 0x4cf0 */ { false, 0x4cf0, 0x4cf0 }, /* 0x4cf1 */ { false, 0x4cf1, 0x4cf1 }, /* 0x4cf2 */ { false, 0x4cf2, 0x4cf2 }, /* 0x4cf3 */ { false, 0x4cf3, 0x4cf3 }, /* 0x4cf4 */ { false, 0x4cf4, 0x4cf4 }, /* 0x4cf5 */ { false, 0x4cf5, 0x4cf5 }, /* 0x4cf6 */ { false, 0x4cf6, 0x4cf6 }, /* 0x4cf7 */ { false, 0x4cf7, 0x4cf7 }, /* 0x4cf8 */ { false, 0x4cf8, 0x4cf8 }, /* 0x4cf9 */ { false, 0x4cf9, 0x4cf9 }, /* 0x4cfa */ { false, 0x4cfa, 0x4cfa }, /* 0x4cfb */ { false, 0x4cfb, 0x4cfb }, /* 0x4cfc */ { false, 0x4cfc, 0x4cfc }, /* 0x4cfd */ { false, 0x4cfd, 0x4cfd }, /* 0x4cfe */ { false, 0x4cfe, 0x4cfe }, /* 0x4cff */ { false, 0x4cff, 0x4cff }, /* 0x4d00 */ { false, 0x4d00, 0x4d00 }, /* 0x4d01 */ { false, 0x4d01, 0x4d01 }, /* 0x4d02 */ { false, 0x4d02, 0x4d02 }, /* 0x4d03 */ { false, 0x4d03, 0x4d03 }, /* 0x4d04 */ { false, 0x4d04, 0x4d04 }, /* 0x4d05 */ { false, 0x4d05, 0x4d05 }, /* 0x4d06 */ { false, 0x4d06, 0x4d06 }, /* 0x4d07 */ { false, 0x4d07, 0x4d07 }, /* 0x4d08 */ { false, 0x4d08, 0x4d08 }, /* 0x4d09 */ { false, 0x4d09, 0x4d09 }, /* 0x4d0a */ { false, 0x4d0a, 0x4d0a }, /* 0x4d0b */ { false, 0x4d0b, 0x4d0b }, /* 0x4d0c */ { false, 0x4d0c, 0x4d0c }, /* 0x4d0d */ { false, 0x4d0d, 0x4d0d }, /* 0x4d0e */ { false, 0x4d0e, 0x4d0e }, /* 0x4d0f */ { false, 0x4d0f, 0x4d0f }, /* 0x4d10 */ { false, 0x4d10, 0x4d10 }, /* 0x4d11 */ { false, 0x4d11, 0x4d11 }, /* 0x4d12 */ { false, 0x4d12, 0x4d12 }, /* 0x4d13 */ { false, 0x4d13, 0x4d13 }, /* 0x4d14 */ { false, 0x4d14, 0x4d14 }, /* 0x4d15 */ { false, 0x4d15, 0x4d15 }, /* 0x4d16 */ { false, 0x4d16, 0x4d16 }, /* 0x4d17 */ { false, 0x4d17, 0x4d17 }, /* 0x4d18 */ { false, 0x4d18, 0x4d18 }, /* 0x4d19 */ { false, 0x4d19, 0x4d19 }, /* 0x4d1a */ { false, 0x4d1a, 0x4d1a }, /* 0x4d1b */ { false, 0x4d1b, 0x4d1b }, /* 0x4d1c */ { false, 0x4d1c, 0x4d1c }, /* 0x4d1d */ { false, 0x4d1d, 0x4d1d }, /* 0x4d1e */ { false, 0x4d1e, 0x4d1e }, /* 0x4d1f */ { false, 0x4d1f, 0x4d1f }, /* 0x4d20 */ { false, 0x4d20, 0x4d20 }, /* 0x4d21 */ { false, 0x4d21, 0x4d21 }, /* 0x4d22 */ { false, 0x4d22, 0x4d22 }, /* 0x4d23 */ { false, 0x4d23, 0x4d23 }, /* 0x4d24 */ { false, 0x4d24, 0x4d24 }, /* 0x4d25 */ { false, 0x4d25, 0x4d25 }, /* 0x4d26 */ { false, 0x4d26, 0x4d26 }, /* 0x4d27 */ { false, 0x4d27, 0x4d27 }, /* 0x4d28 */ { false, 0x4d28, 0x4d28 }, /* 0x4d29 */ { false, 0x4d29, 0x4d29 }, /* 0x4d2a */ { false, 0x4d2a, 0x4d2a }, /* 0x4d2b */ { false, 0x4d2b, 0x4d2b }, /* 0x4d2c */ { false, 0x4d2c, 0x4d2c }, /* 0x4d2d */ { false, 0x4d2d, 0x4d2d }, /* 0x4d2e */ { false, 0x4d2e, 0x4d2e }, /* 0x4d2f */ { false, 0x4d2f, 0x4d2f }, /* 0x4d30 */ { false, 0x4d30, 0x4d30 }, /* 0x4d31 */ { false, 0x4d31, 0x4d31 }, /* 0x4d32 */ { false, 0x4d32, 0x4d32 }, /* 0x4d33 */ { false, 0x4d33, 0x4d33 }, /* 0x4d34 */ { false, 0x4d34, 0x4d34 }, /* 0x4d35 */ { false, 0x4d35, 0x4d35 }, /* 0x4d36 */ { false, 0x4d36, 0x4d36 }, /* 0x4d37 */ { false, 0x4d37, 0x4d37 }, /* 0x4d38 */ { false, 0x4d38, 0x4d38 }, /* 0x4d39 */ { false, 0x4d39, 0x4d39 }, /* 0x4d3a */ { false, 0x4d3a, 0x4d3a }, /* 0x4d3b */ { false, 0x4d3b, 0x4d3b }, /* 0x4d3c */ { false, 0x4d3c, 0x4d3c }, /* 0x4d3d */ { false, 0x4d3d, 0x4d3d }, /* 0x4d3e */ { false, 0x4d3e, 0x4d3e }, /* 0x4d3f */ { false, 0x4d3f, 0x4d3f }, /* 0x4d40 */ { false, 0x4d40, 0x4d40 }, /* 0x4d41 */ { false, 0x4d41, 0x4d41 }, /* 0x4d42 */ { false, 0x4d42, 0x4d42 }, /* 0x4d43 */ { false, 0x4d43, 0x4d43 }, /* 0x4d44 */ { false, 0x4d44, 0x4d44 }, /* 0x4d45 */ { false, 0x4d45, 0x4d45 }, /* 0x4d46 */ { false, 0x4d46, 0x4d46 }, /* 0x4d47 */ { false, 0x4d47, 0x4d47 }, /* 0x4d48 */ { false, 0x4d48, 0x4d48 }, /* 0x4d49 */ { false, 0x4d49, 0x4d49 }, /* 0x4d4a */ { false, 0x4d4a, 0x4d4a }, /* 0x4d4b */ { false, 0x4d4b, 0x4d4b }, /* 0x4d4c */ { false, 0x4d4c, 0x4d4c }, /* 0x4d4d */ { false, 0x4d4d, 0x4d4d }, /* 0x4d4e */ { false, 0x4d4e, 0x4d4e }, /* 0x4d4f */ { false, 0x4d4f, 0x4d4f }, /* 0x4d50 */ { false, 0x4d50, 0x4d50 }, /* 0x4d51 */ { false, 0x4d51, 0x4d51 }, /* 0x4d52 */ { false, 0x4d52, 0x4d52 }, /* 0x4d53 */ { false, 0x4d53, 0x4d53 }, /* 0x4d54 */ { false, 0x4d54, 0x4d54 }, /* 0x4d55 */ { false, 0x4d55, 0x4d55 }, /* 0x4d56 */ { false, 0x4d56, 0x4d56 }, /* 0x4d57 */ { false, 0x4d57, 0x4d57 }, /* 0x4d58 */ { false, 0x4d58, 0x4d58 }, /* 0x4d59 */ { false, 0x4d59, 0x4d59 }, /* 0x4d5a */ { false, 0x4d5a, 0x4d5a }, /* 0x4d5b */ { false, 0x4d5b, 0x4d5b }, /* 0x4d5c */ { false, 0x4d5c, 0x4d5c }, /* 0x4d5d */ { false, 0x4d5d, 0x4d5d }, /* 0x4d5e */ { false, 0x4d5e, 0x4d5e }, /* 0x4d5f */ { false, 0x4d5f, 0x4d5f }, /* 0x4d60 */ { false, 0x4d60, 0x4d60 }, /* 0x4d61 */ { false, 0x4d61, 0x4d61 }, /* 0x4d62 */ { false, 0x4d62, 0x4d62 }, /* 0x4d63 */ { false, 0x4d63, 0x4d63 }, /* 0x4d64 */ { false, 0x4d64, 0x4d64 }, /* 0x4d65 */ { false, 0x4d65, 0x4d65 }, /* 0x4d66 */ { false, 0x4d66, 0x4d66 }, /* 0x4d67 */ { false, 0x4d67, 0x4d67 }, /* 0x4d68 */ { false, 0x4d68, 0x4d68 }, /* 0x4d69 */ { false, 0x4d69, 0x4d69 }, /* 0x4d6a */ { false, 0x4d6a, 0x4d6a }, /* 0x4d6b */ { false, 0x4d6b, 0x4d6b }, /* 0x4d6c */ { false, 0x4d6c, 0x4d6c }, /* 0x4d6d */ { false, 0x4d6d, 0x4d6d }, /* 0x4d6e */ { false, 0x4d6e, 0x4d6e }, /* 0x4d6f */ { false, 0x4d6f, 0x4d6f }, /* 0x4d70 */ { false, 0x4d70, 0x4d70 }, /* 0x4d71 */ { false, 0x4d71, 0x4d71 }, /* 0x4d72 */ { false, 0x4d72, 0x4d72 }, /* 0x4d73 */ { false, 0x4d73, 0x4d73 }, /* 0x4d74 */ { false, 0x4d74, 0x4d74 }, /* 0x4d75 */ { false, 0x4d75, 0x4d75 }, /* 0x4d76 */ { false, 0x4d76, 0x4d76 }, /* 0x4d77 */ { false, 0x4d77, 0x4d77 }, /* 0x4d78 */ { false, 0x4d78, 0x4d78 }, /* 0x4d79 */ { false, 0x4d79, 0x4d79 }, /* 0x4d7a */ { false, 0x4d7a, 0x4d7a }, /* 0x4d7b */ { false, 0x4d7b, 0x4d7b }, /* 0x4d7c */ { false, 0x4d7c, 0x4d7c }, /* 0x4d7d */ { false, 0x4d7d, 0x4d7d }, /* 0x4d7e */ { false, 0x4d7e, 0x4d7e }, /* 0x4d7f */ { false, 0x4d7f, 0x4d7f }, /* 0x4d80 */ { false, 0x4d80, 0x4d80 }, /* 0x4d81 */ { false, 0x4d81, 0x4d81 }, /* 0x4d82 */ { false, 0x4d82, 0x4d82 }, /* 0x4d83 */ { false, 0x4d83, 0x4d83 }, /* 0x4d84 */ { false, 0x4d84, 0x4d84 }, /* 0x4d85 */ { false, 0x4d85, 0x4d85 }, /* 0x4d86 */ { false, 0x4d86, 0x4d86 }, /* 0x4d87 */ { false, 0x4d87, 0x4d87 }, /* 0x4d88 */ { false, 0x4d88, 0x4d88 }, /* 0x4d89 */ { false, 0x4d89, 0x4d89 }, /* 0x4d8a */ { false, 0x4d8a, 0x4d8a }, /* 0x4d8b */ { false, 0x4d8b, 0x4d8b }, /* 0x4d8c */ { false, 0x4d8c, 0x4d8c }, /* 0x4d8d */ { false, 0x4d8d, 0x4d8d }, /* 0x4d8e */ { false, 0x4d8e, 0x4d8e }, /* 0x4d8f */ { false, 0x4d8f, 0x4d8f }, /* 0x4d90 */ { false, 0x4d90, 0x4d90 }, /* 0x4d91 */ { false, 0x4d91, 0x4d91 }, /* 0x4d92 */ { false, 0x4d92, 0x4d92 }, /* 0x4d93 */ { false, 0x4d93, 0x4d93 }, /* 0x4d94 */ { false, 0x4d94, 0x4d94 }, /* 0x4d95 */ { false, 0x4d95, 0x4d95 }, /* 0x4d96 */ { false, 0x4d96, 0x4d96 }, /* 0x4d97 */ { false, 0x4d97, 0x4d97 }, /* 0x4d98 */ { false, 0x4d98, 0x4d98 }, /* 0x4d99 */ { false, 0x4d99, 0x4d99 }, /* 0x4d9a */ { false, 0x4d9a, 0x4d9a }, /* 0x4d9b */ { false, 0x4d9b, 0x4d9b }, /* 0x4d9c */ { false, 0x4d9c, 0x4d9c }, /* 0x4d9d */ { false, 0x4d9d, 0x4d9d }, /* 0x4d9e */ { false, 0x4d9e, 0x4d9e }, /* 0x4d9f */ { false, 0x4d9f, 0x4d9f }, /* 0x4da0 */ { false, 0x4da0, 0x4da0 }, /* 0x4da1 */ { false, 0x4da1, 0x4da1 }, /* 0x4da2 */ { false, 0x4da2, 0x4da2 }, /* 0x4da3 */ { false, 0x4da3, 0x4da3 }, /* 0x4da4 */ { false, 0x4da4, 0x4da4 }, /* 0x4da5 */ { false, 0x4da5, 0x4da5 }, /* 0x4da6 */ { false, 0x4da6, 0x4da6 }, /* 0x4da7 */ { false, 0x4da7, 0x4da7 }, /* 0x4da8 */ { false, 0x4da8, 0x4da8 }, /* 0x4da9 */ { false, 0x4da9, 0x4da9 }, /* 0x4daa */ { false, 0x4daa, 0x4daa }, /* 0x4dab */ { false, 0x4dab, 0x4dab }, /* 0x4dac */ { false, 0x4dac, 0x4dac }, /* 0x4dad */ { false, 0x4dad, 0x4dad }, /* 0x4dae */ { false, 0x4dae, 0x4dae }, /* 0x4daf */ { false, 0x4daf, 0x4daf }, /* 0x4db0 */ { false, 0x4db0, 0x4db0 }, /* 0x4db1 */ { false, 0x4db1, 0x4db1 }, /* 0x4db2 */ { false, 0x4db2, 0x4db2 }, /* 0x4db3 */ { false, 0x4db3, 0x4db3 }, /* 0x4db4 */ { false, 0x4db4, 0x4db4 }, /* 0x4db5 */ { true, 0x4db5, 0x4db5 }, /* 0x4db6 */ { false, 0x4db6, 0x4db6 }, /* 0x4db7 */ { false, 0x4db7, 0x4db7 }, /* 0x4db8 */ { false, 0x4db8, 0x4db8 }, /* 0x4db9 */ { false, 0x4db9, 0x4db9 }, /* 0x4dba */ { false, 0x4dba, 0x4dba }, /* 0x4dbb */ { false, 0x4dbb, 0x4dbb }, /* 0x4dbc */ { false, 0x4dbc, 0x4dbc }, /* 0x4dbd */ { false, 0x4dbd, 0x4dbd }, /* 0x4dbe */ { false, 0x4dbe, 0x4dbe }, /* 0x4dbf */ { false, 0x4dbf, 0x4dbf }, /* 0x4dc0 */ { false, 0x4dc0, 0x4dc0 }, /* 0x4dc1 */ { false, 0x4dc1, 0x4dc1 }, /* 0x4dc2 */ { false, 0x4dc2, 0x4dc2 }, /* 0x4dc3 */ { false, 0x4dc3, 0x4dc3 }, /* 0x4dc4 */ { false, 0x4dc4, 0x4dc4 }, /* 0x4dc5 */ { false, 0x4dc5, 0x4dc5 }, /* 0x4dc6 */ { false, 0x4dc6, 0x4dc6 }, /* 0x4dc7 */ { false, 0x4dc7, 0x4dc7 }, /* 0x4dc8 */ { false, 0x4dc8, 0x4dc8 }, /* 0x4dc9 */ { false, 0x4dc9, 0x4dc9 }, /* 0x4dca */ { false, 0x4dca, 0x4dca }, /* 0x4dcb */ { false, 0x4dcb, 0x4dcb }, /* 0x4dcc */ { false, 0x4dcc, 0x4dcc }, /* 0x4dcd */ { false, 0x4dcd, 0x4dcd }, /* 0x4dce */ { false, 0x4dce, 0x4dce }, /* 0x4dcf */ { false, 0x4dcf, 0x4dcf }, /* 0x4dd0 */ { false, 0x4dd0, 0x4dd0 }, /* 0x4dd1 */ { false, 0x4dd1, 0x4dd1 }, /* 0x4dd2 */ { false, 0x4dd2, 0x4dd2 }, /* 0x4dd3 */ { false, 0x4dd3, 0x4dd3 }, /* 0x4dd4 */ { false, 0x4dd4, 0x4dd4 }, /* 0x4dd5 */ { false, 0x4dd5, 0x4dd5 }, /* 0x4dd6 */ { false, 0x4dd6, 0x4dd6 }, /* 0x4dd7 */ { false, 0x4dd7, 0x4dd7 }, /* 0x4dd8 */ { false, 0x4dd8, 0x4dd8 }, /* 0x4dd9 */ { false, 0x4dd9, 0x4dd9 }, /* 0x4dda */ { false, 0x4dda, 0x4dda }, /* 0x4ddb */ { false, 0x4ddb, 0x4ddb }, /* 0x4ddc */ { false, 0x4ddc, 0x4ddc }, /* 0x4ddd */ { false, 0x4ddd, 0x4ddd }, /* 0x4dde */ { false, 0x4dde, 0x4dde }, /* 0x4ddf */ { false, 0x4ddf, 0x4ddf }, /* 0x4de0 */ { false, 0x4de0, 0x4de0 }, /* 0x4de1 */ { false, 0x4de1, 0x4de1 }, /* 0x4de2 */ { false, 0x4de2, 0x4de2 }, /* 0x4de3 */ { false, 0x4de3, 0x4de3 }, /* 0x4de4 */ { false, 0x4de4, 0x4de4 }, /* 0x4de5 */ { false, 0x4de5, 0x4de5 }, /* 0x4de6 */ { false, 0x4de6, 0x4de6 }, /* 0x4de7 */ { false, 0x4de7, 0x4de7 }, /* 0x4de8 */ { false, 0x4de8, 0x4de8 }, /* 0x4de9 */ { false, 0x4de9, 0x4de9 }, /* 0x4dea */ { false, 0x4dea, 0x4dea }, /* 0x4deb */ { false, 0x4deb, 0x4deb }, /* 0x4dec */ { false, 0x4dec, 0x4dec }, /* 0x4ded */ { false, 0x4ded, 0x4ded }, /* 0x4dee */ { false, 0x4dee, 0x4dee }, /* 0x4def */ { false, 0x4def, 0x4def }, /* 0x4df0 */ { false, 0x4df0, 0x4df0 }, /* 0x4df1 */ { false, 0x4df1, 0x4df1 }, /* 0x4df2 */ { false, 0x4df2, 0x4df2 }, /* 0x4df3 */ { false, 0x4df3, 0x4df3 }, /* 0x4df4 */ { false, 0x4df4, 0x4df4 }, /* 0x4df5 */ { false, 0x4df5, 0x4df5 }, /* 0x4df6 */ { false, 0x4df6, 0x4df6 }, /* 0x4df7 */ { false, 0x4df7, 0x4df7 }, /* 0x4df8 */ { false, 0x4df8, 0x4df8 }, /* 0x4df9 */ { false, 0x4df9, 0x4df9 }, /* 0x4dfa */ { false, 0x4dfa, 0x4dfa }, /* 0x4dfb */ { false, 0x4dfb, 0x4dfb }, /* 0x4dfc */ { false, 0x4dfc, 0x4dfc }, /* 0x4dfd */ { false, 0x4dfd, 0x4dfd }, /* 0x4dfe */ { false, 0x4dfe, 0x4dfe }, /* 0x4dff */ { false, 0x4dff, 0x4dff }, /* 0x4e00 */ { true, 0x4e00, 0x4e00 }, /* 0x4e01 */ { false, 0x4e01, 0x4e01 }, /* 0x4e02 */ { false, 0x4e02, 0x4e02 }, /* 0x4e03 */ { false, 0x4e03, 0x4e03 }, /* 0x4e04 */ { false, 0x4e04, 0x4e04 }, /* 0x4e05 */ { false, 0x4e05, 0x4e05 }, /* 0x4e06 */ { false, 0x4e06, 0x4e06 }, /* 0x4e07 */ { false, 0x4e07, 0x4e07 }, /* 0x4e08 */ { false, 0x4e08, 0x4e08 }, /* 0x4e09 */ { false, 0x4e09, 0x4e09 }, /* 0x4e0a */ { false, 0x4e0a, 0x4e0a }, /* 0x4e0b */ { false, 0x4e0b, 0x4e0b }, /* 0x4e0c */ { false, 0x4e0c, 0x4e0c }, /* 0x4e0d */ { false, 0x4e0d, 0x4e0d }, /* 0x4e0e */ { false, 0x4e0e, 0x4e0e }, /* 0x4e0f */ { false, 0x4e0f, 0x4e0f }, /* 0x4e10 */ { false, 0x4e10, 0x4e10 }, /* 0x4e11 */ { false, 0x4e11, 0x4e11 }, /* 0x4e12 */ { false, 0x4e12, 0x4e12 }, /* 0x4e13 */ { false, 0x4e13, 0x4e13 }, /* 0x4e14 */ { false, 0x4e14, 0x4e14 }, /* 0x4e15 */ { false, 0x4e15, 0x4e15 }, /* 0x4e16 */ { false, 0x4e16, 0x4e16 }, /* 0x4e17 */ { false, 0x4e17, 0x4e17 }, /* 0x4e18 */ { false, 0x4e18, 0x4e18 }, /* 0x4e19 */ { false, 0x4e19, 0x4e19 }, /* 0x4e1a */ { false, 0x4e1a, 0x4e1a }, /* 0x4e1b */ { false, 0x4e1b, 0x4e1b }, /* 0x4e1c */ { false, 0x4e1c, 0x4e1c }, /* 0x4e1d */ { false, 0x4e1d, 0x4e1d }, /* 0x4e1e */ { false, 0x4e1e, 0x4e1e }, /* 0x4e1f */ { false, 0x4e1f, 0x4e1f }, /* 0x4e20 */ { false, 0x4e20, 0x4e20 }, /* 0x4e21 */ { false, 0x4e21, 0x4e21 }, /* 0x4e22 */ { false, 0x4e22, 0x4e22 }, /* 0x4e23 */ { false, 0x4e23, 0x4e23 }, /* 0x4e24 */ { false, 0x4e24, 0x4e24 }, /* 0x4e25 */ { false, 0x4e25, 0x4e25 }, /* 0x4e26 */ { false, 0x4e26, 0x4e26 }, /* 0x4e27 */ { false, 0x4e27, 0x4e27 }, /* 0x4e28 */ { false, 0x4e28, 0x4e28 }, /* 0x4e29 */ { false, 0x4e29, 0x4e29 }, /* 0x4e2a */ { false, 0x4e2a, 0x4e2a }, /* 0x4e2b */ { false, 0x4e2b, 0x4e2b }, /* 0x4e2c */ { false, 0x4e2c, 0x4e2c }, /* 0x4e2d */ { false, 0x4e2d, 0x4e2d }, /* 0x4e2e */ { false, 0x4e2e, 0x4e2e }, /* 0x4e2f */ { false, 0x4e2f, 0x4e2f }, /* 0x4e30 */ { false, 0x4e30, 0x4e30 }, /* 0x4e31 */ { false, 0x4e31, 0x4e31 }, /* 0x4e32 */ { false, 0x4e32, 0x4e32 }, /* 0x4e33 */ { false, 0x4e33, 0x4e33 }, /* 0x4e34 */ { false, 0x4e34, 0x4e34 }, /* 0x4e35 */ { false, 0x4e35, 0x4e35 }, /* 0x4e36 */ { false, 0x4e36, 0x4e36 }, /* 0x4e37 */ { false, 0x4e37, 0x4e37 }, /* 0x4e38 */ { false, 0x4e38, 0x4e38 }, /* 0x4e39 */ { false, 0x4e39, 0x4e39 }, /* 0x4e3a */ { false, 0x4e3a, 0x4e3a }, /* 0x4e3b */ { false, 0x4e3b, 0x4e3b }, /* 0x4e3c */ { false, 0x4e3c, 0x4e3c }, /* 0x4e3d */ { false, 0x4e3d, 0x4e3d }, /* 0x4e3e */ { false, 0x4e3e, 0x4e3e }, /* 0x4e3f */ { false, 0x4e3f, 0x4e3f }, /* 0x4e40 */ { false, 0x4e40, 0x4e40 }, /* 0x4e41 */ { false, 0x4e41, 0x4e41 }, /* 0x4e42 */ { false, 0x4e42, 0x4e42 }, /* 0x4e43 */ { false, 0x4e43, 0x4e43 }, /* 0x4e44 */ { false, 0x4e44, 0x4e44 }, /* 0x4e45 */ { false, 0x4e45, 0x4e45 }, /* 0x4e46 */ { false, 0x4e46, 0x4e46 }, /* 0x4e47 */ { false, 0x4e47, 0x4e47 }, /* 0x4e48 */ { false, 0x4e48, 0x4e48 }, /* 0x4e49 */ { false, 0x4e49, 0x4e49 }, /* 0x4e4a */ { false, 0x4e4a, 0x4e4a }, /* 0x4e4b */ { false, 0x4e4b, 0x4e4b }, /* 0x4e4c */ { false, 0x4e4c, 0x4e4c }, /* 0x4e4d */ { false, 0x4e4d, 0x4e4d }, /* 0x4e4e */ { false, 0x4e4e, 0x4e4e }, /* 0x4e4f */ { false, 0x4e4f, 0x4e4f }, /* 0x4e50 */ { false, 0x4e50, 0x4e50 }, /* 0x4e51 */ { false, 0x4e51, 0x4e51 }, /* 0x4e52 */ { false, 0x4e52, 0x4e52 }, /* 0x4e53 */ { false, 0x4e53, 0x4e53 }, /* 0x4e54 */ { false, 0x4e54, 0x4e54 }, /* 0x4e55 */ { false, 0x4e55, 0x4e55 }, /* 0x4e56 */ { false, 0x4e56, 0x4e56 }, /* 0x4e57 */ { false, 0x4e57, 0x4e57 }, /* 0x4e58 */ { false, 0x4e58, 0x4e58 }, /* 0x4e59 */ { false, 0x4e59, 0x4e59 }, /* 0x4e5a */ { false, 0x4e5a, 0x4e5a }, /* 0x4e5b */ { false, 0x4e5b, 0x4e5b }, /* 0x4e5c */ { false, 0x4e5c, 0x4e5c }, /* 0x4e5d */ { false, 0x4e5d, 0x4e5d }, /* 0x4e5e */ { false, 0x4e5e, 0x4e5e }, /* 0x4e5f */ { false, 0x4e5f, 0x4e5f }, /* 0x4e60 */ { false, 0x4e60, 0x4e60 }, /* 0x4e61 */ { false, 0x4e61, 0x4e61 }, /* 0x4e62 */ { false, 0x4e62, 0x4e62 }, /* 0x4e63 */ { false, 0x4e63, 0x4e63 }, /* 0x4e64 */ { false, 0x4e64, 0x4e64 }, /* 0x4e65 */ { false, 0x4e65, 0x4e65 }, /* 0x4e66 */ { false, 0x4e66, 0x4e66 }, /* 0x4e67 */ { false, 0x4e67, 0x4e67 }, /* 0x4e68 */ { false, 0x4e68, 0x4e68 }, /* 0x4e69 */ { false, 0x4e69, 0x4e69 }, /* 0x4e6a */ { false, 0x4e6a, 0x4e6a }, /* 0x4e6b */ { false, 0x4e6b, 0x4e6b }, /* 0x4e6c */ { false, 0x4e6c, 0x4e6c }, /* 0x4e6d */ { false, 0x4e6d, 0x4e6d }, /* 0x4e6e */ { false, 0x4e6e, 0x4e6e }, /* 0x4e6f */ { false, 0x4e6f, 0x4e6f }, /* 0x4e70 */ { false, 0x4e70, 0x4e70 }, /* 0x4e71 */ { false, 0x4e71, 0x4e71 }, /* 0x4e72 */ { false, 0x4e72, 0x4e72 }, /* 0x4e73 */ { false, 0x4e73, 0x4e73 }, /* 0x4e74 */ { false, 0x4e74, 0x4e74 }, /* 0x4e75 */ { false, 0x4e75, 0x4e75 }, /* 0x4e76 */ { false, 0x4e76, 0x4e76 }, /* 0x4e77 */ { false, 0x4e77, 0x4e77 }, /* 0x4e78 */ { false, 0x4e78, 0x4e78 }, /* 0x4e79 */ { false, 0x4e79, 0x4e79 }, /* 0x4e7a */ { false, 0x4e7a, 0x4e7a }, /* 0x4e7b */ { false, 0x4e7b, 0x4e7b }, /* 0x4e7c */ { false, 0x4e7c, 0x4e7c }, /* 0x4e7d */ { false, 0x4e7d, 0x4e7d }, /* 0x4e7e */ { false, 0x4e7e, 0x4e7e }, /* 0x4e7f */ { false, 0x4e7f, 0x4e7f }, /* 0x4e80 */ { false, 0x4e80, 0x4e80 }, /* 0x4e81 */ { false, 0x4e81, 0x4e81 }, /* 0x4e82 */ { false, 0x4e82, 0x4e82 }, /* 0x4e83 */ { false, 0x4e83, 0x4e83 }, /* 0x4e84 */ { false, 0x4e84, 0x4e84 }, /* 0x4e85 */ { false, 0x4e85, 0x4e85 }, /* 0x4e86 */ { false, 0x4e86, 0x4e86 }, /* 0x4e87 */ { false, 0x4e87, 0x4e87 }, /* 0x4e88 */ { false, 0x4e88, 0x4e88 }, /* 0x4e89 */ { false, 0x4e89, 0x4e89 }, /* 0x4e8a */ { false, 0x4e8a, 0x4e8a }, /* 0x4e8b */ { false, 0x4e8b, 0x4e8b }, /* 0x4e8c */ { false, 0x4e8c, 0x4e8c }, /* 0x4e8d */ { false, 0x4e8d, 0x4e8d }, /* 0x4e8e */ { false, 0x4e8e, 0x4e8e }, /* 0x4e8f */ { false, 0x4e8f, 0x4e8f }, /* 0x4e90 */ { false, 0x4e90, 0x4e90 }, /* 0x4e91 */ { false, 0x4e91, 0x4e91 }, /* 0x4e92 */ { false, 0x4e92, 0x4e92 }, /* 0x4e93 */ { false, 0x4e93, 0x4e93 }, /* 0x4e94 */ { false, 0x4e94, 0x4e94 }, /* 0x4e95 */ { false, 0x4e95, 0x4e95 }, /* 0x4e96 */ { false, 0x4e96, 0x4e96 }, /* 0x4e97 */ { false, 0x4e97, 0x4e97 }, /* 0x4e98 */ { false, 0x4e98, 0x4e98 }, /* 0x4e99 */ { false, 0x4e99, 0x4e99 }, /* 0x4e9a */ { false, 0x4e9a, 0x4e9a }, /* 0x4e9b */ { false, 0x4e9b, 0x4e9b }, /* 0x4e9c */ { false, 0x4e9c, 0x4e9c }, /* 0x4e9d */ { false, 0x4e9d, 0x4e9d }, /* 0x4e9e */ { false, 0x4e9e, 0x4e9e }, /* 0x4e9f */ { false, 0x4e9f, 0x4e9f }, /* 0x4ea0 */ { false, 0x4ea0, 0x4ea0 }, /* 0x4ea1 */ { false, 0x4ea1, 0x4ea1 }, /* 0x4ea2 */ { false, 0x4ea2, 0x4ea2 }, /* 0x4ea3 */ { false, 0x4ea3, 0x4ea3 }, /* 0x4ea4 */ { false, 0x4ea4, 0x4ea4 }, /* 0x4ea5 */ { false, 0x4ea5, 0x4ea5 }, /* 0x4ea6 */ { false, 0x4ea6, 0x4ea6 }, /* 0x4ea7 */ { false, 0x4ea7, 0x4ea7 }, /* 0x4ea8 */ { false, 0x4ea8, 0x4ea8 }, /* 0x4ea9 */ { false, 0x4ea9, 0x4ea9 }, /* 0x4eaa */ { false, 0x4eaa, 0x4eaa }, /* 0x4eab */ { false, 0x4eab, 0x4eab }, /* 0x4eac */ { false, 0x4eac, 0x4eac }, /* 0x4ead */ { false, 0x4ead, 0x4ead }, /* 0x4eae */ { false, 0x4eae, 0x4eae }, /* 0x4eaf */ { false, 0x4eaf, 0x4eaf }, /* 0x4eb0 */ { false, 0x4eb0, 0x4eb0 }, /* 0x4eb1 */ { false, 0x4eb1, 0x4eb1 }, /* 0x4eb2 */ { false, 0x4eb2, 0x4eb2 }, /* 0x4eb3 */ { false, 0x4eb3, 0x4eb3 }, /* 0x4eb4 */ { false, 0x4eb4, 0x4eb4 }, /* 0x4eb5 */ { false, 0x4eb5, 0x4eb5 }, /* 0x4eb6 */ { false, 0x4eb6, 0x4eb6 }, /* 0x4eb7 */ { false, 0x4eb7, 0x4eb7 }, /* 0x4eb8 */ { false, 0x4eb8, 0x4eb8 }, /* 0x4eb9 */ { false, 0x4eb9, 0x4eb9 }, /* 0x4eba */ { false, 0x4eba, 0x4eba }, /* 0x4ebb */ { false, 0x4ebb, 0x4ebb }, /* 0x4ebc */ { false, 0x4ebc, 0x4ebc }, /* 0x4ebd */ { false, 0x4ebd, 0x4ebd }, /* 0x4ebe */ { false, 0x4ebe, 0x4ebe }, /* 0x4ebf */ { false, 0x4ebf, 0x4ebf }, /* 0x4ec0 */ { false, 0x4ec0, 0x4ec0 }, /* 0x4ec1 */ { false, 0x4ec1, 0x4ec1 }, /* 0x4ec2 */ { false, 0x4ec2, 0x4ec2 }, /* 0x4ec3 */ { false, 0x4ec3, 0x4ec3 }, /* 0x4ec4 */ { false, 0x4ec4, 0x4ec4 }, /* 0x4ec5 */ { false, 0x4ec5, 0x4ec5 }, /* 0x4ec6 */ { false, 0x4ec6, 0x4ec6 }, /* 0x4ec7 */ { false, 0x4ec7, 0x4ec7 }, /* 0x4ec8 */ { false, 0x4ec8, 0x4ec8 }, /* 0x4ec9 */ { false, 0x4ec9, 0x4ec9 }, /* 0x4eca */ { false, 0x4eca, 0x4eca }, /* 0x4ecb */ { false, 0x4ecb, 0x4ecb }, /* 0x4ecc */ { false, 0x4ecc, 0x4ecc }, /* 0x4ecd */ { false, 0x4ecd, 0x4ecd }, /* 0x4ece */ { false, 0x4ece, 0x4ece }, /* 0x4ecf */ { false, 0x4ecf, 0x4ecf }, /* 0x4ed0 */ { false, 0x4ed0, 0x4ed0 }, /* 0x4ed1 */ { false, 0x4ed1, 0x4ed1 }, /* 0x4ed2 */ { false, 0x4ed2, 0x4ed2 }, /* 0x4ed3 */ { false, 0x4ed3, 0x4ed3 }, /* 0x4ed4 */ { false, 0x4ed4, 0x4ed4 }, /* 0x4ed5 */ { false, 0x4ed5, 0x4ed5 }, /* 0x4ed6 */ { false, 0x4ed6, 0x4ed6 }, /* 0x4ed7 */ { false, 0x4ed7, 0x4ed7 }, /* 0x4ed8 */ { false, 0x4ed8, 0x4ed8 }, /* 0x4ed9 */ { false, 0x4ed9, 0x4ed9 }, /* 0x4eda */ { false, 0x4eda, 0x4eda }, /* 0x4edb */ { false, 0x4edb, 0x4edb }, /* 0x4edc */ { false, 0x4edc, 0x4edc }, /* 0x4edd */ { false, 0x4edd, 0x4edd }, /* 0x4ede */ { false, 0x4ede, 0x4ede }, /* 0x4edf */ { false, 0x4edf, 0x4edf }, /* 0x4ee0 */ { false, 0x4ee0, 0x4ee0 }, /* 0x4ee1 */ { false, 0x4ee1, 0x4ee1 }, /* 0x4ee2 */ { false, 0x4ee2, 0x4ee2 }, /* 0x4ee3 */ { false, 0x4ee3, 0x4ee3 }, /* 0x4ee4 */ { false, 0x4ee4, 0x4ee4 }, /* 0x4ee5 */ { false, 0x4ee5, 0x4ee5 }, /* 0x4ee6 */ { false, 0x4ee6, 0x4ee6 }, /* 0x4ee7 */ { false, 0x4ee7, 0x4ee7 }, /* 0x4ee8 */ { false, 0x4ee8, 0x4ee8 }, /* 0x4ee9 */ { false, 0x4ee9, 0x4ee9 }, /* 0x4eea */ { false, 0x4eea, 0x4eea }, /* 0x4eeb */ { false, 0x4eeb, 0x4eeb }, /* 0x4eec */ { false, 0x4eec, 0x4eec }, /* 0x4eed */ { false, 0x4eed, 0x4eed }, /* 0x4eee */ { false, 0x4eee, 0x4eee }, /* 0x4eef */ { false, 0x4eef, 0x4eef }, /* 0x4ef0 */ { false, 0x4ef0, 0x4ef0 }, /* 0x4ef1 */ { false, 0x4ef1, 0x4ef1 }, /* 0x4ef2 */ { false, 0x4ef2, 0x4ef2 }, /* 0x4ef3 */ { false, 0x4ef3, 0x4ef3 }, /* 0x4ef4 */ { false, 0x4ef4, 0x4ef4 }, /* 0x4ef5 */ { false, 0x4ef5, 0x4ef5 }, /* 0x4ef6 */ { false, 0x4ef6, 0x4ef6 }, /* 0x4ef7 */ { false, 0x4ef7, 0x4ef7 }, /* 0x4ef8 */ { false, 0x4ef8, 0x4ef8 }, /* 0x4ef9 */ { false, 0x4ef9, 0x4ef9 }, /* 0x4efa */ { false, 0x4efa, 0x4efa }, /* 0x4efb */ { false, 0x4efb, 0x4efb }, /* 0x4efc */ { false, 0x4efc, 0x4efc }, /* 0x4efd */ { false, 0x4efd, 0x4efd }, /* 0x4efe */ { false, 0x4efe, 0x4efe }, /* 0x4eff */ { false, 0x4eff, 0x4eff }, /* 0x4f00 */ { false, 0x4f00, 0x4f00 }, /* 0x4f01 */ { false, 0x4f01, 0x4f01 }, /* 0x4f02 */ { false, 0x4f02, 0x4f02 }, /* 0x4f03 */ { false, 0x4f03, 0x4f03 }, /* 0x4f04 */ { false, 0x4f04, 0x4f04 }, /* 0x4f05 */ { false, 0x4f05, 0x4f05 }, /* 0x4f06 */ { false, 0x4f06, 0x4f06 }, /* 0x4f07 */ { false, 0x4f07, 0x4f07 }, /* 0x4f08 */ { false, 0x4f08, 0x4f08 }, /* 0x4f09 */ { false, 0x4f09, 0x4f09 }, /* 0x4f0a */ { false, 0x4f0a, 0x4f0a }, /* 0x4f0b */ { false, 0x4f0b, 0x4f0b }, /* 0x4f0c */ { false, 0x4f0c, 0x4f0c }, /* 0x4f0d */ { false, 0x4f0d, 0x4f0d }, /* 0x4f0e */ { false, 0x4f0e, 0x4f0e }, /* 0x4f0f */ { false, 0x4f0f, 0x4f0f }, /* 0x4f10 */ { false, 0x4f10, 0x4f10 }, /* 0x4f11 */ { false, 0x4f11, 0x4f11 }, /* 0x4f12 */ { false, 0x4f12, 0x4f12 }, /* 0x4f13 */ { false, 0x4f13, 0x4f13 }, /* 0x4f14 */ { false, 0x4f14, 0x4f14 }, /* 0x4f15 */ { false, 0x4f15, 0x4f15 }, /* 0x4f16 */ { false, 0x4f16, 0x4f16 }, /* 0x4f17 */ { false, 0x4f17, 0x4f17 }, /* 0x4f18 */ { false, 0x4f18, 0x4f18 }, /* 0x4f19 */ { false, 0x4f19, 0x4f19 }, /* 0x4f1a */ { false, 0x4f1a, 0x4f1a }, /* 0x4f1b */ { false, 0x4f1b, 0x4f1b }, /* 0x4f1c */ { false, 0x4f1c, 0x4f1c }, /* 0x4f1d */ { false, 0x4f1d, 0x4f1d }, /* 0x4f1e */ { false, 0x4f1e, 0x4f1e }, /* 0x4f1f */ { false, 0x4f1f, 0x4f1f }, /* 0x4f20 */ { false, 0x4f20, 0x4f20 }, /* 0x4f21 */ { false, 0x4f21, 0x4f21 }, /* 0x4f22 */ { false, 0x4f22, 0x4f22 }, /* 0x4f23 */ { false, 0x4f23, 0x4f23 }, /* 0x4f24 */ { false, 0x4f24, 0x4f24 }, /* 0x4f25 */ { false, 0x4f25, 0x4f25 }, /* 0x4f26 */ { false, 0x4f26, 0x4f26 }, /* 0x4f27 */ { false, 0x4f27, 0x4f27 }, /* 0x4f28 */ { false, 0x4f28, 0x4f28 }, /* 0x4f29 */ { false, 0x4f29, 0x4f29 }, /* 0x4f2a */ { false, 0x4f2a, 0x4f2a }, /* 0x4f2b */ { false, 0x4f2b, 0x4f2b }, /* 0x4f2c */ { false, 0x4f2c, 0x4f2c }, /* 0x4f2d */ { false, 0x4f2d, 0x4f2d }, /* 0x4f2e */ { false, 0x4f2e, 0x4f2e }, /* 0x4f2f */ { false, 0x4f2f, 0x4f2f }, /* 0x4f30 */ { false, 0x4f30, 0x4f30 }, /* 0x4f31 */ { false, 0x4f31, 0x4f31 }, /* 0x4f32 */ { false, 0x4f32, 0x4f32 }, /* 0x4f33 */ { false, 0x4f33, 0x4f33 }, /* 0x4f34 */ { false, 0x4f34, 0x4f34 }, /* 0x4f35 */ { false, 0x4f35, 0x4f35 }, /* 0x4f36 */ { false, 0x4f36, 0x4f36 }, /* 0x4f37 */ { false, 0x4f37, 0x4f37 }, /* 0x4f38 */ { false, 0x4f38, 0x4f38 }, /* 0x4f39 */ { false, 0x4f39, 0x4f39 }, /* 0x4f3a */ { false, 0x4f3a, 0x4f3a }, /* 0x4f3b */ { false, 0x4f3b, 0x4f3b }, /* 0x4f3c */ { false, 0x4f3c, 0x4f3c }, /* 0x4f3d */ { false, 0x4f3d, 0x4f3d }, /* 0x4f3e */ { false, 0x4f3e, 0x4f3e }, /* 0x4f3f */ { false, 0x4f3f, 0x4f3f }, /* 0x4f40 */ { false, 0x4f40, 0x4f40 }, /* 0x4f41 */ { false, 0x4f41, 0x4f41 }, /* 0x4f42 */ { false, 0x4f42, 0x4f42 }, /* 0x4f43 */ { false, 0x4f43, 0x4f43 }, /* 0x4f44 */ { false, 0x4f44, 0x4f44 }, /* 0x4f45 */ { false, 0x4f45, 0x4f45 }, /* 0x4f46 */ { false, 0x4f46, 0x4f46 }, /* 0x4f47 */ { false, 0x4f47, 0x4f47 }, /* 0x4f48 */ { false, 0x4f48, 0x4f48 }, /* 0x4f49 */ { false, 0x4f49, 0x4f49 }, /* 0x4f4a */ { false, 0x4f4a, 0x4f4a }, /* 0x4f4b */ { false, 0x4f4b, 0x4f4b }, /* 0x4f4c */ { false, 0x4f4c, 0x4f4c }, /* 0x4f4d */ { false, 0x4f4d, 0x4f4d }, /* 0x4f4e */ { false, 0x4f4e, 0x4f4e }, /* 0x4f4f */ { false, 0x4f4f, 0x4f4f }, /* 0x4f50 */ { false, 0x4f50, 0x4f50 }, /* 0x4f51 */ { false, 0x4f51, 0x4f51 }, /* 0x4f52 */ { false, 0x4f52, 0x4f52 }, /* 0x4f53 */ { false, 0x4f53, 0x4f53 }, /* 0x4f54 */ { false, 0x4f54, 0x4f54 }, /* 0x4f55 */ { false, 0x4f55, 0x4f55 }, /* 0x4f56 */ { false, 0x4f56, 0x4f56 }, /* 0x4f57 */ { false, 0x4f57, 0x4f57 }, /* 0x4f58 */ { false, 0x4f58, 0x4f58 }, /* 0x4f59 */ { false, 0x4f59, 0x4f59 }, /* 0x4f5a */ { false, 0x4f5a, 0x4f5a }, /* 0x4f5b */ { false, 0x4f5b, 0x4f5b }, /* 0x4f5c */ { false, 0x4f5c, 0x4f5c }, /* 0x4f5d */ { false, 0x4f5d, 0x4f5d }, /* 0x4f5e */ { false, 0x4f5e, 0x4f5e }, /* 0x4f5f */ { false, 0x4f5f, 0x4f5f }, /* 0x4f60 */ { false, 0x4f60, 0x4f60 }, /* 0x4f61 */ { false, 0x4f61, 0x4f61 }, /* 0x4f62 */ { false, 0x4f62, 0x4f62 }, /* 0x4f63 */ { false, 0x4f63, 0x4f63 }, /* 0x4f64 */ { false, 0x4f64, 0x4f64 }, /* 0x4f65 */ { false, 0x4f65, 0x4f65 }, /* 0x4f66 */ { false, 0x4f66, 0x4f66 }, /* 0x4f67 */ { false, 0x4f67, 0x4f67 }, /* 0x4f68 */ { false, 0x4f68, 0x4f68 }, /* 0x4f69 */ { false, 0x4f69, 0x4f69 }, /* 0x4f6a */ { false, 0x4f6a, 0x4f6a }, /* 0x4f6b */ { false, 0x4f6b, 0x4f6b }, /* 0x4f6c */ { false, 0x4f6c, 0x4f6c }, /* 0x4f6d */ { false, 0x4f6d, 0x4f6d }, /* 0x4f6e */ { false, 0x4f6e, 0x4f6e }, /* 0x4f6f */ { false, 0x4f6f, 0x4f6f }, /* 0x4f70 */ { false, 0x4f70, 0x4f70 }, /* 0x4f71 */ { false, 0x4f71, 0x4f71 }, /* 0x4f72 */ { false, 0x4f72, 0x4f72 }, /* 0x4f73 */ { false, 0x4f73, 0x4f73 }, /* 0x4f74 */ { false, 0x4f74, 0x4f74 }, /* 0x4f75 */ { false, 0x4f75, 0x4f75 }, /* 0x4f76 */ { false, 0x4f76, 0x4f76 }, /* 0x4f77 */ { false, 0x4f77, 0x4f77 }, /* 0x4f78 */ { false, 0x4f78, 0x4f78 }, /* 0x4f79 */ { false, 0x4f79, 0x4f79 }, /* 0x4f7a */ { false, 0x4f7a, 0x4f7a }, /* 0x4f7b */ { false, 0x4f7b, 0x4f7b }, /* 0x4f7c */ { false, 0x4f7c, 0x4f7c }, /* 0x4f7d */ { false, 0x4f7d, 0x4f7d }, /* 0x4f7e */ { false, 0x4f7e, 0x4f7e }, /* 0x4f7f */ { false, 0x4f7f, 0x4f7f }, /* 0x4f80 */ { false, 0x4f80, 0x4f80 }, /* 0x4f81 */ { false, 0x4f81, 0x4f81 }, /* 0x4f82 */ { false, 0x4f82, 0x4f82 }, /* 0x4f83 */ { false, 0x4f83, 0x4f83 }, /* 0x4f84 */ { false, 0x4f84, 0x4f84 }, /* 0x4f85 */ { false, 0x4f85, 0x4f85 }, /* 0x4f86 */ { false, 0x4f86, 0x4f86 }, /* 0x4f87 */ { false, 0x4f87, 0x4f87 }, /* 0x4f88 */ { false, 0x4f88, 0x4f88 }, /* 0x4f89 */ { false, 0x4f89, 0x4f89 }, /* 0x4f8a */ { false, 0x4f8a, 0x4f8a }, /* 0x4f8b */ { false, 0x4f8b, 0x4f8b }, /* 0x4f8c */ { false, 0x4f8c, 0x4f8c }, /* 0x4f8d */ { false, 0x4f8d, 0x4f8d }, /* 0x4f8e */ { false, 0x4f8e, 0x4f8e }, /* 0x4f8f */ { false, 0x4f8f, 0x4f8f }, /* 0x4f90 */ { false, 0x4f90, 0x4f90 }, /* 0x4f91 */ { false, 0x4f91, 0x4f91 }, /* 0x4f92 */ { false, 0x4f92, 0x4f92 }, /* 0x4f93 */ { false, 0x4f93, 0x4f93 }, /* 0x4f94 */ { false, 0x4f94, 0x4f94 }, /* 0x4f95 */ { false, 0x4f95, 0x4f95 }, /* 0x4f96 */ { false, 0x4f96, 0x4f96 }, /* 0x4f97 */ { false, 0x4f97, 0x4f97 }, /* 0x4f98 */ { false, 0x4f98, 0x4f98 }, /* 0x4f99 */ { false, 0x4f99, 0x4f99 }, /* 0x4f9a */ { false, 0x4f9a, 0x4f9a }, /* 0x4f9b */ { false, 0x4f9b, 0x4f9b }, /* 0x4f9c */ { false, 0x4f9c, 0x4f9c }, /* 0x4f9d */ { false, 0x4f9d, 0x4f9d }, /* 0x4f9e */ { false, 0x4f9e, 0x4f9e }, /* 0x4f9f */ { false, 0x4f9f, 0x4f9f }, /* 0x4fa0 */ { false, 0x4fa0, 0x4fa0 }, /* 0x4fa1 */ { false, 0x4fa1, 0x4fa1 }, /* 0x4fa2 */ { false, 0x4fa2, 0x4fa2 }, /* 0x4fa3 */ { false, 0x4fa3, 0x4fa3 }, /* 0x4fa4 */ { false, 0x4fa4, 0x4fa4 }, /* 0x4fa5 */ { false, 0x4fa5, 0x4fa5 }, /* 0x4fa6 */ { false, 0x4fa6, 0x4fa6 }, /* 0x4fa7 */ { false, 0x4fa7, 0x4fa7 }, /* 0x4fa8 */ { false, 0x4fa8, 0x4fa8 }, /* 0x4fa9 */ { false, 0x4fa9, 0x4fa9 }, /* 0x4faa */ { false, 0x4faa, 0x4faa }, /* 0x4fab */ { false, 0x4fab, 0x4fab }, /* 0x4fac */ { false, 0x4fac, 0x4fac }, /* 0x4fad */ { false, 0x4fad, 0x4fad }, /* 0x4fae */ { false, 0x4fae, 0x4fae }, /* 0x4faf */ { false, 0x4faf, 0x4faf }, /* 0x4fb0 */ { false, 0x4fb0, 0x4fb0 }, /* 0x4fb1 */ { false, 0x4fb1, 0x4fb1 }, /* 0x4fb2 */ { false, 0x4fb2, 0x4fb2 }, /* 0x4fb3 */ { false, 0x4fb3, 0x4fb3 }, /* 0x4fb4 */ { false, 0x4fb4, 0x4fb4 }, /* 0x4fb5 */ { false, 0x4fb5, 0x4fb5 }, /* 0x4fb6 */ { false, 0x4fb6, 0x4fb6 }, /* 0x4fb7 */ { false, 0x4fb7, 0x4fb7 }, /* 0x4fb8 */ { false, 0x4fb8, 0x4fb8 }, /* 0x4fb9 */ { false, 0x4fb9, 0x4fb9 }, /* 0x4fba */ { false, 0x4fba, 0x4fba }, /* 0x4fbb */ { false, 0x4fbb, 0x4fbb }, /* 0x4fbc */ { false, 0x4fbc, 0x4fbc }, /* 0x4fbd */ { false, 0x4fbd, 0x4fbd }, /* 0x4fbe */ { false, 0x4fbe, 0x4fbe }, /* 0x4fbf */ { false, 0x4fbf, 0x4fbf }, /* 0x4fc0 */ { false, 0x4fc0, 0x4fc0 }, /* 0x4fc1 */ { false, 0x4fc1, 0x4fc1 }, /* 0x4fc2 */ { false, 0x4fc2, 0x4fc2 }, /* 0x4fc3 */ { false, 0x4fc3, 0x4fc3 }, /* 0x4fc4 */ { false, 0x4fc4, 0x4fc4 }, /* 0x4fc5 */ { false, 0x4fc5, 0x4fc5 }, /* 0x4fc6 */ { false, 0x4fc6, 0x4fc6 }, /* 0x4fc7 */ { false, 0x4fc7, 0x4fc7 }, /* 0x4fc8 */ { false, 0x4fc8, 0x4fc8 }, /* 0x4fc9 */ { false, 0x4fc9, 0x4fc9 }, /* 0x4fca */ { false, 0x4fca, 0x4fca }, /* 0x4fcb */ { false, 0x4fcb, 0x4fcb }, /* 0x4fcc */ { false, 0x4fcc, 0x4fcc }, /* 0x4fcd */ { false, 0x4fcd, 0x4fcd }, /* 0x4fce */ { false, 0x4fce, 0x4fce }, /* 0x4fcf */ { false, 0x4fcf, 0x4fcf }, /* 0x4fd0 */ { false, 0x4fd0, 0x4fd0 }, /* 0x4fd1 */ { false, 0x4fd1, 0x4fd1 }, /* 0x4fd2 */ { false, 0x4fd2, 0x4fd2 }, /* 0x4fd3 */ { false, 0x4fd3, 0x4fd3 }, /* 0x4fd4 */ { false, 0x4fd4, 0x4fd4 }, /* 0x4fd5 */ { false, 0x4fd5, 0x4fd5 }, /* 0x4fd6 */ { false, 0x4fd6, 0x4fd6 }, /* 0x4fd7 */ { false, 0x4fd7, 0x4fd7 }, /* 0x4fd8 */ { false, 0x4fd8, 0x4fd8 }, /* 0x4fd9 */ { false, 0x4fd9, 0x4fd9 }, /* 0x4fda */ { false, 0x4fda, 0x4fda }, /* 0x4fdb */ { false, 0x4fdb, 0x4fdb }, /* 0x4fdc */ { false, 0x4fdc, 0x4fdc }, /* 0x4fdd */ { false, 0x4fdd, 0x4fdd }, /* 0x4fde */ { false, 0x4fde, 0x4fde }, /* 0x4fdf */ { false, 0x4fdf, 0x4fdf }, /* 0x4fe0 */ { false, 0x4fe0, 0x4fe0 }, /* 0x4fe1 */ { false, 0x4fe1, 0x4fe1 }, /* 0x4fe2 */ { false, 0x4fe2, 0x4fe2 }, /* 0x4fe3 */ { false, 0x4fe3, 0x4fe3 }, /* 0x4fe4 */ { false, 0x4fe4, 0x4fe4 }, /* 0x4fe5 */ { false, 0x4fe5, 0x4fe5 }, /* 0x4fe6 */ { false, 0x4fe6, 0x4fe6 }, /* 0x4fe7 */ { false, 0x4fe7, 0x4fe7 }, /* 0x4fe8 */ { false, 0x4fe8, 0x4fe8 }, /* 0x4fe9 */ { false, 0x4fe9, 0x4fe9 }, /* 0x4fea */ { false, 0x4fea, 0x4fea }, /* 0x4feb */ { false, 0x4feb, 0x4feb }, /* 0x4fec */ { false, 0x4fec, 0x4fec }, /* 0x4fed */ { false, 0x4fed, 0x4fed }, /* 0x4fee */ { false, 0x4fee, 0x4fee }, /* 0x4fef */ { false, 0x4fef, 0x4fef }, /* 0x4ff0 */ { false, 0x4ff0, 0x4ff0 }, /* 0x4ff1 */ { false, 0x4ff1, 0x4ff1 }, /* 0x4ff2 */ { false, 0x4ff2, 0x4ff2 }, /* 0x4ff3 */ { false, 0x4ff3, 0x4ff3 }, /* 0x4ff4 */ { false, 0x4ff4, 0x4ff4 }, /* 0x4ff5 */ { false, 0x4ff5, 0x4ff5 }, /* 0x4ff6 */ { false, 0x4ff6, 0x4ff6 }, /* 0x4ff7 */ { false, 0x4ff7, 0x4ff7 }, /* 0x4ff8 */ { false, 0x4ff8, 0x4ff8 }, /* 0x4ff9 */ { false, 0x4ff9, 0x4ff9 }, /* 0x4ffa */ { false, 0x4ffa, 0x4ffa }, /* 0x4ffb */ { false, 0x4ffb, 0x4ffb }, /* 0x4ffc */ { false, 0x4ffc, 0x4ffc }, /* 0x4ffd */ { false, 0x4ffd, 0x4ffd }, /* 0x4ffe */ { false, 0x4ffe, 0x4ffe }, /* 0x4fff */ { false, 0x4fff, 0x4fff }, /* 0x5000 */ { false, 0x5000, 0x5000 }, /* 0x5001 */ { false, 0x5001, 0x5001 }, /* 0x5002 */ { false, 0x5002, 0x5002 }, /* 0x5003 */ { false, 0x5003, 0x5003 }, /* 0x5004 */ { false, 0x5004, 0x5004 }, /* 0x5005 */ { false, 0x5005, 0x5005 }, /* 0x5006 */ { false, 0x5006, 0x5006 }, /* 0x5007 */ { false, 0x5007, 0x5007 }, /* 0x5008 */ { false, 0x5008, 0x5008 }, /* 0x5009 */ { false, 0x5009, 0x5009 }, /* 0x500a */ { false, 0x500a, 0x500a }, /* 0x500b */ { false, 0x500b, 0x500b }, /* 0x500c */ { false, 0x500c, 0x500c }, /* 0x500d */ { false, 0x500d, 0x500d }, /* 0x500e */ { false, 0x500e, 0x500e }, /* 0x500f */ { false, 0x500f, 0x500f }, /* 0x5010 */ { false, 0x5010, 0x5010 }, /* 0x5011 */ { false, 0x5011, 0x5011 }, /* 0x5012 */ { false, 0x5012, 0x5012 }, /* 0x5013 */ { false, 0x5013, 0x5013 }, /* 0x5014 */ { false, 0x5014, 0x5014 }, /* 0x5015 */ { false, 0x5015, 0x5015 }, /* 0x5016 */ { false, 0x5016, 0x5016 }, /* 0x5017 */ { false, 0x5017, 0x5017 }, /* 0x5018 */ { false, 0x5018, 0x5018 }, /* 0x5019 */ { false, 0x5019, 0x5019 }, /* 0x501a */ { false, 0x501a, 0x501a }, /* 0x501b */ { false, 0x501b, 0x501b }, /* 0x501c */ { false, 0x501c, 0x501c }, /* 0x501d */ { false, 0x501d, 0x501d }, /* 0x501e */ { false, 0x501e, 0x501e }, /* 0x501f */ { false, 0x501f, 0x501f }, /* 0x5020 */ { false, 0x5020, 0x5020 }, /* 0x5021 */ { false, 0x5021, 0x5021 }, /* 0x5022 */ { false, 0x5022, 0x5022 }, /* 0x5023 */ { false, 0x5023, 0x5023 }, /* 0x5024 */ { false, 0x5024, 0x5024 }, /* 0x5025 */ { false, 0x5025, 0x5025 }, /* 0x5026 */ { false, 0x5026, 0x5026 }, /* 0x5027 */ { false, 0x5027, 0x5027 }, /* 0x5028 */ { false, 0x5028, 0x5028 }, /* 0x5029 */ { false, 0x5029, 0x5029 }, /* 0x502a */ { false, 0x502a, 0x502a }, /* 0x502b */ { false, 0x502b, 0x502b }, /* 0x502c */ { false, 0x502c, 0x502c }, /* 0x502d */ { false, 0x502d, 0x502d }, /* 0x502e */ { false, 0x502e, 0x502e }, /* 0x502f */ { false, 0x502f, 0x502f }, /* 0x5030 */ { false, 0x5030, 0x5030 }, /* 0x5031 */ { false, 0x5031, 0x5031 }, /* 0x5032 */ { false, 0x5032, 0x5032 }, /* 0x5033 */ { false, 0x5033, 0x5033 }, /* 0x5034 */ { false, 0x5034, 0x5034 }, /* 0x5035 */ { false, 0x5035, 0x5035 }, /* 0x5036 */ { false, 0x5036, 0x5036 }, /* 0x5037 */ { false, 0x5037, 0x5037 }, /* 0x5038 */ { false, 0x5038, 0x5038 }, /* 0x5039 */ { false, 0x5039, 0x5039 }, /* 0x503a */ { false, 0x503a, 0x503a }, /* 0x503b */ { false, 0x503b, 0x503b }, /* 0x503c */ { false, 0x503c, 0x503c }, /* 0x503d */ { false, 0x503d, 0x503d }, /* 0x503e */ { false, 0x503e, 0x503e }, /* 0x503f */ { false, 0x503f, 0x503f }, /* 0x5040 */ { false, 0x5040, 0x5040 }, /* 0x5041 */ { false, 0x5041, 0x5041 }, /* 0x5042 */ { false, 0x5042, 0x5042 }, /* 0x5043 */ { false, 0x5043, 0x5043 }, /* 0x5044 */ { false, 0x5044, 0x5044 }, /* 0x5045 */ { false, 0x5045, 0x5045 }, /* 0x5046 */ { false, 0x5046, 0x5046 }, /* 0x5047 */ { false, 0x5047, 0x5047 }, /* 0x5048 */ { false, 0x5048, 0x5048 }, /* 0x5049 */ { false, 0x5049, 0x5049 }, /* 0x504a */ { false, 0x504a, 0x504a }, /* 0x504b */ { false, 0x504b, 0x504b }, /* 0x504c */ { false, 0x504c, 0x504c }, /* 0x504d */ { false, 0x504d, 0x504d }, /* 0x504e */ { false, 0x504e, 0x504e }, /* 0x504f */ { false, 0x504f, 0x504f }, /* 0x5050 */ { false, 0x5050, 0x5050 }, /* 0x5051 */ { false, 0x5051, 0x5051 }, /* 0x5052 */ { false, 0x5052, 0x5052 }, /* 0x5053 */ { false, 0x5053, 0x5053 }, /* 0x5054 */ { false, 0x5054, 0x5054 }, /* 0x5055 */ { false, 0x5055, 0x5055 }, /* 0x5056 */ { false, 0x5056, 0x5056 }, /* 0x5057 */ { false, 0x5057, 0x5057 }, /* 0x5058 */ { false, 0x5058, 0x5058 }, /* 0x5059 */ { false, 0x5059, 0x5059 }, /* 0x505a */ { false, 0x505a, 0x505a }, /* 0x505b */ { false, 0x505b, 0x505b }, /* 0x505c */ { false, 0x505c, 0x505c }, /* 0x505d */ { false, 0x505d, 0x505d }, /* 0x505e */ { false, 0x505e, 0x505e }, /* 0x505f */ { false, 0x505f, 0x505f }, /* 0x5060 */ { false, 0x5060, 0x5060 }, /* 0x5061 */ { false, 0x5061, 0x5061 }, /* 0x5062 */ { false, 0x5062, 0x5062 }, /* 0x5063 */ { false, 0x5063, 0x5063 }, /* 0x5064 */ { false, 0x5064, 0x5064 }, /* 0x5065 */ { false, 0x5065, 0x5065 }, /* 0x5066 */ { false, 0x5066, 0x5066 }, /* 0x5067 */ { false, 0x5067, 0x5067 }, /* 0x5068 */ { false, 0x5068, 0x5068 }, /* 0x5069 */ { false, 0x5069, 0x5069 }, /* 0x506a */ { false, 0x506a, 0x506a }, /* 0x506b */ { false, 0x506b, 0x506b }, /* 0x506c */ { false, 0x506c, 0x506c }, /* 0x506d */ { false, 0x506d, 0x506d }, /* 0x506e */ { false, 0x506e, 0x506e }, /* 0x506f */ { false, 0x506f, 0x506f }, /* 0x5070 */ { false, 0x5070, 0x5070 }, /* 0x5071 */ { false, 0x5071, 0x5071 }, /* 0x5072 */ { false, 0x5072, 0x5072 }, /* 0x5073 */ { false, 0x5073, 0x5073 }, /* 0x5074 */ { false, 0x5074, 0x5074 }, /* 0x5075 */ { false, 0x5075, 0x5075 }, /* 0x5076 */ { false, 0x5076, 0x5076 }, /* 0x5077 */ { false, 0x5077, 0x5077 }, /* 0x5078 */ { false, 0x5078, 0x5078 }, /* 0x5079 */ { false, 0x5079, 0x5079 }, /* 0x507a */ { false, 0x507a, 0x507a }, /* 0x507b */ { false, 0x507b, 0x507b }, /* 0x507c */ { false, 0x507c, 0x507c }, /* 0x507d */ { false, 0x507d, 0x507d }, /* 0x507e */ { false, 0x507e, 0x507e }, /* 0x507f */ { false, 0x507f, 0x507f }, /* 0x5080 */ { false, 0x5080, 0x5080 }, /* 0x5081 */ { false, 0x5081, 0x5081 }, /* 0x5082 */ { false, 0x5082, 0x5082 }, /* 0x5083 */ { false, 0x5083, 0x5083 }, /* 0x5084 */ { false, 0x5084, 0x5084 }, /* 0x5085 */ { false, 0x5085, 0x5085 }, /* 0x5086 */ { false, 0x5086, 0x5086 }, /* 0x5087 */ { false, 0x5087, 0x5087 }, /* 0x5088 */ { false, 0x5088, 0x5088 }, /* 0x5089 */ { false, 0x5089, 0x5089 }, /* 0x508a */ { false, 0x508a, 0x508a }, /* 0x508b */ { false, 0x508b, 0x508b }, /* 0x508c */ { false, 0x508c, 0x508c }, /* 0x508d */ { false, 0x508d, 0x508d }, /* 0x508e */ { false, 0x508e, 0x508e }, /* 0x508f */ { false, 0x508f, 0x508f }, /* 0x5090 */ { false, 0x5090, 0x5090 }, /* 0x5091 */ { false, 0x5091, 0x5091 }, /* 0x5092 */ { false, 0x5092, 0x5092 }, /* 0x5093 */ { false, 0x5093, 0x5093 }, /* 0x5094 */ { false, 0x5094, 0x5094 }, /* 0x5095 */ { false, 0x5095, 0x5095 }, /* 0x5096 */ { false, 0x5096, 0x5096 }, /* 0x5097 */ { false, 0x5097, 0x5097 }, /* 0x5098 */ { false, 0x5098, 0x5098 }, /* 0x5099 */ { false, 0x5099, 0x5099 }, /* 0x509a */ { false, 0x509a, 0x509a }, /* 0x509b */ { false, 0x509b, 0x509b }, /* 0x509c */ { false, 0x509c, 0x509c }, /* 0x509d */ { false, 0x509d, 0x509d }, /* 0x509e */ { false, 0x509e, 0x509e }, /* 0x509f */ { false, 0x509f, 0x509f }, /* 0x50a0 */ { false, 0x50a0, 0x50a0 }, /* 0x50a1 */ { false, 0x50a1, 0x50a1 }, /* 0x50a2 */ { false, 0x50a2, 0x50a2 }, /* 0x50a3 */ { false, 0x50a3, 0x50a3 }, /* 0x50a4 */ { false, 0x50a4, 0x50a4 }, /* 0x50a5 */ { false, 0x50a5, 0x50a5 }, /* 0x50a6 */ { false, 0x50a6, 0x50a6 }, /* 0x50a7 */ { false, 0x50a7, 0x50a7 }, /* 0x50a8 */ { false, 0x50a8, 0x50a8 }, /* 0x50a9 */ { false, 0x50a9, 0x50a9 }, /* 0x50aa */ { false, 0x50aa, 0x50aa }, /* 0x50ab */ { false, 0x50ab, 0x50ab }, /* 0x50ac */ { false, 0x50ac, 0x50ac }, /* 0x50ad */ { false, 0x50ad, 0x50ad }, /* 0x50ae */ { false, 0x50ae, 0x50ae }, /* 0x50af */ { false, 0x50af, 0x50af }, /* 0x50b0 */ { false, 0x50b0, 0x50b0 }, /* 0x50b1 */ { false, 0x50b1, 0x50b1 }, /* 0x50b2 */ { false, 0x50b2, 0x50b2 }, /* 0x50b3 */ { false, 0x50b3, 0x50b3 }, /* 0x50b4 */ { false, 0x50b4, 0x50b4 }, /* 0x50b5 */ { false, 0x50b5, 0x50b5 }, /* 0x50b6 */ { false, 0x50b6, 0x50b6 }, /* 0x50b7 */ { false, 0x50b7, 0x50b7 }, /* 0x50b8 */ { false, 0x50b8, 0x50b8 }, /* 0x50b9 */ { false, 0x50b9, 0x50b9 }, /* 0x50ba */ { false, 0x50ba, 0x50ba }, /* 0x50bb */ { false, 0x50bb, 0x50bb }, /* 0x50bc */ { false, 0x50bc, 0x50bc }, /* 0x50bd */ { false, 0x50bd, 0x50bd }, /* 0x50be */ { false, 0x50be, 0x50be }, /* 0x50bf */ { false, 0x50bf, 0x50bf }, /* 0x50c0 */ { false, 0x50c0, 0x50c0 }, /* 0x50c1 */ { false, 0x50c1, 0x50c1 }, /* 0x50c2 */ { false, 0x50c2, 0x50c2 }, /* 0x50c3 */ { false, 0x50c3, 0x50c3 }, /* 0x50c4 */ { false, 0x50c4, 0x50c4 }, /* 0x50c5 */ { false, 0x50c5, 0x50c5 }, /* 0x50c6 */ { false, 0x50c6, 0x50c6 }, /* 0x50c7 */ { false, 0x50c7, 0x50c7 }, /* 0x50c8 */ { false, 0x50c8, 0x50c8 }, /* 0x50c9 */ { false, 0x50c9, 0x50c9 }, /* 0x50ca */ { false, 0x50ca, 0x50ca }, /* 0x50cb */ { false, 0x50cb, 0x50cb }, /* 0x50cc */ { false, 0x50cc, 0x50cc }, /* 0x50cd */ { false, 0x50cd, 0x50cd }, /* 0x50ce */ { false, 0x50ce, 0x50ce }, /* 0x50cf */ { false, 0x50cf, 0x50cf }, /* 0x50d0 */ { false, 0x50d0, 0x50d0 }, /* 0x50d1 */ { false, 0x50d1, 0x50d1 }, /* 0x50d2 */ { false, 0x50d2, 0x50d2 }, /* 0x50d3 */ { false, 0x50d3, 0x50d3 }, /* 0x50d4 */ { false, 0x50d4, 0x50d4 }, /* 0x50d5 */ { false, 0x50d5, 0x50d5 }, /* 0x50d6 */ { false, 0x50d6, 0x50d6 }, /* 0x50d7 */ { false, 0x50d7, 0x50d7 }, /* 0x50d8 */ { false, 0x50d8, 0x50d8 }, /* 0x50d9 */ { false, 0x50d9, 0x50d9 }, /* 0x50da */ { false, 0x50da, 0x50da }, /* 0x50db */ { false, 0x50db, 0x50db }, /* 0x50dc */ { false, 0x50dc, 0x50dc }, /* 0x50dd */ { false, 0x50dd, 0x50dd }, /* 0x50de */ { false, 0x50de, 0x50de }, /* 0x50df */ { false, 0x50df, 0x50df }, /* 0x50e0 */ { false, 0x50e0, 0x50e0 }, /* 0x50e1 */ { false, 0x50e1, 0x50e1 }, /* 0x50e2 */ { false, 0x50e2, 0x50e2 }, /* 0x50e3 */ { false, 0x50e3, 0x50e3 }, /* 0x50e4 */ { false, 0x50e4, 0x50e4 }, /* 0x50e5 */ { false, 0x50e5, 0x50e5 }, /* 0x50e6 */ { false, 0x50e6, 0x50e6 }, /* 0x50e7 */ { false, 0x50e7, 0x50e7 }, /* 0x50e8 */ { false, 0x50e8, 0x50e8 }, /* 0x50e9 */ { false, 0x50e9, 0x50e9 }, /* 0x50ea */ { false, 0x50ea, 0x50ea }, /* 0x50eb */ { false, 0x50eb, 0x50eb }, /* 0x50ec */ { false, 0x50ec, 0x50ec }, /* 0x50ed */ { false, 0x50ed, 0x50ed }, /* 0x50ee */ { false, 0x50ee, 0x50ee }, /* 0x50ef */ { false, 0x50ef, 0x50ef }, /* 0x50f0 */ { false, 0x50f0, 0x50f0 }, /* 0x50f1 */ { false, 0x50f1, 0x50f1 }, /* 0x50f2 */ { false, 0x50f2, 0x50f2 }, /* 0x50f3 */ { false, 0x50f3, 0x50f3 }, /* 0x50f4 */ { false, 0x50f4, 0x50f4 }, /* 0x50f5 */ { false, 0x50f5, 0x50f5 }, /* 0x50f6 */ { false, 0x50f6, 0x50f6 }, /* 0x50f7 */ { false, 0x50f7, 0x50f7 }, /* 0x50f8 */ { false, 0x50f8, 0x50f8 }, /* 0x50f9 */ { false, 0x50f9, 0x50f9 }, /* 0x50fa */ { false, 0x50fa, 0x50fa }, /* 0x50fb */ { false, 0x50fb, 0x50fb }, /* 0x50fc */ { false, 0x50fc, 0x50fc }, /* 0x50fd */ { false, 0x50fd, 0x50fd }, /* 0x50fe */ { false, 0x50fe, 0x50fe }, /* 0x50ff */ { false, 0x50ff, 0x50ff }, /* 0x5100 */ { false, 0x5100, 0x5100 }, /* 0x5101 */ { false, 0x5101, 0x5101 }, /* 0x5102 */ { false, 0x5102, 0x5102 }, /* 0x5103 */ { false, 0x5103, 0x5103 }, /* 0x5104 */ { false, 0x5104, 0x5104 }, /* 0x5105 */ { false, 0x5105, 0x5105 }, /* 0x5106 */ { false, 0x5106, 0x5106 }, /* 0x5107 */ { false, 0x5107, 0x5107 }, /* 0x5108 */ { false, 0x5108, 0x5108 }, /* 0x5109 */ { false, 0x5109, 0x5109 }, /* 0x510a */ { false, 0x510a, 0x510a }, /* 0x510b */ { false, 0x510b, 0x510b }, /* 0x510c */ { false, 0x510c, 0x510c }, /* 0x510d */ { false, 0x510d, 0x510d }, /* 0x510e */ { false, 0x510e, 0x510e }, /* 0x510f */ { false, 0x510f, 0x510f }, /* 0x5110 */ { false, 0x5110, 0x5110 }, /* 0x5111 */ { false, 0x5111, 0x5111 }, /* 0x5112 */ { false, 0x5112, 0x5112 }, /* 0x5113 */ { false, 0x5113, 0x5113 }, /* 0x5114 */ { false, 0x5114, 0x5114 }, /* 0x5115 */ { false, 0x5115, 0x5115 }, /* 0x5116 */ { false, 0x5116, 0x5116 }, /* 0x5117 */ { false, 0x5117, 0x5117 }, /* 0x5118 */ { false, 0x5118, 0x5118 }, /* 0x5119 */ { false, 0x5119, 0x5119 }, /* 0x511a */ { false, 0x511a, 0x511a }, /* 0x511b */ { false, 0x511b, 0x511b }, /* 0x511c */ { false, 0x511c, 0x511c }, /* 0x511d */ { false, 0x511d, 0x511d }, /* 0x511e */ { false, 0x511e, 0x511e }, /* 0x511f */ { false, 0x511f, 0x511f }, /* 0x5120 */ { false, 0x5120, 0x5120 }, /* 0x5121 */ { false, 0x5121, 0x5121 }, /* 0x5122 */ { false, 0x5122, 0x5122 }, /* 0x5123 */ { false, 0x5123, 0x5123 }, /* 0x5124 */ { false, 0x5124, 0x5124 }, /* 0x5125 */ { false, 0x5125, 0x5125 }, /* 0x5126 */ { false, 0x5126, 0x5126 }, /* 0x5127 */ { false, 0x5127, 0x5127 }, /* 0x5128 */ { false, 0x5128, 0x5128 }, /* 0x5129 */ { false, 0x5129, 0x5129 }, /* 0x512a */ { false, 0x512a, 0x512a }, /* 0x512b */ { false, 0x512b, 0x512b }, /* 0x512c */ { false, 0x512c, 0x512c }, /* 0x512d */ { false, 0x512d, 0x512d }, /* 0x512e */ { false, 0x512e, 0x512e }, /* 0x512f */ { false, 0x512f, 0x512f }, /* 0x5130 */ { false, 0x5130, 0x5130 }, /* 0x5131 */ { false, 0x5131, 0x5131 }, /* 0x5132 */ { false, 0x5132, 0x5132 }, /* 0x5133 */ { false, 0x5133, 0x5133 }, /* 0x5134 */ { false, 0x5134, 0x5134 }, /* 0x5135 */ { false, 0x5135, 0x5135 }, /* 0x5136 */ { false, 0x5136, 0x5136 }, /* 0x5137 */ { false, 0x5137, 0x5137 }, /* 0x5138 */ { false, 0x5138, 0x5138 }, /* 0x5139 */ { false, 0x5139, 0x5139 }, /* 0x513a */ { false, 0x513a, 0x513a }, /* 0x513b */ { false, 0x513b, 0x513b }, /* 0x513c */ { false, 0x513c, 0x513c }, /* 0x513d */ { false, 0x513d, 0x513d }, /* 0x513e */ { false, 0x513e, 0x513e }, /* 0x513f */ { false, 0x513f, 0x513f }, /* 0x5140 */ { false, 0x5140, 0x5140 }, /* 0x5141 */ { false, 0x5141, 0x5141 }, /* 0x5142 */ { false, 0x5142, 0x5142 }, /* 0x5143 */ { false, 0x5143, 0x5143 }, /* 0x5144 */ { false, 0x5144, 0x5144 }, /* 0x5145 */ { false, 0x5145, 0x5145 }, /* 0x5146 */ { false, 0x5146, 0x5146 }, /* 0x5147 */ { false, 0x5147, 0x5147 }, /* 0x5148 */ { false, 0x5148, 0x5148 }, /* 0x5149 */ { false, 0x5149, 0x5149 }, /* 0x514a */ { false, 0x514a, 0x514a }, /* 0x514b */ { false, 0x514b, 0x514b }, /* 0x514c */ { false, 0x514c, 0x514c }, /* 0x514d */ { false, 0x514d, 0x514d }, /* 0x514e */ { false, 0x514e, 0x514e }, /* 0x514f */ { false, 0x514f, 0x514f }, /* 0x5150 */ { false, 0x5150, 0x5150 }, /* 0x5151 */ { false, 0x5151, 0x5151 }, /* 0x5152 */ { false, 0x5152, 0x5152 }, /* 0x5153 */ { false, 0x5153, 0x5153 }, /* 0x5154 */ { false, 0x5154, 0x5154 }, /* 0x5155 */ { false, 0x5155, 0x5155 }, /* 0x5156 */ { false, 0x5156, 0x5156 }, /* 0x5157 */ { false, 0x5157, 0x5157 }, /* 0x5158 */ { false, 0x5158, 0x5158 }, /* 0x5159 */ { false, 0x5159, 0x5159 }, /* 0x515a */ { false, 0x515a, 0x515a }, /* 0x515b */ { false, 0x515b, 0x515b }, /* 0x515c */ { false, 0x515c, 0x515c }, /* 0x515d */ { false, 0x515d, 0x515d }, /* 0x515e */ { false, 0x515e, 0x515e }, /* 0x515f */ { false, 0x515f, 0x515f }, /* 0x5160 */ { false, 0x5160, 0x5160 }, /* 0x5161 */ { false, 0x5161, 0x5161 }, /* 0x5162 */ { false, 0x5162, 0x5162 }, /* 0x5163 */ { false, 0x5163, 0x5163 }, /* 0x5164 */ { false, 0x5164, 0x5164 }, /* 0x5165 */ { false, 0x5165, 0x5165 }, /* 0x5166 */ { false, 0x5166, 0x5166 }, /* 0x5167 */ { false, 0x5167, 0x5167 }, /* 0x5168 */ { false, 0x5168, 0x5168 }, /* 0x5169 */ { false, 0x5169, 0x5169 }, /* 0x516a */ { false, 0x516a, 0x516a }, /* 0x516b */ { false, 0x516b, 0x516b }, /* 0x516c */ { false, 0x516c, 0x516c }, /* 0x516d */ { false, 0x516d, 0x516d }, /* 0x516e */ { false, 0x516e, 0x516e }, /* 0x516f */ { false, 0x516f, 0x516f }, /* 0x5170 */ { false, 0x5170, 0x5170 }, /* 0x5171 */ { false, 0x5171, 0x5171 }, /* 0x5172 */ { false, 0x5172, 0x5172 }, /* 0x5173 */ { false, 0x5173, 0x5173 }, /* 0x5174 */ { false, 0x5174, 0x5174 }, /* 0x5175 */ { false, 0x5175, 0x5175 }, /* 0x5176 */ { false, 0x5176, 0x5176 }, /* 0x5177 */ { false, 0x5177, 0x5177 }, /* 0x5178 */ { false, 0x5178, 0x5178 }, /* 0x5179 */ { false, 0x5179, 0x5179 }, /* 0x517a */ { false, 0x517a, 0x517a }, /* 0x517b */ { false, 0x517b, 0x517b }, /* 0x517c */ { false, 0x517c, 0x517c }, /* 0x517d */ { false, 0x517d, 0x517d }, /* 0x517e */ { false, 0x517e, 0x517e }, /* 0x517f */ { false, 0x517f, 0x517f }, /* 0x5180 */ { false, 0x5180, 0x5180 }, /* 0x5181 */ { false, 0x5181, 0x5181 }, /* 0x5182 */ { false, 0x5182, 0x5182 }, /* 0x5183 */ { false, 0x5183, 0x5183 }, /* 0x5184 */ { false, 0x5184, 0x5184 }, /* 0x5185 */ { false, 0x5185, 0x5185 }, /* 0x5186 */ { false, 0x5186, 0x5186 }, /* 0x5187 */ { false, 0x5187, 0x5187 }, /* 0x5188 */ { false, 0x5188, 0x5188 }, /* 0x5189 */ { false, 0x5189, 0x5189 }, /* 0x518a */ { false, 0x518a, 0x518a }, /* 0x518b */ { false, 0x518b, 0x518b }, /* 0x518c */ { false, 0x518c, 0x518c }, /* 0x518d */ { false, 0x518d, 0x518d }, /* 0x518e */ { false, 0x518e, 0x518e }, /* 0x518f */ { false, 0x518f, 0x518f }, /* 0x5190 */ { false, 0x5190, 0x5190 }, /* 0x5191 */ { false, 0x5191, 0x5191 }, /* 0x5192 */ { false, 0x5192, 0x5192 }, /* 0x5193 */ { false, 0x5193, 0x5193 }, /* 0x5194 */ { false, 0x5194, 0x5194 }, /* 0x5195 */ { false, 0x5195, 0x5195 }, /* 0x5196 */ { false, 0x5196, 0x5196 }, /* 0x5197 */ { false, 0x5197, 0x5197 }, /* 0x5198 */ { false, 0x5198, 0x5198 }, /* 0x5199 */ { false, 0x5199, 0x5199 }, /* 0x519a */ { false, 0x519a, 0x519a }, /* 0x519b */ { false, 0x519b, 0x519b }, /* 0x519c */ { false, 0x519c, 0x519c }, /* 0x519d */ { false, 0x519d, 0x519d }, /* 0x519e */ { false, 0x519e, 0x519e }, /* 0x519f */ { false, 0x519f, 0x519f }, /* 0x51a0 */ { false, 0x51a0, 0x51a0 }, /* 0x51a1 */ { false, 0x51a1, 0x51a1 }, /* 0x51a2 */ { false, 0x51a2, 0x51a2 }, /* 0x51a3 */ { false, 0x51a3, 0x51a3 }, /* 0x51a4 */ { false, 0x51a4, 0x51a4 }, /* 0x51a5 */ { false, 0x51a5, 0x51a5 }, /* 0x51a6 */ { false, 0x51a6, 0x51a6 }, /* 0x51a7 */ { false, 0x51a7, 0x51a7 }, /* 0x51a8 */ { false, 0x51a8, 0x51a8 }, /* 0x51a9 */ { false, 0x51a9, 0x51a9 }, /* 0x51aa */ { false, 0x51aa, 0x51aa }, /* 0x51ab */ { false, 0x51ab, 0x51ab }, /* 0x51ac */ { false, 0x51ac, 0x51ac }, /* 0x51ad */ { false, 0x51ad, 0x51ad }, /* 0x51ae */ { false, 0x51ae, 0x51ae }, /* 0x51af */ { false, 0x51af, 0x51af }, /* 0x51b0 */ { false, 0x51b0, 0x51b0 }, /* 0x51b1 */ { false, 0x51b1, 0x51b1 }, /* 0x51b2 */ { false, 0x51b2, 0x51b2 }, /* 0x51b3 */ { false, 0x51b3, 0x51b3 }, /* 0x51b4 */ { false, 0x51b4, 0x51b4 }, /* 0x51b5 */ { false, 0x51b5, 0x51b5 }, /* 0x51b6 */ { false, 0x51b6, 0x51b6 }, /* 0x51b7 */ { false, 0x51b7, 0x51b7 }, /* 0x51b8 */ { false, 0x51b8, 0x51b8 }, /* 0x51b9 */ { false, 0x51b9, 0x51b9 }, /* 0x51ba */ { false, 0x51ba, 0x51ba }, /* 0x51bb */ { false, 0x51bb, 0x51bb }, /* 0x51bc */ { false, 0x51bc, 0x51bc }, /* 0x51bd */ { false, 0x51bd, 0x51bd }, /* 0x51be */ { false, 0x51be, 0x51be }, /* 0x51bf */ { false, 0x51bf, 0x51bf }, /* 0x51c0 */ { false, 0x51c0, 0x51c0 }, /* 0x51c1 */ { false, 0x51c1, 0x51c1 }, /* 0x51c2 */ { false, 0x51c2, 0x51c2 }, /* 0x51c3 */ { false, 0x51c3, 0x51c3 }, /* 0x51c4 */ { false, 0x51c4, 0x51c4 }, /* 0x51c5 */ { false, 0x51c5, 0x51c5 }, /* 0x51c6 */ { false, 0x51c6, 0x51c6 }, /* 0x51c7 */ { false, 0x51c7, 0x51c7 }, /* 0x51c8 */ { false, 0x51c8, 0x51c8 }, /* 0x51c9 */ { false, 0x51c9, 0x51c9 }, /* 0x51ca */ { false, 0x51ca, 0x51ca }, /* 0x51cb */ { false, 0x51cb, 0x51cb }, /* 0x51cc */ { false, 0x51cc, 0x51cc }, /* 0x51cd */ { false, 0x51cd, 0x51cd }, /* 0x51ce */ { false, 0x51ce, 0x51ce }, /* 0x51cf */ { false, 0x51cf, 0x51cf }, /* 0x51d0 */ { false, 0x51d0, 0x51d0 }, /* 0x51d1 */ { false, 0x51d1, 0x51d1 }, /* 0x51d2 */ { false, 0x51d2, 0x51d2 }, /* 0x51d3 */ { false, 0x51d3, 0x51d3 }, /* 0x51d4 */ { false, 0x51d4, 0x51d4 }, /* 0x51d5 */ { false, 0x51d5, 0x51d5 }, /* 0x51d6 */ { false, 0x51d6, 0x51d6 }, /* 0x51d7 */ { false, 0x51d7, 0x51d7 }, /* 0x51d8 */ { false, 0x51d8, 0x51d8 }, /* 0x51d9 */ { false, 0x51d9, 0x51d9 }, /* 0x51da */ { false, 0x51da, 0x51da }, /* 0x51db */ { false, 0x51db, 0x51db }, /* 0x51dc */ { false, 0x51dc, 0x51dc }, /* 0x51dd */ { false, 0x51dd, 0x51dd }, /* 0x51de */ { false, 0x51de, 0x51de }, /* 0x51df */ { false, 0x51df, 0x51df }, /* 0x51e0 */ { false, 0x51e0, 0x51e0 }, /* 0x51e1 */ { false, 0x51e1, 0x51e1 }, /* 0x51e2 */ { false, 0x51e2, 0x51e2 }, /* 0x51e3 */ { false, 0x51e3, 0x51e3 }, /* 0x51e4 */ { false, 0x51e4, 0x51e4 }, /* 0x51e5 */ { false, 0x51e5, 0x51e5 }, /* 0x51e6 */ { false, 0x51e6, 0x51e6 }, /* 0x51e7 */ { false, 0x51e7, 0x51e7 }, /* 0x51e8 */ { false, 0x51e8, 0x51e8 }, /* 0x51e9 */ { false, 0x51e9, 0x51e9 }, /* 0x51ea */ { false, 0x51ea, 0x51ea }, /* 0x51eb */ { false, 0x51eb, 0x51eb }, /* 0x51ec */ { false, 0x51ec, 0x51ec }, /* 0x51ed */ { false, 0x51ed, 0x51ed }, /* 0x51ee */ { false, 0x51ee, 0x51ee }, /* 0x51ef */ { false, 0x51ef, 0x51ef }, /* 0x51f0 */ { false, 0x51f0, 0x51f0 }, /* 0x51f1 */ { false, 0x51f1, 0x51f1 }, /* 0x51f2 */ { false, 0x51f2, 0x51f2 }, /* 0x51f3 */ { false, 0x51f3, 0x51f3 }, /* 0x51f4 */ { false, 0x51f4, 0x51f4 }, /* 0x51f5 */ { false, 0x51f5, 0x51f5 }, /* 0x51f6 */ { false, 0x51f6, 0x51f6 }, /* 0x51f7 */ { false, 0x51f7, 0x51f7 }, /* 0x51f8 */ { false, 0x51f8, 0x51f8 }, /* 0x51f9 */ { false, 0x51f9, 0x51f9 }, /* 0x51fa */ { false, 0x51fa, 0x51fa }, /* 0x51fb */ { false, 0x51fb, 0x51fb }, /* 0x51fc */ { false, 0x51fc, 0x51fc }, /* 0x51fd */ { false, 0x51fd, 0x51fd }, /* 0x51fe */ { false, 0x51fe, 0x51fe }, /* 0x51ff */ { false, 0x51ff, 0x51ff }, /* 0x5200 */ { false, 0x5200, 0x5200 }, /* 0x5201 */ { false, 0x5201, 0x5201 }, /* 0x5202 */ { false, 0x5202, 0x5202 }, /* 0x5203 */ { false, 0x5203, 0x5203 }, /* 0x5204 */ { false, 0x5204, 0x5204 }, /* 0x5205 */ { false, 0x5205, 0x5205 }, /* 0x5206 */ { false, 0x5206, 0x5206 }, /* 0x5207 */ { false, 0x5207, 0x5207 }, /* 0x5208 */ { false, 0x5208, 0x5208 }, /* 0x5209 */ { false, 0x5209, 0x5209 }, /* 0x520a */ { false, 0x520a, 0x520a }, /* 0x520b */ { false, 0x520b, 0x520b }, /* 0x520c */ { false, 0x520c, 0x520c }, /* 0x520d */ { false, 0x520d, 0x520d }, /* 0x520e */ { false, 0x520e, 0x520e }, /* 0x520f */ { false, 0x520f, 0x520f }, /* 0x5210 */ { false, 0x5210, 0x5210 }, /* 0x5211 */ { false, 0x5211, 0x5211 }, /* 0x5212 */ { false, 0x5212, 0x5212 }, /* 0x5213 */ { false, 0x5213, 0x5213 }, /* 0x5214 */ { false, 0x5214, 0x5214 }, /* 0x5215 */ { false, 0x5215, 0x5215 }, /* 0x5216 */ { false, 0x5216, 0x5216 }, /* 0x5217 */ { false, 0x5217, 0x5217 }, /* 0x5218 */ { false, 0x5218, 0x5218 }, /* 0x5219 */ { false, 0x5219, 0x5219 }, /* 0x521a */ { false, 0x521a, 0x521a }, /* 0x521b */ { false, 0x521b, 0x521b }, /* 0x521c */ { false, 0x521c, 0x521c }, /* 0x521d */ { false, 0x521d, 0x521d }, /* 0x521e */ { false, 0x521e, 0x521e }, /* 0x521f */ { false, 0x521f, 0x521f }, /* 0x5220 */ { false, 0x5220, 0x5220 }, /* 0x5221 */ { false, 0x5221, 0x5221 }, /* 0x5222 */ { false, 0x5222, 0x5222 }, /* 0x5223 */ { false, 0x5223, 0x5223 }, /* 0x5224 */ { false, 0x5224, 0x5224 }, /* 0x5225 */ { false, 0x5225, 0x5225 }, /* 0x5226 */ { false, 0x5226, 0x5226 }, /* 0x5227 */ { false, 0x5227, 0x5227 }, /* 0x5228 */ { false, 0x5228, 0x5228 }, /* 0x5229 */ { false, 0x5229, 0x5229 }, /* 0x522a */ { false, 0x522a, 0x522a }, /* 0x522b */ { false, 0x522b, 0x522b }, /* 0x522c */ { false, 0x522c, 0x522c }, /* 0x522d */ { false, 0x522d, 0x522d }, /* 0x522e */ { false, 0x522e, 0x522e }, /* 0x522f */ { false, 0x522f, 0x522f }, /* 0x5230 */ { false, 0x5230, 0x5230 }, /* 0x5231 */ { false, 0x5231, 0x5231 }, /* 0x5232 */ { false, 0x5232, 0x5232 }, /* 0x5233 */ { false, 0x5233, 0x5233 }, /* 0x5234 */ { false, 0x5234, 0x5234 }, /* 0x5235 */ { false, 0x5235, 0x5235 }, /* 0x5236 */ { false, 0x5236, 0x5236 }, /* 0x5237 */ { false, 0x5237, 0x5237 }, /* 0x5238 */ { false, 0x5238, 0x5238 }, /* 0x5239 */ { false, 0x5239, 0x5239 }, /* 0x523a */ { false, 0x523a, 0x523a }, /* 0x523b */ { false, 0x523b, 0x523b }, /* 0x523c */ { false, 0x523c, 0x523c }, /* 0x523d */ { false, 0x523d, 0x523d }, /* 0x523e */ { false, 0x523e, 0x523e }, /* 0x523f */ { false, 0x523f, 0x523f }, /* 0x5240 */ { false, 0x5240, 0x5240 }, /* 0x5241 */ { false, 0x5241, 0x5241 }, /* 0x5242 */ { false, 0x5242, 0x5242 }, /* 0x5243 */ { false, 0x5243, 0x5243 }, /* 0x5244 */ { false, 0x5244, 0x5244 }, /* 0x5245 */ { false, 0x5245, 0x5245 }, /* 0x5246 */ { false, 0x5246, 0x5246 }, /* 0x5247 */ { false, 0x5247, 0x5247 }, /* 0x5248 */ { false, 0x5248, 0x5248 }, /* 0x5249 */ { false, 0x5249, 0x5249 }, /* 0x524a */ { false, 0x524a, 0x524a }, /* 0x524b */ { false, 0x524b, 0x524b }, /* 0x524c */ { false, 0x524c, 0x524c }, /* 0x524d */ { false, 0x524d, 0x524d }, /* 0x524e */ { false, 0x524e, 0x524e }, /* 0x524f */ { false, 0x524f, 0x524f }, /* 0x5250 */ { false, 0x5250, 0x5250 }, /* 0x5251 */ { false, 0x5251, 0x5251 }, /* 0x5252 */ { false, 0x5252, 0x5252 }, /* 0x5253 */ { false, 0x5253, 0x5253 }, /* 0x5254 */ { false, 0x5254, 0x5254 }, /* 0x5255 */ { false, 0x5255, 0x5255 }, /* 0x5256 */ { false, 0x5256, 0x5256 }, /* 0x5257 */ { false, 0x5257, 0x5257 }, /* 0x5258 */ { false, 0x5258, 0x5258 }, /* 0x5259 */ { false, 0x5259, 0x5259 }, /* 0x525a */ { false, 0x525a, 0x525a }, /* 0x525b */ { false, 0x525b, 0x525b }, /* 0x525c */ { false, 0x525c, 0x525c }, /* 0x525d */ { false, 0x525d, 0x525d }, /* 0x525e */ { false, 0x525e, 0x525e }, /* 0x525f */ { false, 0x525f, 0x525f }, /* 0x5260 */ { false, 0x5260, 0x5260 }, /* 0x5261 */ { false, 0x5261, 0x5261 }, /* 0x5262 */ { false, 0x5262, 0x5262 }, /* 0x5263 */ { false, 0x5263, 0x5263 }, /* 0x5264 */ { false, 0x5264, 0x5264 }, /* 0x5265 */ { false, 0x5265, 0x5265 }, /* 0x5266 */ { false, 0x5266, 0x5266 }, /* 0x5267 */ { false, 0x5267, 0x5267 }, /* 0x5268 */ { false, 0x5268, 0x5268 }, /* 0x5269 */ { false, 0x5269, 0x5269 }, /* 0x526a */ { false, 0x526a, 0x526a }, /* 0x526b */ { false, 0x526b, 0x526b }, /* 0x526c */ { false, 0x526c, 0x526c }, /* 0x526d */ { false, 0x526d, 0x526d }, /* 0x526e */ { false, 0x526e, 0x526e }, /* 0x526f */ { false, 0x526f, 0x526f }, /* 0x5270 */ { false, 0x5270, 0x5270 }, /* 0x5271 */ { false, 0x5271, 0x5271 }, /* 0x5272 */ { false, 0x5272, 0x5272 }, /* 0x5273 */ { false, 0x5273, 0x5273 }, /* 0x5274 */ { false, 0x5274, 0x5274 }, /* 0x5275 */ { false, 0x5275, 0x5275 }, /* 0x5276 */ { false, 0x5276, 0x5276 }, /* 0x5277 */ { false, 0x5277, 0x5277 }, /* 0x5278 */ { false, 0x5278, 0x5278 }, /* 0x5279 */ { false, 0x5279, 0x5279 }, /* 0x527a */ { false, 0x527a, 0x527a }, /* 0x527b */ { false, 0x527b, 0x527b }, /* 0x527c */ { false, 0x527c, 0x527c }, /* 0x527d */ { false, 0x527d, 0x527d }, /* 0x527e */ { false, 0x527e, 0x527e }, /* 0x527f */ { false, 0x527f, 0x527f }, /* 0x5280 */ { false, 0x5280, 0x5280 }, /* 0x5281 */ { false, 0x5281, 0x5281 }, /* 0x5282 */ { false, 0x5282, 0x5282 }, /* 0x5283 */ { false, 0x5283, 0x5283 }, /* 0x5284 */ { false, 0x5284, 0x5284 }, /* 0x5285 */ { false, 0x5285, 0x5285 }, /* 0x5286 */ { false, 0x5286, 0x5286 }, /* 0x5287 */ { false, 0x5287, 0x5287 }, /* 0x5288 */ { false, 0x5288, 0x5288 }, /* 0x5289 */ { false, 0x5289, 0x5289 }, /* 0x528a */ { false, 0x528a, 0x528a }, /* 0x528b */ { false, 0x528b, 0x528b }, /* 0x528c */ { false, 0x528c, 0x528c }, /* 0x528d */ { false, 0x528d, 0x528d }, /* 0x528e */ { false, 0x528e, 0x528e }, /* 0x528f */ { false, 0x528f, 0x528f }, /* 0x5290 */ { false, 0x5290, 0x5290 }, /* 0x5291 */ { false, 0x5291, 0x5291 }, /* 0x5292 */ { false, 0x5292, 0x5292 }, /* 0x5293 */ { false, 0x5293, 0x5293 }, /* 0x5294 */ { false, 0x5294, 0x5294 }, /* 0x5295 */ { false, 0x5295, 0x5295 }, /* 0x5296 */ { false, 0x5296, 0x5296 }, /* 0x5297 */ { false, 0x5297, 0x5297 }, /* 0x5298 */ { false, 0x5298, 0x5298 }, /* 0x5299 */ { false, 0x5299, 0x5299 }, /* 0x529a */ { false, 0x529a, 0x529a }, /* 0x529b */ { false, 0x529b, 0x529b }, /* 0x529c */ { false, 0x529c, 0x529c }, /* 0x529d */ { false, 0x529d, 0x529d }, /* 0x529e */ { false, 0x529e, 0x529e }, /* 0x529f */ { false, 0x529f, 0x529f }, /* 0x52a0 */ { false, 0x52a0, 0x52a0 }, /* 0x52a1 */ { false, 0x52a1, 0x52a1 }, /* 0x52a2 */ { false, 0x52a2, 0x52a2 }, /* 0x52a3 */ { false, 0x52a3, 0x52a3 }, /* 0x52a4 */ { false, 0x52a4, 0x52a4 }, /* 0x52a5 */ { false, 0x52a5, 0x52a5 }, /* 0x52a6 */ { false, 0x52a6, 0x52a6 }, /* 0x52a7 */ { false, 0x52a7, 0x52a7 }, /* 0x52a8 */ { false, 0x52a8, 0x52a8 }, /* 0x52a9 */ { false, 0x52a9, 0x52a9 }, /* 0x52aa */ { false, 0x52aa, 0x52aa }, /* 0x52ab */ { false, 0x52ab, 0x52ab }, /* 0x52ac */ { false, 0x52ac, 0x52ac }, /* 0x52ad */ { false, 0x52ad, 0x52ad }, /* 0x52ae */ { false, 0x52ae, 0x52ae }, /* 0x52af */ { false, 0x52af, 0x52af }, /* 0x52b0 */ { false, 0x52b0, 0x52b0 }, /* 0x52b1 */ { false, 0x52b1, 0x52b1 }, /* 0x52b2 */ { false, 0x52b2, 0x52b2 }, /* 0x52b3 */ { false, 0x52b3, 0x52b3 }, /* 0x52b4 */ { false, 0x52b4, 0x52b4 }, /* 0x52b5 */ { false, 0x52b5, 0x52b5 }, /* 0x52b6 */ { false, 0x52b6, 0x52b6 }, /* 0x52b7 */ { false, 0x52b7, 0x52b7 }, /* 0x52b8 */ { false, 0x52b8, 0x52b8 }, /* 0x52b9 */ { false, 0x52b9, 0x52b9 }, /* 0x52ba */ { false, 0x52ba, 0x52ba }, /* 0x52bb */ { false, 0x52bb, 0x52bb }, /* 0x52bc */ { false, 0x52bc, 0x52bc }, /* 0x52bd */ { false, 0x52bd, 0x52bd }, /* 0x52be */ { false, 0x52be, 0x52be }, /* 0x52bf */ { false, 0x52bf, 0x52bf }, /* 0x52c0 */ { false, 0x52c0, 0x52c0 }, /* 0x52c1 */ { false, 0x52c1, 0x52c1 }, /* 0x52c2 */ { false, 0x52c2, 0x52c2 }, /* 0x52c3 */ { false, 0x52c3, 0x52c3 }, /* 0x52c4 */ { false, 0x52c4, 0x52c4 }, /* 0x52c5 */ { false, 0x52c5, 0x52c5 }, /* 0x52c6 */ { false, 0x52c6, 0x52c6 }, /* 0x52c7 */ { false, 0x52c7, 0x52c7 }, /* 0x52c8 */ { false, 0x52c8, 0x52c8 }, /* 0x52c9 */ { false, 0x52c9, 0x52c9 }, /* 0x52ca */ { false, 0x52ca, 0x52ca }, /* 0x52cb */ { false, 0x52cb, 0x52cb }, /* 0x52cc */ { false, 0x52cc, 0x52cc }, /* 0x52cd */ { false, 0x52cd, 0x52cd }, /* 0x52ce */ { false, 0x52ce, 0x52ce }, /* 0x52cf */ { false, 0x52cf, 0x52cf }, /* 0x52d0 */ { false, 0x52d0, 0x52d0 }, /* 0x52d1 */ { false, 0x52d1, 0x52d1 }, /* 0x52d2 */ { false, 0x52d2, 0x52d2 }, /* 0x52d3 */ { false, 0x52d3, 0x52d3 }, /* 0x52d4 */ { false, 0x52d4, 0x52d4 }, /* 0x52d5 */ { false, 0x52d5, 0x52d5 }, /* 0x52d6 */ { false, 0x52d6, 0x52d6 }, /* 0x52d7 */ { false, 0x52d7, 0x52d7 }, /* 0x52d8 */ { false, 0x52d8, 0x52d8 }, /* 0x52d9 */ { false, 0x52d9, 0x52d9 }, /* 0x52da */ { false, 0x52da, 0x52da }, /* 0x52db */ { false, 0x52db, 0x52db }, /* 0x52dc */ { false, 0x52dc, 0x52dc }, /* 0x52dd */ { false, 0x52dd, 0x52dd }, /* 0x52de */ { false, 0x52de, 0x52de }, /* 0x52df */ { false, 0x52df, 0x52df }, /* 0x52e0 */ { false, 0x52e0, 0x52e0 }, /* 0x52e1 */ { false, 0x52e1, 0x52e1 }, /* 0x52e2 */ { false, 0x52e2, 0x52e2 }, /* 0x52e3 */ { false, 0x52e3, 0x52e3 }, /* 0x52e4 */ { false, 0x52e4, 0x52e4 }, /* 0x52e5 */ { false, 0x52e5, 0x52e5 }, /* 0x52e6 */ { false, 0x52e6, 0x52e6 }, /* 0x52e7 */ { false, 0x52e7, 0x52e7 }, /* 0x52e8 */ { false, 0x52e8, 0x52e8 }, /* 0x52e9 */ { false, 0x52e9, 0x52e9 }, /* 0x52ea */ { false, 0x52ea, 0x52ea }, /* 0x52eb */ { false, 0x52eb, 0x52eb }, /* 0x52ec */ { false, 0x52ec, 0x52ec }, /* 0x52ed */ { false, 0x52ed, 0x52ed }, /* 0x52ee */ { false, 0x52ee, 0x52ee }, /* 0x52ef */ { false, 0x52ef, 0x52ef }, /* 0x52f0 */ { false, 0x52f0, 0x52f0 }, /* 0x52f1 */ { false, 0x52f1, 0x52f1 }, /* 0x52f2 */ { false, 0x52f2, 0x52f2 }, /* 0x52f3 */ { false, 0x52f3, 0x52f3 }, /* 0x52f4 */ { false, 0x52f4, 0x52f4 }, /* 0x52f5 */ { false, 0x52f5, 0x52f5 }, /* 0x52f6 */ { false, 0x52f6, 0x52f6 }, /* 0x52f7 */ { false, 0x52f7, 0x52f7 }, /* 0x52f8 */ { false, 0x52f8, 0x52f8 }, /* 0x52f9 */ { false, 0x52f9, 0x52f9 }, /* 0x52fa */ { false, 0x52fa, 0x52fa }, /* 0x52fb */ { false, 0x52fb, 0x52fb }, /* 0x52fc */ { false, 0x52fc, 0x52fc }, /* 0x52fd */ { false, 0x52fd, 0x52fd }, /* 0x52fe */ { false, 0x52fe, 0x52fe }, /* 0x52ff */ { false, 0x52ff, 0x52ff }, /* 0x5300 */ { false, 0x5300, 0x5300 }, /* 0x5301 */ { false, 0x5301, 0x5301 }, /* 0x5302 */ { false, 0x5302, 0x5302 }, /* 0x5303 */ { false, 0x5303, 0x5303 }, /* 0x5304 */ { false, 0x5304, 0x5304 }, /* 0x5305 */ { false, 0x5305, 0x5305 }, /* 0x5306 */ { false, 0x5306, 0x5306 }, /* 0x5307 */ { false, 0x5307, 0x5307 }, /* 0x5308 */ { false, 0x5308, 0x5308 }, /* 0x5309 */ { false, 0x5309, 0x5309 }, /* 0x530a */ { false, 0x530a, 0x530a }, /* 0x530b */ { false, 0x530b, 0x530b }, /* 0x530c */ { false, 0x530c, 0x530c }, /* 0x530d */ { false, 0x530d, 0x530d }, /* 0x530e */ { false, 0x530e, 0x530e }, /* 0x530f */ { false, 0x530f, 0x530f }, /* 0x5310 */ { false, 0x5310, 0x5310 }, /* 0x5311 */ { false, 0x5311, 0x5311 }, /* 0x5312 */ { false, 0x5312, 0x5312 }, /* 0x5313 */ { false, 0x5313, 0x5313 }, /* 0x5314 */ { false, 0x5314, 0x5314 }, /* 0x5315 */ { false, 0x5315, 0x5315 }, /* 0x5316 */ { false, 0x5316, 0x5316 }, /* 0x5317 */ { false, 0x5317, 0x5317 }, /* 0x5318 */ { false, 0x5318, 0x5318 }, /* 0x5319 */ { false, 0x5319, 0x5319 }, /* 0x531a */ { false, 0x531a, 0x531a }, /* 0x531b */ { false, 0x531b, 0x531b }, /* 0x531c */ { false, 0x531c, 0x531c }, /* 0x531d */ { false, 0x531d, 0x531d }, /* 0x531e */ { false, 0x531e, 0x531e }, /* 0x531f */ { false, 0x531f, 0x531f }, /* 0x5320 */ { false, 0x5320, 0x5320 }, /* 0x5321 */ { false, 0x5321, 0x5321 }, /* 0x5322 */ { false, 0x5322, 0x5322 }, /* 0x5323 */ { false, 0x5323, 0x5323 }, /* 0x5324 */ { false, 0x5324, 0x5324 }, /* 0x5325 */ { false, 0x5325, 0x5325 }, /* 0x5326 */ { false, 0x5326, 0x5326 }, /* 0x5327 */ { false, 0x5327, 0x5327 }, /* 0x5328 */ { false, 0x5328, 0x5328 }, /* 0x5329 */ { false, 0x5329, 0x5329 }, /* 0x532a */ { false, 0x532a, 0x532a }, /* 0x532b */ { false, 0x532b, 0x532b }, /* 0x532c */ { false, 0x532c, 0x532c }, /* 0x532d */ { false, 0x532d, 0x532d }, /* 0x532e */ { false, 0x532e, 0x532e }, /* 0x532f */ { false, 0x532f, 0x532f }, /* 0x5330 */ { false, 0x5330, 0x5330 }, /* 0x5331 */ { false, 0x5331, 0x5331 }, /* 0x5332 */ { false, 0x5332, 0x5332 }, /* 0x5333 */ { false, 0x5333, 0x5333 }, /* 0x5334 */ { false, 0x5334, 0x5334 }, /* 0x5335 */ { false, 0x5335, 0x5335 }, /* 0x5336 */ { false, 0x5336, 0x5336 }, /* 0x5337 */ { false, 0x5337, 0x5337 }, /* 0x5338 */ { false, 0x5338, 0x5338 }, /* 0x5339 */ { false, 0x5339, 0x5339 }, /* 0x533a */ { false, 0x533a, 0x533a }, /* 0x533b */ { false, 0x533b, 0x533b }, /* 0x533c */ { false, 0x533c, 0x533c }, /* 0x533d */ { false, 0x533d, 0x533d }, /* 0x533e */ { false, 0x533e, 0x533e }, /* 0x533f */ { false, 0x533f, 0x533f }, /* 0x5340 */ { false, 0x5340, 0x5340 }, /* 0x5341 */ { false, 0x5341, 0x5341 }, /* 0x5342 */ { false, 0x5342, 0x5342 }, /* 0x5343 */ { false, 0x5343, 0x5343 }, /* 0x5344 */ { false, 0x5344, 0x5344 }, /* 0x5345 */ { false, 0x5345, 0x5345 }, /* 0x5346 */ { false, 0x5346, 0x5346 }, /* 0x5347 */ { false, 0x5347, 0x5347 }, /* 0x5348 */ { false, 0x5348, 0x5348 }, /* 0x5349 */ { false, 0x5349, 0x5349 }, /* 0x534a */ { false, 0x534a, 0x534a }, /* 0x534b */ { false, 0x534b, 0x534b }, /* 0x534c */ { false, 0x534c, 0x534c }, /* 0x534d */ { false, 0x534d, 0x534d }, /* 0x534e */ { false, 0x534e, 0x534e }, /* 0x534f */ { false, 0x534f, 0x534f }, /* 0x5350 */ { false, 0x5350, 0x5350 }, /* 0x5351 */ { false, 0x5351, 0x5351 }, /* 0x5352 */ { false, 0x5352, 0x5352 }, /* 0x5353 */ { false, 0x5353, 0x5353 }, /* 0x5354 */ { false, 0x5354, 0x5354 }, /* 0x5355 */ { false, 0x5355, 0x5355 }, /* 0x5356 */ { false, 0x5356, 0x5356 }, /* 0x5357 */ { false, 0x5357, 0x5357 }, /* 0x5358 */ { false, 0x5358, 0x5358 }, /* 0x5359 */ { false, 0x5359, 0x5359 }, /* 0x535a */ { false, 0x535a, 0x535a }, /* 0x535b */ { false, 0x535b, 0x535b }, /* 0x535c */ { false, 0x535c, 0x535c }, /* 0x535d */ { false, 0x535d, 0x535d }, /* 0x535e */ { false, 0x535e, 0x535e }, /* 0x535f */ { false, 0x535f, 0x535f }, /* 0x5360 */ { false, 0x5360, 0x5360 }, /* 0x5361 */ { false, 0x5361, 0x5361 }, /* 0x5362 */ { false, 0x5362, 0x5362 }, /* 0x5363 */ { false, 0x5363, 0x5363 }, /* 0x5364 */ { false, 0x5364, 0x5364 }, /* 0x5365 */ { false, 0x5365, 0x5365 }, /* 0x5366 */ { false, 0x5366, 0x5366 }, /* 0x5367 */ { false, 0x5367, 0x5367 }, /* 0x5368 */ { false, 0x5368, 0x5368 }, /* 0x5369 */ { false, 0x5369, 0x5369 }, /* 0x536a */ { false, 0x536a, 0x536a }, /* 0x536b */ { false, 0x536b, 0x536b }, /* 0x536c */ { false, 0x536c, 0x536c }, /* 0x536d */ { false, 0x536d, 0x536d }, /* 0x536e */ { false, 0x536e, 0x536e }, /* 0x536f */ { false, 0x536f, 0x536f }, /* 0x5370 */ { false, 0x5370, 0x5370 }, /* 0x5371 */ { false, 0x5371, 0x5371 }, /* 0x5372 */ { false, 0x5372, 0x5372 }, /* 0x5373 */ { false, 0x5373, 0x5373 }, /* 0x5374 */ { false, 0x5374, 0x5374 }, /* 0x5375 */ { false, 0x5375, 0x5375 }, /* 0x5376 */ { false, 0x5376, 0x5376 }, /* 0x5377 */ { false, 0x5377, 0x5377 }, /* 0x5378 */ { false, 0x5378, 0x5378 }, /* 0x5379 */ { false, 0x5379, 0x5379 }, /* 0x537a */ { false, 0x537a, 0x537a }, /* 0x537b */ { false, 0x537b, 0x537b }, /* 0x537c */ { false, 0x537c, 0x537c }, /* 0x537d */ { false, 0x537d, 0x537d }, /* 0x537e */ { false, 0x537e, 0x537e }, /* 0x537f */ { false, 0x537f, 0x537f }, /* 0x5380 */ { false, 0x5380, 0x5380 }, /* 0x5381 */ { false, 0x5381, 0x5381 }, /* 0x5382 */ { false, 0x5382, 0x5382 }, /* 0x5383 */ { false, 0x5383, 0x5383 }, /* 0x5384 */ { false, 0x5384, 0x5384 }, /* 0x5385 */ { false, 0x5385, 0x5385 }, /* 0x5386 */ { false, 0x5386, 0x5386 }, /* 0x5387 */ { false, 0x5387, 0x5387 }, /* 0x5388 */ { false, 0x5388, 0x5388 }, /* 0x5389 */ { false, 0x5389, 0x5389 }, /* 0x538a */ { false, 0x538a, 0x538a }, /* 0x538b */ { false, 0x538b, 0x538b }, /* 0x538c */ { false, 0x538c, 0x538c }, /* 0x538d */ { false, 0x538d, 0x538d }, /* 0x538e */ { false, 0x538e, 0x538e }, /* 0x538f */ { false, 0x538f, 0x538f }, /* 0x5390 */ { false, 0x5390, 0x5390 }, /* 0x5391 */ { false, 0x5391, 0x5391 }, /* 0x5392 */ { false, 0x5392, 0x5392 }, /* 0x5393 */ { false, 0x5393, 0x5393 }, /* 0x5394 */ { false, 0x5394, 0x5394 }, /* 0x5395 */ { false, 0x5395, 0x5395 }, /* 0x5396 */ { false, 0x5396, 0x5396 }, /* 0x5397 */ { false, 0x5397, 0x5397 }, /* 0x5398 */ { false, 0x5398, 0x5398 }, /* 0x5399 */ { false, 0x5399, 0x5399 }, /* 0x539a */ { false, 0x539a, 0x539a }, /* 0x539b */ { false, 0x539b, 0x539b }, /* 0x539c */ { false, 0x539c, 0x539c }, /* 0x539d */ { false, 0x539d, 0x539d }, /* 0x539e */ { false, 0x539e, 0x539e }, /* 0x539f */ { false, 0x539f, 0x539f }, /* 0x53a0 */ { false, 0x53a0, 0x53a0 }, /* 0x53a1 */ { false, 0x53a1, 0x53a1 }, /* 0x53a2 */ { false, 0x53a2, 0x53a2 }, /* 0x53a3 */ { false, 0x53a3, 0x53a3 }, /* 0x53a4 */ { false, 0x53a4, 0x53a4 }, /* 0x53a5 */ { false, 0x53a5, 0x53a5 }, /* 0x53a6 */ { false, 0x53a6, 0x53a6 }, /* 0x53a7 */ { false, 0x53a7, 0x53a7 }, /* 0x53a8 */ { false, 0x53a8, 0x53a8 }, /* 0x53a9 */ { false, 0x53a9, 0x53a9 }, /* 0x53aa */ { false, 0x53aa, 0x53aa }, /* 0x53ab */ { false, 0x53ab, 0x53ab }, /* 0x53ac */ { false, 0x53ac, 0x53ac }, /* 0x53ad */ { false, 0x53ad, 0x53ad }, /* 0x53ae */ { false, 0x53ae, 0x53ae }, /* 0x53af */ { false, 0x53af, 0x53af }, /* 0x53b0 */ { false, 0x53b0, 0x53b0 }, /* 0x53b1 */ { false, 0x53b1, 0x53b1 }, /* 0x53b2 */ { false, 0x53b2, 0x53b2 }, /* 0x53b3 */ { false, 0x53b3, 0x53b3 }, /* 0x53b4 */ { false, 0x53b4, 0x53b4 }, /* 0x53b5 */ { false, 0x53b5, 0x53b5 }, /* 0x53b6 */ { false, 0x53b6, 0x53b6 }, /* 0x53b7 */ { false, 0x53b7, 0x53b7 }, /* 0x53b8 */ { false, 0x53b8, 0x53b8 }, /* 0x53b9 */ { false, 0x53b9, 0x53b9 }, /* 0x53ba */ { false, 0x53ba, 0x53ba }, /* 0x53bb */ { false, 0x53bb, 0x53bb }, /* 0x53bc */ { false, 0x53bc, 0x53bc }, /* 0x53bd */ { false, 0x53bd, 0x53bd }, /* 0x53be */ { false, 0x53be, 0x53be }, /* 0x53bf */ { false, 0x53bf, 0x53bf }, /* 0x53c0 */ { false, 0x53c0, 0x53c0 }, /* 0x53c1 */ { false, 0x53c1, 0x53c1 }, /* 0x53c2 */ { false, 0x53c2, 0x53c2 }, /* 0x53c3 */ { false, 0x53c3, 0x53c3 }, /* 0x53c4 */ { false, 0x53c4, 0x53c4 }, /* 0x53c5 */ { false, 0x53c5, 0x53c5 }, /* 0x53c6 */ { false, 0x53c6, 0x53c6 }, /* 0x53c7 */ { false, 0x53c7, 0x53c7 }, /* 0x53c8 */ { false, 0x53c8, 0x53c8 }, /* 0x53c9 */ { false, 0x53c9, 0x53c9 }, /* 0x53ca */ { false, 0x53ca, 0x53ca }, /* 0x53cb */ { false, 0x53cb, 0x53cb }, /* 0x53cc */ { false, 0x53cc, 0x53cc }, /* 0x53cd */ { false, 0x53cd, 0x53cd }, /* 0x53ce */ { false, 0x53ce, 0x53ce }, /* 0x53cf */ { false, 0x53cf, 0x53cf }, /* 0x53d0 */ { false, 0x53d0, 0x53d0 }, /* 0x53d1 */ { false, 0x53d1, 0x53d1 }, /* 0x53d2 */ { false, 0x53d2, 0x53d2 }, /* 0x53d3 */ { false, 0x53d3, 0x53d3 }, /* 0x53d4 */ { false, 0x53d4, 0x53d4 }, /* 0x53d5 */ { false, 0x53d5, 0x53d5 }, /* 0x53d6 */ { false, 0x53d6, 0x53d6 }, /* 0x53d7 */ { false, 0x53d7, 0x53d7 }, /* 0x53d8 */ { false, 0x53d8, 0x53d8 }, /* 0x53d9 */ { false, 0x53d9, 0x53d9 }, /* 0x53da */ { false, 0x53da, 0x53da }, /* 0x53db */ { false, 0x53db, 0x53db }, /* 0x53dc */ { false, 0x53dc, 0x53dc }, /* 0x53dd */ { false, 0x53dd, 0x53dd }, /* 0x53de */ { false, 0x53de, 0x53de }, /* 0x53df */ { false, 0x53df, 0x53df }, /* 0x53e0 */ { false, 0x53e0, 0x53e0 }, /* 0x53e1 */ { false, 0x53e1, 0x53e1 }, /* 0x53e2 */ { false, 0x53e2, 0x53e2 }, /* 0x53e3 */ { false, 0x53e3, 0x53e3 }, /* 0x53e4 */ { false, 0x53e4, 0x53e4 }, /* 0x53e5 */ { false, 0x53e5, 0x53e5 }, /* 0x53e6 */ { false, 0x53e6, 0x53e6 }, /* 0x53e7 */ { false, 0x53e7, 0x53e7 }, /* 0x53e8 */ { false, 0x53e8, 0x53e8 }, /* 0x53e9 */ { false, 0x53e9, 0x53e9 }, /* 0x53ea */ { false, 0x53ea, 0x53ea }, /* 0x53eb */ { false, 0x53eb, 0x53eb }, /* 0x53ec */ { false, 0x53ec, 0x53ec }, /* 0x53ed */ { false, 0x53ed, 0x53ed }, /* 0x53ee */ { false, 0x53ee, 0x53ee }, /* 0x53ef */ { false, 0x53ef, 0x53ef }, /* 0x53f0 */ { false, 0x53f0, 0x53f0 }, /* 0x53f1 */ { false, 0x53f1, 0x53f1 }, /* 0x53f2 */ { false, 0x53f2, 0x53f2 }, /* 0x53f3 */ { false, 0x53f3, 0x53f3 }, /* 0x53f4 */ { false, 0x53f4, 0x53f4 }, /* 0x53f5 */ { false, 0x53f5, 0x53f5 }, /* 0x53f6 */ { false, 0x53f6, 0x53f6 }, /* 0x53f7 */ { false, 0x53f7, 0x53f7 }, /* 0x53f8 */ { false, 0x53f8, 0x53f8 }, /* 0x53f9 */ { false, 0x53f9, 0x53f9 }, /* 0x53fa */ { false, 0x53fa, 0x53fa }, /* 0x53fb */ { false, 0x53fb, 0x53fb }, /* 0x53fc */ { false, 0x53fc, 0x53fc }, /* 0x53fd */ { false, 0x53fd, 0x53fd }, /* 0x53fe */ { false, 0x53fe, 0x53fe }, /* 0x53ff */ { false, 0x53ff, 0x53ff }, /* 0x5400 */ { false, 0x5400, 0x5400 }, /* 0x5401 */ { false, 0x5401, 0x5401 }, /* 0x5402 */ { false, 0x5402, 0x5402 }, /* 0x5403 */ { false, 0x5403, 0x5403 }, /* 0x5404 */ { false, 0x5404, 0x5404 }, /* 0x5405 */ { false, 0x5405, 0x5405 }, /* 0x5406 */ { false, 0x5406, 0x5406 }, /* 0x5407 */ { false, 0x5407, 0x5407 }, /* 0x5408 */ { false, 0x5408, 0x5408 }, /* 0x5409 */ { false, 0x5409, 0x5409 }, /* 0x540a */ { false, 0x540a, 0x540a }, /* 0x540b */ { false, 0x540b, 0x540b }, /* 0x540c */ { false, 0x540c, 0x540c }, /* 0x540d */ { false, 0x540d, 0x540d }, /* 0x540e */ { false, 0x540e, 0x540e }, /* 0x540f */ { false, 0x540f, 0x540f }, /* 0x5410 */ { false, 0x5410, 0x5410 }, /* 0x5411 */ { false, 0x5411, 0x5411 }, /* 0x5412 */ { false, 0x5412, 0x5412 }, /* 0x5413 */ { false, 0x5413, 0x5413 }, /* 0x5414 */ { false, 0x5414, 0x5414 }, /* 0x5415 */ { false, 0x5415, 0x5415 }, /* 0x5416 */ { false, 0x5416, 0x5416 }, /* 0x5417 */ { false, 0x5417, 0x5417 }, /* 0x5418 */ { false, 0x5418, 0x5418 }, /* 0x5419 */ { false, 0x5419, 0x5419 }, /* 0x541a */ { false, 0x541a, 0x541a }, /* 0x541b */ { false, 0x541b, 0x541b }, /* 0x541c */ { false, 0x541c, 0x541c }, /* 0x541d */ { false, 0x541d, 0x541d }, /* 0x541e */ { false, 0x541e, 0x541e }, /* 0x541f */ { false, 0x541f, 0x541f }, /* 0x5420 */ { false, 0x5420, 0x5420 }, /* 0x5421 */ { false, 0x5421, 0x5421 }, /* 0x5422 */ { false, 0x5422, 0x5422 }, /* 0x5423 */ { false, 0x5423, 0x5423 }, /* 0x5424 */ { false, 0x5424, 0x5424 }, /* 0x5425 */ { false, 0x5425, 0x5425 }, /* 0x5426 */ { false, 0x5426, 0x5426 }, /* 0x5427 */ { false, 0x5427, 0x5427 }, /* 0x5428 */ { false, 0x5428, 0x5428 }, /* 0x5429 */ { false, 0x5429, 0x5429 }, /* 0x542a */ { false, 0x542a, 0x542a }, /* 0x542b */ { false, 0x542b, 0x542b }, /* 0x542c */ { false, 0x542c, 0x542c }, /* 0x542d */ { false, 0x542d, 0x542d }, /* 0x542e */ { false, 0x542e, 0x542e }, /* 0x542f */ { false, 0x542f, 0x542f }, /* 0x5430 */ { false, 0x5430, 0x5430 }, /* 0x5431 */ { false, 0x5431, 0x5431 }, /* 0x5432 */ { false, 0x5432, 0x5432 }, /* 0x5433 */ { false, 0x5433, 0x5433 }, /* 0x5434 */ { false, 0x5434, 0x5434 }, /* 0x5435 */ { false, 0x5435, 0x5435 }, /* 0x5436 */ { false, 0x5436, 0x5436 }, /* 0x5437 */ { false, 0x5437, 0x5437 }, /* 0x5438 */ { false, 0x5438, 0x5438 }, /* 0x5439 */ { false, 0x5439, 0x5439 }, /* 0x543a */ { false, 0x543a, 0x543a }, /* 0x543b */ { false, 0x543b, 0x543b }, /* 0x543c */ { false, 0x543c, 0x543c }, /* 0x543d */ { false, 0x543d, 0x543d }, /* 0x543e */ { false, 0x543e, 0x543e }, /* 0x543f */ { false, 0x543f, 0x543f }, /* 0x5440 */ { false, 0x5440, 0x5440 }, /* 0x5441 */ { false, 0x5441, 0x5441 }, /* 0x5442 */ { false, 0x5442, 0x5442 }, /* 0x5443 */ { false, 0x5443, 0x5443 }, /* 0x5444 */ { false, 0x5444, 0x5444 }, /* 0x5445 */ { false, 0x5445, 0x5445 }, /* 0x5446 */ { false, 0x5446, 0x5446 }, /* 0x5447 */ { false, 0x5447, 0x5447 }, /* 0x5448 */ { false, 0x5448, 0x5448 }, /* 0x5449 */ { false, 0x5449, 0x5449 }, /* 0x544a */ { false, 0x544a, 0x544a }, /* 0x544b */ { false, 0x544b, 0x544b }, /* 0x544c */ { false, 0x544c, 0x544c }, /* 0x544d */ { false, 0x544d, 0x544d }, /* 0x544e */ { false, 0x544e, 0x544e }, /* 0x544f */ { false, 0x544f, 0x544f }, /* 0x5450 */ { false, 0x5450, 0x5450 }, /* 0x5451 */ { false, 0x5451, 0x5451 }, /* 0x5452 */ { false, 0x5452, 0x5452 }, /* 0x5453 */ { false, 0x5453, 0x5453 }, /* 0x5454 */ { false, 0x5454, 0x5454 }, /* 0x5455 */ { false, 0x5455, 0x5455 }, /* 0x5456 */ { false, 0x5456, 0x5456 }, /* 0x5457 */ { false, 0x5457, 0x5457 }, /* 0x5458 */ { false, 0x5458, 0x5458 }, /* 0x5459 */ { false, 0x5459, 0x5459 }, /* 0x545a */ { false, 0x545a, 0x545a }, /* 0x545b */ { false, 0x545b, 0x545b }, /* 0x545c */ { false, 0x545c, 0x545c }, /* 0x545d */ { false, 0x545d, 0x545d }, /* 0x545e */ { false, 0x545e, 0x545e }, /* 0x545f */ { false, 0x545f, 0x545f }, /* 0x5460 */ { false, 0x5460, 0x5460 }, /* 0x5461 */ { false, 0x5461, 0x5461 }, /* 0x5462 */ { false, 0x5462, 0x5462 }, /* 0x5463 */ { false, 0x5463, 0x5463 }, /* 0x5464 */ { false, 0x5464, 0x5464 }, /* 0x5465 */ { false, 0x5465, 0x5465 }, /* 0x5466 */ { false, 0x5466, 0x5466 }, /* 0x5467 */ { false, 0x5467, 0x5467 }, /* 0x5468 */ { false, 0x5468, 0x5468 }, /* 0x5469 */ { false, 0x5469, 0x5469 }, /* 0x546a */ { false, 0x546a, 0x546a }, /* 0x546b */ { false, 0x546b, 0x546b }, /* 0x546c */ { false, 0x546c, 0x546c }, /* 0x546d */ { false, 0x546d, 0x546d }, /* 0x546e */ { false, 0x546e, 0x546e }, /* 0x546f */ { false, 0x546f, 0x546f }, /* 0x5470 */ { false, 0x5470, 0x5470 }, /* 0x5471 */ { false, 0x5471, 0x5471 }, /* 0x5472 */ { false, 0x5472, 0x5472 }, /* 0x5473 */ { false, 0x5473, 0x5473 }, /* 0x5474 */ { false, 0x5474, 0x5474 }, /* 0x5475 */ { false, 0x5475, 0x5475 }, /* 0x5476 */ { false, 0x5476, 0x5476 }, /* 0x5477 */ { false, 0x5477, 0x5477 }, /* 0x5478 */ { false, 0x5478, 0x5478 }, /* 0x5479 */ { false, 0x5479, 0x5479 }, /* 0x547a */ { false, 0x547a, 0x547a }, /* 0x547b */ { false, 0x547b, 0x547b }, /* 0x547c */ { false, 0x547c, 0x547c }, /* 0x547d */ { false, 0x547d, 0x547d }, /* 0x547e */ { false, 0x547e, 0x547e }, /* 0x547f */ { false, 0x547f, 0x547f }, /* 0x5480 */ { false, 0x5480, 0x5480 }, /* 0x5481 */ { false, 0x5481, 0x5481 }, /* 0x5482 */ { false, 0x5482, 0x5482 }, /* 0x5483 */ { false, 0x5483, 0x5483 }, /* 0x5484 */ { false, 0x5484, 0x5484 }, /* 0x5485 */ { false, 0x5485, 0x5485 }, /* 0x5486 */ { false, 0x5486, 0x5486 }, /* 0x5487 */ { false, 0x5487, 0x5487 }, /* 0x5488 */ { false, 0x5488, 0x5488 }, /* 0x5489 */ { false, 0x5489, 0x5489 }, /* 0x548a */ { false, 0x548a, 0x548a }, /* 0x548b */ { false, 0x548b, 0x548b }, /* 0x548c */ { false, 0x548c, 0x548c }, /* 0x548d */ { false, 0x548d, 0x548d }, /* 0x548e */ { false, 0x548e, 0x548e }, /* 0x548f */ { false, 0x548f, 0x548f }, /* 0x5490 */ { false, 0x5490, 0x5490 }, /* 0x5491 */ { false, 0x5491, 0x5491 }, /* 0x5492 */ { false, 0x5492, 0x5492 }, /* 0x5493 */ { false, 0x5493, 0x5493 }, /* 0x5494 */ { false, 0x5494, 0x5494 }, /* 0x5495 */ { false, 0x5495, 0x5495 }, /* 0x5496 */ { false, 0x5496, 0x5496 }, /* 0x5497 */ { false, 0x5497, 0x5497 }, /* 0x5498 */ { false, 0x5498, 0x5498 }, /* 0x5499 */ { false, 0x5499, 0x5499 }, /* 0x549a */ { false, 0x549a, 0x549a }, /* 0x549b */ { false, 0x549b, 0x549b }, /* 0x549c */ { false, 0x549c, 0x549c }, /* 0x549d */ { false, 0x549d, 0x549d }, /* 0x549e */ { false, 0x549e, 0x549e }, /* 0x549f */ { false, 0x549f, 0x549f }, /* 0x54a0 */ { false, 0x54a0, 0x54a0 }, /* 0x54a1 */ { false, 0x54a1, 0x54a1 }, /* 0x54a2 */ { false, 0x54a2, 0x54a2 }, /* 0x54a3 */ { false, 0x54a3, 0x54a3 }, /* 0x54a4 */ { false, 0x54a4, 0x54a4 }, /* 0x54a5 */ { false, 0x54a5, 0x54a5 }, /* 0x54a6 */ { false, 0x54a6, 0x54a6 }, /* 0x54a7 */ { false, 0x54a7, 0x54a7 }, /* 0x54a8 */ { false, 0x54a8, 0x54a8 }, /* 0x54a9 */ { false, 0x54a9, 0x54a9 }, /* 0x54aa */ { false, 0x54aa, 0x54aa }, /* 0x54ab */ { false, 0x54ab, 0x54ab }, /* 0x54ac */ { false, 0x54ac, 0x54ac }, /* 0x54ad */ { false, 0x54ad, 0x54ad }, /* 0x54ae */ { false, 0x54ae, 0x54ae }, /* 0x54af */ { false, 0x54af, 0x54af }, /* 0x54b0 */ { false, 0x54b0, 0x54b0 }, /* 0x54b1 */ { false, 0x54b1, 0x54b1 }, /* 0x54b2 */ { false, 0x54b2, 0x54b2 }, /* 0x54b3 */ { false, 0x54b3, 0x54b3 }, /* 0x54b4 */ { false, 0x54b4, 0x54b4 }, /* 0x54b5 */ { false, 0x54b5, 0x54b5 }, /* 0x54b6 */ { false, 0x54b6, 0x54b6 }, /* 0x54b7 */ { false, 0x54b7, 0x54b7 }, /* 0x54b8 */ { false, 0x54b8, 0x54b8 }, /* 0x54b9 */ { false, 0x54b9, 0x54b9 }, /* 0x54ba */ { false, 0x54ba, 0x54ba }, /* 0x54bb */ { false, 0x54bb, 0x54bb }, /* 0x54bc */ { false, 0x54bc, 0x54bc }, /* 0x54bd */ { false, 0x54bd, 0x54bd }, /* 0x54be */ { false, 0x54be, 0x54be }, /* 0x54bf */ { false, 0x54bf, 0x54bf }, /* 0x54c0 */ { false, 0x54c0, 0x54c0 }, /* 0x54c1 */ { false, 0x54c1, 0x54c1 }, /* 0x54c2 */ { false, 0x54c2, 0x54c2 }, /* 0x54c3 */ { false, 0x54c3, 0x54c3 }, /* 0x54c4 */ { false, 0x54c4, 0x54c4 }, /* 0x54c5 */ { false, 0x54c5, 0x54c5 }, /* 0x54c6 */ { false, 0x54c6, 0x54c6 }, /* 0x54c7 */ { false, 0x54c7, 0x54c7 }, /* 0x54c8 */ { false, 0x54c8, 0x54c8 }, /* 0x54c9 */ { false, 0x54c9, 0x54c9 }, /* 0x54ca */ { false, 0x54ca, 0x54ca }, /* 0x54cb */ { false, 0x54cb, 0x54cb }, /* 0x54cc */ { false, 0x54cc, 0x54cc }, /* 0x54cd */ { false, 0x54cd, 0x54cd }, /* 0x54ce */ { false, 0x54ce, 0x54ce }, /* 0x54cf */ { false, 0x54cf, 0x54cf }, /* 0x54d0 */ { false, 0x54d0, 0x54d0 }, /* 0x54d1 */ { false, 0x54d1, 0x54d1 }, /* 0x54d2 */ { false, 0x54d2, 0x54d2 }, /* 0x54d3 */ { false, 0x54d3, 0x54d3 }, /* 0x54d4 */ { false, 0x54d4, 0x54d4 }, /* 0x54d5 */ { false, 0x54d5, 0x54d5 }, /* 0x54d6 */ { false, 0x54d6, 0x54d6 }, /* 0x54d7 */ { false, 0x54d7, 0x54d7 }, /* 0x54d8 */ { false, 0x54d8, 0x54d8 }, /* 0x54d9 */ { false, 0x54d9, 0x54d9 }, /* 0x54da */ { false, 0x54da, 0x54da }, /* 0x54db */ { false, 0x54db, 0x54db }, /* 0x54dc */ { false, 0x54dc, 0x54dc }, /* 0x54dd */ { false, 0x54dd, 0x54dd }, /* 0x54de */ { false, 0x54de, 0x54de }, /* 0x54df */ { false, 0x54df, 0x54df }, /* 0x54e0 */ { false, 0x54e0, 0x54e0 }, /* 0x54e1 */ { false, 0x54e1, 0x54e1 }, /* 0x54e2 */ { false, 0x54e2, 0x54e2 }, /* 0x54e3 */ { false, 0x54e3, 0x54e3 }, /* 0x54e4 */ { false, 0x54e4, 0x54e4 }, /* 0x54e5 */ { false, 0x54e5, 0x54e5 }, /* 0x54e6 */ { false, 0x54e6, 0x54e6 }, /* 0x54e7 */ { false, 0x54e7, 0x54e7 }, /* 0x54e8 */ { false, 0x54e8, 0x54e8 }, /* 0x54e9 */ { false, 0x54e9, 0x54e9 }, /* 0x54ea */ { false, 0x54ea, 0x54ea }, /* 0x54eb */ { false, 0x54eb, 0x54eb }, /* 0x54ec */ { false, 0x54ec, 0x54ec }, /* 0x54ed */ { false, 0x54ed, 0x54ed }, /* 0x54ee */ { false, 0x54ee, 0x54ee }, /* 0x54ef */ { false, 0x54ef, 0x54ef }, /* 0x54f0 */ { false, 0x54f0, 0x54f0 }, /* 0x54f1 */ { false, 0x54f1, 0x54f1 }, /* 0x54f2 */ { false, 0x54f2, 0x54f2 }, /* 0x54f3 */ { false, 0x54f3, 0x54f3 }, /* 0x54f4 */ { false, 0x54f4, 0x54f4 }, /* 0x54f5 */ { false, 0x54f5, 0x54f5 }, /* 0x54f6 */ { false, 0x54f6, 0x54f6 }, /* 0x54f7 */ { false, 0x54f7, 0x54f7 }, /* 0x54f8 */ { false, 0x54f8, 0x54f8 }, /* 0x54f9 */ { false, 0x54f9, 0x54f9 }, /* 0x54fa */ { false, 0x54fa, 0x54fa }, /* 0x54fb */ { false, 0x54fb, 0x54fb }, /* 0x54fc */ { false, 0x54fc, 0x54fc }, /* 0x54fd */ { false, 0x54fd, 0x54fd }, /* 0x54fe */ { false, 0x54fe, 0x54fe }, /* 0x54ff */ { false, 0x54ff, 0x54ff }, /* 0x5500 */ { false, 0x5500, 0x5500 }, /* 0x5501 */ { false, 0x5501, 0x5501 }, /* 0x5502 */ { false, 0x5502, 0x5502 }, /* 0x5503 */ { false, 0x5503, 0x5503 }, /* 0x5504 */ { false, 0x5504, 0x5504 }, /* 0x5505 */ { false, 0x5505, 0x5505 }, /* 0x5506 */ { false, 0x5506, 0x5506 }, /* 0x5507 */ { false, 0x5507, 0x5507 }, /* 0x5508 */ { false, 0x5508, 0x5508 }, /* 0x5509 */ { false, 0x5509, 0x5509 }, /* 0x550a */ { false, 0x550a, 0x550a }, /* 0x550b */ { false, 0x550b, 0x550b }, /* 0x550c */ { false, 0x550c, 0x550c }, /* 0x550d */ { false, 0x550d, 0x550d }, /* 0x550e */ { false, 0x550e, 0x550e }, /* 0x550f */ { false, 0x550f, 0x550f }, /* 0x5510 */ { false, 0x5510, 0x5510 }, /* 0x5511 */ { false, 0x5511, 0x5511 }, /* 0x5512 */ { false, 0x5512, 0x5512 }, /* 0x5513 */ { false, 0x5513, 0x5513 }, /* 0x5514 */ { false, 0x5514, 0x5514 }, /* 0x5515 */ { false, 0x5515, 0x5515 }, /* 0x5516 */ { false, 0x5516, 0x5516 }, /* 0x5517 */ { false, 0x5517, 0x5517 }, /* 0x5518 */ { false, 0x5518, 0x5518 }, /* 0x5519 */ { false, 0x5519, 0x5519 }, /* 0x551a */ { false, 0x551a, 0x551a }, /* 0x551b */ { false, 0x551b, 0x551b }, /* 0x551c */ { false, 0x551c, 0x551c }, /* 0x551d */ { false, 0x551d, 0x551d }, /* 0x551e */ { false, 0x551e, 0x551e }, /* 0x551f */ { false, 0x551f, 0x551f }, /* 0x5520 */ { false, 0x5520, 0x5520 }, /* 0x5521 */ { false, 0x5521, 0x5521 }, /* 0x5522 */ { false, 0x5522, 0x5522 }, /* 0x5523 */ { false, 0x5523, 0x5523 }, /* 0x5524 */ { false, 0x5524, 0x5524 }, /* 0x5525 */ { false, 0x5525, 0x5525 }, /* 0x5526 */ { false, 0x5526, 0x5526 }, /* 0x5527 */ { false, 0x5527, 0x5527 }, /* 0x5528 */ { false, 0x5528, 0x5528 }, /* 0x5529 */ { false, 0x5529, 0x5529 }, /* 0x552a */ { false, 0x552a, 0x552a }, /* 0x552b */ { false, 0x552b, 0x552b }, /* 0x552c */ { false, 0x552c, 0x552c }, /* 0x552d */ { false, 0x552d, 0x552d }, /* 0x552e */ { false, 0x552e, 0x552e }, /* 0x552f */ { false, 0x552f, 0x552f }, /* 0x5530 */ { false, 0x5530, 0x5530 }, /* 0x5531 */ { false, 0x5531, 0x5531 }, /* 0x5532 */ { false, 0x5532, 0x5532 }, /* 0x5533 */ { false, 0x5533, 0x5533 }, /* 0x5534 */ { false, 0x5534, 0x5534 }, /* 0x5535 */ { false, 0x5535, 0x5535 }, /* 0x5536 */ { false, 0x5536, 0x5536 }, /* 0x5537 */ { false, 0x5537, 0x5537 }, /* 0x5538 */ { false, 0x5538, 0x5538 }, /* 0x5539 */ { false, 0x5539, 0x5539 }, /* 0x553a */ { false, 0x553a, 0x553a }, /* 0x553b */ { false, 0x553b, 0x553b }, /* 0x553c */ { false, 0x553c, 0x553c }, /* 0x553d */ { false, 0x553d, 0x553d }, /* 0x553e */ { false, 0x553e, 0x553e }, /* 0x553f */ { false, 0x553f, 0x553f }, /* 0x5540 */ { false, 0x5540, 0x5540 }, /* 0x5541 */ { false, 0x5541, 0x5541 }, /* 0x5542 */ { false, 0x5542, 0x5542 }, /* 0x5543 */ { false, 0x5543, 0x5543 }, /* 0x5544 */ { false, 0x5544, 0x5544 }, /* 0x5545 */ { false, 0x5545, 0x5545 }, /* 0x5546 */ { false, 0x5546, 0x5546 }, /* 0x5547 */ { false, 0x5547, 0x5547 }, /* 0x5548 */ { false, 0x5548, 0x5548 }, /* 0x5549 */ { false, 0x5549, 0x5549 }, /* 0x554a */ { false, 0x554a, 0x554a }, /* 0x554b */ { false, 0x554b, 0x554b }, /* 0x554c */ { false, 0x554c, 0x554c }, /* 0x554d */ { false, 0x554d, 0x554d }, /* 0x554e */ { false, 0x554e, 0x554e }, /* 0x554f */ { false, 0x554f, 0x554f }, /* 0x5550 */ { false, 0x5550, 0x5550 }, /* 0x5551 */ { false, 0x5551, 0x5551 }, /* 0x5552 */ { false, 0x5552, 0x5552 }, /* 0x5553 */ { false, 0x5553, 0x5553 }, /* 0x5554 */ { false, 0x5554, 0x5554 }, /* 0x5555 */ { false, 0x5555, 0x5555 }, /* 0x5556 */ { false, 0x5556, 0x5556 }, /* 0x5557 */ { false, 0x5557, 0x5557 }, /* 0x5558 */ { false, 0x5558, 0x5558 }, /* 0x5559 */ { false, 0x5559, 0x5559 }, /* 0x555a */ { false, 0x555a, 0x555a }, /* 0x555b */ { false, 0x555b, 0x555b }, /* 0x555c */ { false, 0x555c, 0x555c }, /* 0x555d */ { false, 0x555d, 0x555d }, /* 0x555e */ { false, 0x555e, 0x555e }, /* 0x555f */ { false, 0x555f, 0x555f }, /* 0x5560 */ { false, 0x5560, 0x5560 }, /* 0x5561 */ { false, 0x5561, 0x5561 }, /* 0x5562 */ { false, 0x5562, 0x5562 }, /* 0x5563 */ { false, 0x5563, 0x5563 }, /* 0x5564 */ { false, 0x5564, 0x5564 }, /* 0x5565 */ { false, 0x5565, 0x5565 }, /* 0x5566 */ { false, 0x5566, 0x5566 }, /* 0x5567 */ { false, 0x5567, 0x5567 }, /* 0x5568 */ { false, 0x5568, 0x5568 }, /* 0x5569 */ { false, 0x5569, 0x5569 }, /* 0x556a */ { false, 0x556a, 0x556a }, /* 0x556b */ { false, 0x556b, 0x556b }, /* 0x556c */ { false, 0x556c, 0x556c }, /* 0x556d */ { false, 0x556d, 0x556d }, /* 0x556e */ { false, 0x556e, 0x556e }, /* 0x556f */ { false, 0x556f, 0x556f }, /* 0x5570 */ { false, 0x5570, 0x5570 }, /* 0x5571 */ { false, 0x5571, 0x5571 }, /* 0x5572 */ { false, 0x5572, 0x5572 }, /* 0x5573 */ { false, 0x5573, 0x5573 }, /* 0x5574 */ { false, 0x5574, 0x5574 }, /* 0x5575 */ { false, 0x5575, 0x5575 }, /* 0x5576 */ { false, 0x5576, 0x5576 }, /* 0x5577 */ { false, 0x5577, 0x5577 }, /* 0x5578 */ { false, 0x5578, 0x5578 }, /* 0x5579 */ { false, 0x5579, 0x5579 }, /* 0x557a */ { false, 0x557a, 0x557a }, /* 0x557b */ { false, 0x557b, 0x557b }, /* 0x557c */ { false, 0x557c, 0x557c }, /* 0x557d */ { false, 0x557d, 0x557d }, /* 0x557e */ { false, 0x557e, 0x557e }, /* 0x557f */ { false, 0x557f, 0x557f }, /* 0x5580 */ { false, 0x5580, 0x5580 }, /* 0x5581 */ { false, 0x5581, 0x5581 }, /* 0x5582 */ { false, 0x5582, 0x5582 }, /* 0x5583 */ { false, 0x5583, 0x5583 }, /* 0x5584 */ { false, 0x5584, 0x5584 }, /* 0x5585 */ { false, 0x5585, 0x5585 }, /* 0x5586 */ { false, 0x5586, 0x5586 }, /* 0x5587 */ { false, 0x5587, 0x5587 }, /* 0x5588 */ { false, 0x5588, 0x5588 }, /* 0x5589 */ { false, 0x5589, 0x5589 }, /* 0x558a */ { false, 0x558a, 0x558a }, /* 0x558b */ { false, 0x558b, 0x558b }, /* 0x558c */ { false, 0x558c, 0x558c }, /* 0x558d */ { false, 0x558d, 0x558d }, /* 0x558e */ { false, 0x558e, 0x558e }, /* 0x558f */ { false, 0x558f, 0x558f }, /* 0x5590 */ { false, 0x5590, 0x5590 }, /* 0x5591 */ { false, 0x5591, 0x5591 }, /* 0x5592 */ { false, 0x5592, 0x5592 }, /* 0x5593 */ { false, 0x5593, 0x5593 }, /* 0x5594 */ { false, 0x5594, 0x5594 }, /* 0x5595 */ { false, 0x5595, 0x5595 }, /* 0x5596 */ { false, 0x5596, 0x5596 }, /* 0x5597 */ { false, 0x5597, 0x5597 }, /* 0x5598 */ { false, 0x5598, 0x5598 }, /* 0x5599 */ { false, 0x5599, 0x5599 }, /* 0x559a */ { false, 0x559a, 0x559a }, /* 0x559b */ { false, 0x559b, 0x559b }, /* 0x559c */ { false, 0x559c, 0x559c }, /* 0x559d */ { false, 0x559d, 0x559d }, /* 0x559e */ { false, 0x559e, 0x559e }, /* 0x559f */ { false, 0x559f, 0x559f }, /* 0x55a0 */ { false, 0x55a0, 0x55a0 }, /* 0x55a1 */ { false, 0x55a1, 0x55a1 }, /* 0x55a2 */ { false, 0x55a2, 0x55a2 }, /* 0x55a3 */ { false, 0x55a3, 0x55a3 }, /* 0x55a4 */ { false, 0x55a4, 0x55a4 }, /* 0x55a5 */ { false, 0x55a5, 0x55a5 }, /* 0x55a6 */ { false, 0x55a6, 0x55a6 }, /* 0x55a7 */ { false, 0x55a7, 0x55a7 }, /* 0x55a8 */ { false, 0x55a8, 0x55a8 }, /* 0x55a9 */ { false, 0x55a9, 0x55a9 }, /* 0x55aa */ { false, 0x55aa, 0x55aa }, /* 0x55ab */ { false, 0x55ab, 0x55ab }, /* 0x55ac */ { false, 0x55ac, 0x55ac }, /* 0x55ad */ { false, 0x55ad, 0x55ad }, /* 0x55ae */ { false, 0x55ae, 0x55ae }, /* 0x55af */ { false, 0x55af, 0x55af }, /* 0x55b0 */ { false, 0x55b0, 0x55b0 }, /* 0x55b1 */ { false, 0x55b1, 0x55b1 }, /* 0x55b2 */ { false, 0x55b2, 0x55b2 }, /* 0x55b3 */ { false, 0x55b3, 0x55b3 }, /* 0x55b4 */ { false, 0x55b4, 0x55b4 }, /* 0x55b5 */ { false, 0x55b5, 0x55b5 }, /* 0x55b6 */ { false, 0x55b6, 0x55b6 }, /* 0x55b7 */ { false, 0x55b7, 0x55b7 }, /* 0x55b8 */ { false, 0x55b8, 0x55b8 }, /* 0x55b9 */ { false, 0x55b9, 0x55b9 }, /* 0x55ba */ { false, 0x55ba, 0x55ba }, /* 0x55bb */ { false, 0x55bb, 0x55bb }, /* 0x55bc */ { false, 0x55bc, 0x55bc }, /* 0x55bd */ { false, 0x55bd, 0x55bd }, /* 0x55be */ { false, 0x55be, 0x55be }, /* 0x55bf */ { false, 0x55bf, 0x55bf }, /* 0x55c0 */ { false, 0x55c0, 0x55c0 }, /* 0x55c1 */ { false, 0x55c1, 0x55c1 }, /* 0x55c2 */ { false, 0x55c2, 0x55c2 }, /* 0x55c3 */ { false, 0x55c3, 0x55c3 }, /* 0x55c4 */ { false, 0x55c4, 0x55c4 }, /* 0x55c5 */ { false, 0x55c5, 0x55c5 }, /* 0x55c6 */ { false, 0x55c6, 0x55c6 }, /* 0x55c7 */ { false, 0x55c7, 0x55c7 }, /* 0x55c8 */ { false, 0x55c8, 0x55c8 }, /* 0x55c9 */ { false, 0x55c9, 0x55c9 }, /* 0x55ca */ { false, 0x55ca, 0x55ca }, /* 0x55cb */ { false, 0x55cb, 0x55cb }, /* 0x55cc */ { false, 0x55cc, 0x55cc }, /* 0x55cd */ { false, 0x55cd, 0x55cd }, /* 0x55ce */ { false, 0x55ce, 0x55ce }, /* 0x55cf */ { false, 0x55cf, 0x55cf }, /* 0x55d0 */ { false, 0x55d0, 0x55d0 }, /* 0x55d1 */ { false, 0x55d1, 0x55d1 }, /* 0x55d2 */ { false, 0x55d2, 0x55d2 }, /* 0x55d3 */ { false, 0x55d3, 0x55d3 }, /* 0x55d4 */ { false, 0x55d4, 0x55d4 }, /* 0x55d5 */ { false, 0x55d5, 0x55d5 }, /* 0x55d6 */ { false, 0x55d6, 0x55d6 }, /* 0x55d7 */ { false, 0x55d7, 0x55d7 }, /* 0x55d8 */ { false, 0x55d8, 0x55d8 }, /* 0x55d9 */ { false, 0x55d9, 0x55d9 }, /* 0x55da */ { false, 0x55da, 0x55da }, /* 0x55db */ { false, 0x55db, 0x55db }, /* 0x55dc */ { false, 0x55dc, 0x55dc }, /* 0x55dd */ { false, 0x55dd, 0x55dd }, /* 0x55de */ { false, 0x55de, 0x55de }, /* 0x55df */ { false, 0x55df, 0x55df }, /* 0x55e0 */ { false, 0x55e0, 0x55e0 }, /* 0x55e1 */ { false, 0x55e1, 0x55e1 }, /* 0x55e2 */ { false, 0x55e2, 0x55e2 }, /* 0x55e3 */ { false, 0x55e3, 0x55e3 }, /* 0x55e4 */ { false, 0x55e4, 0x55e4 }, /* 0x55e5 */ { false, 0x55e5, 0x55e5 }, /* 0x55e6 */ { false, 0x55e6, 0x55e6 }, /* 0x55e7 */ { false, 0x55e7, 0x55e7 }, /* 0x55e8 */ { false, 0x55e8, 0x55e8 }, /* 0x55e9 */ { false, 0x55e9, 0x55e9 }, /* 0x55ea */ { false, 0x55ea, 0x55ea }, /* 0x55eb */ { false, 0x55eb, 0x55eb }, /* 0x55ec */ { false, 0x55ec, 0x55ec }, /* 0x55ed */ { false, 0x55ed, 0x55ed }, /* 0x55ee */ { false, 0x55ee, 0x55ee }, /* 0x55ef */ { false, 0x55ef, 0x55ef }, /* 0x55f0 */ { false, 0x55f0, 0x55f0 }, /* 0x55f1 */ { false, 0x55f1, 0x55f1 }, /* 0x55f2 */ { false, 0x55f2, 0x55f2 }, /* 0x55f3 */ { false, 0x55f3, 0x55f3 }, /* 0x55f4 */ { false, 0x55f4, 0x55f4 }, /* 0x55f5 */ { false, 0x55f5, 0x55f5 }, /* 0x55f6 */ { false, 0x55f6, 0x55f6 }, /* 0x55f7 */ { false, 0x55f7, 0x55f7 }, /* 0x55f8 */ { false, 0x55f8, 0x55f8 }, /* 0x55f9 */ { false, 0x55f9, 0x55f9 }, /* 0x55fa */ { false, 0x55fa, 0x55fa }, /* 0x55fb */ { false, 0x55fb, 0x55fb }, /* 0x55fc */ { false, 0x55fc, 0x55fc }, /* 0x55fd */ { false, 0x55fd, 0x55fd }, /* 0x55fe */ { false, 0x55fe, 0x55fe }, /* 0x55ff */ { false, 0x55ff, 0x55ff }, /* 0x5600 */ { false, 0x5600, 0x5600 }, /* 0x5601 */ { false, 0x5601, 0x5601 }, /* 0x5602 */ { false, 0x5602, 0x5602 }, /* 0x5603 */ { false, 0x5603, 0x5603 }, /* 0x5604 */ { false, 0x5604, 0x5604 }, /* 0x5605 */ { false, 0x5605, 0x5605 }, /* 0x5606 */ { false, 0x5606, 0x5606 }, /* 0x5607 */ { false, 0x5607, 0x5607 }, /* 0x5608 */ { false, 0x5608, 0x5608 }, /* 0x5609 */ { false, 0x5609, 0x5609 }, /* 0x560a */ { false, 0x560a, 0x560a }, /* 0x560b */ { false, 0x560b, 0x560b }, /* 0x560c */ { false, 0x560c, 0x560c }, /* 0x560d */ { false, 0x560d, 0x560d }, /* 0x560e */ { false, 0x560e, 0x560e }, /* 0x560f */ { false, 0x560f, 0x560f }, /* 0x5610 */ { false, 0x5610, 0x5610 }, /* 0x5611 */ { false, 0x5611, 0x5611 }, /* 0x5612 */ { false, 0x5612, 0x5612 }, /* 0x5613 */ { false, 0x5613, 0x5613 }, /* 0x5614 */ { false, 0x5614, 0x5614 }, /* 0x5615 */ { false, 0x5615, 0x5615 }, /* 0x5616 */ { false, 0x5616, 0x5616 }, /* 0x5617 */ { false, 0x5617, 0x5617 }, /* 0x5618 */ { false, 0x5618, 0x5618 }, /* 0x5619 */ { false, 0x5619, 0x5619 }, /* 0x561a */ { false, 0x561a, 0x561a }, /* 0x561b */ { false, 0x561b, 0x561b }, /* 0x561c */ { false, 0x561c, 0x561c }, /* 0x561d */ { false, 0x561d, 0x561d }, /* 0x561e */ { false, 0x561e, 0x561e }, /* 0x561f */ { false, 0x561f, 0x561f }, /* 0x5620 */ { false, 0x5620, 0x5620 }, /* 0x5621 */ { false, 0x5621, 0x5621 }, /* 0x5622 */ { false, 0x5622, 0x5622 }, /* 0x5623 */ { false, 0x5623, 0x5623 }, /* 0x5624 */ { false, 0x5624, 0x5624 }, /* 0x5625 */ { false, 0x5625, 0x5625 }, /* 0x5626 */ { false, 0x5626, 0x5626 }, /* 0x5627 */ { false, 0x5627, 0x5627 }, /* 0x5628 */ { false, 0x5628, 0x5628 }, /* 0x5629 */ { false, 0x5629, 0x5629 }, /* 0x562a */ { false, 0x562a, 0x562a }, /* 0x562b */ { false, 0x562b, 0x562b }, /* 0x562c */ { false, 0x562c, 0x562c }, /* 0x562d */ { false, 0x562d, 0x562d }, /* 0x562e */ { false, 0x562e, 0x562e }, /* 0x562f */ { false, 0x562f, 0x562f }, /* 0x5630 */ { false, 0x5630, 0x5630 }, /* 0x5631 */ { false, 0x5631, 0x5631 }, /* 0x5632 */ { false, 0x5632, 0x5632 }, /* 0x5633 */ { false, 0x5633, 0x5633 }, /* 0x5634 */ { false, 0x5634, 0x5634 }, /* 0x5635 */ { false, 0x5635, 0x5635 }, /* 0x5636 */ { false, 0x5636, 0x5636 }, /* 0x5637 */ { false, 0x5637, 0x5637 }, /* 0x5638 */ { false, 0x5638, 0x5638 }, /* 0x5639 */ { false, 0x5639, 0x5639 }, /* 0x563a */ { false, 0x563a, 0x563a }, /* 0x563b */ { false, 0x563b, 0x563b }, /* 0x563c */ { false, 0x563c, 0x563c }, /* 0x563d */ { false, 0x563d, 0x563d }, /* 0x563e */ { false, 0x563e, 0x563e }, /* 0x563f */ { false, 0x563f, 0x563f }, /* 0x5640 */ { false, 0x5640, 0x5640 }, /* 0x5641 */ { false, 0x5641, 0x5641 }, /* 0x5642 */ { false, 0x5642, 0x5642 }, /* 0x5643 */ { false, 0x5643, 0x5643 }, /* 0x5644 */ { false, 0x5644, 0x5644 }, /* 0x5645 */ { false, 0x5645, 0x5645 }, /* 0x5646 */ { false, 0x5646, 0x5646 }, /* 0x5647 */ { false, 0x5647, 0x5647 }, /* 0x5648 */ { false, 0x5648, 0x5648 }, /* 0x5649 */ { false, 0x5649, 0x5649 }, /* 0x564a */ { false, 0x564a, 0x564a }, /* 0x564b */ { false, 0x564b, 0x564b }, /* 0x564c */ { false, 0x564c, 0x564c }, /* 0x564d */ { false, 0x564d, 0x564d }, /* 0x564e */ { false, 0x564e, 0x564e }, /* 0x564f */ { false, 0x564f, 0x564f }, /* 0x5650 */ { false, 0x5650, 0x5650 }, /* 0x5651 */ { false, 0x5651, 0x5651 }, /* 0x5652 */ { false, 0x5652, 0x5652 }, /* 0x5653 */ { false, 0x5653, 0x5653 }, /* 0x5654 */ { false, 0x5654, 0x5654 }, /* 0x5655 */ { false, 0x5655, 0x5655 }, /* 0x5656 */ { false, 0x5656, 0x5656 }, /* 0x5657 */ { false, 0x5657, 0x5657 }, /* 0x5658 */ { false, 0x5658, 0x5658 }, /* 0x5659 */ { false, 0x5659, 0x5659 }, /* 0x565a */ { false, 0x565a, 0x565a }, /* 0x565b */ { false, 0x565b, 0x565b }, /* 0x565c */ { false, 0x565c, 0x565c }, /* 0x565d */ { false, 0x565d, 0x565d }, /* 0x565e */ { false, 0x565e, 0x565e }, /* 0x565f */ { false, 0x565f, 0x565f }, /* 0x5660 */ { false, 0x5660, 0x5660 }, /* 0x5661 */ { false, 0x5661, 0x5661 }, /* 0x5662 */ { false, 0x5662, 0x5662 }, /* 0x5663 */ { false, 0x5663, 0x5663 }, /* 0x5664 */ { false, 0x5664, 0x5664 }, /* 0x5665 */ { false, 0x5665, 0x5665 }, /* 0x5666 */ { false, 0x5666, 0x5666 }, /* 0x5667 */ { false, 0x5667, 0x5667 }, /* 0x5668 */ { false, 0x5668, 0x5668 }, /* 0x5669 */ { false, 0x5669, 0x5669 }, /* 0x566a */ { false, 0x566a, 0x566a }, /* 0x566b */ { false, 0x566b, 0x566b }, /* 0x566c */ { false, 0x566c, 0x566c }, /* 0x566d */ { false, 0x566d, 0x566d }, /* 0x566e */ { false, 0x566e, 0x566e }, /* 0x566f */ { false, 0x566f, 0x566f }, /* 0x5670 */ { false, 0x5670, 0x5670 }, /* 0x5671 */ { false, 0x5671, 0x5671 }, /* 0x5672 */ { false, 0x5672, 0x5672 }, /* 0x5673 */ { false, 0x5673, 0x5673 }, /* 0x5674 */ { false, 0x5674, 0x5674 }, /* 0x5675 */ { false, 0x5675, 0x5675 }, /* 0x5676 */ { false, 0x5676, 0x5676 }, /* 0x5677 */ { false, 0x5677, 0x5677 }, /* 0x5678 */ { false, 0x5678, 0x5678 }, /* 0x5679 */ { false, 0x5679, 0x5679 }, /* 0x567a */ { false, 0x567a, 0x567a }, /* 0x567b */ { false, 0x567b, 0x567b }, /* 0x567c */ { false, 0x567c, 0x567c }, /* 0x567d */ { false, 0x567d, 0x567d }, /* 0x567e */ { false, 0x567e, 0x567e }, /* 0x567f */ { false, 0x567f, 0x567f }, /* 0x5680 */ { false, 0x5680, 0x5680 }, /* 0x5681 */ { false, 0x5681, 0x5681 }, /* 0x5682 */ { false, 0x5682, 0x5682 }, /* 0x5683 */ { false, 0x5683, 0x5683 }, /* 0x5684 */ { false, 0x5684, 0x5684 }, /* 0x5685 */ { false, 0x5685, 0x5685 }, /* 0x5686 */ { false, 0x5686, 0x5686 }, /* 0x5687 */ { false, 0x5687, 0x5687 }, /* 0x5688 */ { false, 0x5688, 0x5688 }, /* 0x5689 */ { false, 0x5689, 0x5689 }, /* 0x568a */ { false, 0x568a, 0x568a }, /* 0x568b */ { false, 0x568b, 0x568b }, /* 0x568c */ { false, 0x568c, 0x568c }, /* 0x568d */ { false, 0x568d, 0x568d }, /* 0x568e */ { false, 0x568e, 0x568e }, /* 0x568f */ { false, 0x568f, 0x568f }, /* 0x5690 */ { false, 0x5690, 0x5690 }, /* 0x5691 */ { false, 0x5691, 0x5691 }, /* 0x5692 */ { false, 0x5692, 0x5692 }, /* 0x5693 */ { false, 0x5693, 0x5693 }, /* 0x5694 */ { false, 0x5694, 0x5694 }, /* 0x5695 */ { false, 0x5695, 0x5695 }, /* 0x5696 */ { false, 0x5696, 0x5696 }, /* 0x5697 */ { false, 0x5697, 0x5697 }, /* 0x5698 */ { false, 0x5698, 0x5698 }, /* 0x5699 */ { false, 0x5699, 0x5699 }, /* 0x569a */ { false, 0x569a, 0x569a }, /* 0x569b */ { false, 0x569b, 0x569b }, /* 0x569c */ { false, 0x569c, 0x569c }, /* 0x569d */ { false, 0x569d, 0x569d }, /* 0x569e */ { false, 0x569e, 0x569e }, /* 0x569f */ { false, 0x569f, 0x569f }, /* 0x56a0 */ { false, 0x56a0, 0x56a0 }, /* 0x56a1 */ { false, 0x56a1, 0x56a1 }, /* 0x56a2 */ { false, 0x56a2, 0x56a2 }, /* 0x56a3 */ { false, 0x56a3, 0x56a3 }, /* 0x56a4 */ { false, 0x56a4, 0x56a4 }, /* 0x56a5 */ { false, 0x56a5, 0x56a5 }, /* 0x56a6 */ { false, 0x56a6, 0x56a6 }, /* 0x56a7 */ { false, 0x56a7, 0x56a7 }, /* 0x56a8 */ { false, 0x56a8, 0x56a8 }, /* 0x56a9 */ { false, 0x56a9, 0x56a9 }, /* 0x56aa */ { false, 0x56aa, 0x56aa }, /* 0x56ab */ { false, 0x56ab, 0x56ab }, /* 0x56ac */ { false, 0x56ac, 0x56ac }, /* 0x56ad */ { false, 0x56ad, 0x56ad }, /* 0x56ae */ { false, 0x56ae, 0x56ae }, /* 0x56af */ { false, 0x56af, 0x56af }, /* 0x56b0 */ { false, 0x56b0, 0x56b0 }, /* 0x56b1 */ { false, 0x56b1, 0x56b1 }, /* 0x56b2 */ { false, 0x56b2, 0x56b2 }, /* 0x56b3 */ { false, 0x56b3, 0x56b3 }, /* 0x56b4 */ { false, 0x56b4, 0x56b4 }, /* 0x56b5 */ { false, 0x56b5, 0x56b5 }, /* 0x56b6 */ { false, 0x56b6, 0x56b6 }, /* 0x56b7 */ { false, 0x56b7, 0x56b7 }, /* 0x56b8 */ { false, 0x56b8, 0x56b8 }, /* 0x56b9 */ { false, 0x56b9, 0x56b9 }, /* 0x56ba */ { false, 0x56ba, 0x56ba }, /* 0x56bb */ { false, 0x56bb, 0x56bb }, /* 0x56bc */ { false, 0x56bc, 0x56bc }, /* 0x56bd */ { false, 0x56bd, 0x56bd }, /* 0x56be */ { false, 0x56be, 0x56be }, /* 0x56bf */ { false, 0x56bf, 0x56bf }, /* 0x56c0 */ { false, 0x56c0, 0x56c0 }, /* 0x56c1 */ { false, 0x56c1, 0x56c1 }, /* 0x56c2 */ { false, 0x56c2, 0x56c2 }, /* 0x56c3 */ { false, 0x56c3, 0x56c3 }, /* 0x56c4 */ { false, 0x56c4, 0x56c4 }, /* 0x56c5 */ { false, 0x56c5, 0x56c5 }, /* 0x56c6 */ { false, 0x56c6, 0x56c6 }, /* 0x56c7 */ { false, 0x56c7, 0x56c7 }, /* 0x56c8 */ { false, 0x56c8, 0x56c8 }, /* 0x56c9 */ { false, 0x56c9, 0x56c9 }, /* 0x56ca */ { false, 0x56ca, 0x56ca }, /* 0x56cb */ { false, 0x56cb, 0x56cb }, /* 0x56cc */ { false, 0x56cc, 0x56cc }, /* 0x56cd */ { false, 0x56cd, 0x56cd }, /* 0x56ce */ { false, 0x56ce, 0x56ce }, /* 0x56cf */ { false, 0x56cf, 0x56cf }, /* 0x56d0 */ { false, 0x56d0, 0x56d0 }, /* 0x56d1 */ { false, 0x56d1, 0x56d1 }, /* 0x56d2 */ { false, 0x56d2, 0x56d2 }, /* 0x56d3 */ { false, 0x56d3, 0x56d3 }, /* 0x56d4 */ { false, 0x56d4, 0x56d4 }, /* 0x56d5 */ { false, 0x56d5, 0x56d5 }, /* 0x56d6 */ { false, 0x56d6, 0x56d6 }, /* 0x56d7 */ { false, 0x56d7, 0x56d7 }, /* 0x56d8 */ { false, 0x56d8, 0x56d8 }, /* 0x56d9 */ { false, 0x56d9, 0x56d9 }, /* 0x56da */ { false, 0x56da, 0x56da }, /* 0x56db */ { false, 0x56db, 0x56db }, /* 0x56dc */ { false, 0x56dc, 0x56dc }, /* 0x56dd */ { false, 0x56dd, 0x56dd }, /* 0x56de */ { false, 0x56de, 0x56de }, /* 0x56df */ { false, 0x56df, 0x56df }, /* 0x56e0 */ { false, 0x56e0, 0x56e0 }, /* 0x56e1 */ { false, 0x56e1, 0x56e1 }, /* 0x56e2 */ { false, 0x56e2, 0x56e2 }, /* 0x56e3 */ { false, 0x56e3, 0x56e3 }, /* 0x56e4 */ { false, 0x56e4, 0x56e4 }, /* 0x56e5 */ { false, 0x56e5, 0x56e5 }, /* 0x56e6 */ { false, 0x56e6, 0x56e6 }, /* 0x56e7 */ { false, 0x56e7, 0x56e7 }, /* 0x56e8 */ { false, 0x56e8, 0x56e8 }, /* 0x56e9 */ { false, 0x56e9, 0x56e9 }, /* 0x56ea */ { false, 0x56ea, 0x56ea }, /* 0x56eb */ { false, 0x56eb, 0x56eb }, /* 0x56ec */ { false, 0x56ec, 0x56ec }, /* 0x56ed */ { false, 0x56ed, 0x56ed }, /* 0x56ee */ { false, 0x56ee, 0x56ee }, /* 0x56ef */ { false, 0x56ef, 0x56ef }, /* 0x56f0 */ { false, 0x56f0, 0x56f0 }, /* 0x56f1 */ { false, 0x56f1, 0x56f1 }, /* 0x56f2 */ { false, 0x56f2, 0x56f2 }, /* 0x56f3 */ { false, 0x56f3, 0x56f3 }, /* 0x56f4 */ { false, 0x56f4, 0x56f4 }, /* 0x56f5 */ { false, 0x56f5, 0x56f5 }, /* 0x56f6 */ { false, 0x56f6, 0x56f6 }, /* 0x56f7 */ { false, 0x56f7, 0x56f7 }, /* 0x56f8 */ { false, 0x56f8, 0x56f8 }, /* 0x56f9 */ { false, 0x56f9, 0x56f9 }, /* 0x56fa */ { false, 0x56fa, 0x56fa }, /* 0x56fb */ { false, 0x56fb, 0x56fb }, /* 0x56fc */ { false, 0x56fc, 0x56fc }, /* 0x56fd */ { false, 0x56fd, 0x56fd }, /* 0x56fe */ { false, 0x56fe, 0x56fe }, /* 0x56ff */ { false, 0x56ff, 0x56ff }, /* 0x5700 */ { false, 0x5700, 0x5700 }, /* 0x5701 */ { false, 0x5701, 0x5701 }, /* 0x5702 */ { false, 0x5702, 0x5702 }, /* 0x5703 */ { false, 0x5703, 0x5703 }, /* 0x5704 */ { false, 0x5704, 0x5704 }, /* 0x5705 */ { false, 0x5705, 0x5705 }, /* 0x5706 */ { false, 0x5706, 0x5706 }, /* 0x5707 */ { false, 0x5707, 0x5707 }, /* 0x5708 */ { false, 0x5708, 0x5708 }, /* 0x5709 */ { false, 0x5709, 0x5709 }, /* 0x570a */ { false, 0x570a, 0x570a }, /* 0x570b */ { false, 0x570b, 0x570b }, /* 0x570c */ { false, 0x570c, 0x570c }, /* 0x570d */ { false, 0x570d, 0x570d }, /* 0x570e */ { false, 0x570e, 0x570e }, /* 0x570f */ { false, 0x570f, 0x570f }, /* 0x5710 */ { false, 0x5710, 0x5710 }, /* 0x5711 */ { false, 0x5711, 0x5711 }, /* 0x5712 */ { false, 0x5712, 0x5712 }, /* 0x5713 */ { false, 0x5713, 0x5713 }, /* 0x5714 */ { false, 0x5714, 0x5714 }, /* 0x5715 */ { false, 0x5715, 0x5715 }, /* 0x5716 */ { false, 0x5716, 0x5716 }, /* 0x5717 */ { false, 0x5717, 0x5717 }, /* 0x5718 */ { false, 0x5718, 0x5718 }, /* 0x5719 */ { false, 0x5719, 0x5719 }, /* 0x571a */ { false, 0x571a, 0x571a }, /* 0x571b */ { false, 0x571b, 0x571b }, /* 0x571c */ { false, 0x571c, 0x571c }, /* 0x571d */ { false, 0x571d, 0x571d }, /* 0x571e */ { false, 0x571e, 0x571e }, /* 0x571f */ { false, 0x571f, 0x571f }, /* 0x5720 */ { false, 0x5720, 0x5720 }, /* 0x5721 */ { false, 0x5721, 0x5721 }, /* 0x5722 */ { false, 0x5722, 0x5722 }, /* 0x5723 */ { false, 0x5723, 0x5723 }, /* 0x5724 */ { false, 0x5724, 0x5724 }, /* 0x5725 */ { false, 0x5725, 0x5725 }, /* 0x5726 */ { false, 0x5726, 0x5726 }, /* 0x5727 */ { false, 0x5727, 0x5727 }, /* 0x5728 */ { false, 0x5728, 0x5728 }, /* 0x5729 */ { false, 0x5729, 0x5729 }, /* 0x572a */ { false, 0x572a, 0x572a }, /* 0x572b */ { false, 0x572b, 0x572b }, /* 0x572c */ { false, 0x572c, 0x572c }, /* 0x572d */ { false, 0x572d, 0x572d }, /* 0x572e */ { false, 0x572e, 0x572e }, /* 0x572f */ { false, 0x572f, 0x572f }, /* 0x5730 */ { false, 0x5730, 0x5730 }, /* 0x5731 */ { false, 0x5731, 0x5731 }, /* 0x5732 */ { false, 0x5732, 0x5732 }, /* 0x5733 */ { false, 0x5733, 0x5733 }, /* 0x5734 */ { false, 0x5734, 0x5734 }, /* 0x5735 */ { false, 0x5735, 0x5735 }, /* 0x5736 */ { false, 0x5736, 0x5736 }, /* 0x5737 */ { false, 0x5737, 0x5737 }, /* 0x5738 */ { false, 0x5738, 0x5738 }, /* 0x5739 */ { false, 0x5739, 0x5739 }, /* 0x573a */ { false, 0x573a, 0x573a }, /* 0x573b */ { false, 0x573b, 0x573b }, /* 0x573c */ { false, 0x573c, 0x573c }, /* 0x573d */ { false, 0x573d, 0x573d }, /* 0x573e */ { false, 0x573e, 0x573e }, /* 0x573f */ { false, 0x573f, 0x573f }, /* 0x5740 */ { false, 0x5740, 0x5740 }, /* 0x5741 */ { false, 0x5741, 0x5741 }, /* 0x5742 */ { false, 0x5742, 0x5742 }, /* 0x5743 */ { false, 0x5743, 0x5743 }, /* 0x5744 */ { false, 0x5744, 0x5744 }, /* 0x5745 */ { false, 0x5745, 0x5745 }, /* 0x5746 */ { false, 0x5746, 0x5746 }, /* 0x5747 */ { false, 0x5747, 0x5747 }, /* 0x5748 */ { false, 0x5748, 0x5748 }, /* 0x5749 */ { false, 0x5749, 0x5749 }, /* 0x574a */ { false, 0x574a, 0x574a }, /* 0x574b */ { false, 0x574b, 0x574b }, /* 0x574c */ { false, 0x574c, 0x574c }, /* 0x574d */ { false, 0x574d, 0x574d }, /* 0x574e */ { false, 0x574e, 0x574e }, /* 0x574f */ { false, 0x574f, 0x574f }, /* 0x5750 */ { false, 0x5750, 0x5750 }, /* 0x5751 */ { false, 0x5751, 0x5751 }, /* 0x5752 */ { false, 0x5752, 0x5752 }, /* 0x5753 */ { false, 0x5753, 0x5753 }, /* 0x5754 */ { false, 0x5754, 0x5754 }, /* 0x5755 */ { false, 0x5755, 0x5755 }, /* 0x5756 */ { false, 0x5756, 0x5756 }, /* 0x5757 */ { false, 0x5757, 0x5757 }, /* 0x5758 */ { false, 0x5758, 0x5758 }, /* 0x5759 */ { false, 0x5759, 0x5759 }, /* 0x575a */ { false, 0x575a, 0x575a }, /* 0x575b */ { false, 0x575b, 0x575b }, /* 0x575c */ { false, 0x575c, 0x575c }, /* 0x575d */ { false, 0x575d, 0x575d }, /* 0x575e */ { false, 0x575e, 0x575e }, /* 0x575f */ { false, 0x575f, 0x575f }, /* 0x5760 */ { false, 0x5760, 0x5760 }, /* 0x5761 */ { false, 0x5761, 0x5761 }, /* 0x5762 */ { false, 0x5762, 0x5762 }, /* 0x5763 */ { false, 0x5763, 0x5763 }, /* 0x5764 */ { false, 0x5764, 0x5764 }, /* 0x5765 */ { false, 0x5765, 0x5765 }, /* 0x5766 */ { false, 0x5766, 0x5766 }, /* 0x5767 */ { false, 0x5767, 0x5767 }, /* 0x5768 */ { false, 0x5768, 0x5768 }, /* 0x5769 */ { false, 0x5769, 0x5769 }, /* 0x576a */ { false, 0x576a, 0x576a }, /* 0x576b */ { false, 0x576b, 0x576b }, /* 0x576c */ { false, 0x576c, 0x576c }, /* 0x576d */ { false, 0x576d, 0x576d }, /* 0x576e */ { false, 0x576e, 0x576e }, /* 0x576f */ { false, 0x576f, 0x576f }, /* 0x5770 */ { false, 0x5770, 0x5770 }, /* 0x5771 */ { false, 0x5771, 0x5771 }, /* 0x5772 */ { false, 0x5772, 0x5772 }, /* 0x5773 */ { false, 0x5773, 0x5773 }, /* 0x5774 */ { false, 0x5774, 0x5774 }, /* 0x5775 */ { false, 0x5775, 0x5775 }, /* 0x5776 */ { false, 0x5776, 0x5776 }, /* 0x5777 */ { false, 0x5777, 0x5777 }, /* 0x5778 */ { false, 0x5778, 0x5778 }, /* 0x5779 */ { false, 0x5779, 0x5779 }, /* 0x577a */ { false, 0x577a, 0x577a }, /* 0x577b */ { false, 0x577b, 0x577b }, /* 0x577c */ { false, 0x577c, 0x577c }, /* 0x577d */ { false, 0x577d, 0x577d }, /* 0x577e */ { false, 0x577e, 0x577e }, /* 0x577f */ { false, 0x577f, 0x577f }, /* 0x5780 */ { false, 0x5780, 0x5780 }, /* 0x5781 */ { false, 0x5781, 0x5781 }, /* 0x5782 */ { false, 0x5782, 0x5782 }, /* 0x5783 */ { false, 0x5783, 0x5783 }, /* 0x5784 */ { false, 0x5784, 0x5784 }, /* 0x5785 */ { false, 0x5785, 0x5785 }, /* 0x5786 */ { false, 0x5786, 0x5786 }, /* 0x5787 */ { false, 0x5787, 0x5787 }, /* 0x5788 */ { false, 0x5788, 0x5788 }, /* 0x5789 */ { false, 0x5789, 0x5789 }, /* 0x578a */ { false, 0x578a, 0x578a }, /* 0x578b */ { false, 0x578b, 0x578b }, /* 0x578c */ { false, 0x578c, 0x578c }, /* 0x578d */ { false, 0x578d, 0x578d }, /* 0x578e */ { false, 0x578e, 0x578e }, /* 0x578f */ { false, 0x578f, 0x578f }, /* 0x5790 */ { false, 0x5790, 0x5790 }, /* 0x5791 */ { false, 0x5791, 0x5791 }, /* 0x5792 */ { false, 0x5792, 0x5792 }, /* 0x5793 */ { false, 0x5793, 0x5793 }, /* 0x5794 */ { false, 0x5794, 0x5794 }, /* 0x5795 */ { false, 0x5795, 0x5795 }, /* 0x5796 */ { false, 0x5796, 0x5796 }, /* 0x5797 */ { false, 0x5797, 0x5797 }, /* 0x5798 */ { false, 0x5798, 0x5798 }, /* 0x5799 */ { false, 0x5799, 0x5799 }, /* 0x579a */ { false, 0x579a, 0x579a }, /* 0x579b */ { false, 0x579b, 0x579b }, /* 0x579c */ { false, 0x579c, 0x579c }, /* 0x579d */ { false, 0x579d, 0x579d }, /* 0x579e */ { false, 0x579e, 0x579e }, /* 0x579f */ { false, 0x579f, 0x579f }, /* 0x57a0 */ { false, 0x57a0, 0x57a0 }, /* 0x57a1 */ { false, 0x57a1, 0x57a1 }, /* 0x57a2 */ { false, 0x57a2, 0x57a2 }, /* 0x57a3 */ { false, 0x57a3, 0x57a3 }, /* 0x57a4 */ { false, 0x57a4, 0x57a4 }, /* 0x57a5 */ { false, 0x57a5, 0x57a5 }, /* 0x57a6 */ { false, 0x57a6, 0x57a6 }, /* 0x57a7 */ { false, 0x57a7, 0x57a7 }, /* 0x57a8 */ { false, 0x57a8, 0x57a8 }, /* 0x57a9 */ { false, 0x57a9, 0x57a9 }, /* 0x57aa */ { false, 0x57aa, 0x57aa }, /* 0x57ab */ { false, 0x57ab, 0x57ab }, /* 0x57ac */ { false, 0x57ac, 0x57ac }, /* 0x57ad */ { false, 0x57ad, 0x57ad }, /* 0x57ae */ { false, 0x57ae, 0x57ae }, /* 0x57af */ { false, 0x57af, 0x57af }, /* 0x57b0 */ { false, 0x57b0, 0x57b0 }, /* 0x57b1 */ { false, 0x57b1, 0x57b1 }, /* 0x57b2 */ { false, 0x57b2, 0x57b2 }, /* 0x57b3 */ { false, 0x57b3, 0x57b3 }, /* 0x57b4 */ { false, 0x57b4, 0x57b4 }, /* 0x57b5 */ { false, 0x57b5, 0x57b5 }, /* 0x57b6 */ { false, 0x57b6, 0x57b6 }, /* 0x57b7 */ { false, 0x57b7, 0x57b7 }, /* 0x57b8 */ { false, 0x57b8, 0x57b8 }, /* 0x57b9 */ { false, 0x57b9, 0x57b9 }, /* 0x57ba */ { false, 0x57ba, 0x57ba }, /* 0x57bb */ { false, 0x57bb, 0x57bb }, /* 0x57bc */ { false, 0x57bc, 0x57bc }, /* 0x57bd */ { false, 0x57bd, 0x57bd }, /* 0x57be */ { false, 0x57be, 0x57be }, /* 0x57bf */ { false, 0x57bf, 0x57bf }, /* 0x57c0 */ { false, 0x57c0, 0x57c0 }, /* 0x57c1 */ { false, 0x57c1, 0x57c1 }, /* 0x57c2 */ { false, 0x57c2, 0x57c2 }, /* 0x57c3 */ { false, 0x57c3, 0x57c3 }, /* 0x57c4 */ { false, 0x57c4, 0x57c4 }, /* 0x57c5 */ { false, 0x57c5, 0x57c5 }, /* 0x57c6 */ { false, 0x57c6, 0x57c6 }, /* 0x57c7 */ { false, 0x57c7, 0x57c7 }, /* 0x57c8 */ { false, 0x57c8, 0x57c8 }, /* 0x57c9 */ { false, 0x57c9, 0x57c9 }, /* 0x57ca */ { false, 0x57ca, 0x57ca }, /* 0x57cb */ { false, 0x57cb, 0x57cb }, /* 0x57cc */ { false, 0x57cc, 0x57cc }, /* 0x57cd */ { false, 0x57cd, 0x57cd }, /* 0x57ce */ { false, 0x57ce, 0x57ce }, /* 0x57cf */ { false, 0x57cf, 0x57cf }, /* 0x57d0 */ { false, 0x57d0, 0x57d0 }, /* 0x57d1 */ { false, 0x57d1, 0x57d1 }, /* 0x57d2 */ { false, 0x57d2, 0x57d2 }, /* 0x57d3 */ { false, 0x57d3, 0x57d3 }, /* 0x57d4 */ { false, 0x57d4, 0x57d4 }, /* 0x57d5 */ { false, 0x57d5, 0x57d5 }, /* 0x57d6 */ { false, 0x57d6, 0x57d6 }, /* 0x57d7 */ { false, 0x57d7, 0x57d7 }, /* 0x57d8 */ { false, 0x57d8, 0x57d8 }, /* 0x57d9 */ { false, 0x57d9, 0x57d9 }, /* 0x57da */ { false, 0x57da, 0x57da }, /* 0x57db */ { false, 0x57db, 0x57db }, /* 0x57dc */ { false, 0x57dc, 0x57dc }, /* 0x57dd */ { false, 0x57dd, 0x57dd }, /* 0x57de */ { false, 0x57de, 0x57de }, /* 0x57df */ { false, 0x57df, 0x57df }, /* 0x57e0 */ { false, 0x57e0, 0x57e0 }, /* 0x57e1 */ { false, 0x57e1, 0x57e1 }, /* 0x57e2 */ { false, 0x57e2, 0x57e2 }, /* 0x57e3 */ { false, 0x57e3, 0x57e3 }, /* 0x57e4 */ { false, 0x57e4, 0x57e4 }, /* 0x57e5 */ { false, 0x57e5, 0x57e5 }, /* 0x57e6 */ { false, 0x57e6, 0x57e6 }, /* 0x57e7 */ { false, 0x57e7, 0x57e7 }, /* 0x57e8 */ { false, 0x57e8, 0x57e8 }, /* 0x57e9 */ { false, 0x57e9, 0x57e9 }, /* 0x57ea */ { false, 0x57ea, 0x57ea }, /* 0x57eb */ { false, 0x57eb, 0x57eb }, /* 0x57ec */ { false, 0x57ec, 0x57ec }, /* 0x57ed */ { false, 0x57ed, 0x57ed }, /* 0x57ee */ { false, 0x57ee, 0x57ee }, /* 0x57ef */ { false, 0x57ef, 0x57ef }, /* 0x57f0 */ { false, 0x57f0, 0x57f0 }, /* 0x57f1 */ { false, 0x57f1, 0x57f1 }, /* 0x57f2 */ { false, 0x57f2, 0x57f2 }, /* 0x57f3 */ { false, 0x57f3, 0x57f3 }, /* 0x57f4 */ { false, 0x57f4, 0x57f4 }, /* 0x57f5 */ { false, 0x57f5, 0x57f5 }, /* 0x57f6 */ { false, 0x57f6, 0x57f6 }, /* 0x57f7 */ { false, 0x57f7, 0x57f7 }, /* 0x57f8 */ { false, 0x57f8, 0x57f8 }, /* 0x57f9 */ { false, 0x57f9, 0x57f9 }, /* 0x57fa */ { false, 0x57fa, 0x57fa }, /* 0x57fb */ { false, 0x57fb, 0x57fb }, /* 0x57fc */ { false, 0x57fc, 0x57fc }, /* 0x57fd */ { false, 0x57fd, 0x57fd }, /* 0x57fe */ { false, 0x57fe, 0x57fe }, /* 0x57ff */ { false, 0x57ff, 0x57ff }, /* 0x5800 */ { false, 0x5800, 0x5800 }, /* 0x5801 */ { false, 0x5801, 0x5801 }, /* 0x5802 */ { false, 0x5802, 0x5802 }, /* 0x5803 */ { false, 0x5803, 0x5803 }, /* 0x5804 */ { false, 0x5804, 0x5804 }, /* 0x5805 */ { false, 0x5805, 0x5805 }, /* 0x5806 */ { false, 0x5806, 0x5806 }, /* 0x5807 */ { false, 0x5807, 0x5807 }, /* 0x5808 */ { false, 0x5808, 0x5808 }, /* 0x5809 */ { false, 0x5809, 0x5809 }, /* 0x580a */ { false, 0x580a, 0x580a }, /* 0x580b */ { false, 0x580b, 0x580b }, /* 0x580c */ { false, 0x580c, 0x580c }, /* 0x580d */ { false, 0x580d, 0x580d }, /* 0x580e */ { false, 0x580e, 0x580e }, /* 0x580f */ { false, 0x580f, 0x580f }, /* 0x5810 */ { false, 0x5810, 0x5810 }, /* 0x5811 */ { false, 0x5811, 0x5811 }, /* 0x5812 */ { false, 0x5812, 0x5812 }, /* 0x5813 */ { false, 0x5813, 0x5813 }, /* 0x5814 */ { false, 0x5814, 0x5814 }, /* 0x5815 */ { false, 0x5815, 0x5815 }, /* 0x5816 */ { false, 0x5816, 0x5816 }, /* 0x5817 */ { false, 0x5817, 0x5817 }, /* 0x5818 */ { false, 0x5818, 0x5818 }, /* 0x5819 */ { false, 0x5819, 0x5819 }, /* 0x581a */ { false, 0x581a, 0x581a }, /* 0x581b */ { false, 0x581b, 0x581b }, /* 0x581c */ { false, 0x581c, 0x581c }, /* 0x581d */ { false, 0x581d, 0x581d }, /* 0x581e */ { false, 0x581e, 0x581e }, /* 0x581f */ { false, 0x581f, 0x581f }, /* 0x5820 */ { false, 0x5820, 0x5820 }, /* 0x5821 */ { false, 0x5821, 0x5821 }, /* 0x5822 */ { false, 0x5822, 0x5822 }, /* 0x5823 */ { false, 0x5823, 0x5823 }, /* 0x5824 */ { false, 0x5824, 0x5824 }, /* 0x5825 */ { false, 0x5825, 0x5825 }, /* 0x5826 */ { false, 0x5826, 0x5826 }, /* 0x5827 */ { false, 0x5827, 0x5827 }, /* 0x5828 */ { false, 0x5828, 0x5828 }, /* 0x5829 */ { false, 0x5829, 0x5829 }, /* 0x582a */ { false, 0x582a, 0x582a }, /* 0x582b */ { false, 0x582b, 0x582b }, /* 0x582c */ { false, 0x582c, 0x582c }, /* 0x582d */ { false, 0x582d, 0x582d }, /* 0x582e */ { false, 0x582e, 0x582e }, /* 0x582f */ { false, 0x582f, 0x582f }, /* 0x5830 */ { false, 0x5830, 0x5830 }, /* 0x5831 */ { false, 0x5831, 0x5831 }, /* 0x5832 */ { false, 0x5832, 0x5832 }, /* 0x5833 */ { false, 0x5833, 0x5833 }, /* 0x5834 */ { false, 0x5834, 0x5834 }, /* 0x5835 */ { false, 0x5835, 0x5835 }, /* 0x5836 */ { false, 0x5836, 0x5836 }, /* 0x5837 */ { false, 0x5837, 0x5837 }, /* 0x5838 */ { false, 0x5838, 0x5838 }, /* 0x5839 */ { false, 0x5839, 0x5839 }, /* 0x583a */ { false, 0x583a, 0x583a }, /* 0x583b */ { false, 0x583b, 0x583b }, /* 0x583c */ { false, 0x583c, 0x583c }, /* 0x583d */ { false, 0x583d, 0x583d }, /* 0x583e */ { false, 0x583e, 0x583e }, /* 0x583f */ { false, 0x583f, 0x583f }, /* 0x5840 */ { false, 0x5840, 0x5840 }, /* 0x5841 */ { false, 0x5841, 0x5841 }, /* 0x5842 */ { false, 0x5842, 0x5842 }, /* 0x5843 */ { false, 0x5843, 0x5843 }, /* 0x5844 */ { false, 0x5844, 0x5844 }, /* 0x5845 */ { false, 0x5845, 0x5845 }, /* 0x5846 */ { false, 0x5846, 0x5846 }, /* 0x5847 */ { false, 0x5847, 0x5847 }, /* 0x5848 */ { false, 0x5848, 0x5848 }, /* 0x5849 */ { false, 0x5849, 0x5849 }, /* 0x584a */ { false, 0x584a, 0x584a }, /* 0x584b */ { false, 0x584b, 0x584b }, /* 0x584c */ { false, 0x584c, 0x584c }, /* 0x584d */ { false, 0x584d, 0x584d }, /* 0x584e */ { false, 0x584e, 0x584e }, /* 0x584f */ { false, 0x584f, 0x584f }, /* 0x5850 */ { false, 0x5850, 0x5850 }, /* 0x5851 */ { false, 0x5851, 0x5851 }, /* 0x5852 */ { false, 0x5852, 0x5852 }, /* 0x5853 */ { false, 0x5853, 0x5853 }, /* 0x5854 */ { false, 0x5854, 0x5854 }, /* 0x5855 */ { false, 0x5855, 0x5855 }, /* 0x5856 */ { false, 0x5856, 0x5856 }, /* 0x5857 */ { false, 0x5857, 0x5857 }, /* 0x5858 */ { false, 0x5858, 0x5858 }, /* 0x5859 */ { false, 0x5859, 0x5859 }, /* 0x585a */ { false, 0x585a, 0x585a }, /* 0x585b */ { false, 0x585b, 0x585b }, /* 0x585c */ { false, 0x585c, 0x585c }, /* 0x585d */ { false, 0x585d, 0x585d }, /* 0x585e */ { false, 0x585e, 0x585e }, /* 0x585f */ { false, 0x585f, 0x585f }, /* 0x5860 */ { false, 0x5860, 0x5860 }, /* 0x5861 */ { false, 0x5861, 0x5861 }, /* 0x5862 */ { false, 0x5862, 0x5862 }, /* 0x5863 */ { false, 0x5863, 0x5863 }, /* 0x5864 */ { false, 0x5864, 0x5864 }, /* 0x5865 */ { false, 0x5865, 0x5865 }, /* 0x5866 */ { false, 0x5866, 0x5866 }, /* 0x5867 */ { false, 0x5867, 0x5867 }, /* 0x5868 */ { false, 0x5868, 0x5868 }, /* 0x5869 */ { false, 0x5869, 0x5869 }, /* 0x586a */ { false, 0x586a, 0x586a }, /* 0x586b */ { false, 0x586b, 0x586b }, /* 0x586c */ { false, 0x586c, 0x586c }, /* 0x586d */ { false, 0x586d, 0x586d }, /* 0x586e */ { false, 0x586e, 0x586e }, /* 0x586f */ { false, 0x586f, 0x586f }, /* 0x5870 */ { false, 0x5870, 0x5870 }, /* 0x5871 */ { false, 0x5871, 0x5871 }, /* 0x5872 */ { false, 0x5872, 0x5872 }, /* 0x5873 */ { false, 0x5873, 0x5873 }, /* 0x5874 */ { false, 0x5874, 0x5874 }, /* 0x5875 */ { false, 0x5875, 0x5875 }, /* 0x5876 */ { false, 0x5876, 0x5876 }, /* 0x5877 */ { false, 0x5877, 0x5877 }, /* 0x5878 */ { false, 0x5878, 0x5878 }, /* 0x5879 */ { false, 0x5879, 0x5879 }, /* 0x587a */ { false, 0x587a, 0x587a }, /* 0x587b */ { false, 0x587b, 0x587b }, /* 0x587c */ { false, 0x587c, 0x587c }, /* 0x587d */ { false, 0x587d, 0x587d }, /* 0x587e */ { false, 0x587e, 0x587e }, /* 0x587f */ { false, 0x587f, 0x587f }, /* 0x5880 */ { false, 0x5880, 0x5880 }, /* 0x5881 */ { false, 0x5881, 0x5881 }, /* 0x5882 */ { false, 0x5882, 0x5882 }, /* 0x5883 */ { false, 0x5883, 0x5883 }, /* 0x5884 */ { false, 0x5884, 0x5884 }, /* 0x5885 */ { false, 0x5885, 0x5885 }, /* 0x5886 */ { false, 0x5886, 0x5886 }, /* 0x5887 */ { false, 0x5887, 0x5887 }, /* 0x5888 */ { false, 0x5888, 0x5888 }, /* 0x5889 */ { false, 0x5889, 0x5889 }, /* 0x588a */ { false, 0x588a, 0x588a }, /* 0x588b */ { false, 0x588b, 0x588b }, /* 0x588c */ { false, 0x588c, 0x588c }, /* 0x588d */ { false, 0x588d, 0x588d }, /* 0x588e */ { false, 0x588e, 0x588e }, /* 0x588f */ { false, 0x588f, 0x588f }, /* 0x5890 */ { false, 0x5890, 0x5890 }, /* 0x5891 */ { false, 0x5891, 0x5891 }, /* 0x5892 */ { false, 0x5892, 0x5892 }, /* 0x5893 */ { false, 0x5893, 0x5893 }, /* 0x5894 */ { false, 0x5894, 0x5894 }, /* 0x5895 */ { false, 0x5895, 0x5895 }, /* 0x5896 */ { false, 0x5896, 0x5896 }, /* 0x5897 */ { false, 0x5897, 0x5897 }, /* 0x5898 */ { false, 0x5898, 0x5898 }, /* 0x5899 */ { false, 0x5899, 0x5899 }, /* 0x589a */ { false, 0x589a, 0x589a }, /* 0x589b */ { false, 0x589b, 0x589b }, /* 0x589c */ { false, 0x589c, 0x589c }, /* 0x589d */ { false, 0x589d, 0x589d }, /* 0x589e */ { false, 0x589e, 0x589e }, /* 0x589f */ { false, 0x589f, 0x589f }, /* 0x58a0 */ { false, 0x58a0, 0x58a0 }, /* 0x58a1 */ { false, 0x58a1, 0x58a1 }, /* 0x58a2 */ { false, 0x58a2, 0x58a2 }, /* 0x58a3 */ { false, 0x58a3, 0x58a3 }, /* 0x58a4 */ { false, 0x58a4, 0x58a4 }, /* 0x58a5 */ { false, 0x58a5, 0x58a5 }, /* 0x58a6 */ { false, 0x58a6, 0x58a6 }, /* 0x58a7 */ { false, 0x58a7, 0x58a7 }, /* 0x58a8 */ { false, 0x58a8, 0x58a8 }, /* 0x58a9 */ { false, 0x58a9, 0x58a9 }, /* 0x58aa */ { false, 0x58aa, 0x58aa }, /* 0x58ab */ { false, 0x58ab, 0x58ab }, /* 0x58ac */ { false, 0x58ac, 0x58ac }, /* 0x58ad */ { false, 0x58ad, 0x58ad }, /* 0x58ae */ { false, 0x58ae, 0x58ae }, /* 0x58af */ { false, 0x58af, 0x58af }, /* 0x58b0 */ { false, 0x58b0, 0x58b0 }, /* 0x58b1 */ { false, 0x58b1, 0x58b1 }, /* 0x58b2 */ { false, 0x58b2, 0x58b2 }, /* 0x58b3 */ { false, 0x58b3, 0x58b3 }, /* 0x58b4 */ { false, 0x58b4, 0x58b4 }, /* 0x58b5 */ { false, 0x58b5, 0x58b5 }, /* 0x58b6 */ { false, 0x58b6, 0x58b6 }, /* 0x58b7 */ { false, 0x58b7, 0x58b7 }, /* 0x58b8 */ { false, 0x58b8, 0x58b8 }, /* 0x58b9 */ { false, 0x58b9, 0x58b9 }, /* 0x58ba */ { false, 0x58ba, 0x58ba }, /* 0x58bb */ { false, 0x58bb, 0x58bb }, /* 0x58bc */ { false, 0x58bc, 0x58bc }, /* 0x58bd */ { false, 0x58bd, 0x58bd }, /* 0x58be */ { false, 0x58be, 0x58be }, /* 0x58bf */ { false, 0x58bf, 0x58bf }, /* 0x58c0 */ { false, 0x58c0, 0x58c0 }, /* 0x58c1 */ { false, 0x58c1, 0x58c1 }, /* 0x58c2 */ { false, 0x58c2, 0x58c2 }, /* 0x58c3 */ { false, 0x58c3, 0x58c3 }, /* 0x58c4 */ { false, 0x58c4, 0x58c4 }, /* 0x58c5 */ { false, 0x58c5, 0x58c5 }, /* 0x58c6 */ { false, 0x58c6, 0x58c6 }, /* 0x58c7 */ { false, 0x58c7, 0x58c7 }, /* 0x58c8 */ { false, 0x58c8, 0x58c8 }, /* 0x58c9 */ { false, 0x58c9, 0x58c9 }, /* 0x58ca */ { false, 0x58ca, 0x58ca }, /* 0x58cb */ { false, 0x58cb, 0x58cb }, /* 0x58cc */ { false, 0x58cc, 0x58cc }, /* 0x58cd */ { false, 0x58cd, 0x58cd }, /* 0x58ce */ { false, 0x58ce, 0x58ce }, /* 0x58cf */ { false, 0x58cf, 0x58cf }, /* 0x58d0 */ { false, 0x58d0, 0x58d0 }, /* 0x58d1 */ { false, 0x58d1, 0x58d1 }, /* 0x58d2 */ { false, 0x58d2, 0x58d2 }, /* 0x58d3 */ { false, 0x58d3, 0x58d3 }, /* 0x58d4 */ { false, 0x58d4, 0x58d4 }, /* 0x58d5 */ { false, 0x58d5, 0x58d5 }, /* 0x58d6 */ { false, 0x58d6, 0x58d6 }, /* 0x58d7 */ { false, 0x58d7, 0x58d7 }, /* 0x58d8 */ { false, 0x58d8, 0x58d8 }, /* 0x58d9 */ { false, 0x58d9, 0x58d9 }, /* 0x58da */ { false, 0x58da, 0x58da }, /* 0x58db */ { false, 0x58db, 0x58db }, /* 0x58dc */ { false, 0x58dc, 0x58dc }, /* 0x58dd */ { false, 0x58dd, 0x58dd }, /* 0x58de */ { false, 0x58de, 0x58de }, /* 0x58df */ { false, 0x58df, 0x58df }, /* 0x58e0 */ { false, 0x58e0, 0x58e0 }, /* 0x58e1 */ { false, 0x58e1, 0x58e1 }, /* 0x58e2 */ { false, 0x58e2, 0x58e2 }, /* 0x58e3 */ { false, 0x58e3, 0x58e3 }, /* 0x58e4 */ { false, 0x58e4, 0x58e4 }, /* 0x58e5 */ { false, 0x58e5, 0x58e5 }, /* 0x58e6 */ { false, 0x58e6, 0x58e6 }, /* 0x58e7 */ { false, 0x58e7, 0x58e7 }, /* 0x58e8 */ { false, 0x58e8, 0x58e8 }, /* 0x58e9 */ { false, 0x58e9, 0x58e9 }, /* 0x58ea */ { false, 0x58ea, 0x58ea }, /* 0x58eb */ { false, 0x58eb, 0x58eb }, /* 0x58ec */ { false, 0x58ec, 0x58ec }, /* 0x58ed */ { false, 0x58ed, 0x58ed }, /* 0x58ee */ { false, 0x58ee, 0x58ee }, /* 0x58ef */ { false, 0x58ef, 0x58ef }, /* 0x58f0 */ { false, 0x58f0, 0x58f0 }, /* 0x58f1 */ { false, 0x58f1, 0x58f1 }, /* 0x58f2 */ { false, 0x58f2, 0x58f2 }, /* 0x58f3 */ { false, 0x58f3, 0x58f3 }, /* 0x58f4 */ { false, 0x58f4, 0x58f4 }, /* 0x58f5 */ { false, 0x58f5, 0x58f5 }, /* 0x58f6 */ { false, 0x58f6, 0x58f6 }, /* 0x58f7 */ { false, 0x58f7, 0x58f7 }, /* 0x58f8 */ { false, 0x58f8, 0x58f8 }, /* 0x58f9 */ { false, 0x58f9, 0x58f9 }, /* 0x58fa */ { false, 0x58fa, 0x58fa }, /* 0x58fb */ { false, 0x58fb, 0x58fb }, /* 0x58fc */ { false, 0x58fc, 0x58fc }, /* 0x58fd */ { false, 0x58fd, 0x58fd }, /* 0x58fe */ { false, 0x58fe, 0x58fe }, /* 0x58ff */ { false, 0x58ff, 0x58ff }, /* 0x5900 */ { false, 0x5900, 0x5900 }, /* 0x5901 */ { false, 0x5901, 0x5901 }, /* 0x5902 */ { false, 0x5902, 0x5902 }, /* 0x5903 */ { false, 0x5903, 0x5903 }, /* 0x5904 */ { false, 0x5904, 0x5904 }, /* 0x5905 */ { false, 0x5905, 0x5905 }, /* 0x5906 */ { false, 0x5906, 0x5906 }, /* 0x5907 */ { false, 0x5907, 0x5907 }, /* 0x5908 */ { false, 0x5908, 0x5908 }, /* 0x5909 */ { false, 0x5909, 0x5909 }, /* 0x590a */ { false, 0x590a, 0x590a }, /* 0x590b */ { false, 0x590b, 0x590b }, /* 0x590c */ { false, 0x590c, 0x590c }, /* 0x590d */ { false, 0x590d, 0x590d }, /* 0x590e */ { false, 0x590e, 0x590e }, /* 0x590f */ { false, 0x590f, 0x590f }, /* 0x5910 */ { false, 0x5910, 0x5910 }, /* 0x5911 */ { false, 0x5911, 0x5911 }, /* 0x5912 */ { false, 0x5912, 0x5912 }, /* 0x5913 */ { false, 0x5913, 0x5913 }, /* 0x5914 */ { false, 0x5914, 0x5914 }, /* 0x5915 */ { false, 0x5915, 0x5915 }, /* 0x5916 */ { false, 0x5916, 0x5916 }, /* 0x5917 */ { false, 0x5917, 0x5917 }, /* 0x5918 */ { false, 0x5918, 0x5918 }, /* 0x5919 */ { false, 0x5919, 0x5919 }, /* 0x591a */ { false, 0x591a, 0x591a }, /* 0x591b */ { false, 0x591b, 0x591b }, /* 0x591c */ { false, 0x591c, 0x591c }, /* 0x591d */ { false, 0x591d, 0x591d }, /* 0x591e */ { false, 0x591e, 0x591e }, /* 0x591f */ { false, 0x591f, 0x591f }, /* 0x5920 */ { false, 0x5920, 0x5920 }, /* 0x5921 */ { false, 0x5921, 0x5921 }, /* 0x5922 */ { false, 0x5922, 0x5922 }, /* 0x5923 */ { false, 0x5923, 0x5923 }, /* 0x5924 */ { false, 0x5924, 0x5924 }, /* 0x5925 */ { false, 0x5925, 0x5925 }, /* 0x5926 */ { false, 0x5926, 0x5926 }, /* 0x5927 */ { false, 0x5927, 0x5927 }, /* 0x5928 */ { false, 0x5928, 0x5928 }, /* 0x5929 */ { false, 0x5929, 0x5929 }, /* 0x592a */ { false, 0x592a, 0x592a }, /* 0x592b */ { false, 0x592b, 0x592b }, /* 0x592c */ { false, 0x592c, 0x592c }, /* 0x592d */ { false, 0x592d, 0x592d }, /* 0x592e */ { false, 0x592e, 0x592e }, /* 0x592f */ { false, 0x592f, 0x592f }, /* 0x5930 */ { false, 0x5930, 0x5930 }, /* 0x5931 */ { false, 0x5931, 0x5931 }, /* 0x5932 */ { false, 0x5932, 0x5932 }, /* 0x5933 */ { false, 0x5933, 0x5933 }, /* 0x5934 */ { false, 0x5934, 0x5934 }, /* 0x5935 */ { false, 0x5935, 0x5935 }, /* 0x5936 */ { false, 0x5936, 0x5936 }, /* 0x5937 */ { false, 0x5937, 0x5937 }, /* 0x5938 */ { false, 0x5938, 0x5938 }, /* 0x5939 */ { false, 0x5939, 0x5939 }, /* 0x593a */ { false, 0x593a, 0x593a }, /* 0x593b */ { false, 0x593b, 0x593b }, /* 0x593c */ { false, 0x593c, 0x593c }, /* 0x593d */ { false, 0x593d, 0x593d }, /* 0x593e */ { false, 0x593e, 0x593e }, /* 0x593f */ { false, 0x593f, 0x593f }, /* 0x5940 */ { false, 0x5940, 0x5940 }, /* 0x5941 */ { false, 0x5941, 0x5941 }, /* 0x5942 */ { false, 0x5942, 0x5942 }, /* 0x5943 */ { false, 0x5943, 0x5943 }, /* 0x5944 */ { false, 0x5944, 0x5944 }, /* 0x5945 */ { false, 0x5945, 0x5945 }, /* 0x5946 */ { false, 0x5946, 0x5946 }, /* 0x5947 */ { false, 0x5947, 0x5947 }, /* 0x5948 */ { false, 0x5948, 0x5948 }, /* 0x5949 */ { false, 0x5949, 0x5949 }, /* 0x594a */ { false, 0x594a, 0x594a }, /* 0x594b */ { false, 0x594b, 0x594b }, /* 0x594c */ { false, 0x594c, 0x594c }, /* 0x594d */ { false, 0x594d, 0x594d }, /* 0x594e */ { false, 0x594e, 0x594e }, /* 0x594f */ { false, 0x594f, 0x594f }, /* 0x5950 */ { false, 0x5950, 0x5950 }, /* 0x5951 */ { false, 0x5951, 0x5951 }, /* 0x5952 */ { false, 0x5952, 0x5952 }, /* 0x5953 */ { false, 0x5953, 0x5953 }, /* 0x5954 */ { false, 0x5954, 0x5954 }, /* 0x5955 */ { false, 0x5955, 0x5955 }, /* 0x5956 */ { false, 0x5956, 0x5956 }, /* 0x5957 */ { false, 0x5957, 0x5957 }, /* 0x5958 */ { false, 0x5958, 0x5958 }, /* 0x5959 */ { false, 0x5959, 0x5959 }, /* 0x595a */ { false, 0x595a, 0x595a }, /* 0x595b */ { false, 0x595b, 0x595b }, /* 0x595c */ { false, 0x595c, 0x595c }, /* 0x595d */ { false, 0x595d, 0x595d }, /* 0x595e */ { false, 0x595e, 0x595e }, /* 0x595f */ { false, 0x595f, 0x595f }, /* 0x5960 */ { false, 0x5960, 0x5960 }, /* 0x5961 */ { false, 0x5961, 0x5961 }, /* 0x5962 */ { false, 0x5962, 0x5962 }, /* 0x5963 */ { false, 0x5963, 0x5963 }, /* 0x5964 */ { false, 0x5964, 0x5964 }, /* 0x5965 */ { false, 0x5965, 0x5965 }, /* 0x5966 */ { false, 0x5966, 0x5966 }, /* 0x5967 */ { false, 0x5967, 0x5967 }, /* 0x5968 */ { false, 0x5968, 0x5968 }, /* 0x5969 */ { false, 0x5969, 0x5969 }, /* 0x596a */ { false, 0x596a, 0x596a }, /* 0x596b */ { false, 0x596b, 0x596b }, /* 0x596c */ { false, 0x596c, 0x596c }, /* 0x596d */ { false, 0x596d, 0x596d }, /* 0x596e */ { false, 0x596e, 0x596e }, /* 0x596f */ { false, 0x596f, 0x596f }, /* 0x5970 */ { false, 0x5970, 0x5970 }, /* 0x5971 */ { false, 0x5971, 0x5971 }, /* 0x5972 */ { false, 0x5972, 0x5972 }, /* 0x5973 */ { false, 0x5973, 0x5973 }, /* 0x5974 */ { false, 0x5974, 0x5974 }, /* 0x5975 */ { false, 0x5975, 0x5975 }, /* 0x5976 */ { false, 0x5976, 0x5976 }, /* 0x5977 */ { false, 0x5977, 0x5977 }, /* 0x5978 */ { false, 0x5978, 0x5978 }, /* 0x5979 */ { false, 0x5979, 0x5979 }, /* 0x597a */ { false, 0x597a, 0x597a }, /* 0x597b */ { false, 0x597b, 0x597b }, /* 0x597c */ { false, 0x597c, 0x597c }, /* 0x597d */ { false, 0x597d, 0x597d }, /* 0x597e */ { false, 0x597e, 0x597e }, /* 0x597f */ { false, 0x597f, 0x597f }, /* 0x5980 */ { false, 0x5980, 0x5980 }, /* 0x5981 */ { false, 0x5981, 0x5981 }, /* 0x5982 */ { false, 0x5982, 0x5982 }, /* 0x5983 */ { false, 0x5983, 0x5983 }, /* 0x5984 */ { false, 0x5984, 0x5984 }, /* 0x5985 */ { false, 0x5985, 0x5985 }, /* 0x5986 */ { false, 0x5986, 0x5986 }, /* 0x5987 */ { false, 0x5987, 0x5987 }, /* 0x5988 */ { false, 0x5988, 0x5988 }, /* 0x5989 */ { false, 0x5989, 0x5989 }, /* 0x598a */ { false, 0x598a, 0x598a }, /* 0x598b */ { false, 0x598b, 0x598b }, /* 0x598c */ { false, 0x598c, 0x598c }, /* 0x598d */ { false, 0x598d, 0x598d }, /* 0x598e */ { false, 0x598e, 0x598e }, /* 0x598f */ { false, 0x598f, 0x598f }, /* 0x5990 */ { false, 0x5990, 0x5990 }, /* 0x5991 */ { false, 0x5991, 0x5991 }, /* 0x5992 */ { false, 0x5992, 0x5992 }, /* 0x5993 */ { false, 0x5993, 0x5993 }, /* 0x5994 */ { false, 0x5994, 0x5994 }, /* 0x5995 */ { false, 0x5995, 0x5995 }, /* 0x5996 */ { false, 0x5996, 0x5996 }, /* 0x5997 */ { false, 0x5997, 0x5997 }, /* 0x5998 */ { false, 0x5998, 0x5998 }, /* 0x5999 */ { false, 0x5999, 0x5999 }, /* 0x599a */ { false, 0x599a, 0x599a }, /* 0x599b */ { false, 0x599b, 0x599b }, /* 0x599c */ { false, 0x599c, 0x599c }, /* 0x599d */ { false, 0x599d, 0x599d }, /* 0x599e */ { false, 0x599e, 0x599e }, /* 0x599f */ { false, 0x599f, 0x599f }, /* 0x59a0 */ { false, 0x59a0, 0x59a0 }, /* 0x59a1 */ { false, 0x59a1, 0x59a1 }, /* 0x59a2 */ { false, 0x59a2, 0x59a2 }, /* 0x59a3 */ { false, 0x59a3, 0x59a3 }, /* 0x59a4 */ { false, 0x59a4, 0x59a4 }, /* 0x59a5 */ { false, 0x59a5, 0x59a5 }, /* 0x59a6 */ { false, 0x59a6, 0x59a6 }, /* 0x59a7 */ { false, 0x59a7, 0x59a7 }, /* 0x59a8 */ { false, 0x59a8, 0x59a8 }, /* 0x59a9 */ { false, 0x59a9, 0x59a9 }, /* 0x59aa */ { false, 0x59aa, 0x59aa }, /* 0x59ab */ { false, 0x59ab, 0x59ab }, /* 0x59ac */ { false, 0x59ac, 0x59ac }, /* 0x59ad */ { false, 0x59ad, 0x59ad }, /* 0x59ae */ { false, 0x59ae, 0x59ae }, /* 0x59af */ { false, 0x59af, 0x59af }, /* 0x59b0 */ { false, 0x59b0, 0x59b0 }, /* 0x59b1 */ { false, 0x59b1, 0x59b1 }, /* 0x59b2 */ { false, 0x59b2, 0x59b2 }, /* 0x59b3 */ { false, 0x59b3, 0x59b3 }, /* 0x59b4 */ { false, 0x59b4, 0x59b4 }, /* 0x59b5 */ { false, 0x59b5, 0x59b5 }, /* 0x59b6 */ { false, 0x59b6, 0x59b6 }, /* 0x59b7 */ { false, 0x59b7, 0x59b7 }, /* 0x59b8 */ { false, 0x59b8, 0x59b8 }, /* 0x59b9 */ { false, 0x59b9, 0x59b9 }, /* 0x59ba */ { false, 0x59ba, 0x59ba }, /* 0x59bb */ { false, 0x59bb, 0x59bb }, /* 0x59bc */ { false, 0x59bc, 0x59bc }, /* 0x59bd */ { false, 0x59bd, 0x59bd }, /* 0x59be */ { false, 0x59be, 0x59be }, /* 0x59bf */ { false, 0x59bf, 0x59bf }, /* 0x59c0 */ { false, 0x59c0, 0x59c0 }, /* 0x59c1 */ { false, 0x59c1, 0x59c1 }, /* 0x59c2 */ { false, 0x59c2, 0x59c2 }, /* 0x59c3 */ { false, 0x59c3, 0x59c3 }, /* 0x59c4 */ { false, 0x59c4, 0x59c4 }, /* 0x59c5 */ { false, 0x59c5, 0x59c5 }, /* 0x59c6 */ { false, 0x59c6, 0x59c6 }, /* 0x59c7 */ { false, 0x59c7, 0x59c7 }, /* 0x59c8 */ { false, 0x59c8, 0x59c8 }, /* 0x59c9 */ { false, 0x59c9, 0x59c9 }, /* 0x59ca */ { false, 0x59ca, 0x59ca }, /* 0x59cb */ { false, 0x59cb, 0x59cb }, /* 0x59cc */ { false, 0x59cc, 0x59cc }, /* 0x59cd */ { false, 0x59cd, 0x59cd }, /* 0x59ce */ { false, 0x59ce, 0x59ce }, /* 0x59cf */ { false, 0x59cf, 0x59cf }, /* 0x59d0 */ { false, 0x59d0, 0x59d0 }, /* 0x59d1 */ { false, 0x59d1, 0x59d1 }, /* 0x59d2 */ { false, 0x59d2, 0x59d2 }, /* 0x59d3 */ { false, 0x59d3, 0x59d3 }, /* 0x59d4 */ { false, 0x59d4, 0x59d4 }, /* 0x59d5 */ { false, 0x59d5, 0x59d5 }, /* 0x59d6 */ { false, 0x59d6, 0x59d6 }, /* 0x59d7 */ { false, 0x59d7, 0x59d7 }, /* 0x59d8 */ { false, 0x59d8, 0x59d8 }, /* 0x59d9 */ { false, 0x59d9, 0x59d9 }, /* 0x59da */ { false, 0x59da, 0x59da }, /* 0x59db */ { false, 0x59db, 0x59db }, /* 0x59dc */ { false, 0x59dc, 0x59dc }, /* 0x59dd */ { false, 0x59dd, 0x59dd }, /* 0x59de */ { false, 0x59de, 0x59de }, /* 0x59df */ { false, 0x59df, 0x59df }, /* 0x59e0 */ { false, 0x59e0, 0x59e0 }, /* 0x59e1 */ { false, 0x59e1, 0x59e1 }, /* 0x59e2 */ { false, 0x59e2, 0x59e2 }, /* 0x59e3 */ { false, 0x59e3, 0x59e3 }, /* 0x59e4 */ { false, 0x59e4, 0x59e4 }, /* 0x59e5 */ { false, 0x59e5, 0x59e5 }, /* 0x59e6 */ { false, 0x59e6, 0x59e6 }, /* 0x59e7 */ { false, 0x59e7, 0x59e7 }, /* 0x59e8 */ { false, 0x59e8, 0x59e8 }, /* 0x59e9 */ { false, 0x59e9, 0x59e9 }, /* 0x59ea */ { false, 0x59ea, 0x59ea }, /* 0x59eb */ { false, 0x59eb, 0x59eb }, /* 0x59ec */ { false, 0x59ec, 0x59ec }, /* 0x59ed */ { false, 0x59ed, 0x59ed }, /* 0x59ee */ { false, 0x59ee, 0x59ee }, /* 0x59ef */ { false, 0x59ef, 0x59ef }, /* 0x59f0 */ { false, 0x59f0, 0x59f0 }, /* 0x59f1 */ { false, 0x59f1, 0x59f1 }, /* 0x59f2 */ { false, 0x59f2, 0x59f2 }, /* 0x59f3 */ { false, 0x59f3, 0x59f3 }, /* 0x59f4 */ { false, 0x59f4, 0x59f4 }, /* 0x59f5 */ { false, 0x59f5, 0x59f5 }, /* 0x59f6 */ { false, 0x59f6, 0x59f6 }, /* 0x59f7 */ { false, 0x59f7, 0x59f7 }, /* 0x59f8 */ { false, 0x59f8, 0x59f8 }, /* 0x59f9 */ { false, 0x59f9, 0x59f9 }, /* 0x59fa */ { false, 0x59fa, 0x59fa }, /* 0x59fb */ { false, 0x59fb, 0x59fb }, /* 0x59fc */ { false, 0x59fc, 0x59fc }, /* 0x59fd */ { false, 0x59fd, 0x59fd }, /* 0x59fe */ { false, 0x59fe, 0x59fe }, /* 0x59ff */ { false, 0x59ff, 0x59ff }, /* 0x5a00 */ { false, 0x5a00, 0x5a00 }, /* 0x5a01 */ { false, 0x5a01, 0x5a01 }, /* 0x5a02 */ { false, 0x5a02, 0x5a02 }, /* 0x5a03 */ { false, 0x5a03, 0x5a03 }, /* 0x5a04 */ { false, 0x5a04, 0x5a04 }, /* 0x5a05 */ { false, 0x5a05, 0x5a05 }, /* 0x5a06 */ { false, 0x5a06, 0x5a06 }, /* 0x5a07 */ { false, 0x5a07, 0x5a07 }, /* 0x5a08 */ { false, 0x5a08, 0x5a08 }, /* 0x5a09 */ { false, 0x5a09, 0x5a09 }, /* 0x5a0a */ { false, 0x5a0a, 0x5a0a }, /* 0x5a0b */ { false, 0x5a0b, 0x5a0b }, /* 0x5a0c */ { false, 0x5a0c, 0x5a0c }, /* 0x5a0d */ { false, 0x5a0d, 0x5a0d }, /* 0x5a0e */ { false, 0x5a0e, 0x5a0e }, /* 0x5a0f */ { false, 0x5a0f, 0x5a0f }, /* 0x5a10 */ { false, 0x5a10, 0x5a10 }, /* 0x5a11 */ { false, 0x5a11, 0x5a11 }, /* 0x5a12 */ { false, 0x5a12, 0x5a12 }, /* 0x5a13 */ { false, 0x5a13, 0x5a13 }, /* 0x5a14 */ { false, 0x5a14, 0x5a14 }, /* 0x5a15 */ { false, 0x5a15, 0x5a15 }, /* 0x5a16 */ { false, 0x5a16, 0x5a16 }, /* 0x5a17 */ { false, 0x5a17, 0x5a17 }, /* 0x5a18 */ { false, 0x5a18, 0x5a18 }, /* 0x5a19 */ { false, 0x5a19, 0x5a19 }, /* 0x5a1a */ { false, 0x5a1a, 0x5a1a }, /* 0x5a1b */ { false, 0x5a1b, 0x5a1b }, /* 0x5a1c */ { false, 0x5a1c, 0x5a1c }, /* 0x5a1d */ { false, 0x5a1d, 0x5a1d }, /* 0x5a1e */ { false, 0x5a1e, 0x5a1e }, /* 0x5a1f */ { false, 0x5a1f, 0x5a1f }, /* 0x5a20 */ { false, 0x5a20, 0x5a20 }, /* 0x5a21 */ { false, 0x5a21, 0x5a21 }, /* 0x5a22 */ { false, 0x5a22, 0x5a22 }, /* 0x5a23 */ { false, 0x5a23, 0x5a23 }, /* 0x5a24 */ { false, 0x5a24, 0x5a24 }, /* 0x5a25 */ { false, 0x5a25, 0x5a25 }, /* 0x5a26 */ { false, 0x5a26, 0x5a26 }, /* 0x5a27 */ { false, 0x5a27, 0x5a27 }, /* 0x5a28 */ { false, 0x5a28, 0x5a28 }, /* 0x5a29 */ { false, 0x5a29, 0x5a29 }, /* 0x5a2a */ { false, 0x5a2a, 0x5a2a }, /* 0x5a2b */ { false, 0x5a2b, 0x5a2b }, /* 0x5a2c */ { false, 0x5a2c, 0x5a2c }, /* 0x5a2d */ { false, 0x5a2d, 0x5a2d }, /* 0x5a2e */ { false, 0x5a2e, 0x5a2e }, /* 0x5a2f */ { false, 0x5a2f, 0x5a2f }, /* 0x5a30 */ { false, 0x5a30, 0x5a30 }, /* 0x5a31 */ { false, 0x5a31, 0x5a31 }, /* 0x5a32 */ { false, 0x5a32, 0x5a32 }, /* 0x5a33 */ { false, 0x5a33, 0x5a33 }, /* 0x5a34 */ { false, 0x5a34, 0x5a34 }, /* 0x5a35 */ { false, 0x5a35, 0x5a35 }, /* 0x5a36 */ { false, 0x5a36, 0x5a36 }, /* 0x5a37 */ { false, 0x5a37, 0x5a37 }, /* 0x5a38 */ { false, 0x5a38, 0x5a38 }, /* 0x5a39 */ { false, 0x5a39, 0x5a39 }, /* 0x5a3a */ { false, 0x5a3a, 0x5a3a }, /* 0x5a3b */ { false, 0x5a3b, 0x5a3b }, /* 0x5a3c */ { false, 0x5a3c, 0x5a3c }, /* 0x5a3d */ { false, 0x5a3d, 0x5a3d }, /* 0x5a3e */ { false, 0x5a3e, 0x5a3e }, /* 0x5a3f */ { false, 0x5a3f, 0x5a3f }, /* 0x5a40 */ { false, 0x5a40, 0x5a40 }, /* 0x5a41 */ { false, 0x5a41, 0x5a41 }, /* 0x5a42 */ { false, 0x5a42, 0x5a42 }, /* 0x5a43 */ { false, 0x5a43, 0x5a43 }, /* 0x5a44 */ { false, 0x5a44, 0x5a44 }, /* 0x5a45 */ { false, 0x5a45, 0x5a45 }, /* 0x5a46 */ { false, 0x5a46, 0x5a46 }, /* 0x5a47 */ { false, 0x5a47, 0x5a47 }, /* 0x5a48 */ { false, 0x5a48, 0x5a48 }, /* 0x5a49 */ { false, 0x5a49, 0x5a49 }, /* 0x5a4a */ { false, 0x5a4a, 0x5a4a }, /* 0x5a4b */ { false, 0x5a4b, 0x5a4b }, /* 0x5a4c */ { false, 0x5a4c, 0x5a4c }, /* 0x5a4d */ { false, 0x5a4d, 0x5a4d }, /* 0x5a4e */ { false, 0x5a4e, 0x5a4e }, /* 0x5a4f */ { false, 0x5a4f, 0x5a4f }, /* 0x5a50 */ { false, 0x5a50, 0x5a50 }, /* 0x5a51 */ { false, 0x5a51, 0x5a51 }, /* 0x5a52 */ { false, 0x5a52, 0x5a52 }, /* 0x5a53 */ { false, 0x5a53, 0x5a53 }, /* 0x5a54 */ { false, 0x5a54, 0x5a54 }, /* 0x5a55 */ { false, 0x5a55, 0x5a55 }, /* 0x5a56 */ { false, 0x5a56, 0x5a56 }, /* 0x5a57 */ { false, 0x5a57, 0x5a57 }, /* 0x5a58 */ { false, 0x5a58, 0x5a58 }, /* 0x5a59 */ { false, 0x5a59, 0x5a59 }, /* 0x5a5a */ { false, 0x5a5a, 0x5a5a }, /* 0x5a5b */ { false, 0x5a5b, 0x5a5b }, /* 0x5a5c */ { false, 0x5a5c, 0x5a5c }, /* 0x5a5d */ { false, 0x5a5d, 0x5a5d }, /* 0x5a5e */ { false, 0x5a5e, 0x5a5e }, /* 0x5a5f */ { false, 0x5a5f, 0x5a5f }, /* 0x5a60 */ { false, 0x5a60, 0x5a60 }, /* 0x5a61 */ { false, 0x5a61, 0x5a61 }, /* 0x5a62 */ { false, 0x5a62, 0x5a62 }, /* 0x5a63 */ { false, 0x5a63, 0x5a63 }, /* 0x5a64 */ { false, 0x5a64, 0x5a64 }, /* 0x5a65 */ { false, 0x5a65, 0x5a65 }, /* 0x5a66 */ { false, 0x5a66, 0x5a66 }, /* 0x5a67 */ { false, 0x5a67, 0x5a67 }, /* 0x5a68 */ { false, 0x5a68, 0x5a68 }, /* 0x5a69 */ { false, 0x5a69, 0x5a69 }, /* 0x5a6a */ { false, 0x5a6a, 0x5a6a }, /* 0x5a6b */ { false, 0x5a6b, 0x5a6b }, /* 0x5a6c */ { false, 0x5a6c, 0x5a6c }, /* 0x5a6d */ { false, 0x5a6d, 0x5a6d }, /* 0x5a6e */ { false, 0x5a6e, 0x5a6e }, /* 0x5a6f */ { false, 0x5a6f, 0x5a6f }, /* 0x5a70 */ { false, 0x5a70, 0x5a70 }, /* 0x5a71 */ { false, 0x5a71, 0x5a71 }, /* 0x5a72 */ { false, 0x5a72, 0x5a72 }, /* 0x5a73 */ { false, 0x5a73, 0x5a73 }, /* 0x5a74 */ { false, 0x5a74, 0x5a74 }, /* 0x5a75 */ { false, 0x5a75, 0x5a75 }, /* 0x5a76 */ { false, 0x5a76, 0x5a76 }, /* 0x5a77 */ { false, 0x5a77, 0x5a77 }, /* 0x5a78 */ { false, 0x5a78, 0x5a78 }, /* 0x5a79 */ { false, 0x5a79, 0x5a79 }, /* 0x5a7a */ { false, 0x5a7a, 0x5a7a }, /* 0x5a7b */ { false, 0x5a7b, 0x5a7b }, /* 0x5a7c */ { false, 0x5a7c, 0x5a7c }, /* 0x5a7d */ { false, 0x5a7d, 0x5a7d }, /* 0x5a7e */ { false, 0x5a7e, 0x5a7e }, /* 0x5a7f */ { false, 0x5a7f, 0x5a7f }, /* 0x5a80 */ { false, 0x5a80, 0x5a80 }, /* 0x5a81 */ { false, 0x5a81, 0x5a81 }, /* 0x5a82 */ { false, 0x5a82, 0x5a82 }, /* 0x5a83 */ { false, 0x5a83, 0x5a83 }, /* 0x5a84 */ { false, 0x5a84, 0x5a84 }, /* 0x5a85 */ { false, 0x5a85, 0x5a85 }, /* 0x5a86 */ { false, 0x5a86, 0x5a86 }, /* 0x5a87 */ { false, 0x5a87, 0x5a87 }, /* 0x5a88 */ { false, 0x5a88, 0x5a88 }, /* 0x5a89 */ { false, 0x5a89, 0x5a89 }, /* 0x5a8a */ { false, 0x5a8a, 0x5a8a }, /* 0x5a8b */ { false, 0x5a8b, 0x5a8b }, /* 0x5a8c */ { false, 0x5a8c, 0x5a8c }, /* 0x5a8d */ { false, 0x5a8d, 0x5a8d }, /* 0x5a8e */ { false, 0x5a8e, 0x5a8e }, /* 0x5a8f */ { false, 0x5a8f, 0x5a8f }, /* 0x5a90 */ { false, 0x5a90, 0x5a90 }, /* 0x5a91 */ { false, 0x5a91, 0x5a91 }, /* 0x5a92 */ { false, 0x5a92, 0x5a92 }, /* 0x5a93 */ { false, 0x5a93, 0x5a93 }, /* 0x5a94 */ { false, 0x5a94, 0x5a94 }, /* 0x5a95 */ { false, 0x5a95, 0x5a95 }, /* 0x5a96 */ { false, 0x5a96, 0x5a96 }, /* 0x5a97 */ { false, 0x5a97, 0x5a97 }, /* 0x5a98 */ { false, 0x5a98, 0x5a98 }, /* 0x5a99 */ { false, 0x5a99, 0x5a99 }, /* 0x5a9a */ { false, 0x5a9a, 0x5a9a }, /* 0x5a9b */ { false, 0x5a9b, 0x5a9b }, /* 0x5a9c */ { false, 0x5a9c, 0x5a9c }, /* 0x5a9d */ { false, 0x5a9d, 0x5a9d }, /* 0x5a9e */ { false, 0x5a9e, 0x5a9e }, /* 0x5a9f */ { false, 0x5a9f, 0x5a9f }, /* 0x5aa0 */ { false, 0x5aa0, 0x5aa0 }, /* 0x5aa1 */ { false, 0x5aa1, 0x5aa1 }, /* 0x5aa2 */ { false, 0x5aa2, 0x5aa2 }, /* 0x5aa3 */ { false, 0x5aa3, 0x5aa3 }, /* 0x5aa4 */ { false, 0x5aa4, 0x5aa4 }, /* 0x5aa5 */ { false, 0x5aa5, 0x5aa5 }, /* 0x5aa6 */ { false, 0x5aa6, 0x5aa6 }, /* 0x5aa7 */ { false, 0x5aa7, 0x5aa7 }, /* 0x5aa8 */ { false, 0x5aa8, 0x5aa8 }, /* 0x5aa9 */ { false, 0x5aa9, 0x5aa9 }, /* 0x5aaa */ { false, 0x5aaa, 0x5aaa }, /* 0x5aab */ { false, 0x5aab, 0x5aab }, /* 0x5aac */ { false, 0x5aac, 0x5aac }, /* 0x5aad */ { false, 0x5aad, 0x5aad }, /* 0x5aae */ { false, 0x5aae, 0x5aae }, /* 0x5aaf */ { false, 0x5aaf, 0x5aaf }, /* 0x5ab0 */ { false, 0x5ab0, 0x5ab0 }, /* 0x5ab1 */ { false, 0x5ab1, 0x5ab1 }, /* 0x5ab2 */ { false, 0x5ab2, 0x5ab2 }, /* 0x5ab3 */ { false, 0x5ab3, 0x5ab3 }, /* 0x5ab4 */ { false, 0x5ab4, 0x5ab4 }, /* 0x5ab5 */ { false, 0x5ab5, 0x5ab5 }, /* 0x5ab6 */ { false, 0x5ab6, 0x5ab6 }, /* 0x5ab7 */ { false, 0x5ab7, 0x5ab7 }, /* 0x5ab8 */ { false, 0x5ab8, 0x5ab8 }, /* 0x5ab9 */ { false, 0x5ab9, 0x5ab9 }, /* 0x5aba */ { false, 0x5aba, 0x5aba }, /* 0x5abb */ { false, 0x5abb, 0x5abb }, /* 0x5abc */ { false, 0x5abc, 0x5abc }, /* 0x5abd */ { false, 0x5abd, 0x5abd }, /* 0x5abe */ { false, 0x5abe, 0x5abe }, /* 0x5abf */ { false, 0x5abf, 0x5abf }, /* 0x5ac0 */ { false, 0x5ac0, 0x5ac0 }, /* 0x5ac1 */ { false, 0x5ac1, 0x5ac1 }, /* 0x5ac2 */ { false, 0x5ac2, 0x5ac2 }, /* 0x5ac3 */ { false, 0x5ac3, 0x5ac3 }, /* 0x5ac4 */ { false, 0x5ac4, 0x5ac4 }, /* 0x5ac5 */ { false, 0x5ac5, 0x5ac5 }, /* 0x5ac6 */ { false, 0x5ac6, 0x5ac6 }, /* 0x5ac7 */ { false, 0x5ac7, 0x5ac7 }, /* 0x5ac8 */ { false, 0x5ac8, 0x5ac8 }, /* 0x5ac9 */ { false, 0x5ac9, 0x5ac9 }, /* 0x5aca */ { false, 0x5aca, 0x5aca }, /* 0x5acb */ { false, 0x5acb, 0x5acb }, /* 0x5acc */ { false, 0x5acc, 0x5acc }, /* 0x5acd */ { false, 0x5acd, 0x5acd }, /* 0x5ace */ { false, 0x5ace, 0x5ace }, /* 0x5acf */ { false, 0x5acf, 0x5acf }, /* 0x5ad0 */ { false, 0x5ad0, 0x5ad0 }, /* 0x5ad1 */ { false, 0x5ad1, 0x5ad1 }, /* 0x5ad2 */ { false, 0x5ad2, 0x5ad2 }, /* 0x5ad3 */ { false, 0x5ad3, 0x5ad3 }, /* 0x5ad4 */ { false, 0x5ad4, 0x5ad4 }, /* 0x5ad5 */ { false, 0x5ad5, 0x5ad5 }, /* 0x5ad6 */ { false, 0x5ad6, 0x5ad6 }, /* 0x5ad7 */ { false, 0x5ad7, 0x5ad7 }, /* 0x5ad8 */ { false, 0x5ad8, 0x5ad8 }, /* 0x5ad9 */ { false, 0x5ad9, 0x5ad9 }, /* 0x5ada */ { false, 0x5ada, 0x5ada }, /* 0x5adb */ { false, 0x5adb, 0x5adb }, /* 0x5adc */ { false, 0x5adc, 0x5adc }, /* 0x5add */ { false, 0x5add, 0x5add }, /* 0x5ade */ { false, 0x5ade, 0x5ade }, /* 0x5adf */ { false, 0x5adf, 0x5adf }, /* 0x5ae0 */ { false, 0x5ae0, 0x5ae0 }, /* 0x5ae1 */ { false, 0x5ae1, 0x5ae1 }, /* 0x5ae2 */ { false, 0x5ae2, 0x5ae2 }, /* 0x5ae3 */ { false, 0x5ae3, 0x5ae3 }, /* 0x5ae4 */ { false, 0x5ae4, 0x5ae4 }, /* 0x5ae5 */ { false, 0x5ae5, 0x5ae5 }, /* 0x5ae6 */ { false, 0x5ae6, 0x5ae6 }, /* 0x5ae7 */ { false, 0x5ae7, 0x5ae7 }, /* 0x5ae8 */ { false, 0x5ae8, 0x5ae8 }, /* 0x5ae9 */ { false, 0x5ae9, 0x5ae9 }, /* 0x5aea */ { false, 0x5aea, 0x5aea }, /* 0x5aeb */ { false, 0x5aeb, 0x5aeb }, /* 0x5aec */ { false, 0x5aec, 0x5aec }, /* 0x5aed */ { false, 0x5aed, 0x5aed }, /* 0x5aee */ { false, 0x5aee, 0x5aee }, /* 0x5aef */ { false, 0x5aef, 0x5aef }, /* 0x5af0 */ { false, 0x5af0, 0x5af0 }, /* 0x5af1 */ { false, 0x5af1, 0x5af1 }, /* 0x5af2 */ { false, 0x5af2, 0x5af2 }, /* 0x5af3 */ { false, 0x5af3, 0x5af3 }, /* 0x5af4 */ { false, 0x5af4, 0x5af4 }, /* 0x5af5 */ { false, 0x5af5, 0x5af5 }, /* 0x5af6 */ { false, 0x5af6, 0x5af6 }, /* 0x5af7 */ { false, 0x5af7, 0x5af7 }, /* 0x5af8 */ { false, 0x5af8, 0x5af8 }, /* 0x5af9 */ { false, 0x5af9, 0x5af9 }, /* 0x5afa */ { false, 0x5afa, 0x5afa }, /* 0x5afb */ { false, 0x5afb, 0x5afb }, /* 0x5afc */ { false, 0x5afc, 0x5afc }, /* 0x5afd */ { false, 0x5afd, 0x5afd }, /* 0x5afe */ { false, 0x5afe, 0x5afe }, /* 0x5aff */ { false, 0x5aff, 0x5aff }, /* 0x5b00 */ { false, 0x5b00, 0x5b00 }, /* 0x5b01 */ { false, 0x5b01, 0x5b01 }, /* 0x5b02 */ { false, 0x5b02, 0x5b02 }, /* 0x5b03 */ { false, 0x5b03, 0x5b03 }, /* 0x5b04 */ { false, 0x5b04, 0x5b04 }, /* 0x5b05 */ { false, 0x5b05, 0x5b05 }, /* 0x5b06 */ { false, 0x5b06, 0x5b06 }, /* 0x5b07 */ { false, 0x5b07, 0x5b07 }, /* 0x5b08 */ { false, 0x5b08, 0x5b08 }, /* 0x5b09 */ { false, 0x5b09, 0x5b09 }, /* 0x5b0a */ { false, 0x5b0a, 0x5b0a }, /* 0x5b0b */ { false, 0x5b0b, 0x5b0b }, /* 0x5b0c */ { false, 0x5b0c, 0x5b0c }, /* 0x5b0d */ { false, 0x5b0d, 0x5b0d }, /* 0x5b0e */ { false, 0x5b0e, 0x5b0e }, /* 0x5b0f */ { false, 0x5b0f, 0x5b0f }, /* 0x5b10 */ { false, 0x5b10, 0x5b10 }, /* 0x5b11 */ { false, 0x5b11, 0x5b11 }, /* 0x5b12 */ { false, 0x5b12, 0x5b12 }, /* 0x5b13 */ { false, 0x5b13, 0x5b13 }, /* 0x5b14 */ { false, 0x5b14, 0x5b14 }, /* 0x5b15 */ { false, 0x5b15, 0x5b15 }, /* 0x5b16 */ { false, 0x5b16, 0x5b16 }, /* 0x5b17 */ { false, 0x5b17, 0x5b17 }, /* 0x5b18 */ { false, 0x5b18, 0x5b18 }, /* 0x5b19 */ { false, 0x5b19, 0x5b19 }, /* 0x5b1a */ { false, 0x5b1a, 0x5b1a }, /* 0x5b1b */ { false, 0x5b1b, 0x5b1b }, /* 0x5b1c */ { false, 0x5b1c, 0x5b1c }, /* 0x5b1d */ { false, 0x5b1d, 0x5b1d }, /* 0x5b1e */ { false, 0x5b1e, 0x5b1e }, /* 0x5b1f */ { false, 0x5b1f, 0x5b1f }, /* 0x5b20 */ { false, 0x5b20, 0x5b20 }, /* 0x5b21 */ { false, 0x5b21, 0x5b21 }, /* 0x5b22 */ { false, 0x5b22, 0x5b22 }, /* 0x5b23 */ { false, 0x5b23, 0x5b23 }, /* 0x5b24 */ { false, 0x5b24, 0x5b24 }, /* 0x5b25 */ { false, 0x5b25, 0x5b25 }, /* 0x5b26 */ { false, 0x5b26, 0x5b26 }, /* 0x5b27 */ { false, 0x5b27, 0x5b27 }, /* 0x5b28 */ { false, 0x5b28, 0x5b28 }, /* 0x5b29 */ { false, 0x5b29, 0x5b29 }, /* 0x5b2a */ { false, 0x5b2a, 0x5b2a }, /* 0x5b2b */ { false, 0x5b2b, 0x5b2b }, /* 0x5b2c */ { false, 0x5b2c, 0x5b2c }, /* 0x5b2d */ { false, 0x5b2d, 0x5b2d }, /* 0x5b2e */ { false, 0x5b2e, 0x5b2e }, /* 0x5b2f */ { false, 0x5b2f, 0x5b2f }, /* 0x5b30 */ { false, 0x5b30, 0x5b30 }, /* 0x5b31 */ { false, 0x5b31, 0x5b31 }, /* 0x5b32 */ { false, 0x5b32, 0x5b32 }, /* 0x5b33 */ { false, 0x5b33, 0x5b33 }, /* 0x5b34 */ { false, 0x5b34, 0x5b34 }, /* 0x5b35 */ { false, 0x5b35, 0x5b35 }, /* 0x5b36 */ { false, 0x5b36, 0x5b36 }, /* 0x5b37 */ { false, 0x5b37, 0x5b37 }, /* 0x5b38 */ { false, 0x5b38, 0x5b38 }, /* 0x5b39 */ { false, 0x5b39, 0x5b39 }, /* 0x5b3a */ { false, 0x5b3a, 0x5b3a }, /* 0x5b3b */ { false, 0x5b3b, 0x5b3b }, /* 0x5b3c */ { false, 0x5b3c, 0x5b3c }, /* 0x5b3d */ { false, 0x5b3d, 0x5b3d }, /* 0x5b3e */ { false, 0x5b3e, 0x5b3e }, /* 0x5b3f */ { false, 0x5b3f, 0x5b3f }, /* 0x5b40 */ { false, 0x5b40, 0x5b40 }, /* 0x5b41 */ { false, 0x5b41, 0x5b41 }, /* 0x5b42 */ { false, 0x5b42, 0x5b42 }, /* 0x5b43 */ { false, 0x5b43, 0x5b43 }, /* 0x5b44 */ { false, 0x5b44, 0x5b44 }, /* 0x5b45 */ { false, 0x5b45, 0x5b45 }, /* 0x5b46 */ { false, 0x5b46, 0x5b46 }, /* 0x5b47 */ { false, 0x5b47, 0x5b47 }, /* 0x5b48 */ { false, 0x5b48, 0x5b48 }, /* 0x5b49 */ { false, 0x5b49, 0x5b49 }, /* 0x5b4a */ { false, 0x5b4a, 0x5b4a }, /* 0x5b4b */ { false, 0x5b4b, 0x5b4b }, /* 0x5b4c */ { false, 0x5b4c, 0x5b4c }, /* 0x5b4d */ { false, 0x5b4d, 0x5b4d }, /* 0x5b4e */ { false, 0x5b4e, 0x5b4e }, /* 0x5b4f */ { false, 0x5b4f, 0x5b4f }, /* 0x5b50 */ { false, 0x5b50, 0x5b50 }, /* 0x5b51 */ { false, 0x5b51, 0x5b51 }, /* 0x5b52 */ { false, 0x5b52, 0x5b52 }, /* 0x5b53 */ { false, 0x5b53, 0x5b53 }, /* 0x5b54 */ { false, 0x5b54, 0x5b54 }, /* 0x5b55 */ { false, 0x5b55, 0x5b55 }, /* 0x5b56 */ { false, 0x5b56, 0x5b56 }, /* 0x5b57 */ { false, 0x5b57, 0x5b57 }, /* 0x5b58 */ { false, 0x5b58, 0x5b58 }, /* 0x5b59 */ { false, 0x5b59, 0x5b59 }, /* 0x5b5a */ { false, 0x5b5a, 0x5b5a }, /* 0x5b5b */ { false, 0x5b5b, 0x5b5b }, /* 0x5b5c */ { false, 0x5b5c, 0x5b5c }, /* 0x5b5d */ { false, 0x5b5d, 0x5b5d }, /* 0x5b5e */ { false, 0x5b5e, 0x5b5e }, /* 0x5b5f */ { false, 0x5b5f, 0x5b5f }, /* 0x5b60 */ { false, 0x5b60, 0x5b60 }, /* 0x5b61 */ { false, 0x5b61, 0x5b61 }, /* 0x5b62 */ { false, 0x5b62, 0x5b62 }, /* 0x5b63 */ { false, 0x5b63, 0x5b63 }, /* 0x5b64 */ { false, 0x5b64, 0x5b64 }, /* 0x5b65 */ { false, 0x5b65, 0x5b65 }, /* 0x5b66 */ { false, 0x5b66, 0x5b66 }, /* 0x5b67 */ { false, 0x5b67, 0x5b67 }, /* 0x5b68 */ { false, 0x5b68, 0x5b68 }, /* 0x5b69 */ { false, 0x5b69, 0x5b69 }, /* 0x5b6a */ { false, 0x5b6a, 0x5b6a }, /* 0x5b6b */ { false, 0x5b6b, 0x5b6b }, /* 0x5b6c */ { false, 0x5b6c, 0x5b6c }, /* 0x5b6d */ { false, 0x5b6d, 0x5b6d }, /* 0x5b6e */ { false, 0x5b6e, 0x5b6e }, /* 0x5b6f */ { false, 0x5b6f, 0x5b6f }, /* 0x5b70 */ { false, 0x5b70, 0x5b70 }, /* 0x5b71 */ { false, 0x5b71, 0x5b71 }, /* 0x5b72 */ { false, 0x5b72, 0x5b72 }, /* 0x5b73 */ { false, 0x5b73, 0x5b73 }, /* 0x5b74 */ { false, 0x5b74, 0x5b74 }, /* 0x5b75 */ { false, 0x5b75, 0x5b75 }, /* 0x5b76 */ { false, 0x5b76, 0x5b76 }, /* 0x5b77 */ { false, 0x5b77, 0x5b77 }, /* 0x5b78 */ { false, 0x5b78, 0x5b78 }, /* 0x5b79 */ { false, 0x5b79, 0x5b79 }, /* 0x5b7a */ { false, 0x5b7a, 0x5b7a }, /* 0x5b7b */ { false, 0x5b7b, 0x5b7b }, /* 0x5b7c */ { false, 0x5b7c, 0x5b7c }, /* 0x5b7d */ { false, 0x5b7d, 0x5b7d }, /* 0x5b7e */ { false, 0x5b7e, 0x5b7e }, /* 0x5b7f */ { false, 0x5b7f, 0x5b7f }, /* 0x5b80 */ { false, 0x5b80, 0x5b80 }, /* 0x5b81 */ { false, 0x5b81, 0x5b81 }, /* 0x5b82 */ { false, 0x5b82, 0x5b82 }, /* 0x5b83 */ { false, 0x5b83, 0x5b83 }, /* 0x5b84 */ { false, 0x5b84, 0x5b84 }, /* 0x5b85 */ { false, 0x5b85, 0x5b85 }, /* 0x5b86 */ { false, 0x5b86, 0x5b86 }, /* 0x5b87 */ { false, 0x5b87, 0x5b87 }, /* 0x5b88 */ { false, 0x5b88, 0x5b88 }, /* 0x5b89 */ { false, 0x5b89, 0x5b89 }, /* 0x5b8a */ { false, 0x5b8a, 0x5b8a }, /* 0x5b8b */ { false, 0x5b8b, 0x5b8b }, /* 0x5b8c */ { false, 0x5b8c, 0x5b8c }, /* 0x5b8d */ { false, 0x5b8d, 0x5b8d }, /* 0x5b8e */ { false, 0x5b8e, 0x5b8e }, /* 0x5b8f */ { false, 0x5b8f, 0x5b8f }, /* 0x5b90 */ { false, 0x5b90, 0x5b90 }, /* 0x5b91 */ { false, 0x5b91, 0x5b91 }, /* 0x5b92 */ { false, 0x5b92, 0x5b92 }, /* 0x5b93 */ { false, 0x5b93, 0x5b93 }, /* 0x5b94 */ { false, 0x5b94, 0x5b94 }, /* 0x5b95 */ { false, 0x5b95, 0x5b95 }, /* 0x5b96 */ { false, 0x5b96, 0x5b96 }, /* 0x5b97 */ { false, 0x5b97, 0x5b97 }, /* 0x5b98 */ { false, 0x5b98, 0x5b98 }, /* 0x5b99 */ { false, 0x5b99, 0x5b99 }, /* 0x5b9a */ { false, 0x5b9a, 0x5b9a }, /* 0x5b9b */ { false, 0x5b9b, 0x5b9b }, /* 0x5b9c */ { false, 0x5b9c, 0x5b9c }, /* 0x5b9d */ { false, 0x5b9d, 0x5b9d }, /* 0x5b9e */ { false, 0x5b9e, 0x5b9e }, /* 0x5b9f */ { false, 0x5b9f, 0x5b9f }, /* 0x5ba0 */ { false, 0x5ba0, 0x5ba0 }, /* 0x5ba1 */ { false, 0x5ba1, 0x5ba1 }, /* 0x5ba2 */ { false, 0x5ba2, 0x5ba2 }, /* 0x5ba3 */ { false, 0x5ba3, 0x5ba3 }, /* 0x5ba4 */ { false, 0x5ba4, 0x5ba4 }, /* 0x5ba5 */ { false, 0x5ba5, 0x5ba5 }, /* 0x5ba6 */ { false, 0x5ba6, 0x5ba6 }, /* 0x5ba7 */ { false, 0x5ba7, 0x5ba7 }, /* 0x5ba8 */ { false, 0x5ba8, 0x5ba8 }, /* 0x5ba9 */ { false, 0x5ba9, 0x5ba9 }, /* 0x5baa */ { false, 0x5baa, 0x5baa }, /* 0x5bab */ { false, 0x5bab, 0x5bab }, /* 0x5bac */ { false, 0x5bac, 0x5bac }, /* 0x5bad */ { false, 0x5bad, 0x5bad }, /* 0x5bae */ { false, 0x5bae, 0x5bae }, /* 0x5baf */ { false, 0x5baf, 0x5baf }, /* 0x5bb0 */ { false, 0x5bb0, 0x5bb0 }, /* 0x5bb1 */ { false, 0x5bb1, 0x5bb1 }, /* 0x5bb2 */ { false, 0x5bb2, 0x5bb2 }, /* 0x5bb3 */ { false, 0x5bb3, 0x5bb3 }, /* 0x5bb4 */ { false, 0x5bb4, 0x5bb4 }, /* 0x5bb5 */ { false, 0x5bb5, 0x5bb5 }, /* 0x5bb6 */ { false, 0x5bb6, 0x5bb6 }, /* 0x5bb7 */ { false, 0x5bb7, 0x5bb7 }, /* 0x5bb8 */ { false, 0x5bb8, 0x5bb8 }, /* 0x5bb9 */ { false, 0x5bb9, 0x5bb9 }, /* 0x5bba */ { false, 0x5bba, 0x5bba }, /* 0x5bbb */ { false, 0x5bbb, 0x5bbb }, /* 0x5bbc */ { false, 0x5bbc, 0x5bbc }, /* 0x5bbd */ { false, 0x5bbd, 0x5bbd }, /* 0x5bbe */ { false, 0x5bbe, 0x5bbe }, /* 0x5bbf */ { false, 0x5bbf, 0x5bbf }, /* 0x5bc0 */ { false, 0x5bc0, 0x5bc0 }, /* 0x5bc1 */ { false, 0x5bc1, 0x5bc1 }, /* 0x5bc2 */ { false, 0x5bc2, 0x5bc2 }, /* 0x5bc3 */ { false, 0x5bc3, 0x5bc3 }, /* 0x5bc4 */ { false, 0x5bc4, 0x5bc4 }, /* 0x5bc5 */ { false, 0x5bc5, 0x5bc5 }, /* 0x5bc6 */ { false, 0x5bc6, 0x5bc6 }, /* 0x5bc7 */ { false, 0x5bc7, 0x5bc7 }, /* 0x5bc8 */ { false, 0x5bc8, 0x5bc8 }, /* 0x5bc9 */ { false, 0x5bc9, 0x5bc9 }, /* 0x5bca */ { false, 0x5bca, 0x5bca }, /* 0x5bcb */ { false, 0x5bcb, 0x5bcb }, /* 0x5bcc */ { false, 0x5bcc, 0x5bcc }, /* 0x5bcd */ { false, 0x5bcd, 0x5bcd }, /* 0x5bce */ { false, 0x5bce, 0x5bce }, /* 0x5bcf */ { false, 0x5bcf, 0x5bcf }, /* 0x5bd0 */ { false, 0x5bd0, 0x5bd0 }, /* 0x5bd1 */ { false, 0x5bd1, 0x5bd1 }, /* 0x5bd2 */ { false, 0x5bd2, 0x5bd2 }, /* 0x5bd3 */ { false, 0x5bd3, 0x5bd3 }, /* 0x5bd4 */ { false, 0x5bd4, 0x5bd4 }, /* 0x5bd5 */ { false, 0x5bd5, 0x5bd5 }, /* 0x5bd6 */ { false, 0x5bd6, 0x5bd6 }, /* 0x5bd7 */ { false, 0x5bd7, 0x5bd7 }, /* 0x5bd8 */ { false, 0x5bd8, 0x5bd8 }, /* 0x5bd9 */ { false, 0x5bd9, 0x5bd9 }, /* 0x5bda */ { false, 0x5bda, 0x5bda }, /* 0x5bdb */ { false, 0x5bdb, 0x5bdb }, /* 0x5bdc */ { false, 0x5bdc, 0x5bdc }, /* 0x5bdd */ { false, 0x5bdd, 0x5bdd }, /* 0x5bde */ { false, 0x5bde, 0x5bde }, /* 0x5bdf */ { false, 0x5bdf, 0x5bdf }, /* 0x5be0 */ { false, 0x5be0, 0x5be0 }, /* 0x5be1 */ { false, 0x5be1, 0x5be1 }, /* 0x5be2 */ { false, 0x5be2, 0x5be2 }, /* 0x5be3 */ { false, 0x5be3, 0x5be3 }, /* 0x5be4 */ { false, 0x5be4, 0x5be4 }, /* 0x5be5 */ { false, 0x5be5, 0x5be5 }, /* 0x5be6 */ { false, 0x5be6, 0x5be6 }, /* 0x5be7 */ { false, 0x5be7, 0x5be7 }, /* 0x5be8 */ { false, 0x5be8, 0x5be8 }, /* 0x5be9 */ { false, 0x5be9, 0x5be9 }, /* 0x5bea */ { false, 0x5bea, 0x5bea }, /* 0x5beb */ { false, 0x5beb, 0x5beb }, /* 0x5bec */ { false, 0x5bec, 0x5bec }, /* 0x5bed */ { false, 0x5bed, 0x5bed }, /* 0x5bee */ { false, 0x5bee, 0x5bee }, /* 0x5bef */ { false, 0x5bef, 0x5bef }, /* 0x5bf0 */ { false, 0x5bf0, 0x5bf0 }, /* 0x5bf1 */ { false, 0x5bf1, 0x5bf1 }, /* 0x5bf2 */ { false, 0x5bf2, 0x5bf2 }, /* 0x5bf3 */ { false, 0x5bf3, 0x5bf3 }, /* 0x5bf4 */ { false, 0x5bf4, 0x5bf4 }, /* 0x5bf5 */ { false, 0x5bf5, 0x5bf5 }, /* 0x5bf6 */ { false, 0x5bf6, 0x5bf6 }, /* 0x5bf7 */ { false, 0x5bf7, 0x5bf7 }, /* 0x5bf8 */ { false, 0x5bf8, 0x5bf8 }, /* 0x5bf9 */ { false, 0x5bf9, 0x5bf9 }, /* 0x5bfa */ { false, 0x5bfa, 0x5bfa }, /* 0x5bfb */ { false, 0x5bfb, 0x5bfb }, /* 0x5bfc */ { false, 0x5bfc, 0x5bfc }, /* 0x5bfd */ { false, 0x5bfd, 0x5bfd }, /* 0x5bfe */ { false, 0x5bfe, 0x5bfe }, /* 0x5bff */ { false, 0x5bff, 0x5bff }, /* 0x5c00 */ { false, 0x5c00, 0x5c00 }, /* 0x5c01 */ { false, 0x5c01, 0x5c01 }, /* 0x5c02 */ { false, 0x5c02, 0x5c02 }, /* 0x5c03 */ { false, 0x5c03, 0x5c03 }, /* 0x5c04 */ { false, 0x5c04, 0x5c04 }, /* 0x5c05 */ { false, 0x5c05, 0x5c05 }, /* 0x5c06 */ { false, 0x5c06, 0x5c06 }, /* 0x5c07 */ { false, 0x5c07, 0x5c07 }, /* 0x5c08 */ { false, 0x5c08, 0x5c08 }, /* 0x5c09 */ { false, 0x5c09, 0x5c09 }, /* 0x5c0a */ { false, 0x5c0a, 0x5c0a }, /* 0x5c0b */ { false, 0x5c0b, 0x5c0b }, /* 0x5c0c */ { false, 0x5c0c, 0x5c0c }, /* 0x5c0d */ { false, 0x5c0d, 0x5c0d }, /* 0x5c0e */ { false, 0x5c0e, 0x5c0e }, /* 0x5c0f */ { false, 0x5c0f, 0x5c0f }, /* 0x5c10 */ { false, 0x5c10, 0x5c10 }, /* 0x5c11 */ { false, 0x5c11, 0x5c11 }, /* 0x5c12 */ { false, 0x5c12, 0x5c12 }, /* 0x5c13 */ { false, 0x5c13, 0x5c13 }, /* 0x5c14 */ { false, 0x5c14, 0x5c14 }, /* 0x5c15 */ { false, 0x5c15, 0x5c15 }, /* 0x5c16 */ { false, 0x5c16, 0x5c16 }, /* 0x5c17 */ { false, 0x5c17, 0x5c17 }, /* 0x5c18 */ { false, 0x5c18, 0x5c18 }, /* 0x5c19 */ { false, 0x5c19, 0x5c19 }, /* 0x5c1a */ { false, 0x5c1a, 0x5c1a }, /* 0x5c1b */ { false, 0x5c1b, 0x5c1b }, /* 0x5c1c */ { false, 0x5c1c, 0x5c1c }, /* 0x5c1d */ { false, 0x5c1d, 0x5c1d }, /* 0x5c1e */ { false, 0x5c1e, 0x5c1e }, /* 0x5c1f */ { false, 0x5c1f, 0x5c1f }, /* 0x5c20 */ { false, 0x5c20, 0x5c20 }, /* 0x5c21 */ { false, 0x5c21, 0x5c21 }, /* 0x5c22 */ { false, 0x5c22, 0x5c22 }, /* 0x5c23 */ { false, 0x5c23, 0x5c23 }, /* 0x5c24 */ { false, 0x5c24, 0x5c24 }, /* 0x5c25 */ { false, 0x5c25, 0x5c25 }, /* 0x5c26 */ { false, 0x5c26, 0x5c26 }, /* 0x5c27 */ { false, 0x5c27, 0x5c27 }, /* 0x5c28 */ { false, 0x5c28, 0x5c28 }, /* 0x5c29 */ { false, 0x5c29, 0x5c29 }, /* 0x5c2a */ { false, 0x5c2a, 0x5c2a }, /* 0x5c2b */ { false, 0x5c2b, 0x5c2b }, /* 0x5c2c */ { false, 0x5c2c, 0x5c2c }, /* 0x5c2d */ { false, 0x5c2d, 0x5c2d }, /* 0x5c2e */ { false, 0x5c2e, 0x5c2e }, /* 0x5c2f */ { false, 0x5c2f, 0x5c2f }, /* 0x5c30 */ { false, 0x5c30, 0x5c30 }, /* 0x5c31 */ { false, 0x5c31, 0x5c31 }, /* 0x5c32 */ { false, 0x5c32, 0x5c32 }, /* 0x5c33 */ { false, 0x5c33, 0x5c33 }, /* 0x5c34 */ { false, 0x5c34, 0x5c34 }, /* 0x5c35 */ { false, 0x5c35, 0x5c35 }, /* 0x5c36 */ { false, 0x5c36, 0x5c36 }, /* 0x5c37 */ { false, 0x5c37, 0x5c37 }, /* 0x5c38 */ { false, 0x5c38, 0x5c38 }, /* 0x5c39 */ { false, 0x5c39, 0x5c39 }, /* 0x5c3a */ { false, 0x5c3a, 0x5c3a }, /* 0x5c3b */ { false, 0x5c3b, 0x5c3b }, /* 0x5c3c */ { false, 0x5c3c, 0x5c3c }, /* 0x5c3d */ { false, 0x5c3d, 0x5c3d }, /* 0x5c3e */ { false, 0x5c3e, 0x5c3e }, /* 0x5c3f */ { false, 0x5c3f, 0x5c3f }, /* 0x5c40 */ { false, 0x5c40, 0x5c40 }, /* 0x5c41 */ { false, 0x5c41, 0x5c41 }, /* 0x5c42 */ { false, 0x5c42, 0x5c42 }, /* 0x5c43 */ { false, 0x5c43, 0x5c43 }, /* 0x5c44 */ { false, 0x5c44, 0x5c44 }, /* 0x5c45 */ { false, 0x5c45, 0x5c45 }, /* 0x5c46 */ { false, 0x5c46, 0x5c46 }, /* 0x5c47 */ { false, 0x5c47, 0x5c47 }, /* 0x5c48 */ { false, 0x5c48, 0x5c48 }, /* 0x5c49 */ { false, 0x5c49, 0x5c49 }, /* 0x5c4a */ { false, 0x5c4a, 0x5c4a }, /* 0x5c4b */ { false, 0x5c4b, 0x5c4b }, /* 0x5c4c */ { false, 0x5c4c, 0x5c4c }, /* 0x5c4d */ { false, 0x5c4d, 0x5c4d }, /* 0x5c4e */ { false, 0x5c4e, 0x5c4e }, /* 0x5c4f */ { false, 0x5c4f, 0x5c4f }, /* 0x5c50 */ { false, 0x5c50, 0x5c50 }, /* 0x5c51 */ { false, 0x5c51, 0x5c51 }, /* 0x5c52 */ { false, 0x5c52, 0x5c52 }, /* 0x5c53 */ { false, 0x5c53, 0x5c53 }, /* 0x5c54 */ { false, 0x5c54, 0x5c54 }, /* 0x5c55 */ { false, 0x5c55, 0x5c55 }, /* 0x5c56 */ { false, 0x5c56, 0x5c56 }, /* 0x5c57 */ { false, 0x5c57, 0x5c57 }, /* 0x5c58 */ { false, 0x5c58, 0x5c58 }, /* 0x5c59 */ { false, 0x5c59, 0x5c59 }, /* 0x5c5a */ { false, 0x5c5a, 0x5c5a }, /* 0x5c5b */ { false, 0x5c5b, 0x5c5b }, /* 0x5c5c */ { false, 0x5c5c, 0x5c5c }, /* 0x5c5d */ { false, 0x5c5d, 0x5c5d }, /* 0x5c5e */ { false, 0x5c5e, 0x5c5e }, /* 0x5c5f */ { false, 0x5c5f, 0x5c5f }, /* 0x5c60 */ { false, 0x5c60, 0x5c60 }, /* 0x5c61 */ { false, 0x5c61, 0x5c61 }, /* 0x5c62 */ { false, 0x5c62, 0x5c62 }, /* 0x5c63 */ { false, 0x5c63, 0x5c63 }, /* 0x5c64 */ { false, 0x5c64, 0x5c64 }, /* 0x5c65 */ { false, 0x5c65, 0x5c65 }, /* 0x5c66 */ { false, 0x5c66, 0x5c66 }, /* 0x5c67 */ { false, 0x5c67, 0x5c67 }, /* 0x5c68 */ { false, 0x5c68, 0x5c68 }, /* 0x5c69 */ { false, 0x5c69, 0x5c69 }, /* 0x5c6a */ { false, 0x5c6a, 0x5c6a }, /* 0x5c6b */ { false, 0x5c6b, 0x5c6b }, /* 0x5c6c */ { false, 0x5c6c, 0x5c6c }, /* 0x5c6d */ { false, 0x5c6d, 0x5c6d }, /* 0x5c6e */ { false, 0x5c6e, 0x5c6e }, /* 0x5c6f */ { false, 0x5c6f, 0x5c6f }, /* 0x5c70 */ { false, 0x5c70, 0x5c70 }, /* 0x5c71 */ { false, 0x5c71, 0x5c71 }, /* 0x5c72 */ { false, 0x5c72, 0x5c72 }, /* 0x5c73 */ { false, 0x5c73, 0x5c73 }, /* 0x5c74 */ { false, 0x5c74, 0x5c74 }, /* 0x5c75 */ { false, 0x5c75, 0x5c75 }, /* 0x5c76 */ { false, 0x5c76, 0x5c76 }, /* 0x5c77 */ { false, 0x5c77, 0x5c77 }, /* 0x5c78 */ { false, 0x5c78, 0x5c78 }, /* 0x5c79 */ { false, 0x5c79, 0x5c79 }, /* 0x5c7a */ { false, 0x5c7a, 0x5c7a }, /* 0x5c7b */ { false, 0x5c7b, 0x5c7b }, /* 0x5c7c */ { false, 0x5c7c, 0x5c7c }, /* 0x5c7d */ { false, 0x5c7d, 0x5c7d }, /* 0x5c7e */ { false, 0x5c7e, 0x5c7e }, /* 0x5c7f */ { false, 0x5c7f, 0x5c7f }, /* 0x5c80 */ { false, 0x5c80, 0x5c80 }, /* 0x5c81 */ { false, 0x5c81, 0x5c81 }, /* 0x5c82 */ { false, 0x5c82, 0x5c82 }, /* 0x5c83 */ { false, 0x5c83, 0x5c83 }, /* 0x5c84 */ { false, 0x5c84, 0x5c84 }, /* 0x5c85 */ { false, 0x5c85, 0x5c85 }, /* 0x5c86 */ { false, 0x5c86, 0x5c86 }, /* 0x5c87 */ { false, 0x5c87, 0x5c87 }, /* 0x5c88 */ { false, 0x5c88, 0x5c88 }, /* 0x5c89 */ { false, 0x5c89, 0x5c89 }, /* 0x5c8a */ { false, 0x5c8a, 0x5c8a }, /* 0x5c8b */ { false, 0x5c8b, 0x5c8b }, /* 0x5c8c */ { false, 0x5c8c, 0x5c8c }, /* 0x5c8d */ { false, 0x5c8d, 0x5c8d }, /* 0x5c8e */ { false, 0x5c8e, 0x5c8e }, /* 0x5c8f */ { false, 0x5c8f, 0x5c8f }, /* 0x5c90 */ { false, 0x5c90, 0x5c90 }, /* 0x5c91 */ { false, 0x5c91, 0x5c91 }, /* 0x5c92 */ { false, 0x5c92, 0x5c92 }, /* 0x5c93 */ { false, 0x5c93, 0x5c93 }, /* 0x5c94 */ { false, 0x5c94, 0x5c94 }, /* 0x5c95 */ { false, 0x5c95, 0x5c95 }, /* 0x5c96 */ { false, 0x5c96, 0x5c96 }, /* 0x5c97 */ { false, 0x5c97, 0x5c97 }, /* 0x5c98 */ { false, 0x5c98, 0x5c98 }, /* 0x5c99 */ { false, 0x5c99, 0x5c99 }, /* 0x5c9a */ { false, 0x5c9a, 0x5c9a }, /* 0x5c9b */ { false, 0x5c9b, 0x5c9b }, /* 0x5c9c */ { false, 0x5c9c, 0x5c9c }, /* 0x5c9d */ { false, 0x5c9d, 0x5c9d }, /* 0x5c9e */ { false, 0x5c9e, 0x5c9e }, /* 0x5c9f */ { false, 0x5c9f, 0x5c9f }, /* 0x5ca0 */ { false, 0x5ca0, 0x5ca0 }, /* 0x5ca1 */ { false, 0x5ca1, 0x5ca1 }, /* 0x5ca2 */ { false, 0x5ca2, 0x5ca2 }, /* 0x5ca3 */ { false, 0x5ca3, 0x5ca3 }, /* 0x5ca4 */ { false, 0x5ca4, 0x5ca4 }, /* 0x5ca5 */ { false, 0x5ca5, 0x5ca5 }, /* 0x5ca6 */ { false, 0x5ca6, 0x5ca6 }, /* 0x5ca7 */ { false, 0x5ca7, 0x5ca7 }, /* 0x5ca8 */ { false, 0x5ca8, 0x5ca8 }, /* 0x5ca9 */ { false, 0x5ca9, 0x5ca9 }, /* 0x5caa */ { false, 0x5caa, 0x5caa }, /* 0x5cab */ { false, 0x5cab, 0x5cab }, /* 0x5cac */ { false, 0x5cac, 0x5cac }, /* 0x5cad */ { false, 0x5cad, 0x5cad }, /* 0x5cae */ { false, 0x5cae, 0x5cae }, /* 0x5caf */ { false, 0x5caf, 0x5caf }, /* 0x5cb0 */ { false, 0x5cb0, 0x5cb0 }, /* 0x5cb1 */ { false, 0x5cb1, 0x5cb1 }, /* 0x5cb2 */ { false, 0x5cb2, 0x5cb2 }, /* 0x5cb3 */ { false, 0x5cb3, 0x5cb3 }, /* 0x5cb4 */ { false, 0x5cb4, 0x5cb4 }, /* 0x5cb5 */ { false, 0x5cb5, 0x5cb5 }, /* 0x5cb6 */ { false, 0x5cb6, 0x5cb6 }, /* 0x5cb7 */ { false, 0x5cb7, 0x5cb7 }, /* 0x5cb8 */ { false, 0x5cb8, 0x5cb8 }, /* 0x5cb9 */ { false, 0x5cb9, 0x5cb9 }, /* 0x5cba */ { false, 0x5cba, 0x5cba }, /* 0x5cbb */ { false, 0x5cbb, 0x5cbb }, /* 0x5cbc */ { false, 0x5cbc, 0x5cbc }, /* 0x5cbd */ { false, 0x5cbd, 0x5cbd }, /* 0x5cbe */ { false, 0x5cbe, 0x5cbe }, /* 0x5cbf */ { false, 0x5cbf, 0x5cbf }, /* 0x5cc0 */ { false, 0x5cc0, 0x5cc0 }, /* 0x5cc1 */ { false, 0x5cc1, 0x5cc1 }, /* 0x5cc2 */ { false, 0x5cc2, 0x5cc2 }, /* 0x5cc3 */ { false, 0x5cc3, 0x5cc3 }, /* 0x5cc4 */ { false, 0x5cc4, 0x5cc4 }, /* 0x5cc5 */ { false, 0x5cc5, 0x5cc5 }, /* 0x5cc6 */ { false, 0x5cc6, 0x5cc6 }, /* 0x5cc7 */ { false, 0x5cc7, 0x5cc7 }, /* 0x5cc8 */ { false, 0x5cc8, 0x5cc8 }, /* 0x5cc9 */ { false, 0x5cc9, 0x5cc9 }, /* 0x5cca */ { false, 0x5cca, 0x5cca }, /* 0x5ccb */ { false, 0x5ccb, 0x5ccb }, /* 0x5ccc */ { false, 0x5ccc, 0x5ccc }, /* 0x5ccd */ { false, 0x5ccd, 0x5ccd }, /* 0x5cce */ { false, 0x5cce, 0x5cce }, /* 0x5ccf */ { false, 0x5ccf, 0x5ccf }, /* 0x5cd0 */ { false, 0x5cd0, 0x5cd0 }, /* 0x5cd1 */ { false, 0x5cd1, 0x5cd1 }, /* 0x5cd2 */ { false, 0x5cd2, 0x5cd2 }, /* 0x5cd3 */ { false, 0x5cd3, 0x5cd3 }, /* 0x5cd4 */ { false, 0x5cd4, 0x5cd4 }, /* 0x5cd5 */ { false, 0x5cd5, 0x5cd5 }, /* 0x5cd6 */ { false, 0x5cd6, 0x5cd6 }, /* 0x5cd7 */ { false, 0x5cd7, 0x5cd7 }, /* 0x5cd8 */ { false, 0x5cd8, 0x5cd8 }, /* 0x5cd9 */ { false, 0x5cd9, 0x5cd9 }, /* 0x5cda */ { false, 0x5cda, 0x5cda }, /* 0x5cdb */ { false, 0x5cdb, 0x5cdb }, /* 0x5cdc */ { false, 0x5cdc, 0x5cdc }, /* 0x5cdd */ { false, 0x5cdd, 0x5cdd }, /* 0x5cde */ { false, 0x5cde, 0x5cde }, /* 0x5cdf */ { false, 0x5cdf, 0x5cdf }, /* 0x5ce0 */ { false, 0x5ce0, 0x5ce0 }, /* 0x5ce1 */ { false, 0x5ce1, 0x5ce1 }, /* 0x5ce2 */ { false, 0x5ce2, 0x5ce2 }, /* 0x5ce3 */ { false, 0x5ce3, 0x5ce3 }, /* 0x5ce4 */ { false, 0x5ce4, 0x5ce4 }, /* 0x5ce5 */ { false, 0x5ce5, 0x5ce5 }, /* 0x5ce6 */ { false, 0x5ce6, 0x5ce6 }, /* 0x5ce7 */ { false, 0x5ce7, 0x5ce7 }, /* 0x5ce8 */ { false, 0x5ce8, 0x5ce8 }, /* 0x5ce9 */ { false, 0x5ce9, 0x5ce9 }, /* 0x5cea */ { false, 0x5cea, 0x5cea }, /* 0x5ceb */ { false, 0x5ceb, 0x5ceb }, /* 0x5cec */ { false, 0x5cec, 0x5cec }, /* 0x5ced */ { false, 0x5ced, 0x5ced }, /* 0x5cee */ { false, 0x5cee, 0x5cee }, /* 0x5cef */ { false, 0x5cef, 0x5cef }, /* 0x5cf0 */ { false, 0x5cf0, 0x5cf0 }, /* 0x5cf1 */ { false, 0x5cf1, 0x5cf1 }, /* 0x5cf2 */ { false, 0x5cf2, 0x5cf2 }, /* 0x5cf3 */ { false, 0x5cf3, 0x5cf3 }, /* 0x5cf4 */ { false, 0x5cf4, 0x5cf4 }, /* 0x5cf5 */ { false, 0x5cf5, 0x5cf5 }, /* 0x5cf6 */ { false, 0x5cf6, 0x5cf6 }, /* 0x5cf7 */ { false, 0x5cf7, 0x5cf7 }, /* 0x5cf8 */ { false, 0x5cf8, 0x5cf8 }, /* 0x5cf9 */ { false, 0x5cf9, 0x5cf9 }, /* 0x5cfa */ { false, 0x5cfa, 0x5cfa }, /* 0x5cfb */ { false, 0x5cfb, 0x5cfb }, /* 0x5cfc */ { false, 0x5cfc, 0x5cfc }, /* 0x5cfd */ { false, 0x5cfd, 0x5cfd }, /* 0x5cfe */ { false, 0x5cfe, 0x5cfe }, /* 0x5cff */ { false, 0x5cff, 0x5cff }, /* 0x5d00 */ { false, 0x5d00, 0x5d00 }, /* 0x5d01 */ { false, 0x5d01, 0x5d01 }, /* 0x5d02 */ { false, 0x5d02, 0x5d02 }, /* 0x5d03 */ { false, 0x5d03, 0x5d03 }, /* 0x5d04 */ { false, 0x5d04, 0x5d04 }, /* 0x5d05 */ { false, 0x5d05, 0x5d05 }, /* 0x5d06 */ { false, 0x5d06, 0x5d06 }, /* 0x5d07 */ { false, 0x5d07, 0x5d07 }, /* 0x5d08 */ { false, 0x5d08, 0x5d08 }, /* 0x5d09 */ { false, 0x5d09, 0x5d09 }, /* 0x5d0a */ { false, 0x5d0a, 0x5d0a }, /* 0x5d0b */ { false, 0x5d0b, 0x5d0b }, /* 0x5d0c */ { false, 0x5d0c, 0x5d0c }, /* 0x5d0d */ { false, 0x5d0d, 0x5d0d }, /* 0x5d0e */ { false, 0x5d0e, 0x5d0e }, /* 0x5d0f */ { false, 0x5d0f, 0x5d0f }, /* 0x5d10 */ { false, 0x5d10, 0x5d10 }, /* 0x5d11 */ { false, 0x5d11, 0x5d11 }, /* 0x5d12 */ { false, 0x5d12, 0x5d12 }, /* 0x5d13 */ { false, 0x5d13, 0x5d13 }, /* 0x5d14 */ { false, 0x5d14, 0x5d14 }, /* 0x5d15 */ { false, 0x5d15, 0x5d15 }, /* 0x5d16 */ { false, 0x5d16, 0x5d16 }, /* 0x5d17 */ { false, 0x5d17, 0x5d17 }, /* 0x5d18 */ { false, 0x5d18, 0x5d18 }, /* 0x5d19 */ { false, 0x5d19, 0x5d19 }, /* 0x5d1a */ { false, 0x5d1a, 0x5d1a }, /* 0x5d1b */ { false, 0x5d1b, 0x5d1b }, /* 0x5d1c */ { false, 0x5d1c, 0x5d1c }, /* 0x5d1d */ { false, 0x5d1d, 0x5d1d }, /* 0x5d1e */ { false, 0x5d1e, 0x5d1e }, /* 0x5d1f */ { false, 0x5d1f, 0x5d1f }, /* 0x5d20 */ { false, 0x5d20, 0x5d20 }, /* 0x5d21 */ { false, 0x5d21, 0x5d21 }, /* 0x5d22 */ { false, 0x5d22, 0x5d22 }, /* 0x5d23 */ { false, 0x5d23, 0x5d23 }, /* 0x5d24 */ { false, 0x5d24, 0x5d24 }, /* 0x5d25 */ { false, 0x5d25, 0x5d25 }, /* 0x5d26 */ { false, 0x5d26, 0x5d26 }, /* 0x5d27 */ { false, 0x5d27, 0x5d27 }, /* 0x5d28 */ { false, 0x5d28, 0x5d28 }, /* 0x5d29 */ { false, 0x5d29, 0x5d29 }, /* 0x5d2a */ { false, 0x5d2a, 0x5d2a }, /* 0x5d2b */ { false, 0x5d2b, 0x5d2b }, /* 0x5d2c */ { false, 0x5d2c, 0x5d2c }, /* 0x5d2d */ { false, 0x5d2d, 0x5d2d }, /* 0x5d2e */ { false, 0x5d2e, 0x5d2e }, /* 0x5d2f */ { false, 0x5d2f, 0x5d2f }, /* 0x5d30 */ { false, 0x5d30, 0x5d30 }, /* 0x5d31 */ { false, 0x5d31, 0x5d31 }, /* 0x5d32 */ { false, 0x5d32, 0x5d32 }, /* 0x5d33 */ { false, 0x5d33, 0x5d33 }, /* 0x5d34 */ { false, 0x5d34, 0x5d34 }, /* 0x5d35 */ { false, 0x5d35, 0x5d35 }, /* 0x5d36 */ { false, 0x5d36, 0x5d36 }, /* 0x5d37 */ { false, 0x5d37, 0x5d37 }, /* 0x5d38 */ { false, 0x5d38, 0x5d38 }, /* 0x5d39 */ { false, 0x5d39, 0x5d39 }, /* 0x5d3a */ { false, 0x5d3a, 0x5d3a }, /* 0x5d3b */ { false, 0x5d3b, 0x5d3b }, /* 0x5d3c */ { false, 0x5d3c, 0x5d3c }, /* 0x5d3d */ { false, 0x5d3d, 0x5d3d }, /* 0x5d3e */ { false, 0x5d3e, 0x5d3e }, /* 0x5d3f */ { false, 0x5d3f, 0x5d3f }, /* 0x5d40 */ { false, 0x5d40, 0x5d40 }, /* 0x5d41 */ { false, 0x5d41, 0x5d41 }, /* 0x5d42 */ { false, 0x5d42, 0x5d42 }, /* 0x5d43 */ { false, 0x5d43, 0x5d43 }, /* 0x5d44 */ { false, 0x5d44, 0x5d44 }, /* 0x5d45 */ { false, 0x5d45, 0x5d45 }, /* 0x5d46 */ { false, 0x5d46, 0x5d46 }, /* 0x5d47 */ { false, 0x5d47, 0x5d47 }, /* 0x5d48 */ { false, 0x5d48, 0x5d48 }, /* 0x5d49 */ { false, 0x5d49, 0x5d49 }, /* 0x5d4a */ { false, 0x5d4a, 0x5d4a }, /* 0x5d4b */ { false, 0x5d4b, 0x5d4b }, /* 0x5d4c */ { false, 0x5d4c, 0x5d4c }, /* 0x5d4d */ { false, 0x5d4d, 0x5d4d }, /* 0x5d4e */ { false, 0x5d4e, 0x5d4e }, /* 0x5d4f */ { false, 0x5d4f, 0x5d4f }, /* 0x5d50 */ { false, 0x5d50, 0x5d50 }, /* 0x5d51 */ { false, 0x5d51, 0x5d51 }, /* 0x5d52 */ { false, 0x5d52, 0x5d52 }, /* 0x5d53 */ { false, 0x5d53, 0x5d53 }, /* 0x5d54 */ { false, 0x5d54, 0x5d54 }, /* 0x5d55 */ { false, 0x5d55, 0x5d55 }, /* 0x5d56 */ { false, 0x5d56, 0x5d56 }, /* 0x5d57 */ { false, 0x5d57, 0x5d57 }, /* 0x5d58 */ { false, 0x5d58, 0x5d58 }, /* 0x5d59 */ { false, 0x5d59, 0x5d59 }, /* 0x5d5a */ { false, 0x5d5a, 0x5d5a }, /* 0x5d5b */ { false, 0x5d5b, 0x5d5b }, /* 0x5d5c */ { false, 0x5d5c, 0x5d5c }, /* 0x5d5d */ { false, 0x5d5d, 0x5d5d }, /* 0x5d5e */ { false, 0x5d5e, 0x5d5e }, /* 0x5d5f */ { false, 0x5d5f, 0x5d5f }, /* 0x5d60 */ { false, 0x5d60, 0x5d60 }, /* 0x5d61 */ { false, 0x5d61, 0x5d61 }, /* 0x5d62 */ { false, 0x5d62, 0x5d62 }, /* 0x5d63 */ { false, 0x5d63, 0x5d63 }, /* 0x5d64 */ { false, 0x5d64, 0x5d64 }, /* 0x5d65 */ { false, 0x5d65, 0x5d65 }, /* 0x5d66 */ { false, 0x5d66, 0x5d66 }, /* 0x5d67 */ { false, 0x5d67, 0x5d67 }, /* 0x5d68 */ { false, 0x5d68, 0x5d68 }, /* 0x5d69 */ { false, 0x5d69, 0x5d69 }, /* 0x5d6a */ { false, 0x5d6a, 0x5d6a }, /* 0x5d6b */ { false, 0x5d6b, 0x5d6b }, /* 0x5d6c */ { false, 0x5d6c, 0x5d6c }, /* 0x5d6d */ { false, 0x5d6d, 0x5d6d }, /* 0x5d6e */ { false, 0x5d6e, 0x5d6e }, /* 0x5d6f */ { false, 0x5d6f, 0x5d6f }, /* 0x5d70 */ { false, 0x5d70, 0x5d70 }, /* 0x5d71 */ { false, 0x5d71, 0x5d71 }, /* 0x5d72 */ { false, 0x5d72, 0x5d72 }, /* 0x5d73 */ { false, 0x5d73, 0x5d73 }, /* 0x5d74 */ { false, 0x5d74, 0x5d74 }, /* 0x5d75 */ { false, 0x5d75, 0x5d75 }, /* 0x5d76 */ { false, 0x5d76, 0x5d76 }, /* 0x5d77 */ { false, 0x5d77, 0x5d77 }, /* 0x5d78 */ { false, 0x5d78, 0x5d78 }, /* 0x5d79 */ { false, 0x5d79, 0x5d79 }, /* 0x5d7a */ { false, 0x5d7a, 0x5d7a }, /* 0x5d7b */ { false, 0x5d7b, 0x5d7b }, /* 0x5d7c */ { false, 0x5d7c, 0x5d7c }, /* 0x5d7d */ { false, 0x5d7d, 0x5d7d }, /* 0x5d7e */ { false, 0x5d7e, 0x5d7e }, /* 0x5d7f */ { false, 0x5d7f, 0x5d7f }, /* 0x5d80 */ { false, 0x5d80, 0x5d80 }, /* 0x5d81 */ { false, 0x5d81, 0x5d81 }, /* 0x5d82 */ { false, 0x5d82, 0x5d82 }, /* 0x5d83 */ { false, 0x5d83, 0x5d83 }, /* 0x5d84 */ { false, 0x5d84, 0x5d84 }, /* 0x5d85 */ { false, 0x5d85, 0x5d85 }, /* 0x5d86 */ { false, 0x5d86, 0x5d86 }, /* 0x5d87 */ { false, 0x5d87, 0x5d87 }, /* 0x5d88 */ { false, 0x5d88, 0x5d88 }, /* 0x5d89 */ { false, 0x5d89, 0x5d89 }, /* 0x5d8a */ { false, 0x5d8a, 0x5d8a }, /* 0x5d8b */ { false, 0x5d8b, 0x5d8b }, /* 0x5d8c */ { false, 0x5d8c, 0x5d8c }, /* 0x5d8d */ { false, 0x5d8d, 0x5d8d }, /* 0x5d8e */ { false, 0x5d8e, 0x5d8e }, /* 0x5d8f */ { false, 0x5d8f, 0x5d8f }, /* 0x5d90 */ { false, 0x5d90, 0x5d90 }, /* 0x5d91 */ { false, 0x5d91, 0x5d91 }, /* 0x5d92 */ { false, 0x5d92, 0x5d92 }, /* 0x5d93 */ { false, 0x5d93, 0x5d93 }, /* 0x5d94 */ { false, 0x5d94, 0x5d94 }, /* 0x5d95 */ { false, 0x5d95, 0x5d95 }, /* 0x5d96 */ { false, 0x5d96, 0x5d96 }, /* 0x5d97 */ { false, 0x5d97, 0x5d97 }, /* 0x5d98 */ { false, 0x5d98, 0x5d98 }, /* 0x5d99 */ { false, 0x5d99, 0x5d99 }, /* 0x5d9a */ { false, 0x5d9a, 0x5d9a }, /* 0x5d9b */ { false, 0x5d9b, 0x5d9b }, /* 0x5d9c */ { false, 0x5d9c, 0x5d9c }, /* 0x5d9d */ { false, 0x5d9d, 0x5d9d }, /* 0x5d9e */ { false, 0x5d9e, 0x5d9e }, /* 0x5d9f */ { false, 0x5d9f, 0x5d9f }, /* 0x5da0 */ { false, 0x5da0, 0x5da0 }, /* 0x5da1 */ { false, 0x5da1, 0x5da1 }, /* 0x5da2 */ { false, 0x5da2, 0x5da2 }, /* 0x5da3 */ { false, 0x5da3, 0x5da3 }, /* 0x5da4 */ { false, 0x5da4, 0x5da4 }, /* 0x5da5 */ { false, 0x5da5, 0x5da5 }, /* 0x5da6 */ { false, 0x5da6, 0x5da6 }, /* 0x5da7 */ { false, 0x5da7, 0x5da7 }, /* 0x5da8 */ { false, 0x5da8, 0x5da8 }, /* 0x5da9 */ { false, 0x5da9, 0x5da9 }, /* 0x5daa */ { false, 0x5daa, 0x5daa }, /* 0x5dab */ { false, 0x5dab, 0x5dab }, /* 0x5dac */ { false, 0x5dac, 0x5dac }, /* 0x5dad */ { false, 0x5dad, 0x5dad }, /* 0x5dae */ { false, 0x5dae, 0x5dae }, /* 0x5daf */ { false, 0x5daf, 0x5daf }, /* 0x5db0 */ { false, 0x5db0, 0x5db0 }, /* 0x5db1 */ { false, 0x5db1, 0x5db1 }, /* 0x5db2 */ { false, 0x5db2, 0x5db2 }, /* 0x5db3 */ { false, 0x5db3, 0x5db3 }, /* 0x5db4 */ { false, 0x5db4, 0x5db4 }, /* 0x5db5 */ { false, 0x5db5, 0x5db5 }, /* 0x5db6 */ { false, 0x5db6, 0x5db6 }, /* 0x5db7 */ { false, 0x5db7, 0x5db7 }, /* 0x5db8 */ { false, 0x5db8, 0x5db8 }, /* 0x5db9 */ { false, 0x5db9, 0x5db9 }, /* 0x5dba */ { false, 0x5dba, 0x5dba }, /* 0x5dbb */ { false, 0x5dbb, 0x5dbb }, /* 0x5dbc */ { false, 0x5dbc, 0x5dbc }, /* 0x5dbd */ { false, 0x5dbd, 0x5dbd }, /* 0x5dbe */ { false, 0x5dbe, 0x5dbe }, /* 0x5dbf */ { false, 0x5dbf, 0x5dbf }, /* 0x5dc0 */ { false, 0x5dc0, 0x5dc0 }, /* 0x5dc1 */ { false, 0x5dc1, 0x5dc1 }, /* 0x5dc2 */ { false, 0x5dc2, 0x5dc2 }, /* 0x5dc3 */ { false, 0x5dc3, 0x5dc3 }, /* 0x5dc4 */ { false, 0x5dc4, 0x5dc4 }, /* 0x5dc5 */ { false, 0x5dc5, 0x5dc5 }, /* 0x5dc6 */ { false, 0x5dc6, 0x5dc6 }, /* 0x5dc7 */ { false, 0x5dc7, 0x5dc7 }, /* 0x5dc8 */ { false, 0x5dc8, 0x5dc8 }, /* 0x5dc9 */ { false, 0x5dc9, 0x5dc9 }, /* 0x5dca */ { false, 0x5dca, 0x5dca }, /* 0x5dcb */ { false, 0x5dcb, 0x5dcb }, /* 0x5dcc */ { false, 0x5dcc, 0x5dcc }, /* 0x5dcd */ { false, 0x5dcd, 0x5dcd }, /* 0x5dce */ { false, 0x5dce, 0x5dce }, /* 0x5dcf */ { false, 0x5dcf, 0x5dcf }, /* 0x5dd0 */ { false, 0x5dd0, 0x5dd0 }, /* 0x5dd1 */ { false, 0x5dd1, 0x5dd1 }, /* 0x5dd2 */ { false, 0x5dd2, 0x5dd2 }, /* 0x5dd3 */ { false, 0x5dd3, 0x5dd3 }, /* 0x5dd4 */ { false, 0x5dd4, 0x5dd4 }, /* 0x5dd5 */ { false, 0x5dd5, 0x5dd5 }, /* 0x5dd6 */ { false, 0x5dd6, 0x5dd6 }, /* 0x5dd7 */ { false, 0x5dd7, 0x5dd7 }, /* 0x5dd8 */ { false, 0x5dd8, 0x5dd8 }, /* 0x5dd9 */ { false, 0x5dd9, 0x5dd9 }, /* 0x5dda */ { false, 0x5dda, 0x5dda }, /* 0x5ddb */ { false, 0x5ddb, 0x5ddb }, /* 0x5ddc */ { false, 0x5ddc, 0x5ddc }, /* 0x5ddd */ { false, 0x5ddd, 0x5ddd }, /* 0x5dde */ { false, 0x5dde, 0x5dde }, /* 0x5ddf */ { false, 0x5ddf, 0x5ddf }, /* 0x5de0 */ { false, 0x5de0, 0x5de0 }, /* 0x5de1 */ { false, 0x5de1, 0x5de1 }, /* 0x5de2 */ { false, 0x5de2, 0x5de2 }, /* 0x5de3 */ { false, 0x5de3, 0x5de3 }, /* 0x5de4 */ { false, 0x5de4, 0x5de4 }, /* 0x5de5 */ { false, 0x5de5, 0x5de5 }, /* 0x5de6 */ { false, 0x5de6, 0x5de6 }, /* 0x5de7 */ { false, 0x5de7, 0x5de7 }, /* 0x5de8 */ { false, 0x5de8, 0x5de8 }, /* 0x5de9 */ { false, 0x5de9, 0x5de9 }, /* 0x5dea */ { false, 0x5dea, 0x5dea }, /* 0x5deb */ { false, 0x5deb, 0x5deb }, /* 0x5dec */ { false, 0x5dec, 0x5dec }, /* 0x5ded */ { false, 0x5ded, 0x5ded }, /* 0x5dee */ { false, 0x5dee, 0x5dee }, /* 0x5def */ { false, 0x5def, 0x5def }, /* 0x5df0 */ { false, 0x5df0, 0x5df0 }, /* 0x5df1 */ { false, 0x5df1, 0x5df1 }, /* 0x5df2 */ { false, 0x5df2, 0x5df2 }, /* 0x5df3 */ { false, 0x5df3, 0x5df3 }, /* 0x5df4 */ { false, 0x5df4, 0x5df4 }, /* 0x5df5 */ { false, 0x5df5, 0x5df5 }, /* 0x5df6 */ { false, 0x5df6, 0x5df6 }, /* 0x5df7 */ { false, 0x5df7, 0x5df7 }, /* 0x5df8 */ { false, 0x5df8, 0x5df8 }, /* 0x5df9 */ { false, 0x5df9, 0x5df9 }, /* 0x5dfa */ { false, 0x5dfa, 0x5dfa }, /* 0x5dfb */ { false, 0x5dfb, 0x5dfb }, /* 0x5dfc */ { false, 0x5dfc, 0x5dfc }, /* 0x5dfd */ { false, 0x5dfd, 0x5dfd }, /* 0x5dfe */ { false, 0x5dfe, 0x5dfe }, /* 0x5dff */ { false, 0x5dff, 0x5dff }, /* 0x5e00 */ { false, 0x5e00, 0x5e00 }, /* 0x5e01 */ { false, 0x5e01, 0x5e01 }, /* 0x5e02 */ { false, 0x5e02, 0x5e02 }, /* 0x5e03 */ { false, 0x5e03, 0x5e03 }, /* 0x5e04 */ { false, 0x5e04, 0x5e04 }, /* 0x5e05 */ { false, 0x5e05, 0x5e05 }, /* 0x5e06 */ { false, 0x5e06, 0x5e06 }, /* 0x5e07 */ { false, 0x5e07, 0x5e07 }, /* 0x5e08 */ { false, 0x5e08, 0x5e08 }, /* 0x5e09 */ { false, 0x5e09, 0x5e09 }, /* 0x5e0a */ { false, 0x5e0a, 0x5e0a }, /* 0x5e0b */ { false, 0x5e0b, 0x5e0b }, /* 0x5e0c */ { false, 0x5e0c, 0x5e0c }, /* 0x5e0d */ { false, 0x5e0d, 0x5e0d }, /* 0x5e0e */ { false, 0x5e0e, 0x5e0e }, /* 0x5e0f */ { false, 0x5e0f, 0x5e0f }, /* 0x5e10 */ { false, 0x5e10, 0x5e10 }, /* 0x5e11 */ { false, 0x5e11, 0x5e11 }, /* 0x5e12 */ { false, 0x5e12, 0x5e12 }, /* 0x5e13 */ { false, 0x5e13, 0x5e13 }, /* 0x5e14 */ { false, 0x5e14, 0x5e14 }, /* 0x5e15 */ { false, 0x5e15, 0x5e15 }, /* 0x5e16 */ { false, 0x5e16, 0x5e16 }, /* 0x5e17 */ { false, 0x5e17, 0x5e17 }, /* 0x5e18 */ { false, 0x5e18, 0x5e18 }, /* 0x5e19 */ { false, 0x5e19, 0x5e19 }, /* 0x5e1a */ { false, 0x5e1a, 0x5e1a }, /* 0x5e1b */ { false, 0x5e1b, 0x5e1b }, /* 0x5e1c */ { false, 0x5e1c, 0x5e1c }, /* 0x5e1d */ { false, 0x5e1d, 0x5e1d }, /* 0x5e1e */ { false, 0x5e1e, 0x5e1e }, /* 0x5e1f */ { false, 0x5e1f, 0x5e1f }, /* 0x5e20 */ { false, 0x5e20, 0x5e20 }, /* 0x5e21 */ { false, 0x5e21, 0x5e21 }, /* 0x5e22 */ { false, 0x5e22, 0x5e22 }, /* 0x5e23 */ { false, 0x5e23, 0x5e23 }, /* 0x5e24 */ { false, 0x5e24, 0x5e24 }, /* 0x5e25 */ { false, 0x5e25, 0x5e25 }, /* 0x5e26 */ { false, 0x5e26, 0x5e26 }, /* 0x5e27 */ { false, 0x5e27, 0x5e27 }, /* 0x5e28 */ { false, 0x5e28, 0x5e28 }, /* 0x5e29 */ { false, 0x5e29, 0x5e29 }, /* 0x5e2a */ { false, 0x5e2a, 0x5e2a }, /* 0x5e2b */ { false, 0x5e2b, 0x5e2b }, /* 0x5e2c */ { false, 0x5e2c, 0x5e2c }, /* 0x5e2d */ { false, 0x5e2d, 0x5e2d }, /* 0x5e2e */ { false, 0x5e2e, 0x5e2e }, /* 0x5e2f */ { false, 0x5e2f, 0x5e2f }, /* 0x5e30 */ { false, 0x5e30, 0x5e30 }, /* 0x5e31 */ { false, 0x5e31, 0x5e31 }, /* 0x5e32 */ { false, 0x5e32, 0x5e32 }, /* 0x5e33 */ { false, 0x5e33, 0x5e33 }, /* 0x5e34 */ { false, 0x5e34, 0x5e34 }, /* 0x5e35 */ { false, 0x5e35, 0x5e35 }, /* 0x5e36 */ { false, 0x5e36, 0x5e36 }, /* 0x5e37 */ { false, 0x5e37, 0x5e37 }, /* 0x5e38 */ { false, 0x5e38, 0x5e38 }, /* 0x5e39 */ { false, 0x5e39, 0x5e39 }, /* 0x5e3a */ { false, 0x5e3a, 0x5e3a }, /* 0x5e3b */ { false, 0x5e3b, 0x5e3b }, /* 0x5e3c */ { false, 0x5e3c, 0x5e3c }, /* 0x5e3d */ { false, 0x5e3d, 0x5e3d }, /* 0x5e3e */ { false, 0x5e3e, 0x5e3e }, /* 0x5e3f */ { false, 0x5e3f, 0x5e3f }, /* 0x5e40 */ { false, 0x5e40, 0x5e40 }, /* 0x5e41 */ { false, 0x5e41, 0x5e41 }, /* 0x5e42 */ { false, 0x5e42, 0x5e42 }, /* 0x5e43 */ { false, 0x5e43, 0x5e43 }, /* 0x5e44 */ { false, 0x5e44, 0x5e44 }, /* 0x5e45 */ { false, 0x5e45, 0x5e45 }, /* 0x5e46 */ { false, 0x5e46, 0x5e46 }, /* 0x5e47 */ { false, 0x5e47, 0x5e47 }, /* 0x5e48 */ { false, 0x5e48, 0x5e48 }, /* 0x5e49 */ { false, 0x5e49, 0x5e49 }, /* 0x5e4a */ { false, 0x5e4a, 0x5e4a }, /* 0x5e4b */ { false, 0x5e4b, 0x5e4b }, /* 0x5e4c */ { false, 0x5e4c, 0x5e4c }, /* 0x5e4d */ { false, 0x5e4d, 0x5e4d }, /* 0x5e4e */ { false, 0x5e4e, 0x5e4e }, /* 0x5e4f */ { false, 0x5e4f, 0x5e4f }, /* 0x5e50 */ { false, 0x5e50, 0x5e50 }, /* 0x5e51 */ { false, 0x5e51, 0x5e51 }, /* 0x5e52 */ { false, 0x5e52, 0x5e52 }, /* 0x5e53 */ { false, 0x5e53, 0x5e53 }, /* 0x5e54 */ { false, 0x5e54, 0x5e54 }, /* 0x5e55 */ { false, 0x5e55, 0x5e55 }, /* 0x5e56 */ { false, 0x5e56, 0x5e56 }, /* 0x5e57 */ { false, 0x5e57, 0x5e57 }, /* 0x5e58 */ { false, 0x5e58, 0x5e58 }, /* 0x5e59 */ { false, 0x5e59, 0x5e59 }, /* 0x5e5a */ { false, 0x5e5a, 0x5e5a }, /* 0x5e5b */ { false, 0x5e5b, 0x5e5b }, /* 0x5e5c */ { false, 0x5e5c, 0x5e5c }, /* 0x5e5d */ { false, 0x5e5d, 0x5e5d }, /* 0x5e5e */ { false, 0x5e5e, 0x5e5e }, /* 0x5e5f */ { false, 0x5e5f, 0x5e5f }, /* 0x5e60 */ { false, 0x5e60, 0x5e60 }, /* 0x5e61 */ { false, 0x5e61, 0x5e61 }, /* 0x5e62 */ { false, 0x5e62, 0x5e62 }, /* 0x5e63 */ { false, 0x5e63, 0x5e63 }, /* 0x5e64 */ { false, 0x5e64, 0x5e64 }, /* 0x5e65 */ { false, 0x5e65, 0x5e65 }, /* 0x5e66 */ { false, 0x5e66, 0x5e66 }, /* 0x5e67 */ { false, 0x5e67, 0x5e67 }, /* 0x5e68 */ { false, 0x5e68, 0x5e68 }, /* 0x5e69 */ { false, 0x5e69, 0x5e69 }, /* 0x5e6a */ { false, 0x5e6a, 0x5e6a }, /* 0x5e6b */ { false, 0x5e6b, 0x5e6b }, /* 0x5e6c */ { false, 0x5e6c, 0x5e6c }, /* 0x5e6d */ { false, 0x5e6d, 0x5e6d }, /* 0x5e6e */ { false, 0x5e6e, 0x5e6e }, /* 0x5e6f */ { false, 0x5e6f, 0x5e6f }, /* 0x5e70 */ { false, 0x5e70, 0x5e70 }, /* 0x5e71 */ { false, 0x5e71, 0x5e71 }, /* 0x5e72 */ { false, 0x5e72, 0x5e72 }, /* 0x5e73 */ { false, 0x5e73, 0x5e73 }, /* 0x5e74 */ { false, 0x5e74, 0x5e74 }, /* 0x5e75 */ { false, 0x5e75, 0x5e75 }, /* 0x5e76 */ { false, 0x5e76, 0x5e76 }, /* 0x5e77 */ { false, 0x5e77, 0x5e77 }, /* 0x5e78 */ { false, 0x5e78, 0x5e78 }, /* 0x5e79 */ { false, 0x5e79, 0x5e79 }, /* 0x5e7a */ { false, 0x5e7a, 0x5e7a }, /* 0x5e7b */ { false, 0x5e7b, 0x5e7b }, /* 0x5e7c */ { false, 0x5e7c, 0x5e7c }, /* 0x5e7d */ { false, 0x5e7d, 0x5e7d }, /* 0x5e7e */ { false, 0x5e7e, 0x5e7e }, /* 0x5e7f */ { false, 0x5e7f, 0x5e7f }, /* 0x5e80 */ { false, 0x5e80, 0x5e80 }, /* 0x5e81 */ { false, 0x5e81, 0x5e81 }, /* 0x5e82 */ { false, 0x5e82, 0x5e82 }, /* 0x5e83 */ { false, 0x5e83, 0x5e83 }, /* 0x5e84 */ { false, 0x5e84, 0x5e84 }, /* 0x5e85 */ { false, 0x5e85, 0x5e85 }, /* 0x5e86 */ { false, 0x5e86, 0x5e86 }, /* 0x5e87 */ { false, 0x5e87, 0x5e87 }, /* 0x5e88 */ { false, 0x5e88, 0x5e88 }, /* 0x5e89 */ { false, 0x5e89, 0x5e89 }, /* 0x5e8a */ { false, 0x5e8a, 0x5e8a }, /* 0x5e8b */ { false, 0x5e8b, 0x5e8b }, /* 0x5e8c */ { false, 0x5e8c, 0x5e8c }, /* 0x5e8d */ { false, 0x5e8d, 0x5e8d }, /* 0x5e8e */ { false, 0x5e8e, 0x5e8e }, /* 0x5e8f */ { false, 0x5e8f, 0x5e8f }, /* 0x5e90 */ { false, 0x5e90, 0x5e90 }, /* 0x5e91 */ { false, 0x5e91, 0x5e91 }, /* 0x5e92 */ { false, 0x5e92, 0x5e92 }, /* 0x5e93 */ { false, 0x5e93, 0x5e93 }, /* 0x5e94 */ { false, 0x5e94, 0x5e94 }, /* 0x5e95 */ { false, 0x5e95, 0x5e95 }, /* 0x5e96 */ { false, 0x5e96, 0x5e96 }, /* 0x5e97 */ { false, 0x5e97, 0x5e97 }, /* 0x5e98 */ { false, 0x5e98, 0x5e98 }, /* 0x5e99 */ { false, 0x5e99, 0x5e99 }, /* 0x5e9a */ { false, 0x5e9a, 0x5e9a }, /* 0x5e9b */ { false, 0x5e9b, 0x5e9b }, /* 0x5e9c */ { false, 0x5e9c, 0x5e9c }, /* 0x5e9d */ { false, 0x5e9d, 0x5e9d }, /* 0x5e9e */ { false, 0x5e9e, 0x5e9e }, /* 0x5e9f */ { false, 0x5e9f, 0x5e9f }, /* 0x5ea0 */ { false, 0x5ea0, 0x5ea0 }, /* 0x5ea1 */ { false, 0x5ea1, 0x5ea1 }, /* 0x5ea2 */ { false, 0x5ea2, 0x5ea2 }, /* 0x5ea3 */ { false, 0x5ea3, 0x5ea3 }, /* 0x5ea4 */ { false, 0x5ea4, 0x5ea4 }, /* 0x5ea5 */ { false, 0x5ea5, 0x5ea5 }, /* 0x5ea6 */ { false, 0x5ea6, 0x5ea6 }, /* 0x5ea7 */ { false, 0x5ea7, 0x5ea7 }, /* 0x5ea8 */ { false, 0x5ea8, 0x5ea8 }, /* 0x5ea9 */ { false, 0x5ea9, 0x5ea9 }, /* 0x5eaa */ { false, 0x5eaa, 0x5eaa }, /* 0x5eab */ { false, 0x5eab, 0x5eab }, /* 0x5eac */ { false, 0x5eac, 0x5eac }, /* 0x5ead */ { false, 0x5ead, 0x5ead }, /* 0x5eae */ { false, 0x5eae, 0x5eae }, /* 0x5eaf */ { false, 0x5eaf, 0x5eaf }, /* 0x5eb0 */ { false, 0x5eb0, 0x5eb0 }, /* 0x5eb1 */ { false, 0x5eb1, 0x5eb1 }, /* 0x5eb2 */ { false, 0x5eb2, 0x5eb2 }, /* 0x5eb3 */ { false, 0x5eb3, 0x5eb3 }, /* 0x5eb4 */ { false, 0x5eb4, 0x5eb4 }, /* 0x5eb5 */ { false, 0x5eb5, 0x5eb5 }, /* 0x5eb6 */ { false, 0x5eb6, 0x5eb6 }, /* 0x5eb7 */ { false, 0x5eb7, 0x5eb7 }, /* 0x5eb8 */ { false, 0x5eb8, 0x5eb8 }, /* 0x5eb9 */ { false, 0x5eb9, 0x5eb9 }, /* 0x5eba */ { false, 0x5eba, 0x5eba }, /* 0x5ebb */ { false, 0x5ebb, 0x5ebb }, /* 0x5ebc */ { false, 0x5ebc, 0x5ebc }, /* 0x5ebd */ { false, 0x5ebd, 0x5ebd }, /* 0x5ebe */ { false, 0x5ebe, 0x5ebe }, /* 0x5ebf */ { false, 0x5ebf, 0x5ebf }, /* 0x5ec0 */ { false, 0x5ec0, 0x5ec0 }, /* 0x5ec1 */ { false, 0x5ec1, 0x5ec1 }, /* 0x5ec2 */ { false, 0x5ec2, 0x5ec2 }, /* 0x5ec3 */ { false, 0x5ec3, 0x5ec3 }, /* 0x5ec4 */ { false, 0x5ec4, 0x5ec4 }, /* 0x5ec5 */ { false, 0x5ec5, 0x5ec5 }, /* 0x5ec6 */ { false, 0x5ec6, 0x5ec6 }, /* 0x5ec7 */ { false, 0x5ec7, 0x5ec7 }, /* 0x5ec8 */ { false, 0x5ec8, 0x5ec8 }, /* 0x5ec9 */ { false, 0x5ec9, 0x5ec9 }, /* 0x5eca */ { false, 0x5eca, 0x5eca }, /* 0x5ecb */ { false, 0x5ecb, 0x5ecb }, /* 0x5ecc */ { false, 0x5ecc, 0x5ecc }, /* 0x5ecd */ { false, 0x5ecd, 0x5ecd }, /* 0x5ece */ { false, 0x5ece, 0x5ece }, /* 0x5ecf */ { false, 0x5ecf, 0x5ecf }, /* 0x5ed0 */ { false, 0x5ed0, 0x5ed0 }, /* 0x5ed1 */ { false, 0x5ed1, 0x5ed1 }, /* 0x5ed2 */ { false, 0x5ed2, 0x5ed2 }, /* 0x5ed3 */ { false, 0x5ed3, 0x5ed3 }, /* 0x5ed4 */ { false, 0x5ed4, 0x5ed4 }, /* 0x5ed5 */ { false, 0x5ed5, 0x5ed5 }, /* 0x5ed6 */ { false, 0x5ed6, 0x5ed6 }, /* 0x5ed7 */ { false, 0x5ed7, 0x5ed7 }, /* 0x5ed8 */ { false, 0x5ed8, 0x5ed8 }, /* 0x5ed9 */ { false, 0x5ed9, 0x5ed9 }, /* 0x5eda */ { false, 0x5eda, 0x5eda }, /* 0x5edb */ { false, 0x5edb, 0x5edb }, /* 0x5edc */ { false, 0x5edc, 0x5edc }, /* 0x5edd */ { false, 0x5edd, 0x5edd }, /* 0x5ede */ { false, 0x5ede, 0x5ede }, /* 0x5edf */ { false, 0x5edf, 0x5edf }, /* 0x5ee0 */ { false, 0x5ee0, 0x5ee0 }, /* 0x5ee1 */ { false, 0x5ee1, 0x5ee1 }, /* 0x5ee2 */ { false, 0x5ee2, 0x5ee2 }, /* 0x5ee3 */ { false, 0x5ee3, 0x5ee3 }, /* 0x5ee4 */ { false, 0x5ee4, 0x5ee4 }, /* 0x5ee5 */ { false, 0x5ee5, 0x5ee5 }, /* 0x5ee6 */ { false, 0x5ee6, 0x5ee6 }, /* 0x5ee7 */ { false, 0x5ee7, 0x5ee7 }, /* 0x5ee8 */ { false, 0x5ee8, 0x5ee8 }, /* 0x5ee9 */ { false, 0x5ee9, 0x5ee9 }, /* 0x5eea */ { false, 0x5eea, 0x5eea }, /* 0x5eeb */ { false, 0x5eeb, 0x5eeb }, /* 0x5eec */ { false, 0x5eec, 0x5eec }, /* 0x5eed */ { false, 0x5eed, 0x5eed }, /* 0x5eee */ { false, 0x5eee, 0x5eee }, /* 0x5eef */ { false, 0x5eef, 0x5eef }, /* 0x5ef0 */ { false, 0x5ef0, 0x5ef0 }, /* 0x5ef1 */ { false, 0x5ef1, 0x5ef1 }, /* 0x5ef2 */ { false, 0x5ef2, 0x5ef2 }, /* 0x5ef3 */ { false, 0x5ef3, 0x5ef3 }, /* 0x5ef4 */ { false, 0x5ef4, 0x5ef4 }, /* 0x5ef5 */ { false, 0x5ef5, 0x5ef5 }, /* 0x5ef6 */ { false, 0x5ef6, 0x5ef6 }, /* 0x5ef7 */ { false, 0x5ef7, 0x5ef7 }, /* 0x5ef8 */ { false, 0x5ef8, 0x5ef8 }, /* 0x5ef9 */ { false, 0x5ef9, 0x5ef9 }, /* 0x5efa */ { false, 0x5efa, 0x5efa }, /* 0x5efb */ { false, 0x5efb, 0x5efb }, /* 0x5efc */ { false, 0x5efc, 0x5efc }, /* 0x5efd */ { false, 0x5efd, 0x5efd }, /* 0x5efe */ { false, 0x5efe, 0x5efe }, /* 0x5eff */ { false, 0x5eff, 0x5eff }, /* 0x5f00 */ { false, 0x5f00, 0x5f00 }, /* 0x5f01 */ { false, 0x5f01, 0x5f01 }, /* 0x5f02 */ { false, 0x5f02, 0x5f02 }, /* 0x5f03 */ { false, 0x5f03, 0x5f03 }, /* 0x5f04 */ { false, 0x5f04, 0x5f04 }, /* 0x5f05 */ { false, 0x5f05, 0x5f05 }, /* 0x5f06 */ { false, 0x5f06, 0x5f06 }, /* 0x5f07 */ { false, 0x5f07, 0x5f07 }, /* 0x5f08 */ { false, 0x5f08, 0x5f08 }, /* 0x5f09 */ { false, 0x5f09, 0x5f09 }, /* 0x5f0a */ { false, 0x5f0a, 0x5f0a }, /* 0x5f0b */ { false, 0x5f0b, 0x5f0b }, /* 0x5f0c */ { false, 0x5f0c, 0x5f0c }, /* 0x5f0d */ { false, 0x5f0d, 0x5f0d }, /* 0x5f0e */ { false, 0x5f0e, 0x5f0e }, /* 0x5f0f */ { false, 0x5f0f, 0x5f0f }, /* 0x5f10 */ { false, 0x5f10, 0x5f10 }, /* 0x5f11 */ { false, 0x5f11, 0x5f11 }, /* 0x5f12 */ { false, 0x5f12, 0x5f12 }, /* 0x5f13 */ { false, 0x5f13, 0x5f13 }, /* 0x5f14 */ { false, 0x5f14, 0x5f14 }, /* 0x5f15 */ { false, 0x5f15, 0x5f15 }, /* 0x5f16 */ { false, 0x5f16, 0x5f16 }, /* 0x5f17 */ { false, 0x5f17, 0x5f17 }, /* 0x5f18 */ { false, 0x5f18, 0x5f18 }, /* 0x5f19 */ { false, 0x5f19, 0x5f19 }, /* 0x5f1a */ { false, 0x5f1a, 0x5f1a }, /* 0x5f1b */ { false, 0x5f1b, 0x5f1b }, /* 0x5f1c */ { false, 0x5f1c, 0x5f1c }, /* 0x5f1d */ { false, 0x5f1d, 0x5f1d }, /* 0x5f1e */ { false, 0x5f1e, 0x5f1e }, /* 0x5f1f */ { false, 0x5f1f, 0x5f1f }, /* 0x5f20 */ { false, 0x5f20, 0x5f20 }, /* 0x5f21 */ { false, 0x5f21, 0x5f21 }, /* 0x5f22 */ { false, 0x5f22, 0x5f22 }, /* 0x5f23 */ { false, 0x5f23, 0x5f23 }, /* 0x5f24 */ { false, 0x5f24, 0x5f24 }, /* 0x5f25 */ { false, 0x5f25, 0x5f25 }, /* 0x5f26 */ { false, 0x5f26, 0x5f26 }, /* 0x5f27 */ { false, 0x5f27, 0x5f27 }, /* 0x5f28 */ { false, 0x5f28, 0x5f28 }, /* 0x5f29 */ { false, 0x5f29, 0x5f29 }, /* 0x5f2a */ { false, 0x5f2a, 0x5f2a }, /* 0x5f2b */ { false, 0x5f2b, 0x5f2b }, /* 0x5f2c */ { false, 0x5f2c, 0x5f2c }, /* 0x5f2d */ { false, 0x5f2d, 0x5f2d }, /* 0x5f2e */ { false, 0x5f2e, 0x5f2e }, /* 0x5f2f */ { false, 0x5f2f, 0x5f2f }, /* 0x5f30 */ { false, 0x5f30, 0x5f30 }, /* 0x5f31 */ { false, 0x5f31, 0x5f31 }, /* 0x5f32 */ { false, 0x5f32, 0x5f32 }, /* 0x5f33 */ { false, 0x5f33, 0x5f33 }, /* 0x5f34 */ { false, 0x5f34, 0x5f34 }, /* 0x5f35 */ { false, 0x5f35, 0x5f35 }, /* 0x5f36 */ { false, 0x5f36, 0x5f36 }, /* 0x5f37 */ { false, 0x5f37, 0x5f37 }, /* 0x5f38 */ { false, 0x5f38, 0x5f38 }, /* 0x5f39 */ { false, 0x5f39, 0x5f39 }, /* 0x5f3a */ { false, 0x5f3a, 0x5f3a }, /* 0x5f3b */ { false, 0x5f3b, 0x5f3b }, /* 0x5f3c */ { false, 0x5f3c, 0x5f3c }, /* 0x5f3d */ { false, 0x5f3d, 0x5f3d }, /* 0x5f3e */ { false, 0x5f3e, 0x5f3e }, /* 0x5f3f */ { false, 0x5f3f, 0x5f3f }, /* 0x5f40 */ { false, 0x5f40, 0x5f40 }, /* 0x5f41 */ { false, 0x5f41, 0x5f41 }, /* 0x5f42 */ { false, 0x5f42, 0x5f42 }, /* 0x5f43 */ { false, 0x5f43, 0x5f43 }, /* 0x5f44 */ { false, 0x5f44, 0x5f44 }, /* 0x5f45 */ { false, 0x5f45, 0x5f45 }, /* 0x5f46 */ { false, 0x5f46, 0x5f46 }, /* 0x5f47 */ { false, 0x5f47, 0x5f47 }, /* 0x5f48 */ { false, 0x5f48, 0x5f48 }, /* 0x5f49 */ { false, 0x5f49, 0x5f49 }, /* 0x5f4a */ { false, 0x5f4a, 0x5f4a }, /* 0x5f4b */ { false, 0x5f4b, 0x5f4b }, /* 0x5f4c */ { false, 0x5f4c, 0x5f4c }, /* 0x5f4d */ { false, 0x5f4d, 0x5f4d }, /* 0x5f4e */ { false, 0x5f4e, 0x5f4e }, /* 0x5f4f */ { false, 0x5f4f, 0x5f4f }, /* 0x5f50 */ { false, 0x5f50, 0x5f50 }, /* 0x5f51 */ { false, 0x5f51, 0x5f51 }, /* 0x5f52 */ { false, 0x5f52, 0x5f52 }, /* 0x5f53 */ { false, 0x5f53, 0x5f53 }, /* 0x5f54 */ { false, 0x5f54, 0x5f54 }, /* 0x5f55 */ { false, 0x5f55, 0x5f55 }, /* 0x5f56 */ { false, 0x5f56, 0x5f56 }, /* 0x5f57 */ { false, 0x5f57, 0x5f57 }, /* 0x5f58 */ { false, 0x5f58, 0x5f58 }, /* 0x5f59 */ { false, 0x5f59, 0x5f59 }, /* 0x5f5a */ { false, 0x5f5a, 0x5f5a }, /* 0x5f5b */ { false, 0x5f5b, 0x5f5b }, /* 0x5f5c */ { false, 0x5f5c, 0x5f5c }, /* 0x5f5d */ { false, 0x5f5d, 0x5f5d }, /* 0x5f5e */ { false, 0x5f5e, 0x5f5e }, /* 0x5f5f */ { false, 0x5f5f, 0x5f5f }, /* 0x5f60 */ { false, 0x5f60, 0x5f60 }, /* 0x5f61 */ { false, 0x5f61, 0x5f61 }, /* 0x5f62 */ { false, 0x5f62, 0x5f62 }, /* 0x5f63 */ { false, 0x5f63, 0x5f63 }, /* 0x5f64 */ { false, 0x5f64, 0x5f64 }, /* 0x5f65 */ { false, 0x5f65, 0x5f65 }, /* 0x5f66 */ { false, 0x5f66, 0x5f66 }, /* 0x5f67 */ { false, 0x5f67, 0x5f67 }, /* 0x5f68 */ { false, 0x5f68, 0x5f68 }, /* 0x5f69 */ { false, 0x5f69, 0x5f69 }, /* 0x5f6a */ { false, 0x5f6a, 0x5f6a }, /* 0x5f6b */ { false, 0x5f6b, 0x5f6b }, /* 0x5f6c */ { false, 0x5f6c, 0x5f6c }, /* 0x5f6d */ { false, 0x5f6d, 0x5f6d }, /* 0x5f6e */ { false, 0x5f6e, 0x5f6e }, /* 0x5f6f */ { false, 0x5f6f, 0x5f6f }, /* 0x5f70 */ { false, 0x5f70, 0x5f70 }, /* 0x5f71 */ { false, 0x5f71, 0x5f71 }, /* 0x5f72 */ { false, 0x5f72, 0x5f72 }, /* 0x5f73 */ { false, 0x5f73, 0x5f73 }, /* 0x5f74 */ { false, 0x5f74, 0x5f74 }, /* 0x5f75 */ { false, 0x5f75, 0x5f75 }, /* 0x5f76 */ { false, 0x5f76, 0x5f76 }, /* 0x5f77 */ { false, 0x5f77, 0x5f77 }, /* 0x5f78 */ { false, 0x5f78, 0x5f78 }, /* 0x5f79 */ { false, 0x5f79, 0x5f79 }, /* 0x5f7a */ { false, 0x5f7a, 0x5f7a }, /* 0x5f7b */ { false, 0x5f7b, 0x5f7b }, /* 0x5f7c */ { false, 0x5f7c, 0x5f7c }, /* 0x5f7d */ { false, 0x5f7d, 0x5f7d }, /* 0x5f7e */ { false, 0x5f7e, 0x5f7e }, /* 0x5f7f */ { false, 0x5f7f, 0x5f7f }, /* 0x5f80 */ { false, 0x5f80, 0x5f80 }, /* 0x5f81 */ { false, 0x5f81, 0x5f81 }, /* 0x5f82 */ { false, 0x5f82, 0x5f82 }, /* 0x5f83 */ { false, 0x5f83, 0x5f83 }, /* 0x5f84 */ { false, 0x5f84, 0x5f84 }, /* 0x5f85 */ { false, 0x5f85, 0x5f85 }, /* 0x5f86 */ { false, 0x5f86, 0x5f86 }, /* 0x5f87 */ { false, 0x5f87, 0x5f87 }, /* 0x5f88 */ { false, 0x5f88, 0x5f88 }, /* 0x5f89 */ { false, 0x5f89, 0x5f89 }, /* 0x5f8a */ { false, 0x5f8a, 0x5f8a }, /* 0x5f8b */ { false, 0x5f8b, 0x5f8b }, /* 0x5f8c */ { false, 0x5f8c, 0x5f8c }, /* 0x5f8d */ { false, 0x5f8d, 0x5f8d }, /* 0x5f8e */ { false, 0x5f8e, 0x5f8e }, /* 0x5f8f */ { false, 0x5f8f, 0x5f8f }, /* 0x5f90 */ { false, 0x5f90, 0x5f90 }, /* 0x5f91 */ { false, 0x5f91, 0x5f91 }, /* 0x5f92 */ { false, 0x5f92, 0x5f92 }, /* 0x5f93 */ { false, 0x5f93, 0x5f93 }, /* 0x5f94 */ { false, 0x5f94, 0x5f94 }, /* 0x5f95 */ { false, 0x5f95, 0x5f95 }, /* 0x5f96 */ { false, 0x5f96, 0x5f96 }, /* 0x5f97 */ { false, 0x5f97, 0x5f97 }, /* 0x5f98 */ { false, 0x5f98, 0x5f98 }, /* 0x5f99 */ { false, 0x5f99, 0x5f99 }, /* 0x5f9a */ { false, 0x5f9a, 0x5f9a }, /* 0x5f9b */ { false, 0x5f9b, 0x5f9b }, /* 0x5f9c */ { false, 0x5f9c, 0x5f9c }, /* 0x5f9d */ { false, 0x5f9d, 0x5f9d }, /* 0x5f9e */ { false, 0x5f9e, 0x5f9e }, /* 0x5f9f */ { false, 0x5f9f, 0x5f9f }, /* 0x5fa0 */ { false, 0x5fa0, 0x5fa0 }, /* 0x5fa1 */ { false, 0x5fa1, 0x5fa1 }, /* 0x5fa2 */ { false, 0x5fa2, 0x5fa2 }, /* 0x5fa3 */ { false, 0x5fa3, 0x5fa3 }, /* 0x5fa4 */ { false, 0x5fa4, 0x5fa4 }, /* 0x5fa5 */ { false, 0x5fa5, 0x5fa5 }, /* 0x5fa6 */ { false, 0x5fa6, 0x5fa6 }, /* 0x5fa7 */ { false, 0x5fa7, 0x5fa7 }, /* 0x5fa8 */ { false, 0x5fa8, 0x5fa8 }, /* 0x5fa9 */ { false, 0x5fa9, 0x5fa9 }, /* 0x5faa */ { false, 0x5faa, 0x5faa }, /* 0x5fab */ { false, 0x5fab, 0x5fab }, /* 0x5fac */ { false, 0x5fac, 0x5fac }, /* 0x5fad */ { false, 0x5fad, 0x5fad }, /* 0x5fae */ { false, 0x5fae, 0x5fae }, /* 0x5faf */ { false, 0x5faf, 0x5faf }, /* 0x5fb0 */ { false, 0x5fb0, 0x5fb0 }, /* 0x5fb1 */ { false, 0x5fb1, 0x5fb1 }, /* 0x5fb2 */ { false, 0x5fb2, 0x5fb2 }, /* 0x5fb3 */ { false, 0x5fb3, 0x5fb3 }, /* 0x5fb4 */ { false, 0x5fb4, 0x5fb4 }, /* 0x5fb5 */ { false, 0x5fb5, 0x5fb5 }, /* 0x5fb6 */ { false, 0x5fb6, 0x5fb6 }, /* 0x5fb7 */ { false, 0x5fb7, 0x5fb7 }, /* 0x5fb8 */ { false, 0x5fb8, 0x5fb8 }, /* 0x5fb9 */ { false, 0x5fb9, 0x5fb9 }, /* 0x5fba */ { false, 0x5fba, 0x5fba }, /* 0x5fbb */ { false, 0x5fbb, 0x5fbb }, /* 0x5fbc */ { false, 0x5fbc, 0x5fbc }, /* 0x5fbd */ { false, 0x5fbd, 0x5fbd }, /* 0x5fbe */ { false, 0x5fbe, 0x5fbe }, /* 0x5fbf */ { false, 0x5fbf, 0x5fbf }, /* 0x5fc0 */ { false, 0x5fc0, 0x5fc0 }, /* 0x5fc1 */ { false, 0x5fc1, 0x5fc1 }, /* 0x5fc2 */ { false, 0x5fc2, 0x5fc2 }, /* 0x5fc3 */ { false, 0x5fc3, 0x5fc3 }, /* 0x5fc4 */ { false, 0x5fc4, 0x5fc4 }, /* 0x5fc5 */ { false, 0x5fc5, 0x5fc5 }, /* 0x5fc6 */ { false, 0x5fc6, 0x5fc6 }, /* 0x5fc7 */ { false, 0x5fc7, 0x5fc7 }, /* 0x5fc8 */ { false, 0x5fc8, 0x5fc8 }, /* 0x5fc9 */ { false, 0x5fc9, 0x5fc9 }, /* 0x5fca */ { false, 0x5fca, 0x5fca }, /* 0x5fcb */ { false, 0x5fcb, 0x5fcb }, /* 0x5fcc */ { false, 0x5fcc, 0x5fcc }, /* 0x5fcd */ { false, 0x5fcd, 0x5fcd }, /* 0x5fce */ { false, 0x5fce, 0x5fce }, /* 0x5fcf */ { false, 0x5fcf, 0x5fcf }, /* 0x5fd0 */ { false, 0x5fd0, 0x5fd0 }, /* 0x5fd1 */ { false, 0x5fd1, 0x5fd1 }, /* 0x5fd2 */ { false, 0x5fd2, 0x5fd2 }, /* 0x5fd3 */ { false, 0x5fd3, 0x5fd3 }, /* 0x5fd4 */ { false, 0x5fd4, 0x5fd4 }, /* 0x5fd5 */ { false, 0x5fd5, 0x5fd5 }, /* 0x5fd6 */ { false, 0x5fd6, 0x5fd6 }, /* 0x5fd7 */ { false, 0x5fd7, 0x5fd7 }, /* 0x5fd8 */ { false, 0x5fd8, 0x5fd8 }, /* 0x5fd9 */ { false, 0x5fd9, 0x5fd9 }, /* 0x5fda */ { false, 0x5fda, 0x5fda }, /* 0x5fdb */ { false, 0x5fdb, 0x5fdb }, /* 0x5fdc */ { false, 0x5fdc, 0x5fdc }, /* 0x5fdd */ { false, 0x5fdd, 0x5fdd }, /* 0x5fde */ { false, 0x5fde, 0x5fde }, /* 0x5fdf */ { false, 0x5fdf, 0x5fdf }, /* 0x5fe0 */ { false, 0x5fe0, 0x5fe0 }, /* 0x5fe1 */ { false, 0x5fe1, 0x5fe1 }, /* 0x5fe2 */ { false, 0x5fe2, 0x5fe2 }, /* 0x5fe3 */ { false, 0x5fe3, 0x5fe3 }, /* 0x5fe4 */ { false, 0x5fe4, 0x5fe4 }, /* 0x5fe5 */ { false, 0x5fe5, 0x5fe5 }, /* 0x5fe6 */ { false, 0x5fe6, 0x5fe6 }, /* 0x5fe7 */ { false, 0x5fe7, 0x5fe7 }, /* 0x5fe8 */ { false, 0x5fe8, 0x5fe8 }, /* 0x5fe9 */ { false, 0x5fe9, 0x5fe9 }, /* 0x5fea */ { false, 0x5fea, 0x5fea }, /* 0x5feb */ { false, 0x5feb, 0x5feb }, /* 0x5fec */ { false, 0x5fec, 0x5fec }, /* 0x5fed */ { false, 0x5fed, 0x5fed }, /* 0x5fee */ { false, 0x5fee, 0x5fee }, /* 0x5fef */ { false, 0x5fef, 0x5fef }, /* 0x5ff0 */ { false, 0x5ff0, 0x5ff0 }, /* 0x5ff1 */ { false, 0x5ff1, 0x5ff1 }, /* 0x5ff2 */ { false, 0x5ff2, 0x5ff2 }, /* 0x5ff3 */ { false, 0x5ff3, 0x5ff3 }, /* 0x5ff4 */ { false, 0x5ff4, 0x5ff4 }, /* 0x5ff5 */ { false, 0x5ff5, 0x5ff5 }, /* 0x5ff6 */ { false, 0x5ff6, 0x5ff6 }, /* 0x5ff7 */ { false, 0x5ff7, 0x5ff7 }, /* 0x5ff8 */ { false, 0x5ff8, 0x5ff8 }, /* 0x5ff9 */ { false, 0x5ff9, 0x5ff9 }, /* 0x5ffa */ { false, 0x5ffa, 0x5ffa }, /* 0x5ffb */ { false, 0x5ffb, 0x5ffb }, /* 0x5ffc */ { false, 0x5ffc, 0x5ffc }, /* 0x5ffd */ { false, 0x5ffd, 0x5ffd }, /* 0x5ffe */ { false, 0x5ffe, 0x5ffe }, /* 0x5fff */ { false, 0x5fff, 0x5fff }, /* 0x6000 */ { false, 0x6000, 0x6000 }, /* 0x6001 */ { false, 0x6001, 0x6001 }, /* 0x6002 */ { false, 0x6002, 0x6002 }, /* 0x6003 */ { false, 0x6003, 0x6003 }, /* 0x6004 */ { false, 0x6004, 0x6004 }, /* 0x6005 */ { false, 0x6005, 0x6005 }, /* 0x6006 */ { false, 0x6006, 0x6006 }, /* 0x6007 */ { false, 0x6007, 0x6007 }, /* 0x6008 */ { false, 0x6008, 0x6008 }, /* 0x6009 */ { false, 0x6009, 0x6009 }, /* 0x600a */ { false, 0x600a, 0x600a }, /* 0x600b */ { false, 0x600b, 0x600b }, /* 0x600c */ { false, 0x600c, 0x600c }, /* 0x600d */ { false, 0x600d, 0x600d }, /* 0x600e */ { false, 0x600e, 0x600e }, /* 0x600f */ { false, 0x600f, 0x600f }, /* 0x6010 */ { false, 0x6010, 0x6010 }, /* 0x6011 */ { false, 0x6011, 0x6011 }, /* 0x6012 */ { false, 0x6012, 0x6012 }, /* 0x6013 */ { false, 0x6013, 0x6013 }, /* 0x6014 */ { false, 0x6014, 0x6014 }, /* 0x6015 */ { false, 0x6015, 0x6015 }, /* 0x6016 */ { false, 0x6016, 0x6016 }, /* 0x6017 */ { false, 0x6017, 0x6017 }, /* 0x6018 */ { false, 0x6018, 0x6018 }, /* 0x6019 */ { false, 0x6019, 0x6019 }, /* 0x601a */ { false, 0x601a, 0x601a }, /* 0x601b */ { false, 0x601b, 0x601b }, /* 0x601c */ { false, 0x601c, 0x601c }, /* 0x601d */ { false, 0x601d, 0x601d }, /* 0x601e */ { false, 0x601e, 0x601e }, /* 0x601f */ { false, 0x601f, 0x601f }, /* 0x6020 */ { false, 0x6020, 0x6020 }, /* 0x6021 */ { false, 0x6021, 0x6021 }, /* 0x6022 */ { false, 0x6022, 0x6022 }, /* 0x6023 */ { false, 0x6023, 0x6023 }, /* 0x6024 */ { false, 0x6024, 0x6024 }, /* 0x6025 */ { false, 0x6025, 0x6025 }, /* 0x6026 */ { false, 0x6026, 0x6026 }, /* 0x6027 */ { false, 0x6027, 0x6027 }, /* 0x6028 */ { false, 0x6028, 0x6028 }, /* 0x6029 */ { false, 0x6029, 0x6029 }, /* 0x602a */ { false, 0x602a, 0x602a }, /* 0x602b */ { false, 0x602b, 0x602b }, /* 0x602c */ { false, 0x602c, 0x602c }, /* 0x602d */ { false, 0x602d, 0x602d }, /* 0x602e */ { false, 0x602e, 0x602e }, /* 0x602f */ { false, 0x602f, 0x602f }, /* 0x6030 */ { false, 0x6030, 0x6030 }, /* 0x6031 */ { false, 0x6031, 0x6031 }, /* 0x6032 */ { false, 0x6032, 0x6032 }, /* 0x6033 */ { false, 0x6033, 0x6033 }, /* 0x6034 */ { false, 0x6034, 0x6034 }, /* 0x6035 */ { false, 0x6035, 0x6035 }, /* 0x6036 */ { false, 0x6036, 0x6036 }, /* 0x6037 */ { false, 0x6037, 0x6037 }, /* 0x6038 */ { false, 0x6038, 0x6038 }, /* 0x6039 */ { false, 0x6039, 0x6039 }, /* 0x603a */ { false, 0x603a, 0x603a }, /* 0x603b */ { false, 0x603b, 0x603b }, /* 0x603c */ { false, 0x603c, 0x603c }, /* 0x603d */ { false, 0x603d, 0x603d }, /* 0x603e */ { false, 0x603e, 0x603e }, /* 0x603f */ { false, 0x603f, 0x603f }, /* 0x6040 */ { false, 0x6040, 0x6040 }, /* 0x6041 */ { false, 0x6041, 0x6041 }, /* 0x6042 */ { false, 0x6042, 0x6042 }, /* 0x6043 */ { false, 0x6043, 0x6043 }, /* 0x6044 */ { false, 0x6044, 0x6044 }, /* 0x6045 */ { false, 0x6045, 0x6045 }, /* 0x6046 */ { false, 0x6046, 0x6046 }, /* 0x6047 */ { false, 0x6047, 0x6047 }, /* 0x6048 */ { false, 0x6048, 0x6048 }, /* 0x6049 */ { false, 0x6049, 0x6049 }, /* 0x604a */ { false, 0x604a, 0x604a }, /* 0x604b */ { false, 0x604b, 0x604b }, /* 0x604c */ { false, 0x604c, 0x604c }, /* 0x604d */ { false, 0x604d, 0x604d }, /* 0x604e */ { false, 0x604e, 0x604e }, /* 0x604f */ { false, 0x604f, 0x604f }, /* 0x6050 */ { false, 0x6050, 0x6050 }, /* 0x6051 */ { false, 0x6051, 0x6051 }, /* 0x6052 */ { false, 0x6052, 0x6052 }, /* 0x6053 */ { false, 0x6053, 0x6053 }, /* 0x6054 */ { false, 0x6054, 0x6054 }, /* 0x6055 */ { false, 0x6055, 0x6055 }, /* 0x6056 */ { false, 0x6056, 0x6056 }, /* 0x6057 */ { false, 0x6057, 0x6057 }, /* 0x6058 */ { false, 0x6058, 0x6058 }, /* 0x6059 */ { false, 0x6059, 0x6059 }, /* 0x605a */ { false, 0x605a, 0x605a }, /* 0x605b */ { false, 0x605b, 0x605b }, /* 0x605c */ { false, 0x605c, 0x605c }, /* 0x605d */ { false, 0x605d, 0x605d }, /* 0x605e */ { false, 0x605e, 0x605e }, /* 0x605f */ { false, 0x605f, 0x605f }, /* 0x6060 */ { false, 0x6060, 0x6060 }, /* 0x6061 */ { false, 0x6061, 0x6061 }, /* 0x6062 */ { false, 0x6062, 0x6062 }, /* 0x6063 */ { false, 0x6063, 0x6063 }, /* 0x6064 */ { false, 0x6064, 0x6064 }, /* 0x6065 */ { false, 0x6065, 0x6065 }, /* 0x6066 */ { false, 0x6066, 0x6066 }, /* 0x6067 */ { false, 0x6067, 0x6067 }, /* 0x6068 */ { false, 0x6068, 0x6068 }, /* 0x6069 */ { false, 0x6069, 0x6069 }, /* 0x606a */ { false, 0x606a, 0x606a }, /* 0x606b */ { false, 0x606b, 0x606b }, /* 0x606c */ { false, 0x606c, 0x606c }, /* 0x606d */ { false, 0x606d, 0x606d }, /* 0x606e */ { false, 0x606e, 0x606e }, /* 0x606f */ { false, 0x606f, 0x606f }, /* 0x6070 */ { false, 0x6070, 0x6070 }, /* 0x6071 */ { false, 0x6071, 0x6071 }, /* 0x6072 */ { false, 0x6072, 0x6072 }, /* 0x6073 */ { false, 0x6073, 0x6073 }, /* 0x6074 */ { false, 0x6074, 0x6074 }, /* 0x6075 */ { false, 0x6075, 0x6075 }, /* 0x6076 */ { false, 0x6076, 0x6076 }, /* 0x6077 */ { false, 0x6077, 0x6077 }, /* 0x6078 */ { false, 0x6078, 0x6078 }, /* 0x6079 */ { false, 0x6079, 0x6079 }, /* 0x607a */ { false, 0x607a, 0x607a }, /* 0x607b */ { false, 0x607b, 0x607b }, /* 0x607c */ { false, 0x607c, 0x607c }, /* 0x607d */ { false, 0x607d, 0x607d }, /* 0x607e */ { false, 0x607e, 0x607e }, /* 0x607f */ { false, 0x607f, 0x607f }, /* 0x6080 */ { false, 0x6080, 0x6080 }, /* 0x6081 */ { false, 0x6081, 0x6081 }, /* 0x6082 */ { false, 0x6082, 0x6082 }, /* 0x6083 */ { false, 0x6083, 0x6083 }, /* 0x6084 */ { false, 0x6084, 0x6084 }, /* 0x6085 */ { false, 0x6085, 0x6085 }, /* 0x6086 */ { false, 0x6086, 0x6086 }, /* 0x6087 */ { false, 0x6087, 0x6087 }, /* 0x6088 */ { false, 0x6088, 0x6088 }, /* 0x6089 */ { false, 0x6089, 0x6089 }, /* 0x608a */ { false, 0x608a, 0x608a }, /* 0x608b */ { false, 0x608b, 0x608b }, /* 0x608c */ { false, 0x608c, 0x608c }, /* 0x608d */ { false, 0x608d, 0x608d }, /* 0x608e */ { false, 0x608e, 0x608e }, /* 0x608f */ { false, 0x608f, 0x608f }, /* 0x6090 */ { false, 0x6090, 0x6090 }, /* 0x6091 */ { false, 0x6091, 0x6091 }, /* 0x6092 */ { false, 0x6092, 0x6092 }, /* 0x6093 */ { false, 0x6093, 0x6093 }, /* 0x6094 */ { false, 0x6094, 0x6094 }, /* 0x6095 */ { false, 0x6095, 0x6095 }, /* 0x6096 */ { false, 0x6096, 0x6096 }, /* 0x6097 */ { false, 0x6097, 0x6097 }, /* 0x6098 */ { false, 0x6098, 0x6098 }, /* 0x6099 */ { false, 0x6099, 0x6099 }, /* 0x609a */ { false, 0x609a, 0x609a }, /* 0x609b */ { false, 0x609b, 0x609b }, /* 0x609c */ { false, 0x609c, 0x609c }, /* 0x609d */ { false, 0x609d, 0x609d }, /* 0x609e */ { false, 0x609e, 0x609e }, /* 0x609f */ { false, 0x609f, 0x609f }, /* 0x60a0 */ { false, 0x60a0, 0x60a0 }, /* 0x60a1 */ { false, 0x60a1, 0x60a1 }, /* 0x60a2 */ { false, 0x60a2, 0x60a2 }, /* 0x60a3 */ { false, 0x60a3, 0x60a3 }, /* 0x60a4 */ { false, 0x60a4, 0x60a4 }, /* 0x60a5 */ { false, 0x60a5, 0x60a5 }, /* 0x60a6 */ { false, 0x60a6, 0x60a6 }, /* 0x60a7 */ { false, 0x60a7, 0x60a7 }, /* 0x60a8 */ { false, 0x60a8, 0x60a8 }, /* 0x60a9 */ { false, 0x60a9, 0x60a9 }, /* 0x60aa */ { false, 0x60aa, 0x60aa }, /* 0x60ab */ { false, 0x60ab, 0x60ab }, /* 0x60ac */ { false, 0x60ac, 0x60ac }, /* 0x60ad */ { false, 0x60ad, 0x60ad }, /* 0x60ae */ { false, 0x60ae, 0x60ae }, /* 0x60af */ { false, 0x60af, 0x60af }, /* 0x60b0 */ { false, 0x60b0, 0x60b0 }, /* 0x60b1 */ { false, 0x60b1, 0x60b1 }, /* 0x60b2 */ { false, 0x60b2, 0x60b2 }, /* 0x60b3 */ { false, 0x60b3, 0x60b3 }, /* 0x60b4 */ { false, 0x60b4, 0x60b4 }, /* 0x60b5 */ { false, 0x60b5, 0x60b5 }, /* 0x60b6 */ { false, 0x60b6, 0x60b6 }, /* 0x60b7 */ { false, 0x60b7, 0x60b7 }, /* 0x60b8 */ { false, 0x60b8, 0x60b8 }, /* 0x60b9 */ { false, 0x60b9, 0x60b9 }, /* 0x60ba */ { false, 0x60ba, 0x60ba }, /* 0x60bb */ { false, 0x60bb, 0x60bb }, /* 0x60bc */ { false, 0x60bc, 0x60bc }, /* 0x60bd */ { false, 0x60bd, 0x60bd }, /* 0x60be */ { false, 0x60be, 0x60be }, /* 0x60bf */ { false, 0x60bf, 0x60bf }, /* 0x60c0 */ { false, 0x60c0, 0x60c0 }, /* 0x60c1 */ { false, 0x60c1, 0x60c1 }, /* 0x60c2 */ { false, 0x60c2, 0x60c2 }, /* 0x60c3 */ { false, 0x60c3, 0x60c3 }, /* 0x60c4 */ { false, 0x60c4, 0x60c4 }, /* 0x60c5 */ { false, 0x60c5, 0x60c5 }, /* 0x60c6 */ { false, 0x60c6, 0x60c6 }, /* 0x60c7 */ { false, 0x60c7, 0x60c7 }, /* 0x60c8 */ { false, 0x60c8, 0x60c8 }, /* 0x60c9 */ { false, 0x60c9, 0x60c9 }, /* 0x60ca */ { false, 0x60ca, 0x60ca }, /* 0x60cb */ { false, 0x60cb, 0x60cb }, /* 0x60cc */ { false, 0x60cc, 0x60cc }, /* 0x60cd */ { false, 0x60cd, 0x60cd }, /* 0x60ce */ { false, 0x60ce, 0x60ce }, /* 0x60cf */ { false, 0x60cf, 0x60cf }, /* 0x60d0 */ { false, 0x60d0, 0x60d0 }, /* 0x60d1 */ { false, 0x60d1, 0x60d1 }, /* 0x60d2 */ { false, 0x60d2, 0x60d2 }, /* 0x60d3 */ { false, 0x60d3, 0x60d3 }, /* 0x60d4 */ { false, 0x60d4, 0x60d4 }, /* 0x60d5 */ { false, 0x60d5, 0x60d5 }, /* 0x60d6 */ { false, 0x60d6, 0x60d6 }, /* 0x60d7 */ { false, 0x60d7, 0x60d7 }, /* 0x60d8 */ { false, 0x60d8, 0x60d8 }, /* 0x60d9 */ { false, 0x60d9, 0x60d9 }, /* 0x60da */ { false, 0x60da, 0x60da }, /* 0x60db */ { false, 0x60db, 0x60db }, /* 0x60dc */ { false, 0x60dc, 0x60dc }, /* 0x60dd */ { false, 0x60dd, 0x60dd }, /* 0x60de */ { false, 0x60de, 0x60de }, /* 0x60df */ { false, 0x60df, 0x60df }, /* 0x60e0 */ { false, 0x60e0, 0x60e0 }, /* 0x60e1 */ { false, 0x60e1, 0x60e1 }, /* 0x60e2 */ { false, 0x60e2, 0x60e2 }, /* 0x60e3 */ { false, 0x60e3, 0x60e3 }, /* 0x60e4 */ { false, 0x60e4, 0x60e4 }, /* 0x60e5 */ { false, 0x60e5, 0x60e5 }, /* 0x60e6 */ { false, 0x60e6, 0x60e6 }, /* 0x60e7 */ { false, 0x60e7, 0x60e7 }, /* 0x60e8 */ { false, 0x60e8, 0x60e8 }, /* 0x60e9 */ { false, 0x60e9, 0x60e9 }, /* 0x60ea */ { false, 0x60ea, 0x60ea }, /* 0x60eb */ { false, 0x60eb, 0x60eb }, /* 0x60ec */ { false, 0x60ec, 0x60ec }, /* 0x60ed */ { false, 0x60ed, 0x60ed }, /* 0x60ee */ { false, 0x60ee, 0x60ee }, /* 0x60ef */ { false, 0x60ef, 0x60ef }, /* 0x60f0 */ { false, 0x60f0, 0x60f0 }, /* 0x60f1 */ { false, 0x60f1, 0x60f1 }, /* 0x60f2 */ { false, 0x60f2, 0x60f2 }, /* 0x60f3 */ { false, 0x60f3, 0x60f3 }, /* 0x60f4 */ { false, 0x60f4, 0x60f4 }, /* 0x60f5 */ { false, 0x60f5, 0x60f5 }, /* 0x60f6 */ { false, 0x60f6, 0x60f6 }, /* 0x60f7 */ { false, 0x60f7, 0x60f7 }, /* 0x60f8 */ { false, 0x60f8, 0x60f8 }, /* 0x60f9 */ { false, 0x60f9, 0x60f9 }, /* 0x60fa */ { false, 0x60fa, 0x60fa }, /* 0x60fb */ { false, 0x60fb, 0x60fb }, /* 0x60fc */ { false, 0x60fc, 0x60fc }, /* 0x60fd */ { false, 0x60fd, 0x60fd }, /* 0x60fe */ { false, 0x60fe, 0x60fe }, /* 0x60ff */ { false, 0x60ff, 0x60ff }, /* 0x6100 */ { false, 0x6100, 0x6100 }, /* 0x6101 */ { false, 0x6101, 0x6101 }, /* 0x6102 */ { false, 0x6102, 0x6102 }, /* 0x6103 */ { false, 0x6103, 0x6103 }, /* 0x6104 */ { false, 0x6104, 0x6104 }, /* 0x6105 */ { false, 0x6105, 0x6105 }, /* 0x6106 */ { false, 0x6106, 0x6106 }, /* 0x6107 */ { false, 0x6107, 0x6107 }, /* 0x6108 */ { false, 0x6108, 0x6108 }, /* 0x6109 */ { false, 0x6109, 0x6109 }, /* 0x610a */ { false, 0x610a, 0x610a }, /* 0x610b */ { false, 0x610b, 0x610b }, /* 0x610c */ { false, 0x610c, 0x610c }, /* 0x610d */ { false, 0x610d, 0x610d }, /* 0x610e */ { false, 0x610e, 0x610e }, /* 0x610f */ { false, 0x610f, 0x610f }, /* 0x6110 */ { false, 0x6110, 0x6110 }, /* 0x6111 */ { false, 0x6111, 0x6111 }, /* 0x6112 */ { false, 0x6112, 0x6112 }, /* 0x6113 */ { false, 0x6113, 0x6113 }, /* 0x6114 */ { false, 0x6114, 0x6114 }, /* 0x6115 */ { false, 0x6115, 0x6115 }, /* 0x6116 */ { false, 0x6116, 0x6116 }, /* 0x6117 */ { false, 0x6117, 0x6117 }, /* 0x6118 */ { false, 0x6118, 0x6118 }, /* 0x6119 */ { false, 0x6119, 0x6119 }, /* 0x611a */ { false, 0x611a, 0x611a }, /* 0x611b */ { false, 0x611b, 0x611b }, /* 0x611c */ { false, 0x611c, 0x611c }, /* 0x611d */ { false, 0x611d, 0x611d }, /* 0x611e */ { false, 0x611e, 0x611e }, /* 0x611f */ { false, 0x611f, 0x611f }, /* 0x6120 */ { false, 0x6120, 0x6120 }, /* 0x6121 */ { false, 0x6121, 0x6121 }, /* 0x6122 */ { false, 0x6122, 0x6122 }, /* 0x6123 */ { false, 0x6123, 0x6123 }, /* 0x6124 */ { false, 0x6124, 0x6124 }, /* 0x6125 */ { false, 0x6125, 0x6125 }, /* 0x6126 */ { false, 0x6126, 0x6126 }, /* 0x6127 */ { false, 0x6127, 0x6127 }, /* 0x6128 */ { false, 0x6128, 0x6128 }, /* 0x6129 */ { false, 0x6129, 0x6129 }, /* 0x612a */ { false, 0x612a, 0x612a }, /* 0x612b */ { false, 0x612b, 0x612b }, /* 0x612c */ { false, 0x612c, 0x612c }, /* 0x612d */ { false, 0x612d, 0x612d }, /* 0x612e */ { false, 0x612e, 0x612e }, /* 0x612f */ { false, 0x612f, 0x612f }, /* 0x6130 */ { false, 0x6130, 0x6130 }, /* 0x6131 */ { false, 0x6131, 0x6131 }, /* 0x6132 */ { false, 0x6132, 0x6132 }, /* 0x6133 */ { false, 0x6133, 0x6133 }, /* 0x6134 */ { false, 0x6134, 0x6134 }, /* 0x6135 */ { false, 0x6135, 0x6135 }, /* 0x6136 */ { false, 0x6136, 0x6136 }, /* 0x6137 */ { false, 0x6137, 0x6137 }, /* 0x6138 */ { false, 0x6138, 0x6138 }, /* 0x6139 */ { false, 0x6139, 0x6139 }, /* 0x613a */ { false, 0x613a, 0x613a }, /* 0x613b */ { false, 0x613b, 0x613b }, /* 0x613c */ { false, 0x613c, 0x613c }, /* 0x613d */ { false, 0x613d, 0x613d }, /* 0x613e */ { false, 0x613e, 0x613e }, /* 0x613f */ { false, 0x613f, 0x613f }, /* 0x6140 */ { false, 0x6140, 0x6140 }, /* 0x6141 */ { false, 0x6141, 0x6141 }, /* 0x6142 */ { false, 0x6142, 0x6142 }, /* 0x6143 */ { false, 0x6143, 0x6143 }, /* 0x6144 */ { false, 0x6144, 0x6144 }, /* 0x6145 */ { false, 0x6145, 0x6145 }, /* 0x6146 */ { false, 0x6146, 0x6146 }, /* 0x6147 */ { false, 0x6147, 0x6147 }, /* 0x6148 */ { false, 0x6148, 0x6148 }, /* 0x6149 */ { false, 0x6149, 0x6149 }, /* 0x614a */ { false, 0x614a, 0x614a }, /* 0x614b */ { false, 0x614b, 0x614b }, /* 0x614c */ { false, 0x614c, 0x614c }, /* 0x614d */ { false, 0x614d, 0x614d }, /* 0x614e */ { false, 0x614e, 0x614e }, /* 0x614f */ { false, 0x614f, 0x614f }, /* 0x6150 */ { false, 0x6150, 0x6150 }, /* 0x6151 */ { false, 0x6151, 0x6151 }, /* 0x6152 */ { false, 0x6152, 0x6152 }, /* 0x6153 */ { false, 0x6153, 0x6153 }, /* 0x6154 */ { false, 0x6154, 0x6154 }, /* 0x6155 */ { false, 0x6155, 0x6155 }, /* 0x6156 */ { false, 0x6156, 0x6156 }, /* 0x6157 */ { false, 0x6157, 0x6157 }, /* 0x6158 */ { false, 0x6158, 0x6158 }, /* 0x6159 */ { false, 0x6159, 0x6159 }, /* 0x615a */ { false, 0x615a, 0x615a }, /* 0x615b */ { false, 0x615b, 0x615b }, /* 0x615c */ { false, 0x615c, 0x615c }, /* 0x615d */ { false, 0x615d, 0x615d }, /* 0x615e */ { false, 0x615e, 0x615e }, /* 0x615f */ { false, 0x615f, 0x615f }, /* 0x6160 */ { false, 0x6160, 0x6160 }, /* 0x6161 */ { false, 0x6161, 0x6161 }, /* 0x6162 */ { false, 0x6162, 0x6162 }, /* 0x6163 */ { false, 0x6163, 0x6163 }, /* 0x6164 */ { false, 0x6164, 0x6164 }, /* 0x6165 */ { false, 0x6165, 0x6165 }, /* 0x6166 */ { false, 0x6166, 0x6166 }, /* 0x6167 */ { false, 0x6167, 0x6167 }, /* 0x6168 */ { false, 0x6168, 0x6168 }, /* 0x6169 */ { false, 0x6169, 0x6169 }, /* 0x616a */ { false, 0x616a, 0x616a }, /* 0x616b */ { false, 0x616b, 0x616b }, /* 0x616c */ { false, 0x616c, 0x616c }, /* 0x616d */ { false, 0x616d, 0x616d }, /* 0x616e */ { false, 0x616e, 0x616e }, /* 0x616f */ { false, 0x616f, 0x616f }, /* 0x6170 */ { false, 0x6170, 0x6170 }, /* 0x6171 */ { false, 0x6171, 0x6171 }, /* 0x6172 */ { false, 0x6172, 0x6172 }, /* 0x6173 */ { false, 0x6173, 0x6173 }, /* 0x6174 */ { false, 0x6174, 0x6174 }, /* 0x6175 */ { false, 0x6175, 0x6175 }, /* 0x6176 */ { false, 0x6176, 0x6176 }, /* 0x6177 */ { false, 0x6177, 0x6177 }, /* 0x6178 */ { false, 0x6178, 0x6178 }, /* 0x6179 */ { false, 0x6179, 0x6179 }, /* 0x617a */ { false, 0x617a, 0x617a }, /* 0x617b */ { false, 0x617b, 0x617b }, /* 0x617c */ { false, 0x617c, 0x617c }, /* 0x617d */ { false, 0x617d, 0x617d }, /* 0x617e */ { false, 0x617e, 0x617e }, /* 0x617f */ { false, 0x617f, 0x617f }, /* 0x6180 */ { false, 0x6180, 0x6180 }, /* 0x6181 */ { false, 0x6181, 0x6181 }, /* 0x6182 */ { false, 0x6182, 0x6182 }, /* 0x6183 */ { false, 0x6183, 0x6183 }, /* 0x6184 */ { false, 0x6184, 0x6184 }, /* 0x6185 */ { false, 0x6185, 0x6185 }, /* 0x6186 */ { false, 0x6186, 0x6186 }, /* 0x6187 */ { false, 0x6187, 0x6187 }, /* 0x6188 */ { false, 0x6188, 0x6188 }, /* 0x6189 */ { false, 0x6189, 0x6189 }, /* 0x618a */ { false, 0x618a, 0x618a }, /* 0x618b */ { false, 0x618b, 0x618b }, /* 0x618c */ { false, 0x618c, 0x618c }, /* 0x618d */ { false, 0x618d, 0x618d }, /* 0x618e */ { false, 0x618e, 0x618e }, /* 0x618f */ { false, 0x618f, 0x618f }, /* 0x6190 */ { false, 0x6190, 0x6190 }, /* 0x6191 */ { false, 0x6191, 0x6191 }, /* 0x6192 */ { false, 0x6192, 0x6192 }, /* 0x6193 */ { false, 0x6193, 0x6193 }, /* 0x6194 */ { false, 0x6194, 0x6194 }, /* 0x6195 */ { false, 0x6195, 0x6195 }, /* 0x6196 */ { false, 0x6196, 0x6196 }, /* 0x6197 */ { false, 0x6197, 0x6197 }, /* 0x6198 */ { false, 0x6198, 0x6198 }, /* 0x6199 */ { false, 0x6199, 0x6199 }, /* 0x619a */ { false, 0x619a, 0x619a }, /* 0x619b */ { false, 0x619b, 0x619b }, /* 0x619c */ { false, 0x619c, 0x619c }, /* 0x619d */ { false, 0x619d, 0x619d }, /* 0x619e */ { false, 0x619e, 0x619e }, /* 0x619f */ { false, 0x619f, 0x619f }, /* 0x61a0 */ { false, 0x61a0, 0x61a0 }, /* 0x61a1 */ { false, 0x61a1, 0x61a1 }, /* 0x61a2 */ { false, 0x61a2, 0x61a2 }, /* 0x61a3 */ { false, 0x61a3, 0x61a3 }, /* 0x61a4 */ { false, 0x61a4, 0x61a4 }, /* 0x61a5 */ { false, 0x61a5, 0x61a5 }, /* 0x61a6 */ { false, 0x61a6, 0x61a6 }, /* 0x61a7 */ { false, 0x61a7, 0x61a7 }, /* 0x61a8 */ { false, 0x61a8, 0x61a8 }, /* 0x61a9 */ { false, 0x61a9, 0x61a9 }, /* 0x61aa */ { false, 0x61aa, 0x61aa }, /* 0x61ab */ { false, 0x61ab, 0x61ab }, /* 0x61ac */ { false, 0x61ac, 0x61ac }, /* 0x61ad */ { false, 0x61ad, 0x61ad }, /* 0x61ae */ { false, 0x61ae, 0x61ae }, /* 0x61af */ { false, 0x61af, 0x61af }, /* 0x61b0 */ { false, 0x61b0, 0x61b0 }, /* 0x61b1 */ { false, 0x61b1, 0x61b1 }, /* 0x61b2 */ { false, 0x61b2, 0x61b2 }, /* 0x61b3 */ { false, 0x61b3, 0x61b3 }, /* 0x61b4 */ { false, 0x61b4, 0x61b4 }, /* 0x61b5 */ { false, 0x61b5, 0x61b5 }, /* 0x61b6 */ { false, 0x61b6, 0x61b6 }, /* 0x61b7 */ { false, 0x61b7, 0x61b7 }, /* 0x61b8 */ { false, 0x61b8, 0x61b8 }, /* 0x61b9 */ { false, 0x61b9, 0x61b9 }, /* 0x61ba */ { false, 0x61ba, 0x61ba }, /* 0x61bb */ { false, 0x61bb, 0x61bb }, /* 0x61bc */ { false, 0x61bc, 0x61bc }, /* 0x61bd */ { false, 0x61bd, 0x61bd }, /* 0x61be */ { false, 0x61be, 0x61be }, /* 0x61bf */ { false, 0x61bf, 0x61bf }, /* 0x61c0 */ { false, 0x61c0, 0x61c0 }, /* 0x61c1 */ { false, 0x61c1, 0x61c1 }, /* 0x61c2 */ { false, 0x61c2, 0x61c2 }, /* 0x61c3 */ { false, 0x61c3, 0x61c3 }, /* 0x61c4 */ { false, 0x61c4, 0x61c4 }, /* 0x61c5 */ { false, 0x61c5, 0x61c5 }, /* 0x61c6 */ { false, 0x61c6, 0x61c6 }, /* 0x61c7 */ { false, 0x61c7, 0x61c7 }, /* 0x61c8 */ { false, 0x61c8, 0x61c8 }, /* 0x61c9 */ { false, 0x61c9, 0x61c9 }, /* 0x61ca */ { false, 0x61ca, 0x61ca }, /* 0x61cb */ { false, 0x61cb, 0x61cb }, /* 0x61cc */ { false, 0x61cc, 0x61cc }, /* 0x61cd */ { false, 0x61cd, 0x61cd }, /* 0x61ce */ { false, 0x61ce, 0x61ce }, /* 0x61cf */ { false, 0x61cf, 0x61cf }, /* 0x61d0 */ { false, 0x61d0, 0x61d0 }, /* 0x61d1 */ { false, 0x61d1, 0x61d1 }, /* 0x61d2 */ { false, 0x61d2, 0x61d2 }, /* 0x61d3 */ { false, 0x61d3, 0x61d3 }, /* 0x61d4 */ { false, 0x61d4, 0x61d4 }, /* 0x61d5 */ { false, 0x61d5, 0x61d5 }, /* 0x61d6 */ { false, 0x61d6, 0x61d6 }, /* 0x61d7 */ { false, 0x61d7, 0x61d7 }, /* 0x61d8 */ { false, 0x61d8, 0x61d8 }, /* 0x61d9 */ { false, 0x61d9, 0x61d9 }, /* 0x61da */ { false, 0x61da, 0x61da }, /* 0x61db */ { false, 0x61db, 0x61db }, /* 0x61dc */ { false, 0x61dc, 0x61dc }, /* 0x61dd */ { false, 0x61dd, 0x61dd }, /* 0x61de */ { false, 0x61de, 0x61de }, /* 0x61df */ { false, 0x61df, 0x61df }, /* 0x61e0 */ { false, 0x61e0, 0x61e0 }, /* 0x61e1 */ { false, 0x61e1, 0x61e1 }, /* 0x61e2 */ { false, 0x61e2, 0x61e2 }, /* 0x61e3 */ { false, 0x61e3, 0x61e3 }, /* 0x61e4 */ { false, 0x61e4, 0x61e4 }, /* 0x61e5 */ { false, 0x61e5, 0x61e5 }, /* 0x61e6 */ { false, 0x61e6, 0x61e6 }, /* 0x61e7 */ { false, 0x61e7, 0x61e7 }, /* 0x61e8 */ { false, 0x61e8, 0x61e8 }, /* 0x61e9 */ { false, 0x61e9, 0x61e9 }, /* 0x61ea */ { false, 0x61ea, 0x61ea }, /* 0x61eb */ { false, 0x61eb, 0x61eb }, /* 0x61ec */ { false, 0x61ec, 0x61ec }, /* 0x61ed */ { false, 0x61ed, 0x61ed }, /* 0x61ee */ { false, 0x61ee, 0x61ee }, /* 0x61ef */ { false, 0x61ef, 0x61ef }, /* 0x61f0 */ { false, 0x61f0, 0x61f0 }, /* 0x61f1 */ { false, 0x61f1, 0x61f1 }, /* 0x61f2 */ { false, 0x61f2, 0x61f2 }, /* 0x61f3 */ { false, 0x61f3, 0x61f3 }, /* 0x61f4 */ { false, 0x61f4, 0x61f4 }, /* 0x61f5 */ { false, 0x61f5, 0x61f5 }, /* 0x61f6 */ { false, 0x61f6, 0x61f6 }, /* 0x61f7 */ { false, 0x61f7, 0x61f7 }, /* 0x61f8 */ { false, 0x61f8, 0x61f8 }, /* 0x61f9 */ { false, 0x61f9, 0x61f9 }, /* 0x61fa */ { false, 0x61fa, 0x61fa }, /* 0x61fb */ { false, 0x61fb, 0x61fb }, /* 0x61fc */ { false, 0x61fc, 0x61fc }, /* 0x61fd */ { false, 0x61fd, 0x61fd }, /* 0x61fe */ { false, 0x61fe, 0x61fe }, /* 0x61ff */ { false, 0x61ff, 0x61ff }, /* 0x6200 */ { false, 0x6200, 0x6200 }, /* 0x6201 */ { false, 0x6201, 0x6201 }, /* 0x6202 */ { false, 0x6202, 0x6202 }, /* 0x6203 */ { false, 0x6203, 0x6203 }, /* 0x6204 */ { false, 0x6204, 0x6204 }, /* 0x6205 */ { false, 0x6205, 0x6205 }, /* 0x6206 */ { false, 0x6206, 0x6206 }, /* 0x6207 */ { false, 0x6207, 0x6207 }, /* 0x6208 */ { false, 0x6208, 0x6208 }, /* 0x6209 */ { false, 0x6209, 0x6209 }, /* 0x620a */ { false, 0x620a, 0x620a }, /* 0x620b */ { false, 0x620b, 0x620b }, /* 0x620c */ { false, 0x620c, 0x620c }, /* 0x620d */ { false, 0x620d, 0x620d }, /* 0x620e */ { false, 0x620e, 0x620e }, /* 0x620f */ { false, 0x620f, 0x620f }, /* 0x6210 */ { false, 0x6210, 0x6210 }, /* 0x6211 */ { false, 0x6211, 0x6211 }, /* 0x6212 */ { false, 0x6212, 0x6212 }, /* 0x6213 */ { false, 0x6213, 0x6213 }, /* 0x6214 */ { false, 0x6214, 0x6214 }, /* 0x6215 */ { false, 0x6215, 0x6215 }, /* 0x6216 */ { false, 0x6216, 0x6216 }, /* 0x6217 */ { false, 0x6217, 0x6217 }, /* 0x6218 */ { false, 0x6218, 0x6218 }, /* 0x6219 */ { false, 0x6219, 0x6219 }, /* 0x621a */ { false, 0x621a, 0x621a }, /* 0x621b */ { false, 0x621b, 0x621b }, /* 0x621c */ { false, 0x621c, 0x621c }, /* 0x621d */ { false, 0x621d, 0x621d }, /* 0x621e */ { false, 0x621e, 0x621e }, /* 0x621f */ { false, 0x621f, 0x621f }, /* 0x6220 */ { false, 0x6220, 0x6220 }, /* 0x6221 */ { false, 0x6221, 0x6221 }, /* 0x6222 */ { false, 0x6222, 0x6222 }, /* 0x6223 */ { false, 0x6223, 0x6223 }, /* 0x6224 */ { false, 0x6224, 0x6224 }, /* 0x6225 */ { false, 0x6225, 0x6225 }, /* 0x6226 */ { false, 0x6226, 0x6226 }, /* 0x6227 */ { false, 0x6227, 0x6227 }, /* 0x6228 */ { false, 0x6228, 0x6228 }, /* 0x6229 */ { false, 0x6229, 0x6229 }, /* 0x622a */ { false, 0x622a, 0x622a }, /* 0x622b */ { false, 0x622b, 0x622b }, /* 0x622c */ { false, 0x622c, 0x622c }, /* 0x622d */ { false, 0x622d, 0x622d }, /* 0x622e */ { false, 0x622e, 0x622e }, /* 0x622f */ { false, 0x622f, 0x622f }, /* 0x6230 */ { false, 0x6230, 0x6230 }, /* 0x6231 */ { false, 0x6231, 0x6231 }, /* 0x6232 */ { false, 0x6232, 0x6232 }, /* 0x6233 */ { false, 0x6233, 0x6233 }, /* 0x6234 */ { false, 0x6234, 0x6234 }, /* 0x6235 */ { false, 0x6235, 0x6235 }, /* 0x6236 */ { false, 0x6236, 0x6236 }, /* 0x6237 */ { false, 0x6237, 0x6237 }, /* 0x6238 */ { false, 0x6238, 0x6238 }, /* 0x6239 */ { false, 0x6239, 0x6239 }, /* 0x623a */ { false, 0x623a, 0x623a }, /* 0x623b */ { false, 0x623b, 0x623b }, /* 0x623c */ { false, 0x623c, 0x623c }, /* 0x623d */ { false, 0x623d, 0x623d }, /* 0x623e */ { false, 0x623e, 0x623e }, /* 0x623f */ { false, 0x623f, 0x623f }, /* 0x6240 */ { false, 0x6240, 0x6240 }, /* 0x6241 */ { false, 0x6241, 0x6241 }, /* 0x6242 */ { false, 0x6242, 0x6242 }, /* 0x6243 */ { false, 0x6243, 0x6243 }, /* 0x6244 */ { false, 0x6244, 0x6244 }, /* 0x6245 */ { false, 0x6245, 0x6245 }, /* 0x6246 */ { false, 0x6246, 0x6246 }, /* 0x6247 */ { false, 0x6247, 0x6247 }, /* 0x6248 */ { false, 0x6248, 0x6248 }, /* 0x6249 */ { false, 0x6249, 0x6249 }, /* 0x624a */ { false, 0x624a, 0x624a }, /* 0x624b */ { false, 0x624b, 0x624b }, /* 0x624c */ { false, 0x624c, 0x624c }, /* 0x624d */ { false, 0x624d, 0x624d }, /* 0x624e */ { false, 0x624e, 0x624e }, /* 0x624f */ { false, 0x624f, 0x624f }, /* 0x6250 */ { false, 0x6250, 0x6250 }, /* 0x6251 */ { false, 0x6251, 0x6251 }, /* 0x6252 */ { false, 0x6252, 0x6252 }, /* 0x6253 */ { false, 0x6253, 0x6253 }, /* 0x6254 */ { false, 0x6254, 0x6254 }, /* 0x6255 */ { false, 0x6255, 0x6255 }, /* 0x6256 */ { false, 0x6256, 0x6256 }, /* 0x6257 */ { false, 0x6257, 0x6257 }, /* 0x6258 */ { false, 0x6258, 0x6258 }, /* 0x6259 */ { false, 0x6259, 0x6259 }, /* 0x625a */ { false, 0x625a, 0x625a }, /* 0x625b */ { false, 0x625b, 0x625b }, /* 0x625c */ { false, 0x625c, 0x625c }, /* 0x625d */ { false, 0x625d, 0x625d }, /* 0x625e */ { false, 0x625e, 0x625e }, /* 0x625f */ { false, 0x625f, 0x625f }, /* 0x6260 */ { false, 0x6260, 0x6260 }, /* 0x6261 */ { false, 0x6261, 0x6261 }, /* 0x6262 */ { false, 0x6262, 0x6262 }, /* 0x6263 */ { false, 0x6263, 0x6263 }, /* 0x6264 */ { false, 0x6264, 0x6264 }, /* 0x6265 */ { false, 0x6265, 0x6265 }, /* 0x6266 */ { false, 0x6266, 0x6266 }, /* 0x6267 */ { false, 0x6267, 0x6267 }, /* 0x6268 */ { false, 0x6268, 0x6268 }, /* 0x6269 */ { false, 0x6269, 0x6269 }, /* 0x626a */ { false, 0x626a, 0x626a }, /* 0x626b */ { false, 0x626b, 0x626b }, /* 0x626c */ { false, 0x626c, 0x626c }, /* 0x626d */ { false, 0x626d, 0x626d }, /* 0x626e */ { false, 0x626e, 0x626e }, /* 0x626f */ { false, 0x626f, 0x626f }, /* 0x6270 */ { false, 0x6270, 0x6270 }, /* 0x6271 */ { false, 0x6271, 0x6271 }, /* 0x6272 */ { false, 0x6272, 0x6272 }, /* 0x6273 */ { false, 0x6273, 0x6273 }, /* 0x6274 */ { false, 0x6274, 0x6274 }, /* 0x6275 */ { false, 0x6275, 0x6275 }, /* 0x6276 */ { false, 0x6276, 0x6276 }, /* 0x6277 */ { false, 0x6277, 0x6277 }, /* 0x6278 */ { false, 0x6278, 0x6278 }, /* 0x6279 */ { false, 0x6279, 0x6279 }, /* 0x627a */ { false, 0x627a, 0x627a }, /* 0x627b */ { false, 0x627b, 0x627b }, /* 0x627c */ { false, 0x627c, 0x627c }, /* 0x627d */ { false, 0x627d, 0x627d }, /* 0x627e */ { false, 0x627e, 0x627e }, /* 0x627f */ { false, 0x627f, 0x627f }, /* 0x6280 */ { false, 0x6280, 0x6280 }, /* 0x6281 */ { false, 0x6281, 0x6281 }, /* 0x6282 */ { false, 0x6282, 0x6282 }, /* 0x6283 */ { false, 0x6283, 0x6283 }, /* 0x6284 */ { false, 0x6284, 0x6284 }, /* 0x6285 */ { false, 0x6285, 0x6285 }, /* 0x6286 */ { false, 0x6286, 0x6286 }, /* 0x6287 */ { false, 0x6287, 0x6287 }, /* 0x6288 */ { false, 0x6288, 0x6288 }, /* 0x6289 */ { false, 0x6289, 0x6289 }, /* 0x628a */ { false, 0x628a, 0x628a }, /* 0x628b */ { false, 0x628b, 0x628b }, /* 0x628c */ { false, 0x628c, 0x628c }, /* 0x628d */ { false, 0x628d, 0x628d }, /* 0x628e */ { false, 0x628e, 0x628e }, /* 0x628f */ { false, 0x628f, 0x628f }, /* 0x6290 */ { false, 0x6290, 0x6290 }, /* 0x6291 */ { false, 0x6291, 0x6291 }, /* 0x6292 */ { false, 0x6292, 0x6292 }, /* 0x6293 */ { false, 0x6293, 0x6293 }, /* 0x6294 */ { false, 0x6294, 0x6294 }, /* 0x6295 */ { false, 0x6295, 0x6295 }, /* 0x6296 */ { false, 0x6296, 0x6296 }, /* 0x6297 */ { false, 0x6297, 0x6297 }, /* 0x6298 */ { false, 0x6298, 0x6298 }, /* 0x6299 */ { false, 0x6299, 0x6299 }, /* 0x629a */ { false, 0x629a, 0x629a }, /* 0x629b */ { false, 0x629b, 0x629b }, /* 0x629c */ { false, 0x629c, 0x629c }, /* 0x629d */ { false, 0x629d, 0x629d }, /* 0x629e */ { false, 0x629e, 0x629e }, /* 0x629f */ { false, 0x629f, 0x629f }, /* 0x62a0 */ { false, 0x62a0, 0x62a0 }, /* 0x62a1 */ { false, 0x62a1, 0x62a1 }, /* 0x62a2 */ { false, 0x62a2, 0x62a2 }, /* 0x62a3 */ { false, 0x62a3, 0x62a3 }, /* 0x62a4 */ { false, 0x62a4, 0x62a4 }, /* 0x62a5 */ { false, 0x62a5, 0x62a5 }, /* 0x62a6 */ { false, 0x62a6, 0x62a6 }, /* 0x62a7 */ { false, 0x62a7, 0x62a7 }, /* 0x62a8 */ { false, 0x62a8, 0x62a8 }, /* 0x62a9 */ { false, 0x62a9, 0x62a9 }, /* 0x62aa */ { false, 0x62aa, 0x62aa }, /* 0x62ab */ { false, 0x62ab, 0x62ab }, /* 0x62ac */ { false, 0x62ac, 0x62ac }, /* 0x62ad */ { false, 0x62ad, 0x62ad }, /* 0x62ae */ { false, 0x62ae, 0x62ae }, /* 0x62af */ { false, 0x62af, 0x62af }, /* 0x62b0 */ { false, 0x62b0, 0x62b0 }, /* 0x62b1 */ { false, 0x62b1, 0x62b1 }, /* 0x62b2 */ { false, 0x62b2, 0x62b2 }, /* 0x62b3 */ { false, 0x62b3, 0x62b3 }, /* 0x62b4 */ { false, 0x62b4, 0x62b4 }, /* 0x62b5 */ { false, 0x62b5, 0x62b5 }, /* 0x62b6 */ { false, 0x62b6, 0x62b6 }, /* 0x62b7 */ { false, 0x62b7, 0x62b7 }, /* 0x62b8 */ { false, 0x62b8, 0x62b8 }, /* 0x62b9 */ { false, 0x62b9, 0x62b9 }, /* 0x62ba */ { false, 0x62ba, 0x62ba }, /* 0x62bb */ { false, 0x62bb, 0x62bb }, /* 0x62bc */ { false, 0x62bc, 0x62bc }, /* 0x62bd */ { false, 0x62bd, 0x62bd }, /* 0x62be */ { false, 0x62be, 0x62be }, /* 0x62bf */ { false, 0x62bf, 0x62bf }, /* 0x62c0 */ { false, 0x62c0, 0x62c0 }, /* 0x62c1 */ { false, 0x62c1, 0x62c1 }, /* 0x62c2 */ { false, 0x62c2, 0x62c2 }, /* 0x62c3 */ { false, 0x62c3, 0x62c3 }, /* 0x62c4 */ { false, 0x62c4, 0x62c4 }, /* 0x62c5 */ { false, 0x62c5, 0x62c5 }, /* 0x62c6 */ { false, 0x62c6, 0x62c6 }, /* 0x62c7 */ { false, 0x62c7, 0x62c7 }, /* 0x62c8 */ { false, 0x62c8, 0x62c8 }, /* 0x62c9 */ { false, 0x62c9, 0x62c9 }, /* 0x62ca */ { false, 0x62ca, 0x62ca }, /* 0x62cb */ { false, 0x62cb, 0x62cb }, /* 0x62cc */ { false, 0x62cc, 0x62cc }, /* 0x62cd */ { false, 0x62cd, 0x62cd }, /* 0x62ce */ { false, 0x62ce, 0x62ce }, /* 0x62cf */ { false, 0x62cf, 0x62cf }, /* 0x62d0 */ { false, 0x62d0, 0x62d0 }, /* 0x62d1 */ { false, 0x62d1, 0x62d1 }, /* 0x62d2 */ { false, 0x62d2, 0x62d2 }, /* 0x62d3 */ { false, 0x62d3, 0x62d3 }, /* 0x62d4 */ { false, 0x62d4, 0x62d4 }, /* 0x62d5 */ { false, 0x62d5, 0x62d5 }, /* 0x62d6 */ { false, 0x62d6, 0x62d6 }, /* 0x62d7 */ { false, 0x62d7, 0x62d7 }, /* 0x62d8 */ { false, 0x62d8, 0x62d8 }, /* 0x62d9 */ { false, 0x62d9, 0x62d9 }, /* 0x62da */ { false, 0x62da, 0x62da }, /* 0x62db */ { false, 0x62db, 0x62db }, /* 0x62dc */ { false, 0x62dc, 0x62dc }, /* 0x62dd */ { false, 0x62dd, 0x62dd }, /* 0x62de */ { false, 0x62de, 0x62de }, /* 0x62df */ { false, 0x62df, 0x62df }, /* 0x62e0 */ { false, 0x62e0, 0x62e0 }, /* 0x62e1 */ { false, 0x62e1, 0x62e1 }, /* 0x62e2 */ { false, 0x62e2, 0x62e2 }, /* 0x62e3 */ { false, 0x62e3, 0x62e3 }, /* 0x62e4 */ { false, 0x62e4, 0x62e4 }, /* 0x62e5 */ { false, 0x62e5, 0x62e5 }, /* 0x62e6 */ { false, 0x62e6, 0x62e6 }, /* 0x62e7 */ { false, 0x62e7, 0x62e7 }, /* 0x62e8 */ { false, 0x62e8, 0x62e8 }, /* 0x62e9 */ { false, 0x62e9, 0x62e9 }, /* 0x62ea */ { false, 0x62ea, 0x62ea }, /* 0x62eb */ { false, 0x62eb, 0x62eb }, /* 0x62ec */ { false, 0x62ec, 0x62ec }, /* 0x62ed */ { false, 0x62ed, 0x62ed }, /* 0x62ee */ { false, 0x62ee, 0x62ee }, /* 0x62ef */ { false, 0x62ef, 0x62ef }, /* 0x62f0 */ { false, 0x62f0, 0x62f0 }, /* 0x62f1 */ { false, 0x62f1, 0x62f1 }, /* 0x62f2 */ { false, 0x62f2, 0x62f2 }, /* 0x62f3 */ { false, 0x62f3, 0x62f3 }, /* 0x62f4 */ { false, 0x62f4, 0x62f4 }, /* 0x62f5 */ { false, 0x62f5, 0x62f5 }, /* 0x62f6 */ { false, 0x62f6, 0x62f6 }, /* 0x62f7 */ { false, 0x62f7, 0x62f7 }, /* 0x62f8 */ { false, 0x62f8, 0x62f8 }, /* 0x62f9 */ { false, 0x62f9, 0x62f9 }, /* 0x62fa */ { false, 0x62fa, 0x62fa }, /* 0x62fb */ { false, 0x62fb, 0x62fb }, /* 0x62fc */ { false, 0x62fc, 0x62fc }, /* 0x62fd */ { false, 0x62fd, 0x62fd }, /* 0x62fe */ { false, 0x62fe, 0x62fe }, /* 0x62ff */ { false, 0x62ff, 0x62ff }, /* 0x6300 */ { false, 0x6300, 0x6300 }, /* 0x6301 */ { false, 0x6301, 0x6301 }, /* 0x6302 */ { false, 0x6302, 0x6302 }, /* 0x6303 */ { false, 0x6303, 0x6303 }, /* 0x6304 */ { false, 0x6304, 0x6304 }, /* 0x6305 */ { false, 0x6305, 0x6305 }, /* 0x6306 */ { false, 0x6306, 0x6306 }, /* 0x6307 */ { false, 0x6307, 0x6307 }, /* 0x6308 */ { false, 0x6308, 0x6308 }, /* 0x6309 */ { false, 0x6309, 0x6309 }, /* 0x630a */ { false, 0x630a, 0x630a }, /* 0x630b */ { false, 0x630b, 0x630b }, /* 0x630c */ { false, 0x630c, 0x630c }, /* 0x630d */ { false, 0x630d, 0x630d }, /* 0x630e */ { false, 0x630e, 0x630e }, /* 0x630f */ { false, 0x630f, 0x630f }, /* 0x6310 */ { false, 0x6310, 0x6310 }, /* 0x6311 */ { false, 0x6311, 0x6311 }, /* 0x6312 */ { false, 0x6312, 0x6312 }, /* 0x6313 */ { false, 0x6313, 0x6313 }, /* 0x6314 */ { false, 0x6314, 0x6314 }, /* 0x6315 */ { false, 0x6315, 0x6315 }, /* 0x6316 */ { false, 0x6316, 0x6316 }, /* 0x6317 */ { false, 0x6317, 0x6317 }, /* 0x6318 */ { false, 0x6318, 0x6318 }, /* 0x6319 */ { false, 0x6319, 0x6319 }, /* 0x631a */ { false, 0x631a, 0x631a }, /* 0x631b */ { false, 0x631b, 0x631b }, /* 0x631c */ { false, 0x631c, 0x631c }, /* 0x631d */ { false, 0x631d, 0x631d }, /* 0x631e */ { false, 0x631e, 0x631e }, /* 0x631f */ { false, 0x631f, 0x631f }, /* 0x6320 */ { false, 0x6320, 0x6320 }, /* 0x6321 */ { false, 0x6321, 0x6321 }, /* 0x6322 */ { false, 0x6322, 0x6322 }, /* 0x6323 */ { false, 0x6323, 0x6323 }, /* 0x6324 */ { false, 0x6324, 0x6324 }, /* 0x6325 */ { false, 0x6325, 0x6325 }, /* 0x6326 */ { false, 0x6326, 0x6326 }, /* 0x6327 */ { false, 0x6327, 0x6327 }, /* 0x6328 */ { false, 0x6328, 0x6328 }, /* 0x6329 */ { false, 0x6329, 0x6329 }, /* 0x632a */ { false, 0x632a, 0x632a }, /* 0x632b */ { false, 0x632b, 0x632b }, /* 0x632c */ { false, 0x632c, 0x632c }, /* 0x632d */ { false, 0x632d, 0x632d }, /* 0x632e */ { false, 0x632e, 0x632e }, /* 0x632f */ { false, 0x632f, 0x632f }, /* 0x6330 */ { false, 0x6330, 0x6330 }, /* 0x6331 */ { false, 0x6331, 0x6331 }, /* 0x6332 */ { false, 0x6332, 0x6332 }, /* 0x6333 */ { false, 0x6333, 0x6333 }, /* 0x6334 */ { false, 0x6334, 0x6334 }, /* 0x6335 */ { false, 0x6335, 0x6335 }, /* 0x6336 */ { false, 0x6336, 0x6336 }, /* 0x6337 */ { false, 0x6337, 0x6337 }, /* 0x6338 */ { false, 0x6338, 0x6338 }, /* 0x6339 */ { false, 0x6339, 0x6339 }, /* 0x633a */ { false, 0x633a, 0x633a }, /* 0x633b */ { false, 0x633b, 0x633b }, /* 0x633c */ { false, 0x633c, 0x633c }, /* 0x633d */ { false, 0x633d, 0x633d }, /* 0x633e */ { false, 0x633e, 0x633e }, /* 0x633f */ { false, 0x633f, 0x633f }, /* 0x6340 */ { false, 0x6340, 0x6340 }, /* 0x6341 */ { false, 0x6341, 0x6341 }, /* 0x6342 */ { false, 0x6342, 0x6342 }, /* 0x6343 */ { false, 0x6343, 0x6343 }, /* 0x6344 */ { false, 0x6344, 0x6344 }, /* 0x6345 */ { false, 0x6345, 0x6345 }, /* 0x6346 */ { false, 0x6346, 0x6346 }, /* 0x6347 */ { false, 0x6347, 0x6347 }, /* 0x6348 */ { false, 0x6348, 0x6348 }, /* 0x6349 */ { false, 0x6349, 0x6349 }, /* 0x634a */ { false, 0x634a, 0x634a }, /* 0x634b */ { false, 0x634b, 0x634b }, /* 0x634c */ { false, 0x634c, 0x634c }, /* 0x634d */ { false, 0x634d, 0x634d }, /* 0x634e */ { false, 0x634e, 0x634e }, /* 0x634f */ { false, 0x634f, 0x634f }, /* 0x6350 */ { false, 0x6350, 0x6350 }, /* 0x6351 */ { false, 0x6351, 0x6351 }, /* 0x6352 */ { false, 0x6352, 0x6352 }, /* 0x6353 */ { false, 0x6353, 0x6353 }, /* 0x6354 */ { false, 0x6354, 0x6354 }, /* 0x6355 */ { false, 0x6355, 0x6355 }, /* 0x6356 */ { false, 0x6356, 0x6356 }, /* 0x6357 */ { false, 0x6357, 0x6357 }, /* 0x6358 */ { false, 0x6358, 0x6358 }, /* 0x6359 */ { false, 0x6359, 0x6359 }, /* 0x635a */ { false, 0x635a, 0x635a }, /* 0x635b */ { false, 0x635b, 0x635b }, /* 0x635c */ { false, 0x635c, 0x635c }, /* 0x635d */ { false, 0x635d, 0x635d }, /* 0x635e */ { false, 0x635e, 0x635e }, /* 0x635f */ { false, 0x635f, 0x635f }, /* 0x6360 */ { false, 0x6360, 0x6360 }, /* 0x6361 */ { false, 0x6361, 0x6361 }, /* 0x6362 */ { false, 0x6362, 0x6362 }, /* 0x6363 */ { false, 0x6363, 0x6363 }, /* 0x6364 */ { false, 0x6364, 0x6364 }, /* 0x6365 */ { false, 0x6365, 0x6365 }, /* 0x6366 */ { false, 0x6366, 0x6366 }, /* 0x6367 */ { false, 0x6367, 0x6367 }, /* 0x6368 */ { false, 0x6368, 0x6368 }, /* 0x6369 */ { false, 0x6369, 0x6369 }, /* 0x636a */ { false, 0x636a, 0x636a }, /* 0x636b */ { false, 0x636b, 0x636b }, /* 0x636c */ { false, 0x636c, 0x636c }, /* 0x636d */ { false, 0x636d, 0x636d }, /* 0x636e */ { false, 0x636e, 0x636e }, /* 0x636f */ { false, 0x636f, 0x636f }, /* 0x6370 */ { false, 0x6370, 0x6370 }, /* 0x6371 */ { false, 0x6371, 0x6371 }, /* 0x6372 */ { false, 0x6372, 0x6372 }, /* 0x6373 */ { false, 0x6373, 0x6373 }, /* 0x6374 */ { false, 0x6374, 0x6374 }, /* 0x6375 */ { false, 0x6375, 0x6375 }, /* 0x6376 */ { false, 0x6376, 0x6376 }, /* 0x6377 */ { false, 0x6377, 0x6377 }, /* 0x6378 */ { false, 0x6378, 0x6378 }, /* 0x6379 */ { false, 0x6379, 0x6379 }, /* 0x637a */ { false, 0x637a, 0x637a }, /* 0x637b */ { false, 0x637b, 0x637b }, /* 0x637c */ { false, 0x637c, 0x637c }, /* 0x637d */ { false, 0x637d, 0x637d }, /* 0x637e */ { false, 0x637e, 0x637e }, /* 0x637f */ { false, 0x637f, 0x637f }, /* 0x6380 */ { false, 0x6380, 0x6380 }, /* 0x6381 */ { false, 0x6381, 0x6381 }, /* 0x6382 */ { false, 0x6382, 0x6382 }, /* 0x6383 */ { false, 0x6383, 0x6383 }, /* 0x6384 */ { false, 0x6384, 0x6384 }, /* 0x6385 */ { false, 0x6385, 0x6385 }, /* 0x6386 */ { false, 0x6386, 0x6386 }, /* 0x6387 */ { false, 0x6387, 0x6387 }, /* 0x6388 */ { false, 0x6388, 0x6388 }, /* 0x6389 */ { false, 0x6389, 0x6389 }, /* 0x638a */ { false, 0x638a, 0x638a }, /* 0x638b */ { false, 0x638b, 0x638b }, /* 0x638c */ { false, 0x638c, 0x638c }, /* 0x638d */ { false, 0x638d, 0x638d }, /* 0x638e */ { false, 0x638e, 0x638e }, /* 0x638f */ { false, 0x638f, 0x638f }, /* 0x6390 */ { false, 0x6390, 0x6390 }, /* 0x6391 */ { false, 0x6391, 0x6391 }, /* 0x6392 */ { false, 0x6392, 0x6392 }, /* 0x6393 */ { false, 0x6393, 0x6393 }, /* 0x6394 */ { false, 0x6394, 0x6394 }, /* 0x6395 */ { false, 0x6395, 0x6395 }, /* 0x6396 */ { false, 0x6396, 0x6396 }, /* 0x6397 */ { false, 0x6397, 0x6397 }, /* 0x6398 */ { false, 0x6398, 0x6398 }, /* 0x6399 */ { false, 0x6399, 0x6399 }, /* 0x639a */ { false, 0x639a, 0x639a }, /* 0x639b */ { false, 0x639b, 0x639b }, /* 0x639c */ { false, 0x639c, 0x639c }, /* 0x639d */ { false, 0x639d, 0x639d }, /* 0x639e */ { false, 0x639e, 0x639e }, /* 0x639f */ { false, 0x639f, 0x639f }, /* 0x63a0 */ { false, 0x63a0, 0x63a0 }, /* 0x63a1 */ { false, 0x63a1, 0x63a1 }, /* 0x63a2 */ { false, 0x63a2, 0x63a2 }, /* 0x63a3 */ { false, 0x63a3, 0x63a3 }, /* 0x63a4 */ { false, 0x63a4, 0x63a4 }, /* 0x63a5 */ { false, 0x63a5, 0x63a5 }, /* 0x63a6 */ { false, 0x63a6, 0x63a6 }, /* 0x63a7 */ { false, 0x63a7, 0x63a7 }, /* 0x63a8 */ { false, 0x63a8, 0x63a8 }, /* 0x63a9 */ { false, 0x63a9, 0x63a9 }, /* 0x63aa */ { false, 0x63aa, 0x63aa }, /* 0x63ab */ { false, 0x63ab, 0x63ab }, /* 0x63ac */ { false, 0x63ac, 0x63ac }, /* 0x63ad */ { false, 0x63ad, 0x63ad }, /* 0x63ae */ { false, 0x63ae, 0x63ae }, /* 0x63af */ { false, 0x63af, 0x63af }, /* 0x63b0 */ { false, 0x63b0, 0x63b0 }, /* 0x63b1 */ { false, 0x63b1, 0x63b1 }, /* 0x63b2 */ { false, 0x63b2, 0x63b2 }, /* 0x63b3 */ { false, 0x63b3, 0x63b3 }, /* 0x63b4 */ { false, 0x63b4, 0x63b4 }, /* 0x63b5 */ { false, 0x63b5, 0x63b5 }, /* 0x63b6 */ { false, 0x63b6, 0x63b6 }, /* 0x63b7 */ { false, 0x63b7, 0x63b7 }, /* 0x63b8 */ { false, 0x63b8, 0x63b8 }, /* 0x63b9 */ { false, 0x63b9, 0x63b9 }, /* 0x63ba */ { false, 0x63ba, 0x63ba }, /* 0x63bb */ { false, 0x63bb, 0x63bb }, /* 0x63bc */ { false, 0x63bc, 0x63bc }, /* 0x63bd */ { false, 0x63bd, 0x63bd }, /* 0x63be */ { false, 0x63be, 0x63be }, /* 0x63bf */ { false, 0x63bf, 0x63bf }, /* 0x63c0 */ { false, 0x63c0, 0x63c0 }, /* 0x63c1 */ { false, 0x63c1, 0x63c1 }, /* 0x63c2 */ { false, 0x63c2, 0x63c2 }, /* 0x63c3 */ { false, 0x63c3, 0x63c3 }, /* 0x63c4 */ { false, 0x63c4, 0x63c4 }, /* 0x63c5 */ { false, 0x63c5, 0x63c5 }, /* 0x63c6 */ { false, 0x63c6, 0x63c6 }, /* 0x63c7 */ { false, 0x63c7, 0x63c7 }, /* 0x63c8 */ { false, 0x63c8, 0x63c8 }, /* 0x63c9 */ { false, 0x63c9, 0x63c9 }, /* 0x63ca */ { false, 0x63ca, 0x63ca }, /* 0x63cb */ { false, 0x63cb, 0x63cb }, /* 0x63cc */ { false, 0x63cc, 0x63cc }, /* 0x63cd */ { false, 0x63cd, 0x63cd }, /* 0x63ce */ { false, 0x63ce, 0x63ce }, /* 0x63cf */ { false, 0x63cf, 0x63cf }, /* 0x63d0 */ { false, 0x63d0, 0x63d0 }, /* 0x63d1 */ { false, 0x63d1, 0x63d1 }, /* 0x63d2 */ { false, 0x63d2, 0x63d2 }, /* 0x63d3 */ { false, 0x63d3, 0x63d3 }, /* 0x63d4 */ { false, 0x63d4, 0x63d4 }, /* 0x63d5 */ { false, 0x63d5, 0x63d5 }, /* 0x63d6 */ { false, 0x63d6, 0x63d6 }, /* 0x63d7 */ { false, 0x63d7, 0x63d7 }, /* 0x63d8 */ { false, 0x63d8, 0x63d8 }, /* 0x63d9 */ { false, 0x63d9, 0x63d9 }, /* 0x63da */ { false, 0x63da, 0x63da }, /* 0x63db */ { false, 0x63db, 0x63db }, /* 0x63dc */ { false, 0x63dc, 0x63dc }, /* 0x63dd */ { false, 0x63dd, 0x63dd }, /* 0x63de */ { false, 0x63de, 0x63de }, /* 0x63df */ { false, 0x63df, 0x63df }, /* 0x63e0 */ { false, 0x63e0, 0x63e0 }, /* 0x63e1 */ { false, 0x63e1, 0x63e1 }, /* 0x63e2 */ { false, 0x63e2, 0x63e2 }, /* 0x63e3 */ { false, 0x63e3, 0x63e3 }, /* 0x63e4 */ { false, 0x63e4, 0x63e4 }, /* 0x63e5 */ { false, 0x63e5, 0x63e5 }, /* 0x63e6 */ { false, 0x63e6, 0x63e6 }, /* 0x63e7 */ { false, 0x63e7, 0x63e7 }, /* 0x63e8 */ { false, 0x63e8, 0x63e8 }, /* 0x63e9 */ { false, 0x63e9, 0x63e9 }, /* 0x63ea */ { false, 0x63ea, 0x63ea }, /* 0x63eb */ { false, 0x63eb, 0x63eb }, /* 0x63ec */ { false, 0x63ec, 0x63ec }, /* 0x63ed */ { false, 0x63ed, 0x63ed }, /* 0x63ee */ { false, 0x63ee, 0x63ee }, /* 0x63ef */ { false, 0x63ef, 0x63ef }, /* 0x63f0 */ { false, 0x63f0, 0x63f0 }, /* 0x63f1 */ { false, 0x63f1, 0x63f1 }, /* 0x63f2 */ { false, 0x63f2, 0x63f2 }, /* 0x63f3 */ { false, 0x63f3, 0x63f3 }, /* 0x63f4 */ { false, 0x63f4, 0x63f4 }, /* 0x63f5 */ { false, 0x63f5, 0x63f5 }, /* 0x63f6 */ { false, 0x63f6, 0x63f6 }, /* 0x63f7 */ { false, 0x63f7, 0x63f7 }, /* 0x63f8 */ { false, 0x63f8, 0x63f8 }, /* 0x63f9 */ { false, 0x63f9, 0x63f9 }, /* 0x63fa */ { false, 0x63fa, 0x63fa }, /* 0x63fb */ { false, 0x63fb, 0x63fb }, /* 0x63fc */ { false, 0x63fc, 0x63fc }, /* 0x63fd */ { false, 0x63fd, 0x63fd }, /* 0x63fe */ { false, 0x63fe, 0x63fe }, /* 0x63ff */ { false, 0x63ff, 0x63ff }, /* 0x6400 */ { false, 0x6400, 0x6400 }, /* 0x6401 */ { false, 0x6401, 0x6401 }, /* 0x6402 */ { false, 0x6402, 0x6402 }, /* 0x6403 */ { false, 0x6403, 0x6403 }, /* 0x6404 */ { false, 0x6404, 0x6404 }, /* 0x6405 */ { false, 0x6405, 0x6405 }, /* 0x6406 */ { false, 0x6406, 0x6406 }, /* 0x6407 */ { false, 0x6407, 0x6407 }, /* 0x6408 */ { false, 0x6408, 0x6408 }, /* 0x6409 */ { false, 0x6409, 0x6409 }, /* 0x640a */ { false, 0x640a, 0x640a }, /* 0x640b */ { false, 0x640b, 0x640b }, /* 0x640c */ { false, 0x640c, 0x640c }, /* 0x640d */ { false, 0x640d, 0x640d }, /* 0x640e */ { false, 0x640e, 0x640e }, /* 0x640f */ { false, 0x640f, 0x640f }, /* 0x6410 */ { false, 0x6410, 0x6410 }, /* 0x6411 */ { false, 0x6411, 0x6411 }, /* 0x6412 */ { false, 0x6412, 0x6412 }, /* 0x6413 */ { false, 0x6413, 0x6413 }, /* 0x6414 */ { false, 0x6414, 0x6414 }, /* 0x6415 */ { false, 0x6415, 0x6415 }, /* 0x6416 */ { false, 0x6416, 0x6416 }, /* 0x6417 */ { false, 0x6417, 0x6417 }, /* 0x6418 */ { false, 0x6418, 0x6418 }, /* 0x6419 */ { false, 0x6419, 0x6419 }, /* 0x641a */ { false, 0x641a, 0x641a }, /* 0x641b */ { false, 0x641b, 0x641b }, /* 0x641c */ { false, 0x641c, 0x641c }, /* 0x641d */ { false, 0x641d, 0x641d }, /* 0x641e */ { false, 0x641e, 0x641e }, /* 0x641f */ { false, 0x641f, 0x641f }, /* 0x6420 */ { false, 0x6420, 0x6420 }, /* 0x6421 */ { false, 0x6421, 0x6421 }, /* 0x6422 */ { false, 0x6422, 0x6422 }, /* 0x6423 */ { false, 0x6423, 0x6423 }, /* 0x6424 */ { false, 0x6424, 0x6424 }, /* 0x6425 */ { false, 0x6425, 0x6425 }, /* 0x6426 */ { false, 0x6426, 0x6426 }, /* 0x6427 */ { false, 0x6427, 0x6427 }, /* 0x6428 */ { false, 0x6428, 0x6428 }, /* 0x6429 */ { false, 0x6429, 0x6429 }, /* 0x642a */ { false, 0x642a, 0x642a }, /* 0x642b */ { false, 0x642b, 0x642b }, /* 0x642c */ { false, 0x642c, 0x642c }, /* 0x642d */ { false, 0x642d, 0x642d }, /* 0x642e */ { false, 0x642e, 0x642e }, /* 0x642f */ { false, 0x642f, 0x642f }, /* 0x6430 */ { false, 0x6430, 0x6430 }, /* 0x6431 */ { false, 0x6431, 0x6431 }, /* 0x6432 */ { false, 0x6432, 0x6432 }, /* 0x6433 */ { false, 0x6433, 0x6433 }, /* 0x6434 */ { false, 0x6434, 0x6434 }, /* 0x6435 */ { false, 0x6435, 0x6435 }, /* 0x6436 */ { false, 0x6436, 0x6436 }, /* 0x6437 */ { false, 0x6437, 0x6437 }, /* 0x6438 */ { false, 0x6438, 0x6438 }, /* 0x6439 */ { false, 0x6439, 0x6439 }, /* 0x643a */ { false, 0x643a, 0x643a }, /* 0x643b */ { false, 0x643b, 0x643b }, /* 0x643c */ { false, 0x643c, 0x643c }, /* 0x643d */ { false, 0x643d, 0x643d }, /* 0x643e */ { false, 0x643e, 0x643e }, /* 0x643f */ { false, 0x643f, 0x643f }, /* 0x6440 */ { false, 0x6440, 0x6440 }, /* 0x6441 */ { false, 0x6441, 0x6441 }, /* 0x6442 */ { false, 0x6442, 0x6442 }, /* 0x6443 */ { false, 0x6443, 0x6443 }, /* 0x6444 */ { false, 0x6444, 0x6444 }, /* 0x6445 */ { false, 0x6445, 0x6445 }, /* 0x6446 */ { false, 0x6446, 0x6446 }, /* 0x6447 */ { false, 0x6447, 0x6447 }, /* 0x6448 */ { false, 0x6448, 0x6448 }, /* 0x6449 */ { false, 0x6449, 0x6449 }, /* 0x644a */ { false, 0x644a, 0x644a }, /* 0x644b */ { false, 0x644b, 0x644b }, /* 0x644c */ { false, 0x644c, 0x644c }, /* 0x644d */ { false, 0x644d, 0x644d }, /* 0x644e */ { false, 0x644e, 0x644e }, /* 0x644f */ { false, 0x644f, 0x644f }, /* 0x6450 */ { false, 0x6450, 0x6450 }, /* 0x6451 */ { false, 0x6451, 0x6451 }, /* 0x6452 */ { false, 0x6452, 0x6452 }, /* 0x6453 */ { false, 0x6453, 0x6453 }, /* 0x6454 */ { false, 0x6454, 0x6454 }, /* 0x6455 */ { false, 0x6455, 0x6455 }, /* 0x6456 */ { false, 0x6456, 0x6456 }, /* 0x6457 */ { false, 0x6457, 0x6457 }, /* 0x6458 */ { false, 0x6458, 0x6458 }, /* 0x6459 */ { false, 0x6459, 0x6459 }, /* 0x645a */ { false, 0x645a, 0x645a }, /* 0x645b */ { false, 0x645b, 0x645b }, /* 0x645c */ { false, 0x645c, 0x645c }, /* 0x645d */ { false, 0x645d, 0x645d }, /* 0x645e */ { false, 0x645e, 0x645e }, /* 0x645f */ { false, 0x645f, 0x645f }, /* 0x6460 */ { false, 0x6460, 0x6460 }, /* 0x6461 */ { false, 0x6461, 0x6461 }, /* 0x6462 */ { false, 0x6462, 0x6462 }, /* 0x6463 */ { false, 0x6463, 0x6463 }, /* 0x6464 */ { false, 0x6464, 0x6464 }, /* 0x6465 */ { false, 0x6465, 0x6465 }, /* 0x6466 */ { false, 0x6466, 0x6466 }, /* 0x6467 */ { false, 0x6467, 0x6467 }, /* 0x6468 */ { false, 0x6468, 0x6468 }, /* 0x6469 */ { false, 0x6469, 0x6469 }, /* 0x646a */ { false, 0x646a, 0x646a }, /* 0x646b */ { false, 0x646b, 0x646b }, /* 0x646c */ { false, 0x646c, 0x646c }, /* 0x646d */ { false, 0x646d, 0x646d }, /* 0x646e */ { false, 0x646e, 0x646e }, /* 0x646f */ { false, 0x646f, 0x646f }, /* 0x6470 */ { false, 0x6470, 0x6470 }, /* 0x6471 */ { false, 0x6471, 0x6471 }, /* 0x6472 */ { false, 0x6472, 0x6472 }, /* 0x6473 */ { false, 0x6473, 0x6473 }, /* 0x6474 */ { false, 0x6474, 0x6474 }, /* 0x6475 */ { false, 0x6475, 0x6475 }, /* 0x6476 */ { false, 0x6476, 0x6476 }, /* 0x6477 */ { false, 0x6477, 0x6477 }, /* 0x6478 */ { false, 0x6478, 0x6478 }, /* 0x6479 */ { false, 0x6479, 0x6479 }, /* 0x647a */ { false, 0x647a, 0x647a }, /* 0x647b */ { false, 0x647b, 0x647b }, /* 0x647c */ { false, 0x647c, 0x647c }, /* 0x647d */ { false, 0x647d, 0x647d }, /* 0x647e */ { false, 0x647e, 0x647e }, /* 0x647f */ { false, 0x647f, 0x647f }, /* 0x6480 */ { false, 0x6480, 0x6480 }, /* 0x6481 */ { false, 0x6481, 0x6481 }, /* 0x6482 */ { false, 0x6482, 0x6482 }, /* 0x6483 */ { false, 0x6483, 0x6483 }, /* 0x6484 */ { false, 0x6484, 0x6484 }, /* 0x6485 */ { false, 0x6485, 0x6485 }, /* 0x6486 */ { false, 0x6486, 0x6486 }, /* 0x6487 */ { false, 0x6487, 0x6487 }, /* 0x6488 */ { false, 0x6488, 0x6488 }, /* 0x6489 */ { false, 0x6489, 0x6489 }, /* 0x648a */ { false, 0x648a, 0x648a }, /* 0x648b */ { false, 0x648b, 0x648b }, /* 0x648c */ { false, 0x648c, 0x648c }, /* 0x648d */ { false, 0x648d, 0x648d }, /* 0x648e */ { false, 0x648e, 0x648e }, /* 0x648f */ { false, 0x648f, 0x648f }, /* 0x6490 */ { false, 0x6490, 0x6490 }, /* 0x6491 */ { false, 0x6491, 0x6491 }, /* 0x6492 */ { false, 0x6492, 0x6492 }, /* 0x6493 */ { false, 0x6493, 0x6493 }, /* 0x6494 */ { false, 0x6494, 0x6494 }, /* 0x6495 */ { false, 0x6495, 0x6495 }, /* 0x6496 */ { false, 0x6496, 0x6496 }, /* 0x6497 */ { false, 0x6497, 0x6497 }, /* 0x6498 */ { false, 0x6498, 0x6498 }, /* 0x6499 */ { false, 0x6499, 0x6499 }, /* 0x649a */ { false, 0x649a, 0x649a }, /* 0x649b */ { false, 0x649b, 0x649b }, /* 0x649c */ { false, 0x649c, 0x649c }, /* 0x649d */ { false, 0x649d, 0x649d }, /* 0x649e */ { false, 0x649e, 0x649e }, /* 0x649f */ { false, 0x649f, 0x649f }, /* 0x64a0 */ { false, 0x64a0, 0x64a0 }, /* 0x64a1 */ { false, 0x64a1, 0x64a1 }, /* 0x64a2 */ { false, 0x64a2, 0x64a2 }, /* 0x64a3 */ { false, 0x64a3, 0x64a3 }, /* 0x64a4 */ { false, 0x64a4, 0x64a4 }, /* 0x64a5 */ { false, 0x64a5, 0x64a5 }, /* 0x64a6 */ { false, 0x64a6, 0x64a6 }, /* 0x64a7 */ { false, 0x64a7, 0x64a7 }, /* 0x64a8 */ { false, 0x64a8, 0x64a8 }, /* 0x64a9 */ { false, 0x64a9, 0x64a9 }, /* 0x64aa */ { false, 0x64aa, 0x64aa }, /* 0x64ab */ { false, 0x64ab, 0x64ab }, /* 0x64ac */ { false, 0x64ac, 0x64ac }, /* 0x64ad */ { false, 0x64ad, 0x64ad }, /* 0x64ae */ { false, 0x64ae, 0x64ae }, /* 0x64af */ { false, 0x64af, 0x64af }, /* 0x64b0 */ { false, 0x64b0, 0x64b0 }, /* 0x64b1 */ { false, 0x64b1, 0x64b1 }, /* 0x64b2 */ { false, 0x64b2, 0x64b2 }, /* 0x64b3 */ { false, 0x64b3, 0x64b3 }, /* 0x64b4 */ { false, 0x64b4, 0x64b4 }, /* 0x64b5 */ { false, 0x64b5, 0x64b5 }, /* 0x64b6 */ { false, 0x64b6, 0x64b6 }, /* 0x64b7 */ { false, 0x64b7, 0x64b7 }, /* 0x64b8 */ { false, 0x64b8, 0x64b8 }, /* 0x64b9 */ { false, 0x64b9, 0x64b9 }, /* 0x64ba */ { false, 0x64ba, 0x64ba }, /* 0x64bb */ { false, 0x64bb, 0x64bb }, /* 0x64bc */ { false, 0x64bc, 0x64bc }, /* 0x64bd */ { false, 0x64bd, 0x64bd }, /* 0x64be */ { false, 0x64be, 0x64be }, /* 0x64bf */ { false, 0x64bf, 0x64bf }, /* 0x64c0 */ { false, 0x64c0, 0x64c0 }, /* 0x64c1 */ { false, 0x64c1, 0x64c1 }, /* 0x64c2 */ { false, 0x64c2, 0x64c2 }, /* 0x64c3 */ { false, 0x64c3, 0x64c3 }, /* 0x64c4 */ { false, 0x64c4, 0x64c4 }, /* 0x64c5 */ { false, 0x64c5, 0x64c5 }, /* 0x64c6 */ { false, 0x64c6, 0x64c6 }, /* 0x64c7 */ { false, 0x64c7, 0x64c7 }, /* 0x64c8 */ { false, 0x64c8, 0x64c8 }, /* 0x64c9 */ { false, 0x64c9, 0x64c9 }, /* 0x64ca */ { false, 0x64ca, 0x64ca }, /* 0x64cb */ { false, 0x64cb, 0x64cb }, /* 0x64cc */ { false, 0x64cc, 0x64cc }, /* 0x64cd */ { false, 0x64cd, 0x64cd }, /* 0x64ce */ { false, 0x64ce, 0x64ce }, /* 0x64cf */ { false, 0x64cf, 0x64cf }, /* 0x64d0 */ { false, 0x64d0, 0x64d0 }, /* 0x64d1 */ { false, 0x64d1, 0x64d1 }, /* 0x64d2 */ { false, 0x64d2, 0x64d2 }, /* 0x64d3 */ { false, 0x64d3, 0x64d3 }, /* 0x64d4 */ { false, 0x64d4, 0x64d4 }, /* 0x64d5 */ { false, 0x64d5, 0x64d5 }, /* 0x64d6 */ { false, 0x64d6, 0x64d6 }, /* 0x64d7 */ { false, 0x64d7, 0x64d7 }, /* 0x64d8 */ { false, 0x64d8, 0x64d8 }, /* 0x64d9 */ { false, 0x64d9, 0x64d9 }, /* 0x64da */ { false, 0x64da, 0x64da }, /* 0x64db */ { false, 0x64db, 0x64db }, /* 0x64dc */ { false, 0x64dc, 0x64dc }, /* 0x64dd */ { false, 0x64dd, 0x64dd }, /* 0x64de */ { false, 0x64de, 0x64de }, /* 0x64df */ { false, 0x64df, 0x64df }, /* 0x64e0 */ { false, 0x64e0, 0x64e0 }, /* 0x64e1 */ { false, 0x64e1, 0x64e1 }, /* 0x64e2 */ { false, 0x64e2, 0x64e2 }, /* 0x64e3 */ { false, 0x64e3, 0x64e3 }, /* 0x64e4 */ { false, 0x64e4, 0x64e4 }, /* 0x64e5 */ { false, 0x64e5, 0x64e5 }, /* 0x64e6 */ { false, 0x64e6, 0x64e6 }, /* 0x64e7 */ { false, 0x64e7, 0x64e7 }, /* 0x64e8 */ { false, 0x64e8, 0x64e8 }, /* 0x64e9 */ { false, 0x64e9, 0x64e9 }, /* 0x64ea */ { false, 0x64ea, 0x64ea }, /* 0x64eb */ { false, 0x64eb, 0x64eb }, /* 0x64ec */ { false, 0x64ec, 0x64ec }, /* 0x64ed */ { false, 0x64ed, 0x64ed }, /* 0x64ee */ { false, 0x64ee, 0x64ee }, /* 0x64ef */ { false, 0x64ef, 0x64ef }, /* 0x64f0 */ { false, 0x64f0, 0x64f0 }, /* 0x64f1 */ { false, 0x64f1, 0x64f1 }, /* 0x64f2 */ { false, 0x64f2, 0x64f2 }, /* 0x64f3 */ { false, 0x64f3, 0x64f3 }, /* 0x64f4 */ { false, 0x64f4, 0x64f4 }, /* 0x64f5 */ { false, 0x64f5, 0x64f5 }, /* 0x64f6 */ { false, 0x64f6, 0x64f6 }, /* 0x64f7 */ { false, 0x64f7, 0x64f7 }, /* 0x64f8 */ { false, 0x64f8, 0x64f8 }, /* 0x64f9 */ { false, 0x64f9, 0x64f9 }, /* 0x64fa */ { false, 0x64fa, 0x64fa }, /* 0x64fb */ { false, 0x64fb, 0x64fb }, /* 0x64fc */ { false, 0x64fc, 0x64fc }, /* 0x64fd */ { false, 0x64fd, 0x64fd }, /* 0x64fe */ { false, 0x64fe, 0x64fe }, /* 0x64ff */ { false, 0x64ff, 0x64ff }, /* 0x6500 */ { false, 0x6500, 0x6500 }, /* 0x6501 */ { false, 0x6501, 0x6501 }, /* 0x6502 */ { false, 0x6502, 0x6502 }, /* 0x6503 */ { false, 0x6503, 0x6503 }, /* 0x6504 */ { false, 0x6504, 0x6504 }, /* 0x6505 */ { false, 0x6505, 0x6505 }, /* 0x6506 */ { false, 0x6506, 0x6506 }, /* 0x6507 */ { false, 0x6507, 0x6507 }, /* 0x6508 */ { false, 0x6508, 0x6508 }, /* 0x6509 */ { false, 0x6509, 0x6509 }, /* 0x650a */ { false, 0x650a, 0x650a }, /* 0x650b */ { false, 0x650b, 0x650b }, /* 0x650c */ { false, 0x650c, 0x650c }, /* 0x650d */ { false, 0x650d, 0x650d }, /* 0x650e */ { false, 0x650e, 0x650e }, /* 0x650f */ { false, 0x650f, 0x650f }, /* 0x6510 */ { false, 0x6510, 0x6510 }, /* 0x6511 */ { false, 0x6511, 0x6511 }, /* 0x6512 */ { false, 0x6512, 0x6512 }, /* 0x6513 */ { false, 0x6513, 0x6513 }, /* 0x6514 */ { false, 0x6514, 0x6514 }, /* 0x6515 */ { false, 0x6515, 0x6515 }, /* 0x6516 */ { false, 0x6516, 0x6516 }, /* 0x6517 */ { false, 0x6517, 0x6517 }, /* 0x6518 */ { false, 0x6518, 0x6518 }, /* 0x6519 */ { false, 0x6519, 0x6519 }, /* 0x651a */ { false, 0x651a, 0x651a }, /* 0x651b */ { false, 0x651b, 0x651b }, /* 0x651c */ { false, 0x651c, 0x651c }, /* 0x651d */ { false, 0x651d, 0x651d }, /* 0x651e */ { false, 0x651e, 0x651e }, /* 0x651f */ { false, 0x651f, 0x651f }, /* 0x6520 */ { false, 0x6520, 0x6520 }, /* 0x6521 */ { false, 0x6521, 0x6521 }, /* 0x6522 */ { false, 0x6522, 0x6522 }, /* 0x6523 */ { false, 0x6523, 0x6523 }, /* 0x6524 */ { false, 0x6524, 0x6524 }, /* 0x6525 */ { false, 0x6525, 0x6525 }, /* 0x6526 */ { false, 0x6526, 0x6526 }, /* 0x6527 */ { false, 0x6527, 0x6527 }, /* 0x6528 */ { false, 0x6528, 0x6528 }, /* 0x6529 */ { false, 0x6529, 0x6529 }, /* 0x652a */ { false, 0x652a, 0x652a }, /* 0x652b */ { false, 0x652b, 0x652b }, /* 0x652c */ { false, 0x652c, 0x652c }, /* 0x652d */ { false, 0x652d, 0x652d }, /* 0x652e */ { false, 0x652e, 0x652e }, /* 0x652f */ { false, 0x652f, 0x652f }, /* 0x6530 */ { false, 0x6530, 0x6530 }, /* 0x6531 */ { false, 0x6531, 0x6531 }, /* 0x6532 */ { false, 0x6532, 0x6532 }, /* 0x6533 */ { false, 0x6533, 0x6533 }, /* 0x6534 */ { false, 0x6534, 0x6534 }, /* 0x6535 */ { false, 0x6535, 0x6535 }, /* 0x6536 */ { false, 0x6536, 0x6536 }, /* 0x6537 */ { false, 0x6537, 0x6537 }, /* 0x6538 */ { false, 0x6538, 0x6538 }, /* 0x6539 */ { false, 0x6539, 0x6539 }, /* 0x653a */ { false, 0x653a, 0x653a }, /* 0x653b */ { false, 0x653b, 0x653b }, /* 0x653c */ { false, 0x653c, 0x653c }, /* 0x653d */ { false, 0x653d, 0x653d }, /* 0x653e */ { false, 0x653e, 0x653e }, /* 0x653f */ { false, 0x653f, 0x653f }, /* 0x6540 */ { false, 0x6540, 0x6540 }, /* 0x6541 */ { false, 0x6541, 0x6541 }, /* 0x6542 */ { false, 0x6542, 0x6542 }, /* 0x6543 */ { false, 0x6543, 0x6543 }, /* 0x6544 */ { false, 0x6544, 0x6544 }, /* 0x6545 */ { false, 0x6545, 0x6545 }, /* 0x6546 */ { false, 0x6546, 0x6546 }, /* 0x6547 */ { false, 0x6547, 0x6547 }, /* 0x6548 */ { false, 0x6548, 0x6548 }, /* 0x6549 */ { false, 0x6549, 0x6549 }, /* 0x654a */ { false, 0x654a, 0x654a }, /* 0x654b */ { false, 0x654b, 0x654b }, /* 0x654c */ { false, 0x654c, 0x654c }, /* 0x654d */ { false, 0x654d, 0x654d }, /* 0x654e */ { false, 0x654e, 0x654e }, /* 0x654f */ { false, 0x654f, 0x654f }, /* 0x6550 */ { false, 0x6550, 0x6550 }, /* 0x6551 */ { false, 0x6551, 0x6551 }, /* 0x6552 */ { false, 0x6552, 0x6552 }, /* 0x6553 */ { false, 0x6553, 0x6553 }, /* 0x6554 */ { false, 0x6554, 0x6554 }, /* 0x6555 */ { false, 0x6555, 0x6555 }, /* 0x6556 */ { false, 0x6556, 0x6556 }, /* 0x6557 */ { false, 0x6557, 0x6557 }, /* 0x6558 */ { false, 0x6558, 0x6558 }, /* 0x6559 */ { false, 0x6559, 0x6559 }, /* 0x655a */ { false, 0x655a, 0x655a }, /* 0x655b */ { false, 0x655b, 0x655b }, /* 0x655c */ { false, 0x655c, 0x655c }, /* 0x655d */ { false, 0x655d, 0x655d }, /* 0x655e */ { false, 0x655e, 0x655e }, /* 0x655f */ { false, 0x655f, 0x655f }, /* 0x6560 */ { false, 0x6560, 0x6560 }, /* 0x6561 */ { false, 0x6561, 0x6561 }, /* 0x6562 */ { false, 0x6562, 0x6562 }, /* 0x6563 */ { false, 0x6563, 0x6563 }, /* 0x6564 */ { false, 0x6564, 0x6564 }, /* 0x6565 */ { false, 0x6565, 0x6565 }, /* 0x6566 */ { false, 0x6566, 0x6566 }, /* 0x6567 */ { false, 0x6567, 0x6567 }, /* 0x6568 */ { false, 0x6568, 0x6568 }, /* 0x6569 */ { false, 0x6569, 0x6569 }, /* 0x656a */ { false, 0x656a, 0x656a }, /* 0x656b */ { false, 0x656b, 0x656b }, /* 0x656c */ { false, 0x656c, 0x656c }, /* 0x656d */ { false, 0x656d, 0x656d }, /* 0x656e */ { false, 0x656e, 0x656e }, /* 0x656f */ { false, 0x656f, 0x656f }, /* 0x6570 */ { false, 0x6570, 0x6570 }, /* 0x6571 */ { false, 0x6571, 0x6571 }, /* 0x6572 */ { false, 0x6572, 0x6572 }, /* 0x6573 */ { false, 0x6573, 0x6573 }, /* 0x6574 */ { false, 0x6574, 0x6574 }, /* 0x6575 */ { false, 0x6575, 0x6575 }, /* 0x6576 */ { false, 0x6576, 0x6576 }, /* 0x6577 */ { false, 0x6577, 0x6577 }, /* 0x6578 */ { false, 0x6578, 0x6578 }, /* 0x6579 */ { false, 0x6579, 0x6579 }, /* 0x657a */ { false, 0x657a, 0x657a }, /* 0x657b */ { false, 0x657b, 0x657b }, /* 0x657c */ { false, 0x657c, 0x657c }, /* 0x657d */ { false, 0x657d, 0x657d }, /* 0x657e */ { false, 0x657e, 0x657e }, /* 0x657f */ { false, 0x657f, 0x657f }, /* 0x6580 */ { false, 0x6580, 0x6580 }, /* 0x6581 */ { false, 0x6581, 0x6581 }, /* 0x6582 */ { false, 0x6582, 0x6582 }, /* 0x6583 */ { false, 0x6583, 0x6583 }, /* 0x6584 */ { false, 0x6584, 0x6584 }, /* 0x6585 */ { false, 0x6585, 0x6585 }, /* 0x6586 */ { false, 0x6586, 0x6586 }, /* 0x6587 */ { false, 0x6587, 0x6587 }, /* 0x6588 */ { false, 0x6588, 0x6588 }, /* 0x6589 */ { false, 0x6589, 0x6589 }, /* 0x658a */ { false, 0x658a, 0x658a }, /* 0x658b */ { false, 0x658b, 0x658b }, /* 0x658c */ { false, 0x658c, 0x658c }, /* 0x658d */ { false, 0x658d, 0x658d }, /* 0x658e */ { false, 0x658e, 0x658e }, /* 0x658f */ { false, 0x658f, 0x658f }, /* 0x6590 */ { false, 0x6590, 0x6590 }, /* 0x6591 */ { false, 0x6591, 0x6591 }, /* 0x6592 */ { false, 0x6592, 0x6592 }, /* 0x6593 */ { false, 0x6593, 0x6593 }, /* 0x6594 */ { false, 0x6594, 0x6594 }, /* 0x6595 */ { false, 0x6595, 0x6595 }, /* 0x6596 */ { false, 0x6596, 0x6596 }, /* 0x6597 */ { false, 0x6597, 0x6597 }, /* 0x6598 */ { false, 0x6598, 0x6598 }, /* 0x6599 */ { false, 0x6599, 0x6599 }, /* 0x659a */ { false, 0x659a, 0x659a }, /* 0x659b */ { false, 0x659b, 0x659b }, /* 0x659c */ { false, 0x659c, 0x659c }, /* 0x659d */ { false, 0x659d, 0x659d }, /* 0x659e */ { false, 0x659e, 0x659e }, /* 0x659f */ { false, 0x659f, 0x659f }, /* 0x65a0 */ { false, 0x65a0, 0x65a0 }, /* 0x65a1 */ { false, 0x65a1, 0x65a1 }, /* 0x65a2 */ { false, 0x65a2, 0x65a2 }, /* 0x65a3 */ { false, 0x65a3, 0x65a3 }, /* 0x65a4 */ { false, 0x65a4, 0x65a4 }, /* 0x65a5 */ { false, 0x65a5, 0x65a5 }, /* 0x65a6 */ { false, 0x65a6, 0x65a6 }, /* 0x65a7 */ { false, 0x65a7, 0x65a7 }, /* 0x65a8 */ { false, 0x65a8, 0x65a8 }, /* 0x65a9 */ { false, 0x65a9, 0x65a9 }, /* 0x65aa */ { false, 0x65aa, 0x65aa }, /* 0x65ab */ { false, 0x65ab, 0x65ab }, /* 0x65ac */ { false, 0x65ac, 0x65ac }, /* 0x65ad */ { false, 0x65ad, 0x65ad }, /* 0x65ae */ { false, 0x65ae, 0x65ae }, /* 0x65af */ { false, 0x65af, 0x65af }, /* 0x65b0 */ { false, 0x65b0, 0x65b0 }, /* 0x65b1 */ { false, 0x65b1, 0x65b1 }, /* 0x65b2 */ { false, 0x65b2, 0x65b2 }, /* 0x65b3 */ { false, 0x65b3, 0x65b3 }, /* 0x65b4 */ { false, 0x65b4, 0x65b4 }, /* 0x65b5 */ { false, 0x65b5, 0x65b5 }, /* 0x65b6 */ { false, 0x65b6, 0x65b6 }, /* 0x65b7 */ { false, 0x65b7, 0x65b7 }, /* 0x65b8 */ { false, 0x65b8, 0x65b8 }, /* 0x65b9 */ { false, 0x65b9, 0x65b9 }, /* 0x65ba */ { false, 0x65ba, 0x65ba }, /* 0x65bb */ { false, 0x65bb, 0x65bb }, /* 0x65bc */ { false, 0x65bc, 0x65bc }, /* 0x65bd */ { false, 0x65bd, 0x65bd }, /* 0x65be */ { false, 0x65be, 0x65be }, /* 0x65bf */ { false, 0x65bf, 0x65bf }, /* 0x65c0 */ { false, 0x65c0, 0x65c0 }, /* 0x65c1 */ { false, 0x65c1, 0x65c1 }, /* 0x65c2 */ { false, 0x65c2, 0x65c2 }, /* 0x65c3 */ { false, 0x65c3, 0x65c3 }, /* 0x65c4 */ { false, 0x65c4, 0x65c4 }, /* 0x65c5 */ { false, 0x65c5, 0x65c5 }, /* 0x65c6 */ { false, 0x65c6, 0x65c6 }, /* 0x65c7 */ { false, 0x65c7, 0x65c7 }, /* 0x65c8 */ { false, 0x65c8, 0x65c8 }, /* 0x65c9 */ { false, 0x65c9, 0x65c9 }, /* 0x65ca */ { false, 0x65ca, 0x65ca }, /* 0x65cb */ { false, 0x65cb, 0x65cb }, /* 0x65cc */ { false, 0x65cc, 0x65cc }, /* 0x65cd */ { false, 0x65cd, 0x65cd }, /* 0x65ce */ { false, 0x65ce, 0x65ce }, /* 0x65cf */ { false, 0x65cf, 0x65cf }, /* 0x65d0 */ { false, 0x65d0, 0x65d0 }, /* 0x65d1 */ { false, 0x65d1, 0x65d1 }, /* 0x65d2 */ { false, 0x65d2, 0x65d2 }, /* 0x65d3 */ { false, 0x65d3, 0x65d3 }, /* 0x65d4 */ { false, 0x65d4, 0x65d4 }, /* 0x65d5 */ { false, 0x65d5, 0x65d5 }, /* 0x65d6 */ { false, 0x65d6, 0x65d6 }, /* 0x65d7 */ { false, 0x65d7, 0x65d7 }, /* 0x65d8 */ { false, 0x65d8, 0x65d8 }, /* 0x65d9 */ { false, 0x65d9, 0x65d9 }, /* 0x65da */ { false, 0x65da, 0x65da }, /* 0x65db */ { false, 0x65db, 0x65db }, /* 0x65dc */ { false, 0x65dc, 0x65dc }, /* 0x65dd */ { false, 0x65dd, 0x65dd }, /* 0x65de */ { false, 0x65de, 0x65de }, /* 0x65df */ { false, 0x65df, 0x65df }, /* 0x65e0 */ { false, 0x65e0, 0x65e0 }, /* 0x65e1 */ { false, 0x65e1, 0x65e1 }, /* 0x65e2 */ { false, 0x65e2, 0x65e2 }, /* 0x65e3 */ { false, 0x65e3, 0x65e3 }, /* 0x65e4 */ { false, 0x65e4, 0x65e4 }, /* 0x65e5 */ { false, 0x65e5, 0x65e5 }, /* 0x65e6 */ { false, 0x65e6, 0x65e6 }, /* 0x65e7 */ { false, 0x65e7, 0x65e7 }, /* 0x65e8 */ { false, 0x65e8, 0x65e8 }, /* 0x65e9 */ { false, 0x65e9, 0x65e9 }, /* 0x65ea */ { false, 0x65ea, 0x65ea }, /* 0x65eb */ { false, 0x65eb, 0x65eb }, /* 0x65ec */ { false, 0x65ec, 0x65ec }, /* 0x65ed */ { false, 0x65ed, 0x65ed }, /* 0x65ee */ { false, 0x65ee, 0x65ee }, /* 0x65ef */ { false, 0x65ef, 0x65ef }, /* 0x65f0 */ { false, 0x65f0, 0x65f0 }, /* 0x65f1 */ { false, 0x65f1, 0x65f1 }, /* 0x65f2 */ { false, 0x65f2, 0x65f2 }, /* 0x65f3 */ { false, 0x65f3, 0x65f3 }, /* 0x65f4 */ { false, 0x65f4, 0x65f4 }, /* 0x65f5 */ { false, 0x65f5, 0x65f5 }, /* 0x65f6 */ { false, 0x65f6, 0x65f6 }, /* 0x65f7 */ { false, 0x65f7, 0x65f7 }, /* 0x65f8 */ { false, 0x65f8, 0x65f8 }, /* 0x65f9 */ { false, 0x65f9, 0x65f9 }, /* 0x65fa */ { false, 0x65fa, 0x65fa }, /* 0x65fb */ { false, 0x65fb, 0x65fb }, /* 0x65fc */ { false, 0x65fc, 0x65fc }, /* 0x65fd */ { false, 0x65fd, 0x65fd }, /* 0x65fe */ { false, 0x65fe, 0x65fe }, /* 0x65ff */ { false, 0x65ff, 0x65ff }, /* 0x6600 */ { false, 0x6600, 0x6600 }, /* 0x6601 */ { false, 0x6601, 0x6601 }, /* 0x6602 */ { false, 0x6602, 0x6602 }, /* 0x6603 */ { false, 0x6603, 0x6603 }, /* 0x6604 */ { false, 0x6604, 0x6604 }, /* 0x6605 */ { false, 0x6605, 0x6605 }, /* 0x6606 */ { false, 0x6606, 0x6606 }, /* 0x6607 */ { false, 0x6607, 0x6607 }, /* 0x6608 */ { false, 0x6608, 0x6608 }, /* 0x6609 */ { false, 0x6609, 0x6609 }, /* 0x660a */ { false, 0x660a, 0x660a }, /* 0x660b */ { false, 0x660b, 0x660b }, /* 0x660c */ { false, 0x660c, 0x660c }, /* 0x660d */ { false, 0x660d, 0x660d }, /* 0x660e */ { false, 0x660e, 0x660e }, /* 0x660f */ { false, 0x660f, 0x660f }, /* 0x6610 */ { false, 0x6610, 0x6610 }, /* 0x6611 */ { false, 0x6611, 0x6611 }, /* 0x6612 */ { false, 0x6612, 0x6612 }, /* 0x6613 */ { false, 0x6613, 0x6613 }, /* 0x6614 */ { false, 0x6614, 0x6614 }, /* 0x6615 */ { false, 0x6615, 0x6615 }, /* 0x6616 */ { false, 0x6616, 0x6616 }, /* 0x6617 */ { false, 0x6617, 0x6617 }, /* 0x6618 */ { false, 0x6618, 0x6618 }, /* 0x6619 */ { false, 0x6619, 0x6619 }, /* 0x661a */ { false, 0x661a, 0x661a }, /* 0x661b */ { false, 0x661b, 0x661b }, /* 0x661c */ { false, 0x661c, 0x661c }, /* 0x661d */ { false, 0x661d, 0x661d }, /* 0x661e */ { false, 0x661e, 0x661e }, /* 0x661f */ { false, 0x661f, 0x661f }, /* 0x6620 */ { false, 0x6620, 0x6620 }, /* 0x6621 */ { false, 0x6621, 0x6621 }, /* 0x6622 */ { false, 0x6622, 0x6622 }, /* 0x6623 */ { false, 0x6623, 0x6623 }, /* 0x6624 */ { false, 0x6624, 0x6624 }, /* 0x6625 */ { false, 0x6625, 0x6625 }, /* 0x6626 */ { false, 0x6626, 0x6626 }, /* 0x6627 */ { false, 0x6627, 0x6627 }, /* 0x6628 */ { false, 0x6628, 0x6628 }, /* 0x6629 */ { false, 0x6629, 0x6629 }, /* 0x662a */ { false, 0x662a, 0x662a }, /* 0x662b */ { false, 0x662b, 0x662b }, /* 0x662c */ { false, 0x662c, 0x662c }, /* 0x662d */ { false, 0x662d, 0x662d }, /* 0x662e */ { false, 0x662e, 0x662e }, /* 0x662f */ { false, 0x662f, 0x662f }, /* 0x6630 */ { false, 0x6630, 0x6630 }, /* 0x6631 */ { false, 0x6631, 0x6631 }, /* 0x6632 */ { false, 0x6632, 0x6632 }, /* 0x6633 */ { false, 0x6633, 0x6633 }, /* 0x6634 */ { false, 0x6634, 0x6634 }, /* 0x6635 */ { false, 0x6635, 0x6635 }, /* 0x6636 */ { false, 0x6636, 0x6636 }, /* 0x6637 */ { false, 0x6637, 0x6637 }, /* 0x6638 */ { false, 0x6638, 0x6638 }, /* 0x6639 */ { false, 0x6639, 0x6639 }, /* 0x663a */ { false, 0x663a, 0x663a }, /* 0x663b */ { false, 0x663b, 0x663b }, /* 0x663c */ { false, 0x663c, 0x663c }, /* 0x663d */ { false, 0x663d, 0x663d }, /* 0x663e */ { false, 0x663e, 0x663e }, /* 0x663f */ { false, 0x663f, 0x663f }, /* 0x6640 */ { false, 0x6640, 0x6640 }, /* 0x6641 */ { false, 0x6641, 0x6641 }, /* 0x6642 */ { false, 0x6642, 0x6642 }, /* 0x6643 */ { false, 0x6643, 0x6643 }, /* 0x6644 */ { false, 0x6644, 0x6644 }, /* 0x6645 */ { false, 0x6645, 0x6645 }, /* 0x6646 */ { false, 0x6646, 0x6646 }, /* 0x6647 */ { false, 0x6647, 0x6647 }, /* 0x6648 */ { false, 0x6648, 0x6648 }, /* 0x6649 */ { false, 0x6649, 0x6649 }, /* 0x664a */ { false, 0x664a, 0x664a }, /* 0x664b */ { false, 0x664b, 0x664b }, /* 0x664c */ { false, 0x664c, 0x664c }, /* 0x664d */ { false, 0x664d, 0x664d }, /* 0x664e */ { false, 0x664e, 0x664e }, /* 0x664f */ { false, 0x664f, 0x664f }, /* 0x6650 */ { false, 0x6650, 0x6650 }, /* 0x6651 */ { false, 0x6651, 0x6651 }, /* 0x6652 */ { false, 0x6652, 0x6652 }, /* 0x6653 */ { false, 0x6653, 0x6653 }, /* 0x6654 */ { false, 0x6654, 0x6654 }, /* 0x6655 */ { false, 0x6655, 0x6655 }, /* 0x6656 */ { false, 0x6656, 0x6656 }, /* 0x6657 */ { false, 0x6657, 0x6657 }, /* 0x6658 */ { false, 0x6658, 0x6658 }, /* 0x6659 */ { false, 0x6659, 0x6659 }, /* 0x665a */ { false, 0x665a, 0x665a }, /* 0x665b */ { false, 0x665b, 0x665b }, /* 0x665c */ { false, 0x665c, 0x665c }, /* 0x665d */ { false, 0x665d, 0x665d }, /* 0x665e */ { false, 0x665e, 0x665e }, /* 0x665f */ { false, 0x665f, 0x665f }, /* 0x6660 */ { false, 0x6660, 0x6660 }, /* 0x6661 */ { false, 0x6661, 0x6661 }, /* 0x6662 */ { false, 0x6662, 0x6662 }, /* 0x6663 */ { false, 0x6663, 0x6663 }, /* 0x6664 */ { false, 0x6664, 0x6664 }, /* 0x6665 */ { false, 0x6665, 0x6665 }, /* 0x6666 */ { false, 0x6666, 0x6666 }, /* 0x6667 */ { false, 0x6667, 0x6667 }, /* 0x6668 */ { false, 0x6668, 0x6668 }, /* 0x6669 */ { false, 0x6669, 0x6669 }, /* 0x666a */ { false, 0x666a, 0x666a }, /* 0x666b */ { false, 0x666b, 0x666b }, /* 0x666c */ { false, 0x666c, 0x666c }, /* 0x666d */ { false, 0x666d, 0x666d }, /* 0x666e */ { false, 0x666e, 0x666e }, /* 0x666f */ { false, 0x666f, 0x666f }, /* 0x6670 */ { false, 0x6670, 0x6670 }, /* 0x6671 */ { false, 0x6671, 0x6671 }, /* 0x6672 */ { false, 0x6672, 0x6672 }, /* 0x6673 */ { false, 0x6673, 0x6673 }, /* 0x6674 */ { false, 0x6674, 0x6674 }, /* 0x6675 */ { false, 0x6675, 0x6675 }, /* 0x6676 */ { false, 0x6676, 0x6676 }, /* 0x6677 */ { false, 0x6677, 0x6677 }, /* 0x6678 */ { false, 0x6678, 0x6678 }, /* 0x6679 */ { false, 0x6679, 0x6679 }, /* 0x667a */ { false, 0x667a, 0x667a }, /* 0x667b */ { false, 0x667b, 0x667b }, /* 0x667c */ { false, 0x667c, 0x667c }, /* 0x667d */ { false, 0x667d, 0x667d }, /* 0x667e */ { false, 0x667e, 0x667e }, /* 0x667f */ { false, 0x667f, 0x667f }, /* 0x6680 */ { false, 0x6680, 0x6680 }, /* 0x6681 */ { false, 0x6681, 0x6681 }, /* 0x6682 */ { false, 0x6682, 0x6682 }, /* 0x6683 */ { false, 0x6683, 0x6683 }, /* 0x6684 */ { false, 0x6684, 0x6684 }, /* 0x6685 */ { false, 0x6685, 0x6685 }, /* 0x6686 */ { false, 0x6686, 0x6686 }, /* 0x6687 */ { false, 0x6687, 0x6687 }, /* 0x6688 */ { false, 0x6688, 0x6688 }, /* 0x6689 */ { false, 0x6689, 0x6689 }, /* 0x668a */ { false, 0x668a, 0x668a }, /* 0x668b */ { false, 0x668b, 0x668b }, /* 0x668c */ { false, 0x668c, 0x668c }, /* 0x668d */ { false, 0x668d, 0x668d }, /* 0x668e */ { false, 0x668e, 0x668e }, /* 0x668f */ { false, 0x668f, 0x668f }, /* 0x6690 */ { false, 0x6690, 0x6690 }, /* 0x6691 */ { false, 0x6691, 0x6691 }, /* 0x6692 */ { false, 0x6692, 0x6692 }, /* 0x6693 */ { false, 0x6693, 0x6693 }, /* 0x6694 */ { false, 0x6694, 0x6694 }, /* 0x6695 */ { false, 0x6695, 0x6695 }, /* 0x6696 */ { false, 0x6696, 0x6696 }, /* 0x6697 */ { false, 0x6697, 0x6697 }, /* 0x6698 */ { false, 0x6698, 0x6698 }, /* 0x6699 */ { false, 0x6699, 0x6699 }, /* 0x669a */ { false, 0x669a, 0x669a }, /* 0x669b */ { false, 0x669b, 0x669b }, /* 0x669c */ { false, 0x669c, 0x669c }, /* 0x669d */ { false, 0x669d, 0x669d }, /* 0x669e */ { false, 0x669e, 0x669e }, /* 0x669f */ { false, 0x669f, 0x669f }, /* 0x66a0 */ { false, 0x66a0, 0x66a0 }, /* 0x66a1 */ { false, 0x66a1, 0x66a1 }, /* 0x66a2 */ { false, 0x66a2, 0x66a2 }, /* 0x66a3 */ { false, 0x66a3, 0x66a3 }, /* 0x66a4 */ { false, 0x66a4, 0x66a4 }, /* 0x66a5 */ { false, 0x66a5, 0x66a5 }, /* 0x66a6 */ { false, 0x66a6, 0x66a6 }, /* 0x66a7 */ { false, 0x66a7, 0x66a7 }, /* 0x66a8 */ { false, 0x66a8, 0x66a8 }, /* 0x66a9 */ { false, 0x66a9, 0x66a9 }, /* 0x66aa */ { false, 0x66aa, 0x66aa }, /* 0x66ab */ { false, 0x66ab, 0x66ab }, /* 0x66ac */ { false, 0x66ac, 0x66ac }, /* 0x66ad */ { false, 0x66ad, 0x66ad }, /* 0x66ae */ { false, 0x66ae, 0x66ae }, /* 0x66af */ { false, 0x66af, 0x66af }, /* 0x66b0 */ { false, 0x66b0, 0x66b0 }, /* 0x66b1 */ { false, 0x66b1, 0x66b1 }, /* 0x66b2 */ { false, 0x66b2, 0x66b2 }, /* 0x66b3 */ { false, 0x66b3, 0x66b3 }, /* 0x66b4 */ { false, 0x66b4, 0x66b4 }, /* 0x66b5 */ { false, 0x66b5, 0x66b5 }, /* 0x66b6 */ { false, 0x66b6, 0x66b6 }, /* 0x66b7 */ { false, 0x66b7, 0x66b7 }, /* 0x66b8 */ { false, 0x66b8, 0x66b8 }, /* 0x66b9 */ { false, 0x66b9, 0x66b9 }, /* 0x66ba */ { false, 0x66ba, 0x66ba }, /* 0x66bb */ { false, 0x66bb, 0x66bb }, /* 0x66bc */ { false, 0x66bc, 0x66bc }, /* 0x66bd */ { false, 0x66bd, 0x66bd }, /* 0x66be */ { false, 0x66be, 0x66be }, /* 0x66bf */ { false, 0x66bf, 0x66bf }, /* 0x66c0 */ { false, 0x66c0, 0x66c0 }, /* 0x66c1 */ { false, 0x66c1, 0x66c1 }, /* 0x66c2 */ { false, 0x66c2, 0x66c2 }, /* 0x66c3 */ { false, 0x66c3, 0x66c3 }, /* 0x66c4 */ { false, 0x66c4, 0x66c4 }, /* 0x66c5 */ { false, 0x66c5, 0x66c5 }, /* 0x66c6 */ { false, 0x66c6, 0x66c6 }, /* 0x66c7 */ { false, 0x66c7, 0x66c7 }, /* 0x66c8 */ { false, 0x66c8, 0x66c8 }, /* 0x66c9 */ { false, 0x66c9, 0x66c9 }, /* 0x66ca */ { false, 0x66ca, 0x66ca }, /* 0x66cb */ { false, 0x66cb, 0x66cb }, /* 0x66cc */ { false, 0x66cc, 0x66cc }, /* 0x66cd */ { false, 0x66cd, 0x66cd }, /* 0x66ce */ { false, 0x66ce, 0x66ce }, /* 0x66cf */ { false, 0x66cf, 0x66cf }, /* 0x66d0 */ { false, 0x66d0, 0x66d0 }, /* 0x66d1 */ { false, 0x66d1, 0x66d1 }, /* 0x66d2 */ { false, 0x66d2, 0x66d2 }, /* 0x66d3 */ { false, 0x66d3, 0x66d3 }, /* 0x66d4 */ { false, 0x66d4, 0x66d4 }, /* 0x66d5 */ { false, 0x66d5, 0x66d5 }, /* 0x66d6 */ { false, 0x66d6, 0x66d6 }, /* 0x66d7 */ { false, 0x66d7, 0x66d7 }, /* 0x66d8 */ { false, 0x66d8, 0x66d8 }, /* 0x66d9 */ { false, 0x66d9, 0x66d9 }, /* 0x66da */ { false, 0x66da, 0x66da }, /* 0x66db */ { false, 0x66db, 0x66db }, /* 0x66dc */ { false, 0x66dc, 0x66dc }, /* 0x66dd */ { false, 0x66dd, 0x66dd }, /* 0x66de */ { false, 0x66de, 0x66de }, /* 0x66df */ { false, 0x66df, 0x66df }, /* 0x66e0 */ { false, 0x66e0, 0x66e0 }, /* 0x66e1 */ { false, 0x66e1, 0x66e1 }, /* 0x66e2 */ { false, 0x66e2, 0x66e2 }, /* 0x66e3 */ { false, 0x66e3, 0x66e3 }, /* 0x66e4 */ { false, 0x66e4, 0x66e4 }, /* 0x66e5 */ { false, 0x66e5, 0x66e5 }, /* 0x66e6 */ { false, 0x66e6, 0x66e6 }, /* 0x66e7 */ { false, 0x66e7, 0x66e7 }, /* 0x66e8 */ { false, 0x66e8, 0x66e8 }, /* 0x66e9 */ { false, 0x66e9, 0x66e9 }, /* 0x66ea */ { false, 0x66ea, 0x66ea }, /* 0x66eb */ { false, 0x66eb, 0x66eb }, /* 0x66ec */ { false, 0x66ec, 0x66ec }, /* 0x66ed */ { false, 0x66ed, 0x66ed }, /* 0x66ee */ { false, 0x66ee, 0x66ee }, /* 0x66ef */ { false, 0x66ef, 0x66ef }, /* 0x66f0 */ { false, 0x66f0, 0x66f0 }, /* 0x66f1 */ { false, 0x66f1, 0x66f1 }, /* 0x66f2 */ { false, 0x66f2, 0x66f2 }, /* 0x66f3 */ { false, 0x66f3, 0x66f3 }, /* 0x66f4 */ { false, 0x66f4, 0x66f4 }, /* 0x66f5 */ { false, 0x66f5, 0x66f5 }, /* 0x66f6 */ { false, 0x66f6, 0x66f6 }, /* 0x66f7 */ { false, 0x66f7, 0x66f7 }, /* 0x66f8 */ { false, 0x66f8, 0x66f8 }, /* 0x66f9 */ { false, 0x66f9, 0x66f9 }, /* 0x66fa */ { false, 0x66fa, 0x66fa }, /* 0x66fb */ { false, 0x66fb, 0x66fb }, /* 0x66fc */ { false, 0x66fc, 0x66fc }, /* 0x66fd */ { false, 0x66fd, 0x66fd }, /* 0x66fe */ { false, 0x66fe, 0x66fe }, /* 0x66ff */ { false, 0x66ff, 0x66ff }, /* 0x6700 */ { false, 0x6700, 0x6700 }, /* 0x6701 */ { false, 0x6701, 0x6701 }, /* 0x6702 */ { false, 0x6702, 0x6702 }, /* 0x6703 */ { false, 0x6703, 0x6703 }, /* 0x6704 */ { false, 0x6704, 0x6704 }, /* 0x6705 */ { false, 0x6705, 0x6705 }, /* 0x6706 */ { false, 0x6706, 0x6706 }, /* 0x6707 */ { false, 0x6707, 0x6707 }, /* 0x6708 */ { false, 0x6708, 0x6708 }, /* 0x6709 */ { false, 0x6709, 0x6709 }, /* 0x670a */ { false, 0x670a, 0x670a }, /* 0x670b */ { false, 0x670b, 0x670b }, /* 0x670c */ { false, 0x670c, 0x670c }, /* 0x670d */ { false, 0x670d, 0x670d }, /* 0x670e */ { false, 0x670e, 0x670e }, /* 0x670f */ { false, 0x670f, 0x670f }, /* 0x6710 */ { false, 0x6710, 0x6710 }, /* 0x6711 */ { false, 0x6711, 0x6711 }, /* 0x6712 */ { false, 0x6712, 0x6712 }, /* 0x6713 */ { false, 0x6713, 0x6713 }, /* 0x6714 */ { false, 0x6714, 0x6714 }, /* 0x6715 */ { false, 0x6715, 0x6715 }, /* 0x6716 */ { false, 0x6716, 0x6716 }, /* 0x6717 */ { false, 0x6717, 0x6717 }, /* 0x6718 */ { false, 0x6718, 0x6718 }, /* 0x6719 */ { false, 0x6719, 0x6719 }, /* 0x671a */ { false, 0x671a, 0x671a }, /* 0x671b */ { false, 0x671b, 0x671b }, /* 0x671c */ { false, 0x671c, 0x671c }, /* 0x671d */ { false, 0x671d, 0x671d }, /* 0x671e */ { false, 0x671e, 0x671e }, /* 0x671f */ { false, 0x671f, 0x671f }, /* 0x6720 */ { false, 0x6720, 0x6720 }, /* 0x6721 */ { false, 0x6721, 0x6721 }, /* 0x6722 */ { false, 0x6722, 0x6722 }, /* 0x6723 */ { false, 0x6723, 0x6723 }, /* 0x6724 */ { false, 0x6724, 0x6724 }, /* 0x6725 */ { false, 0x6725, 0x6725 }, /* 0x6726 */ { false, 0x6726, 0x6726 }, /* 0x6727 */ { false, 0x6727, 0x6727 }, /* 0x6728 */ { false, 0x6728, 0x6728 }, /* 0x6729 */ { false, 0x6729, 0x6729 }, /* 0x672a */ { false, 0x672a, 0x672a }, /* 0x672b */ { false, 0x672b, 0x672b }, /* 0x672c */ { false, 0x672c, 0x672c }, /* 0x672d */ { false, 0x672d, 0x672d }, /* 0x672e */ { false, 0x672e, 0x672e }, /* 0x672f */ { false, 0x672f, 0x672f }, /* 0x6730 */ { false, 0x6730, 0x6730 }, /* 0x6731 */ { false, 0x6731, 0x6731 }, /* 0x6732 */ { false, 0x6732, 0x6732 }, /* 0x6733 */ { false, 0x6733, 0x6733 }, /* 0x6734 */ { false, 0x6734, 0x6734 }, /* 0x6735 */ { false, 0x6735, 0x6735 }, /* 0x6736 */ { false, 0x6736, 0x6736 }, /* 0x6737 */ { false, 0x6737, 0x6737 }, /* 0x6738 */ { false, 0x6738, 0x6738 }, /* 0x6739 */ { false, 0x6739, 0x6739 }, /* 0x673a */ { false, 0x673a, 0x673a }, /* 0x673b */ { false, 0x673b, 0x673b }, /* 0x673c */ { false, 0x673c, 0x673c }, /* 0x673d */ { false, 0x673d, 0x673d }, /* 0x673e */ { false, 0x673e, 0x673e }, /* 0x673f */ { false, 0x673f, 0x673f }, /* 0x6740 */ { false, 0x6740, 0x6740 }, /* 0x6741 */ { false, 0x6741, 0x6741 }, /* 0x6742 */ { false, 0x6742, 0x6742 }, /* 0x6743 */ { false, 0x6743, 0x6743 }, /* 0x6744 */ { false, 0x6744, 0x6744 }, /* 0x6745 */ { false, 0x6745, 0x6745 }, /* 0x6746 */ { false, 0x6746, 0x6746 }, /* 0x6747 */ { false, 0x6747, 0x6747 }, /* 0x6748 */ { false, 0x6748, 0x6748 }, /* 0x6749 */ { false, 0x6749, 0x6749 }, /* 0x674a */ { false, 0x674a, 0x674a }, /* 0x674b */ { false, 0x674b, 0x674b }, /* 0x674c */ { false, 0x674c, 0x674c }, /* 0x674d */ { false, 0x674d, 0x674d }, /* 0x674e */ { false, 0x674e, 0x674e }, /* 0x674f */ { false, 0x674f, 0x674f }, /* 0x6750 */ { false, 0x6750, 0x6750 }, /* 0x6751 */ { false, 0x6751, 0x6751 }, /* 0x6752 */ { false, 0x6752, 0x6752 }, /* 0x6753 */ { false, 0x6753, 0x6753 }, /* 0x6754 */ { false, 0x6754, 0x6754 }, /* 0x6755 */ { false, 0x6755, 0x6755 }, /* 0x6756 */ { false, 0x6756, 0x6756 }, /* 0x6757 */ { false, 0x6757, 0x6757 }, /* 0x6758 */ { false, 0x6758, 0x6758 }, /* 0x6759 */ { false, 0x6759, 0x6759 }, /* 0x675a */ { false, 0x675a, 0x675a }, /* 0x675b */ { false, 0x675b, 0x675b }, /* 0x675c */ { false, 0x675c, 0x675c }, /* 0x675d */ { false, 0x675d, 0x675d }, /* 0x675e */ { false, 0x675e, 0x675e }, /* 0x675f */ { false, 0x675f, 0x675f }, /* 0x6760 */ { false, 0x6760, 0x6760 }, /* 0x6761 */ { false, 0x6761, 0x6761 }, /* 0x6762 */ { false, 0x6762, 0x6762 }, /* 0x6763 */ { false, 0x6763, 0x6763 }, /* 0x6764 */ { false, 0x6764, 0x6764 }, /* 0x6765 */ { false, 0x6765, 0x6765 }, /* 0x6766 */ { false, 0x6766, 0x6766 }, /* 0x6767 */ { false, 0x6767, 0x6767 }, /* 0x6768 */ { false, 0x6768, 0x6768 }, /* 0x6769 */ { false, 0x6769, 0x6769 }, /* 0x676a */ { false, 0x676a, 0x676a }, /* 0x676b */ { false, 0x676b, 0x676b }, /* 0x676c */ { false, 0x676c, 0x676c }, /* 0x676d */ { false, 0x676d, 0x676d }, /* 0x676e */ { false, 0x676e, 0x676e }, /* 0x676f */ { false, 0x676f, 0x676f }, /* 0x6770 */ { false, 0x6770, 0x6770 }, /* 0x6771 */ { false, 0x6771, 0x6771 }, /* 0x6772 */ { false, 0x6772, 0x6772 }, /* 0x6773 */ { false, 0x6773, 0x6773 }, /* 0x6774 */ { false, 0x6774, 0x6774 }, /* 0x6775 */ { false, 0x6775, 0x6775 }, /* 0x6776 */ { false, 0x6776, 0x6776 }, /* 0x6777 */ { false, 0x6777, 0x6777 }, /* 0x6778 */ { false, 0x6778, 0x6778 }, /* 0x6779 */ { false, 0x6779, 0x6779 }, /* 0x677a */ { false, 0x677a, 0x677a }, /* 0x677b */ { false, 0x677b, 0x677b }, /* 0x677c */ { false, 0x677c, 0x677c }, /* 0x677d */ { false, 0x677d, 0x677d }, /* 0x677e */ { false, 0x677e, 0x677e }, /* 0x677f */ { false, 0x677f, 0x677f }, /* 0x6780 */ { false, 0x6780, 0x6780 }, /* 0x6781 */ { false, 0x6781, 0x6781 }, /* 0x6782 */ { false, 0x6782, 0x6782 }, /* 0x6783 */ { false, 0x6783, 0x6783 }, /* 0x6784 */ { false, 0x6784, 0x6784 }, /* 0x6785 */ { false, 0x6785, 0x6785 }, /* 0x6786 */ { false, 0x6786, 0x6786 }, /* 0x6787 */ { false, 0x6787, 0x6787 }, /* 0x6788 */ { false, 0x6788, 0x6788 }, /* 0x6789 */ { false, 0x6789, 0x6789 }, /* 0x678a */ { false, 0x678a, 0x678a }, /* 0x678b */ { false, 0x678b, 0x678b }, /* 0x678c */ { false, 0x678c, 0x678c }, /* 0x678d */ { false, 0x678d, 0x678d }, /* 0x678e */ { false, 0x678e, 0x678e }, /* 0x678f */ { false, 0x678f, 0x678f }, /* 0x6790 */ { false, 0x6790, 0x6790 }, /* 0x6791 */ { false, 0x6791, 0x6791 }, /* 0x6792 */ { false, 0x6792, 0x6792 }, /* 0x6793 */ { false, 0x6793, 0x6793 }, /* 0x6794 */ { false, 0x6794, 0x6794 }, /* 0x6795 */ { false, 0x6795, 0x6795 }, /* 0x6796 */ { false, 0x6796, 0x6796 }, /* 0x6797 */ { false, 0x6797, 0x6797 }, /* 0x6798 */ { false, 0x6798, 0x6798 }, /* 0x6799 */ { false, 0x6799, 0x6799 }, /* 0x679a */ { false, 0x679a, 0x679a }, /* 0x679b */ { false, 0x679b, 0x679b }, /* 0x679c */ { false, 0x679c, 0x679c }, /* 0x679d */ { false, 0x679d, 0x679d }, /* 0x679e */ { false, 0x679e, 0x679e }, /* 0x679f */ { false, 0x679f, 0x679f }, /* 0x67a0 */ { false, 0x67a0, 0x67a0 }, /* 0x67a1 */ { false, 0x67a1, 0x67a1 }, /* 0x67a2 */ { false, 0x67a2, 0x67a2 }, /* 0x67a3 */ { false, 0x67a3, 0x67a3 }, /* 0x67a4 */ { false, 0x67a4, 0x67a4 }, /* 0x67a5 */ { false, 0x67a5, 0x67a5 }, /* 0x67a6 */ { false, 0x67a6, 0x67a6 }, /* 0x67a7 */ { false, 0x67a7, 0x67a7 }, /* 0x67a8 */ { false, 0x67a8, 0x67a8 }, /* 0x67a9 */ { false, 0x67a9, 0x67a9 }, /* 0x67aa */ { false, 0x67aa, 0x67aa }, /* 0x67ab */ { false, 0x67ab, 0x67ab }, /* 0x67ac */ { false, 0x67ac, 0x67ac }, /* 0x67ad */ { false, 0x67ad, 0x67ad }, /* 0x67ae */ { false, 0x67ae, 0x67ae }, /* 0x67af */ { false, 0x67af, 0x67af }, /* 0x67b0 */ { false, 0x67b0, 0x67b0 }, /* 0x67b1 */ { false, 0x67b1, 0x67b1 }, /* 0x67b2 */ { false, 0x67b2, 0x67b2 }, /* 0x67b3 */ { false, 0x67b3, 0x67b3 }, /* 0x67b4 */ { false, 0x67b4, 0x67b4 }, /* 0x67b5 */ { false, 0x67b5, 0x67b5 }, /* 0x67b6 */ { false, 0x67b6, 0x67b6 }, /* 0x67b7 */ { false, 0x67b7, 0x67b7 }, /* 0x67b8 */ { false, 0x67b8, 0x67b8 }, /* 0x67b9 */ { false, 0x67b9, 0x67b9 }, /* 0x67ba */ { false, 0x67ba, 0x67ba }, /* 0x67bb */ { false, 0x67bb, 0x67bb }, /* 0x67bc */ { false, 0x67bc, 0x67bc }, /* 0x67bd */ { false, 0x67bd, 0x67bd }, /* 0x67be */ { false, 0x67be, 0x67be }, /* 0x67bf */ { false, 0x67bf, 0x67bf }, /* 0x67c0 */ { false, 0x67c0, 0x67c0 }, /* 0x67c1 */ { false, 0x67c1, 0x67c1 }, /* 0x67c2 */ { false, 0x67c2, 0x67c2 }, /* 0x67c3 */ { false, 0x67c3, 0x67c3 }, /* 0x67c4 */ { false, 0x67c4, 0x67c4 }, /* 0x67c5 */ { false, 0x67c5, 0x67c5 }, /* 0x67c6 */ { false, 0x67c6, 0x67c6 }, /* 0x67c7 */ { false, 0x67c7, 0x67c7 }, /* 0x67c8 */ { false, 0x67c8, 0x67c8 }, /* 0x67c9 */ { false, 0x67c9, 0x67c9 }, /* 0x67ca */ { false, 0x67ca, 0x67ca }, /* 0x67cb */ { false, 0x67cb, 0x67cb }, /* 0x67cc */ { false, 0x67cc, 0x67cc }, /* 0x67cd */ { false, 0x67cd, 0x67cd }, /* 0x67ce */ { false, 0x67ce, 0x67ce }, /* 0x67cf */ { false, 0x67cf, 0x67cf }, /* 0x67d0 */ { false, 0x67d0, 0x67d0 }, /* 0x67d1 */ { false, 0x67d1, 0x67d1 }, /* 0x67d2 */ { false, 0x67d2, 0x67d2 }, /* 0x67d3 */ { false, 0x67d3, 0x67d3 }, /* 0x67d4 */ { false, 0x67d4, 0x67d4 }, /* 0x67d5 */ { false, 0x67d5, 0x67d5 }, /* 0x67d6 */ { false, 0x67d6, 0x67d6 }, /* 0x67d7 */ { false, 0x67d7, 0x67d7 }, /* 0x67d8 */ { false, 0x67d8, 0x67d8 }, /* 0x67d9 */ { false, 0x67d9, 0x67d9 }, /* 0x67da */ { false, 0x67da, 0x67da }, /* 0x67db */ { false, 0x67db, 0x67db }, /* 0x67dc */ { false, 0x67dc, 0x67dc }, /* 0x67dd */ { false, 0x67dd, 0x67dd }, /* 0x67de */ { false, 0x67de, 0x67de }, /* 0x67df */ { false, 0x67df, 0x67df }, /* 0x67e0 */ { false, 0x67e0, 0x67e0 }, /* 0x67e1 */ { false, 0x67e1, 0x67e1 }, /* 0x67e2 */ { false, 0x67e2, 0x67e2 }, /* 0x67e3 */ { false, 0x67e3, 0x67e3 }, /* 0x67e4 */ { false, 0x67e4, 0x67e4 }, /* 0x67e5 */ { false, 0x67e5, 0x67e5 }, /* 0x67e6 */ { false, 0x67e6, 0x67e6 }, /* 0x67e7 */ { false, 0x67e7, 0x67e7 }, /* 0x67e8 */ { false, 0x67e8, 0x67e8 }, /* 0x67e9 */ { false, 0x67e9, 0x67e9 }, /* 0x67ea */ { false, 0x67ea, 0x67ea }, /* 0x67eb */ { false, 0x67eb, 0x67eb }, /* 0x67ec */ { false, 0x67ec, 0x67ec }, /* 0x67ed */ { false, 0x67ed, 0x67ed }, /* 0x67ee */ { false, 0x67ee, 0x67ee }, /* 0x67ef */ { false, 0x67ef, 0x67ef }, /* 0x67f0 */ { false, 0x67f0, 0x67f0 }, /* 0x67f1 */ { false, 0x67f1, 0x67f1 }, /* 0x67f2 */ { false, 0x67f2, 0x67f2 }, /* 0x67f3 */ { false, 0x67f3, 0x67f3 }, /* 0x67f4 */ { false, 0x67f4, 0x67f4 }, /* 0x67f5 */ { false, 0x67f5, 0x67f5 }, /* 0x67f6 */ { false, 0x67f6, 0x67f6 }, /* 0x67f7 */ { false, 0x67f7, 0x67f7 }, /* 0x67f8 */ { false, 0x67f8, 0x67f8 }, /* 0x67f9 */ { false, 0x67f9, 0x67f9 }, /* 0x67fa */ { false, 0x67fa, 0x67fa }, /* 0x67fb */ { false, 0x67fb, 0x67fb }, /* 0x67fc */ { false, 0x67fc, 0x67fc }, /* 0x67fd */ { false, 0x67fd, 0x67fd }, /* 0x67fe */ { false, 0x67fe, 0x67fe }, /* 0x67ff */ { false, 0x67ff, 0x67ff }, /* 0x6800 */ { false, 0x6800, 0x6800 }, /* 0x6801 */ { false, 0x6801, 0x6801 }, /* 0x6802 */ { false, 0x6802, 0x6802 }, /* 0x6803 */ { false, 0x6803, 0x6803 }, /* 0x6804 */ { false, 0x6804, 0x6804 }, /* 0x6805 */ { false, 0x6805, 0x6805 }, /* 0x6806 */ { false, 0x6806, 0x6806 }, /* 0x6807 */ { false, 0x6807, 0x6807 }, /* 0x6808 */ { false, 0x6808, 0x6808 }, /* 0x6809 */ { false, 0x6809, 0x6809 }, /* 0x680a */ { false, 0x680a, 0x680a }, /* 0x680b */ { false, 0x680b, 0x680b }, /* 0x680c */ { false, 0x680c, 0x680c }, /* 0x680d */ { false, 0x680d, 0x680d }, /* 0x680e */ { false, 0x680e, 0x680e }, /* 0x680f */ { false, 0x680f, 0x680f }, /* 0x6810 */ { false, 0x6810, 0x6810 }, /* 0x6811 */ { false, 0x6811, 0x6811 }, /* 0x6812 */ { false, 0x6812, 0x6812 }, /* 0x6813 */ { false, 0x6813, 0x6813 }, /* 0x6814 */ { false, 0x6814, 0x6814 }, /* 0x6815 */ { false, 0x6815, 0x6815 }, /* 0x6816 */ { false, 0x6816, 0x6816 }, /* 0x6817 */ { false, 0x6817, 0x6817 }, /* 0x6818 */ { false, 0x6818, 0x6818 }, /* 0x6819 */ { false, 0x6819, 0x6819 }, /* 0x681a */ { false, 0x681a, 0x681a }, /* 0x681b */ { false, 0x681b, 0x681b }, /* 0x681c */ { false, 0x681c, 0x681c }, /* 0x681d */ { false, 0x681d, 0x681d }, /* 0x681e */ { false, 0x681e, 0x681e }, /* 0x681f */ { false, 0x681f, 0x681f }, /* 0x6820 */ { false, 0x6820, 0x6820 }, /* 0x6821 */ { false, 0x6821, 0x6821 }, /* 0x6822 */ { false, 0x6822, 0x6822 }, /* 0x6823 */ { false, 0x6823, 0x6823 }, /* 0x6824 */ { false, 0x6824, 0x6824 }, /* 0x6825 */ { false, 0x6825, 0x6825 }, /* 0x6826 */ { false, 0x6826, 0x6826 }, /* 0x6827 */ { false, 0x6827, 0x6827 }, /* 0x6828 */ { false, 0x6828, 0x6828 }, /* 0x6829 */ { false, 0x6829, 0x6829 }, /* 0x682a */ { false, 0x682a, 0x682a }, /* 0x682b */ { false, 0x682b, 0x682b }, /* 0x682c */ { false, 0x682c, 0x682c }, /* 0x682d */ { false, 0x682d, 0x682d }, /* 0x682e */ { false, 0x682e, 0x682e }, /* 0x682f */ { false, 0x682f, 0x682f }, /* 0x6830 */ { false, 0x6830, 0x6830 }, /* 0x6831 */ { false, 0x6831, 0x6831 }, /* 0x6832 */ { false, 0x6832, 0x6832 }, /* 0x6833 */ { false, 0x6833, 0x6833 }, /* 0x6834 */ { false, 0x6834, 0x6834 }, /* 0x6835 */ { false, 0x6835, 0x6835 }, /* 0x6836 */ { false, 0x6836, 0x6836 }, /* 0x6837 */ { false, 0x6837, 0x6837 }, /* 0x6838 */ { false, 0x6838, 0x6838 }, /* 0x6839 */ { false, 0x6839, 0x6839 }, /* 0x683a */ { false, 0x683a, 0x683a }, /* 0x683b */ { false, 0x683b, 0x683b }, /* 0x683c */ { false, 0x683c, 0x683c }, /* 0x683d */ { false, 0x683d, 0x683d }, /* 0x683e */ { false, 0x683e, 0x683e }, /* 0x683f */ { false, 0x683f, 0x683f }, /* 0x6840 */ { false, 0x6840, 0x6840 }, /* 0x6841 */ { false, 0x6841, 0x6841 }, /* 0x6842 */ { false, 0x6842, 0x6842 }, /* 0x6843 */ { false, 0x6843, 0x6843 }, /* 0x6844 */ { false, 0x6844, 0x6844 }, /* 0x6845 */ { false, 0x6845, 0x6845 }, /* 0x6846 */ { false, 0x6846, 0x6846 }, /* 0x6847 */ { false, 0x6847, 0x6847 }, /* 0x6848 */ { false, 0x6848, 0x6848 }, /* 0x6849 */ { false, 0x6849, 0x6849 }, /* 0x684a */ { false, 0x684a, 0x684a }, /* 0x684b */ { false, 0x684b, 0x684b }, /* 0x684c */ { false, 0x684c, 0x684c }, /* 0x684d */ { false, 0x684d, 0x684d }, /* 0x684e */ { false, 0x684e, 0x684e }, /* 0x684f */ { false, 0x684f, 0x684f }, /* 0x6850 */ { false, 0x6850, 0x6850 }, /* 0x6851 */ { false, 0x6851, 0x6851 }, /* 0x6852 */ { false, 0x6852, 0x6852 }, /* 0x6853 */ { false, 0x6853, 0x6853 }, /* 0x6854 */ { false, 0x6854, 0x6854 }, /* 0x6855 */ { false, 0x6855, 0x6855 }, /* 0x6856 */ { false, 0x6856, 0x6856 }, /* 0x6857 */ { false, 0x6857, 0x6857 }, /* 0x6858 */ { false, 0x6858, 0x6858 }, /* 0x6859 */ { false, 0x6859, 0x6859 }, /* 0x685a */ { false, 0x685a, 0x685a }, /* 0x685b */ { false, 0x685b, 0x685b }, /* 0x685c */ { false, 0x685c, 0x685c }, /* 0x685d */ { false, 0x685d, 0x685d }, /* 0x685e */ { false, 0x685e, 0x685e }, /* 0x685f */ { false, 0x685f, 0x685f }, /* 0x6860 */ { false, 0x6860, 0x6860 }, /* 0x6861 */ { false, 0x6861, 0x6861 }, /* 0x6862 */ { false, 0x6862, 0x6862 }, /* 0x6863 */ { false, 0x6863, 0x6863 }, /* 0x6864 */ { false, 0x6864, 0x6864 }, /* 0x6865 */ { false, 0x6865, 0x6865 }, /* 0x6866 */ { false, 0x6866, 0x6866 }, /* 0x6867 */ { false, 0x6867, 0x6867 }, /* 0x6868 */ { false, 0x6868, 0x6868 }, /* 0x6869 */ { false, 0x6869, 0x6869 }, /* 0x686a */ { false, 0x686a, 0x686a }, /* 0x686b */ { false, 0x686b, 0x686b }, /* 0x686c */ { false, 0x686c, 0x686c }, /* 0x686d */ { false, 0x686d, 0x686d }, /* 0x686e */ { false, 0x686e, 0x686e }, /* 0x686f */ { false, 0x686f, 0x686f }, /* 0x6870 */ { false, 0x6870, 0x6870 }, /* 0x6871 */ { false, 0x6871, 0x6871 }, /* 0x6872 */ { false, 0x6872, 0x6872 }, /* 0x6873 */ { false, 0x6873, 0x6873 }, /* 0x6874 */ { false, 0x6874, 0x6874 }, /* 0x6875 */ { false, 0x6875, 0x6875 }, /* 0x6876 */ { false, 0x6876, 0x6876 }, /* 0x6877 */ { false, 0x6877, 0x6877 }, /* 0x6878 */ { false, 0x6878, 0x6878 }, /* 0x6879 */ { false, 0x6879, 0x6879 }, /* 0x687a */ { false, 0x687a, 0x687a }, /* 0x687b */ { false, 0x687b, 0x687b }, /* 0x687c */ { false, 0x687c, 0x687c }, /* 0x687d */ { false, 0x687d, 0x687d }, /* 0x687e */ { false, 0x687e, 0x687e }, /* 0x687f */ { false, 0x687f, 0x687f }, /* 0x6880 */ { false, 0x6880, 0x6880 }, /* 0x6881 */ { false, 0x6881, 0x6881 }, /* 0x6882 */ { false, 0x6882, 0x6882 }, /* 0x6883 */ { false, 0x6883, 0x6883 }, /* 0x6884 */ { false, 0x6884, 0x6884 }, /* 0x6885 */ { false, 0x6885, 0x6885 }, /* 0x6886 */ { false, 0x6886, 0x6886 }, /* 0x6887 */ { false, 0x6887, 0x6887 }, /* 0x6888 */ { false, 0x6888, 0x6888 }, /* 0x6889 */ { false, 0x6889, 0x6889 }, /* 0x688a */ { false, 0x688a, 0x688a }, /* 0x688b */ { false, 0x688b, 0x688b }, /* 0x688c */ { false, 0x688c, 0x688c }, /* 0x688d */ { false, 0x688d, 0x688d }, /* 0x688e */ { false, 0x688e, 0x688e }, /* 0x688f */ { false, 0x688f, 0x688f }, /* 0x6890 */ { false, 0x6890, 0x6890 }, /* 0x6891 */ { false, 0x6891, 0x6891 }, /* 0x6892 */ { false, 0x6892, 0x6892 }, /* 0x6893 */ { false, 0x6893, 0x6893 }, /* 0x6894 */ { false, 0x6894, 0x6894 }, /* 0x6895 */ { false, 0x6895, 0x6895 }, /* 0x6896 */ { false, 0x6896, 0x6896 }, /* 0x6897 */ { false, 0x6897, 0x6897 }, /* 0x6898 */ { false, 0x6898, 0x6898 }, /* 0x6899 */ { false, 0x6899, 0x6899 }, /* 0x689a */ { false, 0x689a, 0x689a }, /* 0x689b */ { false, 0x689b, 0x689b }, /* 0x689c */ { false, 0x689c, 0x689c }, /* 0x689d */ { false, 0x689d, 0x689d }, /* 0x689e */ { false, 0x689e, 0x689e }, /* 0x689f */ { false, 0x689f, 0x689f }, /* 0x68a0 */ { false, 0x68a0, 0x68a0 }, /* 0x68a1 */ { false, 0x68a1, 0x68a1 }, /* 0x68a2 */ { false, 0x68a2, 0x68a2 }, /* 0x68a3 */ { false, 0x68a3, 0x68a3 }, /* 0x68a4 */ { false, 0x68a4, 0x68a4 }, /* 0x68a5 */ { false, 0x68a5, 0x68a5 }, /* 0x68a6 */ { false, 0x68a6, 0x68a6 }, /* 0x68a7 */ { false, 0x68a7, 0x68a7 }, /* 0x68a8 */ { false, 0x68a8, 0x68a8 }, /* 0x68a9 */ { false, 0x68a9, 0x68a9 }, /* 0x68aa */ { false, 0x68aa, 0x68aa }, /* 0x68ab */ { false, 0x68ab, 0x68ab }, /* 0x68ac */ { false, 0x68ac, 0x68ac }, /* 0x68ad */ { false, 0x68ad, 0x68ad }, /* 0x68ae */ { false, 0x68ae, 0x68ae }, /* 0x68af */ { false, 0x68af, 0x68af }, /* 0x68b0 */ { false, 0x68b0, 0x68b0 }, /* 0x68b1 */ { false, 0x68b1, 0x68b1 }, /* 0x68b2 */ { false, 0x68b2, 0x68b2 }, /* 0x68b3 */ { false, 0x68b3, 0x68b3 }, /* 0x68b4 */ { false, 0x68b4, 0x68b4 }, /* 0x68b5 */ { false, 0x68b5, 0x68b5 }, /* 0x68b6 */ { false, 0x68b6, 0x68b6 }, /* 0x68b7 */ { false, 0x68b7, 0x68b7 }, /* 0x68b8 */ { false, 0x68b8, 0x68b8 }, /* 0x68b9 */ { false, 0x68b9, 0x68b9 }, /* 0x68ba */ { false, 0x68ba, 0x68ba }, /* 0x68bb */ { false, 0x68bb, 0x68bb }, /* 0x68bc */ { false, 0x68bc, 0x68bc }, /* 0x68bd */ { false, 0x68bd, 0x68bd }, /* 0x68be */ { false, 0x68be, 0x68be }, /* 0x68bf */ { false, 0x68bf, 0x68bf }, /* 0x68c0 */ { false, 0x68c0, 0x68c0 }, /* 0x68c1 */ { false, 0x68c1, 0x68c1 }, /* 0x68c2 */ { false, 0x68c2, 0x68c2 }, /* 0x68c3 */ { false, 0x68c3, 0x68c3 }, /* 0x68c4 */ { false, 0x68c4, 0x68c4 }, /* 0x68c5 */ { false, 0x68c5, 0x68c5 }, /* 0x68c6 */ { false, 0x68c6, 0x68c6 }, /* 0x68c7 */ { false, 0x68c7, 0x68c7 }, /* 0x68c8 */ { false, 0x68c8, 0x68c8 }, /* 0x68c9 */ { false, 0x68c9, 0x68c9 }, /* 0x68ca */ { false, 0x68ca, 0x68ca }, /* 0x68cb */ { false, 0x68cb, 0x68cb }, /* 0x68cc */ { false, 0x68cc, 0x68cc }, /* 0x68cd */ { false, 0x68cd, 0x68cd }, /* 0x68ce */ { false, 0x68ce, 0x68ce }, /* 0x68cf */ { false, 0x68cf, 0x68cf }, /* 0x68d0 */ { false, 0x68d0, 0x68d0 }, /* 0x68d1 */ { false, 0x68d1, 0x68d1 }, /* 0x68d2 */ { false, 0x68d2, 0x68d2 }, /* 0x68d3 */ { false, 0x68d3, 0x68d3 }, /* 0x68d4 */ { false, 0x68d4, 0x68d4 }, /* 0x68d5 */ { false, 0x68d5, 0x68d5 }, /* 0x68d6 */ { false, 0x68d6, 0x68d6 }, /* 0x68d7 */ { false, 0x68d7, 0x68d7 }, /* 0x68d8 */ { false, 0x68d8, 0x68d8 }, /* 0x68d9 */ { false, 0x68d9, 0x68d9 }, /* 0x68da */ { false, 0x68da, 0x68da }, /* 0x68db */ { false, 0x68db, 0x68db }, /* 0x68dc */ { false, 0x68dc, 0x68dc }, /* 0x68dd */ { false, 0x68dd, 0x68dd }, /* 0x68de */ { false, 0x68de, 0x68de }, /* 0x68df */ { false, 0x68df, 0x68df }, /* 0x68e0 */ { false, 0x68e0, 0x68e0 }, /* 0x68e1 */ { false, 0x68e1, 0x68e1 }, /* 0x68e2 */ { false, 0x68e2, 0x68e2 }, /* 0x68e3 */ { false, 0x68e3, 0x68e3 }, /* 0x68e4 */ { false, 0x68e4, 0x68e4 }, /* 0x68e5 */ { false, 0x68e5, 0x68e5 }, /* 0x68e6 */ { false, 0x68e6, 0x68e6 }, /* 0x68e7 */ { false, 0x68e7, 0x68e7 }, /* 0x68e8 */ { false, 0x68e8, 0x68e8 }, /* 0x68e9 */ { false, 0x68e9, 0x68e9 }, /* 0x68ea */ { false, 0x68ea, 0x68ea }, /* 0x68eb */ { false, 0x68eb, 0x68eb }, /* 0x68ec */ { false, 0x68ec, 0x68ec }, /* 0x68ed */ { false, 0x68ed, 0x68ed }, /* 0x68ee */ { false, 0x68ee, 0x68ee }, /* 0x68ef */ { false, 0x68ef, 0x68ef }, /* 0x68f0 */ { false, 0x68f0, 0x68f0 }, /* 0x68f1 */ { false, 0x68f1, 0x68f1 }, /* 0x68f2 */ { false, 0x68f2, 0x68f2 }, /* 0x68f3 */ { false, 0x68f3, 0x68f3 }, /* 0x68f4 */ { false, 0x68f4, 0x68f4 }, /* 0x68f5 */ { false, 0x68f5, 0x68f5 }, /* 0x68f6 */ { false, 0x68f6, 0x68f6 }, /* 0x68f7 */ { false, 0x68f7, 0x68f7 }, /* 0x68f8 */ { false, 0x68f8, 0x68f8 }, /* 0x68f9 */ { false, 0x68f9, 0x68f9 }, /* 0x68fa */ { false, 0x68fa, 0x68fa }, /* 0x68fb */ { false, 0x68fb, 0x68fb }, /* 0x68fc */ { false, 0x68fc, 0x68fc }, /* 0x68fd */ { false, 0x68fd, 0x68fd }, /* 0x68fe */ { false, 0x68fe, 0x68fe }, /* 0x68ff */ { false, 0x68ff, 0x68ff }, /* 0x6900 */ { false, 0x6900, 0x6900 }, /* 0x6901 */ { false, 0x6901, 0x6901 }, /* 0x6902 */ { false, 0x6902, 0x6902 }, /* 0x6903 */ { false, 0x6903, 0x6903 }, /* 0x6904 */ { false, 0x6904, 0x6904 }, /* 0x6905 */ { false, 0x6905, 0x6905 }, /* 0x6906 */ { false, 0x6906, 0x6906 }, /* 0x6907 */ { false, 0x6907, 0x6907 }, /* 0x6908 */ { false, 0x6908, 0x6908 }, /* 0x6909 */ { false, 0x6909, 0x6909 }, /* 0x690a */ { false, 0x690a, 0x690a }, /* 0x690b */ { false, 0x690b, 0x690b }, /* 0x690c */ { false, 0x690c, 0x690c }, /* 0x690d */ { false, 0x690d, 0x690d }, /* 0x690e */ { false, 0x690e, 0x690e }, /* 0x690f */ { false, 0x690f, 0x690f }, /* 0x6910 */ { false, 0x6910, 0x6910 }, /* 0x6911 */ { false, 0x6911, 0x6911 }, /* 0x6912 */ { false, 0x6912, 0x6912 }, /* 0x6913 */ { false, 0x6913, 0x6913 }, /* 0x6914 */ { false, 0x6914, 0x6914 }, /* 0x6915 */ { false, 0x6915, 0x6915 }, /* 0x6916 */ { false, 0x6916, 0x6916 }, /* 0x6917 */ { false, 0x6917, 0x6917 }, /* 0x6918 */ { false, 0x6918, 0x6918 }, /* 0x6919 */ { false, 0x6919, 0x6919 }, /* 0x691a */ { false, 0x691a, 0x691a }, /* 0x691b */ { false, 0x691b, 0x691b }, /* 0x691c */ { false, 0x691c, 0x691c }, /* 0x691d */ { false, 0x691d, 0x691d }, /* 0x691e */ { false, 0x691e, 0x691e }, /* 0x691f */ { false, 0x691f, 0x691f }, /* 0x6920 */ { false, 0x6920, 0x6920 }, /* 0x6921 */ { false, 0x6921, 0x6921 }, /* 0x6922 */ { false, 0x6922, 0x6922 }, /* 0x6923 */ { false, 0x6923, 0x6923 }, /* 0x6924 */ { false, 0x6924, 0x6924 }, /* 0x6925 */ { false, 0x6925, 0x6925 }, /* 0x6926 */ { false, 0x6926, 0x6926 }, /* 0x6927 */ { false, 0x6927, 0x6927 }, /* 0x6928 */ { false, 0x6928, 0x6928 }, /* 0x6929 */ { false, 0x6929, 0x6929 }, /* 0x692a */ { false, 0x692a, 0x692a }, /* 0x692b */ { false, 0x692b, 0x692b }, /* 0x692c */ { false, 0x692c, 0x692c }, /* 0x692d */ { false, 0x692d, 0x692d }, /* 0x692e */ { false, 0x692e, 0x692e }, /* 0x692f */ { false, 0x692f, 0x692f }, /* 0x6930 */ { false, 0x6930, 0x6930 }, /* 0x6931 */ { false, 0x6931, 0x6931 }, /* 0x6932 */ { false, 0x6932, 0x6932 }, /* 0x6933 */ { false, 0x6933, 0x6933 }, /* 0x6934 */ { false, 0x6934, 0x6934 }, /* 0x6935 */ { false, 0x6935, 0x6935 }, /* 0x6936 */ { false, 0x6936, 0x6936 }, /* 0x6937 */ { false, 0x6937, 0x6937 }, /* 0x6938 */ { false, 0x6938, 0x6938 }, /* 0x6939 */ { false, 0x6939, 0x6939 }, /* 0x693a */ { false, 0x693a, 0x693a }, /* 0x693b */ { false, 0x693b, 0x693b }, /* 0x693c */ { false, 0x693c, 0x693c }, /* 0x693d */ { false, 0x693d, 0x693d }, /* 0x693e */ { false, 0x693e, 0x693e }, /* 0x693f */ { false, 0x693f, 0x693f }, /* 0x6940 */ { false, 0x6940, 0x6940 }, /* 0x6941 */ { false, 0x6941, 0x6941 }, /* 0x6942 */ { false, 0x6942, 0x6942 }, /* 0x6943 */ { false, 0x6943, 0x6943 }, /* 0x6944 */ { false, 0x6944, 0x6944 }, /* 0x6945 */ { false, 0x6945, 0x6945 }, /* 0x6946 */ { false, 0x6946, 0x6946 }, /* 0x6947 */ { false, 0x6947, 0x6947 }, /* 0x6948 */ { false, 0x6948, 0x6948 }, /* 0x6949 */ { false, 0x6949, 0x6949 }, /* 0x694a */ { false, 0x694a, 0x694a }, /* 0x694b */ { false, 0x694b, 0x694b }, /* 0x694c */ { false, 0x694c, 0x694c }, /* 0x694d */ { false, 0x694d, 0x694d }, /* 0x694e */ { false, 0x694e, 0x694e }, /* 0x694f */ { false, 0x694f, 0x694f }, /* 0x6950 */ { false, 0x6950, 0x6950 }, /* 0x6951 */ { false, 0x6951, 0x6951 }, /* 0x6952 */ { false, 0x6952, 0x6952 }, /* 0x6953 */ { false, 0x6953, 0x6953 }, /* 0x6954 */ { false, 0x6954, 0x6954 }, /* 0x6955 */ { false, 0x6955, 0x6955 }, /* 0x6956 */ { false, 0x6956, 0x6956 }, /* 0x6957 */ { false, 0x6957, 0x6957 }, /* 0x6958 */ { false, 0x6958, 0x6958 }, /* 0x6959 */ { false, 0x6959, 0x6959 }, /* 0x695a */ { false, 0x695a, 0x695a }, /* 0x695b */ { false, 0x695b, 0x695b }, /* 0x695c */ { false, 0x695c, 0x695c }, /* 0x695d */ { false, 0x695d, 0x695d }, /* 0x695e */ { false, 0x695e, 0x695e }, /* 0x695f */ { false, 0x695f, 0x695f }, /* 0x6960 */ { false, 0x6960, 0x6960 }, /* 0x6961 */ { false, 0x6961, 0x6961 }, /* 0x6962 */ { false, 0x6962, 0x6962 }, /* 0x6963 */ { false, 0x6963, 0x6963 }, /* 0x6964 */ { false, 0x6964, 0x6964 }, /* 0x6965 */ { false, 0x6965, 0x6965 }, /* 0x6966 */ { false, 0x6966, 0x6966 }, /* 0x6967 */ { false, 0x6967, 0x6967 }, /* 0x6968 */ { false, 0x6968, 0x6968 }, /* 0x6969 */ { false, 0x6969, 0x6969 }, /* 0x696a */ { false, 0x696a, 0x696a }, /* 0x696b */ { false, 0x696b, 0x696b }, /* 0x696c */ { false, 0x696c, 0x696c }, /* 0x696d */ { false, 0x696d, 0x696d }, /* 0x696e */ { false, 0x696e, 0x696e }, /* 0x696f */ { false, 0x696f, 0x696f }, /* 0x6970 */ { false, 0x6970, 0x6970 }, /* 0x6971 */ { false, 0x6971, 0x6971 }, /* 0x6972 */ { false, 0x6972, 0x6972 }, /* 0x6973 */ { false, 0x6973, 0x6973 }, /* 0x6974 */ { false, 0x6974, 0x6974 }, /* 0x6975 */ { false, 0x6975, 0x6975 }, /* 0x6976 */ { false, 0x6976, 0x6976 }, /* 0x6977 */ { false, 0x6977, 0x6977 }, /* 0x6978 */ { false, 0x6978, 0x6978 }, /* 0x6979 */ { false, 0x6979, 0x6979 }, /* 0x697a */ { false, 0x697a, 0x697a }, /* 0x697b */ { false, 0x697b, 0x697b }, /* 0x697c */ { false, 0x697c, 0x697c }, /* 0x697d */ { false, 0x697d, 0x697d }, /* 0x697e */ { false, 0x697e, 0x697e }, /* 0x697f */ { false, 0x697f, 0x697f }, /* 0x6980 */ { false, 0x6980, 0x6980 }, /* 0x6981 */ { false, 0x6981, 0x6981 }, /* 0x6982 */ { false, 0x6982, 0x6982 }, /* 0x6983 */ { false, 0x6983, 0x6983 }, /* 0x6984 */ { false, 0x6984, 0x6984 }, /* 0x6985 */ { false, 0x6985, 0x6985 }, /* 0x6986 */ { false, 0x6986, 0x6986 }, /* 0x6987 */ { false, 0x6987, 0x6987 }, /* 0x6988 */ { false, 0x6988, 0x6988 }, /* 0x6989 */ { false, 0x6989, 0x6989 }, /* 0x698a */ { false, 0x698a, 0x698a }, /* 0x698b */ { false, 0x698b, 0x698b }, /* 0x698c */ { false, 0x698c, 0x698c }, /* 0x698d */ { false, 0x698d, 0x698d }, /* 0x698e */ { false, 0x698e, 0x698e }, /* 0x698f */ { false, 0x698f, 0x698f }, /* 0x6990 */ { false, 0x6990, 0x6990 }, /* 0x6991 */ { false, 0x6991, 0x6991 }, /* 0x6992 */ { false, 0x6992, 0x6992 }, /* 0x6993 */ { false, 0x6993, 0x6993 }, /* 0x6994 */ { false, 0x6994, 0x6994 }, /* 0x6995 */ { false, 0x6995, 0x6995 }, /* 0x6996 */ { false, 0x6996, 0x6996 }, /* 0x6997 */ { false, 0x6997, 0x6997 }, /* 0x6998 */ { false, 0x6998, 0x6998 }, /* 0x6999 */ { false, 0x6999, 0x6999 }, /* 0x699a */ { false, 0x699a, 0x699a }, /* 0x699b */ { false, 0x699b, 0x699b }, /* 0x699c */ { false, 0x699c, 0x699c }, /* 0x699d */ { false, 0x699d, 0x699d }, /* 0x699e */ { false, 0x699e, 0x699e }, /* 0x699f */ { false, 0x699f, 0x699f }, /* 0x69a0 */ { false, 0x69a0, 0x69a0 }, /* 0x69a1 */ { false, 0x69a1, 0x69a1 }, /* 0x69a2 */ { false, 0x69a2, 0x69a2 }, /* 0x69a3 */ { false, 0x69a3, 0x69a3 }, /* 0x69a4 */ { false, 0x69a4, 0x69a4 }, /* 0x69a5 */ { false, 0x69a5, 0x69a5 }, /* 0x69a6 */ { false, 0x69a6, 0x69a6 }, /* 0x69a7 */ { false, 0x69a7, 0x69a7 }, /* 0x69a8 */ { false, 0x69a8, 0x69a8 }, /* 0x69a9 */ { false, 0x69a9, 0x69a9 }, /* 0x69aa */ { false, 0x69aa, 0x69aa }, /* 0x69ab */ { false, 0x69ab, 0x69ab }, /* 0x69ac */ { false, 0x69ac, 0x69ac }, /* 0x69ad */ { false, 0x69ad, 0x69ad }, /* 0x69ae */ { false, 0x69ae, 0x69ae }, /* 0x69af */ { false, 0x69af, 0x69af }, /* 0x69b0 */ { false, 0x69b0, 0x69b0 }, /* 0x69b1 */ { false, 0x69b1, 0x69b1 }, /* 0x69b2 */ { false, 0x69b2, 0x69b2 }, /* 0x69b3 */ { false, 0x69b3, 0x69b3 }, /* 0x69b4 */ { false, 0x69b4, 0x69b4 }, /* 0x69b5 */ { false, 0x69b5, 0x69b5 }, /* 0x69b6 */ { false, 0x69b6, 0x69b6 }, /* 0x69b7 */ { false, 0x69b7, 0x69b7 }, /* 0x69b8 */ { false, 0x69b8, 0x69b8 }, /* 0x69b9 */ { false, 0x69b9, 0x69b9 }, /* 0x69ba */ { false, 0x69ba, 0x69ba }, /* 0x69bb */ { false, 0x69bb, 0x69bb }, /* 0x69bc */ { false, 0x69bc, 0x69bc }, /* 0x69bd */ { false, 0x69bd, 0x69bd }, /* 0x69be */ { false, 0x69be, 0x69be }, /* 0x69bf */ { false, 0x69bf, 0x69bf }, /* 0x69c0 */ { false, 0x69c0, 0x69c0 }, /* 0x69c1 */ { false, 0x69c1, 0x69c1 }, /* 0x69c2 */ { false, 0x69c2, 0x69c2 }, /* 0x69c3 */ { false, 0x69c3, 0x69c3 }, /* 0x69c4 */ { false, 0x69c4, 0x69c4 }, /* 0x69c5 */ { false, 0x69c5, 0x69c5 }, /* 0x69c6 */ { false, 0x69c6, 0x69c6 }, /* 0x69c7 */ { false, 0x69c7, 0x69c7 }, /* 0x69c8 */ { false, 0x69c8, 0x69c8 }, /* 0x69c9 */ { false, 0x69c9, 0x69c9 }, /* 0x69ca */ { false, 0x69ca, 0x69ca }, /* 0x69cb */ { false, 0x69cb, 0x69cb }, /* 0x69cc */ { false, 0x69cc, 0x69cc }, /* 0x69cd */ { false, 0x69cd, 0x69cd }, /* 0x69ce */ { false, 0x69ce, 0x69ce }, /* 0x69cf */ { false, 0x69cf, 0x69cf }, /* 0x69d0 */ { false, 0x69d0, 0x69d0 }, /* 0x69d1 */ { false, 0x69d1, 0x69d1 }, /* 0x69d2 */ { false, 0x69d2, 0x69d2 }, /* 0x69d3 */ { false, 0x69d3, 0x69d3 }, /* 0x69d4 */ { false, 0x69d4, 0x69d4 }, /* 0x69d5 */ { false, 0x69d5, 0x69d5 }, /* 0x69d6 */ { false, 0x69d6, 0x69d6 }, /* 0x69d7 */ { false, 0x69d7, 0x69d7 }, /* 0x69d8 */ { false, 0x69d8, 0x69d8 }, /* 0x69d9 */ { false, 0x69d9, 0x69d9 }, /* 0x69da */ { false, 0x69da, 0x69da }, /* 0x69db */ { false, 0x69db, 0x69db }, /* 0x69dc */ { false, 0x69dc, 0x69dc }, /* 0x69dd */ { false, 0x69dd, 0x69dd }, /* 0x69de */ { false, 0x69de, 0x69de }, /* 0x69df */ { false, 0x69df, 0x69df }, /* 0x69e0 */ { false, 0x69e0, 0x69e0 }, /* 0x69e1 */ { false, 0x69e1, 0x69e1 }, /* 0x69e2 */ { false, 0x69e2, 0x69e2 }, /* 0x69e3 */ { false, 0x69e3, 0x69e3 }, /* 0x69e4 */ { false, 0x69e4, 0x69e4 }, /* 0x69e5 */ { false, 0x69e5, 0x69e5 }, /* 0x69e6 */ { false, 0x69e6, 0x69e6 }, /* 0x69e7 */ { false, 0x69e7, 0x69e7 }, /* 0x69e8 */ { false, 0x69e8, 0x69e8 }, /* 0x69e9 */ { false, 0x69e9, 0x69e9 }, /* 0x69ea */ { false, 0x69ea, 0x69ea }, /* 0x69eb */ { false, 0x69eb, 0x69eb }, /* 0x69ec */ { false, 0x69ec, 0x69ec }, /* 0x69ed */ { false, 0x69ed, 0x69ed }, /* 0x69ee */ { false, 0x69ee, 0x69ee }, /* 0x69ef */ { false, 0x69ef, 0x69ef }, /* 0x69f0 */ { false, 0x69f0, 0x69f0 }, /* 0x69f1 */ { false, 0x69f1, 0x69f1 }, /* 0x69f2 */ { false, 0x69f2, 0x69f2 }, /* 0x69f3 */ { false, 0x69f3, 0x69f3 }, /* 0x69f4 */ { false, 0x69f4, 0x69f4 }, /* 0x69f5 */ { false, 0x69f5, 0x69f5 }, /* 0x69f6 */ { false, 0x69f6, 0x69f6 }, /* 0x69f7 */ { false, 0x69f7, 0x69f7 }, /* 0x69f8 */ { false, 0x69f8, 0x69f8 }, /* 0x69f9 */ { false, 0x69f9, 0x69f9 }, /* 0x69fa */ { false, 0x69fa, 0x69fa }, /* 0x69fb */ { false, 0x69fb, 0x69fb }, /* 0x69fc */ { false, 0x69fc, 0x69fc }, /* 0x69fd */ { false, 0x69fd, 0x69fd }, /* 0x69fe */ { false, 0x69fe, 0x69fe }, /* 0x69ff */ { false, 0x69ff, 0x69ff }, /* 0x6a00 */ { false, 0x6a00, 0x6a00 }, /* 0x6a01 */ { false, 0x6a01, 0x6a01 }, /* 0x6a02 */ { false, 0x6a02, 0x6a02 }, /* 0x6a03 */ { false, 0x6a03, 0x6a03 }, /* 0x6a04 */ { false, 0x6a04, 0x6a04 }, /* 0x6a05 */ { false, 0x6a05, 0x6a05 }, /* 0x6a06 */ { false, 0x6a06, 0x6a06 }, /* 0x6a07 */ { false, 0x6a07, 0x6a07 }, /* 0x6a08 */ { false, 0x6a08, 0x6a08 }, /* 0x6a09 */ { false, 0x6a09, 0x6a09 }, /* 0x6a0a */ { false, 0x6a0a, 0x6a0a }, /* 0x6a0b */ { false, 0x6a0b, 0x6a0b }, /* 0x6a0c */ { false, 0x6a0c, 0x6a0c }, /* 0x6a0d */ { false, 0x6a0d, 0x6a0d }, /* 0x6a0e */ { false, 0x6a0e, 0x6a0e }, /* 0x6a0f */ { false, 0x6a0f, 0x6a0f }, /* 0x6a10 */ { false, 0x6a10, 0x6a10 }, /* 0x6a11 */ { false, 0x6a11, 0x6a11 }, /* 0x6a12 */ { false, 0x6a12, 0x6a12 }, /* 0x6a13 */ { false, 0x6a13, 0x6a13 }, /* 0x6a14 */ { false, 0x6a14, 0x6a14 }, /* 0x6a15 */ { false, 0x6a15, 0x6a15 }, /* 0x6a16 */ { false, 0x6a16, 0x6a16 }, /* 0x6a17 */ { false, 0x6a17, 0x6a17 }, /* 0x6a18 */ { false, 0x6a18, 0x6a18 }, /* 0x6a19 */ { false, 0x6a19, 0x6a19 }, /* 0x6a1a */ { false, 0x6a1a, 0x6a1a }, /* 0x6a1b */ { false, 0x6a1b, 0x6a1b }, /* 0x6a1c */ { false, 0x6a1c, 0x6a1c }, /* 0x6a1d */ { false, 0x6a1d, 0x6a1d }, /* 0x6a1e */ { false, 0x6a1e, 0x6a1e }, /* 0x6a1f */ { false, 0x6a1f, 0x6a1f }, /* 0x6a20 */ { false, 0x6a20, 0x6a20 }, /* 0x6a21 */ { false, 0x6a21, 0x6a21 }, /* 0x6a22 */ { false, 0x6a22, 0x6a22 }, /* 0x6a23 */ { false, 0x6a23, 0x6a23 }, /* 0x6a24 */ { false, 0x6a24, 0x6a24 }, /* 0x6a25 */ { false, 0x6a25, 0x6a25 }, /* 0x6a26 */ { false, 0x6a26, 0x6a26 }, /* 0x6a27 */ { false, 0x6a27, 0x6a27 }, /* 0x6a28 */ { false, 0x6a28, 0x6a28 }, /* 0x6a29 */ { false, 0x6a29, 0x6a29 }, /* 0x6a2a */ { false, 0x6a2a, 0x6a2a }, /* 0x6a2b */ { false, 0x6a2b, 0x6a2b }, /* 0x6a2c */ { false, 0x6a2c, 0x6a2c }, /* 0x6a2d */ { false, 0x6a2d, 0x6a2d }, /* 0x6a2e */ { false, 0x6a2e, 0x6a2e }, /* 0x6a2f */ { false, 0x6a2f, 0x6a2f }, /* 0x6a30 */ { false, 0x6a30, 0x6a30 }, /* 0x6a31 */ { false, 0x6a31, 0x6a31 }, /* 0x6a32 */ { false, 0x6a32, 0x6a32 }, /* 0x6a33 */ { false, 0x6a33, 0x6a33 }, /* 0x6a34 */ { false, 0x6a34, 0x6a34 }, /* 0x6a35 */ { false, 0x6a35, 0x6a35 }, /* 0x6a36 */ { false, 0x6a36, 0x6a36 }, /* 0x6a37 */ { false, 0x6a37, 0x6a37 }, /* 0x6a38 */ { false, 0x6a38, 0x6a38 }, /* 0x6a39 */ { false, 0x6a39, 0x6a39 }, /* 0x6a3a */ { false, 0x6a3a, 0x6a3a }, /* 0x6a3b */ { false, 0x6a3b, 0x6a3b }, /* 0x6a3c */ { false, 0x6a3c, 0x6a3c }, /* 0x6a3d */ { false, 0x6a3d, 0x6a3d }, /* 0x6a3e */ { false, 0x6a3e, 0x6a3e }, /* 0x6a3f */ { false, 0x6a3f, 0x6a3f }, /* 0x6a40 */ { false, 0x6a40, 0x6a40 }, /* 0x6a41 */ { false, 0x6a41, 0x6a41 }, /* 0x6a42 */ { false, 0x6a42, 0x6a42 }, /* 0x6a43 */ { false, 0x6a43, 0x6a43 }, /* 0x6a44 */ { false, 0x6a44, 0x6a44 }, /* 0x6a45 */ { false, 0x6a45, 0x6a45 }, /* 0x6a46 */ { false, 0x6a46, 0x6a46 }, /* 0x6a47 */ { false, 0x6a47, 0x6a47 }, /* 0x6a48 */ { false, 0x6a48, 0x6a48 }, /* 0x6a49 */ { false, 0x6a49, 0x6a49 }, /* 0x6a4a */ { false, 0x6a4a, 0x6a4a }, /* 0x6a4b */ { false, 0x6a4b, 0x6a4b }, /* 0x6a4c */ { false, 0x6a4c, 0x6a4c }, /* 0x6a4d */ { false, 0x6a4d, 0x6a4d }, /* 0x6a4e */ { false, 0x6a4e, 0x6a4e }, /* 0x6a4f */ { false, 0x6a4f, 0x6a4f }, /* 0x6a50 */ { false, 0x6a50, 0x6a50 }, /* 0x6a51 */ { false, 0x6a51, 0x6a51 }, /* 0x6a52 */ { false, 0x6a52, 0x6a52 }, /* 0x6a53 */ { false, 0x6a53, 0x6a53 }, /* 0x6a54 */ { false, 0x6a54, 0x6a54 }, /* 0x6a55 */ { false, 0x6a55, 0x6a55 }, /* 0x6a56 */ { false, 0x6a56, 0x6a56 }, /* 0x6a57 */ { false, 0x6a57, 0x6a57 }, /* 0x6a58 */ { false, 0x6a58, 0x6a58 }, /* 0x6a59 */ { false, 0x6a59, 0x6a59 }, /* 0x6a5a */ { false, 0x6a5a, 0x6a5a }, /* 0x6a5b */ { false, 0x6a5b, 0x6a5b }, /* 0x6a5c */ { false, 0x6a5c, 0x6a5c }, /* 0x6a5d */ { false, 0x6a5d, 0x6a5d }, /* 0x6a5e */ { false, 0x6a5e, 0x6a5e }, /* 0x6a5f */ { false, 0x6a5f, 0x6a5f }, /* 0x6a60 */ { false, 0x6a60, 0x6a60 }, /* 0x6a61 */ { false, 0x6a61, 0x6a61 }, /* 0x6a62 */ { false, 0x6a62, 0x6a62 }, /* 0x6a63 */ { false, 0x6a63, 0x6a63 }, /* 0x6a64 */ { false, 0x6a64, 0x6a64 }, /* 0x6a65 */ { false, 0x6a65, 0x6a65 }, /* 0x6a66 */ { false, 0x6a66, 0x6a66 }, /* 0x6a67 */ { false, 0x6a67, 0x6a67 }, /* 0x6a68 */ { false, 0x6a68, 0x6a68 }, /* 0x6a69 */ { false, 0x6a69, 0x6a69 }, /* 0x6a6a */ { false, 0x6a6a, 0x6a6a }, /* 0x6a6b */ { false, 0x6a6b, 0x6a6b }, /* 0x6a6c */ { false, 0x6a6c, 0x6a6c }, /* 0x6a6d */ { false, 0x6a6d, 0x6a6d }, /* 0x6a6e */ { false, 0x6a6e, 0x6a6e }, /* 0x6a6f */ { false, 0x6a6f, 0x6a6f }, /* 0x6a70 */ { false, 0x6a70, 0x6a70 }, /* 0x6a71 */ { false, 0x6a71, 0x6a71 }, /* 0x6a72 */ { false, 0x6a72, 0x6a72 }, /* 0x6a73 */ { false, 0x6a73, 0x6a73 }, /* 0x6a74 */ { false, 0x6a74, 0x6a74 }, /* 0x6a75 */ { false, 0x6a75, 0x6a75 }, /* 0x6a76 */ { false, 0x6a76, 0x6a76 }, /* 0x6a77 */ { false, 0x6a77, 0x6a77 }, /* 0x6a78 */ { false, 0x6a78, 0x6a78 }, /* 0x6a79 */ { false, 0x6a79, 0x6a79 }, /* 0x6a7a */ { false, 0x6a7a, 0x6a7a }, /* 0x6a7b */ { false, 0x6a7b, 0x6a7b }, /* 0x6a7c */ { false, 0x6a7c, 0x6a7c }, /* 0x6a7d */ { false, 0x6a7d, 0x6a7d }, /* 0x6a7e */ { false, 0x6a7e, 0x6a7e }, /* 0x6a7f */ { false, 0x6a7f, 0x6a7f }, /* 0x6a80 */ { false, 0x6a80, 0x6a80 }, /* 0x6a81 */ { false, 0x6a81, 0x6a81 }, /* 0x6a82 */ { false, 0x6a82, 0x6a82 }, /* 0x6a83 */ { false, 0x6a83, 0x6a83 }, /* 0x6a84 */ { false, 0x6a84, 0x6a84 }, /* 0x6a85 */ { false, 0x6a85, 0x6a85 }, /* 0x6a86 */ { false, 0x6a86, 0x6a86 }, /* 0x6a87 */ { false, 0x6a87, 0x6a87 }, /* 0x6a88 */ { false, 0x6a88, 0x6a88 }, /* 0x6a89 */ { false, 0x6a89, 0x6a89 }, /* 0x6a8a */ { false, 0x6a8a, 0x6a8a }, /* 0x6a8b */ { false, 0x6a8b, 0x6a8b }, /* 0x6a8c */ { false, 0x6a8c, 0x6a8c }, /* 0x6a8d */ { false, 0x6a8d, 0x6a8d }, /* 0x6a8e */ { false, 0x6a8e, 0x6a8e }, /* 0x6a8f */ { false, 0x6a8f, 0x6a8f }, /* 0x6a90 */ { false, 0x6a90, 0x6a90 }, /* 0x6a91 */ { false, 0x6a91, 0x6a91 }, /* 0x6a92 */ { false, 0x6a92, 0x6a92 }, /* 0x6a93 */ { false, 0x6a93, 0x6a93 }, /* 0x6a94 */ { false, 0x6a94, 0x6a94 }, /* 0x6a95 */ { false, 0x6a95, 0x6a95 }, /* 0x6a96 */ { false, 0x6a96, 0x6a96 }, /* 0x6a97 */ { false, 0x6a97, 0x6a97 }, /* 0x6a98 */ { false, 0x6a98, 0x6a98 }, /* 0x6a99 */ { false, 0x6a99, 0x6a99 }, /* 0x6a9a */ { false, 0x6a9a, 0x6a9a }, /* 0x6a9b */ { false, 0x6a9b, 0x6a9b }, /* 0x6a9c */ { false, 0x6a9c, 0x6a9c }, /* 0x6a9d */ { false, 0x6a9d, 0x6a9d }, /* 0x6a9e */ { false, 0x6a9e, 0x6a9e }, /* 0x6a9f */ { false, 0x6a9f, 0x6a9f }, /* 0x6aa0 */ { false, 0x6aa0, 0x6aa0 }, /* 0x6aa1 */ { false, 0x6aa1, 0x6aa1 }, /* 0x6aa2 */ { false, 0x6aa2, 0x6aa2 }, /* 0x6aa3 */ { false, 0x6aa3, 0x6aa3 }, /* 0x6aa4 */ { false, 0x6aa4, 0x6aa4 }, /* 0x6aa5 */ { false, 0x6aa5, 0x6aa5 }, /* 0x6aa6 */ { false, 0x6aa6, 0x6aa6 }, /* 0x6aa7 */ { false, 0x6aa7, 0x6aa7 }, /* 0x6aa8 */ { false, 0x6aa8, 0x6aa8 }, /* 0x6aa9 */ { false, 0x6aa9, 0x6aa9 }, /* 0x6aaa */ { false, 0x6aaa, 0x6aaa }, /* 0x6aab */ { false, 0x6aab, 0x6aab }, /* 0x6aac */ { false, 0x6aac, 0x6aac }, /* 0x6aad */ { false, 0x6aad, 0x6aad }, /* 0x6aae */ { false, 0x6aae, 0x6aae }, /* 0x6aaf */ { false, 0x6aaf, 0x6aaf }, /* 0x6ab0 */ { false, 0x6ab0, 0x6ab0 }, /* 0x6ab1 */ { false, 0x6ab1, 0x6ab1 }, /* 0x6ab2 */ { false, 0x6ab2, 0x6ab2 }, /* 0x6ab3 */ { false, 0x6ab3, 0x6ab3 }, /* 0x6ab4 */ { false, 0x6ab4, 0x6ab4 }, /* 0x6ab5 */ { false, 0x6ab5, 0x6ab5 }, /* 0x6ab6 */ { false, 0x6ab6, 0x6ab6 }, /* 0x6ab7 */ { false, 0x6ab7, 0x6ab7 }, /* 0x6ab8 */ { false, 0x6ab8, 0x6ab8 }, /* 0x6ab9 */ { false, 0x6ab9, 0x6ab9 }, /* 0x6aba */ { false, 0x6aba, 0x6aba }, /* 0x6abb */ { false, 0x6abb, 0x6abb }, /* 0x6abc */ { false, 0x6abc, 0x6abc }, /* 0x6abd */ { false, 0x6abd, 0x6abd }, /* 0x6abe */ { false, 0x6abe, 0x6abe }, /* 0x6abf */ { false, 0x6abf, 0x6abf }, /* 0x6ac0 */ { false, 0x6ac0, 0x6ac0 }, /* 0x6ac1 */ { false, 0x6ac1, 0x6ac1 }, /* 0x6ac2 */ { false, 0x6ac2, 0x6ac2 }, /* 0x6ac3 */ { false, 0x6ac3, 0x6ac3 }, /* 0x6ac4 */ { false, 0x6ac4, 0x6ac4 }, /* 0x6ac5 */ { false, 0x6ac5, 0x6ac5 }, /* 0x6ac6 */ { false, 0x6ac6, 0x6ac6 }, /* 0x6ac7 */ { false, 0x6ac7, 0x6ac7 }, /* 0x6ac8 */ { false, 0x6ac8, 0x6ac8 }, /* 0x6ac9 */ { false, 0x6ac9, 0x6ac9 }, /* 0x6aca */ { false, 0x6aca, 0x6aca }, /* 0x6acb */ { false, 0x6acb, 0x6acb }, /* 0x6acc */ { false, 0x6acc, 0x6acc }, /* 0x6acd */ { false, 0x6acd, 0x6acd }, /* 0x6ace */ { false, 0x6ace, 0x6ace }, /* 0x6acf */ { false, 0x6acf, 0x6acf }, /* 0x6ad0 */ { false, 0x6ad0, 0x6ad0 }, /* 0x6ad1 */ { false, 0x6ad1, 0x6ad1 }, /* 0x6ad2 */ { false, 0x6ad2, 0x6ad2 }, /* 0x6ad3 */ { false, 0x6ad3, 0x6ad3 }, /* 0x6ad4 */ { false, 0x6ad4, 0x6ad4 }, /* 0x6ad5 */ { false, 0x6ad5, 0x6ad5 }, /* 0x6ad6 */ { false, 0x6ad6, 0x6ad6 }, /* 0x6ad7 */ { false, 0x6ad7, 0x6ad7 }, /* 0x6ad8 */ { false, 0x6ad8, 0x6ad8 }, /* 0x6ad9 */ { false, 0x6ad9, 0x6ad9 }, /* 0x6ada */ { false, 0x6ada, 0x6ada }, /* 0x6adb */ { false, 0x6adb, 0x6adb }, /* 0x6adc */ { false, 0x6adc, 0x6adc }, /* 0x6add */ { false, 0x6add, 0x6add }, /* 0x6ade */ { false, 0x6ade, 0x6ade }, /* 0x6adf */ { false, 0x6adf, 0x6adf }, /* 0x6ae0 */ { false, 0x6ae0, 0x6ae0 }, /* 0x6ae1 */ { false, 0x6ae1, 0x6ae1 }, /* 0x6ae2 */ { false, 0x6ae2, 0x6ae2 }, /* 0x6ae3 */ { false, 0x6ae3, 0x6ae3 }, /* 0x6ae4 */ { false, 0x6ae4, 0x6ae4 }, /* 0x6ae5 */ { false, 0x6ae5, 0x6ae5 }, /* 0x6ae6 */ { false, 0x6ae6, 0x6ae6 }, /* 0x6ae7 */ { false, 0x6ae7, 0x6ae7 }, /* 0x6ae8 */ { false, 0x6ae8, 0x6ae8 }, /* 0x6ae9 */ { false, 0x6ae9, 0x6ae9 }, /* 0x6aea */ { false, 0x6aea, 0x6aea }, /* 0x6aeb */ { false, 0x6aeb, 0x6aeb }, /* 0x6aec */ { false, 0x6aec, 0x6aec }, /* 0x6aed */ { false, 0x6aed, 0x6aed }, /* 0x6aee */ { false, 0x6aee, 0x6aee }, /* 0x6aef */ { false, 0x6aef, 0x6aef }, /* 0x6af0 */ { false, 0x6af0, 0x6af0 }, /* 0x6af1 */ { false, 0x6af1, 0x6af1 }, /* 0x6af2 */ { false, 0x6af2, 0x6af2 }, /* 0x6af3 */ { false, 0x6af3, 0x6af3 }, /* 0x6af4 */ { false, 0x6af4, 0x6af4 }, /* 0x6af5 */ { false, 0x6af5, 0x6af5 }, /* 0x6af6 */ { false, 0x6af6, 0x6af6 }, /* 0x6af7 */ { false, 0x6af7, 0x6af7 }, /* 0x6af8 */ { false, 0x6af8, 0x6af8 }, /* 0x6af9 */ { false, 0x6af9, 0x6af9 }, /* 0x6afa */ { false, 0x6afa, 0x6afa }, /* 0x6afb */ { false, 0x6afb, 0x6afb }, /* 0x6afc */ { false, 0x6afc, 0x6afc }, /* 0x6afd */ { false, 0x6afd, 0x6afd }, /* 0x6afe */ { false, 0x6afe, 0x6afe }, /* 0x6aff */ { false, 0x6aff, 0x6aff }, /* 0x6b00 */ { false, 0x6b00, 0x6b00 }, /* 0x6b01 */ { false, 0x6b01, 0x6b01 }, /* 0x6b02 */ { false, 0x6b02, 0x6b02 }, /* 0x6b03 */ { false, 0x6b03, 0x6b03 }, /* 0x6b04 */ { false, 0x6b04, 0x6b04 }, /* 0x6b05 */ { false, 0x6b05, 0x6b05 }, /* 0x6b06 */ { false, 0x6b06, 0x6b06 }, /* 0x6b07 */ { false, 0x6b07, 0x6b07 }, /* 0x6b08 */ { false, 0x6b08, 0x6b08 }, /* 0x6b09 */ { false, 0x6b09, 0x6b09 }, /* 0x6b0a */ { false, 0x6b0a, 0x6b0a }, /* 0x6b0b */ { false, 0x6b0b, 0x6b0b }, /* 0x6b0c */ { false, 0x6b0c, 0x6b0c }, /* 0x6b0d */ { false, 0x6b0d, 0x6b0d }, /* 0x6b0e */ { false, 0x6b0e, 0x6b0e }, /* 0x6b0f */ { false, 0x6b0f, 0x6b0f }, /* 0x6b10 */ { false, 0x6b10, 0x6b10 }, /* 0x6b11 */ { false, 0x6b11, 0x6b11 }, /* 0x6b12 */ { false, 0x6b12, 0x6b12 }, /* 0x6b13 */ { false, 0x6b13, 0x6b13 }, /* 0x6b14 */ { false, 0x6b14, 0x6b14 }, /* 0x6b15 */ { false, 0x6b15, 0x6b15 }, /* 0x6b16 */ { false, 0x6b16, 0x6b16 }, /* 0x6b17 */ { false, 0x6b17, 0x6b17 }, /* 0x6b18 */ { false, 0x6b18, 0x6b18 }, /* 0x6b19 */ { false, 0x6b19, 0x6b19 }, /* 0x6b1a */ { false, 0x6b1a, 0x6b1a }, /* 0x6b1b */ { false, 0x6b1b, 0x6b1b }, /* 0x6b1c */ { false, 0x6b1c, 0x6b1c }, /* 0x6b1d */ { false, 0x6b1d, 0x6b1d }, /* 0x6b1e */ { false, 0x6b1e, 0x6b1e }, /* 0x6b1f */ { false, 0x6b1f, 0x6b1f }, /* 0x6b20 */ { false, 0x6b20, 0x6b20 }, /* 0x6b21 */ { false, 0x6b21, 0x6b21 }, /* 0x6b22 */ { false, 0x6b22, 0x6b22 }, /* 0x6b23 */ { false, 0x6b23, 0x6b23 }, /* 0x6b24 */ { false, 0x6b24, 0x6b24 }, /* 0x6b25 */ { false, 0x6b25, 0x6b25 }, /* 0x6b26 */ { false, 0x6b26, 0x6b26 }, /* 0x6b27 */ { false, 0x6b27, 0x6b27 }, /* 0x6b28 */ { false, 0x6b28, 0x6b28 }, /* 0x6b29 */ { false, 0x6b29, 0x6b29 }, /* 0x6b2a */ { false, 0x6b2a, 0x6b2a }, /* 0x6b2b */ { false, 0x6b2b, 0x6b2b }, /* 0x6b2c */ { false, 0x6b2c, 0x6b2c }, /* 0x6b2d */ { false, 0x6b2d, 0x6b2d }, /* 0x6b2e */ { false, 0x6b2e, 0x6b2e }, /* 0x6b2f */ { false, 0x6b2f, 0x6b2f }, /* 0x6b30 */ { false, 0x6b30, 0x6b30 }, /* 0x6b31 */ { false, 0x6b31, 0x6b31 }, /* 0x6b32 */ { false, 0x6b32, 0x6b32 }, /* 0x6b33 */ { false, 0x6b33, 0x6b33 }, /* 0x6b34 */ { false, 0x6b34, 0x6b34 }, /* 0x6b35 */ { false, 0x6b35, 0x6b35 }, /* 0x6b36 */ { false, 0x6b36, 0x6b36 }, /* 0x6b37 */ { false, 0x6b37, 0x6b37 }, /* 0x6b38 */ { false, 0x6b38, 0x6b38 }, /* 0x6b39 */ { false, 0x6b39, 0x6b39 }, /* 0x6b3a */ { false, 0x6b3a, 0x6b3a }, /* 0x6b3b */ { false, 0x6b3b, 0x6b3b }, /* 0x6b3c */ { false, 0x6b3c, 0x6b3c }, /* 0x6b3d */ { false, 0x6b3d, 0x6b3d }, /* 0x6b3e */ { false, 0x6b3e, 0x6b3e }, /* 0x6b3f */ { false, 0x6b3f, 0x6b3f }, /* 0x6b40 */ { false, 0x6b40, 0x6b40 }, /* 0x6b41 */ { false, 0x6b41, 0x6b41 }, /* 0x6b42 */ { false, 0x6b42, 0x6b42 }, /* 0x6b43 */ { false, 0x6b43, 0x6b43 }, /* 0x6b44 */ { false, 0x6b44, 0x6b44 }, /* 0x6b45 */ { false, 0x6b45, 0x6b45 }, /* 0x6b46 */ { false, 0x6b46, 0x6b46 }, /* 0x6b47 */ { false, 0x6b47, 0x6b47 }, /* 0x6b48 */ { false, 0x6b48, 0x6b48 }, /* 0x6b49 */ { false, 0x6b49, 0x6b49 }, /* 0x6b4a */ { false, 0x6b4a, 0x6b4a }, /* 0x6b4b */ { false, 0x6b4b, 0x6b4b }, /* 0x6b4c */ { false, 0x6b4c, 0x6b4c }, /* 0x6b4d */ { false, 0x6b4d, 0x6b4d }, /* 0x6b4e */ { false, 0x6b4e, 0x6b4e }, /* 0x6b4f */ { false, 0x6b4f, 0x6b4f }, /* 0x6b50 */ { false, 0x6b50, 0x6b50 }, /* 0x6b51 */ { false, 0x6b51, 0x6b51 }, /* 0x6b52 */ { false, 0x6b52, 0x6b52 }, /* 0x6b53 */ { false, 0x6b53, 0x6b53 }, /* 0x6b54 */ { false, 0x6b54, 0x6b54 }, /* 0x6b55 */ { false, 0x6b55, 0x6b55 }, /* 0x6b56 */ { false, 0x6b56, 0x6b56 }, /* 0x6b57 */ { false, 0x6b57, 0x6b57 }, /* 0x6b58 */ { false, 0x6b58, 0x6b58 }, /* 0x6b59 */ { false, 0x6b59, 0x6b59 }, /* 0x6b5a */ { false, 0x6b5a, 0x6b5a }, /* 0x6b5b */ { false, 0x6b5b, 0x6b5b }, /* 0x6b5c */ { false, 0x6b5c, 0x6b5c }, /* 0x6b5d */ { false, 0x6b5d, 0x6b5d }, /* 0x6b5e */ { false, 0x6b5e, 0x6b5e }, /* 0x6b5f */ { false, 0x6b5f, 0x6b5f }, /* 0x6b60 */ { false, 0x6b60, 0x6b60 }, /* 0x6b61 */ { false, 0x6b61, 0x6b61 }, /* 0x6b62 */ { false, 0x6b62, 0x6b62 }, /* 0x6b63 */ { false, 0x6b63, 0x6b63 }, /* 0x6b64 */ { false, 0x6b64, 0x6b64 }, /* 0x6b65 */ { false, 0x6b65, 0x6b65 }, /* 0x6b66 */ { false, 0x6b66, 0x6b66 }, /* 0x6b67 */ { false, 0x6b67, 0x6b67 }, /* 0x6b68 */ { false, 0x6b68, 0x6b68 }, /* 0x6b69 */ { false, 0x6b69, 0x6b69 }, /* 0x6b6a */ { false, 0x6b6a, 0x6b6a }, /* 0x6b6b */ { false, 0x6b6b, 0x6b6b }, /* 0x6b6c */ { false, 0x6b6c, 0x6b6c }, /* 0x6b6d */ { false, 0x6b6d, 0x6b6d }, /* 0x6b6e */ { false, 0x6b6e, 0x6b6e }, /* 0x6b6f */ { false, 0x6b6f, 0x6b6f }, /* 0x6b70 */ { false, 0x6b70, 0x6b70 }, /* 0x6b71 */ { false, 0x6b71, 0x6b71 }, /* 0x6b72 */ { false, 0x6b72, 0x6b72 }, /* 0x6b73 */ { false, 0x6b73, 0x6b73 }, /* 0x6b74 */ { false, 0x6b74, 0x6b74 }, /* 0x6b75 */ { false, 0x6b75, 0x6b75 }, /* 0x6b76 */ { false, 0x6b76, 0x6b76 }, /* 0x6b77 */ { false, 0x6b77, 0x6b77 }, /* 0x6b78 */ { false, 0x6b78, 0x6b78 }, /* 0x6b79 */ { false, 0x6b79, 0x6b79 }, /* 0x6b7a */ { false, 0x6b7a, 0x6b7a }, /* 0x6b7b */ { false, 0x6b7b, 0x6b7b }, /* 0x6b7c */ { false, 0x6b7c, 0x6b7c }, /* 0x6b7d */ { false, 0x6b7d, 0x6b7d }, /* 0x6b7e */ { false, 0x6b7e, 0x6b7e }, /* 0x6b7f */ { false, 0x6b7f, 0x6b7f }, /* 0x6b80 */ { false, 0x6b80, 0x6b80 }, /* 0x6b81 */ { false, 0x6b81, 0x6b81 }, /* 0x6b82 */ { false, 0x6b82, 0x6b82 }, /* 0x6b83 */ { false, 0x6b83, 0x6b83 }, /* 0x6b84 */ { false, 0x6b84, 0x6b84 }, /* 0x6b85 */ { false, 0x6b85, 0x6b85 }, /* 0x6b86 */ { false, 0x6b86, 0x6b86 }, /* 0x6b87 */ { false, 0x6b87, 0x6b87 }, /* 0x6b88 */ { false, 0x6b88, 0x6b88 }, /* 0x6b89 */ { false, 0x6b89, 0x6b89 }, /* 0x6b8a */ { false, 0x6b8a, 0x6b8a }, /* 0x6b8b */ { false, 0x6b8b, 0x6b8b }, /* 0x6b8c */ { false, 0x6b8c, 0x6b8c }, /* 0x6b8d */ { false, 0x6b8d, 0x6b8d }, /* 0x6b8e */ { false, 0x6b8e, 0x6b8e }, /* 0x6b8f */ { false, 0x6b8f, 0x6b8f }, /* 0x6b90 */ { false, 0x6b90, 0x6b90 }, /* 0x6b91 */ { false, 0x6b91, 0x6b91 }, /* 0x6b92 */ { false, 0x6b92, 0x6b92 }, /* 0x6b93 */ { false, 0x6b93, 0x6b93 }, /* 0x6b94 */ { false, 0x6b94, 0x6b94 }, /* 0x6b95 */ { false, 0x6b95, 0x6b95 }, /* 0x6b96 */ { false, 0x6b96, 0x6b96 }, /* 0x6b97 */ { false, 0x6b97, 0x6b97 }, /* 0x6b98 */ { false, 0x6b98, 0x6b98 }, /* 0x6b99 */ { false, 0x6b99, 0x6b99 }, /* 0x6b9a */ { false, 0x6b9a, 0x6b9a }, /* 0x6b9b */ { false, 0x6b9b, 0x6b9b }, /* 0x6b9c */ { false, 0x6b9c, 0x6b9c }, /* 0x6b9d */ { false, 0x6b9d, 0x6b9d }, /* 0x6b9e */ { false, 0x6b9e, 0x6b9e }, /* 0x6b9f */ { false, 0x6b9f, 0x6b9f }, /* 0x6ba0 */ { false, 0x6ba0, 0x6ba0 }, /* 0x6ba1 */ { false, 0x6ba1, 0x6ba1 }, /* 0x6ba2 */ { false, 0x6ba2, 0x6ba2 }, /* 0x6ba3 */ { false, 0x6ba3, 0x6ba3 }, /* 0x6ba4 */ { false, 0x6ba4, 0x6ba4 }, /* 0x6ba5 */ { false, 0x6ba5, 0x6ba5 }, /* 0x6ba6 */ { false, 0x6ba6, 0x6ba6 }, /* 0x6ba7 */ { false, 0x6ba7, 0x6ba7 }, /* 0x6ba8 */ { false, 0x6ba8, 0x6ba8 }, /* 0x6ba9 */ { false, 0x6ba9, 0x6ba9 }, /* 0x6baa */ { false, 0x6baa, 0x6baa }, /* 0x6bab */ { false, 0x6bab, 0x6bab }, /* 0x6bac */ { false, 0x6bac, 0x6bac }, /* 0x6bad */ { false, 0x6bad, 0x6bad }, /* 0x6bae */ { false, 0x6bae, 0x6bae }, /* 0x6baf */ { false, 0x6baf, 0x6baf }, /* 0x6bb0 */ { false, 0x6bb0, 0x6bb0 }, /* 0x6bb1 */ { false, 0x6bb1, 0x6bb1 }, /* 0x6bb2 */ { false, 0x6bb2, 0x6bb2 }, /* 0x6bb3 */ { false, 0x6bb3, 0x6bb3 }, /* 0x6bb4 */ { false, 0x6bb4, 0x6bb4 }, /* 0x6bb5 */ { false, 0x6bb5, 0x6bb5 }, /* 0x6bb6 */ { false, 0x6bb6, 0x6bb6 }, /* 0x6bb7 */ { false, 0x6bb7, 0x6bb7 }, /* 0x6bb8 */ { false, 0x6bb8, 0x6bb8 }, /* 0x6bb9 */ { false, 0x6bb9, 0x6bb9 }, /* 0x6bba */ { false, 0x6bba, 0x6bba }, /* 0x6bbb */ { false, 0x6bbb, 0x6bbb }, /* 0x6bbc */ { false, 0x6bbc, 0x6bbc }, /* 0x6bbd */ { false, 0x6bbd, 0x6bbd }, /* 0x6bbe */ { false, 0x6bbe, 0x6bbe }, /* 0x6bbf */ { false, 0x6bbf, 0x6bbf }, /* 0x6bc0 */ { false, 0x6bc0, 0x6bc0 }, /* 0x6bc1 */ { false, 0x6bc1, 0x6bc1 }, /* 0x6bc2 */ { false, 0x6bc2, 0x6bc2 }, /* 0x6bc3 */ { false, 0x6bc3, 0x6bc3 }, /* 0x6bc4 */ { false, 0x6bc4, 0x6bc4 }, /* 0x6bc5 */ { false, 0x6bc5, 0x6bc5 }, /* 0x6bc6 */ { false, 0x6bc6, 0x6bc6 }, /* 0x6bc7 */ { false, 0x6bc7, 0x6bc7 }, /* 0x6bc8 */ { false, 0x6bc8, 0x6bc8 }, /* 0x6bc9 */ { false, 0x6bc9, 0x6bc9 }, /* 0x6bca */ { false, 0x6bca, 0x6bca }, /* 0x6bcb */ { false, 0x6bcb, 0x6bcb }, /* 0x6bcc */ { false, 0x6bcc, 0x6bcc }, /* 0x6bcd */ { false, 0x6bcd, 0x6bcd }, /* 0x6bce */ { false, 0x6bce, 0x6bce }, /* 0x6bcf */ { false, 0x6bcf, 0x6bcf }, /* 0x6bd0 */ { false, 0x6bd0, 0x6bd0 }, /* 0x6bd1 */ { false, 0x6bd1, 0x6bd1 }, /* 0x6bd2 */ { false, 0x6bd2, 0x6bd2 }, /* 0x6bd3 */ { false, 0x6bd3, 0x6bd3 }, /* 0x6bd4 */ { false, 0x6bd4, 0x6bd4 }, /* 0x6bd5 */ { false, 0x6bd5, 0x6bd5 }, /* 0x6bd6 */ { false, 0x6bd6, 0x6bd6 }, /* 0x6bd7 */ { false, 0x6bd7, 0x6bd7 }, /* 0x6bd8 */ { false, 0x6bd8, 0x6bd8 }, /* 0x6bd9 */ { false, 0x6bd9, 0x6bd9 }, /* 0x6bda */ { false, 0x6bda, 0x6bda }, /* 0x6bdb */ { false, 0x6bdb, 0x6bdb }, /* 0x6bdc */ { false, 0x6bdc, 0x6bdc }, /* 0x6bdd */ { false, 0x6bdd, 0x6bdd }, /* 0x6bde */ { false, 0x6bde, 0x6bde }, /* 0x6bdf */ { false, 0x6bdf, 0x6bdf }, /* 0x6be0 */ { false, 0x6be0, 0x6be0 }, /* 0x6be1 */ { false, 0x6be1, 0x6be1 }, /* 0x6be2 */ { false, 0x6be2, 0x6be2 }, /* 0x6be3 */ { false, 0x6be3, 0x6be3 }, /* 0x6be4 */ { false, 0x6be4, 0x6be4 }, /* 0x6be5 */ { false, 0x6be5, 0x6be5 }, /* 0x6be6 */ { false, 0x6be6, 0x6be6 }, /* 0x6be7 */ { false, 0x6be7, 0x6be7 }, /* 0x6be8 */ { false, 0x6be8, 0x6be8 }, /* 0x6be9 */ { false, 0x6be9, 0x6be9 }, /* 0x6bea */ { false, 0x6bea, 0x6bea }, /* 0x6beb */ { false, 0x6beb, 0x6beb }, /* 0x6bec */ { false, 0x6bec, 0x6bec }, /* 0x6bed */ { false, 0x6bed, 0x6bed }, /* 0x6bee */ { false, 0x6bee, 0x6bee }, /* 0x6bef */ { false, 0x6bef, 0x6bef }, /* 0x6bf0 */ { false, 0x6bf0, 0x6bf0 }, /* 0x6bf1 */ { false, 0x6bf1, 0x6bf1 }, /* 0x6bf2 */ { false, 0x6bf2, 0x6bf2 }, /* 0x6bf3 */ { false, 0x6bf3, 0x6bf3 }, /* 0x6bf4 */ { false, 0x6bf4, 0x6bf4 }, /* 0x6bf5 */ { false, 0x6bf5, 0x6bf5 }, /* 0x6bf6 */ { false, 0x6bf6, 0x6bf6 }, /* 0x6bf7 */ { false, 0x6bf7, 0x6bf7 }, /* 0x6bf8 */ { false, 0x6bf8, 0x6bf8 }, /* 0x6bf9 */ { false, 0x6bf9, 0x6bf9 }, /* 0x6bfa */ { false, 0x6bfa, 0x6bfa }, /* 0x6bfb */ { false, 0x6bfb, 0x6bfb }, /* 0x6bfc */ { false, 0x6bfc, 0x6bfc }, /* 0x6bfd */ { false, 0x6bfd, 0x6bfd }, /* 0x6bfe */ { false, 0x6bfe, 0x6bfe }, /* 0x6bff */ { false, 0x6bff, 0x6bff }, /* 0x6c00 */ { false, 0x6c00, 0x6c00 }, /* 0x6c01 */ { false, 0x6c01, 0x6c01 }, /* 0x6c02 */ { false, 0x6c02, 0x6c02 }, /* 0x6c03 */ { false, 0x6c03, 0x6c03 }, /* 0x6c04 */ { false, 0x6c04, 0x6c04 }, /* 0x6c05 */ { false, 0x6c05, 0x6c05 }, /* 0x6c06 */ { false, 0x6c06, 0x6c06 }, /* 0x6c07 */ { false, 0x6c07, 0x6c07 }, /* 0x6c08 */ { false, 0x6c08, 0x6c08 }, /* 0x6c09 */ { false, 0x6c09, 0x6c09 }, /* 0x6c0a */ { false, 0x6c0a, 0x6c0a }, /* 0x6c0b */ { false, 0x6c0b, 0x6c0b }, /* 0x6c0c */ { false, 0x6c0c, 0x6c0c }, /* 0x6c0d */ { false, 0x6c0d, 0x6c0d }, /* 0x6c0e */ { false, 0x6c0e, 0x6c0e }, /* 0x6c0f */ { false, 0x6c0f, 0x6c0f }, /* 0x6c10 */ { false, 0x6c10, 0x6c10 }, /* 0x6c11 */ { false, 0x6c11, 0x6c11 }, /* 0x6c12 */ { false, 0x6c12, 0x6c12 }, /* 0x6c13 */ { false, 0x6c13, 0x6c13 }, /* 0x6c14 */ { false, 0x6c14, 0x6c14 }, /* 0x6c15 */ { false, 0x6c15, 0x6c15 }, /* 0x6c16 */ { false, 0x6c16, 0x6c16 }, /* 0x6c17 */ { false, 0x6c17, 0x6c17 }, /* 0x6c18 */ { false, 0x6c18, 0x6c18 }, /* 0x6c19 */ { false, 0x6c19, 0x6c19 }, /* 0x6c1a */ { false, 0x6c1a, 0x6c1a }, /* 0x6c1b */ { false, 0x6c1b, 0x6c1b }, /* 0x6c1c */ { false, 0x6c1c, 0x6c1c }, /* 0x6c1d */ { false, 0x6c1d, 0x6c1d }, /* 0x6c1e */ { false, 0x6c1e, 0x6c1e }, /* 0x6c1f */ { false, 0x6c1f, 0x6c1f }, /* 0x6c20 */ { false, 0x6c20, 0x6c20 }, /* 0x6c21 */ { false, 0x6c21, 0x6c21 }, /* 0x6c22 */ { false, 0x6c22, 0x6c22 }, /* 0x6c23 */ { false, 0x6c23, 0x6c23 }, /* 0x6c24 */ { false, 0x6c24, 0x6c24 }, /* 0x6c25 */ { false, 0x6c25, 0x6c25 }, /* 0x6c26 */ { false, 0x6c26, 0x6c26 }, /* 0x6c27 */ { false, 0x6c27, 0x6c27 }, /* 0x6c28 */ { false, 0x6c28, 0x6c28 }, /* 0x6c29 */ { false, 0x6c29, 0x6c29 }, /* 0x6c2a */ { false, 0x6c2a, 0x6c2a }, /* 0x6c2b */ { false, 0x6c2b, 0x6c2b }, /* 0x6c2c */ { false, 0x6c2c, 0x6c2c }, /* 0x6c2d */ { false, 0x6c2d, 0x6c2d }, /* 0x6c2e */ { false, 0x6c2e, 0x6c2e }, /* 0x6c2f */ { false, 0x6c2f, 0x6c2f }, /* 0x6c30 */ { false, 0x6c30, 0x6c30 }, /* 0x6c31 */ { false, 0x6c31, 0x6c31 }, /* 0x6c32 */ { false, 0x6c32, 0x6c32 }, /* 0x6c33 */ { false, 0x6c33, 0x6c33 }, /* 0x6c34 */ { false, 0x6c34, 0x6c34 }, /* 0x6c35 */ { false, 0x6c35, 0x6c35 }, /* 0x6c36 */ { false, 0x6c36, 0x6c36 }, /* 0x6c37 */ { false, 0x6c37, 0x6c37 }, /* 0x6c38 */ { false, 0x6c38, 0x6c38 }, /* 0x6c39 */ { false, 0x6c39, 0x6c39 }, /* 0x6c3a */ { false, 0x6c3a, 0x6c3a }, /* 0x6c3b */ { false, 0x6c3b, 0x6c3b }, /* 0x6c3c */ { false, 0x6c3c, 0x6c3c }, /* 0x6c3d */ { false, 0x6c3d, 0x6c3d }, /* 0x6c3e */ { false, 0x6c3e, 0x6c3e }, /* 0x6c3f */ { false, 0x6c3f, 0x6c3f }, /* 0x6c40 */ { false, 0x6c40, 0x6c40 }, /* 0x6c41 */ { false, 0x6c41, 0x6c41 }, /* 0x6c42 */ { false, 0x6c42, 0x6c42 }, /* 0x6c43 */ { false, 0x6c43, 0x6c43 }, /* 0x6c44 */ { false, 0x6c44, 0x6c44 }, /* 0x6c45 */ { false, 0x6c45, 0x6c45 }, /* 0x6c46 */ { false, 0x6c46, 0x6c46 }, /* 0x6c47 */ { false, 0x6c47, 0x6c47 }, /* 0x6c48 */ { false, 0x6c48, 0x6c48 }, /* 0x6c49 */ { false, 0x6c49, 0x6c49 }, /* 0x6c4a */ { false, 0x6c4a, 0x6c4a }, /* 0x6c4b */ { false, 0x6c4b, 0x6c4b }, /* 0x6c4c */ { false, 0x6c4c, 0x6c4c }, /* 0x6c4d */ { false, 0x6c4d, 0x6c4d }, /* 0x6c4e */ { false, 0x6c4e, 0x6c4e }, /* 0x6c4f */ { false, 0x6c4f, 0x6c4f }, /* 0x6c50 */ { false, 0x6c50, 0x6c50 }, /* 0x6c51 */ { false, 0x6c51, 0x6c51 }, /* 0x6c52 */ { false, 0x6c52, 0x6c52 }, /* 0x6c53 */ { false, 0x6c53, 0x6c53 }, /* 0x6c54 */ { false, 0x6c54, 0x6c54 }, /* 0x6c55 */ { false, 0x6c55, 0x6c55 }, /* 0x6c56 */ { false, 0x6c56, 0x6c56 }, /* 0x6c57 */ { false, 0x6c57, 0x6c57 }, /* 0x6c58 */ { false, 0x6c58, 0x6c58 }, /* 0x6c59 */ { false, 0x6c59, 0x6c59 }, /* 0x6c5a */ { false, 0x6c5a, 0x6c5a }, /* 0x6c5b */ { false, 0x6c5b, 0x6c5b }, /* 0x6c5c */ { false, 0x6c5c, 0x6c5c }, /* 0x6c5d */ { false, 0x6c5d, 0x6c5d }, /* 0x6c5e */ { false, 0x6c5e, 0x6c5e }, /* 0x6c5f */ { false, 0x6c5f, 0x6c5f }, /* 0x6c60 */ { false, 0x6c60, 0x6c60 }, /* 0x6c61 */ { false, 0x6c61, 0x6c61 }, /* 0x6c62 */ { false, 0x6c62, 0x6c62 }, /* 0x6c63 */ { false, 0x6c63, 0x6c63 }, /* 0x6c64 */ { false, 0x6c64, 0x6c64 }, /* 0x6c65 */ { false, 0x6c65, 0x6c65 }, /* 0x6c66 */ { false, 0x6c66, 0x6c66 }, /* 0x6c67 */ { false, 0x6c67, 0x6c67 }, /* 0x6c68 */ { false, 0x6c68, 0x6c68 }, /* 0x6c69 */ { false, 0x6c69, 0x6c69 }, /* 0x6c6a */ { false, 0x6c6a, 0x6c6a }, /* 0x6c6b */ { false, 0x6c6b, 0x6c6b }, /* 0x6c6c */ { false, 0x6c6c, 0x6c6c }, /* 0x6c6d */ { false, 0x6c6d, 0x6c6d }, /* 0x6c6e */ { false, 0x6c6e, 0x6c6e }, /* 0x6c6f */ { false, 0x6c6f, 0x6c6f }, /* 0x6c70 */ { false, 0x6c70, 0x6c70 }, /* 0x6c71 */ { false, 0x6c71, 0x6c71 }, /* 0x6c72 */ { false, 0x6c72, 0x6c72 }, /* 0x6c73 */ { false, 0x6c73, 0x6c73 }, /* 0x6c74 */ { false, 0x6c74, 0x6c74 }, /* 0x6c75 */ { false, 0x6c75, 0x6c75 }, /* 0x6c76 */ { false, 0x6c76, 0x6c76 }, /* 0x6c77 */ { false, 0x6c77, 0x6c77 }, /* 0x6c78 */ { false, 0x6c78, 0x6c78 }, /* 0x6c79 */ { false, 0x6c79, 0x6c79 }, /* 0x6c7a */ { false, 0x6c7a, 0x6c7a }, /* 0x6c7b */ { false, 0x6c7b, 0x6c7b }, /* 0x6c7c */ { false, 0x6c7c, 0x6c7c }, /* 0x6c7d */ { false, 0x6c7d, 0x6c7d }, /* 0x6c7e */ { false, 0x6c7e, 0x6c7e }, /* 0x6c7f */ { false, 0x6c7f, 0x6c7f }, /* 0x6c80 */ { false, 0x6c80, 0x6c80 }, /* 0x6c81 */ { false, 0x6c81, 0x6c81 }, /* 0x6c82 */ { false, 0x6c82, 0x6c82 }, /* 0x6c83 */ { false, 0x6c83, 0x6c83 }, /* 0x6c84 */ { false, 0x6c84, 0x6c84 }, /* 0x6c85 */ { false, 0x6c85, 0x6c85 }, /* 0x6c86 */ { false, 0x6c86, 0x6c86 }, /* 0x6c87 */ { false, 0x6c87, 0x6c87 }, /* 0x6c88 */ { false, 0x6c88, 0x6c88 }, /* 0x6c89 */ { false, 0x6c89, 0x6c89 }, /* 0x6c8a */ { false, 0x6c8a, 0x6c8a }, /* 0x6c8b */ { false, 0x6c8b, 0x6c8b }, /* 0x6c8c */ { false, 0x6c8c, 0x6c8c }, /* 0x6c8d */ { false, 0x6c8d, 0x6c8d }, /* 0x6c8e */ { false, 0x6c8e, 0x6c8e }, /* 0x6c8f */ { false, 0x6c8f, 0x6c8f }, /* 0x6c90 */ { false, 0x6c90, 0x6c90 }, /* 0x6c91 */ { false, 0x6c91, 0x6c91 }, /* 0x6c92 */ { false, 0x6c92, 0x6c92 }, /* 0x6c93 */ { false, 0x6c93, 0x6c93 }, /* 0x6c94 */ { false, 0x6c94, 0x6c94 }, /* 0x6c95 */ { false, 0x6c95, 0x6c95 }, /* 0x6c96 */ { false, 0x6c96, 0x6c96 }, /* 0x6c97 */ { false, 0x6c97, 0x6c97 }, /* 0x6c98 */ { false, 0x6c98, 0x6c98 }, /* 0x6c99 */ { false, 0x6c99, 0x6c99 }, /* 0x6c9a */ { false, 0x6c9a, 0x6c9a }, /* 0x6c9b */ { false, 0x6c9b, 0x6c9b }, /* 0x6c9c */ { false, 0x6c9c, 0x6c9c }, /* 0x6c9d */ { false, 0x6c9d, 0x6c9d }, /* 0x6c9e */ { false, 0x6c9e, 0x6c9e }, /* 0x6c9f */ { false, 0x6c9f, 0x6c9f }, /* 0x6ca0 */ { false, 0x6ca0, 0x6ca0 }, /* 0x6ca1 */ { false, 0x6ca1, 0x6ca1 }, /* 0x6ca2 */ { false, 0x6ca2, 0x6ca2 }, /* 0x6ca3 */ { false, 0x6ca3, 0x6ca3 }, /* 0x6ca4 */ { false, 0x6ca4, 0x6ca4 }, /* 0x6ca5 */ { false, 0x6ca5, 0x6ca5 }, /* 0x6ca6 */ { false, 0x6ca6, 0x6ca6 }, /* 0x6ca7 */ { false, 0x6ca7, 0x6ca7 }, /* 0x6ca8 */ { false, 0x6ca8, 0x6ca8 }, /* 0x6ca9 */ { false, 0x6ca9, 0x6ca9 }, /* 0x6caa */ { false, 0x6caa, 0x6caa }, /* 0x6cab */ { false, 0x6cab, 0x6cab }, /* 0x6cac */ { false, 0x6cac, 0x6cac }, /* 0x6cad */ { false, 0x6cad, 0x6cad }, /* 0x6cae */ { false, 0x6cae, 0x6cae }, /* 0x6caf */ { false, 0x6caf, 0x6caf }, /* 0x6cb0 */ { false, 0x6cb0, 0x6cb0 }, /* 0x6cb1 */ { false, 0x6cb1, 0x6cb1 }, /* 0x6cb2 */ { false, 0x6cb2, 0x6cb2 }, /* 0x6cb3 */ { false, 0x6cb3, 0x6cb3 }, /* 0x6cb4 */ { false, 0x6cb4, 0x6cb4 }, /* 0x6cb5 */ { false, 0x6cb5, 0x6cb5 }, /* 0x6cb6 */ { false, 0x6cb6, 0x6cb6 }, /* 0x6cb7 */ { false, 0x6cb7, 0x6cb7 }, /* 0x6cb8 */ { false, 0x6cb8, 0x6cb8 }, /* 0x6cb9 */ { false, 0x6cb9, 0x6cb9 }, /* 0x6cba */ { false, 0x6cba, 0x6cba }, /* 0x6cbb */ { false, 0x6cbb, 0x6cbb }, /* 0x6cbc */ { false, 0x6cbc, 0x6cbc }, /* 0x6cbd */ { false, 0x6cbd, 0x6cbd }, /* 0x6cbe */ { false, 0x6cbe, 0x6cbe }, /* 0x6cbf */ { false, 0x6cbf, 0x6cbf }, /* 0x6cc0 */ { false, 0x6cc0, 0x6cc0 }, /* 0x6cc1 */ { false, 0x6cc1, 0x6cc1 }, /* 0x6cc2 */ { false, 0x6cc2, 0x6cc2 }, /* 0x6cc3 */ { false, 0x6cc3, 0x6cc3 }, /* 0x6cc4 */ { false, 0x6cc4, 0x6cc4 }, /* 0x6cc5 */ { false, 0x6cc5, 0x6cc5 }, /* 0x6cc6 */ { false, 0x6cc6, 0x6cc6 }, /* 0x6cc7 */ { false, 0x6cc7, 0x6cc7 }, /* 0x6cc8 */ { false, 0x6cc8, 0x6cc8 }, /* 0x6cc9 */ { false, 0x6cc9, 0x6cc9 }, /* 0x6cca */ { false, 0x6cca, 0x6cca }, /* 0x6ccb */ { false, 0x6ccb, 0x6ccb }, /* 0x6ccc */ { false, 0x6ccc, 0x6ccc }, /* 0x6ccd */ { false, 0x6ccd, 0x6ccd }, /* 0x6cce */ { false, 0x6cce, 0x6cce }, /* 0x6ccf */ { false, 0x6ccf, 0x6ccf }, /* 0x6cd0 */ { false, 0x6cd0, 0x6cd0 }, /* 0x6cd1 */ { false, 0x6cd1, 0x6cd1 }, /* 0x6cd2 */ { false, 0x6cd2, 0x6cd2 }, /* 0x6cd3 */ { false, 0x6cd3, 0x6cd3 }, /* 0x6cd4 */ { false, 0x6cd4, 0x6cd4 }, /* 0x6cd5 */ { false, 0x6cd5, 0x6cd5 }, /* 0x6cd6 */ { false, 0x6cd6, 0x6cd6 }, /* 0x6cd7 */ { false, 0x6cd7, 0x6cd7 }, /* 0x6cd8 */ { false, 0x6cd8, 0x6cd8 }, /* 0x6cd9 */ { false, 0x6cd9, 0x6cd9 }, /* 0x6cda */ { false, 0x6cda, 0x6cda }, /* 0x6cdb */ { false, 0x6cdb, 0x6cdb }, /* 0x6cdc */ { false, 0x6cdc, 0x6cdc }, /* 0x6cdd */ { false, 0x6cdd, 0x6cdd }, /* 0x6cde */ { false, 0x6cde, 0x6cde }, /* 0x6cdf */ { false, 0x6cdf, 0x6cdf }, /* 0x6ce0 */ { false, 0x6ce0, 0x6ce0 }, /* 0x6ce1 */ { false, 0x6ce1, 0x6ce1 }, /* 0x6ce2 */ { false, 0x6ce2, 0x6ce2 }, /* 0x6ce3 */ { false, 0x6ce3, 0x6ce3 }, /* 0x6ce4 */ { false, 0x6ce4, 0x6ce4 }, /* 0x6ce5 */ { false, 0x6ce5, 0x6ce5 }, /* 0x6ce6 */ { false, 0x6ce6, 0x6ce6 }, /* 0x6ce7 */ { false, 0x6ce7, 0x6ce7 }, /* 0x6ce8 */ { false, 0x6ce8, 0x6ce8 }, /* 0x6ce9 */ { false, 0x6ce9, 0x6ce9 }, /* 0x6cea */ { false, 0x6cea, 0x6cea }, /* 0x6ceb */ { false, 0x6ceb, 0x6ceb }, /* 0x6cec */ { false, 0x6cec, 0x6cec }, /* 0x6ced */ { false, 0x6ced, 0x6ced }, /* 0x6cee */ { false, 0x6cee, 0x6cee }, /* 0x6cef */ { false, 0x6cef, 0x6cef }, /* 0x6cf0 */ { false, 0x6cf0, 0x6cf0 }, /* 0x6cf1 */ { false, 0x6cf1, 0x6cf1 }, /* 0x6cf2 */ { false, 0x6cf2, 0x6cf2 }, /* 0x6cf3 */ { false, 0x6cf3, 0x6cf3 }, /* 0x6cf4 */ { false, 0x6cf4, 0x6cf4 }, /* 0x6cf5 */ { false, 0x6cf5, 0x6cf5 }, /* 0x6cf6 */ { false, 0x6cf6, 0x6cf6 }, /* 0x6cf7 */ { false, 0x6cf7, 0x6cf7 }, /* 0x6cf8 */ { false, 0x6cf8, 0x6cf8 }, /* 0x6cf9 */ { false, 0x6cf9, 0x6cf9 }, /* 0x6cfa */ { false, 0x6cfa, 0x6cfa }, /* 0x6cfb */ { false, 0x6cfb, 0x6cfb }, /* 0x6cfc */ { false, 0x6cfc, 0x6cfc }, /* 0x6cfd */ { false, 0x6cfd, 0x6cfd }, /* 0x6cfe */ { false, 0x6cfe, 0x6cfe }, /* 0x6cff */ { false, 0x6cff, 0x6cff }, /* 0x6d00 */ { false, 0x6d00, 0x6d00 }, /* 0x6d01 */ { false, 0x6d01, 0x6d01 }, /* 0x6d02 */ { false, 0x6d02, 0x6d02 }, /* 0x6d03 */ { false, 0x6d03, 0x6d03 }, /* 0x6d04 */ { false, 0x6d04, 0x6d04 }, /* 0x6d05 */ { false, 0x6d05, 0x6d05 }, /* 0x6d06 */ { false, 0x6d06, 0x6d06 }, /* 0x6d07 */ { false, 0x6d07, 0x6d07 }, /* 0x6d08 */ { false, 0x6d08, 0x6d08 }, /* 0x6d09 */ { false, 0x6d09, 0x6d09 }, /* 0x6d0a */ { false, 0x6d0a, 0x6d0a }, /* 0x6d0b */ { false, 0x6d0b, 0x6d0b }, /* 0x6d0c */ { false, 0x6d0c, 0x6d0c }, /* 0x6d0d */ { false, 0x6d0d, 0x6d0d }, /* 0x6d0e */ { false, 0x6d0e, 0x6d0e }, /* 0x6d0f */ { false, 0x6d0f, 0x6d0f }, /* 0x6d10 */ { false, 0x6d10, 0x6d10 }, /* 0x6d11 */ { false, 0x6d11, 0x6d11 }, /* 0x6d12 */ { false, 0x6d12, 0x6d12 }, /* 0x6d13 */ { false, 0x6d13, 0x6d13 }, /* 0x6d14 */ { false, 0x6d14, 0x6d14 }, /* 0x6d15 */ { false, 0x6d15, 0x6d15 }, /* 0x6d16 */ { false, 0x6d16, 0x6d16 }, /* 0x6d17 */ { false, 0x6d17, 0x6d17 }, /* 0x6d18 */ { false, 0x6d18, 0x6d18 }, /* 0x6d19 */ { false, 0x6d19, 0x6d19 }, /* 0x6d1a */ { false, 0x6d1a, 0x6d1a }, /* 0x6d1b */ { false, 0x6d1b, 0x6d1b }, /* 0x6d1c */ { false, 0x6d1c, 0x6d1c }, /* 0x6d1d */ { false, 0x6d1d, 0x6d1d }, /* 0x6d1e */ { false, 0x6d1e, 0x6d1e }, /* 0x6d1f */ { false, 0x6d1f, 0x6d1f }, /* 0x6d20 */ { false, 0x6d20, 0x6d20 }, /* 0x6d21 */ { false, 0x6d21, 0x6d21 }, /* 0x6d22 */ { false, 0x6d22, 0x6d22 }, /* 0x6d23 */ { false, 0x6d23, 0x6d23 }, /* 0x6d24 */ { false, 0x6d24, 0x6d24 }, /* 0x6d25 */ { false, 0x6d25, 0x6d25 }, /* 0x6d26 */ { false, 0x6d26, 0x6d26 }, /* 0x6d27 */ { false, 0x6d27, 0x6d27 }, /* 0x6d28 */ { false, 0x6d28, 0x6d28 }, /* 0x6d29 */ { false, 0x6d29, 0x6d29 }, /* 0x6d2a */ { false, 0x6d2a, 0x6d2a }, /* 0x6d2b */ { false, 0x6d2b, 0x6d2b }, /* 0x6d2c */ { false, 0x6d2c, 0x6d2c }, /* 0x6d2d */ { false, 0x6d2d, 0x6d2d }, /* 0x6d2e */ { false, 0x6d2e, 0x6d2e }, /* 0x6d2f */ { false, 0x6d2f, 0x6d2f }, /* 0x6d30 */ { false, 0x6d30, 0x6d30 }, /* 0x6d31 */ { false, 0x6d31, 0x6d31 }, /* 0x6d32 */ { false, 0x6d32, 0x6d32 }, /* 0x6d33 */ { false, 0x6d33, 0x6d33 }, /* 0x6d34 */ { false, 0x6d34, 0x6d34 }, /* 0x6d35 */ { false, 0x6d35, 0x6d35 }, /* 0x6d36 */ { false, 0x6d36, 0x6d36 }, /* 0x6d37 */ { false, 0x6d37, 0x6d37 }, /* 0x6d38 */ { false, 0x6d38, 0x6d38 }, /* 0x6d39 */ { false, 0x6d39, 0x6d39 }, /* 0x6d3a */ { false, 0x6d3a, 0x6d3a }, /* 0x6d3b */ { false, 0x6d3b, 0x6d3b }, /* 0x6d3c */ { false, 0x6d3c, 0x6d3c }, /* 0x6d3d */ { false, 0x6d3d, 0x6d3d }, /* 0x6d3e */ { false, 0x6d3e, 0x6d3e }, /* 0x6d3f */ { false, 0x6d3f, 0x6d3f }, /* 0x6d40 */ { false, 0x6d40, 0x6d40 }, /* 0x6d41 */ { false, 0x6d41, 0x6d41 }, /* 0x6d42 */ { false, 0x6d42, 0x6d42 }, /* 0x6d43 */ { false, 0x6d43, 0x6d43 }, /* 0x6d44 */ { false, 0x6d44, 0x6d44 }, /* 0x6d45 */ { false, 0x6d45, 0x6d45 }, /* 0x6d46 */ { false, 0x6d46, 0x6d46 }, /* 0x6d47 */ { false, 0x6d47, 0x6d47 }, /* 0x6d48 */ { false, 0x6d48, 0x6d48 }, /* 0x6d49 */ { false, 0x6d49, 0x6d49 }, /* 0x6d4a */ { false, 0x6d4a, 0x6d4a }, /* 0x6d4b */ { false, 0x6d4b, 0x6d4b }, /* 0x6d4c */ { false, 0x6d4c, 0x6d4c }, /* 0x6d4d */ { false, 0x6d4d, 0x6d4d }, /* 0x6d4e */ { false, 0x6d4e, 0x6d4e }, /* 0x6d4f */ { false, 0x6d4f, 0x6d4f }, /* 0x6d50 */ { false, 0x6d50, 0x6d50 }, /* 0x6d51 */ { false, 0x6d51, 0x6d51 }, /* 0x6d52 */ { false, 0x6d52, 0x6d52 }, /* 0x6d53 */ { false, 0x6d53, 0x6d53 }, /* 0x6d54 */ { false, 0x6d54, 0x6d54 }, /* 0x6d55 */ { false, 0x6d55, 0x6d55 }, /* 0x6d56 */ { false, 0x6d56, 0x6d56 }, /* 0x6d57 */ { false, 0x6d57, 0x6d57 }, /* 0x6d58 */ { false, 0x6d58, 0x6d58 }, /* 0x6d59 */ { false, 0x6d59, 0x6d59 }, /* 0x6d5a */ { false, 0x6d5a, 0x6d5a }, /* 0x6d5b */ { false, 0x6d5b, 0x6d5b }, /* 0x6d5c */ { false, 0x6d5c, 0x6d5c }, /* 0x6d5d */ { false, 0x6d5d, 0x6d5d }, /* 0x6d5e */ { false, 0x6d5e, 0x6d5e }, /* 0x6d5f */ { false, 0x6d5f, 0x6d5f }, /* 0x6d60 */ { false, 0x6d60, 0x6d60 }, /* 0x6d61 */ { false, 0x6d61, 0x6d61 }, /* 0x6d62 */ { false, 0x6d62, 0x6d62 }, /* 0x6d63 */ { false, 0x6d63, 0x6d63 }, /* 0x6d64 */ { false, 0x6d64, 0x6d64 }, /* 0x6d65 */ { false, 0x6d65, 0x6d65 }, /* 0x6d66 */ { false, 0x6d66, 0x6d66 }, /* 0x6d67 */ { false, 0x6d67, 0x6d67 }, /* 0x6d68 */ { false, 0x6d68, 0x6d68 }, /* 0x6d69 */ { false, 0x6d69, 0x6d69 }, /* 0x6d6a */ { false, 0x6d6a, 0x6d6a }, /* 0x6d6b */ { false, 0x6d6b, 0x6d6b }, /* 0x6d6c */ { false, 0x6d6c, 0x6d6c }, /* 0x6d6d */ { false, 0x6d6d, 0x6d6d }, /* 0x6d6e */ { false, 0x6d6e, 0x6d6e }, /* 0x6d6f */ { false, 0x6d6f, 0x6d6f }, /* 0x6d70 */ { false, 0x6d70, 0x6d70 }, /* 0x6d71 */ { false, 0x6d71, 0x6d71 }, /* 0x6d72 */ { false, 0x6d72, 0x6d72 }, /* 0x6d73 */ { false, 0x6d73, 0x6d73 }, /* 0x6d74 */ { false, 0x6d74, 0x6d74 }, /* 0x6d75 */ { false, 0x6d75, 0x6d75 }, /* 0x6d76 */ { false, 0x6d76, 0x6d76 }, /* 0x6d77 */ { false, 0x6d77, 0x6d77 }, /* 0x6d78 */ { false, 0x6d78, 0x6d78 }, /* 0x6d79 */ { false, 0x6d79, 0x6d79 }, /* 0x6d7a */ { false, 0x6d7a, 0x6d7a }, /* 0x6d7b */ { false, 0x6d7b, 0x6d7b }, /* 0x6d7c */ { false, 0x6d7c, 0x6d7c }, /* 0x6d7d */ { false, 0x6d7d, 0x6d7d }, /* 0x6d7e */ { false, 0x6d7e, 0x6d7e }, /* 0x6d7f */ { false, 0x6d7f, 0x6d7f }, /* 0x6d80 */ { false, 0x6d80, 0x6d80 }, /* 0x6d81 */ { false, 0x6d81, 0x6d81 }, /* 0x6d82 */ { false, 0x6d82, 0x6d82 }, /* 0x6d83 */ { false, 0x6d83, 0x6d83 }, /* 0x6d84 */ { false, 0x6d84, 0x6d84 }, /* 0x6d85 */ { false, 0x6d85, 0x6d85 }, /* 0x6d86 */ { false, 0x6d86, 0x6d86 }, /* 0x6d87 */ { false, 0x6d87, 0x6d87 }, /* 0x6d88 */ { false, 0x6d88, 0x6d88 }, /* 0x6d89 */ { false, 0x6d89, 0x6d89 }, /* 0x6d8a */ { false, 0x6d8a, 0x6d8a }, /* 0x6d8b */ { false, 0x6d8b, 0x6d8b }, /* 0x6d8c */ { false, 0x6d8c, 0x6d8c }, /* 0x6d8d */ { false, 0x6d8d, 0x6d8d }, /* 0x6d8e */ { false, 0x6d8e, 0x6d8e }, /* 0x6d8f */ { false, 0x6d8f, 0x6d8f }, /* 0x6d90 */ { false, 0x6d90, 0x6d90 }, /* 0x6d91 */ { false, 0x6d91, 0x6d91 }, /* 0x6d92 */ { false, 0x6d92, 0x6d92 }, /* 0x6d93 */ { false, 0x6d93, 0x6d93 }, /* 0x6d94 */ { false, 0x6d94, 0x6d94 }, /* 0x6d95 */ { false, 0x6d95, 0x6d95 }, /* 0x6d96 */ { false, 0x6d96, 0x6d96 }, /* 0x6d97 */ { false, 0x6d97, 0x6d97 }, /* 0x6d98 */ { false, 0x6d98, 0x6d98 }, /* 0x6d99 */ { false, 0x6d99, 0x6d99 }, /* 0x6d9a */ { false, 0x6d9a, 0x6d9a }, /* 0x6d9b */ { false, 0x6d9b, 0x6d9b }, /* 0x6d9c */ { false, 0x6d9c, 0x6d9c }, /* 0x6d9d */ { false, 0x6d9d, 0x6d9d }, /* 0x6d9e */ { false, 0x6d9e, 0x6d9e }, /* 0x6d9f */ { false, 0x6d9f, 0x6d9f }, /* 0x6da0 */ { false, 0x6da0, 0x6da0 }, /* 0x6da1 */ { false, 0x6da1, 0x6da1 }, /* 0x6da2 */ { false, 0x6da2, 0x6da2 }, /* 0x6da3 */ { false, 0x6da3, 0x6da3 }, /* 0x6da4 */ { false, 0x6da4, 0x6da4 }, /* 0x6da5 */ { false, 0x6da5, 0x6da5 }, /* 0x6da6 */ { false, 0x6da6, 0x6da6 }, /* 0x6da7 */ { false, 0x6da7, 0x6da7 }, /* 0x6da8 */ { false, 0x6da8, 0x6da8 }, /* 0x6da9 */ { false, 0x6da9, 0x6da9 }, /* 0x6daa */ { false, 0x6daa, 0x6daa }, /* 0x6dab */ { false, 0x6dab, 0x6dab }, /* 0x6dac */ { false, 0x6dac, 0x6dac }, /* 0x6dad */ { false, 0x6dad, 0x6dad }, /* 0x6dae */ { false, 0x6dae, 0x6dae }, /* 0x6daf */ { false, 0x6daf, 0x6daf }, /* 0x6db0 */ { false, 0x6db0, 0x6db0 }, /* 0x6db1 */ { false, 0x6db1, 0x6db1 }, /* 0x6db2 */ { false, 0x6db2, 0x6db2 }, /* 0x6db3 */ { false, 0x6db3, 0x6db3 }, /* 0x6db4 */ { false, 0x6db4, 0x6db4 }, /* 0x6db5 */ { false, 0x6db5, 0x6db5 }, /* 0x6db6 */ { false, 0x6db6, 0x6db6 }, /* 0x6db7 */ { false, 0x6db7, 0x6db7 }, /* 0x6db8 */ { false, 0x6db8, 0x6db8 }, /* 0x6db9 */ { false, 0x6db9, 0x6db9 }, /* 0x6dba */ { false, 0x6dba, 0x6dba }, /* 0x6dbb */ { false, 0x6dbb, 0x6dbb }, /* 0x6dbc */ { false, 0x6dbc, 0x6dbc }, /* 0x6dbd */ { false, 0x6dbd, 0x6dbd }, /* 0x6dbe */ { false, 0x6dbe, 0x6dbe }, /* 0x6dbf */ { false, 0x6dbf, 0x6dbf }, /* 0x6dc0 */ { false, 0x6dc0, 0x6dc0 }, /* 0x6dc1 */ { false, 0x6dc1, 0x6dc1 }, /* 0x6dc2 */ { false, 0x6dc2, 0x6dc2 }, /* 0x6dc3 */ { false, 0x6dc3, 0x6dc3 }, /* 0x6dc4 */ { false, 0x6dc4, 0x6dc4 }, /* 0x6dc5 */ { false, 0x6dc5, 0x6dc5 }, /* 0x6dc6 */ { false, 0x6dc6, 0x6dc6 }, /* 0x6dc7 */ { false, 0x6dc7, 0x6dc7 }, /* 0x6dc8 */ { false, 0x6dc8, 0x6dc8 }, /* 0x6dc9 */ { false, 0x6dc9, 0x6dc9 }, /* 0x6dca */ { false, 0x6dca, 0x6dca }, /* 0x6dcb */ { false, 0x6dcb, 0x6dcb }, /* 0x6dcc */ { false, 0x6dcc, 0x6dcc }, /* 0x6dcd */ { false, 0x6dcd, 0x6dcd }, /* 0x6dce */ { false, 0x6dce, 0x6dce }, /* 0x6dcf */ { false, 0x6dcf, 0x6dcf }, /* 0x6dd0 */ { false, 0x6dd0, 0x6dd0 }, /* 0x6dd1 */ { false, 0x6dd1, 0x6dd1 }, /* 0x6dd2 */ { false, 0x6dd2, 0x6dd2 }, /* 0x6dd3 */ { false, 0x6dd3, 0x6dd3 }, /* 0x6dd4 */ { false, 0x6dd4, 0x6dd4 }, /* 0x6dd5 */ { false, 0x6dd5, 0x6dd5 }, /* 0x6dd6 */ { false, 0x6dd6, 0x6dd6 }, /* 0x6dd7 */ { false, 0x6dd7, 0x6dd7 }, /* 0x6dd8 */ { false, 0x6dd8, 0x6dd8 }, /* 0x6dd9 */ { false, 0x6dd9, 0x6dd9 }, /* 0x6dda */ { false, 0x6dda, 0x6dda }, /* 0x6ddb */ { false, 0x6ddb, 0x6ddb }, /* 0x6ddc */ { false, 0x6ddc, 0x6ddc }, /* 0x6ddd */ { false, 0x6ddd, 0x6ddd }, /* 0x6dde */ { false, 0x6dde, 0x6dde }, /* 0x6ddf */ { false, 0x6ddf, 0x6ddf }, /* 0x6de0 */ { false, 0x6de0, 0x6de0 }, /* 0x6de1 */ { false, 0x6de1, 0x6de1 }, /* 0x6de2 */ { false, 0x6de2, 0x6de2 }, /* 0x6de3 */ { false, 0x6de3, 0x6de3 }, /* 0x6de4 */ { false, 0x6de4, 0x6de4 }, /* 0x6de5 */ { false, 0x6de5, 0x6de5 }, /* 0x6de6 */ { false, 0x6de6, 0x6de6 }, /* 0x6de7 */ { false, 0x6de7, 0x6de7 }, /* 0x6de8 */ { false, 0x6de8, 0x6de8 }, /* 0x6de9 */ { false, 0x6de9, 0x6de9 }, /* 0x6dea */ { false, 0x6dea, 0x6dea }, /* 0x6deb */ { false, 0x6deb, 0x6deb }, /* 0x6dec */ { false, 0x6dec, 0x6dec }, /* 0x6ded */ { false, 0x6ded, 0x6ded }, /* 0x6dee */ { false, 0x6dee, 0x6dee }, /* 0x6def */ { false, 0x6def, 0x6def }, /* 0x6df0 */ { false, 0x6df0, 0x6df0 }, /* 0x6df1 */ { false, 0x6df1, 0x6df1 }, /* 0x6df2 */ { false, 0x6df2, 0x6df2 }, /* 0x6df3 */ { false, 0x6df3, 0x6df3 }, /* 0x6df4 */ { false, 0x6df4, 0x6df4 }, /* 0x6df5 */ { false, 0x6df5, 0x6df5 }, /* 0x6df6 */ { false, 0x6df6, 0x6df6 }, /* 0x6df7 */ { false, 0x6df7, 0x6df7 }, /* 0x6df8 */ { false, 0x6df8, 0x6df8 }, /* 0x6df9 */ { false, 0x6df9, 0x6df9 }, /* 0x6dfa */ { false, 0x6dfa, 0x6dfa }, /* 0x6dfb */ { false, 0x6dfb, 0x6dfb }, /* 0x6dfc */ { false, 0x6dfc, 0x6dfc }, /* 0x6dfd */ { false, 0x6dfd, 0x6dfd }, /* 0x6dfe */ { false, 0x6dfe, 0x6dfe }, /* 0x6dff */ { false, 0x6dff, 0x6dff }, /* 0x6e00 */ { false, 0x6e00, 0x6e00 }, /* 0x6e01 */ { false, 0x6e01, 0x6e01 }, /* 0x6e02 */ { false, 0x6e02, 0x6e02 }, /* 0x6e03 */ { false, 0x6e03, 0x6e03 }, /* 0x6e04 */ { false, 0x6e04, 0x6e04 }, /* 0x6e05 */ { false, 0x6e05, 0x6e05 }, /* 0x6e06 */ { false, 0x6e06, 0x6e06 }, /* 0x6e07 */ { false, 0x6e07, 0x6e07 }, /* 0x6e08 */ { false, 0x6e08, 0x6e08 }, /* 0x6e09 */ { false, 0x6e09, 0x6e09 }, /* 0x6e0a */ { false, 0x6e0a, 0x6e0a }, /* 0x6e0b */ { false, 0x6e0b, 0x6e0b }, /* 0x6e0c */ { false, 0x6e0c, 0x6e0c }, /* 0x6e0d */ { false, 0x6e0d, 0x6e0d }, /* 0x6e0e */ { false, 0x6e0e, 0x6e0e }, /* 0x6e0f */ { false, 0x6e0f, 0x6e0f }, /* 0x6e10 */ { false, 0x6e10, 0x6e10 }, /* 0x6e11 */ { false, 0x6e11, 0x6e11 }, /* 0x6e12 */ { false, 0x6e12, 0x6e12 }, /* 0x6e13 */ { false, 0x6e13, 0x6e13 }, /* 0x6e14 */ { false, 0x6e14, 0x6e14 }, /* 0x6e15 */ { false, 0x6e15, 0x6e15 }, /* 0x6e16 */ { false, 0x6e16, 0x6e16 }, /* 0x6e17 */ { false, 0x6e17, 0x6e17 }, /* 0x6e18 */ { false, 0x6e18, 0x6e18 }, /* 0x6e19 */ { false, 0x6e19, 0x6e19 }, /* 0x6e1a */ { false, 0x6e1a, 0x6e1a }, /* 0x6e1b */ { false, 0x6e1b, 0x6e1b }, /* 0x6e1c */ { false, 0x6e1c, 0x6e1c }, /* 0x6e1d */ { false, 0x6e1d, 0x6e1d }, /* 0x6e1e */ { false, 0x6e1e, 0x6e1e }, /* 0x6e1f */ { false, 0x6e1f, 0x6e1f }, /* 0x6e20 */ { false, 0x6e20, 0x6e20 }, /* 0x6e21 */ { false, 0x6e21, 0x6e21 }, /* 0x6e22 */ { false, 0x6e22, 0x6e22 }, /* 0x6e23 */ { false, 0x6e23, 0x6e23 }, /* 0x6e24 */ { false, 0x6e24, 0x6e24 }, /* 0x6e25 */ { false, 0x6e25, 0x6e25 }, /* 0x6e26 */ { false, 0x6e26, 0x6e26 }, /* 0x6e27 */ { false, 0x6e27, 0x6e27 }, /* 0x6e28 */ { false, 0x6e28, 0x6e28 }, /* 0x6e29 */ { false, 0x6e29, 0x6e29 }, /* 0x6e2a */ { false, 0x6e2a, 0x6e2a }, /* 0x6e2b */ { false, 0x6e2b, 0x6e2b }, /* 0x6e2c */ { false, 0x6e2c, 0x6e2c }, /* 0x6e2d */ { false, 0x6e2d, 0x6e2d }, /* 0x6e2e */ { false, 0x6e2e, 0x6e2e }, /* 0x6e2f */ { false, 0x6e2f, 0x6e2f }, /* 0x6e30 */ { false, 0x6e30, 0x6e30 }, /* 0x6e31 */ { false, 0x6e31, 0x6e31 }, /* 0x6e32 */ { false, 0x6e32, 0x6e32 }, /* 0x6e33 */ { false, 0x6e33, 0x6e33 }, /* 0x6e34 */ { false, 0x6e34, 0x6e34 }, /* 0x6e35 */ { false, 0x6e35, 0x6e35 }, /* 0x6e36 */ { false, 0x6e36, 0x6e36 }, /* 0x6e37 */ { false, 0x6e37, 0x6e37 }, /* 0x6e38 */ { false, 0x6e38, 0x6e38 }, /* 0x6e39 */ { false, 0x6e39, 0x6e39 }, /* 0x6e3a */ { false, 0x6e3a, 0x6e3a }, /* 0x6e3b */ { false, 0x6e3b, 0x6e3b }, /* 0x6e3c */ { false, 0x6e3c, 0x6e3c }, /* 0x6e3d */ { false, 0x6e3d, 0x6e3d }, /* 0x6e3e */ { false, 0x6e3e, 0x6e3e }, /* 0x6e3f */ { false, 0x6e3f, 0x6e3f }, /* 0x6e40 */ { false, 0x6e40, 0x6e40 }, /* 0x6e41 */ { false, 0x6e41, 0x6e41 }, /* 0x6e42 */ { false, 0x6e42, 0x6e42 }, /* 0x6e43 */ { false, 0x6e43, 0x6e43 }, /* 0x6e44 */ { false, 0x6e44, 0x6e44 }, /* 0x6e45 */ { false, 0x6e45, 0x6e45 }, /* 0x6e46 */ { false, 0x6e46, 0x6e46 }, /* 0x6e47 */ { false, 0x6e47, 0x6e47 }, /* 0x6e48 */ { false, 0x6e48, 0x6e48 }, /* 0x6e49 */ { false, 0x6e49, 0x6e49 }, /* 0x6e4a */ { false, 0x6e4a, 0x6e4a }, /* 0x6e4b */ { false, 0x6e4b, 0x6e4b }, /* 0x6e4c */ { false, 0x6e4c, 0x6e4c }, /* 0x6e4d */ { false, 0x6e4d, 0x6e4d }, /* 0x6e4e */ { false, 0x6e4e, 0x6e4e }, /* 0x6e4f */ { false, 0x6e4f, 0x6e4f }, /* 0x6e50 */ { false, 0x6e50, 0x6e50 }, /* 0x6e51 */ { false, 0x6e51, 0x6e51 }, /* 0x6e52 */ { false, 0x6e52, 0x6e52 }, /* 0x6e53 */ { false, 0x6e53, 0x6e53 }, /* 0x6e54 */ { false, 0x6e54, 0x6e54 }, /* 0x6e55 */ { false, 0x6e55, 0x6e55 }, /* 0x6e56 */ { false, 0x6e56, 0x6e56 }, /* 0x6e57 */ { false, 0x6e57, 0x6e57 }, /* 0x6e58 */ { false, 0x6e58, 0x6e58 }, /* 0x6e59 */ { false, 0x6e59, 0x6e59 }, /* 0x6e5a */ { false, 0x6e5a, 0x6e5a }, /* 0x6e5b */ { false, 0x6e5b, 0x6e5b }, /* 0x6e5c */ { false, 0x6e5c, 0x6e5c }, /* 0x6e5d */ { false, 0x6e5d, 0x6e5d }, /* 0x6e5e */ { false, 0x6e5e, 0x6e5e }, /* 0x6e5f */ { false, 0x6e5f, 0x6e5f }, /* 0x6e60 */ { false, 0x6e60, 0x6e60 }, /* 0x6e61 */ { false, 0x6e61, 0x6e61 }, /* 0x6e62 */ { false, 0x6e62, 0x6e62 }, /* 0x6e63 */ { false, 0x6e63, 0x6e63 }, /* 0x6e64 */ { false, 0x6e64, 0x6e64 }, /* 0x6e65 */ { false, 0x6e65, 0x6e65 }, /* 0x6e66 */ { false, 0x6e66, 0x6e66 }, /* 0x6e67 */ { false, 0x6e67, 0x6e67 }, /* 0x6e68 */ { false, 0x6e68, 0x6e68 }, /* 0x6e69 */ { false, 0x6e69, 0x6e69 }, /* 0x6e6a */ { false, 0x6e6a, 0x6e6a }, /* 0x6e6b */ { false, 0x6e6b, 0x6e6b }, /* 0x6e6c */ { false, 0x6e6c, 0x6e6c }, /* 0x6e6d */ { false, 0x6e6d, 0x6e6d }, /* 0x6e6e */ { false, 0x6e6e, 0x6e6e }, /* 0x6e6f */ { false, 0x6e6f, 0x6e6f }, /* 0x6e70 */ { false, 0x6e70, 0x6e70 }, /* 0x6e71 */ { false, 0x6e71, 0x6e71 }, /* 0x6e72 */ { false, 0x6e72, 0x6e72 }, /* 0x6e73 */ { false, 0x6e73, 0x6e73 }, /* 0x6e74 */ { false, 0x6e74, 0x6e74 }, /* 0x6e75 */ { false, 0x6e75, 0x6e75 }, /* 0x6e76 */ { false, 0x6e76, 0x6e76 }, /* 0x6e77 */ { false, 0x6e77, 0x6e77 }, /* 0x6e78 */ { false, 0x6e78, 0x6e78 }, /* 0x6e79 */ { false, 0x6e79, 0x6e79 }, /* 0x6e7a */ { false, 0x6e7a, 0x6e7a }, /* 0x6e7b */ { false, 0x6e7b, 0x6e7b }, /* 0x6e7c */ { false, 0x6e7c, 0x6e7c }, /* 0x6e7d */ { false, 0x6e7d, 0x6e7d }, /* 0x6e7e */ { false, 0x6e7e, 0x6e7e }, /* 0x6e7f */ { false, 0x6e7f, 0x6e7f }, /* 0x6e80 */ { false, 0x6e80, 0x6e80 }, /* 0x6e81 */ { false, 0x6e81, 0x6e81 }, /* 0x6e82 */ { false, 0x6e82, 0x6e82 }, /* 0x6e83 */ { false, 0x6e83, 0x6e83 }, /* 0x6e84 */ { false, 0x6e84, 0x6e84 }, /* 0x6e85 */ { false, 0x6e85, 0x6e85 }, /* 0x6e86 */ { false, 0x6e86, 0x6e86 }, /* 0x6e87 */ { false, 0x6e87, 0x6e87 }, /* 0x6e88 */ { false, 0x6e88, 0x6e88 }, /* 0x6e89 */ { false, 0x6e89, 0x6e89 }, /* 0x6e8a */ { false, 0x6e8a, 0x6e8a }, /* 0x6e8b */ { false, 0x6e8b, 0x6e8b }, /* 0x6e8c */ { false, 0x6e8c, 0x6e8c }, /* 0x6e8d */ { false, 0x6e8d, 0x6e8d }, /* 0x6e8e */ { false, 0x6e8e, 0x6e8e }, /* 0x6e8f */ { false, 0x6e8f, 0x6e8f }, /* 0x6e90 */ { false, 0x6e90, 0x6e90 }, /* 0x6e91 */ { false, 0x6e91, 0x6e91 }, /* 0x6e92 */ { false, 0x6e92, 0x6e92 }, /* 0x6e93 */ { false, 0x6e93, 0x6e93 }, /* 0x6e94 */ { false, 0x6e94, 0x6e94 }, /* 0x6e95 */ { false, 0x6e95, 0x6e95 }, /* 0x6e96 */ { false, 0x6e96, 0x6e96 }, /* 0x6e97 */ { false, 0x6e97, 0x6e97 }, /* 0x6e98 */ { false, 0x6e98, 0x6e98 }, /* 0x6e99 */ { false, 0x6e99, 0x6e99 }, /* 0x6e9a */ { false, 0x6e9a, 0x6e9a }, /* 0x6e9b */ { false, 0x6e9b, 0x6e9b }, /* 0x6e9c */ { false, 0x6e9c, 0x6e9c }, /* 0x6e9d */ { false, 0x6e9d, 0x6e9d }, /* 0x6e9e */ { false, 0x6e9e, 0x6e9e }, /* 0x6e9f */ { false, 0x6e9f, 0x6e9f }, /* 0x6ea0 */ { false, 0x6ea0, 0x6ea0 }, /* 0x6ea1 */ { false, 0x6ea1, 0x6ea1 }, /* 0x6ea2 */ { false, 0x6ea2, 0x6ea2 }, /* 0x6ea3 */ { false, 0x6ea3, 0x6ea3 }, /* 0x6ea4 */ { false, 0x6ea4, 0x6ea4 }, /* 0x6ea5 */ { false, 0x6ea5, 0x6ea5 }, /* 0x6ea6 */ { false, 0x6ea6, 0x6ea6 }, /* 0x6ea7 */ { false, 0x6ea7, 0x6ea7 }, /* 0x6ea8 */ { false, 0x6ea8, 0x6ea8 }, /* 0x6ea9 */ { false, 0x6ea9, 0x6ea9 }, /* 0x6eaa */ { false, 0x6eaa, 0x6eaa }, /* 0x6eab */ { false, 0x6eab, 0x6eab }, /* 0x6eac */ { false, 0x6eac, 0x6eac }, /* 0x6ead */ { false, 0x6ead, 0x6ead }, /* 0x6eae */ { false, 0x6eae, 0x6eae }, /* 0x6eaf */ { false, 0x6eaf, 0x6eaf }, /* 0x6eb0 */ { false, 0x6eb0, 0x6eb0 }, /* 0x6eb1 */ { false, 0x6eb1, 0x6eb1 }, /* 0x6eb2 */ { false, 0x6eb2, 0x6eb2 }, /* 0x6eb3 */ { false, 0x6eb3, 0x6eb3 }, /* 0x6eb4 */ { false, 0x6eb4, 0x6eb4 }, /* 0x6eb5 */ { false, 0x6eb5, 0x6eb5 }, /* 0x6eb6 */ { false, 0x6eb6, 0x6eb6 }, /* 0x6eb7 */ { false, 0x6eb7, 0x6eb7 }, /* 0x6eb8 */ { false, 0x6eb8, 0x6eb8 }, /* 0x6eb9 */ { false, 0x6eb9, 0x6eb9 }, /* 0x6eba */ { false, 0x6eba, 0x6eba }, /* 0x6ebb */ { false, 0x6ebb, 0x6ebb }, /* 0x6ebc */ { false, 0x6ebc, 0x6ebc }, /* 0x6ebd */ { false, 0x6ebd, 0x6ebd }, /* 0x6ebe */ { false, 0x6ebe, 0x6ebe }, /* 0x6ebf */ { false, 0x6ebf, 0x6ebf }, /* 0x6ec0 */ { false, 0x6ec0, 0x6ec0 }, /* 0x6ec1 */ { false, 0x6ec1, 0x6ec1 }, /* 0x6ec2 */ { false, 0x6ec2, 0x6ec2 }, /* 0x6ec3 */ { false, 0x6ec3, 0x6ec3 }, /* 0x6ec4 */ { false, 0x6ec4, 0x6ec4 }, /* 0x6ec5 */ { false, 0x6ec5, 0x6ec5 }, /* 0x6ec6 */ { false, 0x6ec6, 0x6ec6 }, /* 0x6ec7 */ { false, 0x6ec7, 0x6ec7 }, /* 0x6ec8 */ { false, 0x6ec8, 0x6ec8 }, /* 0x6ec9 */ { false, 0x6ec9, 0x6ec9 }, /* 0x6eca */ { false, 0x6eca, 0x6eca }, /* 0x6ecb */ { false, 0x6ecb, 0x6ecb }, /* 0x6ecc */ { false, 0x6ecc, 0x6ecc }, /* 0x6ecd */ { false, 0x6ecd, 0x6ecd }, /* 0x6ece */ { false, 0x6ece, 0x6ece }, /* 0x6ecf */ { false, 0x6ecf, 0x6ecf }, /* 0x6ed0 */ { false, 0x6ed0, 0x6ed0 }, /* 0x6ed1 */ { false, 0x6ed1, 0x6ed1 }, /* 0x6ed2 */ { false, 0x6ed2, 0x6ed2 }, /* 0x6ed3 */ { false, 0x6ed3, 0x6ed3 }, /* 0x6ed4 */ { false, 0x6ed4, 0x6ed4 }, /* 0x6ed5 */ { false, 0x6ed5, 0x6ed5 }, /* 0x6ed6 */ { false, 0x6ed6, 0x6ed6 }, /* 0x6ed7 */ { false, 0x6ed7, 0x6ed7 }, /* 0x6ed8 */ { false, 0x6ed8, 0x6ed8 }, /* 0x6ed9 */ { false, 0x6ed9, 0x6ed9 }, /* 0x6eda */ { false, 0x6eda, 0x6eda }, /* 0x6edb */ { false, 0x6edb, 0x6edb }, /* 0x6edc */ { false, 0x6edc, 0x6edc }, /* 0x6edd */ { false, 0x6edd, 0x6edd }, /* 0x6ede */ { false, 0x6ede, 0x6ede }, /* 0x6edf */ { false, 0x6edf, 0x6edf }, /* 0x6ee0 */ { false, 0x6ee0, 0x6ee0 }, /* 0x6ee1 */ { false, 0x6ee1, 0x6ee1 }, /* 0x6ee2 */ { false, 0x6ee2, 0x6ee2 }, /* 0x6ee3 */ { false, 0x6ee3, 0x6ee3 }, /* 0x6ee4 */ { false, 0x6ee4, 0x6ee4 }, /* 0x6ee5 */ { false, 0x6ee5, 0x6ee5 }, /* 0x6ee6 */ { false, 0x6ee6, 0x6ee6 }, /* 0x6ee7 */ { false, 0x6ee7, 0x6ee7 }, /* 0x6ee8 */ { false, 0x6ee8, 0x6ee8 }, /* 0x6ee9 */ { false, 0x6ee9, 0x6ee9 }, /* 0x6eea */ { false, 0x6eea, 0x6eea }, /* 0x6eeb */ { false, 0x6eeb, 0x6eeb }, /* 0x6eec */ { false, 0x6eec, 0x6eec }, /* 0x6eed */ { false, 0x6eed, 0x6eed }, /* 0x6eee */ { false, 0x6eee, 0x6eee }, /* 0x6eef */ { false, 0x6eef, 0x6eef }, /* 0x6ef0 */ { false, 0x6ef0, 0x6ef0 }, /* 0x6ef1 */ { false, 0x6ef1, 0x6ef1 }, /* 0x6ef2 */ { false, 0x6ef2, 0x6ef2 }, /* 0x6ef3 */ { false, 0x6ef3, 0x6ef3 }, /* 0x6ef4 */ { false, 0x6ef4, 0x6ef4 }, /* 0x6ef5 */ { false, 0x6ef5, 0x6ef5 }, /* 0x6ef6 */ { false, 0x6ef6, 0x6ef6 }, /* 0x6ef7 */ { false, 0x6ef7, 0x6ef7 }, /* 0x6ef8 */ { false, 0x6ef8, 0x6ef8 }, /* 0x6ef9 */ { false, 0x6ef9, 0x6ef9 }, /* 0x6efa */ { false, 0x6efa, 0x6efa }, /* 0x6efb */ { false, 0x6efb, 0x6efb }, /* 0x6efc */ { false, 0x6efc, 0x6efc }, /* 0x6efd */ { false, 0x6efd, 0x6efd }, /* 0x6efe */ { false, 0x6efe, 0x6efe }, /* 0x6eff */ { false, 0x6eff, 0x6eff }, /* 0x6f00 */ { false, 0x6f00, 0x6f00 }, /* 0x6f01 */ { false, 0x6f01, 0x6f01 }, /* 0x6f02 */ { false, 0x6f02, 0x6f02 }, /* 0x6f03 */ { false, 0x6f03, 0x6f03 }, /* 0x6f04 */ { false, 0x6f04, 0x6f04 }, /* 0x6f05 */ { false, 0x6f05, 0x6f05 }, /* 0x6f06 */ { false, 0x6f06, 0x6f06 }, /* 0x6f07 */ { false, 0x6f07, 0x6f07 }, /* 0x6f08 */ { false, 0x6f08, 0x6f08 }, /* 0x6f09 */ { false, 0x6f09, 0x6f09 }, /* 0x6f0a */ { false, 0x6f0a, 0x6f0a }, /* 0x6f0b */ { false, 0x6f0b, 0x6f0b }, /* 0x6f0c */ { false, 0x6f0c, 0x6f0c }, /* 0x6f0d */ { false, 0x6f0d, 0x6f0d }, /* 0x6f0e */ { false, 0x6f0e, 0x6f0e }, /* 0x6f0f */ { false, 0x6f0f, 0x6f0f }, /* 0x6f10 */ { false, 0x6f10, 0x6f10 }, /* 0x6f11 */ { false, 0x6f11, 0x6f11 }, /* 0x6f12 */ { false, 0x6f12, 0x6f12 }, /* 0x6f13 */ { false, 0x6f13, 0x6f13 }, /* 0x6f14 */ { false, 0x6f14, 0x6f14 }, /* 0x6f15 */ { false, 0x6f15, 0x6f15 }, /* 0x6f16 */ { false, 0x6f16, 0x6f16 }, /* 0x6f17 */ { false, 0x6f17, 0x6f17 }, /* 0x6f18 */ { false, 0x6f18, 0x6f18 }, /* 0x6f19 */ { false, 0x6f19, 0x6f19 }, /* 0x6f1a */ { false, 0x6f1a, 0x6f1a }, /* 0x6f1b */ { false, 0x6f1b, 0x6f1b }, /* 0x6f1c */ { false, 0x6f1c, 0x6f1c }, /* 0x6f1d */ { false, 0x6f1d, 0x6f1d }, /* 0x6f1e */ { false, 0x6f1e, 0x6f1e }, /* 0x6f1f */ { false, 0x6f1f, 0x6f1f }, /* 0x6f20 */ { false, 0x6f20, 0x6f20 }, /* 0x6f21 */ { false, 0x6f21, 0x6f21 }, /* 0x6f22 */ { false, 0x6f22, 0x6f22 }, /* 0x6f23 */ { false, 0x6f23, 0x6f23 }, /* 0x6f24 */ { false, 0x6f24, 0x6f24 }, /* 0x6f25 */ { false, 0x6f25, 0x6f25 }, /* 0x6f26 */ { false, 0x6f26, 0x6f26 }, /* 0x6f27 */ { false, 0x6f27, 0x6f27 }, /* 0x6f28 */ { false, 0x6f28, 0x6f28 }, /* 0x6f29 */ { false, 0x6f29, 0x6f29 }, /* 0x6f2a */ { false, 0x6f2a, 0x6f2a }, /* 0x6f2b */ { false, 0x6f2b, 0x6f2b }, /* 0x6f2c */ { false, 0x6f2c, 0x6f2c }, /* 0x6f2d */ { false, 0x6f2d, 0x6f2d }, /* 0x6f2e */ { false, 0x6f2e, 0x6f2e }, /* 0x6f2f */ { false, 0x6f2f, 0x6f2f }, /* 0x6f30 */ { false, 0x6f30, 0x6f30 }, /* 0x6f31 */ { false, 0x6f31, 0x6f31 }, /* 0x6f32 */ { false, 0x6f32, 0x6f32 }, /* 0x6f33 */ { false, 0x6f33, 0x6f33 }, /* 0x6f34 */ { false, 0x6f34, 0x6f34 }, /* 0x6f35 */ { false, 0x6f35, 0x6f35 }, /* 0x6f36 */ { false, 0x6f36, 0x6f36 }, /* 0x6f37 */ { false, 0x6f37, 0x6f37 }, /* 0x6f38 */ { false, 0x6f38, 0x6f38 }, /* 0x6f39 */ { false, 0x6f39, 0x6f39 }, /* 0x6f3a */ { false, 0x6f3a, 0x6f3a }, /* 0x6f3b */ { false, 0x6f3b, 0x6f3b }, /* 0x6f3c */ { false, 0x6f3c, 0x6f3c }, /* 0x6f3d */ { false, 0x6f3d, 0x6f3d }, /* 0x6f3e */ { false, 0x6f3e, 0x6f3e }, /* 0x6f3f */ { false, 0x6f3f, 0x6f3f }, /* 0x6f40 */ { false, 0x6f40, 0x6f40 }, /* 0x6f41 */ { false, 0x6f41, 0x6f41 }, /* 0x6f42 */ { false, 0x6f42, 0x6f42 }, /* 0x6f43 */ { false, 0x6f43, 0x6f43 }, /* 0x6f44 */ { false, 0x6f44, 0x6f44 }, /* 0x6f45 */ { false, 0x6f45, 0x6f45 }, /* 0x6f46 */ { false, 0x6f46, 0x6f46 }, /* 0x6f47 */ { false, 0x6f47, 0x6f47 }, /* 0x6f48 */ { false, 0x6f48, 0x6f48 }, /* 0x6f49 */ { false, 0x6f49, 0x6f49 }, /* 0x6f4a */ { false, 0x6f4a, 0x6f4a }, /* 0x6f4b */ { false, 0x6f4b, 0x6f4b }, /* 0x6f4c */ { false, 0x6f4c, 0x6f4c }, /* 0x6f4d */ { false, 0x6f4d, 0x6f4d }, /* 0x6f4e */ { false, 0x6f4e, 0x6f4e }, /* 0x6f4f */ { false, 0x6f4f, 0x6f4f }, /* 0x6f50 */ { false, 0x6f50, 0x6f50 }, /* 0x6f51 */ { false, 0x6f51, 0x6f51 }, /* 0x6f52 */ { false, 0x6f52, 0x6f52 }, /* 0x6f53 */ { false, 0x6f53, 0x6f53 }, /* 0x6f54 */ { false, 0x6f54, 0x6f54 }, /* 0x6f55 */ { false, 0x6f55, 0x6f55 }, /* 0x6f56 */ { false, 0x6f56, 0x6f56 }, /* 0x6f57 */ { false, 0x6f57, 0x6f57 }, /* 0x6f58 */ { false, 0x6f58, 0x6f58 }, /* 0x6f59 */ { false, 0x6f59, 0x6f59 }, /* 0x6f5a */ { false, 0x6f5a, 0x6f5a }, /* 0x6f5b */ { false, 0x6f5b, 0x6f5b }, /* 0x6f5c */ { false, 0x6f5c, 0x6f5c }, /* 0x6f5d */ { false, 0x6f5d, 0x6f5d }, /* 0x6f5e */ { false, 0x6f5e, 0x6f5e }, /* 0x6f5f */ { false, 0x6f5f, 0x6f5f }, /* 0x6f60 */ { false, 0x6f60, 0x6f60 }, /* 0x6f61 */ { false, 0x6f61, 0x6f61 }, /* 0x6f62 */ { false, 0x6f62, 0x6f62 }, /* 0x6f63 */ { false, 0x6f63, 0x6f63 }, /* 0x6f64 */ { false, 0x6f64, 0x6f64 }, /* 0x6f65 */ { false, 0x6f65, 0x6f65 }, /* 0x6f66 */ { false, 0x6f66, 0x6f66 }, /* 0x6f67 */ { false, 0x6f67, 0x6f67 }, /* 0x6f68 */ { false, 0x6f68, 0x6f68 }, /* 0x6f69 */ { false, 0x6f69, 0x6f69 }, /* 0x6f6a */ { false, 0x6f6a, 0x6f6a }, /* 0x6f6b */ { false, 0x6f6b, 0x6f6b }, /* 0x6f6c */ { false, 0x6f6c, 0x6f6c }, /* 0x6f6d */ { false, 0x6f6d, 0x6f6d }, /* 0x6f6e */ { false, 0x6f6e, 0x6f6e }, /* 0x6f6f */ { false, 0x6f6f, 0x6f6f }, /* 0x6f70 */ { false, 0x6f70, 0x6f70 }, /* 0x6f71 */ { false, 0x6f71, 0x6f71 }, /* 0x6f72 */ { false, 0x6f72, 0x6f72 }, /* 0x6f73 */ { false, 0x6f73, 0x6f73 }, /* 0x6f74 */ { false, 0x6f74, 0x6f74 }, /* 0x6f75 */ { false, 0x6f75, 0x6f75 }, /* 0x6f76 */ { false, 0x6f76, 0x6f76 }, /* 0x6f77 */ { false, 0x6f77, 0x6f77 }, /* 0x6f78 */ { false, 0x6f78, 0x6f78 }, /* 0x6f79 */ { false, 0x6f79, 0x6f79 }, /* 0x6f7a */ { false, 0x6f7a, 0x6f7a }, /* 0x6f7b */ { false, 0x6f7b, 0x6f7b }, /* 0x6f7c */ { false, 0x6f7c, 0x6f7c }, /* 0x6f7d */ { false, 0x6f7d, 0x6f7d }, /* 0x6f7e */ { false, 0x6f7e, 0x6f7e }, /* 0x6f7f */ { false, 0x6f7f, 0x6f7f }, /* 0x6f80 */ { false, 0x6f80, 0x6f80 }, /* 0x6f81 */ { false, 0x6f81, 0x6f81 }, /* 0x6f82 */ { false, 0x6f82, 0x6f82 }, /* 0x6f83 */ { false, 0x6f83, 0x6f83 }, /* 0x6f84 */ { false, 0x6f84, 0x6f84 }, /* 0x6f85 */ { false, 0x6f85, 0x6f85 }, /* 0x6f86 */ { false, 0x6f86, 0x6f86 }, /* 0x6f87 */ { false, 0x6f87, 0x6f87 }, /* 0x6f88 */ { false, 0x6f88, 0x6f88 }, /* 0x6f89 */ { false, 0x6f89, 0x6f89 }, /* 0x6f8a */ { false, 0x6f8a, 0x6f8a }, /* 0x6f8b */ { false, 0x6f8b, 0x6f8b }, /* 0x6f8c */ { false, 0x6f8c, 0x6f8c }, /* 0x6f8d */ { false, 0x6f8d, 0x6f8d }, /* 0x6f8e */ { false, 0x6f8e, 0x6f8e }, /* 0x6f8f */ { false, 0x6f8f, 0x6f8f }, /* 0x6f90 */ { false, 0x6f90, 0x6f90 }, /* 0x6f91 */ { false, 0x6f91, 0x6f91 }, /* 0x6f92 */ { false, 0x6f92, 0x6f92 }, /* 0x6f93 */ { false, 0x6f93, 0x6f93 }, /* 0x6f94 */ { false, 0x6f94, 0x6f94 }, /* 0x6f95 */ { false, 0x6f95, 0x6f95 }, /* 0x6f96 */ { false, 0x6f96, 0x6f96 }, /* 0x6f97 */ { false, 0x6f97, 0x6f97 }, /* 0x6f98 */ { false, 0x6f98, 0x6f98 }, /* 0x6f99 */ { false, 0x6f99, 0x6f99 }, /* 0x6f9a */ { false, 0x6f9a, 0x6f9a }, /* 0x6f9b */ { false, 0x6f9b, 0x6f9b }, /* 0x6f9c */ { false, 0x6f9c, 0x6f9c }, /* 0x6f9d */ { false, 0x6f9d, 0x6f9d }, /* 0x6f9e */ { false, 0x6f9e, 0x6f9e }, /* 0x6f9f */ { false, 0x6f9f, 0x6f9f }, /* 0x6fa0 */ { false, 0x6fa0, 0x6fa0 }, /* 0x6fa1 */ { false, 0x6fa1, 0x6fa1 }, /* 0x6fa2 */ { false, 0x6fa2, 0x6fa2 }, /* 0x6fa3 */ { false, 0x6fa3, 0x6fa3 }, /* 0x6fa4 */ { false, 0x6fa4, 0x6fa4 }, /* 0x6fa5 */ { false, 0x6fa5, 0x6fa5 }, /* 0x6fa6 */ { false, 0x6fa6, 0x6fa6 }, /* 0x6fa7 */ { false, 0x6fa7, 0x6fa7 }, /* 0x6fa8 */ { false, 0x6fa8, 0x6fa8 }, /* 0x6fa9 */ { false, 0x6fa9, 0x6fa9 }, /* 0x6faa */ { false, 0x6faa, 0x6faa }, /* 0x6fab */ { false, 0x6fab, 0x6fab }, /* 0x6fac */ { false, 0x6fac, 0x6fac }, /* 0x6fad */ { false, 0x6fad, 0x6fad }, /* 0x6fae */ { false, 0x6fae, 0x6fae }, /* 0x6faf */ { false, 0x6faf, 0x6faf }, /* 0x6fb0 */ { false, 0x6fb0, 0x6fb0 }, /* 0x6fb1 */ { false, 0x6fb1, 0x6fb1 }, /* 0x6fb2 */ { false, 0x6fb2, 0x6fb2 }, /* 0x6fb3 */ { false, 0x6fb3, 0x6fb3 }, /* 0x6fb4 */ { false, 0x6fb4, 0x6fb4 }, /* 0x6fb5 */ { false, 0x6fb5, 0x6fb5 }, /* 0x6fb6 */ { false, 0x6fb6, 0x6fb6 }, /* 0x6fb7 */ { false, 0x6fb7, 0x6fb7 }, /* 0x6fb8 */ { false, 0x6fb8, 0x6fb8 }, /* 0x6fb9 */ { false, 0x6fb9, 0x6fb9 }, /* 0x6fba */ { false, 0x6fba, 0x6fba }, /* 0x6fbb */ { false, 0x6fbb, 0x6fbb }, /* 0x6fbc */ { false, 0x6fbc, 0x6fbc }, /* 0x6fbd */ { false, 0x6fbd, 0x6fbd }, /* 0x6fbe */ { false, 0x6fbe, 0x6fbe }, /* 0x6fbf */ { false, 0x6fbf, 0x6fbf }, /* 0x6fc0 */ { false, 0x6fc0, 0x6fc0 }, /* 0x6fc1 */ { false, 0x6fc1, 0x6fc1 }, /* 0x6fc2 */ { false, 0x6fc2, 0x6fc2 }, /* 0x6fc3 */ { false, 0x6fc3, 0x6fc3 }, /* 0x6fc4 */ { false, 0x6fc4, 0x6fc4 }, /* 0x6fc5 */ { false, 0x6fc5, 0x6fc5 }, /* 0x6fc6 */ { false, 0x6fc6, 0x6fc6 }, /* 0x6fc7 */ { false, 0x6fc7, 0x6fc7 }, /* 0x6fc8 */ { false, 0x6fc8, 0x6fc8 }, /* 0x6fc9 */ { false, 0x6fc9, 0x6fc9 }, /* 0x6fca */ { false, 0x6fca, 0x6fca }, /* 0x6fcb */ { false, 0x6fcb, 0x6fcb }, /* 0x6fcc */ { false, 0x6fcc, 0x6fcc }, /* 0x6fcd */ { false, 0x6fcd, 0x6fcd }, /* 0x6fce */ { false, 0x6fce, 0x6fce }, /* 0x6fcf */ { false, 0x6fcf, 0x6fcf }, /* 0x6fd0 */ { false, 0x6fd0, 0x6fd0 }, /* 0x6fd1 */ { false, 0x6fd1, 0x6fd1 }, /* 0x6fd2 */ { false, 0x6fd2, 0x6fd2 }, /* 0x6fd3 */ { false, 0x6fd3, 0x6fd3 }, /* 0x6fd4 */ { false, 0x6fd4, 0x6fd4 }, /* 0x6fd5 */ { false, 0x6fd5, 0x6fd5 }, /* 0x6fd6 */ { false, 0x6fd6, 0x6fd6 }, /* 0x6fd7 */ { false, 0x6fd7, 0x6fd7 }, /* 0x6fd8 */ { false, 0x6fd8, 0x6fd8 }, /* 0x6fd9 */ { false, 0x6fd9, 0x6fd9 }, /* 0x6fda */ { false, 0x6fda, 0x6fda }, /* 0x6fdb */ { false, 0x6fdb, 0x6fdb }, /* 0x6fdc */ { false, 0x6fdc, 0x6fdc }, /* 0x6fdd */ { false, 0x6fdd, 0x6fdd }, /* 0x6fde */ { false, 0x6fde, 0x6fde }, /* 0x6fdf */ { false, 0x6fdf, 0x6fdf }, /* 0x6fe0 */ { false, 0x6fe0, 0x6fe0 }, /* 0x6fe1 */ { false, 0x6fe1, 0x6fe1 }, /* 0x6fe2 */ { false, 0x6fe2, 0x6fe2 }, /* 0x6fe3 */ { false, 0x6fe3, 0x6fe3 }, /* 0x6fe4 */ { false, 0x6fe4, 0x6fe4 }, /* 0x6fe5 */ { false, 0x6fe5, 0x6fe5 }, /* 0x6fe6 */ { false, 0x6fe6, 0x6fe6 }, /* 0x6fe7 */ { false, 0x6fe7, 0x6fe7 }, /* 0x6fe8 */ { false, 0x6fe8, 0x6fe8 }, /* 0x6fe9 */ { false, 0x6fe9, 0x6fe9 }, /* 0x6fea */ { false, 0x6fea, 0x6fea }, /* 0x6feb */ { false, 0x6feb, 0x6feb }, /* 0x6fec */ { false, 0x6fec, 0x6fec }, /* 0x6fed */ { false, 0x6fed, 0x6fed }, /* 0x6fee */ { false, 0x6fee, 0x6fee }, /* 0x6fef */ { false, 0x6fef, 0x6fef }, /* 0x6ff0 */ { false, 0x6ff0, 0x6ff0 }, /* 0x6ff1 */ { false, 0x6ff1, 0x6ff1 }, /* 0x6ff2 */ { false, 0x6ff2, 0x6ff2 }, /* 0x6ff3 */ { false, 0x6ff3, 0x6ff3 }, /* 0x6ff4 */ { false, 0x6ff4, 0x6ff4 }, /* 0x6ff5 */ { false, 0x6ff5, 0x6ff5 }, /* 0x6ff6 */ { false, 0x6ff6, 0x6ff6 }, /* 0x6ff7 */ { false, 0x6ff7, 0x6ff7 }, /* 0x6ff8 */ { false, 0x6ff8, 0x6ff8 }, /* 0x6ff9 */ { false, 0x6ff9, 0x6ff9 }, /* 0x6ffa */ { false, 0x6ffa, 0x6ffa }, /* 0x6ffb */ { false, 0x6ffb, 0x6ffb }, /* 0x6ffc */ { false, 0x6ffc, 0x6ffc }, /* 0x6ffd */ { false, 0x6ffd, 0x6ffd }, /* 0x6ffe */ { false, 0x6ffe, 0x6ffe }, /* 0x6fff */ { false, 0x6fff, 0x6fff }, /* 0x7000 */ { false, 0x7000, 0x7000 }, /* 0x7001 */ { false, 0x7001, 0x7001 }, /* 0x7002 */ { false, 0x7002, 0x7002 }, /* 0x7003 */ { false, 0x7003, 0x7003 }, /* 0x7004 */ { false, 0x7004, 0x7004 }, /* 0x7005 */ { false, 0x7005, 0x7005 }, /* 0x7006 */ { false, 0x7006, 0x7006 }, /* 0x7007 */ { false, 0x7007, 0x7007 }, /* 0x7008 */ { false, 0x7008, 0x7008 }, /* 0x7009 */ { false, 0x7009, 0x7009 }, /* 0x700a */ { false, 0x700a, 0x700a }, /* 0x700b */ { false, 0x700b, 0x700b }, /* 0x700c */ { false, 0x700c, 0x700c }, /* 0x700d */ { false, 0x700d, 0x700d }, /* 0x700e */ { false, 0x700e, 0x700e }, /* 0x700f */ { false, 0x700f, 0x700f }, /* 0x7010 */ { false, 0x7010, 0x7010 }, /* 0x7011 */ { false, 0x7011, 0x7011 }, /* 0x7012 */ { false, 0x7012, 0x7012 }, /* 0x7013 */ { false, 0x7013, 0x7013 }, /* 0x7014 */ { false, 0x7014, 0x7014 }, /* 0x7015 */ { false, 0x7015, 0x7015 }, /* 0x7016 */ { false, 0x7016, 0x7016 }, /* 0x7017 */ { false, 0x7017, 0x7017 }, /* 0x7018 */ { false, 0x7018, 0x7018 }, /* 0x7019 */ { false, 0x7019, 0x7019 }, /* 0x701a */ { false, 0x701a, 0x701a }, /* 0x701b */ { false, 0x701b, 0x701b }, /* 0x701c */ { false, 0x701c, 0x701c }, /* 0x701d */ { false, 0x701d, 0x701d }, /* 0x701e */ { false, 0x701e, 0x701e }, /* 0x701f */ { false, 0x701f, 0x701f }, /* 0x7020 */ { false, 0x7020, 0x7020 }, /* 0x7021 */ { false, 0x7021, 0x7021 }, /* 0x7022 */ { false, 0x7022, 0x7022 }, /* 0x7023 */ { false, 0x7023, 0x7023 }, /* 0x7024 */ { false, 0x7024, 0x7024 }, /* 0x7025 */ { false, 0x7025, 0x7025 }, /* 0x7026 */ { false, 0x7026, 0x7026 }, /* 0x7027 */ { false, 0x7027, 0x7027 }, /* 0x7028 */ { false, 0x7028, 0x7028 }, /* 0x7029 */ { false, 0x7029, 0x7029 }, /* 0x702a */ { false, 0x702a, 0x702a }, /* 0x702b */ { false, 0x702b, 0x702b }, /* 0x702c */ { false, 0x702c, 0x702c }, /* 0x702d */ { false, 0x702d, 0x702d }, /* 0x702e */ { false, 0x702e, 0x702e }, /* 0x702f */ { false, 0x702f, 0x702f }, /* 0x7030 */ { false, 0x7030, 0x7030 }, /* 0x7031 */ { false, 0x7031, 0x7031 }, /* 0x7032 */ { false, 0x7032, 0x7032 }, /* 0x7033 */ { false, 0x7033, 0x7033 }, /* 0x7034 */ { false, 0x7034, 0x7034 }, /* 0x7035 */ { false, 0x7035, 0x7035 }, /* 0x7036 */ { false, 0x7036, 0x7036 }, /* 0x7037 */ { false, 0x7037, 0x7037 }, /* 0x7038 */ { false, 0x7038, 0x7038 }, /* 0x7039 */ { false, 0x7039, 0x7039 }, /* 0x703a */ { false, 0x703a, 0x703a }, /* 0x703b */ { false, 0x703b, 0x703b }, /* 0x703c */ { false, 0x703c, 0x703c }, /* 0x703d */ { false, 0x703d, 0x703d }, /* 0x703e */ { false, 0x703e, 0x703e }, /* 0x703f */ { false, 0x703f, 0x703f }, /* 0x7040 */ { false, 0x7040, 0x7040 }, /* 0x7041 */ { false, 0x7041, 0x7041 }, /* 0x7042 */ { false, 0x7042, 0x7042 }, /* 0x7043 */ { false, 0x7043, 0x7043 }, /* 0x7044 */ { false, 0x7044, 0x7044 }, /* 0x7045 */ { false, 0x7045, 0x7045 }, /* 0x7046 */ { false, 0x7046, 0x7046 }, /* 0x7047 */ { false, 0x7047, 0x7047 }, /* 0x7048 */ { false, 0x7048, 0x7048 }, /* 0x7049 */ { false, 0x7049, 0x7049 }, /* 0x704a */ { false, 0x704a, 0x704a }, /* 0x704b */ { false, 0x704b, 0x704b }, /* 0x704c */ { false, 0x704c, 0x704c }, /* 0x704d */ { false, 0x704d, 0x704d }, /* 0x704e */ { false, 0x704e, 0x704e }, /* 0x704f */ { false, 0x704f, 0x704f }, /* 0x7050 */ { false, 0x7050, 0x7050 }, /* 0x7051 */ { false, 0x7051, 0x7051 }, /* 0x7052 */ { false, 0x7052, 0x7052 }, /* 0x7053 */ { false, 0x7053, 0x7053 }, /* 0x7054 */ { false, 0x7054, 0x7054 }, /* 0x7055 */ { false, 0x7055, 0x7055 }, /* 0x7056 */ { false, 0x7056, 0x7056 }, /* 0x7057 */ { false, 0x7057, 0x7057 }, /* 0x7058 */ { false, 0x7058, 0x7058 }, /* 0x7059 */ { false, 0x7059, 0x7059 }, /* 0x705a */ { false, 0x705a, 0x705a }, /* 0x705b */ { false, 0x705b, 0x705b }, /* 0x705c */ { false, 0x705c, 0x705c }, /* 0x705d */ { false, 0x705d, 0x705d }, /* 0x705e */ { false, 0x705e, 0x705e }, /* 0x705f */ { false, 0x705f, 0x705f }, /* 0x7060 */ { false, 0x7060, 0x7060 }, /* 0x7061 */ { false, 0x7061, 0x7061 }, /* 0x7062 */ { false, 0x7062, 0x7062 }, /* 0x7063 */ { false, 0x7063, 0x7063 }, /* 0x7064 */ { false, 0x7064, 0x7064 }, /* 0x7065 */ { false, 0x7065, 0x7065 }, /* 0x7066 */ { false, 0x7066, 0x7066 }, /* 0x7067 */ { false, 0x7067, 0x7067 }, /* 0x7068 */ { false, 0x7068, 0x7068 }, /* 0x7069 */ { false, 0x7069, 0x7069 }, /* 0x706a */ { false, 0x706a, 0x706a }, /* 0x706b */ { false, 0x706b, 0x706b }, /* 0x706c */ { false, 0x706c, 0x706c }, /* 0x706d */ { false, 0x706d, 0x706d }, /* 0x706e */ { false, 0x706e, 0x706e }, /* 0x706f */ { false, 0x706f, 0x706f }, /* 0x7070 */ { false, 0x7070, 0x7070 }, /* 0x7071 */ { false, 0x7071, 0x7071 }, /* 0x7072 */ { false, 0x7072, 0x7072 }, /* 0x7073 */ { false, 0x7073, 0x7073 }, /* 0x7074 */ { false, 0x7074, 0x7074 }, /* 0x7075 */ { false, 0x7075, 0x7075 }, /* 0x7076 */ { false, 0x7076, 0x7076 }, /* 0x7077 */ { false, 0x7077, 0x7077 }, /* 0x7078 */ { false, 0x7078, 0x7078 }, /* 0x7079 */ { false, 0x7079, 0x7079 }, /* 0x707a */ { false, 0x707a, 0x707a }, /* 0x707b */ { false, 0x707b, 0x707b }, /* 0x707c */ { false, 0x707c, 0x707c }, /* 0x707d */ { false, 0x707d, 0x707d }, /* 0x707e */ { false, 0x707e, 0x707e }, /* 0x707f */ { false, 0x707f, 0x707f }, /* 0x7080 */ { false, 0x7080, 0x7080 }, /* 0x7081 */ { false, 0x7081, 0x7081 }, /* 0x7082 */ { false, 0x7082, 0x7082 }, /* 0x7083 */ { false, 0x7083, 0x7083 }, /* 0x7084 */ { false, 0x7084, 0x7084 }, /* 0x7085 */ { false, 0x7085, 0x7085 }, /* 0x7086 */ { false, 0x7086, 0x7086 }, /* 0x7087 */ { false, 0x7087, 0x7087 }, /* 0x7088 */ { false, 0x7088, 0x7088 }, /* 0x7089 */ { false, 0x7089, 0x7089 }, /* 0x708a */ { false, 0x708a, 0x708a }, /* 0x708b */ { false, 0x708b, 0x708b }, /* 0x708c */ { false, 0x708c, 0x708c }, /* 0x708d */ { false, 0x708d, 0x708d }, /* 0x708e */ { false, 0x708e, 0x708e }, /* 0x708f */ { false, 0x708f, 0x708f }, /* 0x7090 */ { false, 0x7090, 0x7090 }, /* 0x7091 */ { false, 0x7091, 0x7091 }, /* 0x7092 */ { false, 0x7092, 0x7092 }, /* 0x7093 */ { false, 0x7093, 0x7093 }, /* 0x7094 */ { false, 0x7094, 0x7094 }, /* 0x7095 */ { false, 0x7095, 0x7095 }, /* 0x7096 */ { false, 0x7096, 0x7096 }, /* 0x7097 */ { false, 0x7097, 0x7097 }, /* 0x7098 */ { false, 0x7098, 0x7098 }, /* 0x7099 */ { false, 0x7099, 0x7099 }, /* 0x709a */ { false, 0x709a, 0x709a }, /* 0x709b */ { false, 0x709b, 0x709b }, /* 0x709c */ { false, 0x709c, 0x709c }, /* 0x709d */ { false, 0x709d, 0x709d }, /* 0x709e */ { false, 0x709e, 0x709e }, /* 0x709f */ { false, 0x709f, 0x709f }, /* 0x70a0 */ { false, 0x70a0, 0x70a0 }, /* 0x70a1 */ { false, 0x70a1, 0x70a1 }, /* 0x70a2 */ { false, 0x70a2, 0x70a2 }, /* 0x70a3 */ { false, 0x70a3, 0x70a3 }, /* 0x70a4 */ { false, 0x70a4, 0x70a4 }, /* 0x70a5 */ { false, 0x70a5, 0x70a5 }, /* 0x70a6 */ { false, 0x70a6, 0x70a6 }, /* 0x70a7 */ { false, 0x70a7, 0x70a7 }, /* 0x70a8 */ { false, 0x70a8, 0x70a8 }, /* 0x70a9 */ { false, 0x70a9, 0x70a9 }, /* 0x70aa */ { false, 0x70aa, 0x70aa }, /* 0x70ab */ { false, 0x70ab, 0x70ab }, /* 0x70ac */ { false, 0x70ac, 0x70ac }, /* 0x70ad */ { false, 0x70ad, 0x70ad }, /* 0x70ae */ { false, 0x70ae, 0x70ae }, /* 0x70af */ { false, 0x70af, 0x70af }, /* 0x70b0 */ { false, 0x70b0, 0x70b0 }, /* 0x70b1 */ { false, 0x70b1, 0x70b1 }, /* 0x70b2 */ { false, 0x70b2, 0x70b2 }, /* 0x70b3 */ { false, 0x70b3, 0x70b3 }, /* 0x70b4 */ { false, 0x70b4, 0x70b4 }, /* 0x70b5 */ { false, 0x70b5, 0x70b5 }, /* 0x70b6 */ { false, 0x70b6, 0x70b6 }, /* 0x70b7 */ { false, 0x70b7, 0x70b7 }, /* 0x70b8 */ { false, 0x70b8, 0x70b8 }, /* 0x70b9 */ { false, 0x70b9, 0x70b9 }, /* 0x70ba */ { false, 0x70ba, 0x70ba }, /* 0x70bb */ { false, 0x70bb, 0x70bb }, /* 0x70bc */ { false, 0x70bc, 0x70bc }, /* 0x70bd */ { false, 0x70bd, 0x70bd }, /* 0x70be */ { false, 0x70be, 0x70be }, /* 0x70bf */ { false, 0x70bf, 0x70bf }, /* 0x70c0 */ { false, 0x70c0, 0x70c0 }, /* 0x70c1 */ { false, 0x70c1, 0x70c1 }, /* 0x70c2 */ { false, 0x70c2, 0x70c2 }, /* 0x70c3 */ { false, 0x70c3, 0x70c3 }, /* 0x70c4 */ { false, 0x70c4, 0x70c4 }, /* 0x70c5 */ { false, 0x70c5, 0x70c5 }, /* 0x70c6 */ { false, 0x70c6, 0x70c6 }, /* 0x70c7 */ { false, 0x70c7, 0x70c7 }, /* 0x70c8 */ { false, 0x70c8, 0x70c8 }, /* 0x70c9 */ { false, 0x70c9, 0x70c9 }, /* 0x70ca */ { false, 0x70ca, 0x70ca }, /* 0x70cb */ { false, 0x70cb, 0x70cb }, /* 0x70cc */ { false, 0x70cc, 0x70cc }, /* 0x70cd */ { false, 0x70cd, 0x70cd }, /* 0x70ce */ { false, 0x70ce, 0x70ce }, /* 0x70cf */ { false, 0x70cf, 0x70cf }, /* 0x70d0 */ { false, 0x70d0, 0x70d0 }, /* 0x70d1 */ { false, 0x70d1, 0x70d1 }, /* 0x70d2 */ { false, 0x70d2, 0x70d2 }, /* 0x70d3 */ { false, 0x70d3, 0x70d3 }, /* 0x70d4 */ { false, 0x70d4, 0x70d4 }, /* 0x70d5 */ { false, 0x70d5, 0x70d5 }, /* 0x70d6 */ { false, 0x70d6, 0x70d6 }, /* 0x70d7 */ { false, 0x70d7, 0x70d7 }, /* 0x70d8 */ { false, 0x70d8, 0x70d8 }, /* 0x70d9 */ { false, 0x70d9, 0x70d9 }, /* 0x70da */ { false, 0x70da, 0x70da }, /* 0x70db */ { false, 0x70db, 0x70db }, /* 0x70dc */ { false, 0x70dc, 0x70dc }, /* 0x70dd */ { false, 0x70dd, 0x70dd }, /* 0x70de */ { false, 0x70de, 0x70de }, /* 0x70df */ { false, 0x70df, 0x70df }, /* 0x70e0 */ { false, 0x70e0, 0x70e0 }, /* 0x70e1 */ { false, 0x70e1, 0x70e1 }, /* 0x70e2 */ { false, 0x70e2, 0x70e2 }, /* 0x70e3 */ { false, 0x70e3, 0x70e3 }, /* 0x70e4 */ { false, 0x70e4, 0x70e4 }, /* 0x70e5 */ { false, 0x70e5, 0x70e5 }, /* 0x70e6 */ { false, 0x70e6, 0x70e6 }, /* 0x70e7 */ { false, 0x70e7, 0x70e7 }, /* 0x70e8 */ { false, 0x70e8, 0x70e8 }, /* 0x70e9 */ { false, 0x70e9, 0x70e9 }, /* 0x70ea */ { false, 0x70ea, 0x70ea }, /* 0x70eb */ { false, 0x70eb, 0x70eb }, /* 0x70ec */ { false, 0x70ec, 0x70ec }, /* 0x70ed */ { false, 0x70ed, 0x70ed }, /* 0x70ee */ { false, 0x70ee, 0x70ee }, /* 0x70ef */ { false, 0x70ef, 0x70ef }, /* 0x70f0 */ { false, 0x70f0, 0x70f0 }, /* 0x70f1 */ { false, 0x70f1, 0x70f1 }, /* 0x70f2 */ { false, 0x70f2, 0x70f2 }, /* 0x70f3 */ { false, 0x70f3, 0x70f3 }, /* 0x70f4 */ { false, 0x70f4, 0x70f4 }, /* 0x70f5 */ { false, 0x70f5, 0x70f5 }, /* 0x70f6 */ { false, 0x70f6, 0x70f6 }, /* 0x70f7 */ { false, 0x70f7, 0x70f7 }, /* 0x70f8 */ { false, 0x70f8, 0x70f8 }, /* 0x70f9 */ { false, 0x70f9, 0x70f9 }, /* 0x70fa */ { false, 0x70fa, 0x70fa }, /* 0x70fb */ { false, 0x70fb, 0x70fb }, /* 0x70fc */ { false, 0x70fc, 0x70fc }, /* 0x70fd */ { false, 0x70fd, 0x70fd }, /* 0x70fe */ { false, 0x70fe, 0x70fe }, /* 0x70ff */ { false, 0x70ff, 0x70ff }, /* 0x7100 */ { false, 0x7100, 0x7100 }, /* 0x7101 */ { false, 0x7101, 0x7101 }, /* 0x7102 */ { false, 0x7102, 0x7102 }, /* 0x7103 */ { false, 0x7103, 0x7103 }, /* 0x7104 */ { false, 0x7104, 0x7104 }, /* 0x7105 */ { false, 0x7105, 0x7105 }, /* 0x7106 */ { false, 0x7106, 0x7106 }, /* 0x7107 */ { false, 0x7107, 0x7107 }, /* 0x7108 */ { false, 0x7108, 0x7108 }, /* 0x7109 */ { false, 0x7109, 0x7109 }, /* 0x710a */ { false, 0x710a, 0x710a }, /* 0x710b */ { false, 0x710b, 0x710b }, /* 0x710c */ { false, 0x710c, 0x710c }, /* 0x710d */ { false, 0x710d, 0x710d }, /* 0x710e */ { false, 0x710e, 0x710e }, /* 0x710f */ { false, 0x710f, 0x710f }, /* 0x7110 */ { false, 0x7110, 0x7110 }, /* 0x7111 */ { false, 0x7111, 0x7111 }, /* 0x7112 */ { false, 0x7112, 0x7112 }, /* 0x7113 */ { false, 0x7113, 0x7113 }, /* 0x7114 */ { false, 0x7114, 0x7114 }, /* 0x7115 */ { false, 0x7115, 0x7115 }, /* 0x7116 */ { false, 0x7116, 0x7116 }, /* 0x7117 */ { false, 0x7117, 0x7117 }, /* 0x7118 */ { false, 0x7118, 0x7118 }, /* 0x7119 */ { false, 0x7119, 0x7119 }, /* 0x711a */ { false, 0x711a, 0x711a }, /* 0x711b */ { false, 0x711b, 0x711b }, /* 0x711c */ { false, 0x711c, 0x711c }, /* 0x711d */ { false, 0x711d, 0x711d }, /* 0x711e */ { false, 0x711e, 0x711e }, /* 0x711f */ { false, 0x711f, 0x711f }, /* 0x7120 */ { false, 0x7120, 0x7120 }, /* 0x7121 */ { false, 0x7121, 0x7121 }, /* 0x7122 */ { false, 0x7122, 0x7122 }, /* 0x7123 */ { false, 0x7123, 0x7123 }, /* 0x7124 */ { false, 0x7124, 0x7124 }, /* 0x7125 */ { false, 0x7125, 0x7125 }, /* 0x7126 */ { false, 0x7126, 0x7126 }, /* 0x7127 */ { false, 0x7127, 0x7127 }, /* 0x7128 */ { false, 0x7128, 0x7128 }, /* 0x7129 */ { false, 0x7129, 0x7129 }, /* 0x712a */ { false, 0x712a, 0x712a }, /* 0x712b */ { false, 0x712b, 0x712b }, /* 0x712c */ { false, 0x712c, 0x712c }, /* 0x712d */ { false, 0x712d, 0x712d }, /* 0x712e */ { false, 0x712e, 0x712e }, /* 0x712f */ { false, 0x712f, 0x712f }, /* 0x7130 */ { false, 0x7130, 0x7130 }, /* 0x7131 */ { false, 0x7131, 0x7131 }, /* 0x7132 */ { false, 0x7132, 0x7132 }, /* 0x7133 */ { false, 0x7133, 0x7133 }, /* 0x7134 */ { false, 0x7134, 0x7134 }, /* 0x7135 */ { false, 0x7135, 0x7135 }, /* 0x7136 */ { false, 0x7136, 0x7136 }, /* 0x7137 */ { false, 0x7137, 0x7137 }, /* 0x7138 */ { false, 0x7138, 0x7138 }, /* 0x7139 */ { false, 0x7139, 0x7139 }, /* 0x713a */ { false, 0x713a, 0x713a }, /* 0x713b */ { false, 0x713b, 0x713b }, /* 0x713c */ { false, 0x713c, 0x713c }, /* 0x713d */ { false, 0x713d, 0x713d }, /* 0x713e */ { false, 0x713e, 0x713e }, /* 0x713f */ { false, 0x713f, 0x713f }, /* 0x7140 */ { false, 0x7140, 0x7140 }, /* 0x7141 */ { false, 0x7141, 0x7141 }, /* 0x7142 */ { false, 0x7142, 0x7142 }, /* 0x7143 */ { false, 0x7143, 0x7143 }, /* 0x7144 */ { false, 0x7144, 0x7144 }, /* 0x7145 */ { false, 0x7145, 0x7145 }, /* 0x7146 */ { false, 0x7146, 0x7146 }, /* 0x7147 */ { false, 0x7147, 0x7147 }, /* 0x7148 */ { false, 0x7148, 0x7148 }, /* 0x7149 */ { false, 0x7149, 0x7149 }, /* 0x714a */ { false, 0x714a, 0x714a }, /* 0x714b */ { false, 0x714b, 0x714b }, /* 0x714c */ { false, 0x714c, 0x714c }, /* 0x714d */ { false, 0x714d, 0x714d }, /* 0x714e */ { false, 0x714e, 0x714e }, /* 0x714f */ { false, 0x714f, 0x714f }, /* 0x7150 */ { false, 0x7150, 0x7150 }, /* 0x7151 */ { false, 0x7151, 0x7151 }, /* 0x7152 */ { false, 0x7152, 0x7152 }, /* 0x7153 */ { false, 0x7153, 0x7153 }, /* 0x7154 */ { false, 0x7154, 0x7154 }, /* 0x7155 */ { false, 0x7155, 0x7155 }, /* 0x7156 */ { false, 0x7156, 0x7156 }, /* 0x7157 */ { false, 0x7157, 0x7157 }, /* 0x7158 */ { false, 0x7158, 0x7158 }, /* 0x7159 */ { false, 0x7159, 0x7159 }, /* 0x715a */ { false, 0x715a, 0x715a }, /* 0x715b */ { false, 0x715b, 0x715b }, /* 0x715c */ { false, 0x715c, 0x715c }, /* 0x715d */ { false, 0x715d, 0x715d }, /* 0x715e */ { false, 0x715e, 0x715e }, /* 0x715f */ { false, 0x715f, 0x715f }, /* 0x7160 */ { false, 0x7160, 0x7160 }, /* 0x7161 */ { false, 0x7161, 0x7161 }, /* 0x7162 */ { false, 0x7162, 0x7162 }, /* 0x7163 */ { false, 0x7163, 0x7163 }, /* 0x7164 */ { false, 0x7164, 0x7164 }, /* 0x7165 */ { false, 0x7165, 0x7165 }, /* 0x7166 */ { false, 0x7166, 0x7166 }, /* 0x7167 */ { false, 0x7167, 0x7167 }, /* 0x7168 */ { false, 0x7168, 0x7168 }, /* 0x7169 */ { false, 0x7169, 0x7169 }, /* 0x716a */ { false, 0x716a, 0x716a }, /* 0x716b */ { false, 0x716b, 0x716b }, /* 0x716c */ { false, 0x716c, 0x716c }, /* 0x716d */ { false, 0x716d, 0x716d }, /* 0x716e */ { false, 0x716e, 0x716e }, /* 0x716f */ { false, 0x716f, 0x716f }, /* 0x7170 */ { false, 0x7170, 0x7170 }, /* 0x7171 */ { false, 0x7171, 0x7171 }, /* 0x7172 */ { false, 0x7172, 0x7172 }, /* 0x7173 */ { false, 0x7173, 0x7173 }, /* 0x7174 */ { false, 0x7174, 0x7174 }, /* 0x7175 */ { false, 0x7175, 0x7175 }, /* 0x7176 */ { false, 0x7176, 0x7176 }, /* 0x7177 */ { false, 0x7177, 0x7177 }, /* 0x7178 */ { false, 0x7178, 0x7178 }, /* 0x7179 */ { false, 0x7179, 0x7179 }, /* 0x717a */ { false, 0x717a, 0x717a }, /* 0x717b */ { false, 0x717b, 0x717b }, /* 0x717c */ { false, 0x717c, 0x717c }, /* 0x717d */ { false, 0x717d, 0x717d }, /* 0x717e */ { false, 0x717e, 0x717e }, /* 0x717f */ { false, 0x717f, 0x717f }, /* 0x7180 */ { false, 0x7180, 0x7180 }, /* 0x7181 */ { false, 0x7181, 0x7181 }, /* 0x7182 */ { false, 0x7182, 0x7182 }, /* 0x7183 */ { false, 0x7183, 0x7183 }, /* 0x7184 */ { false, 0x7184, 0x7184 }, /* 0x7185 */ { false, 0x7185, 0x7185 }, /* 0x7186 */ { false, 0x7186, 0x7186 }, /* 0x7187 */ { false, 0x7187, 0x7187 }, /* 0x7188 */ { false, 0x7188, 0x7188 }, /* 0x7189 */ { false, 0x7189, 0x7189 }, /* 0x718a */ { false, 0x718a, 0x718a }, /* 0x718b */ { false, 0x718b, 0x718b }, /* 0x718c */ { false, 0x718c, 0x718c }, /* 0x718d */ { false, 0x718d, 0x718d }, /* 0x718e */ { false, 0x718e, 0x718e }, /* 0x718f */ { false, 0x718f, 0x718f }, /* 0x7190 */ { false, 0x7190, 0x7190 }, /* 0x7191 */ { false, 0x7191, 0x7191 }, /* 0x7192 */ { false, 0x7192, 0x7192 }, /* 0x7193 */ { false, 0x7193, 0x7193 }, /* 0x7194 */ { false, 0x7194, 0x7194 }, /* 0x7195 */ { false, 0x7195, 0x7195 }, /* 0x7196 */ { false, 0x7196, 0x7196 }, /* 0x7197 */ { false, 0x7197, 0x7197 }, /* 0x7198 */ { false, 0x7198, 0x7198 }, /* 0x7199 */ { false, 0x7199, 0x7199 }, /* 0x719a */ { false, 0x719a, 0x719a }, /* 0x719b */ { false, 0x719b, 0x719b }, /* 0x719c */ { false, 0x719c, 0x719c }, /* 0x719d */ { false, 0x719d, 0x719d }, /* 0x719e */ { false, 0x719e, 0x719e }, /* 0x719f */ { false, 0x719f, 0x719f }, /* 0x71a0 */ { false, 0x71a0, 0x71a0 }, /* 0x71a1 */ { false, 0x71a1, 0x71a1 }, /* 0x71a2 */ { false, 0x71a2, 0x71a2 }, /* 0x71a3 */ { false, 0x71a3, 0x71a3 }, /* 0x71a4 */ { false, 0x71a4, 0x71a4 }, /* 0x71a5 */ { false, 0x71a5, 0x71a5 }, /* 0x71a6 */ { false, 0x71a6, 0x71a6 }, /* 0x71a7 */ { false, 0x71a7, 0x71a7 }, /* 0x71a8 */ { false, 0x71a8, 0x71a8 }, /* 0x71a9 */ { false, 0x71a9, 0x71a9 }, /* 0x71aa */ { false, 0x71aa, 0x71aa }, /* 0x71ab */ { false, 0x71ab, 0x71ab }, /* 0x71ac */ { false, 0x71ac, 0x71ac }, /* 0x71ad */ { false, 0x71ad, 0x71ad }, /* 0x71ae */ { false, 0x71ae, 0x71ae }, /* 0x71af */ { false, 0x71af, 0x71af }, /* 0x71b0 */ { false, 0x71b0, 0x71b0 }, /* 0x71b1 */ { false, 0x71b1, 0x71b1 }, /* 0x71b2 */ { false, 0x71b2, 0x71b2 }, /* 0x71b3 */ { false, 0x71b3, 0x71b3 }, /* 0x71b4 */ { false, 0x71b4, 0x71b4 }, /* 0x71b5 */ { false, 0x71b5, 0x71b5 }, /* 0x71b6 */ { false, 0x71b6, 0x71b6 }, /* 0x71b7 */ { false, 0x71b7, 0x71b7 }, /* 0x71b8 */ { false, 0x71b8, 0x71b8 }, /* 0x71b9 */ { false, 0x71b9, 0x71b9 }, /* 0x71ba */ { false, 0x71ba, 0x71ba }, /* 0x71bb */ { false, 0x71bb, 0x71bb }, /* 0x71bc */ { false, 0x71bc, 0x71bc }, /* 0x71bd */ { false, 0x71bd, 0x71bd }, /* 0x71be */ { false, 0x71be, 0x71be }, /* 0x71bf */ { false, 0x71bf, 0x71bf }, /* 0x71c0 */ { false, 0x71c0, 0x71c0 }, /* 0x71c1 */ { false, 0x71c1, 0x71c1 }, /* 0x71c2 */ { false, 0x71c2, 0x71c2 }, /* 0x71c3 */ { false, 0x71c3, 0x71c3 }, /* 0x71c4 */ { false, 0x71c4, 0x71c4 }, /* 0x71c5 */ { false, 0x71c5, 0x71c5 }, /* 0x71c6 */ { false, 0x71c6, 0x71c6 }, /* 0x71c7 */ { false, 0x71c7, 0x71c7 }, /* 0x71c8 */ { false, 0x71c8, 0x71c8 }, /* 0x71c9 */ { false, 0x71c9, 0x71c9 }, /* 0x71ca */ { false, 0x71ca, 0x71ca }, /* 0x71cb */ { false, 0x71cb, 0x71cb }, /* 0x71cc */ { false, 0x71cc, 0x71cc }, /* 0x71cd */ { false, 0x71cd, 0x71cd }, /* 0x71ce */ { false, 0x71ce, 0x71ce }, /* 0x71cf */ { false, 0x71cf, 0x71cf }, /* 0x71d0 */ { false, 0x71d0, 0x71d0 }, /* 0x71d1 */ { false, 0x71d1, 0x71d1 }, /* 0x71d2 */ { false, 0x71d2, 0x71d2 }, /* 0x71d3 */ { false, 0x71d3, 0x71d3 }, /* 0x71d4 */ { false, 0x71d4, 0x71d4 }, /* 0x71d5 */ { false, 0x71d5, 0x71d5 }, /* 0x71d6 */ { false, 0x71d6, 0x71d6 }, /* 0x71d7 */ { false, 0x71d7, 0x71d7 }, /* 0x71d8 */ { false, 0x71d8, 0x71d8 }, /* 0x71d9 */ { false, 0x71d9, 0x71d9 }, /* 0x71da */ { false, 0x71da, 0x71da }, /* 0x71db */ { false, 0x71db, 0x71db }, /* 0x71dc */ { false, 0x71dc, 0x71dc }, /* 0x71dd */ { false, 0x71dd, 0x71dd }, /* 0x71de */ { false, 0x71de, 0x71de }, /* 0x71df */ { false, 0x71df, 0x71df }, /* 0x71e0 */ { false, 0x71e0, 0x71e0 }, /* 0x71e1 */ { false, 0x71e1, 0x71e1 }, /* 0x71e2 */ { false, 0x71e2, 0x71e2 }, /* 0x71e3 */ { false, 0x71e3, 0x71e3 }, /* 0x71e4 */ { false, 0x71e4, 0x71e4 }, /* 0x71e5 */ { false, 0x71e5, 0x71e5 }, /* 0x71e6 */ { false, 0x71e6, 0x71e6 }, /* 0x71e7 */ { false, 0x71e7, 0x71e7 }, /* 0x71e8 */ { false, 0x71e8, 0x71e8 }, /* 0x71e9 */ { false, 0x71e9, 0x71e9 }, /* 0x71ea */ { false, 0x71ea, 0x71ea }, /* 0x71eb */ { false, 0x71eb, 0x71eb }, /* 0x71ec */ { false, 0x71ec, 0x71ec }, /* 0x71ed */ { false, 0x71ed, 0x71ed }, /* 0x71ee */ { false, 0x71ee, 0x71ee }, /* 0x71ef */ { false, 0x71ef, 0x71ef }, /* 0x71f0 */ { false, 0x71f0, 0x71f0 }, /* 0x71f1 */ { false, 0x71f1, 0x71f1 }, /* 0x71f2 */ { false, 0x71f2, 0x71f2 }, /* 0x71f3 */ { false, 0x71f3, 0x71f3 }, /* 0x71f4 */ { false, 0x71f4, 0x71f4 }, /* 0x71f5 */ { false, 0x71f5, 0x71f5 }, /* 0x71f6 */ { false, 0x71f6, 0x71f6 }, /* 0x71f7 */ { false, 0x71f7, 0x71f7 }, /* 0x71f8 */ { false, 0x71f8, 0x71f8 }, /* 0x71f9 */ { false, 0x71f9, 0x71f9 }, /* 0x71fa */ { false, 0x71fa, 0x71fa }, /* 0x71fb */ { false, 0x71fb, 0x71fb }, /* 0x71fc */ { false, 0x71fc, 0x71fc }, /* 0x71fd */ { false, 0x71fd, 0x71fd }, /* 0x71fe */ { false, 0x71fe, 0x71fe }, /* 0x71ff */ { false, 0x71ff, 0x71ff }, /* 0x7200 */ { false, 0x7200, 0x7200 }, /* 0x7201 */ { false, 0x7201, 0x7201 }, /* 0x7202 */ { false, 0x7202, 0x7202 }, /* 0x7203 */ { false, 0x7203, 0x7203 }, /* 0x7204 */ { false, 0x7204, 0x7204 }, /* 0x7205 */ { false, 0x7205, 0x7205 }, /* 0x7206 */ { false, 0x7206, 0x7206 }, /* 0x7207 */ { false, 0x7207, 0x7207 }, /* 0x7208 */ { false, 0x7208, 0x7208 }, /* 0x7209 */ { false, 0x7209, 0x7209 }, /* 0x720a */ { false, 0x720a, 0x720a }, /* 0x720b */ { false, 0x720b, 0x720b }, /* 0x720c */ { false, 0x720c, 0x720c }, /* 0x720d */ { false, 0x720d, 0x720d }, /* 0x720e */ { false, 0x720e, 0x720e }, /* 0x720f */ { false, 0x720f, 0x720f }, /* 0x7210 */ { false, 0x7210, 0x7210 }, /* 0x7211 */ { false, 0x7211, 0x7211 }, /* 0x7212 */ { false, 0x7212, 0x7212 }, /* 0x7213 */ { false, 0x7213, 0x7213 }, /* 0x7214 */ { false, 0x7214, 0x7214 }, /* 0x7215 */ { false, 0x7215, 0x7215 }, /* 0x7216 */ { false, 0x7216, 0x7216 }, /* 0x7217 */ { false, 0x7217, 0x7217 }, /* 0x7218 */ { false, 0x7218, 0x7218 }, /* 0x7219 */ { false, 0x7219, 0x7219 }, /* 0x721a */ { false, 0x721a, 0x721a }, /* 0x721b */ { false, 0x721b, 0x721b }, /* 0x721c */ { false, 0x721c, 0x721c }, /* 0x721d */ { false, 0x721d, 0x721d }, /* 0x721e */ { false, 0x721e, 0x721e }, /* 0x721f */ { false, 0x721f, 0x721f }, /* 0x7220 */ { false, 0x7220, 0x7220 }, /* 0x7221 */ { false, 0x7221, 0x7221 }, /* 0x7222 */ { false, 0x7222, 0x7222 }, /* 0x7223 */ { false, 0x7223, 0x7223 }, /* 0x7224 */ { false, 0x7224, 0x7224 }, /* 0x7225 */ { false, 0x7225, 0x7225 }, /* 0x7226 */ { false, 0x7226, 0x7226 }, /* 0x7227 */ { false, 0x7227, 0x7227 }, /* 0x7228 */ { false, 0x7228, 0x7228 }, /* 0x7229 */ { false, 0x7229, 0x7229 }, /* 0x722a */ { false, 0x722a, 0x722a }, /* 0x722b */ { false, 0x722b, 0x722b }, /* 0x722c */ { false, 0x722c, 0x722c }, /* 0x722d */ { false, 0x722d, 0x722d }, /* 0x722e */ { false, 0x722e, 0x722e }, /* 0x722f */ { false, 0x722f, 0x722f }, /* 0x7230 */ { false, 0x7230, 0x7230 }, /* 0x7231 */ { false, 0x7231, 0x7231 }, /* 0x7232 */ { false, 0x7232, 0x7232 }, /* 0x7233 */ { false, 0x7233, 0x7233 }, /* 0x7234 */ { false, 0x7234, 0x7234 }, /* 0x7235 */ { false, 0x7235, 0x7235 }, /* 0x7236 */ { false, 0x7236, 0x7236 }, /* 0x7237 */ { false, 0x7237, 0x7237 }, /* 0x7238 */ { false, 0x7238, 0x7238 }, /* 0x7239 */ { false, 0x7239, 0x7239 }, /* 0x723a */ { false, 0x723a, 0x723a }, /* 0x723b */ { false, 0x723b, 0x723b }, /* 0x723c */ { false, 0x723c, 0x723c }, /* 0x723d */ { false, 0x723d, 0x723d }, /* 0x723e */ { false, 0x723e, 0x723e }, /* 0x723f */ { false, 0x723f, 0x723f }, /* 0x7240 */ { false, 0x7240, 0x7240 }, /* 0x7241 */ { false, 0x7241, 0x7241 }, /* 0x7242 */ { false, 0x7242, 0x7242 }, /* 0x7243 */ { false, 0x7243, 0x7243 }, /* 0x7244 */ { false, 0x7244, 0x7244 }, /* 0x7245 */ { false, 0x7245, 0x7245 }, /* 0x7246 */ { false, 0x7246, 0x7246 }, /* 0x7247 */ { false, 0x7247, 0x7247 }, /* 0x7248 */ { false, 0x7248, 0x7248 }, /* 0x7249 */ { false, 0x7249, 0x7249 }, /* 0x724a */ { false, 0x724a, 0x724a }, /* 0x724b */ { false, 0x724b, 0x724b }, /* 0x724c */ { false, 0x724c, 0x724c }, /* 0x724d */ { false, 0x724d, 0x724d }, /* 0x724e */ { false, 0x724e, 0x724e }, /* 0x724f */ { false, 0x724f, 0x724f }, /* 0x7250 */ { false, 0x7250, 0x7250 }, /* 0x7251 */ { false, 0x7251, 0x7251 }, /* 0x7252 */ { false, 0x7252, 0x7252 }, /* 0x7253 */ { false, 0x7253, 0x7253 }, /* 0x7254 */ { false, 0x7254, 0x7254 }, /* 0x7255 */ { false, 0x7255, 0x7255 }, /* 0x7256 */ { false, 0x7256, 0x7256 }, /* 0x7257 */ { false, 0x7257, 0x7257 }, /* 0x7258 */ { false, 0x7258, 0x7258 }, /* 0x7259 */ { false, 0x7259, 0x7259 }, /* 0x725a */ { false, 0x725a, 0x725a }, /* 0x725b */ { false, 0x725b, 0x725b }, /* 0x725c */ { false, 0x725c, 0x725c }, /* 0x725d */ { false, 0x725d, 0x725d }, /* 0x725e */ { false, 0x725e, 0x725e }, /* 0x725f */ { false, 0x725f, 0x725f }, /* 0x7260 */ { false, 0x7260, 0x7260 }, /* 0x7261 */ { false, 0x7261, 0x7261 }, /* 0x7262 */ { false, 0x7262, 0x7262 }, /* 0x7263 */ { false, 0x7263, 0x7263 }, /* 0x7264 */ { false, 0x7264, 0x7264 }, /* 0x7265 */ { false, 0x7265, 0x7265 }, /* 0x7266 */ { false, 0x7266, 0x7266 }, /* 0x7267 */ { false, 0x7267, 0x7267 }, /* 0x7268 */ { false, 0x7268, 0x7268 }, /* 0x7269 */ { false, 0x7269, 0x7269 }, /* 0x726a */ { false, 0x726a, 0x726a }, /* 0x726b */ { false, 0x726b, 0x726b }, /* 0x726c */ { false, 0x726c, 0x726c }, /* 0x726d */ { false, 0x726d, 0x726d }, /* 0x726e */ { false, 0x726e, 0x726e }, /* 0x726f */ { false, 0x726f, 0x726f }, /* 0x7270 */ { false, 0x7270, 0x7270 }, /* 0x7271 */ { false, 0x7271, 0x7271 }, /* 0x7272 */ { false, 0x7272, 0x7272 }, /* 0x7273 */ { false, 0x7273, 0x7273 }, /* 0x7274 */ { false, 0x7274, 0x7274 }, /* 0x7275 */ { false, 0x7275, 0x7275 }, /* 0x7276 */ { false, 0x7276, 0x7276 }, /* 0x7277 */ { false, 0x7277, 0x7277 }, /* 0x7278 */ { false, 0x7278, 0x7278 }, /* 0x7279 */ { false, 0x7279, 0x7279 }, /* 0x727a */ { false, 0x727a, 0x727a }, /* 0x727b */ { false, 0x727b, 0x727b }, /* 0x727c */ { false, 0x727c, 0x727c }, /* 0x727d */ { false, 0x727d, 0x727d }, /* 0x727e */ { false, 0x727e, 0x727e }, /* 0x727f */ { false, 0x727f, 0x727f }, /* 0x7280 */ { false, 0x7280, 0x7280 }, /* 0x7281 */ { false, 0x7281, 0x7281 }, /* 0x7282 */ { false, 0x7282, 0x7282 }, /* 0x7283 */ { false, 0x7283, 0x7283 }, /* 0x7284 */ { false, 0x7284, 0x7284 }, /* 0x7285 */ { false, 0x7285, 0x7285 }, /* 0x7286 */ { false, 0x7286, 0x7286 }, /* 0x7287 */ { false, 0x7287, 0x7287 }, /* 0x7288 */ { false, 0x7288, 0x7288 }, /* 0x7289 */ { false, 0x7289, 0x7289 }, /* 0x728a */ { false, 0x728a, 0x728a }, /* 0x728b */ { false, 0x728b, 0x728b }, /* 0x728c */ { false, 0x728c, 0x728c }, /* 0x728d */ { false, 0x728d, 0x728d }, /* 0x728e */ { false, 0x728e, 0x728e }, /* 0x728f */ { false, 0x728f, 0x728f }, /* 0x7290 */ { false, 0x7290, 0x7290 }, /* 0x7291 */ { false, 0x7291, 0x7291 }, /* 0x7292 */ { false, 0x7292, 0x7292 }, /* 0x7293 */ { false, 0x7293, 0x7293 }, /* 0x7294 */ { false, 0x7294, 0x7294 }, /* 0x7295 */ { false, 0x7295, 0x7295 }, /* 0x7296 */ { false, 0x7296, 0x7296 }, /* 0x7297 */ { false, 0x7297, 0x7297 }, /* 0x7298 */ { false, 0x7298, 0x7298 }, /* 0x7299 */ { false, 0x7299, 0x7299 }, /* 0x729a */ { false, 0x729a, 0x729a }, /* 0x729b */ { false, 0x729b, 0x729b }, /* 0x729c */ { false, 0x729c, 0x729c }, /* 0x729d */ { false, 0x729d, 0x729d }, /* 0x729e */ { false, 0x729e, 0x729e }, /* 0x729f */ { false, 0x729f, 0x729f }, /* 0x72a0 */ { false, 0x72a0, 0x72a0 }, /* 0x72a1 */ { false, 0x72a1, 0x72a1 }, /* 0x72a2 */ { false, 0x72a2, 0x72a2 }, /* 0x72a3 */ { false, 0x72a3, 0x72a3 }, /* 0x72a4 */ { false, 0x72a4, 0x72a4 }, /* 0x72a5 */ { false, 0x72a5, 0x72a5 }, /* 0x72a6 */ { false, 0x72a6, 0x72a6 }, /* 0x72a7 */ { false, 0x72a7, 0x72a7 }, /* 0x72a8 */ { false, 0x72a8, 0x72a8 }, /* 0x72a9 */ { false, 0x72a9, 0x72a9 }, /* 0x72aa */ { false, 0x72aa, 0x72aa }, /* 0x72ab */ { false, 0x72ab, 0x72ab }, /* 0x72ac */ { false, 0x72ac, 0x72ac }, /* 0x72ad */ { false, 0x72ad, 0x72ad }, /* 0x72ae */ { false, 0x72ae, 0x72ae }, /* 0x72af */ { false, 0x72af, 0x72af }, /* 0x72b0 */ { false, 0x72b0, 0x72b0 }, /* 0x72b1 */ { false, 0x72b1, 0x72b1 }, /* 0x72b2 */ { false, 0x72b2, 0x72b2 }, /* 0x72b3 */ { false, 0x72b3, 0x72b3 }, /* 0x72b4 */ { false, 0x72b4, 0x72b4 }, /* 0x72b5 */ { false, 0x72b5, 0x72b5 }, /* 0x72b6 */ { false, 0x72b6, 0x72b6 }, /* 0x72b7 */ { false, 0x72b7, 0x72b7 }, /* 0x72b8 */ { false, 0x72b8, 0x72b8 }, /* 0x72b9 */ { false, 0x72b9, 0x72b9 }, /* 0x72ba */ { false, 0x72ba, 0x72ba }, /* 0x72bb */ { false, 0x72bb, 0x72bb }, /* 0x72bc */ { false, 0x72bc, 0x72bc }, /* 0x72bd */ { false, 0x72bd, 0x72bd }, /* 0x72be */ { false, 0x72be, 0x72be }, /* 0x72bf */ { false, 0x72bf, 0x72bf }, /* 0x72c0 */ { false, 0x72c0, 0x72c0 }, /* 0x72c1 */ { false, 0x72c1, 0x72c1 }, /* 0x72c2 */ { false, 0x72c2, 0x72c2 }, /* 0x72c3 */ { false, 0x72c3, 0x72c3 }, /* 0x72c4 */ { false, 0x72c4, 0x72c4 }, /* 0x72c5 */ { false, 0x72c5, 0x72c5 }, /* 0x72c6 */ { false, 0x72c6, 0x72c6 }, /* 0x72c7 */ { false, 0x72c7, 0x72c7 }, /* 0x72c8 */ { false, 0x72c8, 0x72c8 }, /* 0x72c9 */ { false, 0x72c9, 0x72c9 }, /* 0x72ca */ { false, 0x72ca, 0x72ca }, /* 0x72cb */ { false, 0x72cb, 0x72cb }, /* 0x72cc */ { false, 0x72cc, 0x72cc }, /* 0x72cd */ { false, 0x72cd, 0x72cd }, /* 0x72ce */ { false, 0x72ce, 0x72ce }, /* 0x72cf */ { false, 0x72cf, 0x72cf }, /* 0x72d0 */ { false, 0x72d0, 0x72d0 }, /* 0x72d1 */ { false, 0x72d1, 0x72d1 }, /* 0x72d2 */ { false, 0x72d2, 0x72d2 }, /* 0x72d3 */ { false, 0x72d3, 0x72d3 }, /* 0x72d4 */ { false, 0x72d4, 0x72d4 }, /* 0x72d5 */ { false, 0x72d5, 0x72d5 }, /* 0x72d6 */ { false, 0x72d6, 0x72d6 }, /* 0x72d7 */ { false, 0x72d7, 0x72d7 }, /* 0x72d8 */ { false, 0x72d8, 0x72d8 }, /* 0x72d9 */ { false, 0x72d9, 0x72d9 }, /* 0x72da */ { false, 0x72da, 0x72da }, /* 0x72db */ { false, 0x72db, 0x72db }, /* 0x72dc */ { false, 0x72dc, 0x72dc }, /* 0x72dd */ { false, 0x72dd, 0x72dd }, /* 0x72de */ { false, 0x72de, 0x72de }, /* 0x72df */ { false, 0x72df, 0x72df }, /* 0x72e0 */ { false, 0x72e0, 0x72e0 }, /* 0x72e1 */ { false, 0x72e1, 0x72e1 }, /* 0x72e2 */ { false, 0x72e2, 0x72e2 }, /* 0x72e3 */ { false, 0x72e3, 0x72e3 }, /* 0x72e4 */ { false, 0x72e4, 0x72e4 }, /* 0x72e5 */ { false, 0x72e5, 0x72e5 }, /* 0x72e6 */ { false, 0x72e6, 0x72e6 }, /* 0x72e7 */ { false, 0x72e7, 0x72e7 }, /* 0x72e8 */ { false, 0x72e8, 0x72e8 }, /* 0x72e9 */ { false, 0x72e9, 0x72e9 }, /* 0x72ea */ { false, 0x72ea, 0x72ea }, /* 0x72eb */ { false, 0x72eb, 0x72eb }, /* 0x72ec */ { false, 0x72ec, 0x72ec }, /* 0x72ed */ { false, 0x72ed, 0x72ed }, /* 0x72ee */ { false, 0x72ee, 0x72ee }, /* 0x72ef */ { false, 0x72ef, 0x72ef }, /* 0x72f0 */ { false, 0x72f0, 0x72f0 }, /* 0x72f1 */ { false, 0x72f1, 0x72f1 }, /* 0x72f2 */ { false, 0x72f2, 0x72f2 }, /* 0x72f3 */ { false, 0x72f3, 0x72f3 }, /* 0x72f4 */ { false, 0x72f4, 0x72f4 }, /* 0x72f5 */ { false, 0x72f5, 0x72f5 }, /* 0x72f6 */ { false, 0x72f6, 0x72f6 }, /* 0x72f7 */ { false, 0x72f7, 0x72f7 }, /* 0x72f8 */ { false, 0x72f8, 0x72f8 }, /* 0x72f9 */ { false, 0x72f9, 0x72f9 }, /* 0x72fa */ { false, 0x72fa, 0x72fa }, /* 0x72fb */ { false, 0x72fb, 0x72fb }, /* 0x72fc */ { false, 0x72fc, 0x72fc }, /* 0x72fd */ { false, 0x72fd, 0x72fd }, /* 0x72fe */ { false, 0x72fe, 0x72fe }, /* 0x72ff */ { false, 0x72ff, 0x72ff }, /* 0x7300 */ { false, 0x7300, 0x7300 }, /* 0x7301 */ { false, 0x7301, 0x7301 }, /* 0x7302 */ { false, 0x7302, 0x7302 }, /* 0x7303 */ { false, 0x7303, 0x7303 }, /* 0x7304 */ { false, 0x7304, 0x7304 }, /* 0x7305 */ { false, 0x7305, 0x7305 }, /* 0x7306 */ { false, 0x7306, 0x7306 }, /* 0x7307 */ { false, 0x7307, 0x7307 }, /* 0x7308 */ { false, 0x7308, 0x7308 }, /* 0x7309 */ { false, 0x7309, 0x7309 }, /* 0x730a */ { false, 0x730a, 0x730a }, /* 0x730b */ { false, 0x730b, 0x730b }, /* 0x730c */ { false, 0x730c, 0x730c }, /* 0x730d */ { false, 0x730d, 0x730d }, /* 0x730e */ { false, 0x730e, 0x730e }, /* 0x730f */ { false, 0x730f, 0x730f }, /* 0x7310 */ { false, 0x7310, 0x7310 }, /* 0x7311 */ { false, 0x7311, 0x7311 }, /* 0x7312 */ { false, 0x7312, 0x7312 }, /* 0x7313 */ { false, 0x7313, 0x7313 }, /* 0x7314 */ { false, 0x7314, 0x7314 }, /* 0x7315 */ { false, 0x7315, 0x7315 }, /* 0x7316 */ { false, 0x7316, 0x7316 }, /* 0x7317 */ { false, 0x7317, 0x7317 }, /* 0x7318 */ { false, 0x7318, 0x7318 }, /* 0x7319 */ { false, 0x7319, 0x7319 }, /* 0x731a */ { false, 0x731a, 0x731a }, /* 0x731b */ { false, 0x731b, 0x731b }, /* 0x731c */ { false, 0x731c, 0x731c }, /* 0x731d */ { false, 0x731d, 0x731d }, /* 0x731e */ { false, 0x731e, 0x731e }, /* 0x731f */ { false, 0x731f, 0x731f }, /* 0x7320 */ { false, 0x7320, 0x7320 }, /* 0x7321 */ { false, 0x7321, 0x7321 }, /* 0x7322 */ { false, 0x7322, 0x7322 }, /* 0x7323 */ { false, 0x7323, 0x7323 }, /* 0x7324 */ { false, 0x7324, 0x7324 }, /* 0x7325 */ { false, 0x7325, 0x7325 }, /* 0x7326 */ { false, 0x7326, 0x7326 }, /* 0x7327 */ { false, 0x7327, 0x7327 }, /* 0x7328 */ { false, 0x7328, 0x7328 }, /* 0x7329 */ { false, 0x7329, 0x7329 }, /* 0x732a */ { false, 0x732a, 0x732a }, /* 0x732b */ { false, 0x732b, 0x732b }, /* 0x732c */ { false, 0x732c, 0x732c }, /* 0x732d */ { false, 0x732d, 0x732d }, /* 0x732e */ { false, 0x732e, 0x732e }, /* 0x732f */ { false, 0x732f, 0x732f }, /* 0x7330 */ { false, 0x7330, 0x7330 }, /* 0x7331 */ { false, 0x7331, 0x7331 }, /* 0x7332 */ { false, 0x7332, 0x7332 }, /* 0x7333 */ { false, 0x7333, 0x7333 }, /* 0x7334 */ { false, 0x7334, 0x7334 }, /* 0x7335 */ { false, 0x7335, 0x7335 }, /* 0x7336 */ { false, 0x7336, 0x7336 }, /* 0x7337 */ { false, 0x7337, 0x7337 }, /* 0x7338 */ { false, 0x7338, 0x7338 }, /* 0x7339 */ { false, 0x7339, 0x7339 }, /* 0x733a */ { false, 0x733a, 0x733a }, /* 0x733b */ { false, 0x733b, 0x733b }, /* 0x733c */ { false, 0x733c, 0x733c }, /* 0x733d */ { false, 0x733d, 0x733d }, /* 0x733e */ { false, 0x733e, 0x733e }, /* 0x733f */ { false, 0x733f, 0x733f }, /* 0x7340 */ { false, 0x7340, 0x7340 }, /* 0x7341 */ { false, 0x7341, 0x7341 }, /* 0x7342 */ { false, 0x7342, 0x7342 }, /* 0x7343 */ { false, 0x7343, 0x7343 }, /* 0x7344 */ { false, 0x7344, 0x7344 }, /* 0x7345 */ { false, 0x7345, 0x7345 }, /* 0x7346 */ { false, 0x7346, 0x7346 }, /* 0x7347 */ { false, 0x7347, 0x7347 }, /* 0x7348 */ { false, 0x7348, 0x7348 }, /* 0x7349 */ { false, 0x7349, 0x7349 }, /* 0x734a */ { false, 0x734a, 0x734a }, /* 0x734b */ { false, 0x734b, 0x734b }, /* 0x734c */ { false, 0x734c, 0x734c }, /* 0x734d */ { false, 0x734d, 0x734d }, /* 0x734e */ { false, 0x734e, 0x734e }, /* 0x734f */ { false, 0x734f, 0x734f }, /* 0x7350 */ { false, 0x7350, 0x7350 }, /* 0x7351 */ { false, 0x7351, 0x7351 }, /* 0x7352 */ { false, 0x7352, 0x7352 }, /* 0x7353 */ { false, 0x7353, 0x7353 }, /* 0x7354 */ { false, 0x7354, 0x7354 }, /* 0x7355 */ { false, 0x7355, 0x7355 }, /* 0x7356 */ { false, 0x7356, 0x7356 }, /* 0x7357 */ { false, 0x7357, 0x7357 }, /* 0x7358 */ { false, 0x7358, 0x7358 }, /* 0x7359 */ { false, 0x7359, 0x7359 }, /* 0x735a */ { false, 0x735a, 0x735a }, /* 0x735b */ { false, 0x735b, 0x735b }, /* 0x735c */ { false, 0x735c, 0x735c }, /* 0x735d */ { false, 0x735d, 0x735d }, /* 0x735e */ { false, 0x735e, 0x735e }, /* 0x735f */ { false, 0x735f, 0x735f }, /* 0x7360 */ { false, 0x7360, 0x7360 }, /* 0x7361 */ { false, 0x7361, 0x7361 }, /* 0x7362 */ { false, 0x7362, 0x7362 }, /* 0x7363 */ { false, 0x7363, 0x7363 }, /* 0x7364 */ { false, 0x7364, 0x7364 }, /* 0x7365 */ { false, 0x7365, 0x7365 }, /* 0x7366 */ { false, 0x7366, 0x7366 }, /* 0x7367 */ { false, 0x7367, 0x7367 }, /* 0x7368 */ { false, 0x7368, 0x7368 }, /* 0x7369 */ { false, 0x7369, 0x7369 }, /* 0x736a */ { false, 0x736a, 0x736a }, /* 0x736b */ { false, 0x736b, 0x736b }, /* 0x736c */ { false, 0x736c, 0x736c }, /* 0x736d */ { false, 0x736d, 0x736d }, /* 0x736e */ { false, 0x736e, 0x736e }, /* 0x736f */ { false, 0x736f, 0x736f }, /* 0x7370 */ { false, 0x7370, 0x7370 }, /* 0x7371 */ { false, 0x7371, 0x7371 }, /* 0x7372 */ { false, 0x7372, 0x7372 }, /* 0x7373 */ { false, 0x7373, 0x7373 }, /* 0x7374 */ { false, 0x7374, 0x7374 }, /* 0x7375 */ { false, 0x7375, 0x7375 }, /* 0x7376 */ { false, 0x7376, 0x7376 }, /* 0x7377 */ { false, 0x7377, 0x7377 }, /* 0x7378 */ { false, 0x7378, 0x7378 }, /* 0x7379 */ { false, 0x7379, 0x7379 }, /* 0x737a */ { false, 0x737a, 0x737a }, /* 0x737b */ { false, 0x737b, 0x737b }, /* 0x737c */ { false, 0x737c, 0x737c }, /* 0x737d */ { false, 0x737d, 0x737d }, /* 0x737e */ { false, 0x737e, 0x737e }, /* 0x737f */ { false, 0x737f, 0x737f }, /* 0x7380 */ { false, 0x7380, 0x7380 }, /* 0x7381 */ { false, 0x7381, 0x7381 }, /* 0x7382 */ { false, 0x7382, 0x7382 }, /* 0x7383 */ { false, 0x7383, 0x7383 }, /* 0x7384 */ { false, 0x7384, 0x7384 }, /* 0x7385 */ { false, 0x7385, 0x7385 }, /* 0x7386 */ { false, 0x7386, 0x7386 }, /* 0x7387 */ { false, 0x7387, 0x7387 }, /* 0x7388 */ { false, 0x7388, 0x7388 }, /* 0x7389 */ { false, 0x7389, 0x7389 }, /* 0x738a */ { false, 0x738a, 0x738a }, /* 0x738b */ { false, 0x738b, 0x738b }, /* 0x738c */ { false, 0x738c, 0x738c }, /* 0x738d */ { false, 0x738d, 0x738d }, /* 0x738e */ { false, 0x738e, 0x738e }, /* 0x738f */ { false, 0x738f, 0x738f }, /* 0x7390 */ { false, 0x7390, 0x7390 }, /* 0x7391 */ { false, 0x7391, 0x7391 }, /* 0x7392 */ { false, 0x7392, 0x7392 }, /* 0x7393 */ { false, 0x7393, 0x7393 }, /* 0x7394 */ { false, 0x7394, 0x7394 }, /* 0x7395 */ { false, 0x7395, 0x7395 }, /* 0x7396 */ { false, 0x7396, 0x7396 }, /* 0x7397 */ { false, 0x7397, 0x7397 }, /* 0x7398 */ { false, 0x7398, 0x7398 }, /* 0x7399 */ { false, 0x7399, 0x7399 }, /* 0x739a */ { false, 0x739a, 0x739a }, /* 0x739b */ { false, 0x739b, 0x739b }, /* 0x739c */ { false, 0x739c, 0x739c }, /* 0x739d */ { false, 0x739d, 0x739d }, /* 0x739e */ { false, 0x739e, 0x739e }, /* 0x739f */ { false, 0x739f, 0x739f }, /* 0x73a0 */ { false, 0x73a0, 0x73a0 }, /* 0x73a1 */ { false, 0x73a1, 0x73a1 }, /* 0x73a2 */ { false, 0x73a2, 0x73a2 }, /* 0x73a3 */ { false, 0x73a3, 0x73a3 }, /* 0x73a4 */ { false, 0x73a4, 0x73a4 }, /* 0x73a5 */ { false, 0x73a5, 0x73a5 }, /* 0x73a6 */ { false, 0x73a6, 0x73a6 }, /* 0x73a7 */ { false, 0x73a7, 0x73a7 }, /* 0x73a8 */ { false, 0x73a8, 0x73a8 }, /* 0x73a9 */ { false, 0x73a9, 0x73a9 }, /* 0x73aa */ { false, 0x73aa, 0x73aa }, /* 0x73ab */ { false, 0x73ab, 0x73ab }, /* 0x73ac */ { false, 0x73ac, 0x73ac }, /* 0x73ad */ { false, 0x73ad, 0x73ad }, /* 0x73ae */ { false, 0x73ae, 0x73ae }, /* 0x73af */ { false, 0x73af, 0x73af }, /* 0x73b0 */ { false, 0x73b0, 0x73b0 }, /* 0x73b1 */ { false, 0x73b1, 0x73b1 }, /* 0x73b2 */ { false, 0x73b2, 0x73b2 }, /* 0x73b3 */ { false, 0x73b3, 0x73b3 }, /* 0x73b4 */ { false, 0x73b4, 0x73b4 }, /* 0x73b5 */ { false, 0x73b5, 0x73b5 }, /* 0x73b6 */ { false, 0x73b6, 0x73b6 }, /* 0x73b7 */ { false, 0x73b7, 0x73b7 }, /* 0x73b8 */ { false, 0x73b8, 0x73b8 }, /* 0x73b9 */ { false, 0x73b9, 0x73b9 }, /* 0x73ba */ { false, 0x73ba, 0x73ba }, /* 0x73bb */ { false, 0x73bb, 0x73bb }, /* 0x73bc */ { false, 0x73bc, 0x73bc }, /* 0x73bd */ { false, 0x73bd, 0x73bd }, /* 0x73be */ { false, 0x73be, 0x73be }, /* 0x73bf */ { false, 0x73bf, 0x73bf }, /* 0x73c0 */ { false, 0x73c0, 0x73c0 }, /* 0x73c1 */ { false, 0x73c1, 0x73c1 }, /* 0x73c2 */ { false, 0x73c2, 0x73c2 }, /* 0x73c3 */ { false, 0x73c3, 0x73c3 }, /* 0x73c4 */ { false, 0x73c4, 0x73c4 }, /* 0x73c5 */ { false, 0x73c5, 0x73c5 }, /* 0x73c6 */ { false, 0x73c6, 0x73c6 }, /* 0x73c7 */ { false, 0x73c7, 0x73c7 }, /* 0x73c8 */ { false, 0x73c8, 0x73c8 }, /* 0x73c9 */ { false, 0x73c9, 0x73c9 }, /* 0x73ca */ { false, 0x73ca, 0x73ca }, /* 0x73cb */ { false, 0x73cb, 0x73cb }, /* 0x73cc */ { false, 0x73cc, 0x73cc }, /* 0x73cd */ { false, 0x73cd, 0x73cd }, /* 0x73ce */ { false, 0x73ce, 0x73ce }, /* 0x73cf */ { false, 0x73cf, 0x73cf }, /* 0x73d0 */ { false, 0x73d0, 0x73d0 }, /* 0x73d1 */ { false, 0x73d1, 0x73d1 }, /* 0x73d2 */ { false, 0x73d2, 0x73d2 }, /* 0x73d3 */ { false, 0x73d3, 0x73d3 }, /* 0x73d4 */ { false, 0x73d4, 0x73d4 }, /* 0x73d5 */ { false, 0x73d5, 0x73d5 }, /* 0x73d6 */ { false, 0x73d6, 0x73d6 }, /* 0x73d7 */ { false, 0x73d7, 0x73d7 }, /* 0x73d8 */ { false, 0x73d8, 0x73d8 }, /* 0x73d9 */ { false, 0x73d9, 0x73d9 }, /* 0x73da */ { false, 0x73da, 0x73da }, /* 0x73db */ { false, 0x73db, 0x73db }, /* 0x73dc */ { false, 0x73dc, 0x73dc }, /* 0x73dd */ { false, 0x73dd, 0x73dd }, /* 0x73de */ { false, 0x73de, 0x73de }, /* 0x73df */ { false, 0x73df, 0x73df }, /* 0x73e0 */ { false, 0x73e0, 0x73e0 }, /* 0x73e1 */ { false, 0x73e1, 0x73e1 }, /* 0x73e2 */ { false, 0x73e2, 0x73e2 }, /* 0x73e3 */ { false, 0x73e3, 0x73e3 }, /* 0x73e4 */ { false, 0x73e4, 0x73e4 }, /* 0x73e5 */ { false, 0x73e5, 0x73e5 }, /* 0x73e6 */ { false, 0x73e6, 0x73e6 }, /* 0x73e7 */ { false, 0x73e7, 0x73e7 }, /* 0x73e8 */ { false, 0x73e8, 0x73e8 }, /* 0x73e9 */ { false, 0x73e9, 0x73e9 }, /* 0x73ea */ { false, 0x73ea, 0x73ea }, /* 0x73eb */ { false, 0x73eb, 0x73eb }, /* 0x73ec */ { false, 0x73ec, 0x73ec }, /* 0x73ed */ { false, 0x73ed, 0x73ed }, /* 0x73ee */ { false, 0x73ee, 0x73ee }, /* 0x73ef */ { false, 0x73ef, 0x73ef }, /* 0x73f0 */ { false, 0x73f0, 0x73f0 }, /* 0x73f1 */ { false, 0x73f1, 0x73f1 }, /* 0x73f2 */ { false, 0x73f2, 0x73f2 }, /* 0x73f3 */ { false, 0x73f3, 0x73f3 }, /* 0x73f4 */ { false, 0x73f4, 0x73f4 }, /* 0x73f5 */ { false, 0x73f5, 0x73f5 }, /* 0x73f6 */ { false, 0x73f6, 0x73f6 }, /* 0x73f7 */ { false, 0x73f7, 0x73f7 }, /* 0x73f8 */ { false, 0x73f8, 0x73f8 }, /* 0x73f9 */ { false, 0x73f9, 0x73f9 }, /* 0x73fa */ { false, 0x73fa, 0x73fa }, /* 0x73fb */ { false, 0x73fb, 0x73fb }, /* 0x73fc */ { false, 0x73fc, 0x73fc }, /* 0x73fd */ { false, 0x73fd, 0x73fd }, /* 0x73fe */ { false, 0x73fe, 0x73fe }, /* 0x73ff */ { false, 0x73ff, 0x73ff }, /* 0x7400 */ { false, 0x7400, 0x7400 }, /* 0x7401 */ { false, 0x7401, 0x7401 }, /* 0x7402 */ { false, 0x7402, 0x7402 }, /* 0x7403 */ { false, 0x7403, 0x7403 }, /* 0x7404 */ { false, 0x7404, 0x7404 }, /* 0x7405 */ { false, 0x7405, 0x7405 }, /* 0x7406 */ { false, 0x7406, 0x7406 }, /* 0x7407 */ { false, 0x7407, 0x7407 }, /* 0x7408 */ { false, 0x7408, 0x7408 }, /* 0x7409 */ { false, 0x7409, 0x7409 }, /* 0x740a */ { false, 0x740a, 0x740a }, /* 0x740b */ { false, 0x740b, 0x740b }, /* 0x740c */ { false, 0x740c, 0x740c }, /* 0x740d */ { false, 0x740d, 0x740d }, /* 0x740e */ { false, 0x740e, 0x740e }, /* 0x740f */ { false, 0x740f, 0x740f }, /* 0x7410 */ { false, 0x7410, 0x7410 }, /* 0x7411 */ { false, 0x7411, 0x7411 }, /* 0x7412 */ { false, 0x7412, 0x7412 }, /* 0x7413 */ { false, 0x7413, 0x7413 }, /* 0x7414 */ { false, 0x7414, 0x7414 }, /* 0x7415 */ { false, 0x7415, 0x7415 }, /* 0x7416 */ { false, 0x7416, 0x7416 }, /* 0x7417 */ { false, 0x7417, 0x7417 }, /* 0x7418 */ { false, 0x7418, 0x7418 }, /* 0x7419 */ { false, 0x7419, 0x7419 }, /* 0x741a */ { false, 0x741a, 0x741a }, /* 0x741b */ { false, 0x741b, 0x741b }, /* 0x741c */ { false, 0x741c, 0x741c }, /* 0x741d */ { false, 0x741d, 0x741d }, /* 0x741e */ { false, 0x741e, 0x741e }, /* 0x741f */ { false, 0x741f, 0x741f }, /* 0x7420 */ { false, 0x7420, 0x7420 }, /* 0x7421 */ { false, 0x7421, 0x7421 }, /* 0x7422 */ { false, 0x7422, 0x7422 }, /* 0x7423 */ { false, 0x7423, 0x7423 }, /* 0x7424 */ { false, 0x7424, 0x7424 }, /* 0x7425 */ { false, 0x7425, 0x7425 }, /* 0x7426 */ { false, 0x7426, 0x7426 }, /* 0x7427 */ { false, 0x7427, 0x7427 }, /* 0x7428 */ { false, 0x7428, 0x7428 }, /* 0x7429 */ { false, 0x7429, 0x7429 }, /* 0x742a */ { false, 0x742a, 0x742a }, /* 0x742b */ { false, 0x742b, 0x742b }, /* 0x742c */ { false, 0x742c, 0x742c }, /* 0x742d */ { false, 0x742d, 0x742d }, /* 0x742e */ { false, 0x742e, 0x742e }, /* 0x742f */ { false, 0x742f, 0x742f }, /* 0x7430 */ { false, 0x7430, 0x7430 }, /* 0x7431 */ { false, 0x7431, 0x7431 }, /* 0x7432 */ { false, 0x7432, 0x7432 }, /* 0x7433 */ { false, 0x7433, 0x7433 }, /* 0x7434 */ { false, 0x7434, 0x7434 }, /* 0x7435 */ { false, 0x7435, 0x7435 }, /* 0x7436 */ { false, 0x7436, 0x7436 }, /* 0x7437 */ { false, 0x7437, 0x7437 }, /* 0x7438 */ { false, 0x7438, 0x7438 }, /* 0x7439 */ { false, 0x7439, 0x7439 }, /* 0x743a */ { false, 0x743a, 0x743a }, /* 0x743b */ { false, 0x743b, 0x743b }, /* 0x743c */ { false, 0x743c, 0x743c }, /* 0x743d */ { false, 0x743d, 0x743d }, /* 0x743e */ { false, 0x743e, 0x743e }, /* 0x743f */ { false, 0x743f, 0x743f }, /* 0x7440 */ { false, 0x7440, 0x7440 }, /* 0x7441 */ { false, 0x7441, 0x7441 }, /* 0x7442 */ { false, 0x7442, 0x7442 }, /* 0x7443 */ { false, 0x7443, 0x7443 }, /* 0x7444 */ { false, 0x7444, 0x7444 }, /* 0x7445 */ { false, 0x7445, 0x7445 }, /* 0x7446 */ { false, 0x7446, 0x7446 }, /* 0x7447 */ { false, 0x7447, 0x7447 }, /* 0x7448 */ { false, 0x7448, 0x7448 }, /* 0x7449 */ { false, 0x7449, 0x7449 }, /* 0x744a */ { false, 0x744a, 0x744a }, /* 0x744b */ { false, 0x744b, 0x744b }, /* 0x744c */ { false, 0x744c, 0x744c }, /* 0x744d */ { false, 0x744d, 0x744d }, /* 0x744e */ { false, 0x744e, 0x744e }, /* 0x744f */ { false, 0x744f, 0x744f }, /* 0x7450 */ { false, 0x7450, 0x7450 }, /* 0x7451 */ { false, 0x7451, 0x7451 }, /* 0x7452 */ { false, 0x7452, 0x7452 }, /* 0x7453 */ { false, 0x7453, 0x7453 }, /* 0x7454 */ { false, 0x7454, 0x7454 }, /* 0x7455 */ { false, 0x7455, 0x7455 }, /* 0x7456 */ { false, 0x7456, 0x7456 }, /* 0x7457 */ { false, 0x7457, 0x7457 }, /* 0x7458 */ { false, 0x7458, 0x7458 }, /* 0x7459 */ { false, 0x7459, 0x7459 }, /* 0x745a */ { false, 0x745a, 0x745a }, /* 0x745b */ { false, 0x745b, 0x745b }, /* 0x745c */ { false, 0x745c, 0x745c }, /* 0x745d */ { false, 0x745d, 0x745d }, /* 0x745e */ { false, 0x745e, 0x745e }, /* 0x745f */ { false, 0x745f, 0x745f }, /* 0x7460 */ { false, 0x7460, 0x7460 }, /* 0x7461 */ { false, 0x7461, 0x7461 }, /* 0x7462 */ { false, 0x7462, 0x7462 }, /* 0x7463 */ { false, 0x7463, 0x7463 }, /* 0x7464 */ { false, 0x7464, 0x7464 }, /* 0x7465 */ { false, 0x7465, 0x7465 }, /* 0x7466 */ { false, 0x7466, 0x7466 }, /* 0x7467 */ { false, 0x7467, 0x7467 }, /* 0x7468 */ { false, 0x7468, 0x7468 }, /* 0x7469 */ { false, 0x7469, 0x7469 }, /* 0x746a */ { false, 0x746a, 0x746a }, /* 0x746b */ { false, 0x746b, 0x746b }, /* 0x746c */ { false, 0x746c, 0x746c }, /* 0x746d */ { false, 0x746d, 0x746d }, /* 0x746e */ { false, 0x746e, 0x746e }, /* 0x746f */ { false, 0x746f, 0x746f }, /* 0x7470 */ { false, 0x7470, 0x7470 }, /* 0x7471 */ { false, 0x7471, 0x7471 }, /* 0x7472 */ { false, 0x7472, 0x7472 }, /* 0x7473 */ { false, 0x7473, 0x7473 }, /* 0x7474 */ { false, 0x7474, 0x7474 }, /* 0x7475 */ { false, 0x7475, 0x7475 }, /* 0x7476 */ { false, 0x7476, 0x7476 }, /* 0x7477 */ { false, 0x7477, 0x7477 }, /* 0x7478 */ { false, 0x7478, 0x7478 }, /* 0x7479 */ { false, 0x7479, 0x7479 }, /* 0x747a */ { false, 0x747a, 0x747a }, /* 0x747b */ { false, 0x747b, 0x747b }, /* 0x747c */ { false, 0x747c, 0x747c }, /* 0x747d */ { false, 0x747d, 0x747d }, /* 0x747e */ { false, 0x747e, 0x747e }, /* 0x747f */ { false, 0x747f, 0x747f }, /* 0x7480 */ { false, 0x7480, 0x7480 }, /* 0x7481 */ { false, 0x7481, 0x7481 }, /* 0x7482 */ { false, 0x7482, 0x7482 }, /* 0x7483 */ { false, 0x7483, 0x7483 }, /* 0x7484 */ { false, 0x7484, 0x7484 }, /* 0x7485 */ { false, 0x7485, 0x7485 }, /* 0x7486 */ { false, 0x7486, 0x7486 }, /* 0x7487 */ { false, 0x7487, 0x7487 }, /* 0x7488 */ { false, 0x7488, 0x7488 }, /* 0x7489 */ { false, 0x7489, 0x7489 }, /* 0x748a */ { false, 0x748a, 0x748a }, /* 0x748b */ { false, 0x748b, 0x748b }, /* 0x748c */ { false, 0x748c, 0x748c }, /* 0x748d */ { false, 0x748d, 0x748d }, /* 0x748e */ { false, 0x748e, 0x748e }, /* 0x748f */ { false, 0x748f, 0x748f }, /* 0x7490 */ { false, 0x7490, 0x7490 }, /* 0x7491 */ { false, 0x7491, 0x7491 }, /* 0x7492 */ { false, 0x7492, 0x7492 }, /* 0x7493 */ { false, 0x7493, 0x7493 }, /* 0x7494 */ { false, 0x7494, 0x7494 }, /* 0x7495 */ { false, 0x7495, 0x7495 }, /* 0x7496 */ { false, 0x7496, 0x7496 }, /* 0x7497 */ { false, 0x7497, 0x7497 }, /* 0x7498 */ { false, 0x7498, 0x7498 }, /* 0x7499 */ { false, 0x7499, 0x7499 }, /* 0x749a */ { false, 0x749a, 0x749a }, /* 0x749b */ { false, 0x749b, 0x749b }, /* 0x749c */ { false, 0x749c, 0x749c }, /* 0x749d */ { false, 0x749d, 0x749d }, /* 0x749e */ { false, 0x749e, 0x749e }, /* 0x749f */ { false, 0x749f, 0x749f }, /* 0x74a0 */ { false, 0x74a0, 0x74a0 }, /* 0x74a1 */ { false, 0x74a1, 0x74a1 }, /* 0x74a2 */ { false, 0x74a2, 0x74a2 }, /* 0x74a3 */ { false, 0x74a3, 0x74a3 }, /* 0x74a4 */ { false, 0x74a4, 0x74a4 }, /* 0x74a5 */ { false, 0x74a5, 0x74a5 }, /* 0x74a6 */ { false, 0x74a6, 0x74a6 }, /* 0x74a7 */ { false, 0x74a7, 0x74a7 }, /* 0x74a8 */ { false, 0x74a8, 0x74a8 }, /* 0x74a9 */ { false, 0x74a9, 0x74a9 }, /* 0x74aa */ { false, 0x74aa, 0x74aa }, /* 0x74ab */ { false, 0x74ab, 0x74ab }, /* 0x74ac */ { false, 0x74ac, 0x74ac }, /* 0x74ad */ { false, 0x74ad, 0x74ad }, /* 0x74ae */ { false, 0x74ae, 0x74ae }, /* 0x74af */ { false, 0x74af, 0x74af }, /* 0x74b0 */ { false, 0x74b0, 0x74b0 }, /* 0x74b1 */ { false, 0x74b1, 0x74b1 }, /* 0x74b2 */ { false, 0x74b2, 0x74b2 }, /* 0x74b3 */ { false, 0x74b3, 0x74b3 }, /* 0x74b4 */ { false, 0x74b4, 0x74b4 }, /* 0x74b5 */ { false, 0x74b5, 0x74b5 }, /* 0x74b6 */ { false, 0x74b6, 0x74b6 }, /* 0x74b7 */ { false, 0x74b7, 0x74b7 }, /* 0x74b8 */ { false, 0x74b8, 0x74b8 }, /* 0x74b9 */ { false, 0x74b9, 0x74b9 }, /* 0x74ba */ { false, 0x74ba, 0x74ba }, /* 0x74bb */ { false, 0x74bb, 0x74bb }, /* 0x74bc */ { false, 0x74bc, 0x74bc }, /* 0x74bd */ { false, 0x74bd, 0x74bd }, /* 0x74be */ { false, 0x74be, 0x74be }, /* 0x74bf */ { false, 0x74bf, 0x74bf }, /* 0x74c0 */ { false, 0x74c0, 0x74c0 }, /* 0x74c1 */ { false, 0x74c1, 0x74c1 }, /* 0x74c2 */ { false, 0x74c2, 0x74c2 }, /* 0x74c3 */ { false, 0x74c3, 0x74c3 }, /* 0x74c4 */ { false, 0x74c4, 0x74c4 }, /* 0x74c5 */ { false, 0x74c5, 0x74c5 }, /* 0x74c6 */ { false, 0x74c6, 0x74c6 }, /* 0x74c7 */ { false, 0x74c7, 0x74c7 }, /* 0x74c8 */ { false, 0x74c8, 0x74c8 }, /* 0x74c9 */ { false, 0x74c9, 0x74c9 }, /* 0x74ca */ { false, 0x74ca, 0x74ca }, /* 0x74cb */ { false, 0x74cb, 0x74cb }, /* 0x74cc */ { false, 0x74cc, 0x74cc }, /* 0x74cd */ { false, 0x74cd, 0x74cd }, /* 0x74ce */ { false, 0x74ce, 0x74ce }, /* 0x74cf */ { false, 0x74cf, 0x74cf }, /* 0x74d0 */ { false, 0x74d0, 0x74d0 }, /* 0x74d1 */ { false, 0x74d1, 0x74d1 }, /* 0x74d2 */ { false, 0x74d2, 0x74d2 }, /* 0x74d3 */ { false, 0x74d3, 0x74d3 }, /* 0x74d4 */ { false, 0x74d4, 0x74d4 }, /* 0x74d5 */ { false, 0x74d5, 0x74d5 }, /* 0x74d6 */ { false, 0x74d6, 0x74d6 }, /* 0x74d7 */ { false, 0x74d7, 0x74d7 }, /* 0x74d8 */ { false, 0x74d8, 0x74d8 }, /* 0x74d9 */ { false, 0x74d9, 0x74d9 }, /* 0x74da */ { false, 0x74da, 0x74da }, /* 0x74db */ { false, 0x74db, 0x74db }, /* 0x74dc */ { false, 0x74dc, 0x74dc }, /* 0x74dd */ { false, 0x74dd, 0x74dd }, /* 0x74de */ { false, 0x74de, 0x74de }, /* 0x74df */ { false, 0x74df, 0x74df }, /* 0x74e0 */ { false, 0x74e0, 0x74e0 }, /* 0x74e1 */ { false, 0x74e1, 0x74e1 }, /* 0x74e2 */ { false, 0x74e2, 0x74e2 }, /* 0x74e3 */ { false, 0x74e3, 0x74e3 }, /* 0x74e4 */ { false, 0x74e4, 0x74e4 }, /* 0x74e5 */ { false, 0x74e5, 0x74e5 }, /* 0x74e6 */ { false, 0x74e6, 0x74e6 }, /* 0x74e7 */ { false, 0x74e7, 0x74e7 }, /* 0x74e8 */ { false, 0x74e8, 0x74e8 }, /* 0x74e9 */ { false, 0x74e9, 0x74e9 }, /* 0x74ea */ { false, 0x74ea, 0x74ea }, /* 0x74eb */ { false, 0x74eb, 0x74eb }, /* 0x74ec */ { false, 0x74ec, 0x74ec }, /* 0x74ed */ { false, 0x74ed, 0x74ed }, /* 0x74ee */ { false, 0x74ee, 0x74ee }, /* 0x74ef */ { false, 0x74ef, 0x74ef }, /* 0x74f0 */ { false, 0x74f0, 0x74f0 }, /* 0x74f1 */ { false, 0x74f1, 0x74f1 }, /* 0x74f2 */ { false, 0x74f2, 0x74f2 }, /* 0x74f3 */ { false, 0x74f3, 0x74f3 }, /* 0x74f4 */ { false, 0x74f4, 0x74f4 }, /* 0x74f5 */ { false, 0x74f5, 0x74f5 }, /* 0x74f6 */ { false, 0x74f6, 0x74f6 }, /* 0x74f7 */ { false, 0x74f7, 0x74f7 }, /* 0x74f8 */ { false, 0x74f8, 0x74f8 }, /* 0x74f9 */ { false, 0x74f9, 0x74f9 }, /* 0x74fa */ { false, 0x74fa, 0x74fa }, /* 0x74fb */ { false, 0x74fb, 0x74fb }, /* 0x74fc */ { false, 0x74fc, 0x74fc }, /* 0x74fd */ { false, 0x74fd, 0x74fd }, /* 0x74fe */ { false, 0x74fe, 0x74fe }, /* 0x74ff */ { false, 0x74ff, 0x74ff }, /* 0x7500 */ { false, 0x7500, 0x7500 }, /* 0x7501 */ { false, 0x7501, 0x7501 }, /* 0x7502 */ { false, 0x7502, 0x7502 }, /* 0x7503 */ { false, 0x7503, 0x7503 }, /* 0x7504 */ { false, 0x7504, 0x7504 }, /* 0x7505 */ { false, 0x7505, 0x7505 }, /* 0x7506 */ { false, 0x7506, 0x7506 }, /* 0x7507 */ { false, 0x7507, 0x7507 }, /* 0x7508 */ { false, 0x7508, 0x7508 }, /* 0x7509 */ { false, 0x7509, 0x7509 }, /* 0x750a */ { false, 0x750a, 0x750a }, /* 0x750b */ { false, 0x750b, 0x750b }, /* 0x750c */ { false, 0x750c, 0x750c }, /* 0x750d */ { false, 0x750d, 0x750d }, /* 0x750e */ { false, 0x750e, 0x750e }, /* 0x750f */ { false, 0x750f, 0x750f }, /* 0x7510 */ { false, 0x7510, 0x7510 }, /* 0x7511 */ { false, 0x7511, 0x7511 }, /* 0x7512 */ { false, 0x7512, 0x7512 }, /* 0x7513 */ { false, 0x7513, 0x7513 }, /* 0x7514 */ { false, 0x7514, 0x7514 }, /* 0x7515 */ { false, 0x7515, 0x7515 }, /* 0x7516 */ { false, 0x7516, 0x7516 }, /* 0x7517 */ { false, 0x7517, 0x7517 }, /* 0x7518 */ { false, 0x7518, 0x7518 }, /* 0x7519 */ { false, 0x7519, 0x7519 }, /* 0x751a */ { false, 0x751a, 0x751a }, /* 0x751b */ { false, 0x751b, 0x751b }, /* 0x751c */ { false, 0x751c, 0x751c }, /* 0x751d */ { false, 0x751d, 0x751d }, /* 0x751e */ { false, 0x751e, 0x751e }, /* 0x751f */ { false, 0x751f, 0x751f }, /* 0x7520 */ { false, 0x7520, 0x7520 }, /* 0x7521 */ { false, 0x7521, 0x7521 }, /* 0x7522 */ { false, 0x7522, 0x7522 }, /* 0x7523 */ { false, 0x7523, 0x7523 }, /* 0x7524 */ { false, 0x7524, 0x7524 }, /* 0x7525 */ { false, 0x7525, 0x7525 }, /* 0x7526 */ { false, 0x7526, 0x7526 }, /* 0x7527 */ { false, 0x7527, 0x7527 }, /* 0x7528 */ { false, 0x7528, 0x7528 }, /* 0x7529 */ { false, 0x7529, 0x7529 }, /* 0x752a */ { false, 0x752a, 0x752a }, /* 0x752b */ { false, 0x752b, 0x752b }, /* 0x752c */ { false, 0x752c, 0x752c }, /* 0x752d */ { false, 0x752d, 0x752d }, /* 0x752e */ { false, 0x752e, 0x752e }, /* 0x752f */ { false, 0x752f, 0x752f }, /* 0x7530 */ { false, 0x7530, 0x7530 }, /* 0x7531 */ { false, 0x7531, 0x7531 }, /* 0x7532 */ { false, 0x7532, 0x7532 }, /* 0x7533 */ { false, 0x7533, 0x7533 }, /* 0x7534 */ { false, 0x7534, 0x7534 }, /* 0x7535 */ { false, 0x7535, 0x7535 }, /* 0x7536 */ { false, 0x7536, 0x7536 }, /* 0x7537 */ { false, 0x7537, 0x7537 }, /* 0x7538 */ { false, 0x7538, 0x7538 }, /* 0x7539 */ { false, 0x7539, 0x7539 }, /* 0x753a */ { false, 0x753a, 0x753a }, /* 0x753b */ { false, 0x753b, 0x753b }, /* 0x753c */ { false, 0x753c, 0x753c }, /* 0x753d */ { false, 0x753d, 0x753d }, /* 0x753e */ { false, 0x753e, 0x753e }, /* 0x753f */ { false, 0x753f, 0x753f }, /* 0x7540 */ { false, 0x7540, 0x7540 }, /* 0x7541 */ { false, 0x7541, 0x7541 }, /* 0x7542 */ { false, 0x7542, 0x7542 }, /* 0x7543 */ { false, 0x7543, 0x7543 }, /* 0x7544 */ { false, 0x7544, 0x7544 }, /* 0x7545 */ { false, 0x7545, 0x7545 }, /* 0x7546 */ { false, 0x7546, 0x7546 }, /* 0x7547 */ { false, 0x7547, 0x7547 }, /* 0x7548 */ { false, 0x7548, 0x7548 }, /* 0x7549 */ { false, 0x7549, 0x7549 }, /* 0x754a */ { false, 0x754a, 0x754a }, /* 0x754b */ { false, 0x754b, 0x754b }, /* 0x754c */ { false, 0x754c, 0x754c }, /* 0x754d */ { false, 0x754d, 0x754d }, /* 0x754e */ { false, 0x754e, 0x754e }, /* 0x754f */ { false, 0x754f, 0x754f }, /* 0x7550 */ { false, 0x7550, 0x7550 }, /* 0x7551 */ { false, 0x7551, 0x7551 }, /* 0x7552 */ { false, 0x7552, 0x7552 }, /* 0x7553 */ { false, 0x7553, 0x7553 }, /* 0x7554 */ { false, 0x7554, 0x7554 }, /* 0x7555 */ { false, 0x7555, 0x7555 }, /* 0x7556 */ { false, 0x7556, 0x7556 }, /* 0x7557 */ { false, 0x7557, 0x7557 }, /* 0x7558 */ { false, 0x7558, 0x7558 }, /* 0x7559 */ { false, 0x7559, 0x7559 }, /* 0x755a */ { false, 0x755a, 0x755a }, /* 0x755b */ { false, 0x755b, 0x755b }, /* 0x755c */ { false, 0x755c, 0x755c }, /* 0x755d */ { false, 0x755d, 0x755d }, /* 0x755e */ { false, 0x755e, 0x755e }, /* 0x755f */ { false, 0x755f, 0x755f }, /* 0x7560 */ { false, 0x7560, 0x7560 }, /* 0x7561 */ { false, 0x7561, 0x7561 }, /* 0x7562 */ { false, 0x7562, 0x7562 }, /* 0x7563 */ { false, 0x7563, 0x7563 }, /* 0x7564 */ { false, 0x7564, 0x7564 }, /* 0x7565 */ { false, 0x7565, 0x7565 }, /* 0x7566 */ { false, 0x7566, 0x7566 }, /* 0x7567 */ { false, 0x7567, 0x7567 }, /* 0x7568 */ { false, 0x7568, 0x7568 }, /* 0x7569 */ { false, 0x7569, 0x7569 }, /* 0x756a */ { false, 0x756a, 0x756a }, /* 0x756b */ { false, 0x756b, 0x756b }, /* 0x756c */ { false, 0x756c, 0x756c }, /* 0x756d */ { false, 0x756d, 0x756d }, /* 0x756e */ { false, 0x756e, 0x756e }, /* 0x756f */ { false, 0x756f, 0x756f }, /* 0x7570 */ { false, 0x7570, 0x7570 }, /* 0x7571 */ { false, 0x7571, 0x7571 }, /* 0x7572 */ { false, 0x7572, 0x7572 }, /* 0x7573 */ { false, 0x7573, 0x7573 }, /* 0x7574 */ { false, 0x7574, 0x7574 }, /* 0x7575 */ { false, 0x7575, 0x7575 }, /* 0x7576 */ { false, 0x7576, 0x7576 }, /* 0x7577 */ { false, 0x7577, 0x7577 }, /* 0x7578 */ { false, 0x7578, 0x7578 }, /* 0x7579 */ { false, 0x7579, 0x7579 }, /* 0x757a */ { false, 0x757a, 0x757a }, /* 0x757b */ { false, 0x757b, 0x757b }, /* 0x757c */ { false, 0x757c, 0x757c }, /* 0x757d */ { false, 0x757d, 0x757d }, /* 0x757e */ { false, 0x757e, 0x757e }, /* 0x757f */ { false, 0x757f, 0x757f }, /* 0x7580 */ { false, 0x7580, 0x7580 }, /* 0x7581 */ { false, 0x7581, 0x7581 }, /* 0x7582 */ { false, 0x7582, 0x7582 }, /* 0x7583 */ { false, 0x7583, 0x7583 }, /* 0x7584 */ { false, 0x7584, 0x7584 }, /* 0x7585 */ { false, 0x7585, 0x7585 }, /* 0x7586 */ { false, 0x7586, 0x7586 }, /* 0x7587 */ { false, 0x7587, 0x7587 }, /* 0x7588 */ { false, 0x7588, 0x7588 }, /* 0x7589 */ { false, 0x7589, 0x7589 }, /* 0x758a */ { false, 0x758a, 0x758a }, /* 0x758b */ { false, 0x758b, 0x758b }, /* 0x758c */ { false, 0x758c, 0x758c }, /* 0x758d */ { false, 0x758d, 0x758d }, /* 0x758e */ { false, 0x758e, 0x758e }, /* 0x758f */ { false, 0x758f, 0x758f }, /* 0x7590 */ { false, 0x7590, 0x7590 }, /* 0x7591 */ { false, 0x7591, 0x7591 }, /* 0x7592 */ { false, 0x7592, 0x7592 }, /* 0x7593 */ { false, 0x7593, 0x7593 }, /* 0x7594 */ { false, 0x7594, 0x7594 }, /* 0x7595 */ { false, 0x7595, 0x7595 }, /* 0x7596 */ { false, 0x7596, 0x7596 }, /* 0x7597 */ { false, 0x7597, 0x7597 }, /* 0x7598 */ { false, 0x7598, 0x7598 }, /* 0x7599 */ { false, 0x7599, 0x7599 }, /* 0x759a */ { false, 0x759a, 0x759a }, /* 0x759b */ { false, 0x759b, 0x759b }, /* 0x759c */ { false, 0x759c, 0x759c }, /* 0x759d */ { false, 0x759d, 0x759d }, /* 0x759e */ { false, 0x759e, 0x759e }, /* 0x759f */ { false, 0x759f, 0x759f }, /* 0x75a0 */ { false, 0x75a0, 0x75a0 }, /* 0x75a1 */ { false, 0x75a1, 0x75a1 }, /* 0x75a2 */ { false, 0x75a2, 0x75a2 }, /* 0x75a3 */ { false, 0x75a3, 0x75a3 }, /* 0x75a4 */ { false, 0x75a4, 0x75a4 }, /* 0x75a5 */ { false, 0x75a5, 0x75a5 }, /* 0x75a6 */ { false, 0x75a6, 0x75a6 }, /* 0x75a7 */ { false, 0x75a7, 0x75a7 }, /* 0x75a8 */ { false, 0x75a8, 0x75a8 }, /* 0x75a9 */ { false, 0x75a9, 0x75a9 }, /* 0x75aa */ { false, 0x75aa, 0x75aa }, /* 0x75ab */ { false, 0x75ab, 0x75ab }, /* 0x75ac */ { false, 0x75ac, 0x75ac }, /* 0x75ad */ { false, 0x75ad, 0x75ad }, /* 0x75ae */ { false, 0x75ae, 0x75ae }, /* 0x75af */ { false, 0x75af, 0x75af }, /* 0x75b0 */ { false, 0x75b0, 0x75b0 }, /* 0x75b1 */ { false, 0x75b1, 0x75b1 }, /* 0x75b2 */ { false, 0x75b2, 0x75b2 }, /* 0x75b3 */ { false, 0x75b3, 0x75b3 }, /* 0x75b4 */ { false, 0x75b4, 0x75b4 }, /* 0x75b5 */ { false, 0x75b5, 0x75b5 }, /* 0x75b6 */ { false, 0x75b6, 0x75b6 }, /* 0x75b7 */ { false, 0x75b7, 0x75b7 }, /* 0x75b8 */ { false, 0x75b8, 0x75b8 }, /* 0x75b9 */ { false, 0x75b9, 0x75b9 }, /* 0x75ba */ { false, 0x75ba, 0x75ba }, /* 0x75bb */ { false, 0x75bb, 0x75bb }, /* 0x75bc */ { false, 0x75bc, 0x75bc }, /* 0x75bd */ { false, 0x75bd, 0x75bd }, /* 0x75be */ { false, 0x75be, 0x75be }, /* 0x75bf */ { false, 0x75bf, 0x75bf }, /* 0x75c0 */ { false, 0x75c0, 0x75c0 }, /* 0x75c1 */ { false, 0x75c1, 0x75c1 }, /* 0x75c2 */ { false, 0x75c2, 0x75c2 }, /* 0x75c3 */ { false, 0x75c3, 0x75c3 }, /* 0x75c4 */ { false, 0x75c4, 0x75c4 }, /* 0x75c5 */ { false, 0x75c5, 0x75c5 }, /* 0x75c6 */ { false, 0x75c6, 0x75c6 }, /* 0x75c7 */ { false, 0x75c7, 0x75c7 }, /* 0x75c8 */ { false, 0x75c8, 0x75c8 }, /* 0x75c9 */ { false, 0x75c9, 0x75c9 }, /* 0x75ca */ { false, 0x75ca, 0x75ca }, /* 0x75cb */ { false, 0x75cb, 0x75cb }, /* 0x75cc */ { false, 0x75cc, 0x75cc }, /* 0x75cd */ { false, 0x75cd, 0x75cd }, /* 0x75ce */ { false, 0x75ce, 0x75ce }, /* 0x75cf */ { false, 0x75cf, 0x75cf }, /* 0x75d0 */ { false, 0x75d0, 0x75d0 }, /* 0x75d1 */ { false, 0x75d1, 0x75d1 }, /* 0x75d2 */ { false, 0x75d2, 0x75d2 }, /* 0x75d3 */ { false, 0x75d3, 0x75d3 }, /* 0x75d4 */ { false, 0x75d4, 0x75d4 }, /* 0x75d5 */ { false, 0x75d5, 0x75d5 }, /* 0x75d6 */ { false, 0x75d6, 0x75d6 }, /* 0x75d7 */ { false, 0x75d7, 0x75d7 }, /* 0x75d8 */ { false, 0x75d8, 0x75d8 }, /* 0x75d9 */ { false, 0x75d9, 0x75d9 }, /* 0x75da */ { false, 0x75da, 0x75da }, /* 0x75db */ { false, 0x75db, 0x75db }, /* 0x75dc */ { false, 0x75dc, 0x75dc }, /* 0x75dd */ { false, 0x75dd, 0x75dd }, /* 0x75de */ { false, 0x75de, 0x75de }, /* 0x75df */ { false, 0x75df, 0x75df }, /* 0x75e0 */ { false, 0x75e0, 0x75e0 }, /* 0x75e1 */ { false, 0x75e1, 0x75e1 }, /* 0x75e2 */ { false, 0x75e2, 0x75e2 }, /* 0x75e3 */ { false, 0x75e3, 0x75e3 }, /* 0x75e4 */ { false, 0x75e4, 0x75e4 }, /* 0x75e5 */ { false, 0x75e5, 0x75e5 }, /* 0x75e6 */ { false, 0x75e6, 0x75e6 }, /* 0x75e7 */ { false, 0x75e7, 0x75e7 }, /* 0x75e8 */ { false, 0x75e8, 0x75e8 }, /* 0x75e9 */ { false, 0x75e9, 0x75e9 }, /* 0x75ea */ { false, 0x75ea, 0x75ea }, /* 0x75eb */ { false, 0x75eb, 0x75eb }, /* 0x75ec */ { false, 0x75ec, 0x75ec }, /* 0x75ed */ { false, 0x75ed, 0x75ed }, /* 0x75ee */ { false, 0x75ee, 0x75ee }, /* 0x75ef */ { false, 0x75ef, 0x75ef }, /* 0x75f0 */ { false, 0x75f0, 0x75f0 }, /* 0x75f1 */ { false, 0x75f1, 0x75f1 }, /* 0x75f2 */ { false, 0x75f2, 0x75f2 }, /* 0x75f3 */ { false, 0x75f3, 0x75f3 }, /* 0x75f4 */ { false, 0x75f4, 0x75f4 }, /* 0x75f5 */ { false, 0x75f5, 0x75f5 }, /* 0x75f6 */ { false, 0x75f6, 0x75f6 }, /* 0x75f7 */ { false, 0x75f7, 0x75f7 }, /* 0x75f8 */ { false, 0x75f8, 0x75f8 }, /* 0x75f9 */ { false, 0x75f9, 0x75f9 }, /* 0x75fa */ { false, 0x75fa, 0x75fa }, /* 0x75fb */ { false, 0x75fb, 0x75fb }, /* 0x75fc */ { false, 0x75fc, 0x75fc }, /* 0x75fd */ { false, 0x75fd, 0x75fd }, /* 0x75fe */ { false, 0x75fe, 0x75fe }, /* 0x75ff */ { false, 0x75ff, 0x75ff }, /* 0x7600 */ { false, 0x7600, 0x7600 }, /* 0x7601 */ { false, 0x7601, 0x7601 }, /* 0x7602 */ { false, 0x7602, 0x7602 }, /* 0x7603 */ { false, 0x7603, 0x7603 }, /* 0x7604 */ { false, 0x7604, 0x7604 }, /* 0x7605 */ { false, 0x7605, 0x7605 }, /* 0x7606 */ { false, 0x7606, 0x7606 }, /* 0x7607 */ { false, 0x7607, 0x7607 }, /* 0x7608 */ { false, 0x7608, 0x7608 }, /* 0x7609 */ { false, 0x7609, 0x7609 }, /* 0x760a */ { false, 0x760a, 0x760a }, /* 0x760b */ { false, 0x760b, 0x760b }, /* 0x760c */ { false, 0x760c, 0x760c }, /* 0x760d */ { false, 0x760d, 0x760d }, /* 0x760e */ { false, 0x760e, 0x760e }, /* 0x760f */ { false, 0x760f, 0x760f }, /* 0x7610 */ { false, 0x7610, 0x7610 }, /* 0x7611 */ { false, 0x7611, 0x7611 }, /* 0x7612 */ { false, 0x7612, 0x7612 }, /* 0x7613 */ { false, 0x7613, 0x7613 }, /* 0x7614 */ { false, 0x7614, 0x7614 }, /* 0x7615 */ { false, 0x7615, 0x7615 }, /* 0x7616 */ { false, 0x7616, 0x7616 }, /* 0x7617 */ { false, 0x7617, 0x7617 }, /* 0x7618 */ { false, 0x7618, 0x7618 }, /* 0x7619 */ { false, 0x7619, 0x7619 }, /* 0x761a */ { false, 0x761a, 0x761a }, /* 0x761b */ { false, 0x761b, 0x761b }, /* 0x761c */ { false, 0x761c, 0x761c }, /* 0x761d */ { false, 0x761d, 0x761d }, /* 0x761e */ { false, 0x761e, 0x761e }, /* 0x761f */ { false, 0x761f, 0x761f }, /* 0x7620 */ { false, 0x7620, 0x7620 }, /* 0x7621 */ { false, 0x7621, 0x7621 }, /* 0x7622 */ { false, 0x7622, 0x7622 }, /* 0x7623 */ { false, 0x7623, 0x7623 }, /* 0x7624 */ { false, 0x7624, 0x7624 }, /* 0x7625 */ { false, 0x7625, 0x7625 }, /* 0x7626 */ { false, 0x7626, 0x7626 }, /* 0x7627 */ { false, 0x7627, 0x7627 }, /* 0x7628 */ { false, 0x7628, 0x7628 }, /* 0x7629 */ { false, 0x7629, 0x7629 }, /* 0x762a */ { false, 0x762a, 0x762a }, /* 0x762b */ { false, 0x762b, 0x762b }, /* 0x762c */ { false, 0x762c, 0x762c }, /* 0x762d */ { false, 0x762d, 0x762d }, /* 0x762e */ { false, 0x762e, 0x762e }, /* 0x762f */ { false, 0x762f, 0x762f }, /* 0x7630 */ { false, 0x7630, 0x7630 }, /* 0x7631 */ { false, 0x7631, 0x7631 }, /* 0x7632 */ { false, 0x7632, 0x7632 }, /* 0x7633 */ { false, 0x7633, 0x7633 }, /* 0x7634 */ { false, 0x7634, 0x7634 }, /* 0x7635 */ { false, 0x7635, 0x7635 }, /* 0x7636 */ { false, 0x7636, 0x7636 }, /* 0x7637 */ { false, 0x7637, 0x7637 }, /* 0x7638 */ { false, 0x7638, 0x7638 }, /* 0x7639 */ { false, 0x7639, 0x7639 }, /* 0x763a */ { false, 0x763a, 0x763a }, /* 0x763b */ { false, 0x763b, 0x763b }, /* 0x763c */ { false, 0x763c, 0x763c }, /* 0x763d */ { false, 0x763d, 0x763d }, /* 0x763e */ { false, 0x763e, 0x763e }, /* 0x763f */ { false, 0x763f, 0x763f }, /* 0x7640 */ { false, 0x7640, 0x7640 }, /* 0x7641 */ { false, 0x7641, 0x7641 }, /* 0x7642 */ { false, 0x7642, 0x7642 }, /* 0x7643 */ { false, 0x7643, 0x7643 }, /* 0x7644 */ { false, 0x7644, 0x7644 }, /* 0x7645 */ { false, 0x7645, 0x7645 }, /* 0x7646 */ { false, 0x7646, 0x7646 }, /* 0x7647 */ { false, 0x7647, 0x7647 }, /* 0x7648 */ { false, 0x7648, 0x7648 }, /* 0x7649 */ { false, 0x7649, 0x7649 }, /* 0x764a */ { false, 0x764a, 0x764a }, /* 0x764b */ { false, 0x764b, 0x764b }, /* 0x764c */ { false, 0x764c, 0x764c }, /* 0x764d */ { false, 0x764d, 0x764d }, /* 0x764e */ { false, 0x764e, 0x764e }, /* 0x764f */ { false, 0x764f, 0x764f }, /* 0x7650 */ { false, 0x7650, 0x7650 }, /* 0x7651 */ { false, 0x7651, 0x7651 }, /* 0x7652 */ { false, 0x7652, 0x7652 }, /* 0x7653 */ { false, 0x7653, 0x7653 }, /* 0x7654 */ { false, 0x7654, 0x7654 }, /* 0x7655 */ { false, 0x7655, 0x7655 }, /* 0x7656 */ { false, 0x7656, 0x7656 }, /* 0x7657 */ { false, 0x7657, 0x7657 }, /* 0x7658 */ { false, 0x7658, 0x7658 }, /* 0x7659 */ { false, 0x7659, 0x7659 }, /* 0x765a */ { false, 0x765a, 0x765a }, /* 0x765b */ { false, 0x765b, 0x765b }, /* 0x765c */ { false, 0x765c, 0x765c }, /* 0x765d */ { false, 0x765d, 0x765d }, /* 0x765e */ { false, 0x765e, 0x765e }, /* 0x765f */ { false, 0x765f, 0x765f }, /* 0x7660 */ { false, 0x7660, 0x7660 }, /* 0x7661 */ { false, 0x7661, 0x7661 }, /* 0x7662 */ { false, 0x7662, 0x7662 }, /* 0x7663 */ { false, 0x7663, 0x7663 }, /* 0x7664 */ { false, 0x7664, 0x7664 }, /* 0x7665 */ { false, 0x7665, 0x7665 }, /* 0x7666 */ { false, 0x7666, 0x7666 }, /* 0x7667 */ { false, 0x7667, 0x7667 }, /* 0x7668 */ { false, 0x7668, 0x7668 }, /* 0x7669 */ { false, 0x7669, 0x7669 }, /* 0x766a */ { false, 0x766a, 0x766a }, /* 0x766b */ { false, 0x766b, 0x766b }, /* 0x766c */ { false, 0x766c, 0x766c }, /* 0x766d */ { false, 0x766d, 0x766d }, /* 0x766e */ { false, 0x766e, 0x766e }, /* 0x766f */ { false, 0x766f, 0x766f }, /* 0x7670 */ { false, 0x7670, 0x7670 }, /* 0x7671 */ { false, 0x7671, 0x7671 }, /* 0x7672 */ { false, 0x7672, 0x7672 }, /* 0x7673 */ { false, 0x7673, 0x7673 }, /* 0x7674 */ { false, 0x7674, 0x7674 }, /* 0x7675 */ { false, 0x7675, 0x7675 }, /* 0x7676 */ { false, 0x7676, 0x7676 }, /* 0x7677 */ { false, 0x7677, 0x7677 }, /* 0x7678 */ { false, 0x7678, 0x7678 }, /* 0x7679 */ { false, 0x7679, 0x7679 }, /* 0x767a */ { false, 0x767a, 0x767a }, /* 0x767b */ { false, 0x767b, 0x767b }, /* 0x767c */ { false, 0x767c, 0x767c }, /* 0x767d */ { false, 0x767d, 0x767d }, /* 0x767e */ { false, 0x767e, 0x767e }, /* 0x767f */ { false, 0x767f, 0x767f }, /* 0x7680 */ { false, 0x7680, 0x7680 }, /* 0x7681 */ { false, 0x7681, 0x7681 }, /* 0x7682 */ { false, 0x7682, 0x7682 }, /* 0x7683 */ { false, 0x7683, 0x7683 }, /* 0x7684 */ { false, 0x7684, 0x7684 }, /* 0x7685 */ { false, 0x7685, 0x7685 }, /* 0x7686 */ { false, 0x7686, 0x7686 }, /* 0x7687 */ { false, 0x7687, 0x7687 }, /* 0x7688 */ { false, 0x7688, 0x7688 }, /* 0x7689 */ { false, 0x7689, 0x7689 }, /* 0x768a */ { false, 0x768a, 0x768a }, /* 0x768b */ { false, 0x768b, 0x768b }, /* 0x768c */ { false, 0x768c, 0x768c }, /* 0x768d */ { false, 0x768d, 0x768d }, /* 0x768e */ { false, 0x768e, 0x768e }, /* 0x768f */ { false, 0x768f, 0x768f }, /* 0x7690 */ { false, 0x7690, 0x7690 }, /* 0x7691 */ { false, 0x7691, 0x7691 }, /* 0x7692 */ { false, 0x7692, 0x7692 }, /* 0x7693 */ { false, 0x7693, 0x7693 }, /* 0x7694 */ { false, 0x7694, 0x7694 }, /* 0x7695 */ { false, 0x7695, 0x7695 }, /* 0x7696 */ { false, 0x7696, 0x7696 }, /* 0x7697 */ { false, 0x7697, 0x7697 }, /* 0x7698 */ { false, 0x7698, 0x7698 }, /* 0x7699 */ { false, 0x7699, 0x7699 }, /* 0x769a */ { false, 0x769a, 0x769a }, /* 0x769b */ { false, 0x769b, 0x769b }, /* 0x769c */ { false, 0x769c, 0x769c }, /* 0x769d */ { false, 0x769d, 0x769d }, /* 0x769e */ { false, 0x769e, 0x769e }, /* 0x769f */ { false, 0x769f, 0x769f }, /* 0x76a0 */ { false, 0x76a0, 0x76a0 }, /* 0x76a1 */ { false, 0x76a1, 0x76a1 }, /* 0x76a2 */ { false, 0x76a2, 0x76a2 }, /* 0x76a3 */ { false, 0x76a3, 0x76a3 }, /* 0x76a4 */ { false, 0x76a4, 0x76a4 }, /* 0x76a5 */ { false, 0x76a5, 0x76a5 }, /* 0x76a6 */ { false, 0x76a6, 0x76a6 }, /* 0x76a7 */ { false, 0x76a7, 0x76a7 }, /* 0x76a8 */ { false, 0x76a8, 0x76a8 }, /* 0x76a9 */ { false, 0x76a9, 0x76a9 }, /* 0x76aa */ { false, 0x76aa, 0x76aa }, /* 0x76ab */ { false, 0x76ab, 0x76ab }, /* 0x76ac */ { false, 0x76ac, 0x76ac }, /* 0x76ad */ { false, 0x76ad, 0x76ad }, /* 0x76ae */ { false, 0x76ae, 0x76ae }, /* 0x76af */ { false, 0x76af, 0x76af }, /* 0x76b0 */ { false, 0x76b0, 0x76b0 }, /* 0x76b1 */ { false, 0x76b1, 0x76b1 }, /* 0x76b2 */ { false, 0x76b2, 0x76b2 }, /* 0x76b3 */ { false, 0x76b3, 0x76b3 }, /* 0x76b4 */ { false, 0x76b4, 0x76b4 }, /* 0x76b5 */ { false, 0x76b5, 0x76b5 }, /* 0x76b6 */ { false, 0x76b6, 0x76b6 }, /* 0x76b7 */ { false, 0x76b7, 0x76b7 }, /* 0x76b8 */ { false, 0x76b8, 0x76b8 }, /* 0x76b9 */ { false, 0x76b9, 0x76b9 }, /* 0x76ba */ { false, 0x76ba, 0x76ba }, /* 0x76bb */ { false, 0x76bb, 0x76bb }, /* 0x76bc */ { false, 0x76bc, 0x76bc }, /* 0x76bd */ { false, 0x76bd, 0x76bd }, /* 0x76be */ { false, 0x76be, 0x76be }, /* 0x76bf */ { false, 0x76bf, 0x76bf }, /* 0x76c0 */ { false, 0x76c0, 0x76c0 }, /* 0x76c1 */ { false, 0x76c1, 0x76c1 }, /* 0x76c2 */ { false, 0x76c2, 0x76c2 }, /* 0x76c3 */ { false, 0x76c3, 0x76c3 }, /* 0x76c4 */ { false, 0x76c4, 0x76c4 }, /* 0x76c5 */ { false, 0x76c5, 0x76c5 }, /* 0x76c6 */ { false, 0x76c6, 0x76c6 }, /* 0x76c7 */ { false, 0x76c7, 0x76c7 }, /* 0x76c8 */ { false, 0x76c8, 0x76c8 }, /* 0x76c9 */ { false, 0x76c9, 0x76c9 }, /* 0x76ca */ { false, 0x76ca, 0x76ca }, /* 0x76cb */ { false, 0x76cb, 0x76cb }, /* 0x76cc */ { false, 0x76cc, 0x76cc }, /* 0x76cd */ { false, 0x76cd, 0x76cd }, /* 0x76ce */ { false, 0x76ce, 0x76ce }, /* 0x76cf */ { false, 0x76cf, 0x76cf }, /* 0x76d0 */ { false, 0x76d0, 0x76d0 }, /* 0x76d1 */ { false, 0x76d1, 0x76d1 }, /* 0x76d2 */ { false, 0x76d2, 0x76d2 }, /* 0x76d3 */ { false, 0x76d3, 0x76d3 }, /* 0x76d4 */ { false, 0x76d4, 0x76d4 }, /* 0x76d5 */ { false, 0x76d5, 0x76d5 }, /* 0x76d6 */ { false, 0x76d6, 0x76d6 }, /* 0x76d7 */ { false, 0x76d7, 0x76d7 }, /* 0x76d8 */ { false, 0x76d8, 0x76d8 }, /* 0x76d9 */ { false, 0x76d9, 0x76d9 }, /* 0x76da */ { false, 0x76da, 0x76da }, /* 0x76db */ { false, 0x76db, 0x76db }, /* 0x76dc */ { false, 0x76dc, 0x76dc }, /* 0x76dd */ { false, 0x76dd, 0x76dd }, /* 0x76de */ { false, 0x76de, 0x76de }, /* 0x76df */ { false, 0x76df, 0x76df }, /* 0x76e0 */ { false, 0x76e0, 0x76e0 }, /* 0x76e1 */ { false, 0x76e1, 0x76e1 }, /* 0x76e2 */ { false, 0x76e2, 0x76e2 }, /* 0x76e3 */ { false, 0x76e3, 0x76e3 }, /* 0x76e4 */ { false, 0x76e4, 0x76e4 }, /* 0x76e5 */ { false, 0x76e5, 0x76e5 }, /* 0x76e6 */ { false, 0x76e6, 0x76e6 }, /* 0x76e7 */ { false, 0x76e7, 0x76e7 }, /* 0x76e8 */ { false, 0x76e8, 0x76e8 }, /* 0x76e9 */ { false, 0x76e9, 0x76e9 }, /* 0x76ea */ { false, 0x76ea, 0x76ea }, /* 0x76eb */ { false, 0x76eb, 0x76eb }, /* 0x76ec */ { false, 0x76ec, 0x76ec }, /* 0x76ed */ { false, 0x76ed, 0x76ed }, /* 0x76ee */ { false, 0x76ee, 0x76ee }, /* 0x76ef */ { false, 0x76ef, 0x76ef }, /* 0x76f0 */ { false, 0x76f0, 0x76f0 }, /* 0x76f1 */ { false, 0x76f1, 0x76f1 }, /* 0x76f2 */ { false, 0x76f2, 0x76f2 }, /* 0x76f3 */ { false, 0x76f3, 0x76f3 }, /* 0x76f4 */ { false, 0x76f4, 0x76f4 }, /* 0x76f5 */ { false, 0x76f5, 0x76f5 }, /* 0x76f6 */ { false, 0x76f6, 0x76f6 }, /* 0x76f7 */ { false, 0x76f7, 0x76f7 }, /* 0x76f8 */ { false, 0x76f8, 0x76f8 }, /* 0x76f9 */ { false, 0x76f9, 0x76f9 }, /* 0x76fa */ { false, 0x76fa, 0x76fa }, /* 0x76fb */ { false, 0x76fb, 0x76fb }, /* 0x76fc */ { false, 0x76fc, 0x76fc }, /* 0x76fd */ { false, 0x76fd, 0x76fd }, /* 0x76fe */ { false, 0x76fe, 0x76fe }, /* 0x76ff */ { false, 0x76ff, 0x76ff }, /* 0x7700 */ { false, 0x7700, 0x7700 }, /* 0x7701 */ { false, 0x7701, 0x7701 }, /* 0x7702 */ { false, 0x7702, 0x7702 }, /* 0x7703 */ { false, 0x7703, 0x7703 }, /* 0x7704 */ { false, 0x7704, 0x7704 }, /* 0x7705 */ { false, 0x7705, 0x7705 }, /* 0x7706 */ { false, 0x7706, 0x7706 }, /* 0x7707 */ { false, 0x7707, 0x7707 }, /* 0x7708 */ { false, 0x7708, 0x7708 }, /* 0x7709 */ { false, 0x7709, 0x7709 }, /* 0x770a */ { false, 0x770a, 0x770a }, /* 0x770b */ { false, 0x770b, 0x770b }, /* 0x770c */ { false, 0x770c, 0x770c }, /* 0x770d */ { false, 0x770d, 0x770d }, /* 0x770e */ { false, 0x770e, 0x770e }, /* 0x770f */ { false, 0x770f, 0x770f }, /* 0x7710 */ { false, 0x7710, 0x7710 }, /* 0x7711 */ { false, 0x7711, 0x7711 }, /* 0x7712 */ { false, 0x7712, 0x7712 }, /* 0x7713 */ { false, 0x7713, 0x7713 }, /* 0x7714 */ { false, 0x7714, 0x7714 }, /* 0x7715 */ { false, 0x7715, 0x7715 }, /* 0x7716 */ { false, 0x7716, 0x7716 }, /* 0x7717 */ { false, 0x7717, 0x7717 }, /* 0x7718 */ { false, 0x7718, 0x7718 }, /* 0x7719 */ { false, 0x7719, 0x7719 }, /* 0x771a */ { false, 0x771a, 0x771a }, /* 0x771b */ { false, 0x771b, 0x771b }, /* 0x771c */ { false, 0x771c, 0x771c }, /* 0x771d */ { false, 0x771d, 0x771d }, /* 0x771e */ { false, 0x771e, 0x771e }, /* 0x771f */ { false, 0x771f, 0x771f }, /* 0x7720 */ { false, 0x7720, 0x7720 }, /* 0x7721 */ { false, 0x7721, 0x7721 }, /* 0x7722 */ { false, 0x7722, 0x7722 }, /* 0x7723 */ { false, 0x7723, 0x7723 }, /* 0x7724 */ { false, 0x7724, 0x7724 }, /* 0x7725 */ { false, 0x7725, 0x7725 }, /* 0x7726 */ { false, 0x7726, 0x7726 }, /* 0x7727 */ { false, 0x7727, 0x7727 }, /* 0x7728 */ { false, 0x7728, 0x7728 }, /* 0x7729 */ { false, 0x7729, 0x7729 }, /* 0x772a */ { false, 0x772a, 0x772a }, /* 0x772b */ { false, 0x772b, 0x772b }, /* 0x772c */ { false, 0x772c, 0x772c }, /* 0x772d */ { false, 0x772d, 0x772d }, /* 0x772e */ { false, 0x772e, 0x772e }, /* 0x772f */ { false, 0x772f, 0x772f }, /* 0x7730 */ { false, 0x7730, 0x7730 }, /* 0x7731 */ { false, 0x7731, 0x7731 }, /* 0x7732 */ { false, 0x7732, 0x7732 }, /* 0x7733 */ { false, 0x7733, 0x7733 }, /* 0x7734 */ { false, 0x7734, 0x7734 }, /* 0x7735 */ { false, 0x7735, 0x7735 }, /* 0x7736 */ { false, 0x7736, 0x7736 }, /* 0x7737 */ { false, 0x7737, 0x7737 }, /* 0x7738 */ { false, 0x7738, 0x7738 }, /* 0x7739 */ { false, 0x7739, 0x7739 }, /* 0x773a */ { false, 0x773a, 0x773a }, /* 0x773b */ { false, 0x773b, 0x773b }, /* 0x773c */ { false, 0x773c, 0x773c }, /* 0x773d */ { false, 0x773d, 0x773d }, /* 0x773e */ { false, 0x773e, 0x773e }, /* 0x773f */ { false, 0x773f, 0x773f }, /* 0x7740 */ { false, 0x7740, 0x7740 }, /* 0x7741 */ { false, 0x7741, 0x7741 }, /* 0x7742 */ { false, 0x7742, 0x7742 }, /* 0x7743 */ { false, 0x7743, 0x7743 }, /* 0x7744 */ { false, 0x7744, 0x7744 }, /* 0x7745 */ { false, 0x7745, 0x7745 }, /* 0x7746 */ { false, 0x7746, 0x7746 }, /* 0x7747 */ { false, 0x7747, 0x7747 }, /* 0x7748 */ { false, 0x7748, 0x7748 }, /* 0x7749 */ { false, 0x7749, 0x7749 }, /* 0x774a */ { false, 0x774a, 0x774a }, /* 0x774b */ { false, 0x774b, 0x774b }, /* 0x774c */ { false, 0x774c, 0x774c }, /* 0x774d */ { false, 0x774d, 0x774d }, /* 0x774e */ { false, 0x774e, 0x774e }, /* 0x774f */ { false, 0x774f, 0x774f }, /* 0x7750 */ { false, 0x7750, 0x7750 }, /* 0x7751 */ { false, 0x7751, 0x7751 }, /* 0x7752 */ { false, 0x7752, 0x7752 }, /* 0x7753 */ { false, 0x7753, 0x7753 }, /* 0x7754 */ { false, 0x7754, 0x7754 }, /* 0x7755 */ { false, 0x7755, 0x7755 }, /* 0x7756 */ { false, 0x7756, 0x7756 }, /* 0x7757 */ { false, 0x7757, 0x7757 }, /* 0x7758 */ { false, 0x7758, 0x7758 }, /* 0x7759 */ { false, 0x7759, 0x7759 }, /* 0x775a */ { false, 0x775a, 0x775a }, /* 0x775b */ { false, 0x775b, 0x775b }, /* 0x775c */ { false, 0x775c, 0x775c }, /* 0x775d */ { false, 0x775d, 0x775d }, /* 0x775e */ { false, 0x775e, 0x775e }, /* 0x775f */ { false, 0x775f, 0x775f }, /* 0x7760 */ { false, 0x7760, 0x7760 }, /* 0x7761 */ { false, 0x7761, 0x7761 }, /* 0x7762 */ { false, 0x7762, 0x7762 }, /* 0x7763 */ { false, 0x7763, 0x7763 }, /* 0x7764 */ { false, 0x7764, 0x7764 }, /* 0x7765 */ { false, 0x7765, 0x7765 }, /* 0x7766 */ { false, 0x7766, 0x7766 }, /* 0x7767 */ { false, 0x7767, 0x7767 }, /* 0x7768 */ { false, 0x7768, 0x7768 }, /* 0x7769 */ { false, 0x7769, 0x7769 }, /* 0x776a */ { false, 0x776a, 0x776a }, /* 0x776b */ { false, 0x776b, 0x776b }, /* 0x776c */ { false, 0x776c, 0x776c }, /* 0x776d */ { false, 0x776d, 0x776d }, /* 0x776e */ { false, 0x776e, 0x776e }, /* 0x776f */ { false, 0x776f, 0x776f }, /* 0x7770 */ { false, 0x7770, 0x7770 }, /* 0x7771 */ { false, 0x7771, 0x7771 }, /* 0x7772 */ { false, 0x7772, 0x7772 }, /* 0x7773 */ { false, 0x7773, 0x7773 }, /* 0x7774 */ { false, 0x7774, 0x7774 }, /* 0x7775 */ { false, 0x7775, 0x7775 }, /* 0x7776 */ { false, 0x7776, 0x7776 }, /* 0x7777 */ { false, 0x7777, 0x7777 }, /* 0x7778 */ { false, 0x7778, 0x7778 }, /* 0x7779 */ { false, 0x7779, 0x7779 }, /* 0x777a */ { false, 0x777a, 0x777a }, /* 0x777b */ { false, 0x777b, 0x777b }, /* 0x777c */ { false, 0x777c, 0x777c }, /* 0x777d */ { false, 0x777d, 0x777d }, /* 0x777e */ { false, 0x777e, 0x777e }, /* 0x777f */ { false, 0x777f, 0x777f }, /* 0x7780 */ { false, 0x7780, 0x7780 }, /* 0x7781 */ { false, 0x7781, 0x7781 }, /* 0x7782 */ { false, 0x7782, 0x7782 }, /* 0x7783 */ { false, 0x7783, 0x7783 }, /* 0x7784 */ { false, 0x7784, 0x7784 }, /* 0x7785 */ { false, 0x7785, 0x7785 }, /* 0x7786 */ { false, 0x7786, 0x7786 }, /* 0x7787 */ { false, 0x7787, 0x7787 }, /* 0x7788 */ { false, 0x7788, 0x7788 }, /* 0x7789 */ { false, 0x7789, 0x7789 }, /* 0x778a */ { false, 0x778a, 0x778a }, /* 0x778b */ { false, 0x778b, 0x778b }, /* 0x778c */ { false, 0x778c, 0x778c }, /* 0x778d */ { false, 0x778d, 0x778d }, /* 0x778e */ { false, 0x778e, 0x778e }, /* 0x778f */ { false, 0x778f, 0x778f }, /* 0x7790 */ { false, 0x7790, 0x7790 }, /* 0x7791 */ { false, 0x7791, 0x7791 }, /* 0x7792 */ { false, 0x7792, 0x7792 }, /* 0x7793 */ { false, 0x7793, 0x7793 }, /* 0x7794 */ { false, 0x7794, 0x7794 }, /* 0x7795 */ { false, 0x7795, 0x7795 }, /* 0x7796 */ { false, 0x7796, 0x7796 }, /* 0x7797 */ { false, 0x7797, 0x7797 }, /* 0x7798 */ { false, 0x7798, 0x7798 }, /* 0x7799 */ { false, 0x7799, 0x7799 }, /* 0x779a */ { false, 0x779a, 0x779a }, /* 0x779b */ { false, 0x779b, 0x779b }, /* 0x779c */ { false, 0x779c, 0x779c }, /* 0x779d */ { false, 0x779d, 0x779d }, /* 0x779e */ { false, 0x779e, 0x779e }, /* 0x779f */ { false, 0x779f, 0x779f }, /* 0x77a0 */ { false, 0x77a0, 0x77a0 }, /* 0x77a1 */ { false, 0x77a1, 0x77a1 }, /* 0x77a2 */ { false, 0x77a2, 0x77a2 }, /* 0x77a3 */ { false, 0x77a3, 0x77a3 }, /* 0x77a4 */ { false, 0x77a4, 0x77a4 }, /* 0x77a5 */ { false, 0x77a5, 0x77a5 }, /* 0x77a6 */ { false, 0x77a6, 0x77a6 }, /* 0x77a7 */ { false, 0x77a7, 0x77a7 }, /* 0x77a8 */ { false, 0x77a8, 0x77a8 }, /* 0x77a9 */ { false, 0x77a9, 0x77a9 }, /* 0x77aa */ { false, 0x77aa, 0x77aa }, /* 0x77ab */ { false, 0x77ab, 0x77ab }, /* 0x77ac */ { false, 0x77ac, 0x77ac }, /* 0x77ad */ { false, 0x77ad, 0x77ad }, /* 0x77ae */ { false, 0x77ae, 0x77ae }, /* 0x77af */ { false, 0x77af, 0x77af }, /* 0x77b0 */ { false, 0x77b0, 0x77b0 }, /* 0x77b1 */ { false, 0x77b1, 0x77b1 }, /* 0x77b2 */ { false, 0x77b2, 0x77b2 }, /* 0x77b3 */ { false, 0x77b3, 0x77b3 }, /* 0x77b4 */ { false, 0x77b4, 0x77b4 }, /* 0x77b5 */ { false, 0x77b5, 0x77b5 }, /* 0x77b6 */ { false, 0x77b6, 0x77b6 }, /* 0x77b7 */ { false, 0x77b7, 0x77b7 }, /* 0x77b8 */ { false, 0x77b8, 0x77b8 }, /* 0x77b9 */ { false, 0x77b9, 0x77b9 }, /* 0x77ba */ { false, 0x77ba, 0x77ba }, /* 0x77bb */ { false, 0x77bb, 0x77bb }, /* 0x77bc */ { false, 0x77bc, 0x77bc }, /* 0x77bd */ { false, 0x77bd, 0x77bd }, /* 0x77be */ { false, 0x77be, 0x77be }, /* 0x77bf */ { false, 0x77bf, 0x77bf }, /* 0x77c0 */ { false, 0x77c0, 0x77c0 }, /* 0x77c1 */ { false, 0x77c1, 0x77c1 }, /* 0x77c2 */ { false, 0x77c2, 0x77c2 }, /* 0x77c3 */ { false, 0x77c3, 0x77c3 }, /* 0x77c4 */ { false, 0x77c4, 0x77c4 }, /* 0x77c5 */ { false, 0x77c5, 0x77c5 }, /* 0x77c6 */ { false, 0x77c6, 0x77c6 }, /* 0x77c7 */ { false, 0x77c7, 0x77c7 }, /* 0x77c8 */ { false, 0x77c8, 0x77c8 }, /* 0x77c9 */ { false, 0x77c9, 0x77c9 }, /* 0x77ca */ { false, 0x77ca, 0x77ca }, /* 0x77cb */ { false, 0x77cb, 0x77cb }, /* 0x77cc */ { false, 0x77cc, 0x77cc }, /* 0x77cd */ { false, 0x77cd, 0x77cd }, /* 0x77ce */ { false, 0x77ce, 0x77ce }, /* 0x77cf */ { false, 0x77cf, 0x77cf }, /* 0x77d0 */ { false, 0x77d0, 0x77d0 }, /* 0x77d1 */ { false, 0x77d1, 0x77d1 }, /* 0x77d2 */ { false, 0x77d2, 0x77d2 }, /* 0x77d3 */ { false, 0x77d3, 0x77d3 }, /* 0x77d4 */ { false, 0x77d4, 0x77d4 }, /* 0x77d5 */ { false, 0x77d5, 0x77d5 }, /* 0x77d6 */ { false, 0x77d6, 0x77d6 }, /* 0x77d7 */ { false, 0x77d7, 0x77d7 }, /* 0x77d8 */ { false, 0x77d8, 0x77d8 }, /* 0x77d9 */ { false, 0x77d9, 0x77d9 }, /* 0x77da */ { false, 0x77da, 0x77da }, /* 0x77db */ { false, 0x77db, 0x77db }, /* 0x77dc */ { false, 0x77dc, 0x77dc }, /* 0x77dd */ { false, 0x77dd, 0x77dd }, /* 0x77de */ { false, 0x77de, 0x77de }, /* 0x77df */ { false, 0x77df, 0x77df }, /* 0x77e0 */ { false, 0x77e0, 0x77e0 }, /* 0x77e1 */ { false, 0x77e1, 0x77e1 }, /* 0x77e2 */ { false, 0x77e2, 0x77e2 }, /* 0x77e3 */ { false, 0x77e3, 0x77e3 }, /* 0x77e4 */ { false, 0x77e4, 0x77e4 }, /* 0x77e5 */ { false, 0x77e5, 0x77e5 }, /* 0x77e6 */ { false, 0x77e6, 0x77e6 }, /* 0x77e7 */ { false, 0x77e7, 0x77e7 }, /* 0x77e8 */ { false, 0x77e8, 0x77e8 }, /* 0x77e9 */ { false, 0x77e9, 0x77e9 }, /* 0x77ea */ { false, 0x77ea, 0x77ea }, /* 0x77eb */ { false, 0x77eb, 0x77eb }, /* 0x77ec */ { false, 0x77ec, 0x77ec }, /* 0x77ed */ { false, 0x77ed, 0x77ed }, /* 0x77ee */ { false, 0x77ee, 0x77ee }, /* 0x77ef */ { false, 0x77ef, 0x77ef }, /* 0x77f0 */ { false, 0x77f0, 0x77f0 }, /* 0x77f1 */ { false, 0x77f1, 0x77f1 }, /* 0x77f2 */ { false, 0x77f2, 0x77f2 }, /* 0x77f3 */ { false, 0x77f3, 0x77f3 }, /* 0x77f4 */ { false, 0x77f4, 0x77f4 }, /* 0x77f5 */ { false, 0x77f5, 0x77f5 }, /* 0x77f6 */ { false, 0x77f6, 0x77f6 }, /* 0x77f7 */ { false, 0x77f7, 0x77f7 }, /* 0x77f8 */ { false, 0x77f8, 0x77f8 }, /* 0x77f9 */ { false, 0x77f9, 0x77f9 }, /* 0x77fa */ { false, 0x77fa, 0x77fa }, /* 0x77fb */ { false, 0x77fb, 0x77fb }, /* 0x77fc */ { false, 0x77fc, 0x77fc }, /* 0x77fd */ { false, 0x77fd, 0x77fd }, /* 0x77fe */ { false, 0x77fe, 0x77fe }, /* 0x77ff */ { false, 0x77ff, 0x77ff }, /* 0x7800 */ { false, 0x7800, 0x7800 }, /* 0x7801 */ { false, 0x7801, 0x7801 }, /* 0x7802 */ { false, 0x7802, 0x7802 }, /* 0x7803 */ { false, 0x7803, 0x7803 }, /* 0x7804 */ { false, 0x7804, 0x7804 }, /* 0x7805 */ { false, 0x7805, 0x7805 }, /* 0x7806 */ { false, 0x7806, 0x7806 }, /* 0x7807 */ { false, 0x7807, 0x7807 }, /* 0x7808 */ { false, 0x7808, 0x7808 }, /* 0x7809 */ { false, 0x7809, 0x7809 }, /* 0x780a */ { false, 0x780a, 0x780a }, /* 0x780b */ { false, 0x780b, 0x780b }, /* 0x780c */ { false, 0x780c, 0x780c }, /* 0x780d */ { false, 0x780d, 0x780d }, /* 0x780e */ { false, 0x780e, 0x780e }, /* 0x780f */ { false, 0x780f, 0x780f }, /* 0x7810 */ { false, 0x7810, 0x7810 }, /* 0x7811 */ { false, 0x7811, 0x7811 }, /* 0x7812 */ { false, 0x7812, 0x7812 }, /* 0x7813 */ { false, 0x7813, 0x7813 }, /* 0x7814 */ { false, 0x7814, 0x7814 }, /* 0x7815 */ { false, 0x7815, 0x7815 }, /* 0x7816 */ { false, 0x7816, 0x7816 }, /* 0x7817 */ { false, 0x7817, 0x7817 }, /* 0x7818 */ { false, 0x7818, 0x7818 }, /* 0x7819 */ { false, 0x7819, 0x7819 }, /* 0x781a */ { false, 0x781a, 0x781a }, /* 0x781b */ { false, 0x781b, 0x781b }, /* 0x781c */ { false, 0x781c, 0x781c }, /* 0x781d */ { false, 0x781d, 0x781d }, /* 0x781e */ { false, 0x781e, 0x781e }, /* 0x781f */ { false, 0x781f, 0x781f }, /* 0x7820 */ { false, 0x7820, 0x7820 }, /* 0x7821 */ { false, 0x7821, 0x7821 }, /* 0x7822 */ { false, 0x7822, 0x7822 }, /* 0x7823 */ { false, 0x7823, 0x7823 }, /* 0x7824 */ { false, 0x7824, 0x7824 }, /* 0x7825 */ { false, 0x7825, 0x7825 }, /* 0x7826 */ { false, 0x7826, 0x7826 }, /* 0x7827 */ { false, 0x7827, 0x7827 }, /* 0x7828 */ { false, 0x7828, 0x7828 }, /* 0x7829 */ { false, 0x7829, 0x7829 }, /* 0x782a */ { false, 0x782a, 0x782a }, /* 0x782b */ { false, 0x782b, 0x782b }, /* 0x782c */ { false, 0x782c, 0x782c }, /* 0x782d */ { false, 0x782d, 0x782d }, /* 0x782e */ { false, 0x782e, 0x782e }, /* 0x782f */ { false, 0x782f, 0x782f }, /* 0x7830 */ { false, 0x7830, 0x7830 }, /* 0x7831 */ { false, 0x7831, 0x7831 }, /* 0x7832 */ { false, 0x7832, 0x7832 }, /* 0x7833 */ { false, 0x7833, 0x7833 }, /* 0x7834 */ { false, 0x7834, 0x7834 }, /* 0x7835 */ { false, 0x7835, 0x7835 }, /* 0x7836 */ { false, 0x7836, 0x7836 }, /* 0x7837 */ { false, 0x7837, 0x7837 }, /* 0x7838 */ { false, 0x7838, 0x7838 }, /* 0x7839 */ { false, 0x7839, 0x7839 }, /* 0x783a */ { false, 0x783a, 0x783a }, /* 0x783b */ { false, 0x783b, 0x783b }, /* 0x783c */ { false, 0x783c, 0x783c }, /* 0x783d */ { false, 0x783d, 0x783d }, /* 0x783e */ { false, 0x783e, 0x783e }, /* 0x783f */ { false, 0x783f, 0x783f }, /* 0x7840 */ { false, 0x7840, 0x7840 }, /* 0x7841 */ { false, 0x7841, 0x7841 }, /* 0x7842 */ { false, 0x7842, 0x7842 }, /* 0x7843 */ { false, 0x7843, 0x7843 }, /* 0x7844 */ { false, 0x7844, 0x7844 }, /* 0x7845 */ { false, 0x7845, 0x7845 }, /* 0x7846 */ { false, 0x7846, 0x7846 }, /* 0x7847 */ { false, 0x7847, 0x7847 }, /* 0x7848 */ { false, 0x7848, 0x7848 }, /* 0x7849 */ { false, 0x7849, 0x7849 }, /* 0x784a */ { false, 0x784a, 0x784a }, /* 0x784b */ { false, 0x784b, 0x784b }, /* 0x784c */ { false, 0x784c, 0x784c }, /* 0x784d */ { false, 0x784d, 0x784d }, /* 0x784e */ { false, 0x784e, 0x784e }, /* 0x784f */ { false, 0x784f, 0x784f }, /* 0x7850 */ { false, 0x7850, 0x7850 }, /* 0x7851 */ { false, 0x7851, 0x7851 }, /* 0x7852 */ { false, 0x7852, 0x7852 }, /* 0x7853 */ { false, 0x7853, 0x7853 }, /* 0x7854 */ { false, 0x7854, 0x7854 }, /* 0x7855 */ { false, 0x7855, 0x7855 }, /* 0x7856 */ { false, 0x7856, 0x7856 }, /* 0x7857 */ { false, 0x7857, 0x7857 }, /* 0x7858 */ { false, 0x7858, 0x7858 }, /* 0x7859 */ { false, 0x7859, 0x7859 }, /* 0x785a */ { false, 0x785a, 0x785a }, /* 0x785b */ { false, 0x785b, 0x785b }, /* 0x785c */ { false, 0x785c, 0x785c }, /* 0x785d */ { false, 0x785d, 0x785d }, /* 0x785e */ { false, 0x785e, 0x785e }, /* 0x785f */ { false, 0x785f, 0x785f }, /* 0x7860 */ { false, 0x7860, 0x7860 }, /* 0x7861 */ { false, 0x7861, 0x7861 }, /* 0x7862 */ { false, 0x7862, 0x7862 }, /* 0x7863 */ { false, 0x7863, 0x7863 }, /* 0x7864 */ { false, 0x7864, 0x7864 }, /* 0x7865 */ { false, 0x7865, 0x7865 }, /* 0x7866 */ { false, 0x7866, 0x7866 }, /* 0x7867 */ { false, 0x7867, 0x7867 }, /* 0x7868 */ { false, 0x7868, 0x7868 }, /* 0x7869 */ { false, 0x7869, 0x7869 }, /* 0x786a */ { false, 0x786a, 0x786a }, /* 0x786b */ { false, 0x786b, 0x786b }, /* 0x786c */ { false, 0x786c, 0x786c }, /* 0x786d */ { false, 0x786d, 0x786d }, /* 0x786e */ { false, 0x786e, 0x786e }, /* 0x786f */ { false, 0x786f, 0x786f }, /* 0x7870 */ { false, 0x7870, 0x7870 }, /* 0x7871 */ { false, 0x7871, 0x7871 }, /* 0x7872 */ { false, 0x7872, 0x7872 }, /* 0x7873 */ { false, 0x7873, 0x7873 }, /* 0x7874 */ { false, 0x7874, 0x7874 }, /* 0x7875 */ { false, 0x7875, 0x7875 }, /* 0x7876 */ { false, 0x7876, 0x7876 }, /* 0x7877 */ { false, 0x7877, 0x7877 }, /* 0x7878 */ { false, 0x7878, 0x7878 }, /* 0x7879 */ { false, 0x7879, 0x7879 }, /* 0x787a */ { false, 0x787a, 0x787a }, /* 0x787b */ { false, 0x787b, 0x787b }, /* 0x787c */ { false, 0x787c, 0x787c }, /* 0x787d */ { false, 0x787d, 0x787d }, /* 0x787e */ { false, 0x787e, 0x787e }, /* 0x787f */ { false, 0x787f, 0x787f }, /* 0x7880 */ { false, 0x7880, 0x7880 }, /* 0x7881 */ { false, 0x7881, 0x7881 }, /* 0x7882 */ { false, 0x7882, 0x7882 }, /* 0x7883 */ { false, 0x7883, 0x7883 }, /* 0x7884 */ { false, 0x7884, 0x7884 }, /* 0x7885 */ { false, 0x7885, 0x7885 }, /* 0x7886 */ { false, 0x7886, 0x7886 }, /* 0x7887 */ { false, 0x7887, 0x7887 }, /* 0x7888 */ { false, 0x7888, 0x7888 }, /* 0x7889 */ { false, 0x7889, 0x7889 }, /* 0x788a */ { false, 0x788a, 0x788a }, /* 0x788b */ { false, 0x788b, 0x788b }, /* 0x788c */ { false, 0x788c, 0x788c }, /* 0x788d */ { false, 0x788d, 0x788d }, /* 0x788e */ { false, 0x788e, 0x788e }, /* 0x788f */ { false, 0x788f, 0x788f }, /* 0x7890 */ { false, 0x7890, 0x7890 }, /* 0x7891 */ { false, 0x7891, 0x7891 }, /* 0x7892 */ { false, 0x7892, 0x7892 }, /* 0x7893 */ { false, 0x7893, 0x7893 }, /* 0x7894 */ { false, 0x7894, 0x7894 }, /* 0x7895 */ { false, 0x7895, 0x7895 }, /* 0x7896 */ { false, 0x7896, 0x7896 }, /* 0x7897 */ { false, 0x7897, 0x7897 }, /* 0x7898 */ { false, 0x7898, 0x7898 }, /* 0x7899 */ { false, 0x7899, 0x7899 }, /* 0x789a */ { false, 0x789a, 0x789a }, /* 0x789b */ { false, 0x789b, 0x789b }, /* 0x789c */ { false, 0x789c, 0x789c }, /* 0x789d */ { false, 0x789d, 0x789d }, /* 0x789e */ { false, 0x789e, 0x789e }, /* 0x789f */ { false, 0x789f, 0x789f }, /* 0x78a0 */ { false, 0x78a0, 0x78a0 }, /* 0x78a1 */ { false, 0x78a1, 0x78a1 }, /* 0x78a2 */ { false, 0x78a2, 0x78a2 }, /* 0x78a3 */ { false, 0x78a3, 0x78a3 }, /* 0x78a4 */ { false, 0x78a4, 0x78a4 }, /* 0x78a5 */ { false, 0x78a5, 0x78a5 }, /* 0x78a6 */ { false, 0x78a6, 0x78a6 }, /* 0x78a7 */ { false, 0x78a7, 0x78a7 }, /* 0x78a8 */ { false, 0x78a8, 0x78a8 }, /* 0x78a9 */ { false, 0x78a9, 0x78a9 }, /* 0x78aa */ { false, 0x78aa, 0x78aa }, /* 0x78ab */ { false, 0x78ab, 0x78ab }, /* 0x78ac */ { false, 0x78ac, 0x78ac }, /* 0x78ad */ { false, 0x78ad, 0x78ad }, /* 0x78ae */ { false, 0x78ae, 0x78ae }, /* 0x78af */ { false, 0x78af, 0x78af }, /* 0x78b0 */ { false, 0x78b0, 0x78b0 }, /* 0x78b1 */ { false, 0x78b1, 0x78b1 }, /* 0x78b2 */ { false, 0x78b2, 0x78b2 }, /* 0x78b3 */ { false, 0x78b3, 0x78b3 }, /* 0x78b4 */ { false, 0x78b4, 0x78b4 }, /* 0x78b5 */ { false, 0x78b5, 0x78b5 }, /* 0x78b6 */ { false, 0x78b6, 0x78b6 }, /* 0x78b7 */ { false, 0x78b7, 0x78b7 }, /* 0x78b8 */ { false, 0x78b8, 0x78b8 }, /* 0x78b9 */ { false, 0x78b9, 0x78b9 }, /* 0x78ba */ { false, 0x78ba, 0x78ba }, /* 0x78bb */ { false, 0x78bb, 0x78bb }, /* 0x78bc */ { false, 0x78bc, 0x78bc }, /* 0x78bd */ { false, 0x78bd, 0x78bd }, /* 0x78be */ { false, 0x78be, 0x78be }, /* 0x78bf */ { false, 0x78bf, 0x78bf }, /* 0x78c0 */ { false, 0x78c0, 0x78c0 }, /* 0x78c1 */ { false, 0x78c1, 0x78c1 }, /* 0x78c2 */ { false, 0x78c2, 0x78c2 }, /* 0x78c3 */ { false, 0x78c3, 0x78c3 }, /* 0x78c4 */ { false, 0x78c4, 0x78c4 }, /* 0x78c5 */ { false, 0x78c5, 0x78c5 }, /* 0x78c6 */ { false, 0x78c6, 0x78c6 }, /* 0x78c7 */ { false, 0x78c7, 0x78c7 }, /* 0x78c8 */ { false, 0x78c8, 0x78c8 }, /* 0x78c9 */ { false, 0x78c9, 0x78c9 }, /* 0x78ca */ { false, 0x78ca, 0x78ca }, /* 0x78cb */ { false, 0x78cb, 0x78cb }, /* 0x78cc */ { false, 0x78cc, 0x78cc }, /* 0x78cd */ { false, 0x78cd, 0x78cd }, /* 0x78ce */ { false, 0x78ce, 0x78ce }, /* 0x78cf */ { false, 0x78cf, 0x78cf }, /* 0x78d0 */ { false, 0x78d0, 0x78d0 }, /* 0x78d1 */ { false, 0x78d1, 0x78d1 }, /* 0x78d2 */ { false, 0x78d2, 0x78d2 }, /* 0x78d3 */ { false, 0x78d3, 0x78d3 }, /* 0x78d4 */ { false, 0x78d4, 0x78d4 }, /* 0x78d5 */ { false, 0x78d5, 0x78d5 }, /* 0x78d6 */ { false, 0x78d6, 0x78d6 }, /* 0x78d7 */ { false, 0x78d7, 0x78d7 }, /* 0x78d8 */ { false, 0x78d8, 0x78d8 }, /* 0x78d9 */ { false, 0x78d9, 0x78d9 }, /* 0x78da */ { false, 0x78da, 0x78da }, /* 0x78db */ { false, 0x78db, 0x78db }, /* 0x78dc */ { false, 0x78dc, 0x78dc }, /* 0x78dd */ { false, 0x78dd, 0x78dd }, /* 0x78de */ { false, 0x78de, 0x78de }, /* 0x78df */ { false, 0x78df, 0x78df }, /* 0x78e0 */ { false, 0x78e0, 0x78e0 }, /* 0x78e1 */ { false, 0x78e1, 0x78e1 }, /* 0x78e2 */ { false, 0x78e2, 0x78e2 }, /* 0x78e3 */ { false, 0x78e3, 0x78e3 }, /* 0x78e4 */ { false, 0x78e4, 0x78e4 }, /* 0x78e5 */ { false, 0x78e5, 0x78e5 }, /* 0x78e6 */ { false, 0x78e6, 0x78e6 }, /* 0x78e7 */ { false, 0x78e7, 0x78e7 }, /* 0x78e8 */ { false, 0x78e8, 0x78e8 }, /* 0x78e9 */ { false, 0x78e9, 0x78e9 }, /* 0x78ea */ { false, 0x78ea, 0x78ea }, /* 0x78eb */ { false, 0x78eb, 0x78eb }, /* 0x78ec */ { false, 0x78ec, 0x78ec }, /* 0x78ed */ { false, 0x78ed, 0x78ed }, /* 0x78ee */ { false, 0x78ee, 0x78ee }, /* 0x78ef */ { false, 0x78ef, 0x78ef }, /* 0x78f0 */ { false, 0x78f0, 0x78f0 }, /* 0x78f1 */ { false, 0x78f1, 0x78f1 }, /* 0x78f2 */ { false, 0x78f2, 0x78f2 }, /* 0x78f3 */ { false, 0x78f3, 0x78f3 }, /* 0x78f4 */ { false, 0x78f4, 0x78f4 }, /* 0x78f5 */ { false, 0x78f5, 0x78f5 }, /* 0x78f6 */ { false, 0x78f6, 0x78f6 }, /* 0x78f7 */ { false, 0x78f7, 0x78f7 }, /* 0x78f8 */ { false, 0x78f8, 0x78f8 }, /* 0x78f9 */ { false, 0x78f9, 0x78f9 }, /* 0x78fa */ { false, 0x78fa, 0x78fa }, /* 0x78fb */ { false, 0x78fb, 0x78fb }, /* 0x78fc */ { false, 0x78fc, 0x78fc }, /* 0x78fd */ { false, 0x78fd, 0x78fd }, /* 0x78fe */ { false, 0x78fe, 0x78fe }, /* 0x78ff */ { false, 0x78ff, 0x78ff }, /* 0x7900 */ { false, 0x7900, 0x7900 }, /* 0x7901 */ { false, 0x7901, 0x7901 }, /* 0x7902 */ { false, 0x7902, 0x7902 }, /* 0x7903 */ { false, 0x7903, 0x7903 }, /* 0x7904 */ { false, 0x7904, 0x7904 }, /* 0x7905 */ { false, 0x7905, 0x7905 }, /* 0x7906 */ { false, 0x7906, 0x7906 }, /* 0x7907 */ { false, 0x7907, 0x7907 }, /* 0x7908 */ { false, 0x7908, 0x7908 }, /* 0x7909 */ { false, 0x7909, 0x7909 }, /* 0x790a */ { false, 0x790a, 0x790a }, /* 0x790b */ { false, 0x790b, 0x790b }, /* 0x790c */ { false, 0x790c, 0x790c }, /* 0x790d */ { false, 0x790d, 0x790d }, /* 0x790e */ { false, 0x790e, 0x790e }, /* 0x790f */ { false, 0x790f, 0x790f }, /* 0x7910 */ { false, 0x7910, 0x7910 }, /* 0x7911 */ { false, 0x7911, 0x7911 }, /* 0x7912 */ { false, 0x7912, 0x7912 }, /* 0x7913 */ { false, 0x7913, 0x7913 }, /* 0x7914 */ { false, 0x7914, 0x7914 }, /* 0x7915 */ { false, 0x7915, 0x7915 }, /* 0x7916 */ { false, 0x7916, 0x7916 }, /* 0x7917 */ { false, 0x7917, 0x7917 }, /* 0x7918 */ { false, 0x7918, 0x7918 }, /* 0x7919 */ { false, 0x7919, 0x7919 }, /* 0x791a */ { false, 0x791a, 0x791a }, /* 0x791b */ { false, 0x791b, 0x791b }, /* 0x791c */ { false, 0x791c, 0x791c }, /* 0x791d */ { false, 0x791d, 0x791d }, /* 0x791e */ { false, 0x791e, 0x791e }, /* 0x791f */ { false, 0x791f, 0x791f }, /* 0x7920 */ { false, 0x7920, 0x7920 }, /* 0x7921 */ { false, 0x7921, 0x7921 }, /* 0x7922 */ { false, 0x7922, 0x7922 }, /* 0x7923 */ { false, 0x7923, 0x7923 }, /* 0x7924 */ { false, 0x7924, 0x7924 }, /* 0x7925 */ { false, 0x7925, 0x7925 }, /* 0x7926 */ { false, 0x7926, 0x7926 }, /* 0x7927 */ { false, 0x7927, 0x7927 }, /* 0x7928 */ { false, 0x7928, 0x7928 }, /* 0x7929 */ { false, 0x7929, 0x7929 }, /* 0x792a */ { false, 0x792a, 0x792a }, /* 0x792b */ { false, 0x792b, 0x792b }, /* 0x792c */ { false, 0x792c, 0x792c }, /* 0x792d */ { false, 0x792d, 0x792d }, /* 0x792e */ { false, 0x792e, 0x792e }, /* 0x792f */ { false, 0x792f, 0x792f }, /* 0x7930 */ { false, 0x7930, 0x7930 }, /* 0x7931 */ { false, 0x7931, 0x7931 }, /* 0x7932 */ { false, 0x7932, 0x7932 }, /* 0x7933 */ { false, 0x7933, 0x7933 }, /* 0x7934 */ { false, 0x7934, 0x7934 }, /* 0x7935 */ { false, 0x7935, 0x7935 }, /* 0x7936 */ { false, 0x7936, 0x7936 }, /* 0x7937 */ { false, 0x7937, 0x7937 }, /* 0x7938 */ { false, 0x7938, 0x7938 }, /* 0x7939 */ { false, 0x7939, 0x7939 }, /* 0x793a */ { false, 0x793a, 0x793a }, /* 0x793b */ { false, 0x793b, 0x793b }, /* 0x793c */ { false, 0x793c, 0x793c }, /* 0x793d */ { false, 0x793d, 0x793d }, /* 0x793e */ { false, 0x793e, 0x793e }, /* 0x793f */ { false, 0x793f, 0x793f }, /* 0x7940 */ { false, 0x7940, 0x7940 }, /* 0x7941 */ { false, 0x7941, 0x7941 }, /* 0x7942 */ { false, 0x7942, 0x7942 }, /* 0x7943 */ { false, 0x7943, 0x7943 }, /* 0x7944 */ { false, 0x7944, 0x7944 }, /* 0x7945 */ { false, 0x7945, 0x7945 }, /* 0x7946 */ { false, 0x7946, 0x7946 }, /* 0x7947 */ { false, 0x7947, 0x7947 }, /* 0x7948 */ { false, 0x7948, 0x7948 }, /* 0x7949 */ { false, 0x7949, 0x7949 }, /* 0x794a */ { false, 0x794a, 0x794a }, /* 0x794b */ { false, 0x794b, 0x794b }, /* 0x794c */ { false, 0x794c, 0x794c }, /* 0x794d */ { false, 0x794d, 0x794d }, /* 0x794e */ { false, 0x794e, 0x794e }, /* 0x794f */ { false, 0x794f, 0x794f }, /* 0x7950 */ { false, 0x7950, 0x7950 }, /* 0x7951 */ { false, 0x7951, 0x7951 }, /* 0x7952 */ { false, 0x7952, 0x7952 }, /* 0x7953 */ { false, 0x7953, 0x7953 }, /* 0x7954 */ { false, 0x7954, 0x7954 }, /* 0x7955 */ { false, 0x7955, 0x7955 }, /* 0x7956 */ { false, 0x7956, 0x7956 }, /* 0x7957 */ { false, 0x7957, 0x7957 }, /* 0x7958 */ { false, 0x7958, 0x7958 }, /* 0x7959 */ { false, 0x7959, 0x7959 }, /* 0x795a */ { false, 0x795a, 0x795a }, /* 0x795b */ { false, 0x795b, 0x795b }, /* 0x795c */ { false, 0x795c, 0x795c }, /* 0x795d */ { false, 0x795d, 0x795d }, /* 0x795e */ { false, 0x795e, 0x795e }, /* 0x795f */ { false, 0x795f, 0x795f }, /* 0x7960 */ { false, 0x7960, 0x7960 }, /* 0x7961 */ { false, 0x7961, 0x7961 }, /* 0x7962 */ { false, 0x7962, 0x7962 }, /* 0x7963 */ { false, 0x7963, 0x7963 }, /* 0x7964 */ { false, 0x7964, 0x7964 }, /* 0x7965 */ { false, 0x7965, 0x7965 }, /* 0x7966 */ { false, 0x7966, 0x7966 }, /* 0x7967 */ { false, 0x7967, 0x7967 }, /* 0x7968 */ { false, 0x7968, 0x7968 }, /* 0x7969 */ { false, 0x7969, 0x7969 }, /* 0x796a */ { false, 0x796a, 0x796a }, /* 0x796b */ { false, 0x796b, 0x796b }, /* 0x796c */ { false, 0x796c, 0x796c }, /* 0x796d */ { false, 0x796d, 0x796d }, /* 0x796e */ { false, 0x796e, 0x796e }, /* 0x796f */ { false, 0x796f, 0x796f }, /* 0x7970 */ { false, 0x7970, 0x7970 }, /* 0x7971 */ { false, 0x7971, 0x7971 }, /* 0x7972 */ { false, 0x7972, 0x7972 }, /* 0x7973 */ { false, 0x7973, 0x7973 }, /* 0x7974 */ { false, 0x7974, 0x7974 }, /* 0x7975 */ { false, 0x7975, 0x7975 }, /* 0x7976 */ { false, 0x7976, 0x7976 }, /* 0x7977 */ { false, 0x7977, 0x7977 }, /* 0x7978 */ { false, 0x7978, 0x7978 }, /* 0x7979 */ { false, 0x7979, 0x7979 }, /* 0x797a */ { false, 0x797a, 0x797a }, /* 0x797b */ { false, 0x797b, 0x797b }, /* 0x797c */ { false, 0x797c, 0x797c }, /* 0x797d */ { false, 0x797d, 0x797d }, /* 0x797e */ { false, 0x797e, 0x797e }, /* 0x797f */ { false, 0x797f, 0x797f }, /* 0x7980 */ { false, 0x7980, 0x7980 }, /* 0x7981 */ { false, 0x7981, 0x7981 }, /* 0x7982 */ { false, 0x7982, 0x7982 }, /* 0x7983 */ { false, 0x7983, 0x7983 }, /* 0x7984 */ { false, 0x7984, 0x7984 }, /* 0x7985 */ { false, 0x7985, 0x7985 }, /* 0x7986 */ { false, 0x7986, 0x7986 }, /* 0x7987 */ { false, 0x7987, 0x7987 }, /* 0x7988 */ { false, 0x7988, 0x7988 }, /* 0x7989 */ { false, 0x7989, 0x7989 }, /* 0x798a */ { false, 0x798a, 0x798a }, /* 0x798b */ { false, 0x798b, 0x798b }, /* 0x798c */ { false, 0x798c, 0x798c }, /* 0x798d */ { false, 0x798d, 0x798d }, /* 0x798e */ { false, 0x798e, 0x798e }, /* 0x798f */ { false, 0x798f, 0x798f }, /* 0x7990 */ { false, 0x7990, 0x7990 }, /* 0x7991 */ { false, 0x7991, 0x7991 }, /* 0x7992 */ { false, 0x7992, 0x7992 }, /* 0x7993 */ { false, 0x7993, 0x7993 }, /* 0x7994 */ { false, 0x7994, 0x7994 }, /* 0x7995 */ { false, 0x7995, 0x7995 }, /* 0x7996 */ { false, 0x7996, 0x7996 }, /* 0x7997 */ { false, 0x7997, 0x7997 }, /* 0x7998 */ { false, 0x7998, 0x7998 }, /* 0x7999 */ { false, 0x7999, 0x7999 }, /* 0x799a */ { false, 0x799a, 0x799a }, /* 0x799b */ { false, 0x799b, 0x799b }, /* 0x799c */ { false, 0x799c, 0x799c }, /* 0x799d */ { false, 0x799d, 0x799d }, /* 0x799e */ { false, 0x799e, 0x799e }, /* 0x799f */ { false, 0x799f, 0x799f }, /* 0x79a0 */ { false, 0x79a0, 0x79a0 }, /* 0x79a1 */ { false, 0x79a1, 0x79a1 }, /* 0x79a2 */ { false, 0x79a2, 0x79a2 }, /* 0x79a3 */ { false, 0x79a3, 0x79a3 }, /* 0x79a4 */ { false, 0x79a4, 0x79a4 }, /* 0x79a5 */ { false, 0x79a5, 0x79a5 }, /* 0x79a6 */ { false, 0x79a6, 0x79a6 }, /* 0x79a7 */ { false, 0x79a7, 0x79a7 }, /* 0x79a8 */ { false, 0x79a8, 0x79a8 }, /* 0x79a9 */ { false, 0x79a9, 0x79a9 }, /* 0x79aa */ { false, 0x79aa, 0x79aa }, /* 0x79ab */ { false, 0x79ab, 0x79ab }, /* 0x79ac */ { false, 0x79ac, 0x79ac }, /* 0x79ad */ { false, 0x79ad, 0x79ad }, /* 0x79ae */ { false, 0x79ae, 0x79ae }, /* 0x79af */ { false, 0x79af, 0x79af }, /* 0x79b0 */ { false, 0x79b0, 0x79b0 }, /* 0x79b1 */ { false, 0x79b1, 0x79b1 }, /* 0x79b2 */ { false, 0x79b2, 0x79b2 }, /* 0x79b3 */ { false, 0x79b3, 0x79b3 }, /* 0x79b4 */ { false, 0x79b4, 0x79b4 }, /* 0x79b5 */ { false, 0x79b5, 0x79b5 }, /* 0x79b6 */ { false, 0x79b6, 0x79b6 }, /* 0x79b7 */ { false, 0x79b7, 0x79b7 }, /* 0x79b8 */ { false, 0x79b8, 0x79b8 }, /* 0x79b9 */ { false, 0x79b9, 0x79b9 }, /* 0x79ba */ { false, 0x79ba, 0x79ba }, /* 0x79bb */ { false, 0x79bb, 0x79bb }, /* 0x79bc */ { false, 0x79bc, 0x79bc }, /* 0x79bd */ { false, 0x79bd, 0x79bd }, /* 0x79be */ { false, 0x79be, 0x79be }, /* 0x79bf */ { false, 0x79bf, 0x79bf }, /* 0x79c0 */ { false, 0x79c0, 0x79c0 }, /* 0x79c1 */ { false, 0x79c1, 0x79c1 }, /* 0x79c2 */ { false, 0x79c2, 0x79c2 }, /* 0x79c3 */ { false, 0x79c3, 0x79c3 }, /* 0x79c4 */ { false, 0x79c4, 0x79c4 }, /* 0x79c5 */ { false, 0x79c5, 0x79c5 }, /* 0x79c6 */ { false, 0x79c6, 0x79c6 }, /* 0x79c7 */ { false, 0x79c7, 0x79c7 }, /* 0x79c8 */ { false, 0x79c8, 0x79c8 }, /* 0x79c9 */ { false, 0x79c9, 0x79c9 }, /* 0x79ca */ { false, 0x79ca, 0x79ca }, /* 0x79cb */ { false, 0x79cb, 0x79cb }, /* 0x79cc */ { false, 0x79cc, 0x79cc }, /* 0x79cd */ { false, 0x79cd, 0x79cd }, /* 0x79ce */ { false, 0x79ce, 0x79ce }, /* 0x79cf */ { false, 0x79cf, 0x79cf }, /* 0x79d0 */ { false, 0x79d0, 0x79d0 }, /* 0x79d1 */ { false, 0x79d1, 0x79d1 }, /* 0x79d2 */ { false, 0x79d2, 0x79d2 }, /* 0x79d3 */ { false, 0x79d3, 0x79d3 }, /* 0x79d4 */ { false, 0x79d4, 0x79d4 }, /* 0x79d5 */ { false, 0x79d5, 0x79d5 }, /* 0x79d6 */ { false, 0x79d6, 0x79d6 }, /* 0x79d7 */ { false, 0x79d7, 0x79d7 }, /* 0x79d8 */ { false, 0x79d8, 0x79d8 }, /* 0x79d9 */ { false, 0x79d9, 0x79d9 }, /* 0x79da */ { false, 0x79da, 0x79da }, /* 0x79db */ { false, 0x79db, 0x79db }, /* 0x79dc */ { false, 0x79dc, 0x79dc }, /* 0x79dd */ { false, 0x79dd, 0x79dd }, /* 0x79de */ { false, 0x79de, 0x79de }, /* 0x79df */ { false, 0x79df, 0x79df }, /* 0x79e0 */ { false, 0x79e0, 0x79e0 }, /* 0x79e1 */ { false, 0x79e1, 0x79e1 }, /* 0x79e2 */ { false, 0x79e2, 0x79e2 }, /* 0x79e3 */ { false, 0x79e3, 0x79e3 }, /* 0x79e4 */ { false, 0x79e4, 0x79e4 }, /* 0x79e5 */ { false, 0x79e5, 0x79e5 }, /* 0x79e6 */ { false, 0x79e6, 0x79e6 }, /* 0x79e7 */ { false, 0x79e7, 0x79e7 }, /* 0x79e8 */ { false, 0x79e8, 0x79e8 }, /* 0x79e9 */ { false, 0x79e9, 0x79e9 }, /* 0x79ea */ { false, 0x79ea, 0x79ea }, /* 0x79eb */ { false, 0x79eb, 0x79eb }, /* 0x79ec */ { false, 0x79ec, 0x79ec }, /* 0x79ed */ { false, 0x79ed, 0x79ed }, /* 0x79ee */ { false, 0x79ee, 0x79ee }, /* 0x79ef */ { false, 0x79ef, 0x79ef }, /* 0x79f0 */ { false, 0x79f0, 0x79f0 }, /* 0x79f1 */ { false, 0x79f1, 0x79f1 }, /* 0x79f2 */ { false, 0x79f2, 0x79f2 }, /* 0x79f3 */ { false, 0x79f3, 0x79f3 }, /* 0x79f4 */ { false, 0x79f4, 0x79f4 }, /* 0x79f5 */ { false, 0x79f5, 0x79f5 }, /* 0x79f6 */ { false, 0x79f6, 0x79f6 }, /* 0x79f7 */ { false, 0x79f7, 0x79f7 }, /* 0x79f8 */ { false, 0x79f8, 0x79f8 }, /* 0x79f9 */ { false, 0x79f9, 0x79f9 }, /* 0x79fa */ { false, 0x79fa, 0x79fa }, /* 0x79fb */ { false, 0x79fb, 0x79fb }, /* 0x79fc */ { false, 0x79fc, 0x79fc }, /* 0x79fd */ { false, 0x79fd, 0x79fd }, /* 0x79fe */ { false, 0x79fe, 0x79fe }, /* 0x79ff */ { false, 0x79ff, 0x79ff }, /* 0x7a00 */ { false, 0x7a00, 0x7a00 }, /* 0x7a01 */ { false, 0x7a01, 0x7a01 }, /* 0x7a02 */ { false, 0x7a02, 0x7a02 }, /* 0x7a03 */ { false, 0x7a03, 0x7a03 }, /* 0x7a04 */ { false, 0x7a04, 0x7a04 }, /* 0x7a05 */ { false, 0x7a05, 0x7a05 }, /* 0x7a06 */ { false, 0x7a06, 0x7a06 }, /* 0x7a07 */ { false, 0x7a07, 0x7a07 }, /* 0x7a08 */ { false, 0x7a08, 0x7a08 }, /* 0x7a09 */ { false, 0x7a09, 0x7a09 }, /* 0x7a0a */ { false, 0x7a0a, 0x7a0a }, /* 0x7a0b */ { false, 0x7a0b, 0x7a0b }, /* 0x7a0c */ { false, 0x7a0c, 0x7a0c }, /* 0x7a0d */ { false, 0x7a0d, 0x7a0d }, /* 0x7a0e */ { false, 0x7a0e, 0x7a0e }, /* 0x7a0f */ { false, 0x7a0f, 0x7a0f }, /* 0x7a10 */ { false, 0x7a10, 0x7a10 }, /* 0x7a11 */ { false, 0x7a11, 0x7a11 }, /* 0x7a12 */ { false, 0x7a12, 0x7a12 }, /* 0x7a13 */ { false, 0x7a13, 0x7a13 }, /* 0x7a14 */ { false, 0x7a14, 0x7a14 }, /* 0x7a15 */ { false, 0x7a15, 0x7a15 }, /* 0x7a16 */ { false, 0x7a16, 0x7a16 }, /* 0x7a17 */ { false, 0x7a17, 0x7a17 }, /* 0x7a18 */ { false, 0x7a18, 0x7a18 }, /* 0x7a19 */ { false, 0x7a19, 0x7a19 }, /* 0x7a1a */ { false, 0x7a1a, 0x7a1a }, /* 0x7a1b */ { false, 0x7a1b, 0x7a1b }, /* 0x7a1c */ { false, 0x7a1c, 0x7a1c }, /* 0x7a1d */ { false, 0x7a1d, 0x7a1d }, /* 0x7a1e */ { false, 0x7a1e, 0x7a1e }, /* 0x7a1f */ { false, 0x7a1f, 0x7a1f }, /* 0x7a20 */ { false, 0x7a20, 0x7a20 }, /* 0x7a21 */ { false, 0x7a21, 0x7a21 }, /* 0x7a22 */ { false, 0x7a22, 0x7a22 }, /* 0x7a23 */ { false, 0x7a23, 0x7a23 }, /* 0x7a24 */ { false, 0x7a24, 0x7a24 }, /* 0x7a25 */ { false, 0x7a25, 0x7a25 }, /* 0x7a26 */ { false, 0x7a26, 0x7a26 }, /* 0x7a27 */ { false, 0x7a27, 0x7a27 }, /* 0x7a28 */ { false, 0x7a28, 0x7a28 }, /* 0x7a29 */ { false, 0x7a29, 0x7a29 }, /* 0x7a2a */ { false, 0x7a2a, 0x7a2a }, /* 0x7a2b */ { false, 0x7a2b, 0x7a2b }, /* 0x7a2c */ { false, 0x7a2c, 0x7a2c }, /* 0x7a2d */ { false, 0x7a2d, 0x7a2d }, /* 0x7a2e */ { false, 0x7a2e, 0x7a2e }, /* 0x7a2f */ { false, 0x7a2f, 0x7a2f }, /* 0x7a30 */ { false, 0x7a30, 0x7a30 }, /* 0x7a31 */ { false, 0x7a31, 0x7a31 }, /* 0x7a32 */ { false, 0x7a32, 0x7a32 }, /* 0x7a33 */ { false, 0x7a33, 0x7a33 }, /* 0x7a34 */ { false, 0x7a34, 0x7a34 }, /* 0x7a35 */ { false, 0x7a35, 0x7a35 }, /* 0x7a36 */ { false, 0x7a36, 0x7a36 }, /* 0x7a37 */ { false, 0x7a37, 0x7a37 }, /* 0x7a38 */ { false, 0x7a38, 0x7a38 }, /* 0x7a39 */ { false, 0x7a39, 0x7a39 }, /* 0x7a3a */ { false, 0x7a3a, 0x7a3a }, /* 0x7a3b */ { false, 0x7a3b, 0x7a3b }, /* 0x7a3c */ { false, 0x7a3c, 0x7a3c }, /* 0x7a3d */ { false, 0x7a3d, 0x7a3d }, /* 0x7a3e */ { false, 0x7a3e, 0x7a3e }, /* 0x7a3f */ { false, 0x7a3f, 0x7a3f }, /* 0x7a40 */ { false, 0x7a40, 0x7a40 }, /* 0x7a41 */ { false, 0x7a41, 0x7a41 }, /* 0x7a42 */ { false, 0x7a42, 0x7a42 }, /* 0x7a43 */ { false, 0x7a43, 0x7a43 }, /* 0x7a44 */ { false, 0x7a44, 0x7a44 }, /* 0x7a45 */ { false, 0x7a45, 0x7a45 }, /* 0x7a46 */ { false, 0x7a46, 0x7a46 }, /* 0x7a47 */ { false, 0x7a47, 0x7a47 }, /* 0x7a48 */ { false, 0x7a48, 0x7a48 }, /* 0x7a49 */ { false, 0x7a49, 0x7a49 }, /* 0x7a4a */ { false, 0x7a4a, 0x7a4a }, /* 0x7a4b */ { false, 0x7a4b, 0x7a4b }, /* 0x7a4c */ { false, 0x7a4c, 0x7a4c }, /* 0x7a4d */ { false, 0x7a4d, 0x7a4d }, /* 0x7a4e */ { false, 0x7a4e, 0x7a4e }, /* 0x7a4f */ { false, 0x7a4f, 0x7a4f }, /* 0x7a50 */ { false, 0x7a50, 0x7a50 }, /* 0x7a51 */ { false, 0x7a51, 0x7a51 }, /* 0x7a52 */ { false, 0x7a52, 0x7a52 }, /* 0x7a53 */ { false, 0x7a53, 0x7a53 }, /* 0x7a54 */ { false, 0x7a54, 0x7a54 }, /* 0x7a55 */ { false, 0x7a55, 0x7a55 }, /* 0x7a56 */ { false, 0x7a56, 0x7a56 }, /* 0x7a57 */ { false, 0x7a57, 0x7a57 }, /* 0x7a58 */ { false, 0x7a58, 0x7a58 }, /* 0x7a59 */ { false, 0x7a59, 0x7a59 }, /* 0x7a5a */ { false, 0x7a5a, 0x7a5a }, /* 0x7a5b */ { false, 0x7a5b, 0x7a5b }, /* 0x7a5c */ { false, 0x7a5c, 0x7a5c }, /* 0x7a5d */ { false, 0x7a5d, 0x7a5d }, /* 0x7a5e */ { false, 0x7a5e, 0x7a5e }, /* 0x7a5f */ { false, 0x7a5f, 0x7a5f }, /* 0x7a60 */ { false, 0x7a60, 0x7a60 }, /* 0x7a61 */ { false, 0x7a61, 0x7a61 }, /* 0x7a62 */ { false, 0x7a62, 0x7a62 }, /* 0x7a63 */ { false, 0x7a63, 0x7a63 }, /* 0x7a64 */ { false, 0x7a64, 0x7a64 }, /* 0x7a65 */ { false, 0x7a65, 0x7a65 }, /* 0x7a66 */ { false, 0x7a66, 0x7a66 }, /* 0x7a67 */ { false, 0x7a67, 0x7a67 }, /* 0x7a68 */ { false, 0x7a68, 0x7a68 }, /* 0x7a69 */ { false, 0x7a69, 0x7a69 }, /* 0x7a6a */ { false, 0x7a6a, 0x7a6a }, /* 0x7a6b */ { false, 0x7a6b, 0x7a6b }, /* 0x7a6c */ { false, 0x7a6c, 0x7a6c }, /* 0x7a6d */ { false, 0x7a6d, 0x7a6d }, /* 0x7a6e */ { false, 0x7a6e, 0x7a6e }, /* 0x7a6f */ { false, 0x7a6f, 0x7a6f }, /* 0x7a70 */ { false, 0x7a70, 0x7a70 }, /* 0x7a71 */ { false, 0x7a71, 0x7a71 }, /* 0x7a72 */ { false, 0x7a72, 0x7a72 }, /* 0x7a73 */ { false, 0x7a73, 0x7a73 }, /* 0x7a74 */ { false, 0x7a74, 0x7a74 }, /* 0x7a75 */ { false, 0x7a75, 0x7a75 }, /* 0x7a76 */ { false, 0x7a76, 0x7a76 }, /* 0x7a77 */ { false, 0x7a77, 0x7a77 }, /* 0x7a78 */ { false, 0x7a78, 0x7a78 }, /* 0x7a79 */ { false, 0x7a79, 0x7a79 }, /* 0x7a7a */ { false, 0x7a7a, 0x7a7a }, /* 0x7a7b */ { false, 0x7a7b, 0x7a7b }, /* 0x7a7c */ { false, 0x7a7c, 0x7a7c }, /* 0x7a7d */ { false, 0x7a7d, 0x7a7d }, /* 0x7a7e */ { false, 0x7a7e, 0x7a7e }, /* 0x7a7f */ { false, 0x7a7f, 0x7a7f }, /* 0x7a80 */ { false, 0x7a80, 0x7a80 }, /* 0x7a81 */ { false, 0x7a81, 0x7a81 }, /* 0x7a82 */ { false, 0x7a82, 0x7a82 }, /* 0x7a83 */ { false, 0x7a83, 0x7a83 }, /* 0x7a84 */ { false, 0x7a84, 0x7a84 }, /* 0x7a85 */ { false, 0x7a85, 0x7a85 }, /* 0x7a86 */ { false, 0x7a86, 0x7a86 }, /* 0x7a87 */ { false, 0x7a87, 0x7a87 }, /* 0x7a88 */ { false, 0x7a88, 0x7a88 }, /* 0x7a89 */ { false, 0x7a89, 0x7a89 }, /* 0x7a8a */ { false, 0x7a8a, 0x7a8a }, /* 0x7a8b */ { false, 0x7a8b, 0x7a8b }, /* 0x7a8c */ { false, 0x7a8c, 0x7a8c }, /* 0x7a8d */ { false, 0x7a8d, 0x7a8d }, /* 0x7a8e */ { false, 0x7a8e, 0x7a8e }, /* 0x7a8f */ { false, 0x7a8f, 0x7a8f }, /* 0x7a90 */ { false, 0x7a90, 0x7a90 }, /* 0x7a91 */ { false, 0x7a91, 0x7a91 }, /* 0x7a92 */ { false, 0x7a92, 0x7a92 }, /* 0x7a93 */ { false, 0x7a93, 0x7a93 }, /* 0x7a94 */ { false, 0x7a94, 0x7a94 }, /* 0x7a95 */ { false, 0x7a95, 0x7a95 }, /* 0x7a96 */ { false, 0x7a96, 0x7a96 }, /* 0x7a97 */ { false, 0x7a97, 0x7a97 }, /* 0x7a98 */ { false, 0x7a98, 0x7a98 }, /* 0x7a99 */ { false, 0x7a99, 0x7a99 }, /* 0x7a9a */ { false, 0x7a9a, 0x7a9a }, /* 0x7a9b */ { false, 0x7a9b, 0x7a9b }, /* 0x7a9c */ { false, 0x7a9c, 0x7a9c }, /* 0x7a9d */ { false, 0x7a9d, 0x7a9d }, /* 0x7a9e */ { false, 0x7a9e, 0x7a9e }, /* 0x7a9f */ { false, 0x7a9f, 0x7a9f }, /* 0x7aa0 */ { false, 0x7aa0, 0x7aa0 }, /* 0x7aa1 */ { false, 0x7aa1, 0x7aa1 }, /* 0x7aa2 */ { false, 0x7aa2, 0x7aa2 }, /* 0x7aa3 */ { false, 0x7aa3, 0x7aa3 }, /* 0x7aa4 */ { false, 0x7aa4, 0x7aa4 }, /* 0x7aa5 */ { false, 0x7aa5, 0x7aa5 }, /* 0x7aa6 */ { false, 0x7aa6, 0x7aa6 }, /* 0x7aa7 */ { false, 0x7aa7, 0x7aa7 }, /* 0x7aa8 */ { false, 0x7aa8, 0x7aa8 }, /* 0x7aa9 */ { false, 0x7aa9, 0x7aa9 }, /* 0x7aaa */ { false, 0x7aaa, 0x7aaa }, /* 0x7aab */ { false, 0x7aab, 0x7aab }, /* 0x7aac */ { false, 0x7aac, 0x7aac }, /* 0x7aad */ { false, 0x7aad, 0x7aad }, /* 0x7aae */ { false, 0x7aae, 0x7aae }, /* 0x7aaf */ { false, 0x7aaf, 0x7aaf }, /* 0x7ab0 */ { false, 0x7ab0, 0x7ab0 }, /* 0x7ab1 */ { false, 0x7ab1, 0x7ab1 }, /* 0x7ab2 */ { false, 0x7ab2, 0x7ab2 }, /* 0x7ab3 */ { false, 0x7ab3, 0x7ab3 }, /* 0x7ab4 */ { false, 0x7ab4, 0x7ab4 }, /* 0x7ab5 */ { false, 0x7ab5, 0x7ab5 }, /* 0x7ab6 */ { false, 0x7ab6, 0x7ab6 }, /* 0x7ab7 */ { false, 0x7ab7, 0x7ab7 }, /* 0x7ab8 */ { false, 0x7ab8, 0x7ab8 }, /* 0x7ab9 */ { false, 0x7ab9, 0x7ab9 }, /* 0x7aba */ { false, 0x7aba, 0x7aba }, /* 0x7abb */ { false, 0x7abb, 0x7abb }, /* 0x7abc */ { false, 0x7abc, 0x7abc }, /* 0x7abd */ { false, 0x7abd, 0x7abd }, /* 0x7abe */ { false, 0x7abe, 0x7abe }, /* 0x7abf */ { false, 0x7abf, 0x7abf }, /* 0x7ac0 */ { false, 0x7ac0, 0x7ac0 }, /* 0x7ac1 */ { false, 0x7ac1, 0x7ac1 }, /* 0x7ac2 */ { false, 0x7ac2, 0x7ac2 }, /* 0x7ac3 */ { false, 0x7ac3, 0x7ac3 }, /* 0x7ac4 */ { false, 0x7ac4, 0x7ac4 }, /* 0x7ac5 */ { false, 0x7ac5, 0x7ac5 }, /* 0x7ac6 */ { false, 0x7ac6, 0x7ac6 }, /* 0x7ac7 */ { false, 0x7ac7, 0x7ac7 }, /* 0x7ac8 */ { false, 0x7ac8, 0x7ac8 }, /* 0x7ac9 */ { false, 0x7ac9, 0x7ac9 }, /* 0x7aca */ { false, 0x7aca, 0x7aca }, /* 0x7acb */ { false, 0x7acb, 0x7acb }, /* 0x7acc */ { false, 0x7acc, 0x7acc }, /* 0x7acd */ { false, 0x7acd, 0x7acd }, /* 0x7ace */ { false, 0x7ace, 0x7ace }, /* 0x7acf */ { false, 0x7acf, 0x7acf }, /* 0x7ad0 */ { false, 0x7ad0, 0x7ad0 }, /* 0x7ad1 */ { false, 0x7ad1, 0x7ad1 }, /* 0x7ad2 */ { false, 0x7ad2, 0x7ad2 }, /* 0x7ad3 */ { false, 0x7ad3, 0x7ad3 }, /* 0x7ad4 */ { false, 0x7ad4, 0x7ad4 }, /* 0x7ad5 */ { false, 0x7ad5, 0x7ad5 }, /* 0x7ad6 */ { false, 0x7ad6, 0x7ad6 }, /* 0x7ad7 */ { false, 0x7ad7, 0x7ad7 }, /* 0x7ad8 */ { false, 0x7ad8, 0x7ad8 }, /* 0x7ad9 */ { false, 0x7ad9, 0x7ad9 }, /* 0x7ada */ { false, 0x7ada, 0x7ada }, /* 0x7adb */ { false, 0x7adb, 0x7adb }, /* 0x7adc */ { false, 0x7adc, 0x7adc }, /* 0x7add */ { false, 0x7add, 0x7add }, /* 0x7ade */ { false, 0x7ade, 0x7ade }, /* 0x7adf */ { false, 0x7adf, 0x7adf }, /* 0x7ae0 */ { false, 0x7ae0, 0x7ae0 }, /* 0x7ae1 */ { false, 0x7ae1, 0x7ae1 }, /* 0x7ae2 */ { false, 0x7ae2, 0x7ae2 }, /* 0x7ae3 */ { false, 0x7ae3, 0x7ae3 }, /* 0x7ae4 */ { false, 0x7ae4, 0x7ae4 }, /* 0x7ae5 */ { false, 0x7ae5, 0x7ae5 }, /* 0x7ae6 */ { false, 0x7ae6, 0x7ae6 }, /* 0x7ae7 */ { false, 0x7ae7, 0x7ae7 }, /* 0x7ae8 */ { false, 0x7ae8, 0x7ae8 }, /* 0x7ae9 */ { false, 0x7ae9, 0x7ae9 }, /* 0x7aea */ { false, 0x7aea, 0x7aea }, /* 0x7aeb */ { false, 0x7aeb, 0x7aeb }, /* 0x7aec */ { false, 0x7aec, 0x7aec }, /* 0x7aed */ { false, 0x7aed, 0x7aed }, /* 0x7aee */ { false, 0x7aee, 0x7aee }, /* 0x7aef */ { false, 0x7aef, 0x7aef }, /* 0x7af0 */ { false, 0x7af0, 0x7af0 }, /* 0x7af1 */ { false, 0x7af1, 0x7af1 }, /* 0x7af2 */ { false, 0x7af2, 0x7af2 }, /* 0x7af3 */ { false, 0x7af3, 0x7af3 }, /* 0x7af4 */ { false, 0x7af4, 0x7af4 }, /* 0x7af5 */ { false, 0x7af5, 0x7af5 }, /* 0x7af6 */ { false, 0x7af6, 0x7af6 }, /* 0x7af7 */ { false, 0x7af7, 0x7af7 }, /* 0x7af8 */ { false, 0x7af8, 0x7af8 }, /* 0x7af9 */ { false, 0x7af9, 0x7af9 }, /* 0x7afa */ { false, 0x7afa, 0x7afa }, /* 0x7afb */ { false, 0x7afb, 0x7afb }, /* 0x7afc */ { false, 0x7afc, 0x7afc }, /* 0x7afd */ { false, 0x7afd, 0x7afd }, /* 0x7afe */ { false, 0x7afe, 0x7afe }, /* 0x7aff */ { false, 0x7aff, 0x7aff }, /* 0x7b00 */ { false, 0x7b00, 0x7b00 }, /* 0x7b01 */ { false, 0x7b01, 0x7b01 }, /* 0x7b02 */ { false, 0x7b02, 0x7b02 }, /* 0x7b03 */ { false, 0x7b03, 0x7b03 }, /* 0x7b04 */ { false, 0x7b04, 0x7b04 }, /* 0x7b05 */ { false, 0x7b05, 0x7b05 }, /* 0x7b06 */ { false, 0x7b06, 0x7b06 }, /* 0x7b07 */ { false, 0x7b07, 0x7b07 }, /* 0x7b08 */ { false, 0x7b08, 0x7b08 }, /* 0x7b09 */ { false, 0x7b09, 0x7b09 }, /* 0x7b0a */ { false, 0x7b0a, 0x7b0a }, /* 0x7b0b */ { false, 0x7b0b, 0x7b0b }, /* 0x7b0c */ { false, 0x7b0c, 0x7b0c }, /* 0x7b0d */ { false, 0x7b0d, 0x7b0d }, /* 0x7b0e */ { false, 0x7b0e, 0x7b0e }, /* 0x7b0f */ { false, 0x7b0f, 0x7b0f }, /* 0x7b10 */ { false, 0x7b10, 0x7b10 }, /* 0x7b11 */ { false, 0x7b11, 0x7b11 }, /* 0x7b12 */ { false, 0x7b12, 0x7b12 }, /* 0x7b13 */ { false, 0x7b13, 0x7b13 }, /* 0x7b14 */ { false, 0x7b14, 0x7b14 }, /* 0x7b15 */ { false, 0x7b15, 0x7b15 }, /* 0x7b16 */ { false, 0x7b16, 0x7b16 }, /* 0x7b17 */ { false, 0x7b17, 0x7b17 }, /* 0x7b18 */ { false, 0x7b18, 0x7b18 }, /* 0x7b19 */ { false, 0x7b19, 0x7b19 }, /* 0x7b1a */ { false, 0x7b1a, 0x7b1a }, /* 0x7b1b */ { false, 0x7b1b, 0x7b1b }, /* 0x7b1c */ { false, 0x7b1c, 0x7b1c }, /* 0x7b1d */ { false, 0x7b1d, 0x7b1d }, /* 0x7b1e */ { false, 0x7b1e, 0x7b1e }, /* 0x7b1f */ { false, 0x7b1f, 0x7b1f }, /* 0x7b20 */ { false, 0x7b20, 0x7b20 }, /* 0x7b21 */ { false, 0x7b21, 0x7b21 }, /* 0x7b22 */ { false, 0x7b22, 0x7b22 }, /* 0x7b23 */ { false, 0x7b23, 0x7b23 }, /* 0x7b24 */ { false, 0x7b24, 0x7b24 }, /* 0x7b25 */ { false, 0x7b25, 0x7b25 }, /* 0x7b26 */ { false, 0x7b26, 0x7b26 }, /* 0x7b27 */ { false, 0x7b27, 0x7b27 }, /* 0x7b28 */ { false, 0x7b28, 0x7b28 }, /* 0x7b29 */ { false, 0x7b29, 0x7b29 }, /* 0x7b2a */ { false, 0x7b2a, 0x7b2a }, /* 0x7b2b */ { false, 0x7b2b, 0x7b2b }, /* 0x7b2c */ { false, 0x7b2c, 0x7b2c }, /* 0x7b2d */ { false, 0x7b2d, 0x7b2d }, /* 0x7b2e */ { false, 0x7b2e, 0x7b2e }, /* 0x7b2f */ { false, 0x7b2f, 0x7b2f }, /* 0x7b30 */ { false, 0x7b30, 0x7b30 }, /* 0x7b31 */ { false, 0x7b31, 0x7b31 }, /* 0x7b32 */ { false, 0x7b32, 0x7b32 }, /* 0x7b33 */ { false, 0x7b33, 0x7b33 }, /* 0x7b34 */ { false, 0x7b34, 0x7b34 }, /* 0x7b35 */ { false, 0x7b35, 0x7b35 }, /* 0x7b36 */ { false, 0x7b36, 0x7b36 }, /* 0x7b37 */ { false, 0x7b37, 0x7b37 }, /* 0x7b38 */ { false, 0x7b38, 0x7b38 }, /* 0x7b39 */ { false, 0x7b39, 0x7b39 }, /* 0x7b3a */ { false, 0x7b3a, 0x7b3a }, /* 0x7b3b */ { false, 0x7b3b, 0x7b3b }, /* 0x7b3c */ { false, 0x7b3c, 0x7b3c }, /* 0x7b3d */ { false, 0x7b3d, 0x7b3d }, /* 0x7b3e */ { false, 0x7b3e, 0x7b3e }, /* 0x7b3f */ { false, 0x7b3f, 0x7b3f }, /* 0x7b40 */ { false, 0x7b40, 0x7b40 }, /* 0x7b41 */ { false, 0x7b41, 0x7b41 }, /* 0x7b42 */ { false, 0x7b42, 0x7b42 }, /* 0x7b43 */ { false, 0x7b43, 0x7b43 }, /* 0x7b44 */ { false, 0x7b44, 0x7b44 }, /* 0x7b45 */ { false, 0x7b45, 0x7b45 }, /* 0x7b46 */ { false, 0x7b46, 0x7b46 }, /* 0x7b47 */ { false, 0x7b47, 0x7b47 }, /* 0x7b48 */ { false, 0x7b48, 0x7b48 }, /* 0x7b49 */ { false, 0x7b49, 0x7b49 }, /* 0x7b4a */ { false, 0x7b4a, 0x7b4a }, /* 0x7b4b */ { false, 0x7b4b, 0x7b4b }, /* 0x7b4c */ { false, 0x7b4c, 0x7b4c }, /* 0x7b4d */ { false, 0x7b4d, 0x7b4d }, /* 0x7b4e */ { false, 0x7b4e, 0x7b4e }, /* 0x7b4f */ { false, 0x7b4f, 0x7b4f }, /* 0x7b50 */ { false, 0x7b50, 0x7b50 }, /* 0x7b51 */ { false, 0x7b51, 0x7b51 }, /* 0x7b52 */ { false, 0x7b52, 0x7b52 }, /* 0x7b53 */ { false, 0x7b53, 0x7b53 }, /* 0x7b54 */ { false, 0x7b54, 0x7b54 }, /* 0x7b55 */ { false, 0x7b55, 0x7b55 }, /* 0x7b56 */ { false, 0x7b56, 0x7b56 }, /* 0x7b57 */ { false, 0x7b57, 0x7b57 }, /* 0x7b58 */ { false, 0x7b58, 0x7b58 }, /* 0x7b59 */ { false, 0x7b59, 0x7b59 }, /* 0x7b5a */ { false, 0x7b5a, 0x7b5a }, /* 0x7b5b */ { false, 0x7b5b, 0x7b5b }, /* 0x7b5c */ { false, 0x7b5c, 0x7b5c }, /* 0x7b5d */ { false, 0x7b5d, 0x7b5d }, /* 0x7b5e */ { false, 0x7b5e, 0x7b5e }, /* 0x7b5f */ { false, 0x7b5f, 0x7b5f }, /* 0x7b60 */ { false, 0x7b60, 0x7b60 }, /* 0x7b61 */ { false, 0x7b61, 0x7b61 }, /* 0x7b62 */ { false, 0x7b62, 0x7b62 }, /* 0x7b63 */ { false, 0x7b63, 0x7b63 }, /* 0x7b64 */ { false, 0x7b64, 0x7b64 }, /* 0x7b65 */ { false, 0x7b65, 0x7b65 }, /* 0x7b66 */ { false, 0x7b66, 0x7b66 }, /* 0x7b67 */ { false, 0x7b67, 0x7b67 }, /* 0x7b68 */ { false, 0x7b68, 0x7b68 }, /* 0x7b69 */ { false, 0x7b69, 0x7b69 }, /* 0x7b6a */ { false, 0x7b6a, 0x7b6a }, /* 0x7b6b */ { false, 0x7b6b, 0x7b6b }, /* 0x7b6c */ { false, 0x7b6c, 0x7b6c }, /* 0x7b6d */ { false, 0x7b6d, 0x7b6d }, /* 0x7b6e */ { false, 0x7b6e, 0x7b6e }, /* 0x7b6f */ { false, 0x7b6f, 0x7b6f }, /* 0x7b70 */ { false, 0x7b70, 0x7b70 }, /* 0x7b71 */ { false, 0x7b71, 0x7b71 }, /* 0x7b72 */ { false, 0x7b72, 0x7b72 }, /* 0x7b73 */ { false, 0x7b73, 0x7b73 }, /* 0x7b74 */ { false, 0x7b74, 0x7b74 }, /* 0x7b75 */ { false, 0x7b75, 0x7b75 }, /* 0x7b76 */ { false, 0x7b76, 0x7b76 }, /* 0x7b77 */ { false, 0x7b77, 0x7b77 }, /* 0x7b78 */ { false, 0x7b78, 0x7b78 }, /* 0x7b79 */ { false, 0x7b79, 0x7b79 }, /* 0x7b7a */ { false, 0x7b7a, 0x7b7a }, /* 0x7b7b */ { false, 0x7b7b, 0x7b7b }, /* 0x7b7c */ { false, 0x7b7c, 0x7b7c }, /* 0x7b7d */ { false, 0x7b7d, 0x7b7d }, /* 0x7b7e */ { false, 0x7b7e, 0x7b7e }, /* 0x7b7f */ { false, 0x7b7f, 0x7b7f }, /* 0x7b80 */ { false, 0x7b80, 0x7b80 }, /* 0x7b81 */ { false, 0x7b81, 0x7b81 }, /* 0x7b82 */ { false, 0x7b82, 0x7b82 }, /* 0x7b83 */ { false, 0x7b83, 0x7b83 }, /* 0x7b84 */ { false, 0x7b84, 0x7b84 }, /* 0x7b85 */ { false, 0x7b85, 0x7b85 }, /* 0x7b86 */ { false, 0x7b86, 0x7b86 }, /* 0x7b87 */ { false, 0x7b87, 0x7b87 }, /* 0x7b88 */ { false, 0x7b88, 0x7b88 }, /* 0x7b89 */ { false, 0x7b89, 0x7b89 }, /* 0x7b8a */ { false, 0x7b8a, 0x7b8a }, /* 0x7b8b */ { false, 0x7b8b, 0x7b8b }, /* 0x7b8c */ { false, 0x7b8c, 0x7b8c }, /* 0x7b8d */ { false, 0x7b8d, 0x7b8d }, /* 0x7b8e */ { false, 0x7b8e, 0x7b8e }, /* 0x7b8f */ { false, 0x7b8f, 0x7b8f }, /* 0x7b90 */ { false, 0x7b90, 0x7b90 }, /* 0x7b91 */ { false, 0x7b91, 0x7b91 }, /* 0x7b92 */ { false, 0x7b92, 0x7b92 }, /* 0x7b93 */ { false, 0x7b93, 0x7b93 }, /* 0x7b94 */ { false, 0x7b94, 0x7b94 }, /* 0x7b95 */ { false, 0x7b95, 0x7b95 }, /* 0x7b96 */ { false, 0x7b96, 0x7b96 }, /* 0x7b97 */ { false, 0x7b97, 0x7b97 }, /* 0x7b98 */ { false, 0x7b98, 0x7b98 }, /* 0x7b99 */ { false, 0x7b99, 0x7b99 }, /* 0x7b9a */ { false, 0x7b9a, 0x7b9a }, /* 0x7b9b */ { false, 0x7b9b, 0x7b9b }, /* 0x7b9c */ { false, 0x7b9c, 0x7b9c }, /* 0x7b9d */ { false, 0x7b9d, 0x7b9d }, /* 0x7b9e */ { false, 0x7b9e, 0x7b9e }, /* 0x7b9f */ { false, 0x7b9f, 0x7b9f }, /* 0x7ba0 */ { false, 0x7ba0, 0x7ba0 }, /* 0x7ba1 */ { false, 0x7ba1, 0x7ba1 }, /* 0x7ba2 */ { false, 0x7ba2, 0x7ba2 }, /* 0x7ba3 */ { false, 0x7ba3, 0x7ba3 }, /* 0x7ba4 */ { false, 0x7ba4, 0x7ba4 }, /* 0x7ba5 */ { false, 0x7ba5, 0x7ba5 }, /* 0x7ba6 */ { false, 0x7ba6, 0x7ba6 }, /* 0x7ba7 */ { false, 0x7ba7, 0x7ba7 }, /* 0x7ba8 */ { false, 0x7ba8, 0x7ba8 }, /* 0x7ba9 */ { false, 0x7ba9, 0x7ba9 }, /* 0x7baa */ { false, 0x7baa, 0x7baa }, /* 0x7bab */ { false, 0x7bab, 0x7bab }, /* 0x7bac */ { false, 0x7bac, 0x7bac }, /* 0x7bad */ { false, 0x7bad, 0x7bad }, /* 0x7bae */ { false, 0x7bae, 0x7bae }, /* 0x7baf */ { false, 0x7baf, 0x7baf }, /* 0x7bb0 */ { false, 0x7bb0, 0x7bb0 }, /* 0x7bb1 */ { false, 0x7bb1, 0x7bb1 }, /* 0x7bb2 */ { false, 0x7bb2, 0x7bb2 }, /* 0x7bb3 */ { false, 0x7bb3, 0x7bb3 }, /* 0x7bb4 */ { false, 0x7bb4, 0x7bb4 }, /* 0x7bb5 */ { false, 0x7bb5, 0x7bb5 }, /* 0x7bb6 */ { false, 0x7bb6, 0x7bb6 }, /* 0x7bb7 */ { false, 0x7bb7, 0x7bb7 }, /* 0x7bb8 */ { false, 0x7bb8, 0x7bb8 }, /* 0x7bb9 */ { false, 0x7bb9, 0x7bb9 }, /* 0x7bba */ { false, 0x7bba, 0x7bba }, /* 0x7bbb */ { false, 0x7bbb, 0x7bbb }, /* 0x7bbc */ { false, 0x7bbc, 0x7bbc }, /* 0x7bbd */ { false, 0x7bbd, 0x7bbd }, /* 0x7bbe */ { false, 0x7bbe, 0x7bbe }, /* 0x7bbf */ { false, 0x7bbf, 0x7bbf }, /* 0x7bc0 */ { false, 0x7bc0, 0x7bc0 }, /* 0x7bc1 */ { false, 0x7bc1, 0x7bc1 }, /* 0x7bc2 */ { false, 0x7bc2, 0x7bc2 }, /* 0x7bc3 */ { false, 0x7bc3, 0x7bc3 }, /* 0x7bc4 */ { false, 0x7bc4, 0x7bc4 }, /* 0x7bc5 */ { false, 0x7bc5, 0x7bc5 }, /* 0x7bc6 */ { false, 0x7bc6, 0x7bc6 }, /* 0x7bc7 */ { false, 0x7bc7, 0x7bc7 }, /* 0x7bc8 */ { false, 0x7bc8, 0x7bc8 }, /* 0x7bc9 */ { false, 0x7bc9, 0x7bc9 }, /* 0x7bca */ { false, 0x7bca, 0x7bca }, /* 0x7bcb */ { false, 0x7bcb, 0x7bcb }, /* 0x7bcc */ { false, 0x7bcc, 0x7bcc }, /* 0x7bcd */ { false, 0x7bcd, 0x7bcd }, /* 0x7bce */ { false, 0x7bce, 0x7bce }, /* 0x7bcf */ { false, 0x7bcf, 0x7bcf }, /* 0x7bd0 */ { false, 0x7bd0, 0x7bd0 }, /* 0x7bd1 */ { false, 0x7bd1, 0x7bd1 }, /* 0x7bd2 */ { false, 0x7bd2, 0x7bd2 }, /* 0x7bd3 */ { false, 0x7bd3, 0x7bd3 }, /* 0x7bd4 */ { false, 0x7bd4, 0x7bd4 }, /* 0x7bd5 */ { false, 0x7bd5, 0x7bd5 }, /* 0x7bd6 */ { false, 0x7bd6, 0x7bd6 }, /* 0x7bd7 */ { false, 0x7bd7, 0x7bd7 }, /* 0x7bd8 */ { false, 0x7bd8, 0x7bd8 }, /* 0x7bd9 */ { false, 0x7bd9, 0x7bd9 }, /* 0x7bda */ { false, 0x7bda, 0x7bda }, /* 0x7bdb */ { false, 0x7bdb, 0x7bdb }, /* 0x7bdc */ { false, 0x7bdc, 0x7bdc }, /* 0x7bdd */ { false, 0x7bdd, 0x7bdd }, /* 0x7bde */ { false, 0x7bde, 0x7bde }, /* 0x7bdf */ { false, 0x7bdf, 0x7bdf }, /* 0x7be0 */ { false, 0x7be0, 0x7be0 }, /* 0x7be1 */ { false, 0x7be1, 0x7be1 }, /* 0x7be2 */ { false, 0x7be2, 0x7be2 }, /* 0x7be3 */ { false, 0x7be3, 0x7be3 }, /* 0x7be4 */ { false, 0x7be4, 0x7be4 }, /* 0x7be5 */ { false, 0x7be5, 0x7be5 }, /* 0x7be6 */ { false, 0x7be6, 0x7be6 }, /* 0x7be7 */ { false, 0x7be7, 0x7be7 }, /* 0x7be8 */ { false, 0x7be8, 0x7be8 }, /* 0x7be9 */ { false, 0x7be9, 0x7be9 }, /* 0x7bea */ { false, 0x7bea, 0x7bea }, /* 0x7beb */ { false, 0x7beb, 0x7beb }, /* 0x7bec */ { false, 0x7bec, 0x7bec }, /* 0x7bed */ { false, 0x7bed, 0x7bed }, /* 0x7bee */ { false, 0x7bee, 0x7bee }, /* 0x7bef */ { false, 0x7bef, 0x7bef }, /* 0x7bf0 */ { false, 0x7bf0, 0x7bf0 }, /* 0x7bf1 */ { false, 0x7bf1, 0x7bf1 }, /* 0x7bf2 */ { false, 0x7bf2, 0x7bf2 }, /* 0x7bf3 */ { false, 0x7bf3, 0x7bf3 }, /* 0x7bf4 */ { false, 0x7bf4, 0x7bf4 }, /* 0x7bf5 */ { false, 0x7bf5, 0x7bf5 }, /* 0x7bf6 */ { false, 0x7bf6, 0x7bf6 }, /* 0x7bf7 */ { false, 0x7bf7, 0x7bf7 }, /* 0x7bf8 */ { false, 0x7bf8, 0x7bf8 }, /* 0x7bf9 */ { false, 0x7bf9, 0x7bf9 }, /* 0x7bfa */ { false, 0x7bfa, 0x7bfa }, /* 0x7bfb */ { false, 0x7bfb, 0x7bfb }, /* 0x7bfc */ { false, 0x7bfc, 0x7bfc }, /* 0x7bfd */ { false, 0x7bfd, 0x7bfd }, /* 0x7bfe */ { false, 0x7bfe, 0x7bfe }, /* 0x7bff */ { false, 0x7bff, 0x7bff }, /* 0x7c00 */ { false, 0x7c00, 0x7c00 }, /* 0x7c01 */ { false, 0x7c01, 0x7c01 }, /* 0x7c02 */ { false, 0x7c02, 0x7c02 }, /* 0x7c03 */ { false, 0x7c03, 0x7c03 }, /* 0x7c04 */ { false, 0x7c04, 0x7c04 }, /* 0x7c05 */ { false, 0x7c05, 0x7c05 }, /* 0x7c06 */ { false, 0x7c06, 0x7c06 }, /* 0x7c07 */ { false, 0x7c07, 0x7c07 }, /* 0x7c08 */ { false, 0x7c08, 0x7c08 }, /* 0x7c09 */ { false, 0x7c09, 0x7c09 }, /* 0x7c0a */ { false, 0x7c0a, 0x7c0a }, /* 0x7c0b */ { false, 0x7c0b, 0x7c0b }, /* 0x7c0c */ { false, 0x7c0c, 0x7c0c }, /* 0x7c0d */ { false, 0x7c0d, 0x7c0d }, /* 0x7c0e */ { false, 0x7c0e, 0x7c0e }, /* 0x7c0f */ { false, 0x7c0f, 0x7c0f }, /* 0x7c10 */ { false, 0x7c10, 0x7c10 }, /* 0x7c11 */ { false, 0x7c11, 0x7c11 }, /* 0x7c12 */ { false, 0x7c12, 0x7c12 }, /* 0x7c13 */ { false, 0x7c13, 0x7c13 }, /* 0x7c14 */ { false, 0x7c14, 0x7c14 }, /* 0x7c15 */ { false, 0x7c15, 0x7c15 }, /* 0x7c16 */ { false, 0x7c16, 0x7c16 }, /* 0x7c17 */ { false, 0x7c17, 0x7c17 }, /* 0x7c18 */ { false, 0x7c18, 0x7c18 }, /* 0x7c19 */ { false, 0x7c19, 0x7c19 }, /* 0x7c1a */ { false, 0x7c1a, 0x7c1a }, /* 0x7c1b */ { false, 0x7c1b, 0x7c1b }, /* 0x7c1c */ { false, 0x7c1c, 0x7c1c }, /* 0x7c1d */ { false, 0x7c1d, 0x7c1d }, /* 0x7c1e */ { false, 0x7c1e, 0x7c1e }, /* 0x7c1f */ { false, 0x7c1f, 0x7c1f }, /* 0x7c20 */ { false, 0x7c20, 0x7c20 }, /* 0x7c21 */ { false, 0x7c21, 0x7c21 }, /* 0x7c22 */ { false, 0x7c22, 0x7c22 }, /* 0x7c23 */ { false, 0x7c23, 0x7c23 }, /* 0x7c24 */ { false, 0x7c24, 0x7c24 }, /* 0x7c25 */ { false, 0x7c25, 0x7c25 }, /* 0x7c26 */ { false, 0x7c26, 0x7c26 }, /* 0x7c27 */ { false, 0x7c27, 0x7c27 }, /* 0x7c28 */ { false, 0x7c28, 0x7c28 }, /* 0x7c29 */ { false, 0x7c29, 0x7c29 }, /* 0x7c2a */ { false, 0x7c2a, 0x7c2a }, /* 0x7c2b */ { false, 0x7c2b, 0x7c2b }, /* 0x7c2c */ { false, 0x7c2c, 0x7c2c }, /* 0x7c2d */ { false, 0x7c2d, 0x7c2d }, /* 0x7c2e */ { false, 0x7c2e, 0x7c2e }, /* 0x7c2f */ { false, 0x7c2f, 0x7c2f }, /* 0x7c30 */ { false, 0x7c30, 0x7c30 }, /* 0x7c31 */ { false, 0x7c31, 0x7c31 }, /* 0x7c32 */ { false, 0x7c32, 0x7c32 }, /* 0x7c33 */ { false, 0x7c33, 0x7c33 }, /* 0x7c34 */ { false, 0x7c34, 0x7c34 }, /* 0x7c35 */ { false, 0x7c35, 0x7c35 }, /* 0x7c36 */ { false, 0x7c36, 0x7c36 }, /* 0x7c37 */ { false, 0x7c37, 0x7c37 }, /* 0x7c38 */ { false, 0x7c38, 0x7c38 }, /* 0x7c39 */ { false, 0x7c39, 0x7c39 }, /* 0x7c3a */ { false, 0x7c3a, 0x7c3a }, /* 0x7c3b */ { false, 0x7c3b, 0x7c3b }, /* 0x7c3c */ { false, 0x7c3c, 0x7c3c }, /* 0x7c3d */ { false, 0x7c3d, 0x7c3d }, /* 0x7c3e */ { false, 0x7c3e, 0x7c3e }, /* 0x7c3f */ { false, 0x7c3f, 0x7c3f }, /* 0x7c40 */ { false, 0x7c40, 0x7c40 }, /* 0x7c41 */ { false, 0x7c41, 0x7c41 }, /* 0x7c42 */ { false, 0x7c42, 0x7c42 }, /* 0x7c43 */ { false, 0x7c43, 0x7c43 }, /* 0x7c44 */ { false, 0x7c44, 0x7c44 }, /* 0x7c45 */ { false, 0x7c45, 0x7c45 }, /* 0x7c46 */ { false, 0x7c46, 0x7c46 }, /* 0x7c47 */ { false, 0x7c47, 0x7c47 }, /* 0x7c48 */ { false, 0x7c48, 0x7c48 }, /* 0x7c49 */ { false, 0x7c49, 0x7c49 }, /* 0x7c4a */ { false, 0x7c4a, 0x7c4a }, /* 0x7c4b */ { false, 0x7c4b, 0x7c4b }, /* 0x7c4c */ { false, 0x7c4c, 0x7c4c }, /* 0x7c4d */ { false, 0x7c4d, 0x7c4d }, /* 0x7c4e */ { false, 0x7c4e, 0x7c4e }, /* 0x7c4f */ { false, 0x7c4f, 0x7c4f }, /* 0x7c50 */ { false, 0x7c50, 0x7c50 }, /* 0x7c51 */ { false, 0x7c51, 0x7c51 }, /* 0x7c52 */ { false, 0x7c52, 0x7c52 }, /* 0x7c53 */ { false, 0x7c53, 0x7c53 }, /* 0x7c54 */ { false, 0x7c54, 0x7c54 }, /* 0x7c55 */ { false, 0x7c55, 0x7c55 }, /* 0x7c56 */ { false, 0x7c56, 0x7c56 }, /* 0x7c57 */ { false, 0x7c57, 0x7c57 }, /* 0x7c58 */ { false, 0x7c58, 0x7c58 }, /* 0x7c59 */ { false, 0x7c59, 0x7c59 }, /* 0x7c5a */ { false, 0x7c5a, 0x7c5a }, /* 0x7c5b */ { false, 0x7c5b, 0x7c5b }, /* 0x7c5c */ { false, 0x7c5c, 0x7c5c }, /* 0x7c5d */ { false, 0x7c5d, 0x7c5d }, /* 0x7c5e */ { false, 0x7c5e, 0x7c5e }, /* 0x7c5f */ { false, 0x7c5f, 0x7c5f }, /* 0x7c60 */ { false, 0x7c60, 0x7c60 }, /* 0x7c61 */ { false, 0x7c61, 0x7c61 }, /* 0x7c62 */ { false, 0x7c62, 0x7c62 }, /* 0x7c63 */ { false, 0x7c63, 0x7c63 }, /* 0x7c64 */ { false, 0x7c64, 0x7c64 }, /* 0x7c65 */ { false, 0x7c65, 0x7c65 }, /* 0x7c66 */ { false, 0x7c66, 0x7c66 }, /* 0x7c67 */ { false, 0x7c67, 0x7c67 }, /* 0x7c68 */ { false, 0x7c68, 0x7c68 }, /* 0x7c69 */ { false, 0x7c69, 0x7c69 }, /* 0x7c6a */ { false, 0x7c6a, 0x7c6a }, /* 0x7c6b */ { false, 0x7c6b, 0x7c6b }, /* 0x7c6c */ { false, 0x7c6c, 0x7c6c }, /* 0x7c6d */ { false, 0x7c6d, 0x7c6d }, /* 0x7c6e */ { false, 0x7c6e, 0x7c6e }, /* 0x7c6f */ { false, 0x7c6f, 0x7c6f }, /* 0x7c70 */ { false, 0x7c70, 0x7c70 }, /* 0x7c71 */ { false, 0x7c71, 0x7c71 }, /* 0x7c72 */ { false, 0x7c72, 0x7c72 }, /* 0x7c73 */ { false, 0x7c73, 0x7c73 }, /* 0x7c74 */ { false, 0x7c74, 0x7c74 }, /* 0x7c75 */ { false, 0x7c75, 0x7c75 }, /* 0x7c76 */ { false, 0x7c76, 0x7c76 }, /* 0x7c77 */ { false, 0x7c77, 0x7c77 }, /* 0x7c78 */ { false, 0x7c78, 0x7c78 }, /* 0x7c79 */ { false, 0x7c79, 0x7c79 }, /* 0x7c7a */ { false, 0x7c7a, 0x7c7a }, /* 0x7c7b */ { false, 0x7c7b, 0x7c7b }, /* 0x7c7c */ { false, 0x7c7c, 0x7c7c }, /* 0x7c7d */ { false, 0x7c7d, 0x7c7d }, /* 0x7c7e */ { false, 0x7c7e, 0x7c7e }, /* 0x7c7f */ { false, 0x7c7f, 0x7c7f }, /* 0x7c80 */ { false, 0x7c80, 0x7c80 }, /* 0x7c81 */ { false, 0x7c81, 0x7c81 }, /* 0x7c82 */ { false, 0x7c82, 0x7c82 }, /* 0x7c83 */ { false, 0x7c83, 0x7c83 }, /* 0x7c84 */ { false, 0x7c84, 0x7c84 }, /* 0x7c85 */ { false, 0x7c85, 0x7c85 }, /* 0x7c86 */ { false, 0x7c86, 0x7c86 }, /* 0x7c87 */ { false, 0x7c87, 0x7c87 }, /* 0x7c88 */ { false, 0x7c88, 0x7c88 }, /* 0x7c89 */ { false, 0x7c89, 0x7c89 }, /* 0x7c8a */ { false, 0x7c8a, 0x7c8a }, /* 0x7c8b */ { false, 0x7c8b, 0x7c8b }, /* 0x7c8c */ { false, 0x7c8c, 0x7c8c }, /* 0x7c8d */ { false, 0x7c8d, 0x7c8d }, /* 0x7c8e */ { false, 0x7c8e, 0x7c8e }, /* 0x7c8f */ { false, 0x7c8f, 0x7c8f }, /* 0x7c90 */ { false, 0x7c90, 0x7c90 }, /* 0x7c91 */ { false, 0x7c91, 0x7c91 }, /* 0x7c92 */ { false, 0x7c92, 0x7c92 }, /* 0x7c93 */ { false, 0x7c93, 0x7c93 }, /* 0x7c94 */ { false, 0x7c94, 0x7c94 }, /* 0x7c95 */ { false, 0x7c95, 0x7c95 }, /* 0x7c96 */ { false, 0x7c96, 0x7c96 }, /* 0x7c97 */ { false, 0x7c97, 0x7c97 }, /* 0x7c98 */ { false, 0x7c98, 0x7c98 }, /* 0x7c99 */ { false, 0x7c99, 0x7c99 }, /* 0x7c9a */ { false, 0x7c9a, 0x7c9a }, /* 0x7c9b */ { false, 0x7c9b, 0x7c9b }, /* 0x7c9c */ { false, 0x7c9c, 0x7c9c }, /* 0x7c9d */ { false, 0x7c9d, 0x7c9d }, /* 0x7c9e */ { false, 0x7c9e, 0x7c9e }, /* 0x7c9f */ { false, 0x7c9f, 0x7c9f }, /* 0x7ca0 */ { false, 0x7ca0, 0x7ca0 }, /* 0x7ca1 */ { false, 0x7ca1, 0x7ca1 }, /* 0x7ca2 */ { false, 0x7ca2, 0x7ca2 }, /* 0x7ca3 */ { false, 0x7ca3, 0x7ca3 }, /* 0x7ca4 */ { false, 0x7ca4, 0x7ca4 }, /* 0x7ca5 */ { false, 0x7ca5, 0x7ca5 }, /* 0x7ca6 */ { false, 0x7ca6, 0x7ca6 }, /* 0x7ca7 */ { false, 0x7ca7, 0x7ca7 }, /* 0x7ca8 */ { false, 0x7ca8, 0x7ca8 }, /* 0x7ca9 */ { false, 0x7ca9, 0x7ca9 }, /* 0x7caa */ { false, 0x7caa, 0x7caa }, /* 0x7cab */ { false, 0x7cab, 0x7cab }, /* 0x7cac */ { false, 0x7cac, 0x7cac }, /* 0x7cad */ { false, 0x7cad, 0x7cad }, /* 0x7cae */ { false, 0x7cae, 0x7cae }, /* 0x7caf */ { false, 0x7caf, 0x7caf }, /* 0x7cb0 */ { false, 0x7cb0, 0x7cb0 }, /* 0x7cb1 */ { false, 0x7cb1, 0x7cb1 }, /* 0x7cb2 */ { false, 0x7cb2, 0x7cb2 }, /* 0x7cb3 */ { false, 0x7cb3, 0x7cb3 }, /* 0x7cb4 */ { false, 0x7cb4, 0x7cb4 }, /* 0x7cb5 */ { false, 0x7cb5, 0x7cb5 }, /* 0x7cb6 */ { false, 0x7cb6, 0x7cb6 }, /* 0x7cb7 */ { false, 0x7cb7, 0x7cb7 }, /* 0x7cb8 */ { false, 0x7cb8, 0x7cb8 }, /* 0x7cb9 */ { false, 0x7cb9, 0x7cb9 }, /* 0x7cba */ { false, 0x7cba, 0x7cba }, /* 0x7cbb */ { false, 0x7cbb, 0x7cbb }, /* 0x7cbc */ { false, 0x7cbc, 0x7cbc }, /* 0x7cbd */ { false, 0x7cbd, 0x7cbd }, /* 0x7cbe */ { false, 0x7cbe, 0x7cbe }, /* 0x7cbf */ { false, 0x7cbf, 0x7cbf }, /* 0x7cc0 */ { false, 0x7cc0, 0x7cc0 }, /* 0x7cc1 */ { false, 0x7cc1, 0x7cc1 }, /* 0x7cc2 */ { false, 0x7cc2, 0x7cc2 }, /* 0x7cc3 */ { false, 0x7cc3, 0x7cc3 }, /* 0x7cc4 */ { false, 0x7cc4, 0x7cc4 }, /* 0x7cc5 */ { false, 0x7cc5, 0x7cc5 }, /* 0x7cc6 */ { false, 0x7cc6, 0x7cc6 }, /* 0x7cc7 */ { false, 0x7cc7, 0x7cc7 }, /* 0x7cc8 */ { false, 0x7cc8, 0x7cc8 }, /* 0x7cc9 */ { false, 0x7cc9, 0x7cc9 }, /* 0x7cca */ { false, 0x7cca, 0x7cca }, /* 0x7ccb */ { false, 0x7ccb, 0x7ccb }, /* 0x7ccc */ { false, 0x7ccc, 0x7ccc }, /* 0x7ccd */ { false, 0x7ccd, 0x7ccd }, /* 0x7cce */ { false, 0x7cce, 0x7cce }, /* 0x7ccf */ { false, 0x7ccf, 0x7ccf }, /* 0x7cd0 */ { false, 0x7cd0, 0x7cd0 }, /* 0x7cd1 */ { false, 0x7cd1, 0x7cd1 }, /* 0x7cd2 */ { false, 0x7cd2, 0x7cd2 }, /* 0x7cd3 */ { false, 0x7cd3, 0x7cd3 }, /* 0x7cd4 */ { false, 0x7cd4, 0x7cd4 }, /* 0x7cd5 */ { false, 0x7cd5, 0x7cd5 }, /* 0x7cd6 */ { false, 0x7cd6, 0x7cd6 }, /* 0x7cd7 */ { false, 0x7cd7, 0x7cd7 }, /* 0x7cd8 */ { false, 0x7cd8, 0x7cd8 }, /* 0x7cd9 */ { false, 0x7cd9, 0x7cd9 }, /* 0x7cda */ { false, 0x7cda, 0x7cda }, /* 0x7cdb */ { false, 0x7cdb, 0x7cdb }, /* 0x7cdc */ { false, 0x7cdc, 0x7cdc }, /* 0x7cdd */ { false, 0x7cdd, 0x7cdd }, /* 0x7cde */ { false, 0x7cde, 0x7cde }, /* 0x7cdf */ { false, 0x7cdf, 0x7cdf }, /* 0x7ce0 */ { false, 0x7ce0, 0x7ce0 }, /* 0x7ce1 */ { false, 0x7ce1, 0x7ce1 }, /* 0x7ce2 */ { false, 0x7ce2, 0x7ce2 }, /* 0x7ce3 */ { false, 0x7ce3, 0x7ce3 }, /* 0x7ce4 */ { false, 0x7ce4, 0x7ce4 }, /* 0x7ce5 */ { false, 0x7ce5, 0x7ce5 }, /* 0x7ce6 */ { false, 0x7ce6, 0x7ce6 }, /* 0x7ce7 */ { false, 0x7ce7, 0x7ce7 }, /* 0x7ce8 */ { false, 0x7ce8, 0x7ce8 }, /* 0x7ce9 */ { false, 0x7ce9, 0x7ce9 }, /* 0x7cea */ { false, 0x7cea, 0x7cea }, /* 0x7ceb */ { false, 0x7ceb, 0x7ceb }, /* 0x7cec */ { false, 0x7cec, 0x7cec }, /* 0x7ced */ { false, 0x7ced, 0x7ced }, /* 0x7cee */ { false, 0x7cee, 0x7cee }, /* 0x7cef */ { false, 0x7cef, 0x7cef }, /* 0x7cf0 */ { false, 0x7cf0, 0x7cf0 }, /* 0x7cf1 */ { false, 0x7cf1, 0x7cf1 }, /* 0x7cf2 */ { false, 0x7cf2, 0x7cf2 }, /* 0x7cf3 */ { false, 0x7cf3, 0x7cf3 }, /* 0x7cf4 */ { false, 0x7cf4, 0x7cf4 }, /* 0x7cf5 */ { false, 0x7cf5, 0x7cf5 }, /* 0x7cf6 */ { false, 0x7cf6, 0x7cf6 }, /* 0x7cf7 */ { false, 0x7cf7, 0x7cf7 }, /* 0x7cf8 */ { false, 0x7cf8, 0x7cf8 }, /* 0x7cf9 */ { false, 0x7cf9, 0x7cf9 }, /* 0x7cfa */ { false, 0x7cfa, 0x7cfa }, /* 0x7cfb */ { false, 0x7cfb, 0x7cfb }, /* 0x7cfc */ { false, 0x7cfc, 0x7cfc }, /* 0x7cfd */ { false, 0x7cfd, 0x7cfd }, /* 0x7cfe */ { false, 0x7cfe, 0x7cfe }, /* 0x7cff */ { false, 0x7cff, 0x7cff }, /* 0x7d00 */ { false, 0x7d00, 0x7d00 }, /* 0x7d01 */ { false, 0x7d01, 0x7d01 }, /* 0x7d02 */ { false, 0x7d02, 0x7d02 }, /* 0x7d03 */ { false, 0x7d03, 0x7d03 }, /* 0x7d04 */ { false, 0x7d04, 0x7d04 }, /* 0x7d05 */ { false, 0x7d05, 0x7d05 }, /* 0x7d06 */ { false, 0x7d06, 0x7d06 }, /* 0x7d07 */ { false, 0x7d07, 0x7d07 }, /* 0x7d08 */ { false, 0x7d08, 0x7d08 }, /* 0x7d09 */ { false, 0x7d09, 0x7d09 }, /* 0x7d0a */ { false, 0x7d0a, 0x7d0a }, /* 0x7d0b */ { false, 0x7d0b, 0x7d0b }, /* 0x7d0c */ { false, 0x7d0c, 0x7d0c }, /* 0x7d0d */ { false, 0x7d0d, 0x7d0d }, /* 0x7d0e */ { false, 0x7d0e, 0x7d0e }, /* 0x7d0f */ { false, 0x7d0f, 0x7d0f }, /* 0x7d10 */ { false, 0x7d10, 0x7d10 }, /* 0x7d11 */ { false, 0x7d11, 0x7d11 }, /* 0x7d12 */ { false, 0x7d12, 0x7d12 }, /* 0x7d13 */ { false, 0x7d13, 0x7d13 }, /* 0x7d14 */ { false, 0x7d14, 0x7d14 }, /* 0x7d15 */ { false, 0x7d15, 0x7d15 }, /* 0x7d16 */ { false, 0x7d16, 0x7d16 }, /* 0x7d17 */ { false, 0x7d17, 0x7d17 }, /* 0x7d18 */ { false, 0x7d18, 0x7d18 }, /* 0x7d19 */ { false, 0x7d19, 0x7d19 }, /* 0x7d1a */ { false, 0x7d1a, 0x7d1a }, /* 0x7d1b */ { false, 0x7d1b, 0x7d1b }, /* 0x7d1c */ { false, 0x7d1c, 0x7d1c }, /* 0x7d1d */ { false, 0x7d1d, 0x7d1d }, /* 0x7d1e */ { false, 0x7d1e, 0x7d1e }, /* 0x7d1f */ { false, 0x7d1f, 0x7d1f }, /* 0x7d20 */ { false, 0x7d20, 0x7d20 }, /* 0x7d21 */ { false, 0x7d21, 0x7d21 }, /* 0x7d22 */ { false, 0x7d22, 0x7d22 }, /* 0x7d23 */ { false, 0x7d23, 0x7d23 }, /* 0x7d24 */ { false, 0x7d24, 0x7d24 }, /* 0x7d25 */ { false, 0x7d25, 0x7d25 }, /* 0x7d26 */ { false, 0x7d26, 0x7d26 }, /* 0x7d27 */ { false, 0x7d27, 0x7d27 }, /* 0x7d28 */ { false, 0x7d28, 0x7d28 }, /* 0x7d29 */ { false, 0x7d29, 0x7d29 }, /* 0x7d2a */ { false, 0x7d2a, 0x7d2a }, /* 0x7d2b */ { false, 0x7d2b, 0x7d2b }, /* 0x7d2c */ { false, 0x7d2c, 0x7d2c }, /* 0x7d2d */ { false, 0x7d2d, 0x7d2d }, /* 0x7d2e */ { false, 0x7d2e, 0x7d2e }, /* 0x7d2f */ { false, 0x7d2f, 0x7d2f }, /* 0x7d30 */ { false, 0x7d30, 0x7d30 }, /* 0x7d31 */ { false, 0x7d31, 0x7d31 }, /* 0x7d32 */ { false, 0x7d32, 0x7d32 }, /* 0x7d33 */ { false, 0x7d33, 0x7d33 }, /* 0x7d34 */ { false, 0x7d34, 0x7d34 }, /* 0x7d35 */ { false, 0x7d35, 0x7d35 }, /* 0x7d36 */ { false, 0x7d36, 0x7d36 }, /* 0x7d37 */ { false, 0x7d37, 0x7d37 }, /* 0x7d38 */ { false, 0x7d38, 0x7d38 }, /* 0x7d39 */ { false, 0x7d39, 0x7d39 }, /* 0x7d3a */ { false, 0x7d3a, 0x7d3a }, /* 0x7d3b */ { false, 0x7d3b, 0x7d3b }, /* 0x7d3c */ { false, 0x7d3c, 0x7d3c }, /* 0x7d3d */ { false, 0x7d3d, 0x7d3d }, /* 0x7d3e */ { false, 0x7d3e, 0x7d3e }, /* 0x7d3f */ { false, 0x7d3f, 0x7d3f }, /* 0x7d40 */ { false, 0x7d40, 0x7d40 }, /* 0x7d41 */ { false, 0x7d41, 0x7d41 }, /* 0x7d42 */ { false, 0x7d42, 0x7d42 }, /* 0x7d43 */ { false, 0x7d43, 0x7d43 }, /* 0x7d44 */ { false, 0x7d44, 0x7d44 }, /* 0x7d45 */ { false, 0x7d45, 0x7d45 }, /* 0x7d46 */ { false, 0x7d46, 0x7d46 }, /* 0x7d47 */ { false, 0x7d47, 0x7d47 }, /* 0x7d48 */ { false, 0x7d48, 0x7d48 }, /* 0x7d49 */ { false, 0x7d49, 0x7d49 }, /* 0x7d4a */ { false, 0x7d4a, 0x7d4a }, /* 0x7d4b */ { false, 0x7d4b, 0x7d4b }, /* 0x7d4c */ { false, 0x7d4c, 0x7d4c }, /* 0x7d4d */ { false, 0x7d4d, 0x7d4d }, /* 0x7d4e */ { false, 0x7d4e, 0x7d4e }, /* 0x7d4f */ { false, 0x7d4f, 0x7d4f }, /* 0x7d50 */ { false, 0x7d50, 0x7d50 }, /* 0x7d51 */ { false, 0x7d51, 0x7d51 }, /* 0x7d52 */ { false, 0x7d52, 0x7d52 }, /* 0x7d53 */ { false, 0x7d53, 0x7d53 }, /* 0x7d54 */ { false, 0x7d54, 0x7d54 }, /* 0x7d55 */ { false, 0x7d55, 0x7d55 }, /* 0x7d56 */ { false, 0x7d56, 0x7d56 }, /* 0x7d57 */ { false, 0x7d57, 0x7d57 }, /* 0x7d58 */ { false, 0x7d58, 0x7d58 }, /* 0x7d59 */ { false, 0x7d59, 0x7d59 }, /* 0x7d5a */ { false, 0x7d5a, 0x7d5a }, /* 0x7d5b */ { false, 0x7d5b, 0x7d5b }, /* 0x7d5c */ { false, 0x7d5c, 0x7d5c }, /* 0x7d5d */ { false, 0x7d5d, 0x7d5d }, /* 0x7d5e */ { false, 0x7d5e, 0x7d5e }, /* 0x7d5f */ { false, 0x7d5f, 0x7d5f }, /* 0x7d60 */ { false, 0x7d60, 0x7d60 }, /* 0x7d61 */ { false, 0x7d61, 0x7d61 }, /* 0x7d62 */ { false, 0x7d62, 0x7d62 }, /* 0x7d63 */ { false, 0x7d63, 0x7d63 }, /* 0x7d64 */ { false, 0x7d64, 0x7d64 }, /* 0x7d65 */ { false, 0x7d65, 0x7d65 }, /* 0x7d66 */ { false, 0x7d66, 0x7d66 }, /* 0x7d67 */ { false, 0x7d67, 0x7d67 }, /* 0x7d68 */ { false, 0x7d68, 0x7d68 }, /* 0x7d69 */ { false, 0x7d69, 0x7d69 }, /* 0x7d6a */ { false, 0x7d6a, 0x7d6a }, /* 0x7d6b */ { false, 0x7d6b, 0x7d6b }, /* 0x7d6c */ { false, 0x7d6c, 0x7d6c }, /* 0x7d6d */ { false, 0x7d6d, 0x7d6d }, /* 0x7d6e */ { false, 0x7d6e, 0x7d6e }, /* 0x7d6f */ { false, 0x7d6f, 0x7d6f }, /* 0x7d70 */ { false, 0x7d70, 0x7d70 }, /* 0x7d71 */ { false, 0x7d71, 0x7d71 }, /* 0x7d72 */ { false, 0x7d72, 0x7d72 }, /* 0x7d73 */ { false, 0x7d73, 0x7d73 }, /* 0x7d74 */ { false, 0x7d74, 0x7d74 }, /* 0x7d75 */ { false, 0x7d75, 0x7d75 }, /* 0x7d76 */ { false, 0x7d76, 0x7d76 }, /* 0x7d77 */ { false, 0x7d77, 0x7d77 }, /* 0x7d78 */ { false, 0x7d78, 0x7d78 }, /* 0x7d79 */ { false, 0x7d79, 0x7d79 }, /* 0x7d7a */ { false, 0x7d7a, 0x7d7a }, /* 0x7d7b */ { false, 0x7d7b, 0x7d7b }, /* 0x7d7c */ { false, 0x7d7c, 0x7d7c }, /* 0x7d7d */ { false, 0x7d7d, 0x7d7d }, /* 0x7d7e */ { false, 0x7d7e, 0x7d7e }, /* 0x7d7f */ { false, 0x7d7f, 0x7d7f }, /* 0x7d80 */ { false, 0x7d80, 0x7d80 }, /* 0x7d81 */ { false, 0x7d81, 0x7d81 }, /* 0x7d82 */ { false, 0x7d82, 0x7d82 }, /* 0x7d83 */ { false, 0x7d83, 0x7d83 }, /* 0x7d84 */ { false, 0x7d84, 0x7d84 }, /* 0x7d85 */ { false, 0x7d85, 0x7d85 }, /* 0x7d86 */ { false, 0x7d86, 0x7d86 }, /* 0x7d87 */ { false, 0x7d87, 0x7d87 }, /* 0x7d88 */ { false, 0x7d88, 0x7d88 }, /* 0x7d89 */ { false, 0x7d89, 0x7d89 }, /* 0x7d8a */ { false, 0x7d8a, 0x7d8a }, /* 0x7d8b */ { false, 0x7d8b, 0x7d8b }, /* 0x7d8c */ { false, 0x7d8c, 0x7d8c }, /* 0x7d8d */ { false, 0x7d8d, 0x7d8d }, /* 0x7d8e */ { false, 0x7d8e, 0x7d8e }, /* 0x7d8f */ { false, 0x7d8f, 0x7d8f }, /* 0x7d90 */ { false, 0x7d90, 0x7d90 }, /* 0x7d91 */ { false, 0x7d91, 0x7d91 }, /* 0x7d92 */ { false, 0x7d92, 0x7d92 }, /* 0x7d93 */ { false, 0x7d93, 0x7d93 }, /* 0x7d94 */ { false, 0x7d94, 0x7d94 }, /* 0x7d95 */ { false, 0x7d95, 0x7d95 }, /* 0x7d96 */ { false, 0x7d96, 0x7d96 }, /* 0x7d97 */ { false, 0x7d97, 0x7d97 }, /* 0x7d98 */ { false, 0x7d98, 0x7d98 }, /* 0x7d99 */ { false, 0x7d99, 0x7d99 }, /* 0x7d9a */ { false, 0x7d9a, 0x7d9a }, /* 0x7d9b */ { false, 0x7d9b, 0x7d9b }, /* 0x7d9c */ { false, 0x7d9c, 0x7d9c }, /* 0x7d9d */ { false, 0x7d9d, 0x7d9d }, /* 0x7d9e */ { false, 0x7d9e, 0x7d9e }, /* 0x7d9f */ { false, 0x7d9f, 0x7d9f }, /* 0x7da0 */ { false, 0x7da0, 0x7da0 }, /* 0x7da1 */ { false, 0x7da1, 0x7da1 }, /* 0x7da2 */ { false, 0x7da2, 0x7da2 }, /* 0x7da3 */ { false, 0x7da3, 0x7da3 }, /* 0x7da4 */ { false, 0x7da4, 0x7da4 }, /* 0x7da5 */ { false, 0x7da5, 0x7da5 }, /* 0x7da6 */ { false, 0x7da6, 0x7da6 }, /* 0x7da7 */ { false, 0x7da7, 0x7da7 }, /* 0x7da8 */ { false, 0x7da8, 0x7da8 }, /* 0x7da9 */ { false, 0x7da9, 0x7da9 }, /* 0x7daa */ { false, 0x7daa, 0x7daa }, /* 0x7dab */ { false, 0x7dab, 0x7dab }, /* 0x7dac */ { false, 0x7dac, 0x7dac }, /* 0x7dad */ { false, 0x7dad, 0x7dad }, /* 0x7dae */ { false, 0x7dae, 0x7dae }, /* 0x7daf */ { false, 0x7daf, 0x7daf }, /* 0x7db0 */ { false, 0x7db0, 0x7db0 }, /* 0x7db1 */ { false, 0x7db1, 0x7db1 }, /* 0x7db2 */ { false, 0x7db2, 0x7db2 }, /* 0x7db3 */ { false, 0x7db3, 0x7db3 }, /* 0x7db4 */ { false, 0x7db4, 0x7db4 }, /* 0x7db5 */ { false, 0x7db5, 0x7db5 }, /* 0x7db6 */ { false, 0x7db6, 0x7db6 }, /* 0x7db7 */ { false, 0x7db7, 0x7db7 }, /* 0x7db8 */ { false, 0x7db8, 0x7db8 }, /* 0x7db9 */ { false, 0x7db9, 0x7db9 }, /* 0x7dba */ { false, 0x7dba, 0x7dba }, /* 0x7dbb */ { false, 0x7dbb, 0x7dbb }, /* 0x7dbc */ { false, 0x7dbc, 0x7dbc }, /* 0x7dbd */ { false, 0x7dbd, 0x7dbd }, /* 0x7dbe */ { false, 0x7dbe, 0x7dbe }, /* 0x7dbf */ { false, 0x7dbf, 0x7dbf }, /* 0x7dc0 */ { false, 0x7dc0, 0x7dc0 }, /* 0x7dc1 */ { false, 0x7dc1, 0x7dc1 }, /* 0x7dc2 */ { false, 0x7dc2, 0x7dc2 }, /* 0x7dc3 */ { false, 0x7dc3, 0x7dc3 }, /* 0x7dc4 */ { false, 0x7dc4, 0x7dc4 }, /* 0x7dc5 */ { false, 0x7dc5, 0x7dc5 }, /* 0x7dc6 */ { false, 0x7dc6, 0x7dc6 }, /* 0x7dc7 */ { false, 0x7dc7, 0x7dc7 }, /* 0x7dc8 */ { false, 0x7dc8, 0x7dc8 }, /* 0x7dc9 */ { false, 0x7dc9, 0x7dc9 }, /* 0x7dca */ { false, 0x7dca, 0x7dca }, /* 0x7dcb */ { false, 0x7dcb, 0x7dcb }, /* 0x7dcc */ { false, 0x7dcc, 0x7dcc }, /* 0x7dcd */ { false, 0x7dcd, 0x7dcd }, /* 0x7dce */ { false, 0x7dce, 0x7dce }, /* 0x7dcf */ { false, 0x7dcf, 0x7dcf }, /* 0x7dd0 */ { false, 0x7dd0, 0x7dd0 }, /* 0x7dd1 */ { false, 0x7dd1, 0x7dd1 }, /* 0x7dd2 */ { false, 0x7dd2, 0x7dd2 }, /* 0x7dd3 */ { false, 0x7dd3, 0x7dd3 }, /* 0x7dd4 */ { false, 0x7dd4, 0x7dd4 }, /* 0x7dd5 */ { false, 0x7dd5, 0x7dd5 }, /* 0x7dd6 */ { false, 0x7dd6, 0x7dd6 }, /* 0x7dd7 */ { false, 0x7dd7, 0x7dd7 }, /* 0x7dd8 */ { false, 0x7dd8, 0x7dd8 }, /* 0x7dd9 */ { false, 0x7dd9, 0x7dd9 }, /* 0x7dda */ { false, 0x7dda, 0x7dda }, /* 0x7ddb */ { false, 0x7ddb, 0x7ddb }, /* 0x7ddc */ { false, 0x7ddc, 0x7ddc }, /* 0x7ddd */ { false, 0x7ddd, 0x7ddd }, /* 0x7dde */ { false, 0x7dde, 0x7dde }, /* 0x7ddf */ { false, 0x7ddf, 0x7ddf }, /* 0x7de0 */ { false, 0x7de0, 0x7de0 }, /* 0x7de1 */ { false, 0x7de1, 0x7de1 }, /* 0x7de2 */ { false, 0x7de2, 0x7de2 }, /* 0x7de3 */ { false, 0x7de3, 0x7de3 }, /* 0x7de4 */ { false, 0x7de4, 0x7de4 }, /* 0x7de5 */ { false, 0x7de5, 0x7de5 }, /* 0x7de6 */ { false, 0x7de6, 0x7de6 }, /* 0x7de7 */ { false, 0x7de7, 0x7de7 }, /* 0x7de8 */ { false, 0x7de8, 0x7de8 }, /* 0x7de9 */ { false, 0x7de9, 0x7de9 }, /* 0x7dea */ { false, 0x7dea, 0x7dea }, /* 0x7deb */ { false, 0x7deb, 0x7deb }, /* 0x7dec */ { false, 0x7dec, 0x7dec }, /* 0x7ded */ { false, 0x7ded, 0x7ded }, /* 0x7dee */ { false, 0x7dee, 0x7dee }, /* 0x7def */ { false, 0x7def, 0x7def }, /* 0x7df0 */ { false, 0x7df0, 0x7df0 }, /* 0x7df1 */ { false, 0x7df1, 0x7df1 }, /* 0x7df2 */ { false, 0x7df2, 0x7df2 }, /* 0x7df3 */ { false, 0x7df3, 0x7df3 }, /* 0x7df4 */ { false, 0x7df4, 0x7df4 }, /* 0x7df5 */ { false, 0x7df5, 0x7df5 }, /* 0x7df6 */ { false, 0x7df6, 0x7df6 }, /* 0x7df7 */ { false, 0x7df7, 0x7df7 }, /* 0x7df8 */ { false, 0x7df8, 0x7df8 }, /* 0x7df9 */ { false, 0x7df9, 0x7df9 }, /* 0x7dfa */ { false, 0x7dfa, 0x7dfa }, /* 0x7dfb */ { false, 0x7dfb, 0x7dfb }, /* 0x7dfc */ { false, 0x7dfc, 0x7dfc }, /* 0x7dfd */ { false, 0x7dfd, 0x7dfd }, /* 0x7dfe */ { false, 0x7dfe, 0x7dfe }, /* 0x7dff */ { false, 0x7dff, 0x7dff }, /* 0x7e00 */ { false, 0x7e00, 0x7e00 }, /* 0x7e01 */ { false, 0x7e01, 0x7e01 }, /* 0x7e02 */ { false, 0x7e02, 0x7e02 }, /* 0x7e03 */ { false, 0x7e03, 0x7e03 }, /* 0x7e04 */ { false, 0x7e04, 0x7e04 }, /* 0x7e05 */ { false, 0x7e05, 0x7e05 }, /* 0x7e06 */ { false, 0x7e06, 0x7e06 }, /* 0x7e07 */ { false, 0x7e07, 0x7e07 }, /* 0x7e08 */ { false, 0x7e08, 0x7e08 }, /* 0x7e09 */ { false, 0x7e09, 0x7e09 }, /* 0x7e0a */ { false, 0x7e0a, 0x7e0a }, /* 0x7e0b */ { false, 0x7e0b, 0x7e0b }, /* 0x7e0c */ { false, 0x7e0c, 0x7e0c }, /* 0x7e0d */ { false, 0x7e0d, 0x7e0d }, /* 0x7e0e */ { false, 0x7e0e, 0x7e0e }, /* 0x7e0f */ { false, 0x7e0f, 0x7e0f }, /* 0x7e10 */ { false, 0x7e10, 0x7e10 }, /* 0x7e11 */ { false, 0x7e11, 0x7e11 }, /* 0x7e12 */ { false, 0x7e12, 0x7e12 }, /* 0x7e13 */ { false, 0x7e13, 0x7e13 }, /* 0x7e14 */ { false, 0x7e14, 0x7e14 }, /* 0x7e15 */ { false, 0x7e15, 0x7e15 }, /* 0x7e16 */ { false, 0x7e16, 0x7e16 }, /* 0x7e17 */ { false, 0x7e17, 0x7e17 }, /* 0x7e18 */ { false, 0x7e18, 0x7e18 }, /* 0x7e19 */ { false, 0x7e19, 0x7e19 }, /* 0x7e1a */ { false, 0x7e1a, 0x7e1a }, /* 0x7e1b */ { false, 0x7e1b, 0x7e1b }, /* 0x7e1c */ { false, 0x7e1c, 0x7e1c }, /* 0x7e1d */ { false, 0x7e1d, 0x7e1d }, /* 0x7e1e */ { false, 0x7e1e, 0x7e1e }, /* 0x7e1f */ { false, 0x7e1f, 0x7e1f }, /* 0x7e20 */ { false, 0x7e20, 0x7e20 }, /* 0x7e21 */ { false, 0x7e21, 0x7e21 }, /* 0x7e22 */ { false, 0x7e22, 0x7e22 }, /* 0x7e23 */ { false, 0x7e23, 0x7e23 }, /* 0x7e24 */ { false, 0x7e24, 0x7e24 }, /* 0x7e25 */ { false, 0x7e25, 0x7e25 }, /* 0x7e26 */ { false, 0x7e26, 0x7e26 }, /* 0x7e27 */ { false, 0x7e27, 0x7e27 }, /* 0x7e28 */ { false, 0x7e28, 0x7e28 }, /* 0x7e29 */ { false, 0x7e29, 0x7e29 }, /* 0x7e2a */ { false, 0x7e2a, 0x7e2a }, /* 0x7e2b */ { false, 0x7e2b, 0x7e2b }, /* 0x7e2c */ { false, 0x7e2c, 0x7e2c }, /* 0x7e2d */ { false, 0x7e2d, 0x7e2d }, /* 0x7e2e */ { false, 0x7e2e, 0x7e2e }, /* 0x7e2f */ { false, 0x7e2f, 0x7e2f }, /* 0x7e30 */ { false, 0x7e30, 0x7e30 }, /* 0x7e31 */ { false, 0x7e31, 0x7e31 }, /* 0x7e32 */ { false, 0x7e32, 0x7e32 }, /* 0x7e33 */ { false, 0x7e33, 0x7e33 }, /* 0x7e34 */ { false, 0x7e34, 0x7e34 }, /* 0x7e35 */ { false, 0x7e35, 0x7e35 }, /* 0x7e36 */ { false, 0x7e36, 0x7e36 }, /* 0x7e37 */ { false, 0x7e37, 0x7e37 }, /* 0x7e38 */ { false, 0x7e38, 0x7e38 }, /* 0x7e39 */ { false, 0x7e39, 0x7e39 }, /* 0x7e3a */ { false, 0x7e3a, 0x7e3a }, /* 0x7e3b */ { false, 0x7e3b, 0x7e3b }, /* 0x7e3c */ { false, 0x7e3c, 0x7e3c }, /* 0x7e3d */ { false, 0x7e3d, 0x7e3d }, /* 0x7e3e */ { false, 0x7e3e, 0x7e3e }, /* 0x7e3f */ { false, 0x7e3f, 0x7e3f }, /* 0x7e40 */ { false, 0x7e40, 0x7e40 }, /* 0x7e41 */ { false, 0x7e41, 0x7e41 }, /* 0x7e42 */ { false, 0x7e42, 0x7e42 }, /* 0x7e43 */ { false, 0x7e43, 0x7e43 }, /* 0x7e44 */ { false, 0x7e44, 0x7e44 }, /* 0x7e45 */ { false, 0x7e45, 0x7e45 }, /* 0x7e46 */ { false, 0x7e46, 0x7e46 }, /* 0x7e47 */ { false, 0x7e47, 0x7e47 }, /* 0x7e48 */ { false, 0x7e48, 0x7e48 }, /* 0x7e49 */ { false, 0x7e49, 0x7e49 }, /* 0x7e4a */ { false, 0x7e4a, 0x7e4a }, /* 0x7e4b */ { false, 0x7e4b, 0x7e4b }, /* 0x7e4c */ { false, 0x7e4c, 0x7e4c }, /* 0x7e4d */ { false, 0x7e4d, 0x7e4d }, /* 0x7e4e */ { false, 0x7e4e, 0x7e4e }, /* 0x7e4f */ { false, 0x7e4f, 0x7e4f }, /* 0x7e50 */ { false, 0x7e50, 0x7e50 }, /* 0x7e51 */ { false, 0x7e51, 0x7e51 }, /* 0x7e52 */ { false, 0x7e52, 0x7e52 }, /* 0x7e53 */ { false, 0x7e53, 0x7e53 }, /* 0x7e54 */ { false, 0x7e54, 0x7e54 }, /* 0x7e55 */ { false, 0x7e55, 0x7e55 }, /* 0x7e56 */ { false, 0x7e56, 0x7e56 }, /* 0x7e57 */ { false, 0x7e57, 0x7e57 }, /* 0x7e58 */ { false, 0x7e58, 0x7e58 }, /* 0x7e59 */ { false, 0x7e59, 0x7e59 }, /* 0x7e5a */ { false, 0x7e5a, 0x7e5a }, /* 0x7e5b */ { false, 0x7e5b, 0x7e5b }, /* 0x7e5c */ { false, 0x7e5c, 0x7e5c }, /* 0x7e5d */ { false, 0x7e5d, 0x7e5d }, /* 0x7e5e */ { false, 0x7e5e, 0x7e5e }, /* 0x7e5f */ { false, 0x7e5f, 0x7e5f }, /* 0x7e60 */ { false, 0x7e60, 0x7e60 }, /* 0x7e61 */ { false, 0x7e61, 0x7e61 }, /* 0x7e62 */ { false, 0x7e62, 0x7e62 }, /* 0x7e63 */ { false, 0x7e63, 0x7e63 }, /* 0x7e64 */ { false, 0x7e64, 0x7e64 }, /* 0x7e65 */ { false, 0x7e65, 0x7e65 }, /* 0x7e66 */ { false, 0x7e66, 0x7e66 }, /* 0x7e67 */ { false, 0x7e67, 0x7e67 }, /* 0x7e68 */ { false, 0x7e68, 0x7e68 }, /* 0x7e69 */ { false, 0x7e69, 0x7e69 }, /* 0x7e6a */ { false, 0x7e6a, 0x7e6a }, /* 0x7e6b */ { false, 0x7e6b, 0x7e6b }, /* 0x7e6c */ { false, 0x7e6c, 0x7e6c }, /* 0x7e6d */ { false, 0x7e6d, 0x7e6d }, /* 0x7e6e */ { false, 0x7e6e, 0x7e6e }, /* 0x7e6f */ { false, 0x7e6f, 0x7e6f }, /* 0x7e70 */ { false, 0x7e70, 0x7e70 }, /* 0x7e71 */ { false, 0x7e71, 0x7e71 }, /* 0x7e72 */ { false, 0x7e72, 0x7e72 }, /* 0x7e73 */ { false, 0x7e73, 0x7e73 }, /* 0x7e74 */ { false, 0x7e74, 0x7e74 }, /* 0x7e75 */ { false, 0x7e75, 0x7e75 }, /* 0x7e76 */ { false, 0x7e76, 0x7e76 }, /* 0x7e77 */ { false, 0x7e77, 0x7e77 }, /* 0x7e78 */ { false, 0x7e78, 0x7e78 }, /* 0x7e79 */ { false, 0x7e79, 0x7e79 }, /* 0x7e7a */ { false, 0x7e7a, 0x7e7a }, /* 0x7e7b */ { false, 0x7e7b, 0x7e7b }, /* 0x7e7c */ { false, 0x7e7c, 0x7e7c }, /* 0x7e7d */ { false, 0x7e7d, 0x7e7d }, /* 0x7e7e */ { false, 0x7e7e, 0x7e7e }, /* 0x7e7f */ { false, 0x7e7f, 0x7e7f }, /* 0x7e80 */ { false, 0x7e80, 0x7e80 }, /* 0x7e81 */ { false, 0x7e81, 0x7e81 }, /* 0x7e82 */ { false, 0x7e82, 0x7e82 }, /* 0x7e83 */ { false, 0x7e83, 0x7e83 }, /* 0x7e84 */ { false, 0x7e84, 0x7e84 }, /* 0x7e85 */ { false, 0x7e85, 0x7e85 }, /* 0x7e86 */ { false, 0x7e86, 0x7e86 }, /* 0x7e87 */ { false, 0x7e87, 0x7e87 }, /* 0x7e88 */ { false, 0x7e88, 0x7e88 }, /* 0x7e89 */ { false, 0x7e89, 0x7e89 }, /* 0x7e8a */ { false, 0x7e8a, 0x7e8a }, /* 0x7e8b */ { false, 0x7e8b, 0x7e8b }, /* 0x7e8c */ { false, 0x7e8c, 0x7e8c }, /* 0x7e8d */ { false, 0x7e8d, 0x7e8d }, /* 0x7e8e */ { false, 0x7e8e, 0x7e8e }, /* 0x7e8f */ { false, 0x7e8f, 0x7e8f }, /* 0x7e90 */ { false, 0x7e90, 0x7e90 }, /* 0x7e91 */ { false, 0x7e91, 0x7e91 }, /* 0x7e92 */ { false, 0x7e92, 0x7e92 }, /* 0x7e93 */ { false, 0x7e93, 0x7e93 }, /* 0x7e94 */ { false, 0x7e94, 0x7e94 }, /* 0x7e95 */ { false, 0x7e95, 0x7e95 }, /* 0x7e96 */ { false, 0x7e96, 0x7e96 }, /* 0x7e97 */ { false, 0x7e97, 0x7e97 }, /* 0x7e98 */ { false, 0x7e98, 0x7e98 }, /* 0x7e99 */ { false, 0x7e99, 0x7e99 }, /* 0x7e9a */ { false, 0x7e9a, 0x7e9a }, /* 0x7e9b */ { false, 0x7e9b, 0x7e9b }, /* 0x7e9c */ { false, 0x7e9c, 0x7e9c }, /* 0x7e9d */ { false, 0x7e9d, 0x7e9d }, /* 0x7e9e */ { false, 0x7e9e, 0x7e9e }, /* 0x7e9f */ { false, 0x7e9f, 0x7e9f }, /* 0x7ea0 */ { false, 0x7ea0, 0x7ea0 }, /* 0x7ea1 */ { false, 0x7ea1, 0x7ea1 }, /* 0x7ea2 */ { false, 0x7ea2, 0x7ea2 }, /* 0x7ea3 */ { false, 0x7ea3, 0x7ea3 }, /* 0x7ea4 */ { false, 0x7ea4, 0x7ea4 }, /* 0x7ea5 */ { false, 0x7ea5, 0x7ea5 }, /* 0x7ea6 */ { false, 0x7ea6, 0x7ea6 }, /* 0x7ea7 */ { false, 0x7ea7, 0x7ea7 }, /* 0x7ea8 */ { false, 0x7ea8, 0x7ea8 }, /* 0x7ea9 */ { false, 0x7ea9, 0x7ea9 }, /* 0x7eaa */ { false, 0x7eaa, 0x7eaa }, /* 0x7eab */ { false, 0x7eab, 0x7eab }, /* 0x7eac */ { false, 0x7eac, 0x7eac }, /* 0x7ead */ { false, 0x7ead, 0x7ead }, /* 0x7eae */ { false, 0x7eae, 0x7eae }, /* 0x7eaf */ { false, 0x7eaf, 0x7eaf }, /* 0x7eb0 */ { false, 0x7eb0, 0x7eb0 }, /* 0x7eb1 */ { false, 0x7eb1, 0x7eb1 }, /* 0x7eb2 */ { false, 0x7eb2, 0x7eb2 }, /* 0x7eb3 */ { false, 0x7eb3, 0x7eb3 }, /* 0x7eb4 */ { false, 0x7eb4, 0x7eb4 }, /* 0x7eb5 */ { false, 0x7eb5, 0x7eb5 }, /* 0x7eb6 */ { false, 0x7eb6, 0x7eb6 }, /* 0x7eb7 */ { false, 0x7eb7, 0x7eb7 }, /* 0x7eb8 */ { false, 0x7eb8, 0x7eb8 }, /* 0x7eb9 */ { false, 0x7eb9, 0x7eb9 }, /* 0x7eba */ { false, 0x7eba, 0x7eba }, /* 0x7ebb */ { false, 0x7ebb, 0x7ebb }, /* 0x7ebc */ { false, 0x7ebc, 0x7ebc }, /* 0x7ebd */ { false, 0x7ebd, 0x7ebd }, /* 0x7ebe */ { false, 0x7ebe, 0x7ebe }, /* 0x7ebf */ { false, 0x7ebf, 0x7ebf }, /* 0x7ec0 */ { false, 0x7ec0, 0x7ec0 }, /* 0x7ec1 */ { false, 0x7ec1, 0x7ec1 }, /* 0x7ec2 */ { false, 0x7ec2, 0x7ec2 }, /* 0x7ec3 */ { false, 0x7ec3, 0x7ec3 }, /* 0x7ec4 */ { false, 0x7ec4, 0x7ec4 }, /* 0x7ec5 */ { false, 0x7ec5, 0x7ec5 }, /* 0x7ec6 */ { false, 0x7ec6, 0x7ec6 }, /* 0x7ec7 */ { false, 0x7ec7, 0x7ec7 }, /* 0x7ec8 */ { false, 0x7ec8, 0x7ec8 }, /* 0x7ec9 */ { false, 0x7ec9, 0x7ec9 }, /* 0x7eca */ { false, 0x7eca, 0x7eca }, /* 0x7ecb */ { false, 0x7ecb, 0x7ecb }, /* 0x7ecc */ { false, 0x7ecc, 0x7ecc }, /* 0x7ecd */ { false, 0x7ecd, 0x7ecd }, /* 0x7ece */ { false, 0x7ece, 0x7ece }, /* 0x7ecf */ { false, 0x7ecf, 0x7ecf }, /* 0x7ed0 */ { false, 0x7ed0, 0x7ed0 }, /* 0x7ed1 */ { false, 0x7ed1, 0x7ed1 }, /* 0x7ed2 */ { false, 0x7ed2, 0x7ed2 }, /* 0x7ed3 */ { false, 0x7ed3, 0x7ed3 }, /* 0x7ed4 */ { false, 0x7ed4, 0x7ed4 }, /* 0x7ed5 */ { false, 0x7ed5, 0x7ed5 }, /* 0x7ed6 */ { false, 0x7ed6, 0x7ed6 }, /* 0x7ed7 */ { false, 0x7ed7, 0x7ed7 }, /* 0x7ed8 */ { false, 0x7ed8, 0x7ed8 }, /* 0x7ed9 */ { false, 0x7ed9, 0x7ed9 }, /* 0x7eda */ { false, 0x7eda, 0x7eda }, /* 0x7edb */ { false, 0x7edb, 0x7edb }, /* 0x7edc */ { false, 0x7edc, 0x7edc }, /* 0x7edd */ { false, 0x7edd, 0x7edd }, /* 0x7ede */ { false, 0x7ede, 0x7ede }, /* 0x7edf */ { false, 0x7edf, 0x7edf }, /* 0x7ee0 */ { false, 0x7ee0, 0x7ee0 }, /* 0x7ee1 */ { false, 0x7ee1, 0x7ee1 }, /* 0x7ee2 */ { false, 0x7ee2, 0x7ee2 }, /* 0x7ee3 */ { false, 0x7ee3, 0x7ee3 }, /* 0x7ee4 */ { false, 0x7ee4, 0x7ee4 }, /* 0x7ee5 */ { false, 0x7ee5, 0x7ee5 }, /* 0x7ee6 */ { false, 0x7ee6, 0x7ee6 }, /* 0x7ee7 */ { false, 0x7ee7, 0x7ee7 }, /* 0x7ee8 */ { false, 0x7ee8, 0x7ee8 }, /* 0x7ee9 */ { false, 0x7ee9, 0x7ee9 }, /* 0x7eea */ { false, 0x7eea, 0x7eea }, /* 0x7eeb */ { false, 0x7eeb, 0x7eeb }, /* 0x7eec */ { false, 0x7eec, 0x7eec }, /* 0x7eed */ { false, 0x7eed, 0x7eed }, /* 0x7eee */ { false, 0x7eee, 0x7eee }, /* 0x7eef */ { false, 0x7eef, 0x7eef }, /* 0x7ef0 */ { false, 0x7ef0, 0x7ef0 }, /* 0x7ef1 */ { false, 0x7ef1, 0x7ef1 }, /* 0x7ef2 */ { false, 0x7ef2, 0x7ef2 }, /* 0x7ef3 */ { false, 0x7ef3, 0x7ef3 }, /* 0x7ef4 */ { false, 0x7ef4, 0x7ef4 }, /* 0x7ef5 */ { false, 0x7ef5, 0x7ef5 }, /* 0x7ef6 */ { false, 0x7ef6, 0x7ef6 }, /* 0x7ef7 */ { false, 0x7ef7, 0x7ef7 }, /* 0x7ef8 */ { false, 0x7ef8, 0x7ef8 }, /* 0x7ef9 */ { false, 0x7ef9, 0x7ef9 }, /* 0x7efa */ { false, 0x7efa, 0x7efa }, /* 0x7efb */ { false, 0x7efb, 0x7efb }, /* 0x7efc */ { false, 0x7efc, 0x7efc }, /* 0x7efd */ { false, 0x7efd, 0x7efd }, /* 0x7efe */ { false, 0x7efe, 0x7efe }, /* 0x7eff */ { false, 0x7eff, 0x7eff }, /* 0x7f00 */ { false, 0x7f00, 0x7f00 }, /* 0x7f01 */ { false, 0x7f01, 0x7f01 }, /* 0x7f02 */ { false, 0x7f02, 0x7f02 }, /* 0x7f03 */ { false, 0x7f03, 0x7f03 }, /* 0x7f04 */ { false, 0x7f04, 0x7f04 }, /* 0x7f05 */ { false, 0x7f05, 0x7f05 }, /* 0x7f06 */ { false, 0x7f06, 0x7f06 }, /* 0x7f07 */ { false, 0x7f07, 0x7f07 }, /* 0x7f08 */ { false, 0x7f08, 0x7f08 }, /* 0x7f09 */ { false, 0x7f09, 0x7f09 }, /* 0x7f0a */ { false, 0x7f0a, 0x7f0a }, /* 0x7f0b */ { false, 0x7f0b, 0x7f0b }, /* 0x7f0c */ { false, 0x7f0c, 0x7f0c }, /* 0x7f0d */ { false, 0x7f0d, 0x7f0d }, /* 0x7f0e */ { false, 0x7f0e, 0x7f0e }, /* 0x7f0f */ { false, 0x7f0f, 0x7f0f }, /* 0x7f10 */ { false, 0x7f10, 0x7f10 }, /* 0x7f11 */ { false, 0x7f11, 0x7f11 }, /* 0x7f12 */ { false, 0x7f12, 0x7f12 }, /* 0x7f13 */ { false, 0x7f13, 0x7f13 }, /* 0x7f14 */ { false, 0x7f14, 0x7f14 }, /* 0x7f15 */ { false, 0x7f15, 0x7f15 }, /* 0x7f16 */ { false, 0x7f16, 0x7f16 }, /* 0x7f17 */ { false, 0x7f17, 0x7f17 }, /* 0x7f18 */ { false, 0x7f18, 0x7f18 }, /* 0x7f19 */ { false, 0x7f19, 0x7f19 }, /* 0x7f1a */ { false, 0x7f1a, 0x7f1a }, /* 0x7f1b */ { false, 0x7f1b, 0x7f1b }, /* 0x7f1c */ { false, 0x7f1c, 0x7f1c }, /* 0x7f1d */ { false, 0x7f1d, 0x7f1d }, /* 0x7f1e */ { false, 0x7f1e, 0x7f1e }, /* 0x7f1f */ { false, 0x7f1f, 0x7f1f }, /* 0x7f20 */ { false, 0x7f20, 0x7f20 }, /* 0x7f21 */ { false, 0x7f21, 0x7f21 }, /* 0x7f22 */ { false, 0x7f22, 0x7f22 }, /* 0x7f23 */ { false, 0x7f23, 0x7f23 }, /* 0x7f24 */ { false, 0x7f24, 0x7f24 }, /* 0x7f25 */ { false, 0x7f25, 0x7f25 }, /* 0x7f26 */ { false, 0x7f26, 0x7f26 }, /* 0x7f27 */ { false, 0x7f27, 0x7f27 }, /* 0x7f28 */ { false, 0x7f28, 0x7f28 }, /* 0x7f29 */ { false, 0x7f29, 0x7f29 }, /* 0x7f2a */ { false, 0x7f2a, 0x7f2a }, /* 0x7f2b */ { false, 0x7f2b, 0x7f2b }, /* 0x7f2c */ { false, 0x7f2c, 0x7f2c }, /* 0x7f2d */ { false, 0x7f2d, 0x7f2d }, /* 0x7f2e */ { false, 0x7f2e, 0x7f2e }, /* 0x7f2f */ { false, 0x7f2f, 0x7f2f }, /* 0x7f30 */ { false, 0x7f30, 0x7f30 }, /* 0x7f31 */ { false, 0x7f31, 0x7f31 }, /* 0x7f32 */ { false, 0x7f32, 0x7f32 }, /* 0x7f33 */ { false, 0x7f33, 0x7f33 }, /* 0x7f34 */ { false, 0x7f34, 0x7f34 }, /* 0x7f35 */ { false, 0x7f35, 0x7f35 }, /* 0x7f36 */ { false, 0x7f36, 0x7f36 }, /* 0x7f37 */ { false, 0x7f37, 0x7f37 }, /* 0x7f38 */ { false, 0x7f38, 0x7f38 }, /* 0x7f39 */ { false, 0x7f39, 0x7f39 }, /* 0x7f3a */ { false, 0x7f3a, 0x7f3a }, /* 0x7f3b */ { false, 0x7f3b, 0x7f3b }, /* 0x7f3c */ { false, 0x7f3c, 0x7f3c }, /* 0x7f3d */ { false, 0x7f3d, 0x7f3d }, /* 0x7f3e */ { false, 0x7f3e, 0x7f3e }, /* 0x7f3f */ { false, 0x7f3f, 0x7f3f }, /* 0x7f40 */ { false, 0x7f40, 0x7f40 }, /* 0x7f41 */ { false, 0x7f41, 0x7f41 }, /* 0x7f42 */ { false, 0x7f42, 0x7f42 }, /* 0x7f43 */ { false, 0x7f43, 0x7f43 }, /* 0x7f44 */ { false, 0x7f44, 0x7f44 }, /* 0x7f45 */ { false, 0x7f45, 0x7f45 }, /* 0x7f46 */ { false, 0x7f46, 0x7f46 }, /* 0x7f47 */ { false, 0x7f47, 0x7f47 }, /* 0x7f48 */ { false, 0x7f48, 0x7f48 }, /* 0x7f49 */ { false, 0x7f49, 0x7f49 }, /* 0x7f4a */ { false, 0x7f4a, 0x7f4a }, /* 0x7f4b */ { false, 0x7f4b, 0x7f4b }, /* 0x7f4c */ { false, 0x7f4c, 0x7f4c }, /* 0x7f4d */ { false, 0x7f4d, 0x7f4d }, /* 0x7f4e */ { false, 0x7f4e, 0x7f4e }, /* 0x7f4f */ { false, 0x7f4f, 0x7f4f }, /* 0x7f50 */ { false, 0x7f50, 0x7f50 }, /* 0x7f51 */ { false, 0x7f51, 0x7f51 }, /* 0x7f52 */ { false, 0x7f52, 0x7f52 }, /* 0x7f53 */ { false, 0x7f53, 0x7f53 }, /* 0x7f54 */ { false, 0x7f54, 0x7f54 }, /* 0x7f55 */ { false, 0x7f55, 0x7f55 }, /* 0x7f56 */ { false, 0x7f56, 0x7f56 }, /* 0x7f57 */ { false, 0x7f57, 0x7f57 }, /* 0x7f58 */ { false, 0x7f58, 0x7f58 }, /* 0x7f59 */ { false, 0x7f59, 0x7f59 }, /* 0x7f5a */ { false, 0x7f5a, 0x7f5a }, /* 0x7f5b */ { false, 0x7f5b, 0x7f5b }, /* 0x7f5c */ { false, 0x7f5c, 0x7f5c }, /* 0x7f5d */ { false, 0x7f5d, 0x7f5d }, /* 0x7f5e */ { false, 0x7f5e, 0x7f5e }, /* 0x7f5f */ { false, 0x7f5f, 0x7f5f }, /* 0x7f60 */ { false, 0x7f60, 0x7f60 }, /* 0x7f61 */ { false, 0x7f61, 0x7f61 }, /* 0x7f62 */ { false, 0x7f62, 0x7f62 }, /* 0x7f63 */ { false, 0x7f63, 0x7f63 }, /* 0x7f64 */ { false, 0x7f64, 0x7f64 }, /* 0x7f65 */ { false, 0x7f65, 0x7f65 }, /* 0x7f66 */ { false, 0x7f66, 0x7f66 }, /* 0x7f67 */ { false, 0x7f67, 0x7f67 }, /* 0x7f68 */ { false, 0x7f68, 0x7f68 }, /* 0x7f69 */ { false, 0x7f69, 0x7f69 }, /* 0x7f6a */ { false, 0x7f6a, 0x7f6a }, /* 0x7f6b */ { false, 0x7f6b, 0x7f6b }, /* 0x7f6c */ { false, 0x7f6c, 0x7f6c }, /* 0x7f6d */ { false, 0x7f6d, 0x7f6d }, /* 0x7f6e */ { false, 0x7f6e, 0x7f6e }, /* 0x7f6f */ { false, 0x7f6f, 0x7f6f }, /* 0x7f70 */ { false, 0x7f70, 0x7f70 }, /* 0x7f71 */ { false, 0x7f71, 0x7f71 }, /* 0x7f72 */ { false, 0x7f72, 0x7f72 }, /* 0x7f73 */ { false, 0x7f73, 0x7f73 }, /* 0x7f74 */ { false, 0x7f74, 0x7f74 }, /* 0x7f75 */ { false, 0x7f75, 0x7f75 }, /* 0x7f76 */ { false, 0x7f76, 0x7f76 }, /* 0x7f77 */ { false, 0x7f77, 0x7f77 }, /* 0x7f78 */ { false, 0x7f78, 0x7f78 }, /* 0x7f79 */ { false, 0x7f79, 0x7f79 }, /* 0x7f7a */ { false, 0x7f7a, 0x7f7a }, /* 0x7f7b */ { false, 0x7f7b, 0x7f7b }, /* 0x7f7c */ { false, 0x7f7c, 0x7f7c }, /* 0x7f7d */ { false, 0x7f7d, 0x7f7d }, /* 0x7f7e */ { false, 0x7f7e, 0x7f7e }, /* 0x7f7f */ { false, 0x7f7f, 0x7f7f }, /* 0x7f80 */ { false, 0x7f80, 0x7f80 }, /* 0x7f81 */ { false, 0x7f81, 0x7f81 }, /* 0x7f82 */ { false, 0x7f82, 0x7f82 }, /* 0x7f83 */ { false, 0x7f83, 0x7f83 }, /* 0x7f84 */ { false, 0x7f84, 0x7f84 }, /* 0x7f85 */ { false, 0x7f85, 0x7f85 }, /* 0x7f86 */ { false, 0x7f86, 0x7f86 }, /* 0x7f87 */ { false, 0x7f87, 0x7f87 }, /* 0x7f88 */ { false, 0x7f88, 0x7f88 }, /* 0x7f89 */ { false, 0x7f89, 0x7f89 }, /* 0x7f8a */ { false, 0x7f8a, 0x7f8a }, /* 0x7f8b */ { false, 0x7f8b, 0x7f8b }, /* 0x7f8c */ { false, 0x7f8c, 0x7f8c }, /* 0x7f8d */ { false, 0x7f8d, 0x7f8d }, /* 0x7f8e */ { false, 0x7f8e, 0x7f8e }, /* 0x7f8f */ { false, 0x7f8f, 0x7f8f }, /* 0x7f90 */ { false, 0x7f90, 0x7f90 }, /* 0x7f91 */ { false, 0x7f91, 0x7f91 }, /* 0x7f92 */ { false, 0x7f92, 0x7f92 }, /* 0x7f93 */ { false, 0x7f93, 0x7f93 }, /* 0x7f94 */ { false, 0x7f94, 0x7f94 }, /* 0x7f95 */ { false, 0x7f95, 0x7f95 }, /* 0x7f96 */ { false, 0x7f96, 0x7f96 }, /* 0x7f97 */ { false, 0x7f97, 0x7f97 }, /* 0x7f98 */ { false, 0x7f98, 0x7f98 }, /* 0x7f99 */ { false, 0x7f99, 0x7f99 }, /* 0x7f9a */ { false, 0x7f9a, 0x7f9a }, /* 0x7f9b */ { false, 0x7f9b, 0x7f9b }, /* 0x7f9c */ { false, 0x7f9c, 0x7f9c }, /* 0x7f9d */ { false, 0x7f9d, 0x7f9d }, /* 0x7f9e */ { false, 0x7f9e, 0x7f9e }, /* 0x7f9f */ { false, 0x7f9f, 0x7f9f }, /* 0x7fa0 */ { false, 0x7fa0, 0x7fa0 }, /* 0x7fa1 */ { false, 0x7fa1, 0x7fa1 }, /* 0x7fa2 */ { false, 0x7fa2, 0x7fa2 }, /* 0x7fa3 */ { false, 0x7fa3, 0x7fa3 }, /* 0x7fa4 */ { false, 0x7fa4, 0x7fa4 }, /* 0x7fa5 */ { false, 0x7fa5, 0x7fa5 }, /* 0x7fa6 */ { false, 0x7fa6, 0x7fa6 }, /* 0x7fa7 */ { false, 0x7fa7, 0x7fa7 }, /* 0x7fa8 */ { false, 0x7fa8, 0x7fa8 }, /* 0x7fa9 */ { false, 0x7fa9, 0x7fa9 }, /* 0x7faa */ { false, 0x7faa, 0x7faa }, /* 0x7fab */ { false, 0x7fab, 0x7fab }, /* 0x7fac */ { false, 0x7fac, 0x7fac }, /* 0x7fad */ { false, 0x7fad, 0x7fad }, /* 0x7fae */ { false, 0x7fae, 0x7fae }, /* 0x7faf */ { false, 0x7faf, 0x7faf }, /* 0x7fb0 */ { false, 0x7fb0, 0x7fb0 }, /* 0x7fb1 */ { false, 0x7fb1, 0x7fb1 }, /* 0x7fb2 */ { false, 0x7fb2, 0x7fb2 }, /* 0x7fb3 */ { false, 0x7fb3, 0x7fb3 }, /* 0x7fb4 */ { false, 0x7fb4, 0x7fb4 }, /* 0x7fb5 */ { false, 0x7fb5, 0x7fb5 }, /* 0x7fb6 */ { false, 0x7fb6, 0x7fb6 }, /* 0x7fb7 */ { false, 0x7fb7, 0x7fb7 }, /* 0x7fb8 */ { false, 0x7fb8, 0x7fb8 }, /* 0x7fb9 */ { false, 0x7fb9, 0x7fb9 }, /* 0x7fba */ { false, 0x7fba, 0x7fba }, /* 0x7fbb */ { false, 0x7fbb, 0x7fbb }, /* 0x7fbc */ { false, 0x7fbc, 0x7fbc }, /* 0x7fbd */ { false, 0x7fbd, 0x7fbd }, /* 0x7fbe */ { false, 0x7fbe, 0x7fbe }, /* 0x7fbf */ { false, 0x7fbf, 0x7fbf }, /* 0x7fc0 */ { false, 0x7fc0, 0x7fc0 }, /* 0x7fc1 */ { false, 0x7fc1, 0x7fc1 }, /* 0x7fc2 */ { false, 0x7fc2, 0x7fc2 }, /* 0x7fc3 */ { false, 0x7fc3, 0x7fc3 }, /* 0x7fc4 */ { false, 0x7fc4, 0x7fc4 }, /* 0x7fc5 */ { false, 0x7fc5, 0x7fc5 }, /* 0x7fc6 */ { false, 0x7fc6, 0x7fc6 }, /* 0x7fc7 */ { false, 0x7fc7, 0x7fc7 }, /* 0x7fc8 */ { false, 0x7fc8, 0x7fc8 }, /* 0x7fc9 */ { false, 0x7fc9, 0x7fc9 }, /* 0x7fca */ { false, 0x7fca, 0x7fca }, /* 0x7fcb */ { false, 0x7fcb, 0x7fcb }, /* 0x7fcc */ { false, 0x7fcc, 0x7fcc }, /* 0x7fcd */ { false, 0x7fcd, 0x7fcd }, /* 0x7fce */ { false, 0x7fce, 0x7fce }, /* 0x7fcf */ { false, 0x7fcf, 0x7fcf }, /* 0x7fd0 */ { false, 0x7fd0, 0x7fd0 }, /* 0x7fd1 */ { false, 0x7fd1, 0x7fd1 }, /* 0x7fd2 */ { false, 0x7fd2, 0x7fd2 }, /* 0x7fd3 */ { false, 0x7fd3, 0x7fd3 }, /* 0x7fd4 */ { false, 0x7fd4, 0x7fd4 }, /* 0x7fd5 */ { false, 0x7fd5, 0x7fd5 }, /* 0x7fd6 */ { false, 0x7fd6, 0x7fd6 }, /* 0x7fd7 */ { false, 0x7fd7, 0x7fd7 }, /* 0x7fd8 */ { false, 0x7fd8, 0x7fd8 }, /* 0x7fd9 */ { false, 0x7fd9, 0x7fd9 }, /* 0x7fda */ { false, 0x7fda, 0x7fda }, /* 0x7fdb */ { false, 0x7fdb, 0x7fdb }, /* 0x7fdc */ { false, 0x7fdc, 0x7fdc }, /* 0x7fdd */ { false, 0x7fdd, 0x7fdd }, /* 0x7fde */ { false, 0x7fde, 0x7fde }, /* 0x7fdf */ { false, 0x7fdf, 0x7fdf }, /* 0x7fe0 */ { false, 0x7fe0, 0x7fe0 }, /* 0x7fe1 */ { false, 0x7fe1, 0x7fe1 }, /* 0x7fe2 */ { false, 0x7fe2, 0x7fe2 }, /* 0x7fe3 */ { false, 0x7fe3, 0x7fe3 }, /* 0x7fe4 */ { false, 0x7fe4, 0x7fe4 }, /* 0x7fe5 */ { false, 0x7fe5, 0x7fe5 }, /* 0x7fe6 */ { false, 0x7fe6, 0x7fe6 }, /* 0x7fe7 */ { false, 0x7fe7, 0x7fe7 }, /* 0x7fe8 */ { false, 0x7fe8, 0x7fe8 }, /* 0x7fe9 */ { false, 0x7fe9, 0x7fe9 }, /* 0x7fea */ { false, 0x7fea, 0x7fea }, /* 0x7feb */ { false, 0x7feb, 0x7feb }, /* 0x7fec */ { false, 0x7fec, 0x7fec }, /* 0x7fed */ { false, 0x7fed, 0x7fed }, /* 0x7fee */ { false, 0x7fee, 0x7fee }, /* 0x7fef */ { false, 0x7fef, 0x7fef }, /* 0x7ff0 */ { false, 0x7ff0, 0x7ff0 }, /* 0x7ff1 */ { false, 0x7ff1, 0x7ff1 }, /* 0x7ff2 */ { false, 0x7ff2, 0x7ff2 }, /* 0x7ff3 */ { false, 0x7ff3, 0x7ff3 }, /* 0x7ff4 */ { false, 0x7ff4, 0x7ff4 }, /* 0x7ff5 */ { false, 0x7ff5, 0x7ff5 }, /* 0x7ff6 */ { false, 0x7ff6, 0x7ff6 }, /* 0x7ff7 */ { false, 0x7ff7, 0x7ff7 }, /* 0x7ff8 */ { false, 0x7ff8, 0x7ff8 }, /* 0x7ff9 */ { false, 0x7ff9, 0x7ff9 }, /* 0x7ffa */ { false, 0x7ffa, 0x7ffa }, /* 0x7ffb */ { false, 0x7ffb, 0x7ffb }, /* 0x7ffc */ { false, 0x7ffc, 0x7ffc }, /* 0x7ffd */ { false, 0x7ffd, 0x7ffd }, /* 0x7ffe */ { false, 0x7ffe, 0x7ffe }, /* 0x7fff */ { false, 0x7fff, 0x7fff }, /* 0x8000 */ { false, 0x8000, 0x8000 }, /* 0x8001 */ { false, 0x8001, 0x8001 }, /* 0x8002 */ { false, 0x8002, 0x8002 }, /* 0x8003 */ { false, 0x8003, 0x8003 }, /* 0x8004 */ { false, 0x8004, 0x8004 }, /* 0x8005 */ { false, 0x8005, 0x8005 }, /* 0x8006 */ { false, 0x8006, 0x8006 }, /* 0x8007 */ { false, 0x8007, 0x8007 }, /* 0x8008 */ { false, 0x8008, 0x8008 }, /* 0x8009 */ { false, 0x8009, 0x8009 }, /* 0x800a */ { false, 0x800a, 0x800a }, /* 0x800b */ { false, 0x800b, 0x800b }, /* 0x800c */ { false, 0x800c, 0x800c }, /* 0x800d */ { false, 0x800d, 0x800d }, /* 0x800e */ { false, 0x800e, 0x800e }, /* 0x800f */ { false, 0x800f, 0x800f }, /* 0x8010 */ { false, 0x8010, 0x8010 }, /* 0x8011 */ { false, 0x8011, 0x8011 }, /* 0x8012 */ { false, 0x8012, 0x8012 }, /* 0x8013 */ { false, 0x8013, 0x8013 }, /* 0x8014 */ { false, 0x8014, 0x8014 }, /* 0x8015 */ { false, 0x8015, 0x8015 }, /* 0x8016 */ { false, 0x8016, 0x8016 }, /* 0x8017 */ { false, 0x8017, 0x8017 }, /* 0x8018 */ { false, 0x8018, 0x8018 }, /* 0x8019 */ { false, 0x8019, 0x8019 }, /* 0x801a */ { false, 0x801a, 0x801a }, /* 0x801b */ { false, 0x801b, 0x801b }, /* 0x801c */ { false, 0x801c, 0x801c }, /* 0x801d */ { false, 0x801d, 0x801d }, /* 0x801e */ { false, 0x801e, 0x801e }, /* 0x801f */ { false, 0x801f, 0x801f }, /* 0x8020 */ { false, 0x8020, 0x8020 }, /* 0x8021 */ { false, 0x8021, 0x8021 }, /* 0x8022 */ { false, 0x8022, 0x8022 }, /* 0x8023 */ { false, 0x8023, 0x8023 }, /* 0x8024 */ { false, 0x8024, 0x8024 }, /* 0x8025 */ { false, 0x8025, 0x8025 }, /* 0x8026 */ { false, 0x8026, 0x8026 }, /* 0x8027 */ { false, 0x8027, 0x8027 }, /* 0x8028 */ { false, 0x8028, 0x8028 }, /* 0x8029 */ { false, 0x8029, 0x8029 }, /* 0x802a */ { false, 0x802a, 0x802a }, /* 0x802b */ { false, 0x802b, 0x802b }, /* 0x802c */ { false, 0x802c, 0x802c }, /* 0x802d */ { false, 0x802d, 0x802d }, /* 0x802e */ { false, 0x802e, 0x802e }, /* 0x802f */ { false, 0x802f, 0x802f }, /* 0x8030 */ { false, 0x8030, 0x8030 }, /* 0x8031 */ { false, 0x8031, 0x8031 }, /* 0x8032 */ { false, 0x8032, 0x8032 }, /* 0x8033 */ { false, 0x8033, 0x8033 }, /* 0x8034 */ { false, 0x8034, 0x8034 }, /* 0x8035 */ { false, 0x8035, 0x8035 }, /* 0x8036 */ { false, 0x8036, 0x8036 }, /* 0x8037 */ { false, 0x8037, 0x8037 }, /* 0x8038 */ { false, 0x8038, 0x8038 }, /* 0x8039 */ { false, 0x8039, 0x8039 }, /* 0x803a */ { false, 0x803a, 0x803a }, /* 0x803b */ { false, 0x803b, 0x803b }, /* 0x803c */ { false, 0x803c, 0x803c }, /* 0x803d */ { false, 0x803d, 0x803d }, /* 0x803e */ { false, 0x803e, 0x803e }, /* 0x803f */ { false, 0x803f, 0x803f }, /* 0x8040 */ { false, 0x8040, 0x8040 }, /* 0x8041 */ { false, 0x8041, 0x8041 }, /* 0x8042 */ { false, 0x8042, 0x8042 }, /* 0x8043 */ { false, 0x8043, 0x8043 }, /* 0x8044 */ { false, 0x8044, 0x8044 }, /* 0x8045 */ { false, 0x8045, 0x8045 }, /* 0x8046 */ { false, 0x8046, 0x8046 }, /* 0x8047 */ { false, 0x8047, 0x8047 }, /* 0x8048 */ { false, 0x8048, 0x8048 }, /* 0x8049 */ { false, 0x8049, 0x8049 }, /* 0x804a */ { false, 0x804a, 0x804a }, /* 0x804b */ { false, 0x804b, 0x804b }, /* 0x804c */ { false, 0x804c, 0x804c }, /* 0x804d */ { false, 0x804d, 0x804d }, /* 0x804e */ { false, 0x804e, 0x804e }, /* 0x804f */ { false, 0x804f, 0x804f }, /* 0x8050 */ { false, 0x8050, 0x8050 }, /* 0x8051 */ { false, 0x8051, 0x8051 }, /* 0x8052 */ { false, 0x8052, 0x8052 }, /* 0x8053 */ { false, 0x8053, 0x8053 }, /* 0x8054 */ { false, 0x8054, 0x8054 }, /* 0x8055 */ { false, 0x8055, 0x8055 }, /* 0x8056 */ { false, 0x8056, 0x8056 }, /* 0x8057 */ { false, 0x8057, 0x8057 }, /* 0x8058 */ { false, 0x8058, 0x8058 }, /* 0x8059 */ { false, 0x8059, 0x8059 }, /* 0x805a */ { false, 0x805a, 0x805a }, /* 0x805b */ { false, 0x805b, 0x805b }, /* 0x805c */ { false, 0x805c, 0x805c }, /* 0x805d */ { false, 0x805d, 0x805d }, /* 0x805e */ { false, 0x805e, 0x805e }, /* 0x805f */ { false, 0x805f, 0x805f }, /* 0x8060 */ { false, 0x8060, 0x8060 }, /* 0x8061 */ { false, 0x8061, 0x8061 }, /* 0x8062 */ { false, 0x8062, 0x8062 }, /* 0x8063 */ { false, 0x8063, 0x8063 }, /* 0x8064 */ { false, 0x8064, 0x8064 }, /* 0x8065 */ { false, 0x8065, 0x8065 }, /* 0x8066 */ { false, 0x8066, 0x8066 }, /* 0x8067 */ { false, 0x8067, 0x8067 }, /* 0x8068 */ { false, 0x8068, 0x8068 }, /* 0x8069 */ { false, 0x8069, 0x8069 }, /* 0x806a */ { false, 0x806a, 0x806a }, /* 0x806b */ { false, 0x806b, 0x806b }, /* 0x806c */ { false, 0x806c, 0x806c }, /* 0x806d */ { false, 0x806d, 0x806d }, /* 0x806e */ { false, 0x806e, 0x806e }, /* 0x806f */ { false, 0x806f, 0x806f }, /* 0x8070 */ { false, 0x8070, 0x8070 }, /* 0x8071 */ { false, 0x8071, 0x8071 }, /* 0x8072 */ { false, 0x8072, 0x8072 }, /* 0x8073 */ { false, 0x8073, 0x8073 }, /* 0x8074 */ { false, 0x8074, 0x8074 }, /* 0x8075 */ { false, 0x8075, 0x8075 }, /* 0x8076 */ { false, 0x8076, 0x8076 }, /* 0x8077 */ { false, 0x8077, 0x8077 }, /* 0x8078 */ { false, 0x8078, 0x8078 }, /* 0x8079 */ { false, 0x8079, 0x8079 }, /* 0x807a */ { false, 0x807a, 0x807a }, /* 0x807b */ { false, 0x807b, 0x807b }, /* 0x807c */ { false, 0x807c, 0x807c }, /* 0x807d */ { false, 0x807d, 0x807d }, /* 0x807e */ { false, 0x807e, 0x807e }, /* 0x807f */ { false, 0x807f, 0x807f }, /* 0x8080 */ { false, 0x8080, 0x8080 }, /* 0x8081 */ { false, 0x8081, 0x8081 }, /* 0x8082 */ { false, 0x8082, 0x8082 }, /* 0x8083 */ { false, 0x8083, 0x8083 }, /* 0x8084 */ { false, 0x8084, 0x8084 }, /* 0x8085 */ { false, 0x8085, 0x8085 }, /* 0x8086 */ { false, 0x8086, 0x8086 }, /* 0x8087 */ { false, 0x8087, 0x8087 }, /* 0x8088 */ { false, 0x8088, 0x8088 }, /* 0x8089 */ { false, 0x8089, 0x8089 }, /* 0x808a */ { false, 0x808a, 0x808a }, /* 0x808b */ { false, 0x808b, 0x808b }, /* 0x808c */ { false, 0x808c, 0x808c }, /* 0x808d */ { false, 0x808d, 0x808d }, /* 0x808e */ { false, 0x808e, 0x808e }, /* 0x808f */ { false, 0x808f, 0x808f }, /* 0x8090 */ { false, 0x8090, 0x8090 }, /* 0x8091 */ { false, 0x8091, 0x8091 }, /* 0x8092 */ { false, 0x8092, 0x8092 }, /* 0x8093 */ { false, 0x8093, 0x8093 }, /* 0x8094 */ { false, 0x8094, 0x8094 }, /* 0x8095 */ { false, 0x8095, 0x8095 }, /* 0x8096 */ { false, 0x8096, 0x8096 }, /* 0x8097 */ { false, 0x8097, 0x8097 }, /* 0x8098 */ { false, 0x8098, 0x8098 }, /* 0x8099 */ { false, 0x8099, 0x8099 }, /* 0x809a */ { false, 0x809a, 0x809a }, /* 0x809b */ { false, 0x809b, 0x809b }, /* 0x809c */ { false, 0x809c, 0x809c }, /* 0x809d */ { false, 0x809d, 0x809d }, /* 0x809e */ { false, 0x809e, 0x809e }, /* 0x809f */ { false, 0x809f, 0x809f }, /* 0x80a0 */ { false, 0x80a0, 0x80a0 }, /* 0x80a1 */ { false, 0x80a1, 0x80a1 }, /* 0x80a2 */ { false, 0x80a2, 0x80a2 }, /* 0x80a3 */ { false, 0x80a3, 0x80a3 }, /* 0x80a4 */ { false, 0x80a4, 0x80a4 }, /* 0x80a5 */ { false, 0x80a5, 0x80a5 }, /* 0x80a6 */ { false, 0x80a6, 0x80a6 }, /* 0x80a7 */ { false, 0x80a7, 0x80a7 }, /* 0x80a8 */ { false, 0x80a8, 0x80a8 }, /* 0x80a9 */ { false, 0x80a9, 0x80a9 }, /* 0x80aa */ { false, 0x80aa, 0x80aa }, /* 0x80ab */ { false, 0x80ab, 0x80ab }, /* 0x80ac */ { false, 0x80ac, 0x80ac }, /* 0x80ad */ { false, 0x80ad, 0x80ad }, /* 0x80ae */ { false, 0x80ae, 0x80ae }, /* 0x80af */ { false, 0x80af, 0x80af }, /* 0x80b0 */ { false, 0x80b0, 0x80b0 }, /* 0x80b1 */ { false, 0x80b1, 0x80b1 }, /* 0x80b2 */ { false, 0x80b2, 0x80b2 }, /* 0x80b3 */ { false, 0x80b3, 0x80b3 }, /* 0x80b4 */ { false, 0x80b4, 0x80b4 }, /* 0x80b5 */ { false, 0x80b5, 0x80b5 }, /* 0x80b6 */ { false, 0x80b6, 0x80b6 }, /* 0x80b7 */ { false, 0x80b7, 0x80b7 }, /* 0x80b8 */ { false, 0x80b8, 0x80b8 }, /* 0x80b9 */ { false, 0x80b9, 0x80b9 }, /* 0x80ba */ { false, 0x80ba, 0x80ba }, /* 0x80bb */ { false, 0x80bb, 0x80bb }, /* 0x80bc */ { false, 0x80bc, 0x80bc }, /* 0x80bd */ { false, 0x80bd, 0x80bd }, /* 0x80be */ { false, 0x80be, 0x80be }, /* 0x80bf */ { false, 0x80bf, 0x80bf }, /* 0x80c0 */ { false, 0x80c0, 0x80c0 }, /* 0x80c1 */ { false, 0x80c1, 0x80c1 }, /* 0x80c2 */ { false, 0x80c2, 0x80c2 }, /* 0x80c3 */ { false, 0x80c3, 0x80c3 }, /* 0x80c4 */ { false, 0x80c4, 0x80c4 }, /* 0x80c5 */ { false, 0x80c5, 0x80c5 }, /* 0x80c6 */ { false, 0x80c6, 0x80c6 }, /* 0x80c7 */ { false, 0x80c7, 0x80c7 }, /* 0x80c8 */ { false, 0x80c8, 0x80c8 }, /* 0x80c9 */ { false, 0x80c9, 0x80c9 }, /* 0x80ca */ { false, 0x80ca, 0x80ca }, /* 0x80cb */ { false, 0x80cb, 0x80cb }, /* 0x80cc */ { false, 0x80cc, 0x80cc }, /* 0x80cd */ { false, 0x80cd, 0x80cd }, /* 0x80ce */ { false, 0x80ce, 0x80ce }, /* 0x80cf */ { false, 0x80cf, 0x80cf }, /* 0x80d0 */ { false, 0x80d0, 0x80d0 }, /* 0x80d1 */ { false, 0x80d1, 0x80d1 }, /* 0x80d2 */ { false, 0x80d2, 0x80d2 }, /* 0x80d3 */ { false, 0x80d3, 0x80d3 }, /* 0x80d4 */ { false, 0x80d4, 0x80d4 }, /* 0x80d5 */ { false, 0x80d5, 0x80d5 }, /* 0x80d6 */ { false, 0x80d6, 0x80d6 }, /* 0x80d7 */ { false, 0x80d7, 0x80d7 }, /* 0x80d8 */ { false, 0x80d8, 0x80d8 }, /* 0x80d9 */ { false, 0x80d9, 0x80d9 }, /* 0x80da */ { false, 0x80da, 0x80da }, /* 0x80db */ { false, 0x80db, 0x80db }, /* 0x80dc */ { false, 0x80dc, 0x80dc }, /* 0x80dd */ { false, 0x80dd, 0x80dd }, /* 0x80de */ { false, 0x80de, 0x80de }, /* 0x80df */ { false, 0x80df, 0x80df }, /* 0x80e0 */ { false, 0x80e0, 0x80e0 }, /* 0x80e1 */ { false, 0x80e1, 0x80e1 }, /* 0x80e2 */ { false, 0x80e2, 0x80e2 }, /* 0x80e3 */ { false, 0x80e3, 0x80e3 }, /* 0x80e4 */ { false, 0x80e4, 0x80e4 }, /* 0x80e5 */ { false, 0x80e5, 0x80e5 }, /* 0x80e6 */ { false, 0x80e6, 0x80e6 }, /* 0x80e7 */ { false, 0x80e7, 0x80e7 }, /* 0x80e8 */ { false, 0x80e8, 0x80e8 }, /* 0x80e9 */ { false, 0x80e9, 0x80e9 }, /* 0x80ea */ { false, 0x80ea, 0x80ea }, /* 0x80eb */ { false, 0x80eb, 0x80eb }, /* 0x80ec */ { false, 0x80ec, 0x80ec }, /* 0x80ed */ { false, 0x80ed, 0x80ed }, /* 0x80ee */ { false, 0x80ee, 0x80ee }, /* 0x80ef */ { false, 0x80ef, 0x80ef }, /* 0x80f0 */ { false, 0x80f0, 0x80f0 }, /* 0x80f1 */ { false, 0x80f1, 0x80f1 }, /* 0x80f2 */ { false, 0x80f2, 0x80f2 }, /* 0x80f3 */ { false, 0x80f3, 0x80f3 }, /* 0x80f4 */ { false, 0x80f4, 0x80f4 }, /* 0x80f5 */ { false, 0x80f5, 0x80f5 }, /* 0x80f6 */ { false, 0x80f6, 0x80f6 }, /* 0x80f7 */ { false, 0x80f7, 0x80f7 }, /* 0x80f8 */ { false, 0x80f8, 0x80f8 }, /* 0x80f9 */ { false, 0x80f9, 0x80f9 }, /* 0x80fa */ { false, 0x80fa, 0x80fa }, /* 0x80fb */ { false, 0x80fb, 0x80fb }, /* 0x80fc */ { false, 0x80fc, 0x80fc }, /* 0x80fd */ { false, 0x80fd, 0x80fd }, /* 0x80fe */ { false, 0x80fe, 0x80fe }, /* 0x80ff */ { false, 0x80ff, 0x80ff }, /* 0x8100 */ { false, 0x8100, 0x8100 }, /* 0x8101 */ { false, 0x8101, 0x8101 }, /* 0x8102 */ { false, 0x8102, 0x8102 }, /* 0x8103 */ { false, 0x8103, 0x8103 }, /* 0x8104 */ { false, 0x8104, 0x8104 }, /* 0x8105 */ { false, 0x8105, 0x8105 }, /* 0x8106 */ { false, 0x8106, 0x8106 }, /* 0x8107 */ { false, 0x8107, 0x8107 }, /* 0x8108 */ { false, 0x8108, 0x8108 }, /* 0x8109 */ { false, 0x8109, 0x8109 }, /* 0x810a */ { false, 0x810a, 0x810a }, /* 0x810b */ { false, 0x810b, 0x810b }, /* 0x810c */ { false, 0x810c, 0x810c }, /* 0x810d */ { false, 0x810d, 0x810d }, /* 0x810e */ { false, 0x810e, 0x810e }, /* 0x810f */ { false, 0x810f, 0x810f }, /* 0x8110 */ { false, 0x8110, 0x8110 }, /* 0x8111 */ { false, 0x8111, 0x8111 }, /* 0x8112 */ { false, 0x8112, 0x8112 }, /* 0x8113 */ { false, 0x8113, 0x8113 }, /* 0x8114 */ { false, 0x8114, 0x8114 }, /* 0x8115 */ { false, 0x8115, 0x8115 }, /* 0x8116 */ { false, 0x8116, 0x8116 }, /* 0x8117 */ { false, 0x8117, 0x8117 }, /* 0x8118 */ { false, 0x8118, 0x8118 }, /* 0x8119 */ { false, 0x8119, 0x8119 }, /* 0x811a */ { false, 0x811a, 0x811a }, /* 0x811b */ { false, 0x811b, 0x811b }, /* 0x811c */ { false, 0x811c, 0x811c }, /* 0x811d */ { false, 0x811d, 0x811d }, /* 0x811e */ { false, 0x811e, 0x811e }, /* 0x811f */ { false, 0x811f, 0x811f }, /* 0x8120 */ { false, 0x8120, 0x8120 }, /* 0x8121 */ { false, 0x8121, 0x8121 }, /* 0x8122 */ { false, 0x8122, 0x8122 }, /* 0x8123 */ { false, 0x8123, 0x8123 }, /* 0x8124 */ { false, 0x8124, 0x8124 }, /* 0x8125 */ { false, 0x8125, 0x8125 }, /* 0x8126 */ { false, 0x8126, 0x8126 }, /* 0x8127 */ { false, 0x8127, 0x8127 }, /* 0x8128 */ { false, 0x8128, 0x8128 }, /* 0x8129 */ { false, 0x8129, 0x8129 }, /* 0x812a */ { false, 0x812a, 0x812a }, /* 0x812b */ { false, 0x812b, 0x812b }, /* 0x812c */ { false, 0x812c, 0x812c }, /* 0x812d */ { false, 0x812d, 0x812d }, /* 0x812e */ { false, 0x812e, 0x812e }, /* 0x812f */ { false, 0x812f, 0x812f }, /* 0x8130 */ { false, 0x8130, 0x8130 }, /* 0x8131 */ { false, 0x8131, 0x8131 }, /* 0x8132 */ { false, 0x8132, 0x8132 }, /* 0x8133 */ { false, 0x8133, 0x8133 }, /* 0x8134 */ { false, 0x8134, 0x8134 }, /* 0x8135 */ { false, 0x8135, 0x8135 }, /* 0x8136 */ { false, 0x8136, 0x8136 }, /* 0x8137 */ { false, 0x8137, 0x8137 }, /* 0x8138 */ { false, 0x8138, 0x8138 }, /* 0x8139 */ { false, 0x8139, 0x8139 }, /* 0x813a */ { false, 0x813a, 0x813a }, /* 0x813b */ { false, 0x813b, 0x813b }, /* 0x813c */ { false, 0x813c, 0x813c }, /* 0x813d */ { false, 0x813d, 0x813d }, /* 0x813e */ { false, 0x813e, 0x813e }, /* 0x813f */ { false, 0x813f, 0x813f }, /* 0x8140 */ { false, 0x8140, 0x8140 }, /* 0x8141 */ { false, 0x8141, 0x8141 }, /* 0x8142 */ { false, 0x8142, 0x8142 }, /* 0x8143 */ { false, 0x8143, 0x8143 }, /* 0x8144 */ { false, 0x8144, 0x8144 }, /* 0x8145 */ { false, 0x8145, 0x8145 }, /* 0x8146 */ { false, 0x8146, 0x8146 }, /* 0x8147 */ { false, 0x8147, 0x8147 }, /* 0x8148 */ { false, 0x8148, 0x8148 }, /* 0x8149 */ { false, 0x8149, 0x8149 }, /* 0x814a */ { false, 0x814a, 0x814a }, /* 0x814b */ { false, 0x814b, 0x814b }, /* 0x814c */ { false, 0x814c, 0x814c }, /* 0x814d */ { false, 0x814d, 0x814d }, /* 0x814e */ { false, 0x814e, 0x814e }, /* 0x814f */ { false, 0x814f, 0x814f }, /* 0x8150 */ { false, 0x8150, 0x8150 }, /* 0x8151 */ { false, 0x8151, 0x8151 }, /* 0x8152 */ { false, 0x8152, 0x8152 }, /* 0x8153 */ { false, 0x8153, 0x8153 }, /* 0x8154 */ { false, 0x8154, 0x8154 }, /* 0x8155 */ { false, 0x8155, 0x8155 }, /* 0x8156 */ { false, 0x8156, 0x8156 }, /* 0x8157 */ { false, 0x8157, 0x8157 }, /* 0x8158 */ { false, 0x8158, 0x8158 }, /* 0x8159 */ { false, 0x8159, 0x8159 }, /* 0x815a */ { false, 0x815a, 0x815a }, /* 0x815b */ { false, 0x815b, 0x815b }, /* 0x815c */ { false, 0x815c, 0x815c }, /* 0x815d */ { false, 0x815d, 0x815d }, /* 0x815e */ { false, 0x815e, 0x815e }, /* 0x815f */ { false, 0x815f, 0x815f }, /* 0x8160 */ { false, 0x8160, 0x8160 }, /* 0x8161 */ { false, 0x8161, 0x8161 }, /* 0x8162 */ { false, 0x8162, 0x8162 }, /* 0x8163 */ { false, 0x8163, 0x8163 }, /* 0x8164 */ { false, 0x8164, 0x8164 }, /* 0x8165 */ { false, 0x8165, 0x8165 }, /* 0x8166 */ { false, 0x8166, 0x8166 }, /* 0x8167 */ { false, 0x8167, 0x8167 }, /* 0x8168 */ { false, 0x8168, 0x8168 }, /* 0x8169 */ { false, 0x8169, 0x8169 }, /* 0x816a */ { false, 0x816a, 0x816a }, /* 0x816b */ { false, 0x816b, 0x816b }, /* 0x816c */ { false, 0x816c, 0x816c }, /* 0x816d */ { false, 0x816d, 0x816d }, /* 0x816e */ { false, 0x816e, 0x816e }, /* 0x816f */ { false, 0x816f, 0x816f }, /* 0x8170 */ { false, 0x8170, 0x8170 }, /* 0x8171 */ { false, 0x8171, 0x8171 }, /* 0x8172 */ { false, 0x8172, 0x8172 }, /* 0x8173 */ { false, 0x8173, 0x8173 }, /* 0x8174 */ { false, 0x8174, 0x8174 }, /* 0x8175 */ { false, 0x8175, 0x8175 }, /* 0x8176 */ { false, 0x8176, 0x8176 }, /* 0x8177 */ { false, 0x8177, 0x8177 }, /* 0x8178 */ { false, 0x8178, 0x8178 }, /* 0x8179 */ { false, 0x8179, 0x8179 }, /* 0x817a */ { false, 0x817a, 0x817a }, /* 0x817b */ { false, 0x817b, 0x817b }, /* 0x817c */ { false, 0x817c, 0x817c }, /* 0x817d */ { false, 0x817d, 0x817d }, /* 0x817e */ { false, 0x817e, 0x817e }, /* 0x817f */ { false, 0x817f, 0x817f }, /* 0x8180 */ { false, 0x8180, 0x8180 }, /* 0x8181 */ { false, 0x8181, 0x8181 }, /* 0x8182 */ { false, 0x8182, 0x8182 }, /* 0x8183 */ { false, 0x8183, 0x8183 }, /* 0x8184 */ { false, 0x8184, 0x8184 }, /* 0x8185 */ { false, 0x8185, 0x8185 }, /* 0x8186 */ { false, 0x8186, 0x8186 }, /* 0x8187 */ { false, 0x8187, 0x8187 }, /* 0x8188 */ { false, 0x8188, 0x8188 }, /* 0x8189 */ { false, 0x8189, 0x8189 }, /* 0x818a */ { false, 0x818a, 0x818a }, /* 0x818b */ { false, 0x818b, 0x818b }, /* 0x818c */ { false, 0x818c, 0x818c }, /* 0x818d */ { false, 0x818d, 0x818d }, /* 0x818e */ { false, 0x818e, 0x818e }, /* 0x818f */ { false, 0x818f, 0x818f }, /* 0x8190 */ { false, 0x8190, 0x8190 }, /* 0x8191 */ { false, 0x8191, 0x8191 }, /* 0x8192 */ { false, 0x8192, 0x8192 }, /* 0x8193 */ { false, 0x8193, 0x8193 }, /* 0x8194 */ { false, 0x8194, 0x8194 }, /* 0x8195 */ { false, 0x8195, 0x8195 }, /* 0x8196 */ { false, 0x8196, 0x8196 }, /* 0x8197 */ { false, 0x8197, 0x8197 }, /* 0x8198 */ { false, 0x8198, 0x8198 }, /* 0x8199 */ { false, 0x8199, 0x8199 }, /* 0x819a */ { false, 0x819a, 0x819a }, /* 0x819b */ { false, 0x819b, 0x819b }, /* 0x819c */ { false, 0x819c, 0x819c }, /* 0x819d */ { false, 0x819d, 0x819d }, /* 0x819e */ { false, 0x819e, 0x819e }, /* 0x819f */ { false, 0x819f, 0x819f }, /* 0x81a0 */ { false, 0x81a0, 0x81a0 }, /* 0x81a1 */ { false, 0x81a1, 0x81a1 }, /* 0x81a2 */ { false, 0x81a2, 0x81a2 }, /* 0x81a3 */ { false, 0x81a3, 0x81a3 }, /* 0x81a4 */ { false, 0x81a4, 0x81a4 }, /* 0x81a5 */ { false, 0x81a5, 0x81a5 }, /* 0x81a6 */ { false, 0x81a6, 0x81a6 }, /* 0x81a7 */ { false, 0x81a7, 0x81a7 }, /* 0x81a8 */ { false, 0x81a8, 0x81a8 }, /* 0x81a9 */ { false, 0x81a9, 0x81a9 }, /* 0x81aa */ { false, 0x81aa, 0x81aa }, /* 0x81ab */ { false, 0x81ab, 0x81ab }, /* 0x81ac */ { false, 0x81ac, 0x81ac }, /* 0x81ad */ { false, 0x81ad, 0x81ad }, /* 0x81ae */ { false, 0x81ae, 0x81ae }, /* 0x81af */ { false, 0x81af, 0x81af }, /* 0x81b0 */ { false, 0x81b0, 0x81b0 }, /* 0x81b1 */ { false, 0x81b1, 0x81b1 }, /* 0x81b2 */ { false, 0x81b2, 0x81b2 }, /* 0x81b3 */ { false, 0x81b3, 0x81b3 }, /* 0x81b4 */ { false, 0x81b4, 0x81b4 }, /* 0x81b5 */ { false, 0x81b5, 0x81b5 }, /* 0x81b6 */ { false, 0x81b6, 0x81b6 }, /* 0x81b7 */ { false, 0x81b7, 0x81b7 }, /* 0x81b8 */ { false, 0x81b8, 0x81b8 }, /* 0x81b9 */ { false, 0x81b9, 0x81b9 }, /* 0x81ba */ { false, 0x81ba, 0x81ba }, /* 0x81bb */ { false, 0x81bb, 0x81bb }, /* 0x81bc */ { false, 0x81bc, 0x81bc }, /* 0x81bd */ { false, 0x81bd, 0x81bd }, /* 0x81be */ { false, 0x81be, 0x81be }, /* 0x81bf */ { false, 0x81bf, 0x81bf }, /* 0x81c0 */ { false, 0x81c0, 0x81c0 }, /* 0x81c1 */ { false, 0x81c1, 0x81c1 }, /* 0x81c2 */ { false, 0x81c2, 0x81c2 }, /* 0x81c3 */ { false, 0x81c3, 0x81c3 }, /* 0x81c4 */ { false, 0x81c4, 0x81c4 }, /* 0x81c5 */ { false, 0x81c5, 0x81c5 }, /* 0x81c6 */ { false, 0x81c6, 0x81c6 }, /* 0x81c7 */ { false, 0x81c7, 0x81c7 }, /* 0x81c8 */ { false, 0x81c8, 0x81c8 }, /* 0x81c9 */ { false, 0x81c9, 0x81c9 }, /* 0x81ca */ { false, 0x81ca, 0x81ca }, /* 0x81cb */ { false, 0x81cb, 0x81cb }, /* 0x81cc */ { false, 0x81cc, 0x81cc }, /* 0x81cd */ { false, 0x81cd, 0x81cd }, /* 0x81ce */ { false, 0x81ce, 0x81ce }, /* 0x81cf */ { false, 0x81cf, 0x81cf }, /* 0x81d0 */ { false, 0x81d0, 0x81d0 }, /* 0x81d1 */ { false, 0x81d1, 0x81d1 }, /* 0x81d2 */ { false, 0x81d2, 0x81d2 }, /* 0x81d3 */ { false, 0x81d3, 0x81d3 }, /* 0x81d4 */ { false, 0x81d4, 0x81d4 }, /* 0x81d5 */ { false, 0x81d5, 0x81d5 }, /* 0x81d6 */ { false, 0x81d6, 0x81d6 }, /* 0x81d7 */ { false, 0x81d7, 0x81d7 }, /* 0x81d8 */ { false, 0x81d8, 0x81d8 }, /* 0x81d9 */ { false, 0x81d9, 0x81d9 }, /* 0x81da */ { false, 0x81da, 0x81da }, /* 0x81db */ { false, 0x81db, 0x81db }, /* 0x81dc */ { false, 0x81dc, 0x81dc }, /* 0x81dd */ { false, 0x81dd, 0x81dd }, /* 0x81de */ { false, 0x81de, 0x81de }, /* 0x81df */ { false, 0x81df, 0x81df }, /* 0x81e0 */ { false, 0x81e0, 0x81e0 }, /* 0x81e1 */ { false, 0x81e1, 0x81e1 }, /* 0x81e2 */ { false, 0x81e2, 0x81e2 }, /* 0x81e3 */ { false, 0x81e3, 0x81e3 }, /* 0x81e4 */ { false, 0x81e4, 0x81e4 }, /* 0x81e5 */ { false, 0x81e5, 0x81e5 }, /* 0x81e6 */ { false, 0x81e6, 0x81e6 }, /* 0x81e7 */ { false, 0x81e7, 0x81e7 }, /* 0x81e8 */ { false, 0x81e8, 0x81e8 }, /* 0x81e9 */ { false, 0x81e9, 0x81e9 }, /* 0x81ea */ { false, 0x81ea, 0x81ea }, /* 0x81eb */ { false, 0x81eb, 0x81eb }, /* 0x81ec */ { false, 0x81ec, 0x81ec }, /* 0x81ed */ { false, 0x81ed, 0x81ed }, /* 0x81ee */ { false, 0x81ee, 0x81ee }, /* 0x81ef */ { false, 0x81ef, 0x81ef }, /* 0x81f0 */ { false, 0x81f0, 0x81f0 }, /* 0x81f1 */ { false, 0x81f1, 0x81f1 }, /* 0x81f2 */ { false, 0x81f2, 0x81f2 }, /* 0x81f3 */ { false, 0x81f3, 0x81f3 }, /* 0x81f4 */ { false, 0x81f4, 0x81f4 }, /* 0x81f5 */ { false, 0x81f5, 0x81f5 }, /* 0x81f6 */ { false, 0x81f6, 0x81f6 }, /* 0x81f7 */ { false, 0x81f7, 0x81f7 }, /* 0x81f8 */ { false, 0x81f8, 0x81f8 }, /* 0x81f9 */ { false, 0x81f9, 0x81f9 }, /* 0x81fa */ { false, 0x81fa, 0x81fa }, /* 0x81fb */ { false, 0x81fb, 0x81fb }, /* 0x81fc */ { false, 0x81fc, 0x81fc }, /* 0x81fd */ { false, 0x81fd, 0x81fd }, /* 0x81fe */ { false, 0x81fe, 0x81fe }, /* 0x81ff */ { false, 0x81ff, 0x81ff }, /* 0x8200 */ { false, 0x8200, 0x8200 }, /* 0x8201 */ { false, 0x8201, 0x8201 }, /* 0x8202 */ { false, 0x8202, 0x8202 }, /* 0x8203 */ { false, 0x8203, 0x8203 }, /* 0x8204 */ { false, 0x8204, 0x8204 }, /* 0x8205 */ { false, 0x8205, 0x8205 }, /* 0x8206 */ { false, 0x8206, 0x8206 }, /* 0x8207 */ { false, 0x8207, 0x8207 }, /* 0x8208 */ { false, 0x8208, 0x8208 }, /* 0x8209 */ { false, 0x8209, 0x8209 }, /* 0x820a */ { false, 0x820a, 0x820a }, /* 0x820b */ { false, 0x820b, 0x820b }, /* 0x820c */ { false, 0x820c, 0x820c }, /* 0x820d */ { false, 0x820d, 0x820d }, /* 0x820e */ { false, 0x820e, 0x820e }, /* 0x820f */ { false, 0x820f, 0x820f }, /* 0x8210 */ { false, 0x8210, 0x8210 }, /* 0x8211 */ { false, 0x8211, 0x8211 }, /* 0x8212 */ { false, 0x8212, 0x8212 }, /* 0x8213 */ { false, 0x8213, 0x8213 }, /* 0x8214 */ { false, 0x8214, 0x8214 }, /* 0x8215 */ { false, 0x8215, 0x8215 }, /* 0x8216 */ { false, 0x8216, 0x8216 }, /* 0x8217 */ { false, 0x8217, 0x8217 }, /* 0x8218 */ { false, 0x8218, 0x8218 }, /* 0x8219 */ { false, 0x8219, 0x8219 }, /* 0x821a */ { false, 0x821a, 0x821a }, /* 0x821b */ { false, 0x821b, 0x821b }, /* 0x821c */ { false, 0x821c, 0x821c }, /* 0x821d */ { false, 0x821d, 0x821d }, /* 0x821e */ { false, 0x821e, 0x821e }, /* 0x821f */ { false, 0x821f, 0x821f }, /* 0x8220 */ { false, 0x8220, 0x8220 }, /* 0x8221 */ { false, 0x8221, 0x8221 }, /* 0x8222 */ { false, 0x8222, 0x8222 }, /* 0x8223 */ { false, 0x8223, 0x8223 }, /* 0x8224 */ { false, 0x8224, 0x8224 }, /* 0x8225 */ { false, 0x8225, 0x8225 }, /* 0x8226 */ { false, 0x8226, 0x8226 }, /* 0x8227 */ { false, 0x8227, 0x8227 }, /* 0x8228 */ { false, 0x8228, 0x8228 }, /* 0x8229 */ { false, 0x8229, 0x8229 }, /* 0x822a */ { false, 0x822a, 0x822a }, /* 0x822b */ { false, 0x822b, 0x822b }, /* 0x822c */ { false, 0x822c, 0x822c }, /* 0x822d */ { false, 0x822d, 0x822d }, /* 0x822e */ { false, 0x822e, 0x822e }, /* 0x822f */ { false, 0x822f, 0x822f }, /* 0x8230 */ { false, 0x8230, 0x8230 }, /* 0x8231 */ { false, 0x8231, 0x8231 }, /* 0x8232 */ { false, 0x8232, 0x8232 }, /* 0x8233 */ { false, 0x8233, 0x8233 }, /* 0x8234 */ { false, 0x8234, 0x8234 }, /* 0x8235 */ { false, 0x8235, 0x8235 }, /* 0x8236 */ { false, 0x8236, 0x8236 }, /* 0x8237 */ { false, 0x8237, 0x8237 }, /* 0x8238 */ { false, 0x8238, 0x8238 }, /* 0x8239 */ { false, 0x8239, 0x8239 }, /* 0x823a */ { false, 0x823a, 0x823a }, /* 0x823b */ { false, 0x823b, 0x823b }, /* 0x823c */ { false, 0x823c, 0x823c }, /* 0x823d */ { false, 0x823d, 0x823d }, /* 0x823e */ { false, 0x823e, 0x823e }, /* 0x823f */ { false, 0x823f, 0x823f }, /* 0x8240 */ { false, 0x8240, 0x8240 }, /* 0x8241 */ { false, 0x8241, 0x8241 }, /* 0x8242 */ { false, 0x8242, 0x8242 }, /* 0x8243 */ { false, 0x8243, 0x8243 }, /* 0x8244 */ { false, 0x8244, 0x8244 }, /* 0x8245 */ { false, 0x8245, 0x8245 }, /* 0x8246 */ { false, 0x8246, 0x8246 }, /* 0x8247 */ { false, 0x8247, 0x8247 }, /* 0x8248 */ { false, 0x8248, 0x8248 }, /* 0x8249 */ { false, 0x8249, 0x8249 }, /* 0x824a */ { false, 0x824a, 0x824a }, /* 0x824b */ { false, 0x824b, 0x824b }, /* 0x824c */ { false, 0x824c, 0x824c }, /* 0x824d */ { false, 0x824d, 0x824d }, /* 0x824e */ { false, 0x824e, 0x824e }, /* 0x824f */ { false, 0x824f, 0x824f }, /* 0x8250 */ { false, 0x8250, 0x8250 }, /* 0x8251 */ { false, 0x8251, 0x8251 }, /* 0x8252 */ { false, 0x8252, 0x8252 }, /* 0x8253 */ { false, 0x8253, 0x8253 }, /* 0x8254 */ { false, 0x8254, 0x8254 }, /* 0x8255 */ { false, 0x8255, 0x8255 }, /* 0x8256 */ { false, 0x8256, 0x8256 }, /* 0x8257 */ { false, 0x8257, 0x8257 }, /* 0x8258 */ { false, 0x8258, 0x8258 }, /* 0x8259 */ { false, 0x8259, 0x8259 }, /* 0x825a */ { false, 0x825a, 0x825a }, /* 0x825b */ { false, 0x825b, 0x825b }, /* 0x825c */ { false, 0x825c, 0x825c }, /* 0x825d */ { false, 0x825d, 0x825d }, /* 0x825e */ { false, 0x825e, 0x825e }, /* 0x825f */ { false, 0x825f, 0x825f }, /* 0x8260 */ { false, 0x8260, 0x8260 }, /* 0x8261 */ { false, 0x8261, 0x8261 }, /* 0x8262 */ { false, 0x8262, 0x8262 }, /* 0x8263 */ { false, 0x8263, 0x8263 }, /* 0x8264 */ { false, 0x8264, 0x8264 }, /* 0x8265 */ { false, 0x8265, 0x8265 }, /* 0x8266 */ { false, 0x8266, 0x8266 }, /* 0x8267 */ { false, 0x8267, 0x8267 }, /* 0x8268 */ { false, 0x8268, 0x8268 }, /* 0x8269 */ { false, 0x8269, 0x8269 }, /* 0x826a */ { false, 0x826a, 0x826a }, /* 0x826b */ { false, 0x826b, 0x826b }, /* 0x826c */ { false, 0x826c, 0x826c }, /* 0x826d */ { false, 0x826d, 0x826d }, /* 0x826e */ { false, 0x826e, 0x826e }, /* 0x826f */ { false, 0x826f, 0x826f }, /* 0x8270 */ { false, 0x8270, 0x8270 }, /* 0x8271 */ { false, 0x8271, 0x8271 }, /* 0x8272 */ { false, 0x8272, 0x8272 }, /* 0x8273 */ { false, 0x8273, 0x8273 }, /* 0x8274 */ { false, 0x8274, 0x8274 }, /* 0x8275 */ { false, 0x8275, 0x8275 }, /* 0x8276 */ { false, 0x8276, 0x8276 }, /* 0x8277 */ { false, 0x8277, 0x8277 }, /* 0x8278 */ { false, 0x8278, 0x8278 }, /* 0x8279 */ { false, 0x8279, 0x8279 }, /* 0x827a */ { false, 0x827a, 0x827a }, /* 0x827b */ { false, 0x827b, 0x827b }, /* 0x827c */ { false, 0x827c, 0x827c }, /* 0x827d */ { false, 0x827d, 0x827d }, /* 0x827e */ { false, 0x827e, 0x827e }, /* 0x827f */ { false, 0x827f, 0x827f }, /* 0x8280 */ { false, 0x8280, 0x8280 }, /* 0x8281 */ { false, 0x8281, 0x8281 }, /* 0x8282 */ { false, 0x8282, 0x8282 }, /* 0x8283 */ { false, 0x8283, 0x8283 }, /* 0x8284 */ { false, 0x8284, 0x8284 }, /* 0x8285 */ { false, 0x8285, 0x8285 }, /* 0x8286 */ { false, 0x8286, 0x8286 }, /* 0x8287 */ { false, 0x8287, 0x8287 }, /* 0x8288 */ { false, 0x8288, 0x8288 }, /* 0x8289 */ { false, 0x8289, 0x8289 }, /* 0x828a */ { false, 0x828a, 0x828a }, /* 0x828b */ { false, 0x828b, 0x828b }, /* 0x828c */ { false, 0x828c, 0x828c }, /* 0x828d */ { false, 0x828d, 0x828d }, /* 0x828e */ { false, 0x828e, 0x828e }, /* 0x828f */ { false, 0x828f, 0x828f }, /* 0x8290 */ { false, 0x8290, 0x8290 }, /* 0x8291 */ { false, 0x8291, 0x8291 }, /* 0x8292 */ { false, 0x8292, 0x8292 }, /* 0x8293 */ { false, 0x8293, 0x8293 }, /* 0x8294 */ { false, 0x8294, 0x8294 }, /* 0x8295 */ { false, 0x8295, 0x8295 }, /* 0x8296 */ { false, 0x8296, 0x8296 }, /* 0x8297 */ { false, 0x8297, 0x8297 }, /* 0x8298 */ { false, 0x8298, 0x8298 }, /* 0x8299 */ { false, 0x8299, 0x8299 }, /* 0x829a */ { false, 0x829a, 0x829a }, /* 0x829b */ { false, 0x829b, 0x829b }, /* 0x829c */ { false, 0x829c, 0x829c }, /* 0x829d */ { false, 0x829d, 0x829d }, /* 0x829e */ { false, 0x829e, 0x829e }, /* 0x829f */ { false, 0x829f, 0x829f }, /* 0x82a0 */ { false, 0x82a0, 0x82a0 }, /* 0x82a1 */ { false, 0x82a1, 0x82a1 }, /* 0x82a2 */ { false, 0x82a2, 0x82a2 }, /* 0x82a3 */ { false, 0x82a3, 0x82a3 }, /* 0x82a4 */ { false, 0x82a4, 0x82a4 }, /* 0x82a5 */ { false, 0x82a5, 0x82a5 }, /* 0x82a6 */ { false, 0x82a6, 0x82a6 }, /* 0x82a7 */ { false, 0x82a7, 0x82a7 }, /* 0x82a8 */ { false, 0x82a8, 0x82a8 }, /* 0x82a9 */ { false, 0x82a9, 0x82a9 }, /* 0x82aa */ { false, 0x82aa, 0x82aa }, /* 0x82ab */ { false, 0x82ab, 0x82ab }, /* 0x82ac */ { false, 0x82ac, 0x82ac }, /* 0x82ad */ { false, 0x82ad, 0x82ad }, /* 0x82ae */ { false, 0x82ae, 0x82ae }, /* 0x82af */ { false, 0x82af, 0x82af }, /* 0x82b0 */ { false, 0x82b0, 0x82b0 }, /* 0x82b1 */ { false, 0x82b1, 0x82b1 }, /* 0x82b2 */ { false, 0x82b2, 0x82b2 }, /* 0x82b3 */ { false, 0x82b3, 0x82b3 }, /* 0x82b4 */ { false, 0x82b4, 0x82b4 }, /* 0x82b5 */ { false, 0x82b5, 0x82b5 }, /* 0x82b6 */ { false, 0x82b6, 0x82b6 }, /* 0x82b7 */ { false, 0x82b7, 0x82b7 }, /* 0x82b8 */ { false, 0x82b8, 0x82b8 }, /* 0x82b9 */ { false, 0x82b9, 0x82b9 }, /* 0x82ba */ { false, 0x82ba, 0x82ba }, /* 0x82bb */ { false, 0x82bb, 0x82bb }, /* 0x82bc */ { false, 0x82bc, 0x82bc }, /* 0x82bd */ { false, 0x82bd, 0x82bd }, /* 0x82be */ { false, 0x82be, 0x82be }, /* 0x82bf */ { false, 0x82bf, 0x82bf }, /* 0x82c0 */ { false, 0x82c0, 0x82c0 }, /* 0x82c1 */ { false, 0x82c1, 0x82c1 }, /* 0x82c2 */ { false, 0x82c2, 0x82c2 }, /* 0x82c3 */ { false, 0x82c3, 0x82c3 }, /* 0x82c4 */ { false, 0x82c4, 0x82c4 }, /* 0x82c5 */ { false, 0x82c5, 0x82c5 }, /* 0x82c6 */ { false, 0x82c6, 0x82c6 }, /* 0x82c7 */ { false, 0x82c7, 0x82c7 }, /* 0x82c8 */ { false, 0x82c8, 0x82c8 }, /* 0x82c9 */ { false, 0x82c9, 0x82c9 }, /* 0x82ca */ { false, 0x82ca, 0x82ca }, /* 0x82cb */ { false, 0x82cb, 0x82cb }, /* 0x82cc */ { false, 0x82cc, 0x82cc }, /* 0x82cd */ { false, 0x82cd, 0x82cd }, /* 0x82ce */ { false, 0x82ce, 0x82ce }, /* 0x82cf */ { false, 0x82cf, 0x82cf }, /* 0x82d0 */ { false, 0x82d0, 0x82d0 }, /* 0x82d1 */ { false, 0x82d1, 0x82d1 }, /* 0x82d2 */ { false, 0x82d2, 0x82d2 }, /* 0x82d3 */ { false, 0x82d3, 0x82d3 }, /* 0x82d4 */ { false, 0x82d4, 0x82d4 }, /* 0x82d5 */ { false, 0x82d5, 0x82d5 }, /* 0x82d6 */ { false, 0x82d6, 0x82d6 }, /* 0x82d7 */ { false, 0x82d7, 0x82d7 }, /* 0x82d8 */ { false, 0x82d8, 0x82d8 }, /* 0x82d9 */ { false, 0x82d9, 0x82d9 }, /* 0x82da */ { false, 0x82da, 0x82da }, /* 0x82db */ { false, 0x82db, 0x82db }, /* 0x82dc */ { false, 0x82dc, 0x82dc }, /* 0x82dd */ { false, 0x82dd, 0x82dd }, /* 0x82de */ { false, 0x82de, 0x82de }, /* 0x82df */ { false, 0x82df, 0x82df }, /* 0x82e0 */ { false, 0x82e0, 0x82e0 }, /* 0x82e1 */ { false, 0x82e1, 0x82e1 }, /* 0x82e2 */ { false, 0x82e2, 0x82e2 }, /* 0x82e3 */ { false, 0x82e3, 0x82e3 }, /* 0x82e4 */ { false, 0x82e4, 0x82e4 }, /* 0x82e5 */ { false, 0x82e5, 0x82e5 }, /* 0x82e6 */ { false, 0x82e6, 0x82e6 }, /* 0x82e7 */ { false, 0x82e7, 0x82e7 }, /* 0x82e8 */ { false, 0x82e8, 0x82e8 }, /* 0x82e9 */ { false, 0x82e9, 0x82e9 }, /* 0x82ea */ { false, 0x82ea, 0x82ea }, /* 0x82eb */ { false, 0x82eb, 0x82eb }, /* 0x82ec */ { false, 0x82ec, 0x82ec }, /* 0x82ed */ { false, 0x82ed, 0x82ed }, /* 0x82ee */ { false, 0x82ee, 0x82ee }, /* 0x82ef */ { false, 0x82ef, 0x82ef }, /* 0x82f0 */ { false, 0x82f0, 0x82f0 }, /* 0x82f1 */ { false, 0x82f1, 0x82f1 }, /* 0x82f2 */ { false, 0x82f2, 0x82f2 }, /* 0x82f3 */ { false, 0x82f3, 0x82f3 }, /* 0x82f4 */ { false, 0x82f4, 0x82f4 }, /* 0x82f5 */ { false, 0x82f5, 0x82f5 }, /* 0x82f6 */ { false, 0x82f6, 0x82f6 }, /* 0x82f7 */ { false, 0x82f7, 0x82f7 }, /* 0x82f8 */ { false, 0x82f8, 0x82f8 }, /* 0x82f9 */ { false, 0x82f9, 0x82f9 }, /* 0x82fa */ { false, 0x82fa, 0x82fa }, /* 0x82fb */ { false, 0x82fb, 0x82fb }, /* 0x82fc */ { false, 0x82fc, 0x82fc }, /* 0x82fd */ { false, 0x82fd, 0x82fd }, /* 0x82fe */ { false, 0x82fe, 0x82fe }, /* 0x82ff */ { false, 0x82ff, 0x82ff }, /* 0x8300 */ { false, 0x8300, 0x8300 }, /* 0x8301 */ { false, 0x8301, 0x8301 }, /* 0x8302 */ { false, 0x8302, 0x8302 }, /* 0x8303 */ { false, 0x8303, 0x8303 }, /* 0x8304 */ { false, 0x8304, 0x8304 }, /* 0x8305 */ { false, 0x8305, 0x8305 }, /* 0x8306 */ { false, 0x8306, 0x8306 }, /* 0x8307 */ { false, 0x8307, 0x8307 }, /* 0x8308 */ { false, 0x8308, 0x8308 }, /* 0x8309 */ { false, 0x8309, 0x8309 }, /* 0x830a */ { false, 0x830a, 0x830a }, /* 0x830b */ { false, 0x830b, 0x830b }, /* 0x830c */ { false, 0x830c, 0x830c }, /* 0x830d */ { false, 0x830d, 0x830d }, /* 0x830e */ { false, 0x830e, 0x830e }, /* 0x830f */ { false, 0x830f, 0x830f }, /* 0x8310 */ { false, 0x8310, 0x8310 }, /* 0x8311 */ { false, 0x8311, 0x8311 }, /* 0x8312 */ { false, 0x8312, 0x8312 }, /* 0x8313 */ { false, 0x8313, 0x8313 }, /* 0x8314 */ { false, 0x8314, 0x8314 }, /* 0x8315 */ { false, 0x8315, 0x8315 }, /* 0x8316 */ { false, 0x8316, 0x8316 }, /* 0x8317 */ { false, 0x8317, 0x8317 }, /* 0x8318 */ { false, 0x8318, 0x8318 }, /* 0x8319 */ { false, 0x8319, 0x8319 }, /* 0x831a */ { false, 0x831a, 0x831a }, /* 0x831b */ { false, 0x831b, 0x831b }, /* 0x831c */ { false, 0x831c, 0x831c }, /* 0x831d */ { false, 0x831d, 0x831d }, /* 0x831e */ { false, 0x831e, 0x831e }, /* 0x831f */ { false, 0x831f, 0x831f }, /* 0x8320 */ { false, 0x8320, 0x8320 }, /* 0x8321 */ { false, 0x8321, 0x8321 }, /* 0x8322 */ { false, 0x8322, 0x8322 }, /* 0x8323 */ { false, 0x8323, 0x8323 }, /* 0x8324 */ { false, 0x8324, 0x8324 }, /* 0x8325 */ { false, 0x8325, 0x8325 }, /* 0x8326 */ { false, 0x8326, 0x8326 }, /* 0x8327 */ { false, 0x8327, 0x8327 }, /* 0x8328 */ { false, 0x8328, 0x8328 }, /* 0x8329 */ { false, 0x8329, 0x8329 }, /* 0x832a */ { false, 0x832a, 0x832a }, /* 0x832b */ { false, 0x832b, 0x832b }, /* 0x832c */ { false, 0x832c, 0x832c }, /* 0x832d */ { false, 0x832d, 0x832d }, /* 0x832e */ { false, 0x832e, 0x832e }, /* 0x832f */ { false, 0x832f, 0x832f }, /* 0x8330 */ { false, 0x8330, 0x8330 }, /* 0x8331 */ { false, 0x8331, 0x8331 }, /* 0x8332 */ { false, 0x8332, 0x8332 }, /* 0x8333 */ { false, 0x8333, 0x8333 }, /* 0x8334 */ { false, 0x8334, 0x8334 }, /* 0x8335 */ { false, 0x8335, 0x8335 }, /* 0x8336 */ { false, 0x8336, 0x8336 }, /* 0x8337 */ { false, 0x8337, 0x8337 }, /* 0x8338 */ { false, 0x8338, 0x8338 }, /* 0x8339 */ { false, 0x8339, 0x8339 }, /* 0x833a */ { false, 0x833a, 0x833a }, /* 0x833b */ { false, 0x833b, 0x833b }, /* 0x833c */ { false, 0x833c, 0x833c }, /* 0x833d */ { false, 0x833d, 0x833d }, /* 0x833e */ { false, 0x833e, 0x833e }, /* 0x833f */ { false, 0x833f, 0x833f }, /* 0x8340 */ { false, 0x8340, 0x8340 }, /* 0x8341 */ { false, 0x8341, 0x8341 }, /* 0x8342 */ { false, 0x8342, 0x8342 }, /* 0x8343 */ { false, 0x8343, 0x8343 }, /* 0x8344 */ { false, 0x8344, 0x8344 }, /* 0x8345 */ { false, 0x8345, 0x8345 }, /* 0x8346 */ { false, 0x8346, 0x8346 }, /* 0x8347 */ { false, 0x8347, 0x8347 }, /* 0x8348 */ { false, 0x8348, 0x8348 }, /* 0x8349 */ { false, 0x8349, 0x8349 }, /* 0x834a */ { false, 0x834a, 0x834a }, /* 0x834b */ { false, 0x834b, 0x834b }, /* 0x834c */ { false, 0x834c, 0x834c }, /* 0x834d */ { false, 0x834d, 0x834d }, /* 0x834e */ { false, 0x834e, 0x834e }, /* 0x834f */ { false, 0x834f, 0x834f }, /* 0x8350 */ { false, 0x8350, 0x8350 }, /* 0x8351 */ { false, 0x8351, 0x8351 }, /* 0x8352 */ { false, 0x8352, 0x8352 }, /* 0x8353 */ { false, 0x8353, 0x8353 }, /* 0x8354 */ { false, 0x8354, 0x8354 }, /* 0x8355 */ { false, 0x8355, 0x8355 }, /* 0x8356 */ { false, 0x8356, 0x8356 }, /* 0x8357 */ { false, 0x8357, 0x8357 }, /* 0x8358 */ { false, 0x8358, 0x8358 }, /* 0x8359 */ { false, 0x8359, 0x8359 }, /* 0x835a */ { false, 0x835a, 0x835a }, /* 0x835b */ { false, 0x835b, 0x835b }, /* 0x835c */ { false, 0x835c, 0x835c }, /* 0x835d */ { false, 0x835d, 0x835d }, /* 0x835e */ { false, 0x835e, 0x835e }, /* 0x835f */ { false, 0x835f, 0x835f }, /* 0x8360 */ { false, 0x8360, 0x8360 }, /* 0x8361 */ { false, 0x8361, 0x8361 }, /* 0x8362 */ { false, 0x8362, 0x8362 }, /* 0x8363 */ { false, 0x8363, 0x8363 }, /* 0x8364 */ { false, 0x8364, 0x8364 }, /* 0x8365 */ { false, 0x8365, 0x8365 }, /* 0x8366 */ { false, 0x8366, 0x8366 }, /* 0x8367 */ { false, 0x8367, 0x8367 }, /* 0x8368 */ { false, 0x8368, 0x8368 }, /* 0x8369 */ { false, 0x8369, 0x8369 }, /* 0x836a */ { false, 0x836a, 0x836a }, /* 0x836b */ { false, 0x836b, 0x836b }, /* 0x836c */ { false, 0x836c, 0x836c }, /* 0x836d */ { false, 0x836d, 0x836d }, /* 0x836e */ { false, 0x836e, 0x836e }, /* 0x836f */ { false, 0x836f, 0x836f }, /* 0x8370 */ { false, 0x8370, 0x8370 }, /* 0x8371 */ { false, 0x8371, 0x8371 }, /* 0x8372 */ { false, 0x8372, 0x8372 }, /* 0x8373 */ { false, 0x8373, 0x8373 }, /* 0x8374 */ { false, 0x8374, 0x8374 }, /* 0x8375 */ { false, 0x8375, 0x8375 }, /* 0x8376 */ { false, 0x8376, 0x8376 }, /* 0x8377 */ { false, 0x8377, 0x8377 }, /* 0x8378 */ { false, 0x8378, 0x8378 }, /* 0x8379 */ { false, 0x8379, 0x8379 }, /* 0x837a */ { false, 0x837a, 0x837a }, /* 0x837b */ { false, 0x837b, 0x837b }, /* 0x837c */ { false, 0x837c, 0x837c }, /* 0x837d */ { false, 0x837d, 0x837d }, /* 0x837e */ { false, 0x837e, 0x837e }, /* 0x837f */ { false, 0x837f, 0x837f }, /* 0x8380 */ { false, 0x8380, 0x8380 }, /* 0x8381 */ { false, 0x8381, 0x8381 }, /* 0x8382 */ { false, 0x8382, 0x8382 }, /* 0x8383 */ { false, 0x8383, 0x8383 }, /* 0x8384 */ { false, 0x8384, 0x8384 }, /* 0x8385 */ { false, 0x8385, 0x8385 }, /* 0x8386 */ { false, 0x8386, 0x8386 }, /* 0x8387 */ { false, 0x8387, 0x8387 }, /* 0x8388 */ { false, 0x8388, 0x8388 }, /* 0x8389 */ { false, 0x8389, 0x8389 }, /* 0x838a */ { false, 0x838a, 0x838a }, /* 0x838b */ { false, 0x838b, 0x838b }, /* 0x838c */ { false, 0x838c, 0x838c }, /* 0x838d */ { false, 0x838d, 0x838d }, /* 0x838e */ { false, 0x838e, 0x838e }, /* 0x838f */ { false, 0x838f, 0x838f }, /* 0x8390 */ { false, 0x8390, 0x8390 }, /* 0x8391 */ { false, 0x8391, 0x8391 }, /* 0x8392 */ { false, 0x8392, 0x8392 }, /* 0x8393 */ { false, 0x8393, 0x8393 }, /* 0x8394 */ { false, 0x8394, 0x8394 }, /* 0x8395 */ { false, 0x8395, 0x8395 }, /* 0x8396 */ { false, 0x8396, 0x8396 }, /* 0x8397 */ { false, 0x8397, 0x8397 }, /* 0x8398 */ { false, 0x8398, 0x8398 }, /* 0x8399 */ { false, 0x8399, 0x8399 }, /* 0x839a */ { false, 0x839a, 0x839a }, /* 0x839b */ { false, 0x839b, 0x839b }, /* 0x839c */ { false, 0x839c, 0x839c }, /* 0x839d */ { false, 0x839d, 0x839d }, /* 0x839e */ { false, 0x839e, 0x839e }, /* 0x839f */ { false, 0x839f, 0x839f }, /* 0x83a0 */ { false, 0x83a0, 0x83a0 }, /* 0x83a1 */ { false, 0x83a1, 0x83a1 }, /* 0x83a2 */ { false, 0x83a2, 0x83a2 }, /* 0x83a3 */ { false, 0x83a3, 0x83a3 }, /* 0x83a4 */ { false, 0x83a4, 0x83a4 }, /* 0x83a5 */ { false, 0x83a5, 0x83a5 }, /* 0x83a6 */ { false, 0x83a6, 0x83a6 }, /* 0x83a7 */ { false, 0x83a7, 0x83a7 }, /* 0x83a8 */ { false, 0x83a8, 0x83a8 }, /* 0x83a9 */ { false, 0x83a9, 0x83a9 }, /* 0x83aa */ { false, 0x83aa, 0x83aa }, /* 0x83ab */ { false, 0x83ab, 0x83ab }, /* 0x83ac */ { false, 0x83ac, 0x83ac }, /* 0x83ad */ { false, 0x83ad, 0x83ad }, /* 0x83ae */ { false, 0x83ae, 0x83ae }, /* 0x83af */ { false, 0x83af, 0x83af }, /* 0x83b0 */ { false, 0x83b0, 0x83b0 }, /* 0x83b1 */ { false, 0x83b1, 0x83b1 }, /* 0x83b2 */ { false, 0x83b2, 0x83b2 }, /* 0x83b3 */ { false, 0x83b3, 0x83b3 }, /* 0x83b4 */ { false, 0x83b4, 0x83b4 }, /* 0x83b5 */ { false, 0x83b5, 0x83b5 }, /* 0x83b6 */ { false, 0x83b6, 0x83b6 }, /* 0x83b7 */ { false, 0x83b7, 0x83b7 }, /* 0x83b8 */ { false, 0x83b8, 0x83b8 }, /* 0x83b9 */ { false, 0x83b9, 0x83b9 }, /* 0x83ba */ { false, 0x83ba, 0x83ba }, /* 0x83bb */ { false, 0x83bb, 0x83bb }, /* 0x83bc */ { false, 0x83bc, 0x83bc }, /* 0x83bd */ { false, 0x83bd, 0x83bd }, /* 0x83be */ { false, 0x83be, 0x83be }, /* 0x83bf */ { false, 0x83bf, 0x83bf }, /* 0x83c0 */ { false, 0x83c0, 0x83c0 }, /* 0x83c1 */ { false, 0x83c1, 0x83c1 }, /* 0x83c2 */ { false, 0x83c2, 0x83c2 }, /* 0x83c3 */ { false, 0x83c3, 0x83c3 }, /* 0x83c4 */ { false, 0x83c4, 0x83c4 }, /* 0x83c5 */ { false, 0x83c5, 0x83c5 }, /* 0x83c6 */ { false, 0x83c6, 0x83c6 }, /* 0x83c7 */ { false, 0x83c7, 0x83c7 }, /* 0x83c8 */ { false, 0x83c8, 0x83c8 }, /* 0x83c9 */ { false, 0x83c9, 0x83c9 }, /* 0x83ca */ { false, 0x83ca, 0x83ca }, /* 0x83cb */ { false, 0x83cb, 0x83cb }, /* 0x83cc */ { false, 0x83cc, 0x83cc }, /* 0x83cd */ { false, 0x83cd, 0x83cd }, /* 0x83ce */ { false, 0x83ce, 0x83ce }, /* 0x83cf */ { false, 0x83cf, 0x83cf }, /* 0x83d0 */ { false, 0x83d0, 0x83d0 }, /* 0x83d1 */ { false, 0x83d1, 0x83d1 }, /* 0x83d2 */ { false, 0x83d2, 0x83d2 }, /* 0x83d3 */ { false, 0x83d3, 0x83d3 }, /* 0x83d4 */ { false, 0x83d4, 0x83d4 }, /* 0x83d5 */ { false, 0x83d5, 0x83d5 }, /* 0x83d6 */ { false, 0x83d6, 0x83d6 }, /* 0x83d7 */ { false, 0x83d7, 0x83d7 }, /* 0x83d8 */ { false, 0x83d8, 0x83d8 }, /* 0x83d9 */ { false, 0x83d9, 0x83d9 }, /* 0x83da */ { false, 0x83da, 0x83da }, /* 0x83db */ { false, 0x83db, 0x83db }, /* 0x83dc */ { false, 0x83dc, 0x83dc }, /* 0x83dd */ { false, 0x83dd, 0x83dd }, /* 0x83de */ { false, 0x83de, 0x83de }, /* 0x83df */ { false, 0x83df, 0x83df }, /* 0x83e0 */ { false, 0x83e0, 0x83e0 }, /* 0x83e1 */ { false, 0x83e1, 0x83e1 }, /* 0x83e2 */ { false, 0x83e2, 0x83e2 }, /* 0x83e3 */ { false, 0x83e3, 0x83e3 }, /* 0x83e4 */ { false, 0x83e4, 0x83e4 }, /* 0x83e5 */ { false, 0x83e5, 0x83e5 }, /* 0x83e6 */ { false, 0x83e6, 0x83e6 }, /* 0x83e7 */ { false, 0x83e7, 0x83e7 }, /* 0x83e8 */ { false, 0x83e8, 0x83e8 }, /* 0x83e9 */ { false, 0x83e9, 0x83e9 }, /* 0x83ea */ { false, 0x83ea, 0x83ea }, /* 0x83eb */ { false, 0x83eb, 0x83eb }, /* 0x83ec */ { false, 0x83ec, 0x83ec }, /* 0x83ed */ { false, 0x83ed, 0x83ed }, /* 0x83ee */ { false, 0x83ee, 0x83ee }, /* 0x83ef */ { false, 0x83ef, 0x83ef }, /* 0x83f0 */ { false, 0x83f0, 0x83f0 }, /* 0x83f1 */ { false, 0x83f1, 0x83f1 }, /* 0x83f2 */ { false, 0x83f2, 0x83f2 }, /* 0x83f3 */ { false, 0x83f3, 0x83f3 }, /* 0x83f4 */ { false, 0x83f4, 0x83f4 }, /* 0x83f5 */ { false, 0x83f5, 0x83f5 }, /* 0x83f6 */ { false, 0x83f6, 0x83f6 }, /* 0x83f7 */ { false, 0x83f7, 0x83f7 }, /* 0x83f8 */ { false, 0x83f8, 0x83f8 }, /* 0x83f9 */ { false, 0x83f9, 0x83f9 }, /* 0x83fa */ { false, 0x83fa, 0x83fa }, /* 0x83fb */ { false, 0x83fb, 0x83fb }, /* 0x83fc */ { false, 0x83fc, 0x83fc }, /* 0x83fd */ { false, 0x83fd, 0x83fd }, /* 0x83fe */ { false, 0x83fe, 0x83fe }, /* 0x83ff */ { false, 0x83ff, 0x83ff }, /* 0x8400 */ { false, 0x8400, 0x8400 }, /* 0x8401 */ { false, 0x8401, 0x8401 }, /* 0x8402 */ { false, 0x8402, 0x8402 }, /* 0x8403 */ { false, 0x8403, 0x8403 }, /* 0x8404 */ { false, 0x8404, 0x8404 }, /* 0x8405 */ { false, 0x8405, 0x8405 }, /* 0x8406 */ { false, 0x8406, 0x8406 }, /* 0x8407 */ { false, 0x8407, 0x8407 }, /* 0x8408 */ { false, 0x8408, 0x8408 }, /* 0x8409 */ { false, 0x8409, 0x8409 }, /* 0x840a */ { false, 0x840a, 0x840a }, /* 0x840b */ { false, 0x840b, 0x840b }, /* 0x840c */ { false, 0x840c, 0x840c }, /* 0x840d */ { false, 0x840d, 0x840d }, /* 0x840e */ { false, 0x840e, 0x840e }, /* 0x840f */ { false, 0x840f, 0x840f }, /* 0x8410 */ { false, 0x8410, 0x8410 }, /* 0x8411 */ { false, 0x8411, 0x8411 }, /* 0x8412 */ { false, 0x8412, 0x8412 }, /* 0x8413 */ { false, 0x8413, 0x8413 }, /* 0x8414 */ { false, 0x8414, 0x8414 }, /* 0x8415 */ { false, 0x8415, 0x8415 }, /* 0x8416 */ { false, 0x8416, 0x8416 }, /* 0x8417 */ { false, 0x8417, 0x8417 }, /* 0x8418 */ { false, 0x8418, 0x8418 }, /* 0x8419 */ { false, 0x8419, 0x8419 }, /* 0x841a */ { false, 0x841a, 0x841a }, /* 0x841b */ { false, 0x841b, 0x841b }, /* 0x841c */ { false, 0x841c, 0x841c }, /* 0x841d */ { false, 0x841d, 0x841d }, /* 0x841e */ { false, 0x841e, 0x841e }, /* 0x841f */ { false, 0x841f, 0x841f }, /* 0x8420 */ { false, 0x8420, 0x8420 }, /* 0x8421 */ { false, 0x8421, 0x8421 }, /* 0x8422 */ { false, 0x8422, 0x8422 }, /* 0x8423 */ { false, 0x8423, 0x8423 }, /* 0x8424 */ { false, 0x8424, 0x8424 }, /* 0x8425 */ { false, 0x8425, 0x8425 }, /* 0x8426 */ { false, 0x8426, 0x8426 }, /* 0x8427 */ { false, 0x8427, 0x8427 }, /* 0x8428 */ { false, 0x8428, 0x8428 }, /* 0x8429 */ { false, 0x8429, 0x8429 }, /* 0x842a */ { false, 0x842a, 0x842a }, /* 0x842b */ { false, 0x842b, 0x842b }, /* 0x842c */ { false, 0x842c, 0x842c }, /* 0x842d */ { false, 0x842d, 0x842d }, /* 0x842e */ { false, 0x842e, 0x842e }, /* 0x842f */ { false, 0x842f, 0x842f }, /* 0x8430 */ { false, 0x8430, 0x8430 }, /* 0x8431 */ { false, 0x8431, 0x8431 }, /* 0x8432 */ { false, 0x8432, 0x8432 }, /* 0x8433 */ { false, 0x8433, 0x8433 }, /* 0x8434 */ { false, 0x8434, 0x8434 }, /* 0x8435 */ { false, 0x8435, 0x8435 }, /* 0x8436 */ { false, 0x8436, 0x8436 }, /* 0x8437 */ { false, 0x8437, 0x8437 }, /* 0x8438 */ { false, 0x8438, 0x8438 }, /* 0x8439 */ { false, 0x8439, 0x8439 }, /* 0x843a */ { false, 0x843a, 0x843a }, /* 0x843b */ { false, 0x843b, 0x843b }, /* 0x843c */ { false, 0x843c, 0x843c }, /* 0x843d */ { false, 0x843d, 0x843d }, /* 0x843e */ { false, 0x843e, 0x843e }, /* 0x843f */ { false, 0x843f, 0x843f }, /* 0x8440 */ { false, 0x8440, 0x8440 }, /* 0x8441 */ { false, 0x8441, 0x8441 }, /* 0x8442 */ { false, 0x8442, 0x8442 }, /* 0x8443 */ { false, 0x8443, 0x8443 }, /* 0x8444 */ { false, 0x8444, 0x8444 }, /* 0x8445 */ { false, 0x8445, 0x8445 }, /* 0x8446 */ { false, 0x8446, 0x8446 }, /* 0x8447 */ { false, 0x8447, 0x8447 }, /* 0x8448 */ { false, 0x8448, 0x8448 }, /* 0x8449 */ { false, 0x8449, 0x8449 }, /* 0x844a */ { false, 0x844a, 0x844a }, /* 0x844b */ { false, 0x844b, 0x844b }, /* 0x844c */ { false, 0x844c, 0x844c }, /* 0x844d */ { false, 0x844d, 0x844d }, /* 0x844e */ { false, 0x844e, 0x844e }, /* 0x844f */ { false, 0x844f, 0x844f }, /* 0x8450 */ { false, 0x8450, 0x8450 }, /* 0x8451 */ { false, 0x8451, 0x8451 }, /* 0x8452 */ { false, 0x8452, 0x8452 }, /* 0x8453 */ { false, 0x8453, 0x8453 }, /* 0x8454 */ { false, 0x8454, 0x8454 }, /* 0x8455 */ { false, 0x8455, 0x8455 }, /* 0x8456 */ { false, 0x8456, 0x8456 }, /* 0x8457 */ { false, 0x8457, 0x8457 }, /* 0x8458 */ { false, 0x8458, 0x8458 }, /* 0x8459 */ { false, 0x8459, 0x8459 }, /* 0x845a */ { false, 0x845a, 0x845a }, /* 0x845b */ { false, 0x845b, 0x845b }, /* 0x845c */ { false, 0x845c, 0x845c }, /* 0x845d */ { false, 0x845d, 0x845d }, /* 0x845e */ { false, 0x845e, 0x845e }, /* 0x845f */ { false, 0x845f, 0x845f }, /* 0x8460 */ { false, 0x8460, 0x8460 }, /* 0x8461 */ { false, 0x8461, 0x8461 }, /* 0x8462 */ { false, 0x8462, 0x8462 }, /* 0x8463 */ { false, 0x8463, 0x8463 }, /* 0x8464 */ { false, 0x8464, 0x8464 }, /* 0x8465 */ { false, 0x8465, 0x8465 }, /* 0x8466 */ { false, 0x8466, 0x8466 }, /* 0x8467 */ { false, 0x8467, 0x8467 }, /* 0x8468 */ { false, 0x8468, 0x8468 }, /* 0x8469 */ { false, 0x8469, 0x8469 }, /* 0x846a */ { false, 0x846a, 0x846a }, /* 0x846b */ { false, 0x846b, 0x846b }, /* 0x846c */ { false, 0x846c, 0x846c }, /* 0x846d */ { false, 0x846d, 0x846d }, /* 0x846e */ { false, 0x846e, 0x846e }, /* 0x846f */ { false, 0x846f, 0x846f }, /* 0x8470 */ { false, 0x8470, 0x8470 }, /* 0x8471 */ { false, 0x8471, 0x8471 }, /* 0x8472 */ { false, 0x8472, 0x8472 }, /* 0x8473 */ { false, 0x8473, 0x8473 }, /* 0x8474 */ { false, 0x8474, 0x8474 }, /* 0x8475 */ { false, 0x8475, 0x8475 }, /* 0x8476 */ { false, 0x8476, 0x8476 }, /* 0x8477 */ { false, 0x8477, 0x8477 }, /* 0x8478 */ { false, 0x8478, 0x8478 }, /* 0x8479 */ { false, 0x8479, 0x8479 }, /* 0x847a */ { false, 0x847a, 0x847a }, /* 0x847b */ { false, 0x847b, 0x847b }, /* 0x847c */ { false, 0x847c, 0x847c }, /* 0x847d */ { false, 0x847d, 0x847d }, /* 0x847e */ { false, 0x847e, 0x847e }, /* 0x847f */ { false, 0x847f, 0x847f }, /* 0x8480 */ { false, 0x8480, 0x8480 }, /* 0x8481 */ { false, 0x8481, 0x8481 }, /* 0x8482 */ { false, 0x8482, 0x8482 }, /* 0x8483 */ { false, 0x8483, 0x8483 }, /* 0x8484 */ { false, 0x8484, 0x8484 }, /* 0x8485 */ { false, 0x8485, 0x8485 }, /* 0x8486 */ { false, 0x8486, 0x8486 }, /* 0x8487 */ { false, 0x8487, 0x8487 }, /* 0x8488 */ { false, 0x8488, 0x8488 }, /* 0x8489 */ { false, 0x8489, 0x8489 }, /* 0x848a */ { false, 0x848a, 0x848a }, /* 0x848b */ { false, 0x848b, 0x848b }, /* 0x848c */ { false, 0x848c, 0x848c }, /* 0x848d */ { false, 0x848d, 0x848d }, /* 0x848e */ { false, 0x848e, 0x848e }, /* 0x848f */ { false, 0x848f, 0x848f }, /* 0x8490 */ { false, 0x8490, 0x8490 }, /* 0x8491 */ { false, 0x8491, 0x8491 }, /* 0x8492 */ { false, 0x8492, 0x8492 }, /* 0x8493 */ { false, 0x8493, 0x8493 }, /* 0x8494 */ { false, 0x8494, 0x8494 }, /* 0x8495 */ { false, 0x8495, 0x8495 }, /* 0x8496 */ { false, 0x8496, 0x8496 }, /* 0x8497 */ { false, 0x8497, 0x8497 }, /* 0x8498 */ { false, 0x8498, 0x8498 }, /* 0x8499 */ { false, 0x8499, 0x8499 }, /* 0x849a */ { false, 0x849a, 0x849a }, /* 0x849b */ { false, 0x849b, 0x849b }, /* 0x849c */ { false, 0x849c, 0x849c }, /* 0x849d */ { false, 0x849d, 0x849d }, /* 0x849e */ { false, 0x849e, 0x849e }, /* 0x849f */ { false, 0x849f, 0x849f }, /* 0x84a0 */ { false, 0x84a0, 0x84a0 }, /* 0x84a1 */ { false, 0x84a1, 0x84a1 }, /* 0x84a2 */ { false, 0x84a2, 0x84a2 }, /* 0x84a3 */ { false, 0x84a3, 0x84a3 }, /* 0x84a4 */ { false, 0x84a4, 0x84a4 }, /* 0x84a5 */ { false, 0x84a5, 0x84a5 }, /* 0x84a6 */ { false, 0x84a6, 0x84a6 }, /* 0x84a7 */ { false, 0x84a7, 0x84a7 }, /* 0x84a8 */ { false, 0x84a8, 0x84a8 }, /* 0x84a9 */ { false, 0x84a9, 0x84a9 }, /* 0x84aa */ { false, 0x84aa, 0x84aa }, /* 0x84ab */ { false, 0x84ab, 0x84ab }, /* 0x84ac */ { false, 0x84ac, 0x84ac }, /* 0x84ad */ { false, 0x84ad, 0x84ad }, /* 0x84ae */ { false, 0x84ae, 0x84ae }, /* 0x84af */ { false, 0x84af, 0x84af }, /* 0x84b0 */ { false, 0x84b0, 0x84b0 }, /* 0x84b1 */ { false, 0x84b1, 0x84b1 }, /* 0x84b2 */ { false, 0x84b2, 0x84b2 }, /* 0x84b3 */ { false, 0x84b3, 0x84b3 }, /* 0x84b4 */ { false, 0x84b4, 0x84b4 }, /* 0x84b5 */ { false, 0x84b5, 0x84b5 }, /* 0x84b6 */ { false, 0x84b6, 0x84b6 }, /* 0x84b7 */ { false, 0x84b7, 0x84b7 }, /* 0x84b8 */ { false, 0x84b8, 0x84b8 }, /* 0x84b9 */ { false, 0x84b9, 0x84b9 }, /* 0x84ba */ { false, 0x84ba, 0x84ba }, /* 0x84bb */ { false, 0x84bb, 0x84bb }, /* 0x84bc */ { false, 0x84bc, 0x84bc }, /* 0x84bd */ { false, 0x84bd, 0x84bd }, /* 0x84be */ { false, 0x84be, 0x84be }, /* 0x84bf */ { false, 0x84bf, 0x84bf }, /* 0x84c0 */ { false, 0x84c0, 0x84c0 }, /* 0x84c1 */ { false, 0x84c1, 0x84c1 }, /* 0x84c2 */ { false, 0x84c2, 0x84c2 }, /* 0x84c3 */ { false, 0x84c3, 0x84c3 }, /* 0x84c4 */ { false, 0x84c4, 0x84c4 }, /* 0x84c5 */ { false, 0x84c5, 0x84c5 }, /* 0x84c6 */ { false, 0x84c6, 0x84c6 }, /* 0x84c7 */ { false, 0x84c7, 0x84c7 }, /* 0x84c8 */ { false, 0x84c8, 0x84c8 }, /* 0x84c9 */ { false, 0x84c9, 0x84c9 }, /* 0x84ca */ { false, 0x84ca, 0x84ca }, /* 0x84cb */ { false, 0x84cb, 0x84cb }, /* 0x84cc */ { false, 0x84cc, 0x84cc }, /* 0x84cd */ { false, 0x84cd, 0x84cd }, /* 0x84ce */ { false, 0x84ce, 0x84ce }, /* 0x84cf */ { false, 0x84cf, 0x84cf }, /* 0x84d0 */ { false, 0x84d0, 0x84d0 }, /* 0x84d1 */ { false, 0x84d1, 0x84d1 }, /* 0x84d2 */ { false, 0x84d2, 0x84d2 }, /* 0x84d3 */ { false, 0x84d3, 0x84d3 }, /* 0x84d4 */ { false, 0x84d4, 0x84d4 }, /* 0x84d5 */ { false, 0x84d5, 0x84d5 }, /* 0x84d6 */ { false, 0x84d6, 0x84d6 }, /* 0x84d7 */ { false, 0x84d7, 0x84d7 }, /* 0x84d8 */ { false, 0x84d8, 0x84d8 }, /* 0x84d9 */ { false, 0x84d9, 0x84d9 }, /* 0x84da */ { false, 0x84da, 0x84da }, /* 0x84db */ { false, 0x84db, 0x84db }, /* 0x84dc */ { false, 0x84dc, 0x84dc }, /* 0x84dd */ { false, 0x84dd, 0x84dd }, /* 0x84de */ { false, 0x84de, 0x84de }, /* 0x84df */ { false, 0x84df, 0x84df }, /* 0x84e0 */ { false, 0x84e0, 0x84e0 }, /* 0x84e1 */ { false, 0x84e1, 0x84e1 }, /* 0x84e2 */ { false, 0x84e2, 0x84e2 }, /* 0x84e3 */ { false, 0x84e3, 0x84e3 }, /* 0x84e4 */ { false, 0x84e4, 0x84e4 }, /* 0x84e5 */ { false, 0x84e5, 0x84e5 }, /* 0x84e6 */ { false, 0x84e6, 0x84e6 }, /* 0x84e7 */ { false, 0x84e7, 0x84e7 }, /* 0x84e8 */ { false, 0x84e8, 0x84e8 }, /* 0x84e9 */ { false, 0x84e9, 0x84e9 }, /* 0x84ea */ { false, 0x84ea, 0x84ea }, /* 0x84eb */ { false, 0x84eb, 0x84eb }, /* 0x84ec */ { false, 0x84ec, 0x84ec }, /* 0x84ed */ { false, 0x84ed, 0x84ed }, /* 0x84ee */ { false, 0x84ee, 0x84ee }, /* 0x84ef */ { false, 0x84ef, 0x84ef }, /* 0x84f0 */ { false, 0x84f0, 0x84f0 }, /* 0x84f1 */ { false, 0x84f1, 0x84f1 }, /* 0x84f2 */ { false, 0x84f2, 0x84f2 }, /* 0x84f3 */ { false, 0x84f3, 0x84f3 }, /* 0x84f4 */ { false, 0x84f4, 0x84f4 }, /* 0x84f5 */ { false, 0x84f5, 0x84f5 }, /* 0x84f6 */ { false, 0x84f6, 0x84f6 }, /* 0x84f7 */ { false, 0x84f7, 0x84f7 }, /* 0x84f8 */ { false, 0x84f8, 0x84f8 }, /* 0x84f9 */ { false, 0x84f9, 0x84f9 }, /* 0x84fa */ { false, 0x84fa, 0x84fa }, /* 0x84fb */ { false, 0x84fb, 0x84fb }, /* 0x84fc */ { false, 0x84fc, 0x84fc }, /* 0x84fd */ { false, 0x84fd, 0x84fd }, /* 0x84fe */ { false, 0x84fe, 0x84fe }, /* 0x84ff */ { false, 0x84ff, 0x84ff }, /* 0x8500 */ { false, 0x8500, 0x8500 }, /* 0x8501 */ { false, 0x8501, 0x8501 }, /* 0x8502 */ { false, 0x8502, 0x8502 }, /* 0x8503 */ { false, 0x8503, 0x8503 }, /* 0x8504 */ { false, 0x8504, 0x8504 }, /* 0x8505 */ { false, 0x8505, 0x8505 }, /* 0x8506 */ { false, 0x8506, 0x8506 }, /* 0x8507 */ { false, 0x8507, 0x8507 }, /* 0x8508 */ { false, 0x8508, 0x8508 }, /* 0x8509 */ { false, 0x8509, 0x8509 }, /* 0x850a */ { false, 0x850a, 0x850a }, /* 0x850b */ { false, 0x850b, 0x850b }, /* 0x850c */ { false, 0x850c, 0x850c }, /* 0x850d */ { false, 0x850d, 0x850d }, /* 0x850e */ { false, 0x850e, 0x850e }, /* 0x850f */ { false, 0x850f, 0x850f }, /* 0x8510 */ { false, 0x8510, 0x8510 }, /* 0x8511 */ { false, 0x8511, 0x8511 }, /* 0x8512 */ { false, 0x8512, 0x8512 }, /* 0x8513 */ { false, 0x8513, 0x8513 }, /* 0x8514 */ { false, 0x8514, 0x8514 }, /* 0x8515 */ { false, 0x8515, 0x8515 }, /* 0x8516 */ { false, 0x8516, 0x8516 }, /* 0x8517 */ { false, 0x8517, 0x8517 }, /* 0x8518 */ { false, 0x8518, 0x8518 }, /* 0x8519 */ { false, 0x8519, 0x8519 }, /* 0x851a */ { false, 0x851a, 0x851a }, /* 0x851b */ { false, 0x851b, 0x851b }, /* 0x851c */ { false, 0x851c, 0x851c }, /* 0x851d */ { false, 0x851d, 0x851d }, /* 0x851e */ { false, 0x851e, 0x851e }, /* 0x851f */ { false, 0x851f, 0x851f }, /* 0x8520 */ { false, 0x8520, 0x8520 }, /* 0x8521 */ { false, 0x8521, 0x8521 }, /* 0x8522 */ { false, 0x8522, 0x8522 }, /* 0x8523 */ { false, 0x8523, 0x8523 }, /* 0x8524 */ { false, 0x8524, 0x8524 }, /* 0x8525 */ { false, 0x8525, 0x8525 }, /* 0x8526 */ { false, 0x8526, 0x8526 }, /* 0x8527 */ { false, 0x8527, 0x8527 }, /* 0x8528 */ { false, 0x8528, 0x8528 }, /* 0x8529 */ { false, 0x8529, 0x8529 }, /* 0x852a */ { false, 0x852a, 0x852a }, /* 0x852b */ { false, 0x852b, 0x852b }, /* 0x852c */ { false, 0x852c, 0x852c }, /* 0x852d */ { false, 0x852d, 0x852d }, /* 0x852e */ { false, 0x852e, 0x852e }, /* 0x852f */ { false, 0x852f, 0x852f }, /* 0x8530 */ { false, 0x8530, 0x8530 }, /* 0x8531 */ { false, 0x8531, 0x8531 }, /* 0x8532 */ { false, 0x8532, 0x8532 }, /* 0x8533 */ { false, 0x8533, 0x8533 }, /* 0x8534 */ { false, 0x8534, 0x8534 }, /* 0x8535 */ { false, 0x8535, 0x8535 }, /* 0x8536 */ { false, 0x8536, 0x8536 }, /* 0x8537 */ { false, 0x8537, 0x8537 }, /* 0x8538 */ { false, 0x8538, 0x8538 }, /* 0x8539 */ { false, 0x8539, 0x8539 }, /* 0x853a */ { false, 0x853a, 0x853a }, /* 0x853b */ { false, 0x853b, 0x853b }, /* 0x853c */ { false, 0x853c, 0x853c }, /* 0x853d */ { false, 0x853d, 0x853d }, /* 0x853e */ { false, 0x853e, 0x853e }, /* 0x853f */ { false, 0x853f, 0x853f }, /* 0x8540 */ { false, 0x8540, 0x8540 }, /* 0x8541 */ { false, 0x8541, 0x8541 }, /* 0x8542 */ { false, 0x8542, 0x8542 }, /* 0x8543 */ { false, 0x8543, 0x8543 }, /* 0x8544 */ { false, 0x8544, 0x8544 }, /* 0x8545 */ { false, 0x8545, 0x8545 }, /* 0x8546 */ { false, 0x8546, 0x8546 }, /* 0x8547 */ { false, 0x8547, 0x8547 }, /* 0x8548 */ { false, 0x8548, 0x8548 }, /* 0x8549 */ { false, 0x8549, 0x8549 }, /* 0x854a */ { false, 0x854a, 0x854a }, /* 0x854b */ { false, 0x854b, 0x854b }, /* 0x854c */ { false, 0x854c, 0x854c }, /* 0x854d */ { false, 0x854d, 0x854d }, /* 0x854e */ { false, 0x854e, 0x854e }, /* 0x854f */ { false, 0x854f, 0x854f }, /* 0x8550 */ { false, 0x8550, 0x8550 }, /* 0x8551 */ { false, 0x8551, 0x8551 }, /* 0x8552 */ { false, 0x8552, 0x8552 }, /* 0x8553 */ { false, 0x8553, 0x8553 }, /* 0x8554 */ { false, 0x8554, 0x8554 }, /* 0x8555 */ { false, 0x8555, 0x8555 }, /* 0x8556 */ { false, 0x8556, 0x8556 }, /* 0x8557 */ { false, 0x8557, 0x8557 }, /* 0x8558 */ { false, 0x8558, 0x8558 }, /* 0x8559 */ { false, 0x8559, 0x8559 }, /* 0x855a */ { false, 0x855a, 0x855a }, /* 0x855b */ { false, 0x855b, 0x855b }, /* 0x855c */ { false, 0x855c, 0x855c }, /* 0x855d */ { false, 0x855d, 0x855d }, /* 0x855e */ { false, 0x855e, 0x855e }, /* 0x855f */ { false, 0x855f, 0x855f }, /* 0x8560 */ { false, 0x8560, 0x8560 }, /* 0x8561 */ { false, 0x8561, 0x8561 }, /* 0x8562 */ { false, 0x8562, 0x8562 }, /* 0x8563 */ { false, 0x8563, 0x8563 }, /* 0x8564 */ { false, 0x8564, 0x8564 }, /* 0x8565 */ { false, 0x8565, 0x8565 }, /* 0x8566 */ { false, 0x8566, 0x8566 }, /* 0x8567 */ { false, 0x8567, 0x8567 }, /* 0x8568 */ { false, 0x8568, 0x8568 }, /* 0x8569 */ { false, 0x8569, 0x8569 }, /* 0x856a */ { false, 0x856a, 0x856a }, /* 0x856b */ { false, 0x856b, 0x856b }, /* 0x856c */ { false, 0x856c, 0x856c }, /* 0x856d */ { false, 0x856d, 0x856d }, /* 0x856e */ { false, 0x856e, 0x856e }, /* 0x856f */ { false, 0x856f, 0x856f }, /* 0x8570 */ { false, 0x8570, 0x8570 }, /* 0x8571 */ { false, 0x8571, 0x8571 }, /* 0x8572 */ { false, 0x8572, 0x8572 }, /* 0x8573 */ { false, 0x8573, 0x8573 }, /* 0x8574 */ { false, 0x8574, 0x8574 }, /* 0x8575 */ { false, 0x8575, 0x8575 }, /* 0x8576 */ { false, 0x8576, 0x8576 }, /* 0x8577 */ { false, 0x8577, 0x8577 }, /* 0x8578 */ { false, 0x8578, 0x8578 }, /* 0x8579 */ { false, 0x8579, 0x8579 }, /* 0x857a */ { false, 0x857a, 0x857a }, /* 0x857b */ { false, 0x857b, 0x857b }, /* 0x857c */ { false, 0x857c, 0x857c }, /* 0x857d */ { false, 0x857d, 0x857d }, /* 0x857e */ { false, 0x857e, 0x857e }, /* 0x857f */ { false, 0x857f, 0x857f }, /* 0x8580 */ { false, 0x8580, 0x8580 }, /* 0x8581 */ { false, 0x8581, 0x8581 }, /* 0x8582 */ { false, 0x8582, 0x8582 }, /* 0x8583 */ { false, 0x8583, 0x8583 }, /* 0x8584 */ { false, 0x8584, 0x8584 }, /* 0x8585 */ { false, 0x8585, 0x8585 }, /* 0x8586 */ { false, 0x8586, 0x8586 }, /* 0x8587 */ { false, 0x8587, 0x8587 }, /* 0x8588 */ { false, 0x8588, 0x8588 }, /* 0x8589 */ { false, 0x8589, 0x8589 }, /* 0x858a */ { false, 0x858a, 0x858a }, /* 0x858b */ { false, 0x858b, 0x858b }, /* 0x858c */ { false, 0x858c, 0x858c }, /* 0x858d */ { false, 0x858d, 0x858d }, /* 0x858e */ { false, 0x858e, 0x858e }, /* 0x858f */ { false, 0x858f, 0x858f }, /* 0x8590 */ { false, 0x8590, 0x8590 }, /* 0x8591 */ { false, 0x8591, 0x8591 }, /* 0x8592 */ { false, 0x8592, 0x8592 }, /* 0x8593 */ { false, 0x8593, 0x8593 }, /* 0x8594 */ { false, 0x8594, 0x8594 }, /* 0x8595 */ { false, 0x8595, 0x8595 }, /* 0x8596 */ { false, 0x8596, 0x8596 }, /* 0x8597 */ { false, 0x8597, 0x8597 }, /* 0x8598 */ { false, 0x8598, 0x8598 }, /* 0x8599 */ { false, 0x8599, 0x8599 }, /* 0x859a */ { false, 0x859a, 0x859a }, /* 0x859b */ { false, 0x859b, 0x859b }, /* 0x859c */ { false, 0x859c, 0x859c }, /* 0x859d */ { false, 0x859d, 0x859d }, /* 0x859e */ { false, 0x859e, 0x859e }, /* 0x859f */ { false, 0x859f, 0x859f }, /* 0x85a0 */ { false, 0x85a0, 0x85a0 }, /* 0x85a1 */ { false, 0x85a1, 0x85a1 }, /* 0x85a2 */ { false, 0x85a2, 0x85a2 }, /* 0x85a3 */ { false, 0x85a3, 0x85a3 }, /* 0x85a4 */ { false, 0x85a4, 0x85a4 }, /* 0x85a5 */ { false, 0x85a5, 0x85a5 }, /* 0x85a6 */ { false, 0x85a6, 0x85a6 }, /* 0x85a7 */ { false, 0x85a7, 0x85a7 }, /* 0x85a8 */ { false, 0x85a8, 0x85a8 }, /* 0x85a9 */ { false, 0x85a9, 0x85a9 }, /* 0x85aa */ { false, 0x85aa, 0x85aa }, /* 0x85ab */ { false, 0x85ab, 0x85ab }, /* 0x85ac */ { false, 0x85ac, 0x85ac }, /* 0x85ad */ { false, 0x85ad, 0x85ad }, /* 0x85ae */ { false, 0x85ae, 0x85ae }, /* 0x85af */ { false, 0x85af, 0x85af }, /* 0x85b0 */ { false, 0x85b0, 0x85b0 }, /* 0x85b1 */ { false, 0x85b1, 0x85b1 }, /* 0x85b2 */ { false, 0x85b2, 0x85b2 }, /* 0x85b3 */ { false, 0x85b3, 0x85b3 }, /* 0x85b4 */ { false, 0x85b4, 0x85b4 }, /* 0x85b5 */ { false, 0x85b5, 0x85b5 }, /* 0x85b6 */ { false, 0x85b6, 0x85b6 }, /* 0x85b7 */ { false, 0x85b7, 0x85b7 }, /* 0x85b8 */ { false, 0x85b8, 0x85b8 }, /* 0x85b9 */ { false, 0x85b9, 0x85b9 }, /* 0x85ba */ { false, 0x85ba, 0x85ba }, /* 0x85bb */ { false, 0x85bb, 0x85bb }, /* 0x85bc */ { false, 0x85bc, 0x85bc }, /* 0x85bd */ { false, 0x85bd, 0x85bd }, /* 0x85be */ { false, 0x85be, 0x85be }, /* 0x85bf */ { false, 0x85bf, 0x85bf }, /* 0x85c0 */ { false, 0x85c0, 0x85c0 }, /* 0x85c1 */ { false, 0x85c1, 0x85c1 }, /* 0x85c2 */ { false, 0x85c2, 0x85c2 }, /* 0x85c3 */ { false, 0x85c3, 0x85c3 }, /* 0x85c4 */ { false, 0x85c4, 0x85c4 }, /* 0x85c5 */ { false, 0x85c5, 0x85c5 }, /* 0x85c6 */ { false, 0x85c6, 0x85c6 }, /* 0x85c7 */ { false, 0x85c7, 0x85c7 }, /* 0x85c8 */ { false, 0x85c8, 0x85c8 }, /* 0x85c9 */ { false, 0x85c9, 0x85c9 }, /* 0x85ca */ { false, 0x85ca, 0x85ca }, /* 0x85cb */ { false, 0x85cb, 0x85cb }, /* 0x85cc */ { false, 0x85cc, 0x85cc }, /* 0x85cd */ { false, 0x85cd, 0x85cd }, /* 0x85ce */ { false, 0x85ce, 0x85ce }, /* 0x85cf */ { false, 0x85cf, 0x85cf }, /* 0x85d0 */ { false, 0x85d0, 0x85d0 }, /* 0x85d1 */ { false, 0x85d1, 0x85d1 }, /* 0x85d2 */ { false, 0x85d2, 0x85d2 }, /* 0x85d3 */ { false, 0x85d3, 0x85d3 }, /* 0x85d4 */ { false, 0x85d4, 0x85d4 }, /* 0x85d5 */ { false, 0x85d5, 0x85d5 }, /* 0x85d6 */ { false, 0x85d6, 0x85d6 }, /* 0x85d7 */ { false, 0x85d7, 0x85d7 }, /* 0x85d8 */ { false, 0x85d8, 0x85d8 }, /* 0x85d9 */ { false, 0x85d9, 0x85d9 }, /* 0x85da */ { false, 0x85da, 0x85da }, /* 0x85db */ { false, 0x85db, 0x85db }, /* 0x85dc */ { false, 0x85dc, 0x85dc }, /* 0x85dd */ { false, 0x85dd, 0x85dd }, /* 0x85de */ { false, 0x85de, 0x85de }, /* 0x85df */ { false, 0x85df, 0x85df }, /* 0x85e0 */ { false, 0x85e0, 0x85e0 }, /* 0x85e1 */ { false, 0x85e1, 0x85e1 }, /* 0x85e2 */ { false, 0x85e2, 0x85e2 }, /* 0x85e3 */ { false, 0x85e3, 0x85e3 }, /* 0x85e4 */ { false, 0x85e4, 0x85e4 }, /* 0x85e5 */ { false, 0x85e5, 0x85e5 }, /* 0x85e6 */ { false, 0x85e6, 0x85e6 }, /* 0x85e7 */ { false, 0x85e7, 0x85e7 }, /* 0x85e8 */ { false, 0x85e8, 0x85e8 }, /* 0x85e9 */ { false, 0x85e9, 0x85e9 }, /* 0x85ea */ { false, 0x85ea, 0x85ea }, /* 0x85eb */ { false, 0x85eb, 0x85eb }, /* 0x85ec */ { false, 0x85ec, 0x85ec }, /* 0x85ed */ { false, 0x85ed, 0x85ed }, /* 0x85ee */ { false, 0x85ee, 0x85ee }, /* 0x85ef */ { false, 0x85ef, 0x85ef }, /* 0x85f0 */ { false, 0x85f0, 0x85f0 }, /* 0x85f1 */ { false, 0x85f1, 0x85f1 }, /* 0x85f2 */ { false, 0x85f2, 0x85f2 }, /* 0x85f3 */ { false, 0x85f3, 0x85f3 }, /* 0x85f4 */ { false, 0x85f4, 0x85f4 }, /* 0x85f5 */ { false, 0x85f5, 0x85f5 }, /* 0x85f6 */ { false, 0x85f6, 0x85f6 }, /* 0x85f7 */ { false, 0x85f7, 0x85f7 }, /* 0x85f8 */ { false, 0x85f8, 0x85f8 }, /* 0x85f9 */ { false, 0x85f9, 0x85f9 }, /* 0x85fa */ { false, 0x85fa, 0x85fa }, /* 0x85fb */ { false, 0x85fb, 0x85fb }, /* 0x85fc */ { false, 0x85fc, 0x85fc }, /* 0x85fd */ { false, 0x85fd, 0x85fd }, /* 0x85fe */ { false, 0x85fe, 0x85fe }, /* 0x85ff */ { false, 0x85ff, 0x85ff }, /* 0x8600 */ { false, 0x8600, 0x8600 }, /* 0x8601 */ { false, 0x8601, 0x8601 }, /* 0x8602 */ { false, 0x8602, 0x8602 }, /* 0x8603 */ { false, 0x8603, 0x8603 }, /* 0x8604 */ { false, 0x8604, 0x8604 }, /* 0x8605 */ { false, 0x8605, 0x8605 }, /* 0x8606 */ { false, 0x8606, 0x8606 }, /* 0x8607 */ { false, 0x8607, 0x8607 }, /* 0x8608 */ { false, 0x8608, 0x8608 }, /* 0x8609 */ { false, 0x8609, 0x8609 }, /* 0x860a */ { false, 0x860a, 0x860a }, /* 0x860b */ { false, 0x860b, 0x860b }, /* 0x860c */ { false, 0x860c, 0x860c }, /* 0x860d */ { false, 0x860d, 0x860d }, /* 0x860e */ { false, 0x860e, 0x860e }, /* 0x860f */ { false, 0x860f, 0x860f }, /* 0x8610 */ { false, 0x8610, 0x8610 }, /* 0x8611 */ { false, 0x8611, 0x8611 }, /* 0x8612 */ { false, 0x8612, 0x8612 }, /* 0x8613 */ { false, 0x8613, 0x8613 }, /* 0x8614 */ { false, 0x8614, 0x8614 }, /* 0x8615 */ { false, 0x8615, 0x8615 }, /* 0x8616 */ { false, 0x8616, 0x8616 }, /* 0x8617 */ { false, 0x8617, 0x8617 }, /* 0x8618 */ { false, 0x8618, 0x8618 }, /* 0x8619 */ { false, 0x8619, 0x8619 }, /* 0x861a */ { false, 0x861a, 0x861a }, /* 0x861b */ { false, 0x861b, 0x861b }, /* 0x861c */ { false, 0x861c, 0x861c }, /* 0x861d */ { false, 0x861d, 0x861d }, /* 0x861e */ { false, 0x861e, 0x861e }, /* 0x861f */ { false, 0x861f, 0x861f }, /* 0x8620 */ { false, 0x8620, 0x8620 }, /* 0x8621 */ { false, 0x8621, 0x8621 }, /* 0x8622 */ { false, 0x8622, 0x8622 }, /* 0x8623 */ { false, 0x8623, 0x8623 }, /* 0x8624 */ { false, 0x8624, 0x8624 }, /* 0x8625 */ { false, 0x8625, 0x8625 }, /* 0x8626 */ { false, 0x8626, 0x8626 }, /* 0x8627 */ { false, 0x8627, 0x8627 }, /* 0x8628 */ { false, 0x8628, 0x8628 }, /* 0x8629 */ { false, 0x8629, 0x8629 }, /* 0x862a */ { false, 0x862a, 0x862a }, /* 0x862b */ { false, 0x862b, 0x862b }, /* 0x862c */ { false, 0x862c, 0x862c }, /* 0x862d */ { false, 0x862d, 0x862d }, /* 0x862e */ { false, 0x862e, 0x862e }, /* 0x862f */ { false, 0x862f, 0x862f }, /* 0x8630 */ { false, 0x8630, 0x8630 }, /* 0x8631 */ { false, 0x8631, 0x8631 }, /* 0x8632 */ { false, 0x8632, 0x8632 }, /* 0x8633 */ { false, 0x8633, 0x8633 }, /* 0x8634 */ { false, 0x8634, 0x8634 }, /* 0x8635 */ { false, 0x8635, 0x8635 }, /* 0x8636 */ { false, 0x8636, 0x8636 }, /* 0x8637 */ { false, 0x8637, 0x8637 }, /* 0x8638 */ { false, 0x8638, 0x8638 }, /* 0x8639 */ { false, 0x8639, 0x8639 }, /* 0x863a */ { false, 0x863a, 0x863a }, /* 0x863b */ { false, 0x863b, 0x863b }, /* 0x863c */ { false, 0x863c, 0x863c }, /* 0x863d */ { false, 0x863d, 0x863d }, /* 0x863e */ { false, 0x863e, 0x863e }, /* 0x863f */ { false, 0x863f, 0x863f }, /* 0x8640 */ { false, 0x8640, 0x8640 }, /* 0x8641 */ { false, 0x8641, 0x8641 }, /* 0x8642 */ { false, 0x8642, 0x8642 }, /* 0x8643 */ { false, 0x8643, 0x8643 }, /* 0x8644 */ { false, 0x8644, 0x8644 }, /* 0x8645 */ { false, 0x8645, 0x8645 }, /* 0x8646 */ { false, 0x8646, 0x8646 }, /* 0x8647 */ { false, 0x8647, 0x8647 }, /* 0x8648 */ { false, 0x8648, 0x8648 }, /* 0x8649 */ { false, 0x8649, 0x8649 }, /* 0x864a */ { false, 0x864a, 0x864a }, /* 0x864b */ { false, 0x864b, 0x864b }, /* 0x864c */ { false, 0x864c, 0x864c }, /* 0x864d */ { false, 0x864d, 0x864d }, /* 0x864e */ { false, 0x864e, 0x864e }, /* 0x864f */ { false, 0x864f, 0x864f }, /* 0x8650 */ { false, 0x8650, 0x8650 }, /* 0x8651 */ { false, 0x8651, 0x8651 }, /* 0x8652 */ { false, 0x8652, 0x8652 }, /* 0x8653 */ { false, 0x8653, 0x8653 }, /* 0x8654 */ { false, 0x8654, 0x8654 }, /* 0x8655 */ { false, 0x8655, 0x8655 }, /* 0x8656 */ { false, 0x8656, 0x8656 }, /* 0x8657 */ { false, 0x8657, 0x8657 }, /* 0x8658 */ { false, 0x8658, 0x8658 }, /* 0x8659 */ { false, 0x8659, 0x8659 }, /* 0x865a */ { false, 0x865a, 0x865a }, /* 0x865b */ { false, 0x865b, 0x865b }, /* 0x865c */ { false, 0x865c, 0x865c }, /* 0x865d */ { false, 0x865d, 0x865d }, /* 0x865e */ { false, 0x865e, 0x865e }, /* 0x865f */ { false, 0x865f, 0x865f }, /* 0x8660 */ { false, 0x8660, 0x8660 }, /* 0x8661 */ { false, 0x8661, 0x8661 }, /* 0x8662 */ { false, 0x8662, 0x8662 }, /* 0x8663 */ { false, 0x8663, 0x8663 }, /* 0x8664 */ { false, 0x8664, 0x8664 }, /* 0x8665 */ { false, 0x8665, 0x8665 }, /* 0x8666 */ { false, 0x8666, 0x8666 }, /* 0x8667 */ { false, 0x8667, 0x8667 }, /* 0x8668 */ { false, 0x8668, 0x8668 }, /* 0x8669 */ { false, 0x8669, 0x8669 }, /* 0x866a */ { false, 0x866a, 0x866a }, /* 0x866b */ { false, 0x866b, 0x866b }, /* 0x866c */ { false, 0x866c, 0x866c }, /* 0x866d */ { false, 0x866d, 0x866d }, /* 0x866e */ { false, 0x866e, 0x866e }, /* 0x866f */ { false, 0x866f, 0x866f }, /* 0x8670 */ { false, 0x8670, 0x8670 }, /* 0x8671 */ { false, 0x8671, 0x8671 }, /* 0x8672 */ { false, 0x8672, 0x8672 }, /* 0x8673 */ { false, 0x8673, 0x8673 }, /* 0x8674 */ { false, 0x8674, 0x8674 }, /* 0x8675 */ { false, 0x8675, 0x8675 }, /* 0x8676 */ { false, 0x8676, 0x8676 }, /* 0x8677 */ { false, 0x8677, 0x8677 }, /* 0x8678 */ { false, 0x8678, 0x8678 }, /* 0x8679 */ { false, 0x8679, 0x8679 }, /* 0x867a */ { false, 0x867a, 0x867a }, /* 0x867b */ { false, 0x867b, 0x867b }, /* 0x867c */ { false, 0x867c, 0x867c }, /* 0x867d */ { false, 0x867d, 0x867d }, /* 0x867e */ { false, 0x867e, 0x867e }, /* 0x867f */ { false, 0x867f, 0x867f }, /* 0x8680 */ { false, 0x8680, 0x8680 }, /* 0x8681 */ { false, 0x8681, 0x8681 }, /* 0x8682 */ { false, 0x8682, 0x8682 }, /* 0x8683 */ { false, 0x8683, 0x8683 }, /* 0x8684 */ { false, 0x8684, 0x8684 }, /* 0x8685 */ { false, 0x8685, 0x8685 }, /* 0x8686 */ { false, 0x8686, 0x8686 }, /* 0x8687 */ { false, 0x8687, 0x8687 }, /* 0x8688 */ { false, 0x8688, 0x8688 }, /* 0x8689 */ { false, 0x8689, 0x8689 }, /* 0x868a */ { false, 0x868a, 0x868a }, /* 0x868b */ { false, 0x868b, 0x868b }, /* 0x868c */ { false, 0x868c, 0x868c }, /* 0x868d */ { false, 0x868d, 0x868d }, /* 0x868e */ { false, 0x868e, 0x868e }, /* 0x868f */ { false, 0x868f, 0x868f }, /* 0x8690 */ { false, 0x8690, 0x8690 }, /* 0x8691 */ { false, 0x8691, 0x8691 }, /* 0x8692 */ { false, 0x8692, 0x8692 }, /* 0x8693 */ { false, 0x8693, 0x8693 }, /* 0x8694 */ { false, 0x8694, 0x8694 }, /* 0x8695 */ { false, 0x8695, 0x8695 }, /* 0x8696 */ { false, 0x8696, 0x8696 }, /* 0x8697 */ { false, 0x8697, 0x8697 }, /* 0x8698 */ { false, 0x8698, 0x8698 }, /* 0x8699 */ { false, 0x8699, 0x8699 }, /* 0x869a */ { false, 0x869a, 0x869a }, /* 0x869b */ { false, 0x869b, 0x869b }, /* 0x869c */ { false, 0x869c, 0x869c }, /* 0x869d */ { false, 0x869d, 0x869d }, /* 0x869e */ { false, 0x869e, 0x869e }, /* 0x869f */ { false, 0x869f, 0x869f }, /* 0x86a0 */ { false, 0x86a0, 0x86a0 }, /* 0x86a1 */ { false, 0x86a1, 0x86a1 }, /* 0x86a2 */ { false, 0x86a2, 0x86a2 }, /* 0x86a3 */ { false, 0x86a3, 0x86a3 }, /* 0x86a4 */ { false, 0x86a4, 0x86a4 }, /* 0x86a5 */ { false, 0x86a5, 0x86a5 }, /* 0x86a6 */ { false, 0x86a6, 0x86a6 }, /* 0x86a7 */ { false, 0x86a7, 0x86a7 }, /* 0x86a8 */ { false, 0x86a8, 0x86a8 }, /* 0x86a9 */ { false, 0x86a9, 0x86a9 }, /* 0x86aa */ { false, 0x86aa, 0x86aa }, /* 0x86ab */ { false, 0x86ab, 0x86ab }, /* 0x86ac */ { false, 0x86ac, 0x86ac }, /* 0x86ad */ { false, 0x86ad, 0x86ad }, /* 0x86ae */ { false, 0x86ae, 0x86ae }, /* 0x86af */ { false, 0x86af, 0x86af }, /* 0x86b0 */ { false, 0x86b0, 0x86b0 }, /* 0x86b1 */ { false, 0x86b1, 0x86b1 }, /* 0x86b2 */ { false, 0x86b2, 0x86b2 }, /* 0x86b3 */ { false, 0x86b3, 0x86b3 }, /* 0x86b4 */ { false, 0x86b4, 0x86b4 }, /* 0x86b5 */ { false, 0x86b5, 0x86b5 }, /* 0x86b6 */ { false, 0x86b6, 0x86b6 }, /* 0x86b7 */ { false, 0x86b7, 0x86b7 }, /* 0x86b8 */ { false, 0x86b8, 0x86b8 }, /* 0x86b9 */ { false, 0x86b9, 0x86b9 }, /* 0x86ba */ { false, 0x86ba, 0x86ba }, /* 0x86bb */ { false, 0x86bb, 0x86bb }, /* 0x86bc */ { false, 0x86bc, 0x86bc }, /* 0x86bd */ { false, 0x86bd, 0x86bd }, /* 0x86be */ { false, 0x86be, 0x86be }, /* 0x86bf */ { false, 0x86bf, 0x86bf }, /* 0x86c0 */ { false, 0x86c0, 0x86c0 }, /* 0x86c1 */ { false, 0x86c1, 0x86c1 }, /* 0x86c2 */ { false, 0x86c2, 0x86c2 }, /* 0x86c3 */ { false, 0x86c3, 0x86c3 }, /* 0x86c4 */ { false, 0x86c4, 0x86c4 }, /* 0x86c5 */ { false, 0x86c5, 0x86c5 }, /* 0x86c6 */ { false, 0x86c6, 0x86c6 }, /* 0x86c7 */ { false, 0x86c7, 0x86c7 }, /* 0x86c8 */ { false, 0x86c8, 0x86c8 }, /* 0x86c9 */ { false, 0x86c9, 0x86c9 }, /* 0x86ca */ { false, 0x86ca, 0x86ca }, /* 0x86cb */ { false, 0x86cb, 0x86cb }, /* 0x86cc */ { false, 0x86cc, 0x86cc }, /* 0x86cd */ { false, 0x86cd, 0x86cd }, /* 0x86ce */ { false, 0x86ce, 0x86ce }, /* 0x86cf */ { false, 0x86cf, 0x86cf }, /* 0x86d0 */ { false, 0x86d0, 0x86d0 }, /* 0x86d1 */ { false, 0x86d1, 0x86d1 }, /* 0x86d2 */ { false, 0x86d2, 0x86d2 }, /* 0x86d3 */ { false, 0x86d3, 0x86d3 }, /* 0x86d4 */ { false, 0x86d4, 0x86d4 }, /* 0x86d5 */ { false, 0x86d5, 0x86d5 }, /* 0x86d6 */ { false, 0x86d6, 0x86d6 }, /* 0x86d7 */ { false, 0x86d7, 0x86d7 }, /* 0x86d8 */ { false, 0x86d8, 0x86d8 }, /* 0x86d9 */ { false, 0x86d9, 0x86d9 }, /* 0x86da */ { false, 0x86da, 0x86da }, /* 0x86db */ { false, 0x86db, 0x86db }, /* 0x86dc */ { false, 0x86dc, 0x86dc }, /* 0x86dd */ { false, 0x86dd, 0x86dd }, /* 0x86de */ { false, 0x86de, 0x86de }, /* 0x86df */ { false, 0x86df, 0x86df }, /* 0x86e0 */ { false, 0x86e0, 0x86e0 }, /* 0x86e1 */ { false, 0x86e1, 0x86e1 }, /* 0x86e2 */ { false, 0x86e2, 0x86e2 }, /* 0x86e3 */ { false, 0x86e3, 0x86e3 }, /* 0x86e4 */ { false, 0x86e4, 0x86e4 }, /* 0x86e5 */ { false, 0x86e5, 0x86e5 }, /* 0x86e6 */ { false, 0x86e6, 0x86e6 }, /* 0x86e7 */ { false, 0x86e7, 0x86e7 }, /* 0x86e8 */ { false, 0x86e8, 0x86e8 }, /* 0x86e9 */ { false, 0x86e9, 0x86e9 }, /* 0x86ea */ { false, 0x86ea, 0x86ea }, /* 0x86eb */ { false, 0x86eb, 0x86eb }, /* 0x86ec */ { false, 0x86ec, 0x86ec }, /* 0x86ed */ { false, 0x86ed, 0x86ed }, /* 0x86ee */ { false, 0x86ee, 0x86ee }, /* 0x86ef */ { false, 0x86ef, 0x86ef }, /* 0x86f0 */ { false, 0x86f0, 0x86f0 }, /* 0x86f1 */ { false, 0x86f1, 0x86f1 }, /* 0x86f2 */ { false, 0x86f2, 0x86f2 }, /* 0x86f3 */ { false, 0x86f3, 0x86f3 }, /* 0x86f4 */ { false, 0x86f4, 0x86f4 }, /* 0x86f5 */ { false, 0x86f5, 0x86f5 }, /* 0x86f6 */ { false, 0x86f6, 0x86f6 }, /* 0x86f7 */ { false, 0x86f7, 0x86f7 }, /* 0x86f8 */ { false, 0x86f8, 0x86f8 }, /* 0x86f9 */ { false, 0x86f9, 0x86f9 }, /* 0x86fa */ { false, 0x86fa, 0x86fa }, /* 0x86fb */ { false, 0x86fb, 0x86fb }, /* 0x86fc */ { false, 0x86fc, 0x86fc }, /* 0x86fd */ { false, 0x86fd, 0x86fd }, /* 0x86fe */ { false, 0x86fe, 0x86fe }, /* 0x86ff */ { false, 0x86ff, 0x86ff }, /* 0x8700 */ { false, 0x8700, 0x8700 }, /* 0x8701 */ { false, 0x8701, 0x8701 }, /* 0x8702 */ { false, 0x8702, 0x8702 }, /* 0x8703 */ { false, 0x8703, 0x8703 }, /* 0x8704 */ { false, 0x8704, 0x8704 }, /* 0x8705 */ { false, 0x8705, 0x8705 }, /* 0x8706 */ { false, 0x8706, 0x8706 }, /* 0x8707 */ { false, 0x8707, 0x8707 }, /* 0x8708 */ { false, 0x8708, 0x8708 }, /* 0x8709 */ { false, 0x8709, 0x8709 }, /* 0x870a */ { false, 0x870a, 0x870a }, /* 0x870b */ { false, 0x870b, 0x870b }, /* 0x870c */ { false, 0x870c, 0x870c }, /* 0x870d */ { false, 0x870d, 0x870d }, /* 0x870e */ { false, 0x870e, 0x870e }, /* 0x870f */ { false, 0x870f, 0x870f }, /* 0x8710 */ { false, 0x8710, 0x8710 }, /* 0x8711 */ { false, 0x8711, 0x8711 }, /* 0x8712 */ { false, 0x8712, 0x8712 }, /* 0x8713 */ { false, 0x8713, 0x8713 }, /* 0x8714 */ { false, 0x8714, 0x8714 }, /* 0x8715 */ { false, 0x8715, 0x8715 }, /* 0x8716 */ { false, 0x8716, 0x8716 }, /* 0x8717 */ { false, 0x8717, 0x8717 }, /* 0x8718 */ { false, 0x8718, 0x8718 }, /* 0x8719 */ { false, 0x8719, 0x8719 }, /* 0x871a */ { false, 0x871a, 0x871a }, /* 0x871b */ { false, 0x871b, 0x871b }, /* 0x871c */ { false, 0x871c, 0x871c }, /* 0x871d */ { false, 0x871d, 0x871d }, /* 0x871e */ { false, 0x871e, 0x871e }, /* 0x871f */ { false, 0x871f, 0x871f }, /* 0x8720 */ { false, 0x8720, 0x8720 }, /* 0x8721 */ { false, 0x8721, 0x8721 }, /* 0x8722 */ { false, 0x8722, 0x8722 }, /* 0x8723 */ { false, 0x8723, 0x8723 }, /* 0x8724 */ { false, 0x8724, 0x8724 }, /* 0x8725 */ { false, 0x8725, 0x8725 }, /* 0x8726 */ { false, 0x8726, 0x8726 }, /* 0x8727 */ { false, 0x8727, 0x8727 }, /* 0x8728 */ { false, 0x8728, 0x8728 }, /* 0x8729 */ { false, 0x8729, 0x8729 }, /* 0x872a */ { false, 0x872a, 0x872a }, /* 0x872b */ { false, 0x872b, 0x872b }, /* 0x872c */ { false, 0x872c, 0x872c }, /* 0x872d */ { false, 0x872d, 0x872d }, /* 0x872e */ { false, 0x872e, 0x872e }, /* 0x872f */ { false, 0x872f, 0x872f }, /* 0x8730 */ { false, 0x8730, 0x8730 }, /* 0x8731 */ { false, 0x8731, 0x8731 }, /* 0x8732 */ { false, 0x8732, 0x8732 }, /* 0x8733 */ { false, 0x8733, 0x8733 }, /* 0x8734 */ { false, 0x8734, 0x8734 }, /* 0x8735 */ { false, 0x8735, 0x8735 }, /* 0x8736 */ { false, 0x8736, 0x8736 }, /* 0x8737 */ { false, 0x8737, 0x8737 }, /* 0x8738 */ { false, 0x8738, 0x8738 }, /* 0x8739 */ { false, 0x8739, 0x8739 }, /* 0x873a */ { false, 0x873a, 0x873a }, /* 0x873b */ { false, 0x873b, 0x873b }, /* 0x873c */ { false, 0x873c, 0x873c }, /* 0x873d */ { false, 0x873d, 0x873d }, /* 0x873e */ { false, 0x873e, 0x873e }, /* 0x873f */ { false, 0x873f, 0x873f }, /* 0x8740 */ { false, 0x8740, 0x8740 }, /* 0x8741 */ { false, 0x8741, 0x8741 }, /* 0x8742 */ { false, 0x8742, 0x8742 }, /* 0x8743 */ { false, 0x8743, 0x8743 }, /* 0x8744 */ { false, 0x8744, 0x8744 }, /* 0x8745 */ { false, 0x8745, 0x8745 }, /* 0x8746 */ { false, 0x8746, 0x8746 }, /* 0x8747 */ { false, 0x8747, 0x8747 }, /* 0x8748 */ { false, 0x8748, 0x8748 }, /* 0x8749 */ { false, 0x8749, 0x8749 }, /* 0x874a */ { false, 0x874a, 0x874a }, /* 0x874b */ { false, 0x874b, 0x874b }, /* 0x874c */ { false, 0x874c, 0x874c }, /* 0x874d */ { false, 0x874d, 0x874d }, /* 0x874e */ { false, 0x874e, 0x874e }, /* 0x874f */ { false, 0x874f, 0x874f }, /* 0x8750 */ { false, 0x8750, 0x8750 }, /* 0x8751 */ { false, 0x8751, 0x8751 }, /* 0x8752 */ { false, 0x8752, 0x8752 }, /* 0x8753 */ { false, 0x8753, 0x8753 }, /* 0x8754 */ { false, 0x8754, 0x8754 }, /* 0x8755 */ { false, 0x8755, 0x8755 }, /* 0x8756 */ { false, 0x8756, 0x8756 }, /* 0x8757 */ { false, 0x8757, 0x8757 }, /* 0x8758 */ { false, 0x8758, 0x8758 }, /* 0x8759 */ { false, 0x8759, 0x8759 }, /* 0x875a */ { false, 0x875a, 0x875a }, /* 0x875b */ { false, 0x875b, 0x875b }, /* 0x875c */ { false, 0x875c, 0x875c }, /* 0x875d */ { false, 0x875d, 0x875d }, /* 0x875e */ { false, 0x875e, 0x875e }, /* 0x875f */ { false, 0x875f, 0x875f }, /* 0x8760 */ { false, 0x8760, 0x8760 }, /* 0x8761 */ { false, 0x8761, 0x8761 }, /* 0x8762 */ { false, 0x8762, 0x8762 }, /* 0x8763 */ { false, 0x8763, 0x8763 }, /* 0x8764 */ { false, 0x8764, 0x8764 }, /* 0x8765 */ { false, 0x8765, 0x8765 }, /* 0x8766 */ { false, 0x8766, 0x8766 }, /* 0x8767 */ { false, 0x8767, 0x8767 }, /* 0x8768 */ { false, 0x8768, 0x8768 }, /* 0x8769 */ { false, 0x8769, 0x8769 }, /* 0x876a */ { false, 0x876a, 0x876a }, /* 0x876b */ { false, 0x876b, 0x876b }, /* 0x876c */ { false, 0x876c, 0x876c }, /* 0x876d */ { false, 0x876d, 0x876d }, /* 0x876e */ { false, 0x876e, 0x876e }, /* 0x876f */ { false, 0x876f, 0x876f }, /* 0x8770 */ { false, 0x8770, 0x8770 }, /* 0x8771 */ { false, 0x8771, 0x8771 }, /* 0x8772 */ { false, 0x8772, 0x8772 }, /* 0x8773 */ { false, 0x8773, 0x8773 }, /* 0x8774 */ { false, 0x8774, 0x8774 }, /* 0x8775 */ { false, 0x8775, 0x8775 }, /* 0x8776 */ { false, 0x8776, 0x8776 }, /* 0x8777 */ { false, 0x8777, 0x8777 }, /* 0x8778 */ { false, 0x8778, 0x8778 }, /* 0x8779 */ { false, 0x8779, 0x8779 }, /* 0x877a */ { false, 0x877a, 0x877a }, /* 0x877b */ { false, 0x877b, 0x877b }, /* 0x877c */ { false, 0x877c, 0x877c }, /* 0x877d */ { false, 0x877d, 0x877d }, /* 0x877e */ { false, 0x877e, 0x877e }, /* 0x877f */ { false, 0x877f, 0x877f }, /* 0x8780 */ { false, 0x8780, 0x8780 }, /* 0x8781 */ { false, 0x8781, 0x8781 }, /* 0x8782 */ { false, 0x8782, 0x8782 }, /* 0x8783 */ { false, 0x8783, 0x8783 }, /* 0x8784 */ { false, 0x8784, 0x8784 }, /* 0x8785 */ { false, 0x8785, 0x8785 }, /* 0x8786 */ { false, 0x8786, 0x8786 }, /* 0x8787 */ { false, 0x8787, 0x8787 }, /* 0x8788 */ { false, 0x8788, 0x8788 }, /* 0x8789 */ { false, 0x8789, 0x8789 }, /* 0x878a */ { false, 0x878a, 0x878a }, /* 0x878b */ { false, 0x878b, 0x878b }, /* 0x878c */ { false, 0x878c, 0x878c }, /* 0x878d */ { false, 0x878d, 0x878d }, /* 0x878e */ { false, 0x878e, 0x878e }, /* 0x878f */ { false, 0x878f, 0x878f }, /* 0x8790 */ { false, 0x8790, 0x8790 }, /* 0x8791 */ { false, 0x8791, 0x8791 }, /* 0x8792 */ { false, 0x8792, 0x8792 }, /* 0x8793 */ { false, 0x8793, 0x8793 }, /* 0x8794 */ { false, 0x8794, 0x8794 }, /* 0x8795 */ { false, 0x8795, 0x8795 }, /* 0x8796 */ { false, 0x8796, 0x8796 }, /* 0x8797 */ { false, 0x8797, 0x8797 }, /* 0x8798 */ { false, 0x8798, 0x8798 }, /* 0x8799 */ { false, 0x8799, 0x8799 }, /* 0x879a */ { false, 0x879a, 0x879a }, /* 0x879b */ { false, 0x879b, 0x879b }, /* 0x879c */ { false, 0x879c, 0x879c }, /* 0x879d */ { false, 0x879d, 0x879d }, /* 0x879e */ { false, 0x879e, 0x879e }, /* 0x879f */ { false, 0x879f, 0x879f }, /* 0x87a0 */ { false, 0x87a0, 0x87a0 }, /* 0x87a1 */ { false, 0x87a1, 0x87a1 }, /* 0x87a2 */ { false, 0x87a2, 0x87a2 }, /* 0x87a3 */ { false, 0x87a3, 0x87a3 }, /* 0x87a4 */ { false, 0x87a4, 0x87a4 }, /* 0x87a5 */ { false, 0x87a5, 0x87a5 }, /* 0x87a6 */ { false, 0x87a6, 0x87a6 }, /* 0x87a7 */ { false, 0x87a7, 0x87a7 }, /* 0x87a8 */ { false, 0x87a8, 0x87a8 }, /* 0x87a9 */ { false, 0x87a9, 0x87a9 }, /* 0x87aa */ { false, 0x87aa, 0x87aa }, /* 0x87ab */ { false, 0x87ab, 0x87ab }, /* 0x87ac */ { false, 0x87ac, 0x87ac }, /* 0x87ad */ { false, 0x87ad, 0x87ad }, /* 0x87ae */ { false, 0x87ae, 0x87ae }, /* 0x87af */ { false, 0x87af, 0x87af }, /* 0x87b0 */ { false, 0x87b0, 0x87b0 }, /* 0x87b1 */ { false, 0x87b1, 0x87b1 }, /* 0x87b2 */ { false, 0x87b2, 0x87b2 }, /* 0x87b3 */ { false, 0x87b3, 0x87b3 }, /* 0x87b4 */ { false, 0x87b4, 0x87b4 }, /* 0x87b5 */ { false, 0x87b5, 0x87b5 }, /* 0x87b6 */ { false, 0x87b6, 0x87b6 }, /* 0x87b7 */ { false, 0x87b7, 0x87b7 }, /* 0x87b8 */ { false, 0x87b8, 0x87b8 }, /* 0x87b9 */ { false, 0x87b9, 0x87b9 }, /* 0x87ba */ { false, 0x87ba, 0x87ba }, /* 0x87bb */ { false, 0x87bb, 0x87bb }, /* 0x87bc */ { false, 0x87bc, 0x87bc }, /* 0x87bd */ { false, 0x87bd, 0x87bd }, /* 0x87be */ { false, 0x87be, 0x87be }, /* 0x87bf */ { false, 0x87bf, 0x87bf }, /* 0x87c0 */ { false, 0x87c0, 0x87c0 }, /* 0x87c1 */ { false, 0x87c1, 0x87c1 }, /* 0x87c2 */ { false, 0x87c2, 0x87c2 }, /* 0x87c3 */ { false, 0x87c3, 0x87c3 }, /* 0x87c4 */ { false, 0x87c4, 0x87c4 }, /* 0x87c5 */ { false, 0x87c5, 0x87c5 }, /* 0x87c6 */ { false, 0x87c6, 0x87c6 }, /* 0x87c7 */ { false, 0x87c7, 0x87c7 }, /* 0x87c8 */ { false, 0x87c8, 0x87c8 }, /* 0x87c9 */ { false, 0x87c9, 0x87c9 }, /* 0x87ca */ { false, 0x87ca, 0x87ca }, /* 0x87cb */ { false, 0x87cb, 0x87cb }, /* 0x87cc */ { false, 0x87cc, 0x87cc }, /* 0x87cd */ { false, 0x87cd, 0x87cd }, /* 0x87ce */ { false, 0x87ce, 0x87ce }, /* 0x87cf */ { false, 0x87cf, 0x87cf }, /* 0x87d0 */ { false, 0x87d0, 0x87d0 }, /* 0x87d1 */ { false, 0x87d1, 0x87d1 }, /* 0x87d2 */ { false, 0x87d2, 0x87d2 }, /* 0x87d3 */ { false, 0x87d3, 0x87d3 }, /* 0x87d4 */ { false, 0x87d4, 0x87d4 }, /* 0x87d5 */ { false, 0x87d5, 0x87d5 }, /* 0x87d6 */ { false, 0x87d6, 0x87d6 }, /* 0x87d7 */ { false, 0x87d7, 0x87d7 }, /* 0x87d8 */ { false, 0x87d8, 0x87d8 }, /* 0x87d9 */ { false, 0x87d9, 0x87d9 }, /* 0x87da */ { false, 0x87da, 0x87da }, /* 0x87db */ { false, 0x87db, 0x87db }, /* 0x87dc */ { false, 0x87dc, 0x87dc }, /* 0x87dd */ { false, 0x87dd, 0x87dd }, /* 0x87de */ { false, 0x87de, 0x87de }, /* 0x87df */ { false, 0x87df, 0x87df }, /* 0x87e0 */ { false, 0x87e0, 0x87e0 }, /* 0x87e1 */ { false, 0x87e1, 0x87e1 }, /* 0x87e2 */ { false, 0x87e2, 0x87e2 }, /* 0x87e3 */ { false, 0x87e3, 0x87e3 }, /* 0x87e4 */ { false, 0x87e4, 0x87e4 }, /* 0x87e5 */ { false, 0x87e5, 0x87e5 }, /* 0x87e6 */ { false, 0x87e6, 0x87e6 }, /* 0x87e7 */ { false, 0x87e7, 0x87e7 }, /* 0x87e8 */ { false, 0x87e8, 0x87e8 }, /* 0x87e9 */ { false, 0x87e9, 0x87e9 }, /* 0x87ea */ { false, 0x87ea, 0x87ea }, /* 0x87eb */ { false, 0x87eb, 0x87eb }, /* 0x87ec */ { false, 0x87ec, 0x87ec }, /* 0x87ed */ { false, 0x87ed, 0x87ed }, /* 0x87ee */ { false, 0x87ee, 0x87ee }, /* 0x87ef */ { false, 0x87ef, 0x87ef }, /* 0x87f0 */ { false, 0x87f0, 0x87f0 }, /* 0x87f1 */ { false, 0x87f1, 0x87f1 }, /* 0x87f2 */ { false, 0x87f2, 0x87f2 }, /* 0x87f3 */ { false, 0x87f3, 0x87f3 }, /* 0x87f4 */ { false, 0x87f4, 0x87f4 }, /* 0x87f5 */ { false, 0x87f5, 0x87f5 }, /* 0x87f6 */ { false, 0x87f6, 0x87f6 }, /* 0x87f7 */ { false, 0x87f7, 0x87f7 }, /* 0x87f8 */ { false, 0x87f8, 0x87f8 }, /* 0x87f9 */ { false, 0x87f9, 0x87f9 }, /* 0x87fa */ { false, 0x87fa, 0x87fa }, /* 0x87fb */ { false, 0x87fb, 0x87fb }, /* 0x87fc */ { false, 0x87fc, 0x87fc }, /* 0x87fd */ { false, 0x87fd, 0x87fd }, /* 0x87fe */ { false, 0x87fe, 0x87fe }, /* 0x87ff */ { false, 0x87ff, 0x87ff }, /* 0x8800 */ { false, 0x8800, 0x8800 }, /* 0x8801 */ { false, 0x8801, 0x8801 }, /* 0x8802 */ { false, 0x8802, 0x8802 }, /* 0x8803 */ { false, 0x8803, 0x8803 }, /* 0x8804 */ { false, 0x8804, 0x8804 }, /* 0x8805 */ { false, 0x8805, 0x8805 }, /* 0x8806 */ { false, 0x8806, 0x8806 }, /* 0x8807 */ { false, 0x8807, 0x8807 }, /* 0x8808 */ { false, 0x8808, 0x8808 }, /* 0x8809 */ { false, 0x8809, 0x8809 }, /* 0x880a */ { false, 0x880a, 0x880a }, /* 0x880b */ { false, 0x880b, 0x880b }, /* 0x880c */ { false, 0x880c, 0x880c }, /* 0x880d */ { false, 0x880d, 0x880d }, /* 0x880e */ { false, 0x880e, 0x880e }, /* 0x880f */ { false, 0x880f, 0x880f }, /* 0x8810 */ { false, 0x8810, 0x8810 }, /* 0x8811 */ { false, 0x8811, 0x8811 }, /* 0x8812 */ { false, 0x8812, 0x8812 }, /* 0x8813 */ { false, 0x8813, 0x8813 }, /* 0x8814 */ { false, 0x8814, 0x8814 }, /* 0x8815 */ { false, 0x8815, 0x8815 }, /* 0x8816 */ { false, 0x8816, 0x8816 }, /* 0x8817 */ { false, 0x8817, 0x8817 }, /* 0x8818 */ { false, 0x8818, 0x8818 }, /* 0x8819 */ { false, 0x8819, 0x8819 }, /* 0x881a */ { false, 0x881a, 0x881a }, /* 0x881b */ { false, 0x881b, 0x881b }, /* 0x881c */ { false, 0x881c, 0x881c }, /* 0x881d */ { false, 0x881d, 0x881d }, /* 0x881e */ { false, 0x881e, 0x881e }, /* 0x881f */ { false, 0x881f, 0x881f }, /* 0x8820 */ { false, 0x8820, 0x8820 }, /* 0x8821 */ { false, 0x8821, 0x8821 }, /* 0x8822 */ { false, 0x8822, 0x8822 }, /* 0x8823 */ { false, 0x8823, 0x8823 }, /* 0x8824 */ { false, 0x8824, 0x8824 }, /* 0x8825 */ { false, 0x8825, 0x8825 }, /* 0x8826 */ { false, 0x8826, 0x8826 }, /* 0x8827 */ { false, 0x8827, 0x8827 }, /* 0x8828 */ { false, 0x8828, 0x8828 }, /* 0x8829 */ { false, 0x8829, 0x8829 }, /* 0x882a */ { false, 0x882a, 0x882a }, /* 0x882b */ { false, 0x882b, 0x882b }, /* 0x882c */ { false, 0x882c, 0x882c }, /* 0x882d */ { false, 0x882d, 0x882d }, /* 0x882e */ { false, 0x882e, 0x882e }, /* 0x882f */ { false, 0x882f, 0x882f }, /* 0x8830 */ { false, 0x8830, 0x8830 }, /* 0x8831 */ { false, 0x8831, 0x8831 }, /* 0x8832 */ { false, 0x8832, 0x8832 }, /* 0x8833 */ { false, 0x8833, 0x8833 }, /* 0x8834 */ { false, 0x8834, 0x8834 }, /* 0x8835 */ { false, 0x8835, 0x8835 }, /* 0x8836 */ { false, 0x8836, 0x8836 }, /* 0x8837 */ { false, 0x8837, 0x8837 }, /* 0x8838 */ { false, 0x8838, 0x8838 }, /* 0x8839 */ { false, 0x8839, 0x8839 }, /* 0x883a */ { false, 0x883a, 0x883a }, /* 0x883b */ { false, 0x883b, 0x883b }, /* 0x883c */ { false, 0x883c, 0x883c }, /* 0x883d */ { false, 0x883d, 0x883d }, /* 0x883e */ { false, 0x883e, 0x883e }, /* 0x883f */ { false, 0x883f, 0x883f }, /* 0x8840 */ { false, 0x8840, 0x8840 }, /* 0x8841 */ { false, 0x8841, 0x8841 }, /* 0x8842 */ { false, 0x8842, 0x8842 }, /* 0x8843 */ { false, 0x8843, 0x8843 }, /* 0x8844 */ { false, 0x8844, 0x8844 }, /* 0x8845 */ { false, 0x8845, 0x8845 }, /* 0x8846 */ { false, 0x8846, 0x8846 }, /* 0x8847 */ { false, 0x8847, 0x8847 }, /* 0x8848 */ { false, 0x8848, 0x8848 }, /* 0x8849 */ { false, 0x8849, 0x8849 }, /* 0x884a */ { false, 0x884a, 0x884a }, /* 0x884b */ { false, 0x884b, 0x884b }, /* 0x884c */ { false, 0x884c, 0x884c }, /* 0x884d */ { false, 0x884d, 0x884d }, /* 0x884e */ { false, 0x884e, 0x884e }, /* 0x884f */ { false, 0x884f, 0x884f }, /* 0x8850 */ { false, 0x8850, 0x8850 }, /* 0x8851 */ { false, 0x8851, 0x8851 }, /* 0x8852 */ { false, 0x8852, 0x8852 }, /* 0x8853 */ { false, 0x8853, 0x8853 }, /* 0x8854 */ { false, 0x8854, 0x8854 }, /* 0x8855 */ { false, 0x8855, 0x8855 }, /* 0x8856 */ { false, 0x8856, 0x8856 }, /* 0x8857 */ { false, 0x8857, 0x8857 }, /* 0x8858 */ { false, 0x8858, 0x8858 }, /* 0x8859 */ { false, 0x8859, 0x8859 }, /* 0x885a */ { false, 0x885a, 0x885a }, /* 0x885b */ { false, 0x885b, 0x885b }, /* 0x885c */ { false, 0x885c, 0x885c }, /* 0x885d */ { false, 0x885d, 0x885d }, /* 0x885e */ { false, 0x885e, 0x885e }, /* 0x885f */ { false, 0x885f, 0x885f }, /* 0x8860 */ { false, 0x8860, 0x8860 }, /* 0x8861 */ { false, 0x8861, 0x8861 }, /* 0x8862 */ { false, 0x8862, 0x8862 }, /* 0x8863 */ { false, 0x8863, 0x8863 }, /* 0x8864 */ { false, 0x8864, 0x8864 }, /* 0x8865 */ { false, 0x8865, 0x8865 }, /* 0x8866 */ { false, 0x8866, 0x8866 }, /* 0x8867 */ { false, 0x8867, 0x8867 }, /* 0x8868 */ { false, 0x8868, 0x8868 }, /* 0x8869 */ { false, 0x8869, 0x8869 }, /* 0x886a */ { false, 0x886a, 0x886a }, /* 0x886b */ { false, 0x886b, 0x886b }, /* 0x886c */ { false, 0x886c, 0x886c }, /* 0x886d */ { false, 0x886d, 0x886d }, /* 0x886e */ { false, 0x886e, 0x886e }, /* 0x886f */ { false, 0x886f, 0x886f }, /* 0x8870 */ { false, 0x8870, 0x8870 }, /* 0x8871 */ { false, 0x8871, 0x8871 }, /* 0x8872 */ { false, 0x8872, 0x8872 }, /* 0x8873 */ { false, 0x8873, 0x8873 }, /* 0x8874 */ { false, 0x8874, 0x8874 }, /* 0x8875 */ { false, 0x8875, 0x8875 }, /* 0x8876 */ { false, 0x8876, 0x8876 }, /* 0x8877 */ { false, 0x8877, 0x8877 }, /* 0x8878 */ { false, 0x8878, 0x8878 }, /* 0x8879 */ { false, 0x8879, 0x8879 }, /* 0x887a */ { false, 0x887a, 0x887a }, /* 0x887b */ { false, 0x887b, 0x887b }, /* 0x887c */ { false, 0x887c, 0x887c }, /* 0x887d */ { false, 0x887d, 0x887d }, /* 0x887e */ { false, 0x887e, 0x887e }, /* 0x887f */ { false, 0x887f, 0x887f }, /* 0x8880 */ { false, 0x8880, 0x8880 }, /* 0x8881 */ { false, 0x8881, 0x8881 }, /* 0x8882 */ { false, 0x8882, 0x8882 }, /* 0x8883 */ { false, 0x8883, 0x8883 }, /* 0x8884 */ { false, 0x8884, 0x8884 }, /* 0x8885 */ { false, 0x8885, 0x8885 }, /* 0x8886 */ { false, 0x8886, 0x8886 }, /* 0x8887 */ { false, 0x8887, 0x8887 }, /* 0x8888 */ { false, 0x8888, 0x8888 }, /* 0x8889 */ { false, 0x8889, 0x8889 }, /* 0x888a */ { false, 0x888a, 0x888a }, /* 0x888b */ { false, 0x888b, 0x888b }, /* 0x888c */ { false, 0x888c, 0x888c }, /* 0x888d */ { false, 0x888d, 0x888d }, /* 0x888e */ { false, 0x888e, 0x888e }, /* 0x888f */ { false, 0x888f, 0x888f }, /* 0x8890 */ { false, 0x8890, 0x8890 }, /* 0x8891 */ { false, 0x8891, 0x8891 }, /* 0x8892 */ { false, 0x8892, 0x8892 }, /* 0x8893 */ { false, 0x8893, 0x8893 }, /* 0x8894 */ { false, 0x8894, 0x8894 }, /* 0x8895 */ { false, 0x8895, 0x8895 }, /* 0x8896 */ { false, 0x8896, 0x8896 }, /* 0x8897 */ { false, 0x8897, 0x8897 }, /* 0x8898 */ { false, 0x8898, 0x8898 }, /* 0x8899 */ { false, 0x8899, 0x8899 }, /* 0x889a */ { false, 0x889a, 0x889a }, /* 0x889b */ { false, 0x889b, 0x889b }, /* 0x889c */ { false, 0x889c, 0x889c }, /* 0x889d */ { false, 0x889d, 0x889d }, /* 0x889e */ { false, 0x889e, 0x889e }, /* 0x889f */ { false, 0x889f, 0x889f }, /* 0x88a0 */ { false, 0x88a0, 0x88a0 }, /* 0x88a1 */ { false, 0x88a1, 0x88a1 }, /* 0x88a2 */ { false, 0x88a2, 0x88a2 }, /* 0x88a3 */ { false, 0x88a3, 0x88a3 }, /* 0x88a4 */ { false, 0x88a4, 0x88a4 }, /* 0x88a5 */ { false, 0x88a5, 0x88a5 }, /* 0x88a6 */ { false, 0x88a6, 0x88a6 }, /* 0x88a7 */ { false, 0x88a7, 0x88a7 }, /* 0x88a8 */ { false, 0x88a8, 0x88a8 }, /* 0x88a9 */ { false, 0x88a9, 0x88a9 }, /* 0x88aa */ { false, 0x88aa, 0x88aa }, /* 0x88ab */ { false, 0x88ab, 0x88ab }, /* 0x88ac */ { false, 0x88ac, 0x88ac }, /* 0x88ad */ { false, 0x88ad, 0x88ad }, /* 0x88ae */ { false, 0x88ae, 0x88ae }, /* 0x88af */ { false, 0x88af, 0x88af }, /* 0x88b0 */ { false, 0x88b0, 0x88b0 }, /* 0x88b1 */ { false, 0x88b1, 0x88b1 }, /* 0x88b2 */ { false, 0x88b2, 0x88b2 }, /* 0x88b3 */ { false, 0x88b3, 0x88b3 }, /* 0x88b4 */ { false, 0x88b4, 0x88b4 }, /* 0x88b5 */ { false, 0x88b5, 0x88b5 }, /* 0x88b6 */ { false, 0x88b6, 0x88b6 }, /* 0x88b7 */ { false, 0x88b7, 0x88b7 }, /* 0x88b8 */ { false, 0x88b8, 0x88b8 }, /* 0x88b9 */ { false, 0x88b9, 0x88b9 }, /* 0x88ba */ { false, 0x88ba, 0x88ba }, /* 0x88bb */ { false, 0x88bb, 0x88bb }, /* 0x88bc */ { false, 0x88bc, 0x88bc }, /* 0x88bd */ { false, 0x88bd, 0x88bd }, /* 0x88be */ { false, 0x88be, 0x88be }, /* 0x88bf */ { false, 0x88bf, 0x88bf }, /* 0x88c0 */ { false, 0x88c0, 0x88c0 }, /* 0x88c1 */ { false, 0x88c1, 0x88c1 }, /* 0x88c2 */ { false, 0x88c2, 0x88c2 }, /* 0x88c3 */ { false, 0x88c3, 0x88c3 }, /* 0x88c4 */ { false, 0x88c4, 0x88c4 }, /* 0x88c5 */ { false, 0x88c5, 0x88c5 }, /* 0x88c6 */ { false, 0x88c6, 0x88c6 }, /* 0x88c7 */ { false, 0x88c7, 0x88c7 }, /* 0x88c8 */ { false, 0x88c8, 0x88c8 }, /* 0x88c9 */ { false, 0x88c9, 0x88c9 }, /* 0x88ca */ { false, 0x88ca, 0x88ca }, /* 0x88cb */ { false, 0x88cb, 0x88cb }, /* 0x88cc */ { false, 0x88cc, 0x88cc }, /* 0x88cd */ { false, 0x88cd, 0x88cd }, /* 0x88ce */ { false, 0x88ce, 0x88ce }, /* 0x88cf */ { false, 0x88cf, 0x88cf }, /* 0x88d0 */ { false, 0x88d0, 0x88d0 }, /* 0x88d1 */ { false, 0x88d1, 0x88d1 }, /* 0x88d2 */ { false, 0x88d2, 0x88d2 }, /* 0x88d3 */ { false, 0x88d3, 0x88d3 }, /* 0x88d4 */ { false, 0x88d4, 0x88d4 }, /* 0x88d5 */ { false, 0x88d5, 0x88d5 }, /* 0x88d6 */ { false, 0x88d6, 0x88d6 }, /* 0x88d7 */ { false, 0x88d7, 0x88d7 }, /* 0x88d8 */ { false, 0x88d8, 0x88d8 }, /* 0x88d9 */ { false, 0x88d9, 0x88d9 }, /* 0x88da */ { false, 0x88da, 0x88da }, /* 0x88db */ { false, 0x88db, 0x88db }, /* 0x88dc */ { false, 0x88dc, 0x88dc }, /* 0x88dd */ { false, 0x88dd, 0x88dd }, /* 0x88de */ { false, 0x88de, 0x88de }, /* 0x88df */ { false, 0x88df, 0x88df }, /* 0x88e0 */ { false, 0x88e0, 0x88e0 }, /* 0x88e1 */ { false, 0x88e1, 0x88e1 }, /* 0x88e2 */ { false, 0x88e2, 0x88e2 }, /* 0x88e3 */ { false, 0x88e3, 0x88e3 }, /* 0x88e4 */ { false, 0x88e4, 0x88e4 }, /* 0x88e5 */ { false, 0x88e5, 0x88e5 }, /* 0x88e6 */ { false, 0x88e6, 0x88e6 }, /* 0x88e7 */ { false, 0x88e7, 0x88e7 }, /* 0x88e8 */ { false, 0x88e8, 0x88e8 }, /* 0x88e9 */ { false, 0x88e9, 0x88e9 }, /* 0x88ea */ { false, 0x88ea, 0x88ea }, /* 0x88eb */ { false, 0x88eb, 0x88eb }, /* 0x88ec */ { false, 0x88ec, 0x88ec }, /* 0x88ed */ { false, 0x88ed, 0x88ed }, /* 0x88ee */ { false, 0x88ee, 0x88ee }, /* 0x88ef */ { false, 0x88ef, 0x88ef }, /* 0x88f0 */ { false, 0x88f0, 0x88f0 }, /* 0x88f1 */ { false, 0x88f1, 0x88f1 }, /* 0x88f2 */ { false, 0x88f2, 0x88f2 }, /* 0x88f3 */ { false, 0x88f3, 0x88f3 }, /* 0x88f4 */ { false, 0x88f4, 0x88f4 }, /* 0x88f5 */ { false, 0x88f5, 0x88f5 }, /* 0x88f6 */ { false, 0x88f6, 0x88f6 }, /* 0x88f7 */ { false, 0x88f7, 0x88f7 }, /* 0x88f8 */ { false, 0x88f8, 0x88f8 }, /* 0x88f9 */ { false, 0x88f9, 0x88f9 }, /* 0x88fa */ { false, 0x88fa, 0x88fa }, /* 0x88fb */ { false, 0x88fb, 0x88fb }, /* 0x88fc */ { false, 0x88fc, 0x88fc }, /* 0x88fd */ { false, 0x88fd, 0x88fd }, /* 0x88fe */ { false, 0x88fe, 0x88fe }, /* 0x88ff */ { false, 0x88ff, 0x88ff }, /* 0x8900 */ { false, 0x8900, 0x8900 }, /* 0x8901 */ { false, 0x8901, 0x8901 }, /* 0x8902 */ { false, 0x8902, 0x8902 }, /* 0x8903 */ { false, 0x8903, 0x8903 }, /* 0x8904 */ { false, 0x8904, 0x8904 }, /* 0x8905 */ { false, 0x8905, 0x8905 }, /* 0x8906 */ { false, 0x8906, 0x8906 }, /* 0x8907 */ { false, 0x8907, 0x8907 }, /* 0x8908 */ { false, 0x8908, 0x8908 }, /* 0x8909 */ { false, 0x8909, 0x8909 }, /* 0x890a */ { false, 0x890a, 0x890a }, /* 0x890b */ { false, 0x890b, 0x890b }, /* 0x890c */ { false, 0x890c, 0x890c }, /* 0x890d */ { false, 0x890d, 0x890d }, /* 0x890e */ { false, 0x890e, 0x890e }, /* 0x890f */ { false, 0x890f, 0x890f }, /* 0x8910 */ { false, 0x8910, 0x8910 }, /* 0x8911 */ { false, 0x8911, 0x8911 }, /* 0x8912 */ { false, 0x8912, 0x8912 }, /* 0x8913 */ { false, 0x8913, 0x8913 }, /* 0x8914 */ { false, 0x8914, 0x8914 }, /* 0x8915 */ { false, 0x8915, 0x8915 }, /* 0x8916 */ { false, 0x8916, 0x8916 }, /* 0x8917 */ { false, 0x8917, 0x8917 }, /* 0x8918 */ { false, 0x8918, 0x8918 }, /* 0x8919 */ { false, 0x8919, 0x8919 }, /* 0x891a */ { false, 0x891a, 0x891a }, /* 0x891b */ { false, 0x891b, 0x891b }, /* 0x891c */ { false, 0x891c, 0x891c }, /* 0x891d */ { false, 0x891d, 0x891d }, /* 0x891e */ { false, 0x891e, 0x891e }, /* 0x891f */ { false, 0x891f, 0x891f }, /* 0x8920 */ { false, 0x8920, 0x8920 }, /* 0x8921 */ { false, 0x8921, 0x8921 }, /* 0x8922 */ { false, 0x8922, 0x8922 }, /* 0x8923 */ { false, 0x8923, 0x8923 }, /* 0x8924 */ { false, 0x8924, 0x8924 }, /* 0x8925 */ { false, 0x8925, 0x8925 }, /* 0x8926 */ { false, 0x8926, 0x8926 }, /* 0x8927 */ { false, 0x8927, 0x8927 }, /* 0x8928 */ { false, 0x8928, 0x8928 }, /* 0x8929 */ { false, 0x8929, 0x8929 }, /* 0x892a */ { false, 0x892a, 0x892a }, /* 0x892b */ { false, 0x892b, 0x892b }, /* 0x892c */ { false, 0x892c, 0x892c }, /* 0x892d */ { false, 0x892d, 0x892d }, /* 0x892e */ { false, 0x892e, 0x892e }, /* 0x892f */ { false, 0x892f, 0x892f }, /* 0x8930 */ { false, 0x8930, 0x8930 }, /* 0x8931 */ { false, 0x8931, 0x8931 }, /* 0x8932 */ { false, 0x8932, 0x8932 }, /* 0x8933 */ { false, 0x8933, 0x8933 }, /* 0x8934 */ { false, 0x8934, 0x8934 }, /* 0x8935 */ { false, 0x8935, 0x8935 }, /* 0x8936 */ { false, 0x8936, 0x8936 }, /* 0x8937 */ { false, 0x8937, 0x8937 }, /* 0x8938 */ { false, 0x8938, 0x8938 }, /* 0x8939 */ { false, 0x8939, 0x8939 }, /* 0x893a */ { false, 0x893a, 0x893a }, /* 0x893b */ { false, 0x893b, 0x893b }, /* 0x893c */ { false, 0x893c, 0x893c }, /* 0x893d */ { false, 0x893d, 0x893d }, /* 0x893e */ { false, 0x893e, 0x893e }, /* 0x893f */ { false, 0x893f, 0x893f }, /* 0x8940 */ { false, 0x8940, 0x8940 }, /* 0x8941 */ { false, 0x8941, 0x8941 }, /* 0x8942 */ { false, 0x8942, 0x8942 }, /* 0x8943 */ { false, 0x8943, 0x8943 }, /* 0x8944 */ { false, 0x8944, 0x8944 }, /* 0x8945 */ { false, 0x8945, 0x8945 }, /* 0x8946 */ { false, 0x8946, 0x8946 }, /* 0x8947 */ { false, 0x8947, 0x8947 }, /* 0x8948 */ { false, 0x8948, 0x8948 }, /* 0x8949 */ { false, 0x8949, 0x8949 }, /* 0x894a */ { false, 0x894a, 0x894a }, /* 0x894b */ { false, 0x894b, 0x894b }, /* 0x894c */ { false, 0x894c, 0x894c }, /* 0x894d */ { false, 0x894d, 0x894d }, /* 0x894e */ { false, 0x894e, 0x894e }, /* 0x894f */ { false, 0x894f, 0x894f }, /* 0x8950 */ { false, 0x8950, 0x8950 }, /* 0x8951 */ { false, 0x8951, 0x8951 }, /* 0x8952 */ { false, 0x8952, 0x8952 }, /* 0x8953 */ { false, 0x8953, 0x8953 }, /* 0x8954 */ { false, 0x8954, 0x8954 }, /* 0x8955 */ { false, 0x8955, 0x8955 }, /* 0x8956 */ { false, 0x8956, 0x8956 }, /* 0x8957 */ { false, 0x8957, 0x8957 }, /* 0x8958 */ { false, 0x8958, 0x8958 }, /* 0x8959 */ { false, 0x8959, 0x8959 }, /* 0x895a */ { false, 0x895a, 0x895a }, /* 0x895b */ { false, 0x895b, 0x895b }, /* 0x895c */ { false, 0x895c, 0x895c }, /* 0x895d */ { false, 0x895d, 0x895d }, /* 0x895e */ { false, 0x895e, 0x895e }, /* 0x895f */ { false, 0x895f, 0x895f }, /* 0x8960 */ { false, 0x8960, 0x8960 }, /* 0x8961 */ { false, 0x8961, 0x8961 }, /* 0x8962 */ { false, 0x8962, 0x8962 }, /* 0x8963 */ { false, 0x8963, 0x8963 }, /* 0x8964 */ { false, 0x8964, 0x8964 }, /* 0x8965 */ { false, 0x8965, 0x8965 }, /* 0x8966 */ { false, 0x8966, 0x8966 }, /* 0x8967 */ { false, 0x8967, 0x8967 }, /* 0x8968 */ { false, 0x8968, 0x8968 }, /* 0x8969 */ { false, 0x8969, 0x8969 }, /* 0x896a */ { false, 0x896a, 0x896a }, /* 0x896b */ { false, 0x896b, 0x896b }, /* 0x896c */ { false, 0x896c, 0x896c }, /* 0x896d */ { false, 0x896d, 0x896d }, /* 0x896e */ { false, 0x896e, 0x896e }, /* 0x896f */ { false, 0x896f, 0x896f }, /* 0x8970 */ { false, 0x8970, 0x8970 }, /* 0x8971 */ { false, 0x8971, 0x8971 }, /* 0x8972 */ { false, 0x8972, 0x8972 }, /* 0x8973 */ { false, 0x8973, 0x8973 }, /* 0x8974 */ { false, 0x8974, 0x8974 }, /* 0x8975 */ { false, 0x8975, 0x8975 }, /* 0x8976 */ { false, 0x8976, 0x8976 }, /* 0x8977 */ { false, 0x8977, 0x8977 }, /* 0x8978 */ { false, 0x8978, 0x8978 }, /* 0x8979 */ { false, 0x8979, 0x8979 }, /* 0x897a */ { false, 0x897a, 0x897a }, /* 0x897b */ { false, 0x897b, 0x897b }, /* 0x897c */ { false, 0x897c, 0x897c }, /* 0x897d */ { false, 0x897d, 0x897d }, /* 0x897e */ { false, 0x897e, 0x897e }, /* 0x897f */ { false, 0x897f, 0x897f }, /* 0x8980 */ { false, 0x8980, 0x8980 }, /* 0x8981 */ { false, 0x8981, 0x8981 }, /* 0x8982 */ { false, 0x8982, 0x8982 }, /* 0x8983 */ { false, 0x8983, 0x8983 }, /* 0x8984 */ { false, 0x8984, 0x8984 }, /* 0x8985 */ { false, 0x8985, 0x8985 }, /* 0x8986 */ { false, 0x8986, 0x8986 }, /* 0x8987 */ { false, 0x8987, 0x8987 }, /* 0x8988 */ { false, 0x8988, 0x8988 }, /* 0x8989 */ { false, 0x8989, 0x8989 }, /* 0x898a */ { false, 0x898a, 0x898a }, /* 0x898b */ { false, 0x898b, 0x898b }, /* 0x898c */ { false, 0x898c, 0x898c }, /* 0x898d */ { false, 0x898d, 0x898d }, /* 0x898e */ { false, 0x898e, 0x898e }, /* 0x898f */ { false, 0x898f, 0x898f }, /* 0x8990 */ { false, 0x8990, 0x8990 }, /* 0x8991 */ { false, 0x8991, 0x8991 }, /* 0x8992 */ { false, 0x8992, 0x8992 }, /* 0x8993 */ { false, 0x8993, 0x8993 }, /* 0x8994 */ { false, 0x8994, 0x8994 }, /* 0x8995 */ { false, 0x8995, 0x8995 }, /* 0x8996 */ { false, 0x8996, 0x8996 }, /* 0x8997 */ { false, 0x8997, 0x8997 }, /* 0x8998 */ { false, 0x8998, 0x8998 }, /* 0x8999 */ { false, 0x8999, 0x8999 }, /* 0x899a */ { false, 0x899a, 0x899a }, /* 0x899b */ { false, 0x899b, 0x899b }, /* 0x899c */ { false, 0x899c, 0x899c }, /* 0x899d */ { false, 0x899d, 0x899d }, /* 0x899e */ { false, 0x899e, 0x899e }, /* 0x899f */ { false, 0x899f, 0x899f }, /* 0x89a0 */ { false, 0x89a0, 0x89a0 }, /* 0x89a1 */ { false, 0x89a1, 0x89a1 }, /* 0x89a2 */ { false, 0x89a2, 0x89a2 }, /* 0x89a3 */ { false, 0x89a3, 0x89a3 }, /* 0x89a4 */ { false, 0x89a4, 0x89a4 }, /* 0x89a5 */ { false, 0x89a5, 0x89a5 }, /* 0x89a6 */ { false, 0x89a6, 0x89a6 }, /* 0x89a7 */ { false, 0x89a7, 0x89a7 }, /* 0x89a8 */ { false, 0x89a8, 0x89a8 }, /* 0x89a9 */ { false, 0x89a9, 0x89a9 }, /* 0x89aa */ { false, 0x89aa, 0x89aa }, /* 0x89ab */ { false, 0x89ab, 0x89ab }, /* 0x89ac */ { false, 0x89ac, 0x89ac }, /* 0x89ad */ { false, 0x89ad, 0x89ad }, /* 0x89ae */ { false, 0x89ae, 0x89ae }, /* 0x89af */ { false, 0x89af, 0x89af }, /* 0x89b0 */ { false, 0x89b0, 0x89b0 }, /* 0x89b1 */ { false, 0x89b1, 0x89b1 }, /* 0x89b2 */ { false, 0x89b2, 0x89b2 }, /* 0x89b3 */ { false, 0x89b3, 0x89b3 }, /* 0x89b4 */ { false, 0x89b4, 0x89b4 }, /* 0x89b5 */ { false, 0x89b5, 0x89b5 }, /* 0x89b6 */ { false, 0x89b6, 0x89b6 }, /* 0x89b7 */ { false, 0x89b7, 0x89b7 }, /* 0x89b8 */ { false, 0x89b8, 0x89b8 }, /* 0x89b9 */ { false, 0x89b9, 0x89b9 }, /* 0x89ba */ { false, 0x89ba, 0x89ba }, /* 0x89bb */ { false, 0x89bb, 0x89bb }, /* 0x89bc */ { false, 0x89bc, 0x89bc }, /* 0x89bd */ { false, 0x89bd, 0x89bd }, /* 0x89be */ { false, 0x89be, 0x89be }, /* 0x89bf */ { false, 0x89bf, 0x89bf }, /* 0x89c0 */ { false, 0x89c0, 0x89c0 }, /* 0x89c1 */ { false, 0x89c1, 0x89c1 }, /* 0x89c2 */ { false, 0x89c2, 0x89c2 }, /* 0x89c3 */ { false, 0x89c3, 0x89c3 }, /* 0x89c4 */ { false, 0x89c4, 0x89c4 }, /* 0x89c5 */ { false, 0x89c5, 0x89c5 }, /* 0x89c6 */ { false, 0x89c6, 0x89c6 }, /* 0x89c7 */ { false, 0x89c7, 0x89c7 }, /* 0x89c8 */ { false, 0x89c8, 0x89c8 }, /* 0x89c9 */ { false, 0x89c9, 0x89c9 }, /* 0x89ca */ { false, 0x89ca, 0x89ca }, /* 0x89cb */ { false, 0x89cb, 0x89cb }, /* 0x89cc */ { false, 0x89cc, 0x89cc }, /* 0x89cd */ { false, 0x89cd, 0x89cd }, /* 0x89ce */ { false, 0x89ce, 0x89ce }, /* 0x89cf */ { false, 0x89cf, 0x89cf }, /* 0x89d0 */ { false, 0x89d0, 0x89d0 }, /* 0x89d1 */ { false, 0x89d1, 0x89d1 }, /* 0x89d2 */ { false, 0x89d2, 0x89d2 }, /* 0x89d3 */ { false, 0x89d3, 0x89d3 }, /* 0x89d4 */ { false, 0x89d4, 0x89d4 }, /* 0x89d5 */ { false, 0x89d5, 0x89d5 }, /* 0x89d6 */ { false, 0x89d6, 0x89d6 }, /* 0x89d7 */ { false, 0x89d7, 0x89d7 }, /* 0x89d8 */ { false, 0x89d8, 0x89d8 }, /* 0x89d9 */ { false, 0x89d9, 0x89d9 }, /* 0x89da */ { false, 0x89da, 0x89da }, /* 0x89db */ { false, 0x89db, 0x89db }, /* 0x89dc */ { false, 0x89dc, 0x89dc }, /* 0x89dd */ { false, 0x89dd, 0x89dd }, /* 0x89de */ { false, 0x89de, 0x89de }, /* 0x89df */ { false, 0x89df, 0x89df }, /* 0x89e0 */ { false, 0x89e0, 0x89e0 }, /* 0x89e1 */ { false, 0x89e1, 0x89e1 }, /* 0x89e2 */ { false, 0x89e2, 0x89e2 }, /* 0x89e3 */ { false, 0x89e3, 0x89e3 }, /* 0x89e4 */ { false, 0x89e4, 0x89e4 }, /* 0x89e5 */ { false, 0x89e5, 0x89e5 }, /* 0x89e6 */ { false, 0x89e6, 0x89e6 }, /* 0x89e7 */ { false, 0x89e7, 0x89e7 }, /* 0x89e8 */ { false, 0x89e8, 0x89e8 }, /* 0x89e9 */ { false, 0x89e9, 0x89e9 }, /* 0x89ea */ { false, 0x89ea, 0x89ea }, /* 0x89eb */ { false, 0x89eb, 0x89eb }, /* 0x89ec */ { false, 0x89ec, 0x89ec }, /* 0x89ed */ { false, 0x89ed, 0x89ed }, /* 0x89ee */ { false, 0x89ee, 0x89ee }, /* 0x89ef */ { false, 0x89ef, 0x89ef }, /* 0x89f0 */ { false, 0x89f0, 0x89f0 }, /* 0x89f1 */ { false, 0x89f1, 0x89f1 }, /* 0x89f2 */ { false, 0x89f2, 0x89f2 }, /* 0x89f3 */ { false, 0x89f3, 0x89f3 }, /* 0x89f4 */ { false, 0x89f4, 0x89f4 }, /* 0x89f5 */ { false, 0x89f5, 0x89f5 }, /* 0x89f6 */ { false, 0x89f6, 0x89f6 }, /* 0x89f7 */ { false, 0x89f7, 0x89f7 }, /* 0x89f8 */ { false, 0x89f8, 0x89f8 }, /* 0x89f9 */ { false, 0x89f9, 0x89f9 }, /* 0x89fa */ { false, 0x89fa, 0x89fa }, /* 0x89fb */ { false, 0x89fb, 0x89fb }, /* 0x89fc */ { false, 0x89fc, 0x89fc }, /* 0x89fd */ { false, 0x89fd, 0x89fd }, /* 0x89fe */ { false, 0x89fe, 0x89fe }, /* 0x89ff */ { false, 0x89ff, 0x89ff }, /* 0x8a00 */ { false, 0x8a00, 0x8a00 }, /* 0x8a01 */ { false, 0x8a01, 0x8a01 }, /* 0x8a02 */ { false, 0x8a02, 0x8a02 }, /* 0x8a03 */ { false, 0x8a03, 0x8a03 }, /* 0x8a04 */ { false, 0x8a04, 0x8a04 }, /* 0x8a05 */ { false, 0x8a05, 0x8a05 }, /* 0x8a06 */ { false, 0x8a06, 0x8a06 }, /* 0x8a07 */ { false, 0x8a07, 0x8a07 }, /* 0x8a08 */ { false, 0x8a08, 0x8a08 }, /* 0x8a09 */ { false, 0x8a09, 0x8a09 }, /* 0x8a0a */ { false, 0x8a0a, 0x8a0a }, /* 0x8a0b */ { false, 0x8a0b, 0x8a0b }, /* 0x8a0c */ { false, 0x8a0c, 0x8a0c }, /* 0x8a0d */ { false, 0x8a0d, 0x8a0d }, /* 0x8a0e */ { false, 0x8a0e, 0x8a0e }, /* 0x8a0f */ { false, 0x8a0f, 0x8a0f }, /* 0x8a10 */ { false, 0x8a10, 0x8a10 }, /* 0x8a11 */ { false, 0x8a11, 0x8a11 }, /* 0x8a12 */ { false, 0x8a12, 0x8a12 }, /* 0x8a13 */ { false, 0x8a13, 0x8a13 }, /* 0x8a14 */ { false, 0x8a14, 0x8a14 }, /* 0x8a15 */ { false, 0x8a15, 0x8a15 }, /* 0x8a16 */ { false, 0x8a16, 0x8a16 }, /* 0x8a17 */ { false, 0x8a17, 0x8a17 }, /* 0x8a18 */ { false, 0x8a18, 0x8a18 }, /* 0x8a19 */ { false, 0x8a19, 0x8a19 }, /* 0x8a1a */ { false, 0x8a1a, 0x8a1a }, /* 0x8a1b */ { false, 0x8a1b, 0x8a1b }, /* 0x8a1c */ { false, 0x8a1c, 0x8a1c }, /* 0x8a1d */ { false, 0x8a1d, 0x8a1d }, /* 0x8a1e */ { false, 0x8a1e, 0x8a1e }, /* 0x8a1f */ { false, 0x8a1f, 0x8a1f }, /* 0x8a20 */ { false, 0x8a20, 0x8a20 }, /* 0x8a21 */ { false, 0x8a21, 0x8a21 }, /* 0x8a22 */ { false, 0x8a22, 0x8a22 }, /* 0x8a23 */ { false, 0x8a23, 0x8a23 }, /* 0x8a24 */ { false, 0x8a24, 0x8a24 }, /* 0x8a25 */ { false, 0x8a25, 0x8a25 }, /* 0x8a26 */ { false, 0x8a26, 0x8a26 }, /* 0x8a27 */ { false, 0x8a27, 0x8a27 }, /* 0x8a28 */ { false, 0x8a28, 0x8a28 }, /* 0x8a29 */ { false, 0x8a29, 0x8a29 }, /* 0x8a2a */ { false, 0x8a2a, 0x8a2a }, /* 0x8a2b */ { false, 0x8a2b, 0x8a2b }, /* 0x8a2c */ { false, 0x8a2c, 0x8a2c }, /* 0x8a2d */ { false, 0x8a2d, 0x8a2d }, /* 0x8a2e */ { false, 0x8a2e, 0x8a2e }, /* 0x8a2f */ { false, 0x8a2f, 0x8a2f }, /* 0x8a30 */ { false, 0x8a30, 0x8a30 }, /* 0x8a31 */ { false, 0x8a31, 0x8a31 }, /* 0x8a32 */ { false, 0x8a32, 0x8a32 }, /* 0x8a33 */ { false, 0x8a33, 0x8a33 }, /* 0x8a34 */ { false, 0x8a34, 0x8a34 }, /* 0x8a35 */ { false, 0x8a35, 0x8a35 }, /* 0x8a36 */ { false, 0x8a36, 0x8a36 }, /* 0x8a37 */ { false, 0x8a37, 0x8a37 }, /* 0x8a38 */ { false, 0x8a38, 0x8a38 }, /* 0x8a39 */ { false, 0x8a39, 0x8a39 }, /* 0x8a3a */ { false, 0x8a3a, 0x8a3a }, /* 0x8a3b */ { false, 0x8a3b, 0x8a3b }, /* 0x8a3c */ { false, 0x8a3c, 0x8a3c }, /* 0x8a3d */ { false, 0x8a3d, 0x8a3d }, /* 0x8a3e */ { false, 0x8a3e, 0x8a3e }, /* 0x8a3f */ { false, 0x8a3f, 0x8a3f }, /* 0x8a40 */ { false, 0x8a40, 0x8a40 }, /* 0x8a41 */ { false, 0x8a41, 0x8a41 }, /* 0x8a42 */ { false, 0x8a42, 0x8a42 }, /* 0x8a43 */ { false, 0x8a43, 0x8a43 }, /* 0x8a44 */ { false, 0x8a44, 0x8a44 }, /* 0x8a45 */ { false, 0x8a45, 0x8a45 }, /* 0x8a46 */ { false, 0x8a46, 0x8a46 }, /* 0x8a47 */ { false, 0x8a47, 0x8a47 }, /* 0x8a48 */ { false, 0x8a48, 0x8a48 }, /* 0x8a49 */ { false, 0x8a49, 0x8a49 }, /* 0x8a4a */ { false, 0x8a4a, 0x8a4a }, /* 0x8a4b */ { false, 0x8a4b, 0x8a4b }, /* 0x8a4c */ { false, 0x8a4c, 0x8a4c }, /* 0x8a4d */ { false, 0x8a4d, 0x8a4d }, /* 0x8a4e */ { false, 0x8a4e, 0x8a4e }, /* 0x8a4f */ { false, 0x8a4f, 0x8a4f }, /* 0x8a50 */ { false, 0x8a50, 0x8a50 }, /* 0x8a51 */ { false, 0x8a51, 0x8a51 }, /* 0x8a52 */ { false, 0x8a52, 0x8a52 }, /* 0x8a53 */ { false, 0x8a53, 0x8a53 }, /* 0x8a54 */ { false, 0x8a54, 0x8a54 }, /* 0x8a55 */ { false, 0x8a55, 0x8a55 }, /* 0x8a56 */ { false, 0x8a56, 0x8a56 }, /* 0x8a57 */ { false, 0x8a57, 0x8a57 }, /* 0x8a58 */ { false, 0x8a58, 0x8a58 }, /* 0x8a59 */ { false, 0x8a59, 0x8a59 }, /* 0x8a5a */ { false, 0x8a5a, 0x8a5a }, /* 0x8a5b */ { false, 0x8a5b, 0x8a5b }, /* 0x8a5c */ { false, 0x8a5c, 0x8a5c }, /* 0x8a5d */ { false, 0x8a5d, 0x8a5d }, /* 0x8a5e */ { false, 0x8a5e, 0x8a5e }, /* 0x8a5f */ { false, 0x8a5f, 0x8a5f }, /* 0x8a60 */ { false, 0x8a60, 0x8a60 }, /* 0x8a61 */ { false, 0x8a61, 0x8a61 }, /* 0x8a62 */ { false, 0x8a62, 0x8a62 }, /* 0x8a63 */ { false, 0x8a63, 0x8a63 }, /* 0x8a64 */ { false, 0x8a64, 0x8a64 }, /* 0x8a65 */ { false, 0x8a65, 0x8a65 }, /* 0x8a66 */ { false, 0x8a66, 0x8a66 }, /* 0x8a67 */ { false, 0x8a67, 0x8a67 }, /* 0x8a68 */ { false, 0x8a68, 0x8a68 }, /* 0x8a69 */ { false, 0x8a69, 0x8a69 }, /* 0x8a6a */ { false, 0x8a6a, 0x8a6a }, /* 0x8a6b */ { false, 0x8a6b, 0x8a6b }, /* 0x8a6c */ { false, 0x8a6c, 0x8a6c }, /* 0x8a6d */ { false, 0x8a6d, 0x8a6d }, /* 0x8a6e */ { false, 0x8a6e, 0x8a6e }, /* 0x8a6f */ { false, 0x8a6f, 0x8a6f }, /* 0x8a70 */ { false, 0x8a70, 0x8a70 }, /* 0x8a71 */ { false, 0x8a71, 0x8a71 }, /* 0x8a72 */ { false, 0x8a72, 0x8a72 }, /* 0x8a73 */ { false, 0x8a73, 0x8a73 }, /* 0x8a74 */ { false, 0x8a74, 0x8a74 }, /* 0x8a75 */ { false, 0x8a75, 0x8a75 }, /* 0x8a76 */ { false, 0x8a76, 0x8a76 }, /* 0x8a77 */ { false, 0x8a77, 0x8a77 }, /* 0x8a78 */ { false, 0x8a78, 0x8a78 }, /* 0x8a79 */ { false, 0x8a79, 0x8a79 }, /* 0x8a7a */ { false, 0x8a7a, 0x8a7a }, /* 0x8a7b */ { false, 0x8a7b, 0x8a7b }, /* 0x8a7c */ { false, 0x8a7c, 0x8a7c }, /* 0x8a7d */ { false, 0x8a7d, 0x8a7d }, /* 0x8a7e */ { false, 0x8a7e, 0x8a7e }, /* 0x8a7f */ { false, 0x8a7f, 0x8a7f }, /* 0x8a80 */ { false, 0x8a80, 0x8a80 }, /* 0x8a81 */ { false, 0x8a81, 0x8a81 }, /* 0x8a82 */ { false, 0x8a82, 0x8a82 }, /* 0x8a83 */ { false, 0x8a83, 0x8a83 }, /* 0x8a84 */ { false, 0x8a84, 0x8a84 }, /* 0x8a85 */ { false, 0x8a85, 0x8a85 }, /* 0x8a86 */ { false, 0x8a86, 0x8a86 }, /* 0x8a87 */ { false, 0x8a87, 0x8a87 }, /* 0x8a88 */ { false, 0x8a88, 0x8a88 }, /* 0x8a89 */ { false, 0x8a89, 0x8a89 }, /* 0x8a8a */ { false, 0x8a8a, 0x8a8a }, /* 0x8a8b */ { false, 0x8a8b, 0x8a8b }, /* 0x8a8c */ { false, 0x8a8c, 0x8a8c }, /* 0x8a8d */ { false, 0x8a8d, 0x8a8d }, /* 0x8a8e */ { false, 0x8a8e, 0x8a8e }, /* 0x8a8f */ { false, 0x8a8f, 0x8a8f }, /* 0x8a90 */ { false, 0x8a90, 0x8a90 }, /* 0x8a91 */ { false, 0x8a91, 0x8a91 }, /* 0x8a92 */ { false, 0x8a92, 0x8a92 }, /* 0x8a93 */ { false, 0x8a93, 0x8a93 }, /* 0x8a94 */ { false, 0x8a94, 0x8a94 }, /* 0x8a95 */ { false, 0x8a95, 0x8a95 }, /* 0x8a96 */ { false, 0x8a96, 0x8a96 }, /* 0x8a97 */ { false, 0x8a97, 0x8a97 }, /* 0x8a98 */ { false, 0x8a98, 0x8a98 }, /* 0x8a99 */ { false, 0x8a99, 0x8a99 }, /* 0x8a9a */ { false, 0x8a9a, 0x8a9a }, /* 0x8a9b */ { false, 0x8a9b, 0x8a9b }, /* 0x8a9c */ { false, 0x8a9c, 0x8a9c }, /* 0x8a9d */ { false, 0x8a9d, 0x8a9d }, /* 0x8a9e */ { false, 0x8a9e, 0x8a9e }, /* 0x8a9f */ { false, 0x8a9f, 0x8a9f }, /* 0x8aa0 */ { false, 0x8aa0, 0x8aa0 }, /* 0x8aa1 */ { false, 0x8aa1, 0x8aa1 }, /* 0x8aa2 */ { false, 0x8aa2, 0x8aa2 }, /* 0x8aa3 */ { false, 0x8aa3, 0x8aa3 }, /* 0x8aa4 */ { false, 0x8aa4, 0x8aa4 }, /* 0x8aa5 */ { false, 0x8aa5, 0x8aa5 }, /* 0x8aa6 */ { false, 0x8aa6, 0x8aa6 }, /* 0x8aa7 */ { false, 0x8aa7, 0x8aa7 }, /* 0x8aa8 */ { false, 0x8aa8, 0x8aa8 }, /* 0x8aa9 */ { false, 0x8aa9, 0x8aa9 }, /* 0x8aaa */ { false, 0x8aaa, 0x8aaa }, /* 0x8aab */ { false, 0x8aab, 0x8aab }, /* 0x8aac */ { false, 0x8aac, 0x8aac }, /* 0x8aad */ { false, 0x8aad, 0x8aad }, /* 0x8aae */ { false, 0x8aae, 0x8aae }, /* 0x8aaf */ { false, 0x8aaf, 0x8aaf }, /* 0x8ab0 */ { false, 0x8ab0, 0x8ab0 }, /* 0x8ab1 */ { false, 0x8ab1, 0x8ab1 }, /* 0x8ab2 */ { false, 0x8ab2, 0x8ab2 }, /* 0x8ab3 */ { false, 0x8ab3, 0x8ab3 }, /* 0x8ab4 */ { false, 0x8ab4, 0x8ab4 }, /* 0x8ab5 */ { false, 0x8ab5, 0x8ab5 }, /* 0x8ab6 */ { false, 0x8ab6, 0x8ab6 }, /* 0x8ab7 */ { false, 0x8ab7, 0x8ab7 }, /* 0x8ab8 */ { false, 0x8ab8, 0x8ab8 }, /* 0x8ab9 */ { false, 0x8ab9, 0x8ab9 }, /* 0x8aba */ { false, 0x8aba, 0x8aba }, /* 0x8abb */ { false, 0x8abb, 0x8abb }, /* 0x8abc */ { false, 0x8abc, 0x8abc }, /* 0x8abd */ { false, 0x8abd, 0x8abd }, /* 0x8abe */ { false, 0x8abe, 0x8abe }, /* 0x8abf */ { false, 0x8abf, 0x8abf }, /* 0x8ac0 */ { false, 0x8ac0, 0x8ac0 }, /* 0x8ac1 */ { false, 0x8ac1, 0x8ac1 }, /* 0x8ac2 */ { false, 0x8ac2, 0x8ac2 }, /* 0x8ac3 */ { false, 0x8ac3, 0x8ac3 }, /* 0x8ac4 */ { false, 0x8ac4, 0x8ac4 }, /* 0x8ac5 */ { false, 0x8ac5, 0x8ac5 }, /* 0x8ac6 */ { false, 0x8ac6, 0x8ac6 }, /* 0x8ac7 */ { false, 0x8ac7, 0x8ac7 }, /* 0x8ac8 */ { false, 0x8ac8, 0x8ac8 }, /* 0x8ac9 */ { false, 0x8ac9, 0x8ac9 }, /* 0x8aca */ { false, 0x8aca, 0x8aca }, /* 0x8acb */ { false, 0x8acb, 0x8acb }, /* 0x8acc */ { false, 0x8acc, 0x8acc }, /* 0x8acd */ { false, 0x8acd, 0x8acd }, /* 0x8ace */ { false, 0x8ace, 0x8ace }, /* 0x8acf */ { false, 0x8acf, 0x8acf }, /* 0x8ad0 */ { false, 0x8ad0, 0x8ad0 }, /* 0x8ad1 */ { false, 0x8ad1, 0x8ad1 }, /* 0x8ad2 */ { false, 0x8ad2, 0x8ad2 }, /* 0x8ad3 */ { false, 0x8ad3, 0x8ad3 }, /* 0x8ad4 */ { false, 0x8ad4, 0x8ad4 }, /* 0x8ad5 */ { false, 0x8ad5, 0x8ad5 }, /* 0x8ad6 */ { false, 0x8ad6, 0x8ad6 }, /* 0x8ad7 */ { false, 0x8ad7, 0x8ad7 }, /* 0x8ad8 */ { false, 0x8ad8, 0x8ad8 }, /* 0x8ad9 */ { false, 0x8ad9, 0x8ad9 }, /* 0x8ada */ { false, 0x8ada, 0x8ada }, /* 0x8adb */ { false, 0x8adb, 0x8adb }, /* 0x8adc */ { false, 0x8adc, 0x8adc }, /* 0x8add */ { false, 0x8add, 0x8add }, /* 0x8ade */ { false, 0x8ade, 0x8ade }, /* 0x8adf */ { false, 0x8adf, 0x8adf }, /* 0x8ae0 */ { false, 0x8ae0, 0x8ae0 }, /* 0x8ae1 */ { false, 0x8ae1, 0x8ae1 }, /* 0x8ae2 */ { false, 0x8ae2, 0x8ae2 }, /* 0x8ae3 */ { false, 0x8ae3, 0x8ae3 }, /* 0x8ae4 */ { false, 0x8ae4, 0x8ae4 }, /* 0x8ae5 */ { false, 0x8ae5, 0x8ae5 }, /* 0x8ae6 */ { false, 0x8ae6, 0x8ae6 }, /* 0x8ae7 */ { false, 0x8ae7, 0x8ae7 }, /* 0x8ae8 */ { false, 0x8ae8, 0x8ae8 }, /* 0x8ae9 */ { false, 0x8ae9, 0x8ae9 }, /* 0x8aea */ { false, 0x8aea, 0x8aea }, /* 0x8aeb */ { false, 0x8aeb, 0x8aeb }, /* 0x8aec */ { false, 0x8aec, 0x8aec }, /* 0x8aed */ { false, 0x8aed, 0x8aed }, /* 0x8aee */ { false, 0x8aee, 0x8aee }, /* 0x8aef */ { false, 0x8aef, 0x8aef }, /* 0x8af0 */ { false, 0x8af0, 0x8af0 }, /* 0x8af1 */ { false, 0x8af1, 0x8af1 }, /* 0x8af2 */ { false, 0x8af2, 0x8af2 }, /* 0x8af3 */ { false, 0x8af3, 0x8af3 }, /* 0x8af4 */ { false, 0x8af4, 0x8af4 }, /* 0x8af5 */ { false, 0x8af5, 0x8af5 }, /* 0x8af6 */ { false, 0x8af6, 0x8af6 }, /* 0x8af7 */ { false, 0x8af7, 0x8af7 }, /* 0x8af8 */ { false, 0x8af8, 0x8af8 }, /* 0x8af9 */ { false, 0x8af9, 0x8af9 }, /* 0x8afa */ { false, 0x8afa, 0x8afa }, /* 0x8afb */ { false, 0x8afb, 0x8afb }, /* 0x8afc */ { false, 0x8afc, 0x8afc }, /* 0x8afd */ { false, 0x8afd, 0x8afd }, /* 0x8afe */ { false, 0x8afe, 0x8afe }, /* 0x8aff */ { false, 0x8aff, 0x8aff }, /* 0x8b00 */ { false, 0x8b00, 0x8b00 }, /* 0x8b01 */ { false, 0x8b01, 0x8b01 }, /* 0x8b02 */ { false, 0x8b02, 0x8b02 }, /* 0x8b03 */ { false, 0x8b03, 0x8b03 }, /* 0x8b04 */ { false, 0x8b04, 0x8b04 }, /* 0x8b05 */ { false, 0x8b05, 0x8b05 }, /* 0x8b06 */ { false, 0x8b06, 0x8b06 }, /* 0x8b07 */ { false, 0x8b07, 0x8b07 }, /* 0x8b08 */ { false, 0x8b08, 0x8b08 }, /* 0x8b09 */ { false, 0x8b09, 0x8b09 }, /* 0x8b0a */ { false, 0x8b0a, 0x8b0a }, /* 0x8b0b */ { false, 0x8b0b, 0x8b0b }, /* 0x8b0c */ { false, 0x8b0c, 0x8b0c }, /* 0x8b0d */ { false, 0x8b0d, 0x8b0d }, /* 0x8b0e */ { false, 0x8b0e, 0x8b0e }, /* 0x8b0f */ { false, 0x8b0f, 0x8b0f }, /* 0x8b10 */ { false, 0x8b10, 0x8b10 }, /* 0x8b11 */ { false, 0x8b11, 0x8b11 }, /* 0x8b12 */ { false, 0x8b12, 0x8b12 }, /* 0x8b13 */ { false, 0x8b13, 0x8b13 }, /* 0x8b14 */ { false, 0x8b14, 0x8b14 }, /* 0x8b15 */ { false, 0x8b15, 0x8b15 }, /* 0x8b16 */ { false, 0x8b16, 0x8b16 }, /* 0x8b17 */ { false, 0x8b17, 0x8b17 }, /* 0x8b18 */ { false, 0x8b18, 0x8b18 }, /* 0x8b19 */ { false, 0x8b19, 0x8b19 }, /* 0x8b1a */ { false, 0x8b1a, 0x8b1a }, /* 0x8b1b */ { false, 0x8b1b, 0x8b1b }, /* 0x8b1c */ { false, 0x8b1c, 0x8b1c }, /* 0x8b1d */ { false, 0x8b1d, 0x8b1d }, /* 0x8b1e */ { false, 0x8b1e, 0x8b1e }, /* 0x8b1f */ { false, 0x8b1f, 0x8b1f }, /* 0x8b20 */ { false, 0x8b20, 0x8b20 }, /* 0x8b21 */ { false, 0x8b21, 0x8b21 }, /* 0x8b22 */ { false, 0x8b22, 0x8b22 }, /* 0x8b23 */ { false, 0x8b23, 0x8b23 }, /* 0x8b24 */ { false, 0x8b24, 0x8b24 }, /* 0x8b25 */ { false, 0x8b25, 0x8b25 }, /* 0x8b26 */ { false, 0x8b26, 0x8b26 }, /* 0x8b27 */ { false, 0x8b27, 0x8b27 }, /* 0x8b28 */ { false, 0x8b28, 0x8b28 }, /* 0x8b29 */ { false, 0x8b29, 0x8b29 }, /* 0x8b2a */ { false, 0x8b2a, 0x8b2a }, /* 0x8b2b */ { false, 0x8b2b, 0x8b2b }, /* 0x8b2c */ { false, 0x8b2c, 0x8b2c }, /* 0x8b2d */ { false, 0x8b2d, 0x8b2d }, /* 0x8b2e */ { false, 0x8b2e, 0x8b2e }, /* 0x8b2f */ { false, 0x8b2f, 0x8b2f }, /* 0x8b30 */ { false, 0x8b30, 0x8b30 }, /* 0x8b31 */ { false, 0x8b31, 0x8b31 }, /* 0x8b32 */ { false, 0x8b32, 0x8b32 }, /* 0x8b33 */ { false, 0x8b33, 0x8b33 }, /* 0x8b34 */ { false, 0x8b34, 0x8b34 }, /* 0x8b35 */ { false, 0x8b35, 0x8b35 }, /* 0x8b36 */ { false, 0x8b36, 0x8b36 }, /* 0x8b37 */ { false, 0x8b37, 0x8b37 }, /* 0x8b38 */ { false, 0x8b38, 0x8b38 }, /* 0x8b39 */ { false, 0x8b39, 0x8b39 }, /* 0x8b3a */ { false, 0x8b3a, 0x8b3a }, /* 0x8b3b */ { false, 0x8b3b, 0x8b3b }, /* 0x8b3c */ { false, 0x8b3c, 0x8b3c }, /* 0x8b3d */ { false, 0x8b3d, 0x8b3d }, /* 0x8b3e */ { false, 0x8b3e, 0x8b3e }, /* 0x8b3f */ { false, 0x8b3f, 0x8b3f }, /* 0x8b40 */ { false, 0x8b40, 0x8b40 }, /* 0x8b41 */ { false, 0x8b41, 0x8b41 }, /* 0x8b42 */ { false, 0x8b42, 0x8b42 }, /* 0x8b43 */ { false, 0x8b43, 0x8b43 }, /* 0x8b44 */ { false, 0x8b44, 0x8b44 }, /* 0x8b45 */ { false, 0x8b45, 0x8b45 }, /* 0x8b46 */ { false, 0x8b46, 0x8b46 }, /* 0x8b47 */ { false, 0x8b47, 0x8b47 }, /* 0x8b48 */ { false, 0x8b48, 0x8b48 }, /* 0x8b49 */ { false, 0x8b49, 0x8b49 }, /* 0x8b4a */ { false, 0x8b4a, 0x8b4a }, /* 0x8b4b */ { false, 0x8b4b, 0x8b4b }, /* 0x8b4c */ { false, 0x8b4c, 0x8b4c }, /* 0x8b4d */ { false, 0x8b4d, 0x8b4d }, /* 0x8b4e */ { false, 0x8b4e, 0x8b4e }, /* 0x8b4f */ { false, 0x8b4f, 0x8b4f }, /* 0x8b50 */ { false, 0x8b50, 0x8b50 }, /* 0x8b51 */ { false, 0x8b51, 0x8b51 }, /* 0x8b52 */ { false, 0x8b52, 0x8b52 }, /* 0x8b53 */ { false, 0x8b53, 0x8b53 }, /* 0x8b54 */ { false, 0x8b54, 0x8b54 }, /* 0x8b55 */ { false, 0x8b55, 0x8b55 }, /* 0x8b56 */ { false, 0x8b56, 0x8b56 }, /* 0x8b57 */ { false, 0x8b57, 0x8b57 }, /* 0x8b58 */ { false, 0x8b58, 0x8b58 }, /* 0x8b59 */ { false, 0x8b59, 0x8b59 }, /* 0x8b5a */ { false, 0x8b5a, 0x8b5a }, /* 0x8b5b */ { false, 0x8b5b, 0x8b5b }, /* 0x8b5c */ { false, 0x8b5c, 0x8b5c }, /* 0x8b5d */ { false, 0x8b5d, 0x8b5d }, /* 0x8b5e */ { false, 0x8b5e, 0x8b5e }, /* 0x8b5f */ { false, 0x8b5f, 0x8b5f }, /* 0x8b60 */ { false, 0x8b60, 0x8b60 }, /* 0x8b61 */ { false, 0x8b61, 0x8b61 }, /* 0x8b62 */ { false, 0x8b62, 0x8b62 }, /* 0x8b63 */ { false, 0x8b63, 0x8b63 }, /* 0x8b64 */ { false, 0x8b64, 0x8b64 }, /* 0x8b65 */ { false, 0x8b65, 0x8b65 }, /* 0x8b66 */ { false, 0x8b66, 0x8b66 }, /* 0x8b67 */ { false, 0x8b67, 0x8b67 }, /* 0x8b68 */ { false, 0x8b68, 0x8b68 }, /* 0x8b69 */ { false, 0x8b69, 0x8b69 }, /* 0x8b6a */ { false, 0x8b6a, 0x8b6a }, /* 0x8b6b */ { false, 0x8b6b, 0x8b6b }, /* 0x8b6c */ { false, 0x8b6c, 0x8b6c }, /* 0x8b6d */ { false, 0x8b6d, 0x8b6d }, /* 0x8b6e */ { false, 0x8b6e, 0x8b6e }, /* 0x8b6f */ { false, 0x8b6f, 0x8b6f }, /* 0x8b70 */ { false, 0x8b70, 0x8b70 }, /* 0x8b71 */ { false, 0x8b71, 0x8b71 }, /* 0x8b72 */ { false, 0x8b72, 0x8b72 }, /* 0x8b73 */ { false, 0x8b73, 0x8b73 }, /* 0x8b74 */ { false, 0x8b74, 0x8b74 }, /* 0x8b75 */ { false, 0x8b75, 0x8b75 }, /* 0x8b76 */ { false, 0x8b76, 0x8b76 }, /* 0x8b77 */ { false, 0x8b77, 0x8b77 }, /* 0x8b78 */ { false, 0x8b78, 0x8b78 }, /* 0x8b79 */ { false, 0x8b79, 0x8b79 }, /* 0x8b7a */ { false, 0x8b7a, 0x8b7a }, /* 0x8b7b */ { false, 0x8b7b, 0x8b7b }, /* 0x8b7c */ { false, 0x8b7c, 0x8b7c }, /* 0x8b7d */ { false, 0x8b7d, 0x8b7d }, /* 0x8b7e */ { false, 0x8b7e, 0x8b7e }, /* 0x8b7f */ { false, 0x8b7f, 0x8b7f }, /* 0x8b80 */ { false, 0x8b80, 0x8b80 }, /* 0x8b81 */ { false, 0x8b81, 0x8b81 }, /* 0x8b82 */ { false, 0x8b82, 0x8b82 }, /* 0x8b83 */ { false, 0x8b83, 0x8b83 }, /* 0x8b84 */ { false, 0x8b84, 0x8b84 }, /* 0x8b85 */ { false, 0x8b85, 0x8b85 }, /* 0x8b86 */ { false, 0x8b86, 0x8b86 }, /* 0x8b87 */ { false, 0x8b87, 0x8b87 }, /* 0x8b88 */ { false, 0x8b88, 0x8b88 }, /* 0x8b89 */ { false, 0x8b89, 0x8b89 }, /* 0x8b8a */ { false, 0x8b8a, 0x8b8a }, /* 0x8b8b */ { false, 0x8b8b, 0x8b8b }, /* 0x8b8c */ { false, 0x8b8c, 0x8b8c }, /* 0x8b8d */ { false, 0x8b8d, 0x8b8d }, /* 0x8b8e */ { false, 0x8b8e, 0x8b8e }, /* 0x8b8f */ { false, 0x8b8f, 0x8b8f }, /* 0x8b90 */ { false, 0x8b90, 0x8b90 }, /* 0x8b91 */ { false, 0x8b91, 0x8b91 }, /* 0x8b92 */ { false, 0x8b92, 0x8b92 }, /* 0x8b93 */ { false, 0x8b93, 0x8b93 }, /* 0x8b94 */ { false, 0x8b94, 0x8b94 }, /* 0x8b95 */ { false, 0x8b95, 0x8b95 }, /* 0x8b96 */ { false, 0x8b96, 0x8b96 }, /* 0x8b97 */ { false, 0x8b97, 0x8b97 }, /* 0x8b98 */ { false, 0x8b98, 0x8b98 }, /* 0x8b99 */ { false, 0x8b99, 0x8b99 }, /* 0x8b9a */ { false, 0x8b9a, 0x8b9a }, /* 0x8b9b */ { false, 0x8b9b, 0x8b9b }, /* 0x8b9c */ { false, 0x8b9c, 0x8b9c }, /* 0x8b9d */ { false, 0x8b9d, 0x8b9d }, /* 0x8b9e */ { false, 0x8b9e, 0x8b9e }, /* 0x8b9f */ { false, 0x8b9f, 0x8b9f }, /* 0x8ba0 */ { false, 0x8ba0, 0x8ba0 }, /* 0x8ba1 */ { false, 0x8ba1, 0x8ba1 }, /* 0x8ba2 */ { false, 0x8ba2, 0x8ba2 }, /* 0x8ba3 */ { false, 0x8ba3, 0x8ba3 }, /* 0x8ba4 */ { false, 0x8ba4, 0x8ba4 }, /* 0x8ba5 */ { false, 0x8ba5, 0x8ba5 }, /* 0x8ba6 */ { false, 0x8ba6, 0x8ba6 }, /* 0x8ba7 */ { false, 0x8ba7, 0x8ba7 }, /* 0x8ba8 */ { false, 0x8ba8, 0x8ba8 }, /* 0x8ba9 */ { false, 0x8ba9, 0x8ba9 }, /* 0x8baa */ { false, 0x8baa, 0x8baa }, /* 0x8bab */ { false, 0x8bab, 0x8bab }, /* 0x8bac */ { false, 0x8bac, 0x8bac }, /* 0x8bad */ { false, 0x8bad, 0x8bad }, /* 0x8bae */ { false, 0x8bae, 0x8bae }, /* 0x8baf */ { false, 0x8baf, 0x8baf }, /* 0x8bb0 */ { false, 0x8bb0, 0x8bb0 }, /* 0x8bb1 */ { false, 0x8bb1, 0x8bb1 }, /* 0x8bb2 */ { false, 0x8bb2, 0x8bb2 }, /* 0x8bb3 */ { false, 0x8bb3, 0x8bb3 }, /* 0x8bb4 */ { false, 0x8bb4, 0x8bb4 }, /* 0x8bb5 */ { false, 0x8bb5, 0x8bb5 }, /* 0x8bb6 */ { false, 0x8bb6, 0x8bb6 }, /* 0x8bb7 */ { false, 0x8bb7, 0x8bb7 }, /* 0x8bb8 */ { false, 0x8bb8, 0x8bb8 }, /* 0x8bb9 */ { false, 0x8bb9, 0x8bb9 }, /* 0x8bba */ { false, 0x8bba, 0x8bba }, /* 0x8bbb */ { false, 0x8bbb, 0x8bbb }, /* 0x8bbc */ { false, 0x8bbc, 0x8bbc }, /* 0x8bbd */ { false, 0x8bbd, 0x8bbd }, /* 0x8bbe */ { false, 0x8bbe, 0x8bbe }, /* 0x8bbf */ { false, 0x8bbf, 0x8bbf }, /* 0x8bc0 */ { false, 0x8bc0, 0x8bc0 }, /* 0x8bc1 */ { false, 0x8bc1, 0x8bc1 }, /* 0x8bc2 */ { false, 0x8bc2, 0x8bc2 }, /* 0x8bc3 */ { false, 0x8bc3, 0x8bc3 }, /* 0x8bc4 */ { false, 0x8bc4, 0x8bc4 }, /* 0x8bc5 */ { false, 0x8bc5, 0x8bc5 }, /* 0x8bc6 */ { false, 0x8bc6, 0x8bc6 }, /* 0x8bc7 */ { false, 0x8bc7, 0x8bc7 }, /* 0x8bc8 */ { false, 0x8bc8, 0x8bc8 }, /* 0x8bc9 */ { false, 0x8bc9, 0x8bc9 }, /* 0x8bca */ { false, 0x8bca, 0x8bca }, /* 0x8bcb */ { false, 0x8bcb, 0x8bcb }, /* 0x8bcc */ { false, 0x8bcc, 0x8bcc }, /* 0x8bcd */ { false, 0x8bcd, 0x8bcd }, /* 0x8bce */ { false, 0x8bce, 0x8bce }, /* 0x8bcf */ { false, 0x8bcf, 0x8bcf }, /* 0x8bd0 */ { false, 0x8bd0, 0x8bd0 }, /* 0x8bd1 */ { false, 0x8bd1, 0x8bd1 }, /* 0x8bd2 */ { false, 0x8bd2, 0x8bd2 }, /* 0x8bd3 */ { false, 0x8bd3, 0x8bd3 }, /* 0x8bd4 */ { false, 0x8bd4, 0x8bd4 }, /* 0x8bd5 */ { false, 0x8bd5, 0x8bd5 }, /* 0x8bd6 */ { false, 0x8bd6, 0x8bd6 }, /* 0x8bd7 */ { false, 0x8bd7, 0x8bd7 }, /* 0x8bd8 */ { false, 0x8bd8, 0x8bd8 }, /* 0x8bd9 */ { false, 0x8bd9, 0x8bd9 }, /* 0x8bda */ { false, 0x8bda, 0x8bda }, /* 0x8bdb */ { false, 0x8bdb, 0x8bdb }, /* 0x8bdc */ { false, 0x8bdc, 0x8bdc }, /* 0x8bdd */ { false, 0x8bdd, 0x8bdd }, /* 0x8bde */ { false, 0x8bde, 0x8bde }, /* 0x8bdf */ { false, 0x8bdf, 0x8bdf }, /* 0x8be0 */ { false, 0x8be0, 0x8be0 }, /* 0x8be1 */ { false, 0x8be1, 0x8be1 }, /* 0x8be2 */ { false, 0x8be2, 0x8be2 }, /* 0x8be3 */ { false, 0x8be3, 0x8be3 }, /* 0x8be4 */ { false, 0x8be4, 0x8be4 }, /* 0x8be5 */ { false, 0x8be5, 0x8be5 }, /* 0x8be6 */ { false, 0x8be6, 0x8be6 }, /* 0x8be7 */ { false, 0x8be7, 0x8be7 }, /* 0x8be8 */ { false, 0x8be8, 0x8be8 }, /* 0x8be9 */ { false, 0x8be9, 0x8be9 }, /* 0x8bea */ { false, 0x8bea, 0x8bea }, /* 0x8beb */ { false, 0x8beb, 0x8beb }, /* 0x8bec */ { false, 0x8bec, 0x8bec }, /* 0x8bed */ { false, 0x8bed, 0x8bed }, /* 0x8bee */ { false, 0x8bee, 0x8bee }, /* 0x8bef */ { false, 0x8bef, 0x8bef }, /* 0x8bf0 */ { false, 0x8bf0, 0x8bf0 }, /* 0x8bf1 */ { false, 0x8bf1, 0x8bf1 }, /* 0x8bf2 */ { false, 0x8bf2, 0x8bf2 }, /* 0x8bf3 */ { false, 0x8bf3, 0x8bf3 }, /* 0x8bf4 */ { false, 0x8bf4, 0x8bf4 }, /* 0x8bf5 */ { false, 0x8bf5, 0x8bf5 }, /* 0x8bf6 */ { false, 0x8bf6, 0x8bf6 }, /* 0x8bf7 */ { false, 0x8bf7, 0x8bf7 }, /* 0x8bf8 */ { false, 0x8bf8, 0x8bf8 }, /* 0x8bf9 */ { false, 0x8bf9, 0x8bf9 }, /* 0x8bfa */ { false, 0x8bfa, 0x8bfa }, /* 0x8bfb */ { false, 0x8bfb, 0x8bfb }, /* 0x8bfc */ { false, 0x8bfc, 0x8bfc }, /* 0x8bfd */ { false, 0x8bfd, 0x8bfd }, /* 0x8bfe */ { false, 0x8bfe, 0x8bfe }, /* 0x8bff */ { false, 0x8bff, 0x8bff }, /* 0x8c00 */ { false, 0x8c00, 0x8c00 }, /* 0x8c01 */ { false, 0x8c01, 0x8c01 }, /* 0x8c02 */ { false, 0x8c02, 0x8c02 }, /* 0x8c03 */ { false, 0x8c03, 0x8c03 }, /* 0x8c04 */ { false, 0x8c04, 0x8c04 }, /* 0x8c05 */ { false, 0x8c05, 0x8c05 }, /* 0x8c06 */ { false, 0x8c06, 0x8c06 }, /* 0x8c07 */ { false, 0x8c07, 0x8c07 }, /* 0x8c08 */ { false, 0x8c08, 0x8c08 }, /* 0x8c09 */ { false, 0x8c09, 0x8c09 }, /* 0x8c0a */ { false, 0x8c0a, 0x8c0a }, /* 0x8c0b */ { false, 0x8c0b, 0x8c0b }, /* 0x8c0c */ { false, 0x8c0c, 0x8c0c }, /* 0x8c0d */ { false, 0x8c0d, 0x8c0d }, /* 0x8c0e */ { false, 0x8c0e, 0x8c0e }, /* 0x8c0f */ { false, 0x8c0f, 0x8c0f }, /* 0x8c10 */ { false, 0x8c10, 0x8c10 }, /* 0x8c11 */ { false, 0x8c11, 0x8c11 }, /* 0x8c12 */ { false, 0x8c12, 0x8c12 }, /* 0x8c13 */ { false, 0x8c13, 0x8c13 }, /* 0x8c14 */ { false, 0x8c14, 0x8c14 }, /* 0x8c15 */ { false, 0x8c15, 0x8c15 }, /* 0x8c16 */ { false, 0x8c16, 0x8c16 }, /* 0x8c17 */ { false, 0x8c17, 0x8c17 }, /* 0x8c18 */ { false, 0x8c18, 0x8c18 }, /* 0x8c19 */ { false, 0x8c19, 0x8c19 }, /* 0x8c1a */ { false, 0x8c1a, 0x8c1a }, /* 0x8c1b */ { false, 0x8c1b, 0x8c1b }, /* 0x8c1c */ { false, 0x8c1c, 0x8c1c }, /* 0x8c1d */ { false, 0x8c1d, 0x8c1d }, /* 0x8c1e */ { false, 0x8c1e, 0x8c1e }, /* 0x8c1f */ { false, 0x8c1f, 0x8c1f }, /* 0x8c20 */ { false, 0x8c20, 0x8c20 }, /* 0x8c21 */ { false, 0x8c21, 0x8c21 }, /* 0x8c22 */ { false, 0x8c22, 0x8c22 }, /* 0x8c23 */ { false, 0x8c23, 0x8c23 }, /* 0x8c24 */ { false, 0x8c24, 0x8c24 }, /* 0x8c25 */ { false, 0x8c25, 0x8c25 }, /* 0x8c26 */ { false, 0x8c26, 0x8c26 }, /* 0x8c27 */ { false, 0x8c27, 0x8c27 }, /* 0x8c28 */ { false, 0x8c28, 0x8c28 }, /* 0x8c29 */ { false, 0x8c29, 0x8c29 }, /* 0x8c2a */ { false, 0x8c2a, 0x8c2a }, /* 0x8c2b */ { false, 0x8c2b, 0x8c2b }, /* 0x8c2c */ { false, 0x8c2c, 0x8c2c }, /* 0x8c2d */ { false, 0x8c2d, 0x8c2d }, /* 0x8c2e */ { false, 0x8c2e, 0x8c2e }, /* 0x8c2f */ { false, 0x8c2f, 0x8c2f }, /* 0x8c30 */ { false, 0x8c30, 0x8c30 }, /* 0x8c31 */ { false, 0x8c31, 0x8c31 }, /* 0x8c32 */ { false, 0x8c32, 0x8c32 }, /* 0x8c33 */ { false, 0x8c33, 0x8c33 }, /* 0x8c34 */ { false, 0x8c34, 0x8c34 }, /* 0x8c35 */ { false, 0x8c35, 0x8c35 }, /* 0x8c36 */ { false, 0x8c36, 0x8c36 }, /* 0x8c37 */ { false, 0x8c37, 0x8c37 }, /* 0x8c38 */ { false, 0x8c38, 0x8c38 }, /* 0x8c39 */ { false, 0x8c39, 0x8c39 }, /* 0x8c3a */ { false, 0x8c3a, 0x8c3a }, /* 0x8c3b */ { false, 0x8c3b, 0x8c3b }, /* 0x8c3c */ { false, 0x8c3c, 0x8c3c }, /* 0x8c3d */ { false, 0x8c3d, 0x8c3d }, /* 0x8c3e */ { false, 0x8c3e, 0x8c3e }, /* 0x8c3f */ { false, 0x8c3f, 0x8c3f }, /* 0x8c40 */ { false, 0x8c40, 0x8c40 }, /* 0x8c41 */ { false, 0x8c41, 0x8c41 }, /* 0x8c42 */ { false, 0x8c42, 0x8c42 }, /* 0x8c43 */ { false, 0x8c43, 0x8c43 }, /* 0x8c44 */ { false, 0x8c44, 0x8c44 }, /* 0x8c45 */ { false, 0x8c45, 0x8c45 }, /* 0x8c46 */ { false, 0x8c46, 0x8c46 }, /* 0x8c47 */ { false, 0x8c47, 0x8c47 }, /* 0x8c48 */ { false, 0x8c48, 0x8c48 }, /* 0x8c49 */ { false, 0x8c49, 0x8c49 }, /* 0x8c4a */ { false, 0x8c4a, 0x8c4a }, /* 0x8c4b */ { false, 0x8c4b, 0x8c4b }, /* 0x8c4c */ { false, 0x8c4c, 0x8c4c }, /* 0x8c4d */ { false, 0x8c4d, 0x8c4d }, /* 0x8c4e */ { false, 0x8c4e, 0x8c4e }, /* 0x8c4f */ { false, 0x8c4f, 0x8c4f }, /* 0x8c50 */ { false, 0x8c50, 0x8c50 }, /* 0x8c51 */ { false, 0x8c51, 0x8c51 }, /* 0x8c52 */ { false, 0x8c52, 0x8c52 }, /* 0x8c53 */ { false, 0x8c53, 0x8c53 }, /* 0x8c54 */ { false, 0x8c54, 0x8c54 }, /* 0x8c55 */ { false, 0x8c55, 0x8c55 }, /* 0x8c56 */ { false, 0x8c56, 0x8c56 }, /* 0x8c57 */ { false, 0x8c57, 0x8c57 }, /* 0x8c58 */ { false, 0x8c58, 0x8c58 }, /* 0x8c59 */ { false, 0x8c59, 0x8c59 }, /* 0x8c5a */ { false, 0x8c5a, 0x8c5a }, /* 0x8c5b */ { false, 0x8c5b, 0x8c5b }, /* 0x8c5c */ { false, 0x8c5c, 0x8c5c }, /* 0x8c5d */ { false, 0x8c5d, 0x8c5d }, /* 0x8c5e */ { false, 0x8c5e, 0x8c5e }, /* 0x8c5f */ { false, 0x8c5f, 0x8c5f }, /* 0x8c60 */ { false, 0x8c60, 0x8c60 }, /* 0x8c61 */ { false, 0x8c61, 0x8c61 }, /* 0x8c62 */ { false, 0x8c62, 0x8c62 }, /* 0x8c63 */ { false, 0x8c63, 0x8c63 }, /* 0x8c64 */ { false, 0x8c64, 0x8c64 }, /* 0x8c65 */ { false, 0x8c65, 0x8c65 }, /* 0x8c66 */ { false, 0x8c66, 0x8c66 }, /* 0x8c67 */ { false, 0x8c67, 0x8c67 }, /* 0x8c68 */ { false, 0x8c68, 0x8c68 }, /* 0x8c69 */ { false, 0x8c69, 0x8c69 }, /* 0x8c6a */ { false, 0x8c6a, 0x8c6a }, /* 0x8c6b */ { false, 0x8c6b, 0x8c6b }, /* 0x8c6c */ { false, 0x8c6c, 0x8c6c }, /* 0x8c6d */ { false, 0x8c6d, 0x8c6d }, /* 0x8c6e */ { false, 0x8c6e, 0x8c6e }, /* 0x8c6f */ { false, 0x8c6f, 0x8c6f }, /* 0x8c70 */ { false, 0x8c70, 0x8c70 }, /* 0x8c71 */ { false, 0x8c71, 0x8c71 }, /* 0x8c72 */ { false, 0x8c72, 0x8c72 }, /* 0x8c73 */ { false, 0x8c73, 0x8c73 }, /* 0x8c74 */ { false, 0x8c74, 0x8c74 }, /* 0x8c75 */ { false, 0x8c75, 0x8c75 }, /* 0x8c76 */ { false, 0x8c76, 0x8c76 }, /* 0x8c77 */ { false, 0x8c77, 0x8c77 }, /* 0x8c78 */ { false, 0x8c78, 0x8c78 }, /* 0x8c79 */ { false, 0x8c79, 0x8c79 }, /* 0x8c7a */ { false, 0x8c7a, 0x8c7a }, /* 0x8c7b */ { false, 0x8c7b, 0x8c7b }, /* 0x8c7c */ { false, 0x8c7c, 0x8c7c }, /* 0x8c7d */ { false, 0x8c7d, 0x8c7d }, /* 0x8c7e */ { false, 0x8c7e, 0x8c7e }, /* 0x8c7f */ { false, 0x8c7f, 0x8c7f }, /* 0x8c80 */ { false, 0x8c80, 0x8c80 }, /* 0x8c81 */ { false, 0x8c81, 0x8c81 }, /* 0x8c82 */ { false, 0x8c82, 0x8c82 }, /* 0x8c83 */ { false, 0x8c83, 0x8c83 }, /* 0x8c84 */ { false, 0x8c84, 0x8c84 }, /* 0x8c85 */ { false, 0x8c85, 0x8c85 }, /* 0x8c86 */ { false, 0x8c86, 0x8c86 }, /* 0x8c87 */ { false, 0x8c87, 0x8c87 }, /* 0x8c88 */ { false, 0x8c88, 0x8c88 }, /* 0x8c89 */ { false, 0x8c89, 0x8c89 }, /* 0x8c8a */ { false, 0x8c8a, 0x8c8a }, /* 0x8c8b */ { false, 0x8c8b, 0x8c8b }, /* 0x8c8c */ { false, 0x8c8c, 0x8c8c }, /* 0x8c8d */ { false, 0x8c8d, 0x8c8d }, /* 0x8c8e */ { false, 0x8c8e, 0x8c8e }, /* 0x8c8f */ { false, 0x8c8f, 0x8c8f }, /* 0x8c90 */ { false, 0x8c90, 0x8c90 }, /* 0x8c91 */ { false, 0x8c91, 0x8c91 }, /* 0x8c92 */ { false, 0x8c92, 0x8c92 }, /* 0x8c93 */ { false, 0x8c93, 0x8c93 }, /* 0x8c94 */ { false, 0x8c94, 0x8c94 }, /* 0x8c95 */ { false, 0x8c95, 0x8c95 }, /* 0x8c96 */ { false, 0x8c96, 0x8c96 }, /* 0x8c97 */ { false, 0x8c97, 0x8c97 }, /* 0x8c98 */ { false, 0x8c98, 0x8c98 }, /* 0x8c99 */ { false, 0x8c99, 0x8c99 }, /* 0x8c9a */ { false, 0x8c9a, 0x8c9a }, /* 0x8c9b */ { false, 0x8c9b, 0x8c9b }, /* 0x8c9c */ { false, 0x8c9c, 0x8c9c }, /* 0x8c9d */ { false, 0x8c9d, 0x8c9d }, /* 0x8c9e */ { false, 0x8c9e, 0x8c9e }, /* 0x8c9f */ { false, 0x8c9f, 0x8c9f }, /* 0x8ca0 */ { false, 0x8ca0, 0x8ca0 }, /* 0x8ca1 */ { false, 0x8ca1, 0x8ca1 }, /* 0x8ca2 */ { false, 0x8ca2, 0x8ca2 }, /* 0x8ca3 */ { false, 0x8ca3, 0x8ca3 }, /* 0x8ca4 */ { false, 0x8ca4, 0x8ca4 }, /* 0x8ca5 */ { false, 0x8ca5, 0x8ca5 }, /* 0x8ca6 */ { false, 0x8ca6, 0x8ca6 }, /* 0x8ca7 */ { false, 0x8ca7, 0x8ca7 }, /* 0x8ca8 */ { false, 0x8ca8, 0x8ca8 }, /* 0x8ca9 */ { false, 0x8ca9, 0x8ca9 }, /* 0x8caa */ { false, 0x8caa, 0x8caa }, /* 0x8cab */ { false, 0x8cab, 0x8cab }, /* 0x8cac */ { false, 0x8cac, 0x8cac }, /* 0x8cad */ { false, 0x8cad, 0x8cad }, /* 0x8cae */ { false, 0x8cae, 0x8cae }, /* 0x8caf */ { false, 0x8caf, 0x8caf }, /* 0x8cb0 */ { false, 0x8cb0, 0x8cb0 }, /* 0x8cb1 */ { false, 0x8cb1, 0x8cb1 }, /* 0x8cb2 */ { false, 0x8cb2, 0x8cb2 }, /* 0x8cb3 */ { false, 0x8cb3, 0x8cb3 }, /* 0x8cb4 */ { false, 0x8cb4, 0x8cb4 }, /* 0x8cb5 */ { false, 0x8cb5, 0x8cb5 }, /* 0x8cb6 */ { false, 0x8cb6, 0x8cb6 }, /* 0x8cb7 */ { false, 0x8cb7, 0x8cb7 }, /* 0x8cb8 */ { false, 0x8cb8, 0x8cb8 }, /* 0x8cb9 */ { false, 0x8cb9, 0x8cb9 }, /* 0x8cba */ { false, 0x8cba, 0x8cba }, /* 0x8cbb */ { false, 0x8cbb, 0x8cbb }, /* 0x8cbc */ { false, 0x8cbc, 0x8cbc }, /* 0x8cbd */ { false, 0x8cbd, 0x8cbd }, /* 0x8cbe */ { false, 0x8cbe, 0x8cbe }, /* 0x8cbf */ { false, 0x8cbf, 0x8cbf }, /* 0x8cc0 */ { false, 0x8cc0, 0x8cc0 }, /* 0x8cc1 */ { false, 0x8cc1, 0x8cc1 }, /* 0x8cc2 */ { false, 0x8cc2, 0x8cc2 }, /* 0x8cc3 */ { false, 0x8cc3, 0x8cc3 }, /* 0x8cc4 */ { false, 0x8cc4, 0x8cc4 }, /* 0x8cc5 */ { false, 0x8cc5, 0x8cc5 }, /* 0x8cc6 */ { false, 0x8cc6, 0x8cc6 }, /* 0x8cc7 */ { false, 0x8cc7, 0x8cc7 }, /* 0x8cc8 */ { false, 0x8cc8, 0x8cc8 }, /* 0x8cc9 */ { false, 0x8cc9, 0x8cc9 }, /* 0x8cca */ { false, 0x8cca, 0x8cca }, /* 0x8ccb */ { false, 0x8ccb, 0x8ccb }, /* 0x8ccc */ { false, 0x8ccc, 0x8ccc }, /* 0x8ccd */ { false, 0x8ccd, 0x8ccd }, /* 0x8cce */ { false, 0x8cce, 0x8cce }, /* 0x8ccf */ { false, 0x8ccf, 0x8ccf }, /* 0x8cd0 */ { false, 0x8cd0, 0x8cd0 }, /* 0x8cd1 */ { false, 0x8cd1, 0x8cd1 }, /* 0x8cd2 */ { false, 0x8cd2, 0x8cd2 }, /* 0x8cd3 */ { false, 0x8cd3, 0x8cd3 }, /* 0x8cd4 */ { false, 0x8cd4, 0x8cd4 }, /* 0x8cd5 */ { false, 0x8cd5, 0x8cd5 }, /* 0x8cd6 */ { false, 0x8cd6, 0x8cd6 }, /* 0x8cd7 */ { false, 0x8cd7, 0x8cd7 }, /* 0x8cd8 */ { false, 0x8cd8, 0x8cd8 }, /* 0x8cd9 */ { false, 0x8cd9, 0x8cd9 }, /* 0x8cda */ { false, 0x8cda, 0x8cda }, /* 0x8cdb */ { false, 0x8cdb, 0x8cdb }, /* 0x8cdc */ { false, 0x8cdc, 0x8cdc }, /* 0x8cdd */ { false, 0x8cdd, 0x8cdd }, /* 0x8cde */ { false, 0x8cde, 0x8cde }, /* 0x8cdf */ { false, 0x8cdf, 0x8cdf }, /* 0x8ce0 */ { false, 0x8ce0, 0x8ce0 }, /* 0x8ce1 */ { false, 0x8ce1, 0x8ce1 }, /* 0x8ce2 */ { false, 0x8ce2, 0x8ce2 }, /* 0x8ce3 */ { false, 0x8ce3, 0x8ce3 }, /* 0x8ce4 */ { false, 0x8ce4, 0x8ce4 }, /* 0x8ce5 */ { false, 0x8ce5, 0x8ce5 }, /* 0x8ce6 */ { false, 0x8ce6, 0x8ce6 }, /* 0x8ce7 */ { false, 0x8ce7, 0x8ce7 }, /* 0x8ce8 */ { false, 0x8ce8, 0x8ce8 }, /* 0x8ce9 */ { false, 0x8ce9, 0x8ce9 }, /* 0x8cea */ { false, 0x8cea, 0x8cea }, /* 0x8ceb */ { false, 0x8ceb, 0x8ceb }, /* 0x8cec */ { false, 0x8cec, 0x8cec }, /* 0x8ced */ { false, 0x8ced, 0x8ced }, /* 0x8cee */ { false, 0x8cee, 0x8cee }, /* 0x8cef */ { false, 0x8cef, 0x8cef }, /* 0x8cf0 */ { false, 0x8cf0, 0x8cf0 }, /* 0x8cf1 */ { false, 0x8cf1, 0x8cf1 }, /* 0x8cf2 */ { false, 0x8cf2, 0x8cf2 }, /* 0x8cf3 */ { false, 0x8cf3, 0x8cf3 }, /* 0x8cf4 */ { false, 0x8cf4, 0x8cf4 }, /* 0x8cf5 */ { false, 0x8cf5, 0x8cf5 }, /* 0x8cf6 */ { false, 0x8cf6, 0x8cf6 }, /* 0x8cf7 */ { false, 0x8cf7, 0x8cf7 }, /* 0x8cf8 */ { false, 0x8cf8, 0x8cf8 }, /* 0x8cf9 */ { false, 0x8cf9, 0x8cf9 }, /* 0x8cfa */ { false, 0x8cfa, 0x8cfa }, /* 0x8cfb */ { false, 0x8cfb, 0x8cfb }, /* 0x8cfc */ { false, 0x8cfc, 0x8cfc }, /* 0x8cfd */ { false, 0x8cfd, 0x8cfd }, /* 0x8cfe */ { false, 0x8cfe, 0x8cfe }, /* 0x8cff */ { false, 0x8cff, 0x8cff }, /* 0x8d00 */ { false, 0x8d00, 0x8d00 }, /* 0x8d01 */ { false, 0x8d01, 0x8d01 }, /* 0x8d02 */ { false, 0x8d02, 0x8d02 }, /* 0x8d03 */ { false, 0x8d03, 0x8d03 }, /* 0x8d04 */ { false, 0x8d04, 0x8d04 }, /* 0x8d05 */ { false, 0x8d05, 0x8d05 }, /* 0x8d06 */ { false, 0x8d06, 0x8d06 }, /* 0x8d07 */ { false, 0x8d07, 0x8d07 }, /* 0x8d08 */ { false, 0x8d08, 0x8d08 }, /* 0x8d09 */ { false, 0x8d09, 0x8d09 }, /* 0x8d0a */ { false, 0x8d0a, 0x8d0a }, /* 0x8d0b */ { false, 0x8d0b, 0x8d0b }, /* 0x8d0c */ { false, 0x8d0c, 0x8d0c }, /* 0x8d0d */ { false, 0x8d0d, 0x8d0d }, /* 0x8d0e */ { false, 0x8d0e, 0x8d0e }, /* 0x8d0f */ { false, 0x8d0f, 0x8d0f }, /* 0x8d10 */ { false, 0x8d10, 0x8d10 }, /* 0x8d11 */ { false, 0x8d11, 0x8d11 }, /* 0x8d12 */ { false, 0x8d12, 0x8d12 }, /* 0x8d13 */ { false, 0x8d13, 0x8d13 }, /* 0x8d14 */ { false, 0x8d14, 0x8d14 }, /* 0x8d15 */ { false, 0x8d15, 0x8d15 }, /* 0x8d16 */ { false, 0x8d16, 0x8d16 }, /* 0x8d17 */ { false, 0x8d17, 0x8d17 }, /* 0x8d18 */ { false, 0x8d18, 0x8d18 }, /* 0x8d19 */ { false, 0x8d19, 0x8d19 }, /* 0x8d1a */ { false, 0x8d1a, 0x8d1a }, /* 0x8d1b */ { false, 0x8d1b, 0x8d1b }, /* 0x8d1c */ { false, 0x8d1c, 0x8d1c }, /* 0x8d1d */ { false, 0x8d1d, 0x8d1d }, /* 0x8d1e */ { false, 0x8d1e, 0x8d1e }, /* 0x8d1f */ { false, 0x8d1f, 0x8d1f }, /* 0x8d20 */ { false, 0x8d20, 0x8d20 }, /* 0x8d21 */ { false, 0x8d21, 0x8d21 }, /* 0x8d22 */ { false, 0x8d22, 0x8d22 }, /* 0x8d23 */ { false, 0x8d23, 0x8d23 }, /* 0x8d24 */ { false, 0x8d24, 0x8d24 }, /* 0x8d25 */ { false, 0x8d25, 0x8d25 }, /* 0x8d26 */ { false, 0x8d26, 0x8d26 }, /* 0x8d27 */ { false, 0x8d27, 0x8d27 }, /* 0x8d28 */ { false, 0x8d28, 0x8d28 }, /* 0x8d29 */ { false, 0x8d29, 0x8d29 }, /* 0x8d2a */ { false, 0x8d2a, 0x8d2a }, /* 0x8d2b */ { false, 0x8d2b, 0x8d2b }, /* 0x8d2c */ { false, 0x8d2c, 0x8d2c }, /* 0x8d2d */ { false, 0x8d2d, 0x8d2d }, /* 0x8d2e */ { false, 0x8d2e, 0x8d2e }, /* 0x8d2f */ { false, 0x8d2f, 0x8d2f }, /* 0x8d30 */ { false, 0x8d30, 0x8d30 }, /* 0x8d31 */ { false, 0x8d31, 0x8d31 }, /* 0x8d32 */ { false, 0x8d32, 0x8d32 }, /* 0x8d33 */ { false, 0x8d33, 0x8d33 }, /* 0x8d34 */ { false, 0x8d34, 0x8d34 }, /* 0x8d35 */ { false, 0x8d35, 0x8d35 }, /* 0x8d36 */ { false, 0x8d36, 0x8d36 }, /* 0x8d37 */ { false, 0x8d37, 0x8d37 }, /* 0x8d38 */ { false, 0x8d38, 0x8d38 }, /* 0x8d39 */ { false, 0x8d39, 0x8d39 }, /* 0x8d3a */ { false, 0x8d3a, 0x8d3a }, /* 0x8d3b */ { false, 0x8d3b, 0x8d3b }, /* 0x8d3c */ { false, 0x8d3c, 0x8d3c }, /* 0x8d3d */ { false, 0x8d3d, 0x8d3d }, /* 0x8d3e */ { false, 0x8d3e, 0x8d3e }, /* 0x8d3f */ { false, 0x8d3f, 0x8d3f }, /* 0x8d40 */ { false, 0x8d40, 0x8d40 }, /* 0x8d41 */ { false, 0x8d41, 0x8d41 }, /* 0x8d42 */ { false, 0x8d42, 0x8d42 }, /* 0x8d43 */ { false, 0x8d43, 0x8d43 }, /* 0x8d44 */ { false, 0x8d44, 0x8d44 }, /* 0x8d45 */ { false, 0x8d45, 0x8d45 }, /* 0x8d46 */ { false, 0x8d46, 0x8d46 }, /* 0x8d47 */ { false, 0x8d47, 0x8d47 }, /* 0x8d48 */ { false, 0x8d48, 0x8d48 }, /* 0x8d49 */ { false, 0x8d49, 0x8d49 }, /* 0x8d4a */ { false, 0x8d4a, 0x8d4a }, /* 0x8d4b */ { false, 0x8d4b, 0x8d4b }, /* 0x8d4c */ { false, 0x8d4c, 0x8d4c }, /* 0x8d4d */ { false, 0x8d4d, 0x8d4d }, /* 0x8d4e */ { false, 0x8d4e, 0x8d4e }, /* 0x8d4f */ { false, 0x8d4f, 0x8d4f }, /* 0x8d50 */ { false, 0x8d50, 0x8d50 }, /* 0x8d51 */ { false, 0x8d51, 0x8d51 }, /* 0x8d52 */ { false, 0x8d52, 0x8d52 }, /* 0x8d53 */ { false, 0x8d53, 0x8d53 }, /* 0x8d54 */ { false, 0x8d54, 0x8d54 }, /* 0x8d55 */ { false, 0x8d55, 0x8d55 }, /* 0x8d56 */ { false, 0x8d56, 0x8d56 }, /* 0x8d57 */ { false, 0x8d57, 0x8d57 }, /* 0x8d58 */ { false, 0x8d58, 0x8d58 }, /* 0x8d59 */ { false, 0x8d59, 0x8d59 }, /* 0x8d5a */ { false, 0x8d5a, 0x8d5a }, /* 0x8d5b */ { false, 0x8d5b, 0x8d5b }, /* 0x8d5c */ { false, 0x8d5c, 0x8d5c }, /* 0x8d5d */ { false, 0x8d5d, 0x8d5d }, /* 0x8d5e */ { false, 0x8d5e, 0x8d5e }, /* 0x8d5f */ { false, 0x8d5f, 0x8d5f }, /* 0x8d60 */ { false, 0x8d60, 0x8d60 }, /* 0x8d61 */ { false, 0x8d61, 0x8d61 }, /* 0x8d62 */ { false, 0x8d62, 0x8d62 }, /* 0x8d63 */ { false, 0x8d63, 0x8d63 }, /* 0x8d64 */ { false, 0x8d64, 0x8d64 }, /* 0x8d65 */ { false, 0x8d65, 0x8d65 }, /* 0x8d66 */ { false, 0x8d66, 0x8d66 }, /* 0x8d67 */ { false, 0x8d67, 0x8d67 }, /* 0x8d68 */ { false, 0x8d68, 0x8d68 }, /* 0x8d69 */ { false, 0x8d69, 0x8d69 }, /* 0x8d6a */ { false, 0x8d6a, 0x8d6a }, /* 0x8d6b */ { false, 0x8d6b, 0x8d6b }, /* 0x8d6c */ { false, 0x8d6c, 0x8d6c }, /* 0x8d6d */ { false, 0x8d6d, 0x8d6d }, /* 0x8d6e */ { false, 0x8d6e, 0x8d6e }, /* 0x8d6f */ { false, 0x8d6f, 0x8d6f }, /* 0x8d70 */ { false, 0x8d70, 0x8d70 }, /* 0x8d71 */ { false, 0x8d71, 0x8d71 }, /* 0x8d72 */ { false, 0x8d72, 0x8d72 }, /* 0x8d73 */ { false, 0x8d73, 0x8d73 }, /* 0x8d74 */ { false, 0x8d74, 0x8d74 }, /* 0x8d75 */ { false, 0x8d75, 0x8d75 }, /* 0x8d76 */ { false, 0x8d76, 0x8d76 }, /* 0x8d77 */ { false, 0x8d77, 0x8d77 }, /* 0x8d78 */ { false, 0x8d78, 0x8d78 }, /* 0x8d79 */ { false, 0x8d79, 0x8d79 }, /* 0x8d7a */ { false, 0x8d7a, 0x8d7a }, /* 0x8d7b */ { false, 0x8d7b, 0x8d7b }, /* 0x8d7c */ { false, 0x8d7c, 0x8d7c }, /* 0x8d7d */ { false, 0x8d7d, 0x8d7d }, /* 0x8d7e */ { false, 0x8d7e, 0x8d7e }, /* 0x8d7f */ { false, 0x8d7f, 0x8d7f }, /* 0x8d80 */ { false, 0x8d80, 0x8d80 }, /* 0x8d81 */ { false, 0x8d81, 0x8d81 }, /* 0x8d82 */ { false, 0x8d82, 0x8d82 }, /* 0x8d83 */ { false, 0x8d83, 0x8d83 }, /* 0x8d84 */ { false, 0x8d84, 0x8d84 }, /* 0x8d85 */ { false, 0x8d85, 0x8d85 }, /* 0x8d86 */ { false, 0x8d86, 0x8d86 }, /* 0x8d87 */ { false, 0x8d87, 0x8d87 }, /* 0x8d88 */ { false, 0x8d88, 0x8d88 }, /* 0x8d89 */ { false, 0x8d89, 0x8d89 }, /* 0x8d8a */ { false, 0x8d8a, 0x8d8a }, /* 0x8d8b */ { false, 0x8d8b, 0x8d8b }, /* 0x8d8c */ { false, 0x8d8c, 0x8d8c }, /* 0x8d8d */ { false, 0x8d8d, 0x8d8d }, /* 0x8d8e */ { false, 0x8d8e, 0x8d8e }, /* 0x8d8f */ { false, 0x8d8f, 0x8d8f }, /* 0x8d90 */ { false, 0x8d90, 0x8d90 }, /* 0x8d91 */ { false, 0x8d91, 0x8d91 }, /* 0x8d92 */ { false, 0x8d92, 0x8d92 }, /* 0x8d93 */ { false, 0x8d93, 0x8d93 }, /* 0x8d94 */ { false, 0x8d94, 0x8d94 }, /* 0x8d95 */ { false, 0x8d95, 0x8d95 }, /* 0x8d96 */ { false, 0x8d96, 0x8d96 }, /* 0x8d97 */ { false, 0x8d97, 0x8d97 }, /* 0x8d98 */ { false, 0x8d98, 0x8d98 }, /* 0x8d99 */ { false, 0x8d99, 0x8d99 }, /* 0x8d9a */ { false, 0x8d9a, 0x8d9a }, /* 0x8d9b */ { false, 0x8d9b, 0x8d9b }, /* 0x8d9c */ { false, 0x8d9c, 0x8d9c }, /* 0x8d9d */ { false, 0x8d9d, 0x8d9d }, /* 0x8d9e */ { false, 0x8d9e, 0x8d9e }, /* 0x8d9f */ { false, 0x8d9f, 0x8d9f }, /* 0x8da0 */ { false, 0x8da0, 0x8da0 }, /* 0x8da1 */ { false, 0x8da1, 0x8da1 }, /* 0x8da2 */ { false, 0x8da2, 0x8da2 }, /* 0x8da3 */ { false, 0x8da3, 0x8da3 }, /* 0x8da4 */ { false, 0x8da4, 0x8da4 }, /* 0x8da5 */ { false, 0x8da5, 0x8da5 }, /* 0x8da6 */ { false, 0x8da6, 0x8da6 }, /* 0x8da7 */ { false, 0x8da7, 0x8da7 }, /* 0x8da8 */ { false, 0x8da8, 0x8da8 }, /* 0x8da9 */ { false, 0x8da9, 0x8da9 }, /* 0x8daa */ { false, 0x8daa, 0x8daa }, /* 0x8dab */ { false, 0x8dab, 0x8dab }, /* 0x8dac */ { false, 0x8dac, 0x8dac }, /* 0x8dad */ { false, 0x8dad, 0x8dad }, /* 0x8dae */ { false, 0x8dae, 0x8dae }, /* 0x8daf */ { false, 0x8daf, 0x8daf }, /* 0x8db0 */ { false, 0x8db0, 0x8db0 }, /* 0x8db1 */ { false, 0x8db1, 0x8db1 }, /* 0x8db2 */ { false, 0x8db2, 0x8db2 }, /* 0x8db3 */ { false, 0x8db3, 0x8db3 }, /* 0x8db4 */ { false, 0x8db4, 0x8db4 }, /* 0x8db5 */ { false, 0x8db5, 0x8db5 }, /* 0x8db6 */ { false, 0x8db6, 0x8db6 }, /* 0x8db7 */ { false, 0x8db7, 0x8db7 }, /* 0x8db8 */ { false, 0x8db8, 0x8db8 }, /* 0x8db9 */ { false, 0x8db9, 0x8db9 }, /* 0x8dba */ { false, 0x8dba, 0x8dba }, /* 0x8dbb */ { false, 0x8dbb, 0x8dbb }, /* 0x8dbc */ { false, 0x8dbc, 0x8dbc }, /* 0x8dbd */ { false, 0x8dbd, 0x8dbd }, /* 0x8dbe */ { false, 0x8dbe, 0x8dbe }, /* 0x8dbf */ { false, 0x8dbf, 0x8dbf }, /* 0x8dc0 */ { false, 0x8dc0, 0x8dc0 }, /* 0x8dc1 */ { false, 0x8dc1, 0x8dc1 }, /* 0x8dc2 */ { false, 0x8dc2, 0x8dc2 }, /* 0x8dc3 */ { false, 0x8dc3, 0x8dc3 }, /* 0x8dc4 */ { false, 0x8dc4, 0x8dc4 }, /* 0x8dc5 */ { false, 0x8dc5, 0x8dc5 }, /* 0x8dc6 */ { false, 0x8dc6, 0x8dc6 }, /* 0x8dc7 */ { false, 0x8dc7, 0x8dc7 }, /* 0x8dc8 */ { false, 0x8dc8, 0x8dc8 }, /* 0x8dc9 */ { false, 0x8dc9, 0x8dc9 }, /* 0x8dca */ { false, 0x8dca, 0x8dca }, /* 0x8dcb */ { false, 0x8dcb, 0x8dcb }, /* 0x8dcc */ { false, 0x8dcc, 0x8dcc }, /* 0x8dcd */ { false, 0x8dcd, 0x8dcd }, /* 0x8dce */ { false, 0x8dce, 0x8dce }, /* 0x8dcf */ { false, 0x8dcf, 0x8dcf }, /* 0x8dd0 */ { false, 0x8dd0, 0x8dd0 }, /* 0x8dd1 */ { false, 0x8dd1, 0x8dd1 }, /* 0x8dd2 */ { false, 0x8dd2, 0x8dd2 }, /* 0x8dd3 */ { false, 0x8dd3, 0x8dd3 }, /* 0x8dd4 */ { false, 0x8dd4, 0x8dd4 }, /* 0x8dd5 */ { false, 0x8dd5, 0x8dd5 }, /* 0x8dd6 */ { false, 0x8dd6, 0x8dd6 }, /* 0x8dd7 */ { false, 0x8dd7, 0x8dd7 }, /* 0x8dd8 */ { false, 0x8dd8, 0x8dd8 }, /* 0x8dd9 */ { false, 0x8dd9, 0x8dd9 }, /* 0x8dda */ { false, 0x8dda, 0x8dda }, /* 0x8ddb */ { false, 0x8ddb, 0x8ddb }, /* 0x8ddc */ { false, 0x8ddc, 0x8ddc }, /* 0x8ddd */ { false, 0x8ddd, 0x8ddd }, /* 0x8dde */ { false, 0x8dde, 0x8dde }, /* 0x8ddf */ { false, 0x8ddf, 0x8ddf }, /* 0x8de0 */ { false, 0x8de0, 0x8de0 }, /* 0x8de1 */ { false, 0x8de1, 0x8de1 }, /* 0x8de2 */ { false, 0x8de2, 0x8de2 }, /* 0x8de3 */ { false, 0x8de3, 0x8de3 }, /* 0x8de4 */ { false, 0x8de4, 0x8de4 }, /* 0x8de5 */ { false, 0x8de5, 0x8de5 }, /* 0x8de6 */ { false, 0x8de6, 0x8de6 }, /* 0x8de7 */ { false, 0x8de7, 0x8de7 }, /* 0x8de8 */ { false, 0x8de8, 0x8de8 }, /* 0x8de9 */ { false, 0x8de9, 0x8de9 }, /* 0x8dea */ { false, 0x8dea, 0x8dea }, /* 0x8deb */ { false, 0x8deb, 0x8deb }, /* 0x8dec */ { false, 0x8dec, 0x8dec }, /* 0x8ded */ { false, 0x8ded, 0x8ded }, /* 0x8dee */ { false, 0x8dee, 0x8dee }, /* 0x8def */ { false, 0x8def, 0x8def }, /* 0x8df0 */ { false, 0x8df0, 0x8df0 }, /* 0x8df1 */ { false, 0x8df1, 0x8df1 }, /* 0x8df2 */ { false, 0x8df2, 0x8df2 }, /* 0x8df3 */ { false, 0x8df3, 0x8df3 }, /* 0x8df4 */ { false, 0x8df4, 0x8df4 }, /* 0x8df5 */ { false, 0x8df5, 0x8df5 }, /* 0x8df6 */ { false, 0x8df6, 0x8df6 }, /* 0x8df7 */ { false, 0x8df7, 0x8df7 }, /* 0x8df8 */ { false, 0x8df8, 0x8df8 }, /* 0x8df9 */ { false, 0x8df9, 0x8df9 }, /* 0x8dfa */ { false, 0x8dfa, 0x8dfa }, /* 0x8dfb */ { false, 0x8dfb, 0x8dfb }, /* 0x8dfc */ { false, 0x8dfc, 0x8dfc }, /* 0x8dfd */ { false, 0x8dfd, 0x8dfd }, /* 0x8dfe */ { false, 0x8dfe, 0x8dfe }, /* 0x8dff */ { false, 0x8dff, 0x8dff }, /* 0x8e00 */ { false, 0x8e00, 0x8e00 }, /* 0x8e01 */ { false, 0x8e01, 0x8e01 }, /* 0x8e02 */ { false, 0x8e02, 0x8e02 }, /* 0x8e03 */ { false, 0x8e03, 0x8e03 }, /* 0x8e04 */ { false, 0x8e04, 0x8e04 }, /* 0x8e05 */ { false, 0x8e05, 0x8e05 }, /* 0x8e06 */ { false, 0x8e06, 0x8e06 }, /* 0x8e07 */ { false, 0x8e07, 0x8e07 }, /* 0x8e08 */ { false, 0x8e08, 0x8e08 }, /* 0x8e09 */ { false, 0x8e09, 0x8e09 }, /* 0x8e0a */ { false, 0x8e0a, 0x8e0a }, /* 0x8e0b */ { false, 0x8e0b, 0x8e0b }, /* 0x8e0c */ { false, 0x8e0c, 0x8e0c }, /* 0x8e0d */ { false, 0x8e0d, 0x8e0d }, /* 0x8e0e */ { false, 0x8e0e, 0x8e0e }, /* 0x8e0f */ { false, 0x8e0f, 0x8e0f }, /* 0x8e10 */ { false, 0x8e10, 0x8e10 }, /* 0x8e11 */ { false, 0x8e11, 0x8e11 }, /* 0x8e12 */ { false, 0x8e12, 0x8e12 }, /* 0x8e13 */ { false, 0x8e13, 0x8e13 }, /* 0x8e14 */ { false, 0x8e14, 0x8e14 }, /* 0x8e15 */ { false, 0x8e15, 0x8e15 }, /* 0x8e16 */ { false, 0x8e16, 0x8e16 }, /* 0x8e17 */ { false, 0x8e17, 0x8e17 }, /* 0x8e18 */ { false, 0x8e18, 0x8e18 }, /* 0x8e19 */ { false, 0x8e19, 0x8e19 }, /* 0x8e1a */ { false, 0x8e1a, 0x8e1a }, /* 0x8e1b */ { false, 0x8e1b, 0x8e1b }, /* 0x8e1c */ { false, 0x8e1c, 0x8e1c }, /* 0x8e1d */ { false, 0x8e1d, 0x8e1d }, /* 0x8e1e */ { false, 0x8e1e, 0x8e1e }, /* 0x8e1f */ { false, 0x8e1f, 0x8e1f }, /* 0x8e20 */ { false, 0x8e20, 0x8e20 }, /* 0x8e21 */ { false, 0x8e21, 0x8e21 }, /* 0x8e22 */ { false, 0x8e22, 0x8e22 }, /* 0x8e23 */ { false, 0x8e23, 0x8e23 }, /* 0x8e24 */ { false, 0x8e24, 0x8e24 }, /* 0x8e25 */ { false, 0x8e25, 0x8e25 }, /* 0x8e26 */ { false, 0x8e26, 0x8e26 }, /* 0x8e27 */ { false, 0x8e27, 0x8e27 }, /* 0x8e28 */ { false, 0x8e28, 0x8e28 }, /* 0x8e29 */ { false, 0x8e29, 0x8e29 }, /* 0x8e2a */ { false, 0x8e2a, 0x8e2a }, /* 0x8e2b */ { false, 0x8e2b, 0x8e2b }, /* 0x8e2c */ { false, 0x8e2c, 0x8e2c }, /* 0x8e2d */ { false, 0x8e2d, 0x8e2d }, /* 0x8e2e */ { false, 0x8e2e, 0x8e2e }, /* 0x8e2f */ { false, 0x8e2f, 0x8e2f }, /* 0x8e30 */ { false, 0x8e30, 0x8e30 }, /* 0x8e31 */ { false, 0x8e31, 0x8e31 }, /* 0x8e32 */ { false, 0x8e32, 0x8e32 }, /* 0x8e33 */ { false, 0x8e33, 0x8e33 }, /* 0x8e34 */ { false, 0x8e34, 0x8e34 }, /* 0x8e35 */ { false, 0x8e35, 0x8e35 }, /* 0x8e36 */ { false, 0x8e36, 0x8e36 }, /* 0x8e37 */ { false, 0x8e37, 0x8e37 }, /* 0x8e38 */ { false, 0x8e38, 0x8e38 }, /* 0x8e39 */ { false, 0x8e39, 0x8e39 }, /* 0x8e3a */ { false, 0x8e3a, 0x8e3a }, /* 0x8e3b */ { false, 0x8e3b, 0x8e3b }, /* 0x8e3c */ { false, 0x8e3c, 0x8e3c }, /* 0x8e3d */ { false, 0x8e3d, 0x8e3d }, /* 0x8e3e */ { false, 0x8e3e, 0x8e3e }, /* 0x8e3f */ { false, 0x8e3f, 0x8e3f }, /* 0x8e40 */ { false, 0x8e40, 0x8e40 }, /* 0x8e41 */ { false, 0x8e41, 0x8e41 }, /* 0x8e42 */ { false, 0x8e42, 0x8e42 }, /* 0x8e43 */ { false, 0x8e43, 0x8e43 }, /* 0x8e44 */ { false, 0x8e44, 0x8e44 }, /* 0x8e45 */ { false, 0x8e45, 0x8e45 }, /* 0x8e46 */ { false, 0x8e46, 0x8e46 }, /* 0x8e47 */ { false, 0x8e47, 0x8e47 }, /* 0x8e48 */ { false, 0x8e48, 0x8e48 }, /* 0x8e49 */ { false, 0x8e49, 0x8e49 }, /* 0x8e4a */ { false, 0x8e4a, 0x8e4a }, /* 0x8e4b */ { false, 0x8e4b, 0x8e4b }, /* 0x8e4c */ { false, 0x8e4c, 0x8e4c }, /* 0x8e4d */ { false, 0x8e4d, 0x8e4d }, /* 0x8e4e */ { false, 0x8e4e, 0x8e4e }, /* 0x8e4f */ { false, 0x8e4f, 0x8e4f }, /* 0x8e50 */ { false, 0x8e50, 0x8e50 }, /* 0x8e51 */ { false, 0x8e51, 0x8e51 }, /* 0x8e52 */ { false, 0x8e52, 0x8e52 }, /* 0x8e53 */ { false, 0x8e53, 0x8e53 }, /* 0x8e54 */ { false, 0x8e54, 0x8e54 }, /* 0x8e55 */ { false, 0x8e55, 0x8e55 }, /* 0x8e56 */ { false, 0x8e56, 0x8e56 }, /* 0x8e57 */ { false, 0x8e57, 0x8e57 }, /* 0x8e58 */ { false, 0x8e58, 0x8e58 }, /* 0x8e59 */ { false, 0x8e59, 0x8e59 }, /* 0x8e5a */ { false, 0x8e5a, 0x8e5a }, /* 0x8e5b */ { false, 0x8e5b, 0x8e5b }, /* 0x8e5c */ { false, 0x8e5c, 0x8e5c }, /* 0x8e5d */ { false, 0x8e5d, 0x8e5d }, /* 0x8e5e */ { false, 0x8e5e, 0x8e5e }, /* 0x8e5f */ { false, 0x8e5f, 0x8e5f }, /* 0x8e60 */ { false, 0x8e60, 0x8e60 }, /* 0x8e61 */ { false, 0x8e61, 0x8e61 }, /* 0x8e62 */ { false, 0x8e62, 0x8e62 }, /* 0x8e63 */ { false, 0x8e63, 0x8e63 }, /* 0x8e64 */ { false, 0x8e64, 0x8e64 }, /* 0x8e65 */ { false, 0x8e65, 0x8e65 }, /* 0x8e66 */ { false, 0x8e66, 0x8e66 }, /* 0x8e67 */ { false, 0x8e67, 0x8e67 }, /* 0x8e68 */ { false, 0x8e68, 0x8e68 }, /* 0x8e69 */ { false, 0x8e69, 0x8e69 }, /* 0x8e6a */ { false, 0x8e6a, 0x8e6a }, /* 0x8e6b */ { false, 0x8e6b, 0x8e6b }, /* 0x8e6c */ { false, 0x8e6c, 0x8e6c }, /* 0x8e6d */ { false, 0x8e6d, 0x8e6d }, /* 0x8e6e */ { false, 0x8e6e, 0x8e6e }, /* 0x8e6f */ { false, 0x8e6f, 0x8e6f }, /* 0x8e70 */ { false, 0x8e70, 0x8e70 }, /* 0x8e71 */ { false, 0x8e71, 0x8e71 }, /* 0x8e72 */ { false, 0x8e72, 0x8e72 }, /* 0x8e73 */ { false, 0x8e73, 0x8e73 }, /* 0x8e74 */ { false, 0x8e74, 0x8e74 }, /* 0x8e75 */ { false, 0x8e75, 0x8e75 }, /* 0x8e76 */ { false, 0x8e76, 0x8e76 }, /* 0x8e77 */ { false, 0x8e77, 0x8e77 }, /* 0x8e78 */ { false, 0x8e78, 0x8e78 }, /* 0x8e79 */ { false, 0x8e79, 0x8e79 }, /* 0x8e7a */ { false, 0x8e7a, 0x8e7a }, /* 0x8e7b */ { false, 0x8e7b, 0x8e7b }, /* 0x8e7c */ { false, 0x8e7c, 0x8e7c }, /* 0x8e7d */ { false, 0x8e7d, 0x8e7d }, /* 0x8e7e */ { false, 0x8e7e, 0x8e7e }, /* 0x8e7f */ { false, 0x8e7f, 0x8e7f }, /* 0x8e80 */ { false, 0x8e80, 0x8e80 }, /* 0x8e81 */ { false, 0x8e81, 0x8e81 }, /* 0x8e82 */ { false, 0x8e82, 0x8e82 }, /* 0x8e83 */ { false, 0x8e83, 0x8e83 }, /* 0x8e84 */ { false, 0x8e84, 0x8e84 }, /* 0x8e85 */ { false, 0x8e85, 0x8e85 }, /* 0x8e86 */ { false, 0x8e86, 0x8e86 }, /* 0x8e87 */ { false, 0x8e87, 0x8e87 }, /* 0x8e88 */ { false, 0x8e88, 0x8e88 }, /* 0x8e89 */ { false, 0x8e89, 0x8e89 }, /* 0x8e8a */ { false, 0x8e8a, 0x8e8a }, /* 0x8e8b */ { false, 0x8e8b, 0x8e8b }, /* 0x8e8c */ { false, 0x8e8c, 0x8e8c }, /* 0x8e8d */ { false, 0x8e8d, 0x8e8d }, /* 0x8e8e */ { false, 0x8e8e, 0x8e8e }, /* 0x8e8f */ { false, 0x8e8f, 0x8e8f }, /* 0x8e90 */ { false, 0x8e90, 0x8e90 }, /* 0x8e91 */ { false, 0x8e91, 0x8e91 }, /* 0x8e92 */ { false, 0x8e92, 0x8e92 }, /* 0x8e93 */ { false, 0x8e93, 0x8e93 }, /* 0x8e94 */ { false, 0x8e94, 0x8e94 }, /* 0x8e95 */ { false, 0x8e95, 0x8e95 }, /* 0x8e96 */ { false, 0x8e96, 0x8e96 }, /* 0x8e97 */ { false, 0x8e97, 0x8e97 }, /* 0x8e98 */ { false, 0x8e98, 0x8e98 }, /* 0x8e99 */ { false, 0x8e99, 0x8e99 }, /* 0x8e9a */ { false, 0x8e9a, 0x8e9a }, /* 0x8e9b */ { false, 0x8e9b, 0x8e9b }, /* 0x8e9c */ { false, 0x8e9c, 0x8e9c }, /* 0x8e9d */ { false, 0x8e9d, 0x8e9d }, /* 0x8e9e */ { false, 0x8e9e, 0x8e9e }, /* 0x8e9f */ { false, 0x8e9f, 0x8e9f }, /* 0x8ea0 */ { false, 0x8ea0, 0x8ea0 }, /* 0x8ea1 */ { false, 0x8ea1, 0x8ea1 }, /* 0x8ea2 */ { false, 0x8ea2, 0x8ea2 }, /* 0x8ea3 */ { false, 0x8ea3, 0x8ea3 }, /* 0x8ea4 */ { false, 0x8ea4, 0x8ea4 }, /* 0x8ea5 */ { false, 0x8ea5, 0x8ea5 }, /* 0x8ea6 */ { false, 0x8ea6, 0x8ea6 }, /* 0x8ea7 */ { false, 0x8ea7, 0x8ea7 }, /* 0x8ea8 */ { false, 0x8ea8, 0x8ea8 }, /* 0x8ea9 */ { false, 0x8ea9, 0x8ea9 }, /* 0x8eaa */ { false, 0x8eaa, 0x8eaa }, /* 0x8eab */ { false, 0x8eab, 0x8eab }, /* 0x8eac */ { false, 0x8eac, 0x8eac }, /* 0x8ead */ { false, 0x8ead, 0x8ead }, /* 0x8eae */ { false, 0x8eae, 0x8eae }, /* 0x8eaf */ { false, 0x8eaf, 0x8eaf }, /* 0x8eb0 */ { false, 0x8eb0, 0x8eb0 }, /* 0x8eb1 */ { false, 0x8eb1, 0x8eb1 }, /* 0x8eb2 */ { false, 0x8eb2, 0x8eb2 }, /* 0x8eb3 */ { false, 0x8eb3, 0x8eb3 }, /* 0x8eb4 */ { false, 0x8eb4, 0x8eb4 }, /* 0x8eb5 */ { false, 0x8eb5, 0x8eb5 }, /* 0x8eb6 */ { false, 0x8eb6, 0x8eb6 }, /* 0x8eb7 */ { false, 0x8eb7, 0x8eb7 }, /* 0x8eb8 */ { false, 0x8eb8, 0x8eb8 }, /* 0x8eb9 */ { false, 0x8eb9, 0x8eb9 }, /* 0x8eba */ { false, 0x8eba, 0x8eba }, /* 0x8ebb */ { false, 0x8ebb, 0x8ebb }, /* 0x8ebc */ { false, 0x8ebc, 0x8ebc }, /* 0x8ebd */ { false, 0x8ebd, 0x8ebd }, /* 0x8ebe */ { false, 0x8ebe, 0x8ebe }, /* 0x8ebf */ { false, 0x8ebf, 0x8ebf }, /* 0x8ec0 */ { false, 0x8ec0, 0x8ec0 }, /* 0x8ec1 */ { false, 0x8ec1, 0x8ec1 }, /* 0x8ec2 */ { false, 0x8ec2, 0x8ec2 }, /* 0x8ec3 */ { false, 0x8ec3, 0x8ec3 }, /* 0x8ec4 */ { false, 0x8ec4, 0x8ec4 }, /* 0x8ec5 */ { false, 0x8ec5, 0x8ec5 }, /* 0x8ec6 */ { false, 0x8ec6, 0x8ec6 }, /* 0x8ec7 */ { false, 0x8ec7, 0x8ec7 }, /* 0x8ec8 */ { false, 0x8ec8, 0x8ec8 }, /* 0x8ec9 */ { false, 0x8ec9, 0x8ec9 }, /* 0x8eca */ { false, 0x8eca, 0x8eca }, /* 0x8ecb */ { false, 0x8ecb, 0x8ecb }, /* 0x8ecc */ { false, 0x8ecc, 0x8ecc }, /* 0x8ecd */ { false, 0x8ecd, 0x8ecd }, /* 0x8ece */ { false, 0x8ece, 0x8ece }, /* 0x8ecf */ { false, 0x8ecf, 0x8ecf }, /* 0x8ed0 */ { false, 0x8ed0, 0x8ed0 }, /* 0x8ed1 */ { false, 0x8ed1, 0x8ed1 }, /* 0x8ed2 */ { false, 0x8ed2, 0x8ed2 }, /* 0x8ed3 */ { false, 0x8ed3, 0x8ed3 }, /* 0x8ed4 */ { false, 0x8ed4, 0x8ed4 }, /* 0x8ed5 */ { false, 0x8ed5, 0x8ed5 }, /* 0x8ed6 */ { false, 0x8ed6, 0x8ed6 }, /* 0x8ed7 */ { false, 0x8ed7, 0x8ed7 }, /* 0x8ed8 */ { false, 0x8ed8, 0x8ed8 }, /* 0x8ed9 */ { false, 0x8ed9, 0x8ed9 }, /* 0x8eda */ { false, 0x8eda, 0x8eda }, /* 0x8edb */ { false, 0x8edb, 0x8edb }, /* 0x8edc */ { false, 0x8edc, 0x8edc }, /* 0x8edd */ { false, 0x8edd, 0x8edd }, /* 0x8ede */ { false, 0x8ede, 0x8ede }, /* 0x8edf */ { false, 0x8edf, 0x8edf }, /* 0x8ee0 */ { false, 0x8ee0, 0x8ee0 }, /* 0x8ee1 */ { false, 0x8ee1, 0x8ee1 }, /* 0x8ee2 */ { false, 0x8ee2, 0x8ee2 }, /* 0x8ee3 */ { false, 0x8ee3, 0x8ee3 }, /* 0x8ee4 */ { false, 0x8ee4, 0x8ee4 }, /* 0x8ee5 */ { false, 0x8ee5, 0x8ee5 }, /* 0x8ee6 */ { false, 0x8ee6, 0x8ee6 }, /* 0x8ee7 */ { false, 0x8ee7, 0x8ee7 }, /* 0x8ee8 */ { false, 0x8ee8, 0x8ee8 }, /* 0x8ee9 */ { false, 0x8ee9, 0x8ee9 }, /* 0x8eea */ { false, 0x8eea, 0x8eea }, /* 0x8eeb */ { false, 0x8eeb, 0x8eeb }, /* 0x8eec */ { false, 0x8eec, 0x8eec }, /* 0x8eed */ { false, 0x8eed, 0x8eed }, /* 0x8eee */ { false, 0x8eee, 0x8eee }, /* 0x8eef */ { false, 0x8eef, 0x8eef }, /* 0x8ef0 */ { false, 0x8ef0, 0x8ef0 }, /* 0x8ef1 */ { false, 0x8ef1, 0x8ef1 }, /* 0x8ef2 */ { false, 0x8ef2, 0x8ef2 }, /* 0x8ef3 */ { false, 0x8ef3, 0x8ef3 }, /* 0x8ef4 */ { false, 0x8ef4, 0x8ef4 }, /* 0x8ef5 */ { false, 0x8ef5, 0x8ef5 }, /* 0x8ef6 */ { false, 0x8ef6, 0x8ef6 }, /* 0x8ef7 */ { false, 0x8ef7, 0x8ef7 }, /* 0x8ef8 */ { false, 0x8ef8, 0x8ef8 }, /* 0x8ef9 */ { false, 0x8ef9, 0x8ef9 }, /* 0x8efa */ { false, 0x8efa, 0x8efa }, /* 0x8efb */ { false, 0x8efb, 0x8efb }, /* 0x8efc */ { false, 0x8efc, 0x8efc }, /* 0x8efd */ { false, 0x8efd, 0x8efd }, /* 0x8efe */ { false, 0x8efe, 0x8efe }, /* 0x8eff */ { false, 0x8eff, 0x8eff }, /* 0x8f00 */ { false, 0x8f00, 0x8f00 }, /* 0x8f01 */ { false, 0x8f01, 0x8f01 }, /* 0x8f02 */ { false, 0x8f02, 0x8f02 }, /* 0x8f03 */ { false, 0x8f03, 0x8f03 }, /* 0x8f04 */ { false, 0x8f04, 0x8f04 }, /* 0x8f05 */ { false, 0x8f05, 0x8f05 }, /* 0x8f06 */ { false, 0x8f06, 0x8f06 }, /* 0x8f07 */ { false, 0x8f07, 0x8f07 }, /* 0x8f08 */ { false, 0x8f08, 0x8f08 }, /* 0x8f09 */ { false, 0x8f09, 0x8f09 }, /* 0x8f0a */ { false, 0x8f0a, 0x8f0a }, /* 0x8f0b */ { false, 0x8f0b, 0x8f0b }, /* 0x8f0c */ { false, 0x8f0c, 0x8f0c }, /* 0x8f0d */ { false, 0x8f0d, 0x8f0d }, /* 0x8f0e */ { false, 0x8f0e, 0x8f0e }, /* 0x8f0f */ { false, 0x8f0f, 0x8f0f }, /* 0x8f10 */ { false, 0x8f10, 0x8f10 }, /* 0x8f11 */ { false, 0x8f11, 0x8f11 }, /* 0x8f12 */ { false, 0x8f12, 0x8f12 }, /* 0x8f13 */ { false, 0x8f13, 0x8f13 }, /* 0x8f14 */ { false, 0x8f14, 0x8f14 }, /* 0x8f15 */ { false, 0x8f15, 0x8f15 }, /* 0x8f16 */ { false, 0x8f16, 0x8f16 }, /* 0x8f17 */ { false, 0x8f17, 0x8f17 }, /* 0x8f18 */ { false, 0x8f18, 0x8f18 }, /* 0x8f19 */ { false, 0x8f19, 0x8f19 }, /* 0x8f1a */ { false, 0x8f1a, 0x8f1a }, /* 0x8f1b */ { false, 0x8f1b, 0x8f1b }, /* 0x8f1c */ { false, 0x8f1c, 0x8f1c }, /* 0x8f1d */ { false, 0x8f1d, 0x8f1d }, /* 0x8f1e */ { false, 0x8f1e, 0x8f1e }, /* 0x8f1f */ { false, 0x8f1f, 0x8f1f }, /* 0x8f20 */ { false, 0x8f20, 0x8f20 }, /* 0x8f21 */ { false, 0x8f21, 0x8f21 }, /* 0x8f22 */ { false, 0x8f22, 0x8f22 }, /* 0x8f23 */ { false, 0x8f23, 0x8f23 }, /* 0x8f24 */ { false, 0x8f24, 0x8f24 }, /* 0x8f25 */ { false, 0x8f25, 0x8f25 }, /* 0x8f26 */ { false, 0x8f26, 0x8f26 }, /* 0x8f27 */ { false, 0x8f27, 0x8f27 }, /* 0x8f28 */ { false, 0x8f28, 0x8f28 }, /* 0x8f29 */ { false, 0x8f29, 0x8f29 }, /* 0x8f2a */ { false, 0x8f2a, 0x8f2a }, /* 0x8f2b */ { false, 0x8f2b, 0x8f2b }, /* 0x8f2c */ { false, 0x8f2c, 0x8f2c }, /* 0x8f2d */ { false, 0x8f2d, 0x8f2d }, /* 0x8f2e */ { false, 0x8f2e, 0x8f2e }, /* 0x8f2f */ { false, 0x8f2f, 0x8f2f }, /* 0x8f30 */ { false, 0x8f30, 0x8f30 }, /* 0x8f31 */ { false, 0x8f31, 0x8f31 }, /* 0x8f32 */ { false, 0x8f32, 0x8f32 }, /* 0x8f33 */ { false, 0x8f33, 0x8f33 }, /* 0x8f34 */ { false, 0x8f34, 0x8f34 }, /* 0x8f35 */ { false, 0x8f35, 0x8f35 }, /* 0x8f36 */ { false, 0x8f36, 0x8f36 }, /* 0x8f37 */ { false, 0x8f37, 0x8f37 }, /* 0x8f38 */ { false, 0x8f38, 0x8f38 }, /* 0x8f39 */ { false, 0x8f39, 0x8f39 }, /* 0x8f3a */ { false, 0x8f3a, 0x8f3a }, /* 0x8f3b */ { false, 0x8f3b, 0x8f3b }, /* 0x8f3c */ { false, 0x8f3c, 0x8f3c }, /* 0x8f3d */ { false, 0x8f3d, 0x8f3d }, /* 0x8f3e */ { false, 0x8f3e, 0x8f3e }, /* 0x8f3f */ { false, 0x8f3f, 0x8f3f }, /* 0x8f40 */ { false, 0x8f40, 0x8f40 }, /* 0x8f41 */ { false, 0x8f41, 0x8f41 }, /* 0x8f42 */ { false, 0x8f42, 0x8f42 }, /* 0x8f43 */ { false, 0x8f43, 0x8f43 }, /* 0x8f44 */ { false, 0x8f44, 0x8f44 }, /* 0x8f45 */ { false, 0x8f45, 0x8f45 }, /* 0x8f46 */ { false, 0x8f46, 0x8f46 }, /* 0x8f47 */ { false, 0x8f47, 0x8f47 }, /* 0x8f48 */ { false, 0x8f48, 0x8f48 }, /* 0x8f49 */ { false, 0x8f49, 0x8f49 }, /* 0x8f4a */ { false, 0x8f4a, 0x8f4a }, /* 0x8f4b */ { false, 0x8f4b, 0x8f4b }, /* 0x8f4c */ { false, 0x8f4c, 0x8f4c }, /* 0x8f4d */ { false, 0x8f4d, 0x8f4d }, /* 0x8f4e */ { false, 0x8f4e, 0x8f4e }, /* 0x8f4f */ { false, 0x8f4f, 0x8f4f }, /* 0x8f50 */ { false, 0x8f50, 0x8f50 }, /* 0x8f51 */ { false, 0x8f51, 0x8f51 }, /* 0x8f52 */ { false, 0x8f52, 0x8f52 }, /* 0x8f53 */ { false, 0x8f53, 0x8f53 }, /* 0x8f54 */ { false, 0x8f54, 0x8f54 }, /* 0x8f55 */ { false, 0x8f55, 0x8f55 }, /* 0x8f56 */ { false, 0x8f56, 0x8f56 }, /* 0x8f57 */ { false, 0x8f57, 0x8f57 }, /* 0x8f58 */ { false, 0x8f58, 0x8f58 }, /* 0x8f59 */ { false, 0x8f59, 0x8f59 }, /* 0x8f5a */ { false, 0x8f5a, 0x8f5a }, /* 0x8f5b */ { false, 0x8f5b, 0x8f5b }, /* 0x8f5c */ { false, 0x8f5c, 0x8f5c }, /* 0x8f5d */ { false, 0x8f5d, 0x8f5d }, /* 0x8f5e */ { false, 0x8f5e, 0x8f5e }, /* 0x8f5f */ { false, 0x8f5f, 0x8f5f }, /* 0x8f60 */ { false, 0x8f60, 0x8f60 }, /* 0x8f61 */ { false, 0x8f61, 0x8f61 }, /* 0x8f62 */ { false, 0x8f62, 0x8f62 }, /* 0x8f63 */ { false, 0x8f63, 0x8f63 }, /* 0x8f64 */ { false, 0x8f64, 0x8f64 }, /* 0x8f65 */ { false, 0x8f65, 0x8f65 }, /* 0x8f66 */ { false, 0x8f66, 0x8f66 }, /* 0x8f67 */ { false, 0x8f67, 0x8f67 }, /* 0x8f68 */ { false, 0x8f68, 0x8f68 }, /* 0x8f69 */ { false, 0x8f69, 0x8f69 }, /* 0x8f6a */ { false, 0x8f6a, 0x8f6a }, /* 0x8f6b */ { false, 0x8f6b, 0x8f6b }, /* 0x8f6c */ { false, 0x8f6c, 0x8f6c }, /* 0x8f6d */ { false, 0x8f6d, 0x8f6d }, /* 0x8f6e */ { false, 0x8f6e, 0x8f6e }, /* 0x8f6f */ { false, 0x8f6f, 0x8f6f }, /* 0x8f70 */ { false, 0x8f70, 0x8f70 }, /* 0x8f71 */ { false, 0x8f71, 0x8f71 }, /* 0x8f72 */ { false, 0x8f72, 0x8f72 }, /* 0x8f73 */ { false, 0x8f73, 0x8f73 }, /* 0x8f74 */ { false, 0x8f74, 0x8f74 }, /* 0x8f75 */ { false, 0x8f75, 0x8f75 }, /* 0x8f76 */ { false, 0x8f76, 0x8f76 }, /* 0x8f77 */ { false, 0x8f77, 0x8f77 }, /* 0x8f78 */ { false, 0x8f78, 0x8f78 }, /* 0x8f79 */ { false, 0x8f79, 0x8f79 }, /* 0x8f7a */ { false, 0x8f7a, 0x8f7a }, /* 0x8f7b */ { false, 0x8f7b, 0x8f7b }, /* 0x8f7c */ { false, 0x8f7c, 0x8f7c }, /* 0x8f7d */ { false, 0x8f7d, 0x8f7d }, /* 0x8f7e */ { false, 0x8f7e, 0x8f7e }, /* 0x8f7f */ { false, 0x8f7f, 0x8f7f }, /* 0x8f80 */ { false, 0x8f80, 0x8f80 }, /* 0x8f81 */ { false, 0x8f81, 0x8f81 }, /* 0x8f82 */ { false, 0x8f82, 0x8f82 }, /* 0x8f83 */ { false, 0x8f83, 0x8f83 }, /* 0x8f84 */ { false, 0x8f84, 0x8f84 }, /* 0x8f85 */ { false, 0x8f85, 0x8f85 }, /* 0x8f86 */ { false, 0x8f86, 0x8f86 }, /* 0x8f87 */ { false, 0x8f87, 0x8f87 }, /* 0x8f88 */ { false, 0x8f88, 0x8f88 }, /* 0x8f89 */ { false, 0x8f89, 0x8f89 }, /* 0x8f8a */ { false, 0x8f8a, 0x8f8a }, /* 0x8f8b */ { false, 0x8f8b, 0x8f8b }, /* 0x8f8c */ { false, 0x8f8c, 0x8f8c }, /* 0x8f8d */ { false, 0x8f8d, 0x8f8d }, /* 0x8f8e */ { false, 0x8f8e, 0x8f8e }, /* 0x8f8f */ { false, 0x8f8f, 0x8f8f }, /* 0x8f90 */ { false, 0x8f90, 0x8f90 }, /* 0x8f91 */ { false, 0x8f91, 0x8f91 }, /* 0x8f92 */ { false, 0x8f92, 0x8f92 }, /* 0x8f93 */ { false, 0x8f93, 0x8f93 }, /* 0x8f94 */ { false, 0x8f94, 0x8f94 }, /* 0x8f95 */ { false, 0x8f95, 0x8f95 }, /* 0x8f96 */ { false, 0x8f96, 0x8f96 }, /* 0x8f97 */ { false, 0x8f97, 0x8f97 }, /* 0x8f98 */ { false, 0x8f98, 0x8f98 }, /* 0x8f99 */ { false, 0x8f99, 0x8f99 }, /* 0x8f9a */ { false, 0x8f9a, 0x8f9a }, /* 0x8f9b */ { false, 0x8f9b, 0x8f9b }, /* 0x8f9c */ { false, 0x8f9c, 0x8f9c }, /* 0x8f9d */ { false, 0x8f9d, 0x8f9d }, /* 0x8f9e */ { false, 0x8f9e, 0x8f9e }, /* 0x8f9f */ { false, 0x8f9f, 0x8f9f }, /* 0x8fa0 */ { false, 0x8fa0, 0x8fa0 }, /* 0x8fa1 */ { false, 0x8fa1, 0x8fa1 }, /* 0x8fa2 */ { false, 0x8fa2, 0x8fa2 }, /* 0x8fa3 */ { false, 0x8fa3, 0x8fa3 }, /* 0x8fa4 */ { false, 0x8fa4, 0x8fa4 }, /* 0x8fa5 */ { false, 0x8fa5, 0x8fa5 }, /* 0x8fa6 */ { false, 0x8fa6, 0x8fa6 }, /* 0x8fa7 */ { false, 0x8fa7, 0x8fa7 }, /* 0x8fa8 */ { false, 0x8fa8, 0x8fa8 }, /* 0x8fa9 */ { false, 0x8fa9, 0x8fa9 }, /* 0x8faa */ { false, 0x8faa, 0x8faa }, /* 0x8fab */ { false, 0x8fab, 0x8fab }, /* 0x8fac */ { false, 0x8fac, 0x8fac }, /* 0x8fad */ { false, 0x8fad, 0x8fad }, /* 0x8fae */ { false, 0x8fae, 0x8fae }, /* 0x8faf */ { false, 0x8faf, 0x8faf }, /* 0x8fb0 */ { false, 0x8fb0, 0x8fb0 }, /* 0x8fb1 */ { false, 0x8fb1, 0x8fb1 }, /* 0x8fb2 */ { false, 0x8fb2, 0x8fb2 }, /* 0x8fb3 */ { false, 0x8fb3, 0x8fb3 }, /* 0x8fb4 */ { false, 0x8fb4, 0x8fb4 }, /* 0x8fb5 */ { false, 0x8fb5, 0x8fb5 }, /* 0x8fb6 */ { false, 0x8fb6, 0x8fb6 }, /* 0x8fb7 */ { false, 0x8fb7, 0x8fb7 }, /* 0x8fb8 */ { false, 0x8fb8, 0x8fb8 }, /* 0x8fb9 */ { false, 0x8fb9, 0x8fb9 }, /* 0x8fba */ { false, 0x8fba, 0x8fba }, /* 0x8fbb */ { false, 0x8fbb, 0x8fbb }, /* 0x8fbc */ { false, 0x8fbc, 0x8fbc }, /* 0x8fbd */ { false, 0x8fbd, 0x8fbd }, /* 0x8fbe */ { false, 0x8fbe, 0x8fbe }, /* 0x8fbf */ { false, 0x8fbf, 0x8fbf }, /* 0x8fc0 */ { false, 0x8fc0, 0x8fc0 }, /* 0x8fc1 */ { false, 0x8fc1, 0x8fc1 }, /* 0x8fc2 */ { false, 0x8fc2, 0x8fc2 }, /* 0x8fc3 */ { false, 0x8fc3, 0x8fc3 }, /* 0x8fc4 */ { false, 0x8fc4, 0x8fc4 }, /* 0x8fc5 */ { false, 0x8fc5, 0x8fc5 }, /* 0x8fc6 */ { false, 0x8fc6, 0x8fc6 }, /* 0x8fc7 */ { false, 0x8fc7, 0x8fc7 }, /* 0x8fc8 */ { false, 0x8fc8, 0x8fc8 }, /* 0x8fc9 */ { false, 0x8fc9, 0x8fc9 }, /* 0x8fca */ { false, 0x8fca, 0x8fca }, /* 0x8fcb */ { false, 0x8fcb, 0x8fcb }, /* 0x8fcc */ { false, 0x8fcc, 0x8fcc }, /* 0x8fcd */ { false, 0x8fcd, 0x8fcd }, /* 0x8fce */ { false, 0x8fce, 0x8fce }, /* 0x8fcf */ { false, 0x8fcf, 0x8fcf }, /* 0x8fd0 */ { false, 0x8fd0, 0x8fd0 }, /* 0x8fd1 */ { false, 0x8fd1, 0x8fd1 }, /* 0x8fd2 */ { false, 0x8fd2, 0x8fd2 }, /* 0x8fd3 */ { false, 0x8fd3, 0x8fd3 }, /* 0x8fd4 */ { false, 0x8fd4, 0x8fd4 }, /* 0x8fd5 */ { false, 0x8fd5, 0x8fd5 }, /* 0x8fd6 */ { false, 0x8fd6, 0x8fd6 }, /* 0x8fd7 */ { false, 0x8fd7, 0x8fd7 }, /* 0x8fd8 */ { false, 0x8fd8, 0x8fd8 }, /* 0x8fd9 */ { false, 0x8fd9, 0x8fd9 }, /* 0x8fda */ { false, 0x8fda, 0x8fda }, /* 0x8fdb */ { false, 0x8fdb, 0x8fdb }, /* 0x8fdc */ { false, 0x8fdc, 0x8fdc }, /* 0x8fdd */ { false, 0x8fdd, 0x8fdd }, /* 0x8fde */ { false, 0x8fde, 0x8fde }, /* 0x8fdf */ { false, 0x8fdf, 0x8fdf }, /* 0x8fe0 */ { false, 0x8fe0, 0x8fe0 }, /* 0x8fe1 */ { false, 0x8fe1, 0x8fe1 }, /* 0x8fe2 */ { false, 0x8fe2, 0x8fe2 }, /* 0x8fe3 */ { false, 0x8fe3, 0x8fe3 }, /* 0x8fe4 */ { false, 0x8fe4, 0x8fe4 }, /* 0x8fe5 */ { false, 0x8fe5, 0x8fe5 }, /* 0x8fe6 */ { false, 0x8fe6, 0x8fe6 }, /* 0x8fe7 */ { false, 0x8fe7, 0x8fe7 }, /* 0x8fe8 */ { false, 0x8fe8, 0x8fe8 }, /* 0x8fe9 */ { false, 0x8fe9, 0x8fe9 }, /* 0x8fea */ { false, 0x8fea, 0x8fea }, /* 0x8feb */ { false, 0x8feb, 0x8feb }, /* 0x8fec */ { false, 0x8fec, 0x8fec }, /* 0x8fed */ { false, 0x8fed, 0x8fed }, /* 0x8fee */ { false, 0x8fee, 0x8fee }, /* 0x8fef */ { false, 0x8fef, 0x8fef }, /* 0x8ff0 */ { false, 0x8ff0, 0x8ff0 }, /* 0x8ff1 */ { false, 0x8ff1, 0x8ff1 }, /* 0x8ff2 */ { false, 0x8ff2, 0x8ff2 }, /* 0x8ff3 */ { false, 0x8ff3, 0x8ff3 }, /* 0x8ff4 */ { false, 0x8ff4, 0x8ff4 }, /* 0x8ff5 */ { false, 0x8ff5, 0x8ff5 }, /* 0x8ff6 */ { false, 0x8ff6, 0x8ff6 }, /* 0x8ff7 */ { false, 0x8ff7, 0x8ff7 }, /* 0x8ff8 */ { false, 0x8ff8, 0x8ff8 }, /* 0x8ff9 */ { false, 0x8ff9, 0x8ff9 }, /* 0x8ffa */ { false, 0x8ffa, 0x8ffa }, /* 0x8ffb */ { false, 0x8ffb, 0x8ffb }, /* 0x8ffc */ { false, 0x8ffc, 0x8ffc }, /* 0x8ffd */ { false, 0x8ffd, 0x8ffd }, /* 0x8ffe */ { false, 0x8ffe, 0x8ffe }, /* 0x8fff */ { false, 0x8fff, 0x8fff }, /* 0x9000 */ { false, 0x9000, 0x9000 }, /* 0x9001 */ { false, 0x9001, 0x9001 }, /* 0x9002 */ { false, 0x9002, 0x9002 }, /* 0x9003 */ { false, 0x9003, 0x9003 }, /* 0x9004 */ { false, 0x9004, 0x9004 }, /* 0x9005 */ { false, 0x9005, 0x9005 }, /* 0x9006 */ { false, 0x9006, 0x9006 }, /* 0x9007 */ { false, 0x9007, 0x9007 }, /* 0x9008 */ { false, 0x9008, 0x9008 }, /* 0x9009 */ { false, 0x9009, 0x9009 }, /* 0x900a */ { false, 0x900a, 0x900a }, /* 0x900b */ { false, 0x900b, 0x900b }, /* 0x900c */ { false, 0x900c, 0x900c }, /* 0x900d */ { false, 0x900d, 0x900d }, /* 0x900e */ { false, 0x900e, 0x900e }, /* 0x900f */ { false, 0x900f, 0x900f }, /* 0x9010 */ { false, 0x9010, 0x9010 }, /* 0x9011 */ { false, 0x9011, 0x9011 }, /* 0x9012 */ { false, 0x9012, 0x9012 }, /* 0x9013 */ { false, 0x9013, 0x9013 }, /* 0x9014 */ { false, 0x9014, 0x9014 }, /* 0x9015 */ { false, 0x9015, 0x9015 }, /* 0x9016 */ { false, 0x9016, 0x9016 }, /* 0x9017 */ { false, 0x9017, 0x9017 }, /* 0x9018 */ { false, 0x9018, 0x9018 }, /* 0x9019 */ { false, 0x9019, 0x9019 }, /* 0x901a */ { false, 0x901a, 0x901a }, /* 0x901b */ { false, 0x901b, 0x901b }, /* 0x901c */ { false, 0x901c, 0x901c }, /* 0x901d */ { false, 0x901d, 0x901d }, /* 0x901e */ { false, 0x901e, 0x901e }, /* 0x901f */ { false, 0x901f, 0x901f }, /* 0x9020 */ { false, 0x9020, 0x9020 }, /* 0x9021 */ { false, 0x9021, 0x9021 }, /* 0x9022 */ { false, 0x9022, 0x9022 }, /* 0x9023 */ { false, 0x9023, 0x9023 }, /* 0x9024 */ { false, 0x9024, 0x9024 }, /* 0x9025 */ { false, 0x9025, 0x9025 }, /* 0x9026 */ { false, 0x9026, 0x9026 }, /* 0x9027 */ { false, 0x9027, 0x9027 }, /* 0x9028 */ { false, 0x9028, 0x9028 }, /* 0x9029 */ { false, 0x9029, 0x9029 }, /* 0x902a */ { false, 0x902a, 0x902a }, /* 0x902b */ { false, 0x902b, 0x902b }, /* 0x902c */ { false, 0x902c, 0x902c }, /* 0x902d */ { false, 0x902d, 0x902d }, /* 0x902e */ { false, 0x902e, 0x902e }, /* 0x902f */ { false, 0x902f, 0x902f }, /* 0x9030 */ { false, 0x9030, 0x9030 }, /* 0x9031 */ { false, 0x9031, 0x9031 }, /* 0x9032 */ { false, 0x9032, 0x9032 }, /* 0x9033 */ { false, 0x9033, 0x9033 }, /* 0x9034 */ { false, 0x9034, 0x9034 }, /* 0x9035 */ { false, 0x9035, 0x9035 }, /* 0x9036 */ { false, 0x9036, 0x9036 }, /* 0x9037 */ { false, 0x9037, 0x9037 }, /* 0x9038 */ { false, 0x9038, 0x9038 }, /* 0x9039 */ { false, 0x9039, 0x9039 }, /* 0x903a */ { false, 0x903a, 0x903a }, /* 0x903b */ { false, 0x903b, 0x903b }, /* 0x903c */ { false, 0x903c, 0x903c }, /* 0x903d */ { false, 0x903d, 0x903d }, /* 0x903e */ { false, 0x903e, 0x903e }, /* 0x903f */ { false, 0x903f, 0x903f }, /* 0x9040 */ { false, 0x9040, 0x9040 }, /* 0x9041 */ { false, 0x9041, 0x9041 }, /* 0x9042 */ { false, 0x9042, 0x9042 }, /* 0x9043 */ { false, 0x9043, 0x9043 }, /* 0x9044 */ { false, 0x9044, 0x9044 }, /* 0x9045 */ { false, 0x9045, 0x9045 }, /* 0x9046 */ { false, 0x9046, 0x9046 }, /* 0x9047 */ { false, 0x9047, 0x9047 }, /* 0x9048 */ { false, 0x9048, 0x9048 }, /* 0x9049 */ { false, 0x9049, 0x9049 }, /* 0x904a */ { false, 0x904a, 0x904a }, /* 0x904b */ { false, 0x904b, 0x904b }, /* 0x904c */ { false, 0x904c, 0x904c }, /* 0x904d */ { false, 0x904d, 0x904d }, /* 0x904e */ { false, 0x904e, 0x904e }, /* 0x904f */ { false, 0x904f, 0x904f }, /* 0x9050 */ { false, 0x9050, 0x9050 }, /* 0x9051 */ { false, 0x9051, 0x9051 }, /* 0x9052 */ { false, 0x9052, 0x9052 }, /* 0x9053 */ { false, 0x9053, 0x9053 }, /* 0x9054 */ { false, 0x9054, 0x9054 }, /* 0x9055 */ { false, 0x9055, 0x9055 }, /* 0x9056 */ { false, 0x9056, 0x9056 }, /* 0x9057 */ { false, 0x9057, 0x9057 }, /* 0x9058 */ { false, 0x9058, 0x9058 }, /* 0x9059 */ { false, 0x9059, 0x9059 }, /* 0x905a */ { false, 0x905a, 0x905a }, /* 0x905b */ { false, 0x905b, 0x905b }, /* 0x905c */ { false, 0x905c, 0x905c }, /* 0x905d */ { false, 0x905d, 0x905d }, /* 0x905e */ { false, 0x905e, 0x905e }, /* 0x905f */ { false, 0x905f, 0x905f }, /* 0x9060 */ { false, 0x9060, 0x9060 }, /* 0x9061 */ { false, 0x9061, 0x9061 }, /* 0x9062 */ { false, 0x9062, 0x9062 }, /* 0x9063 */ { false, 0x9063, 0x9063 }, /* 0x9064 */ { false, 0x9064, 0x9064 }, /* 0x9065 */ { false, 0x9065, 0x9065 }, /* 0x9066 */ { false, 0x9066, 0x9066 }, /* 0x9067 */ { false, 0x9067, 0x9067 }, /* 0x9068 */ { false, 0x9068, 0x9068 }, /* 0x9069 */ { false, 0x9069, 0x9069 }, /* 0x906a */ { false, 0x906a, 0x906a }, /* 0x906b */ { false, 0x906b, 0x906b }, /* 0x906c */ { false, 0x906c, 0x906c }, /* 0x906d */ { false, 0x906d, 0x906d }, /* 0x906e */ { false, 0x906e, 0x906e }, /* 0x906f */ { false, 0x906f, 0x906f }, /* 0x9070 */ { false, 0x9070, 0x9070 }, /* 0x9071 */ { false, 0x9071, 0x9071 }, /* 0x9072 */ { false, 0x9072, 0x9072 }, /* 0x9073 */ { false, 0x9073, 0x9073 }, /* 0x9074 */ { false, 0x9074, 0x9074 }, /* 0x9075 */ { false, 0x9075, 0x9075 }, /* 0x9076 */ { false, 0x9076, 0x9076 }, /* 0x9077 */ { false, 0x9077, 0x9077 }, /* 0x9078 */ { false, 0x9078, 0x9078 }, /* 0x9079 */ { false, 0x9079, 0x9079 }, /* 0x907a */ { false, 0x907a, 0x907a }, /* 0x907b */ { false, 0x907b, 0x907b }, /* 0x907c */ { false, 0x907c, 0x907c }, /* 0x907d */ { false, 0x907d, 0x907d }, /* 0x907e */ { false, 0x907e, 0x907e }, /* 0x907f */ { false, 0x907f, 0x907f }, /* 0x9080 */ { false, 0x9080, 0x9080 }, /* 0x9081 */ { false, 0x9081, 0x9081 }, /* 0x9082 */ { false, 0x9082, 0x9082 }, /* 0x9083 */ { false, 0x9083, 0x9083 }, /* 0x9084 */ { false, 0x9084, 0x9084 }, /* 0x9085 */ { false, 0x9085, 0x9085 }, /* 0x9086 */ { false, 0x9086, 0x9086 }, /* 0x9087 */ { false, 0x9087, 0x9087 }, /* 0x9088 */ { false, 0x9088, 0x9088 }, /* 0x9089 */ { false, 0x9089, 0x9089 }, /* 0x908a */ { false, 0x908a, 0x908a }, /* 0x908b */ { false, 0x908b, 0x908b }, /* 0x908c */ { false, 0x908c, 0x908c }, /* 0x908d */ { false, 0x908d, 0x908d }, /* 0x908e */ { false, 0x908e, 0x908e }, /* 0x908f */ { false, 0x908f, 0x908f }, /* 0x9090 */ { false, 0x9090, 0x9090 }, /* 0x9091 */ { false, 0x9091, 0x9091 }, /* 0x9092 */ { false, 0x9092, 0x9092 }, /* 0x9093 */ { false, 0x9093, 0x9093 }, /* 0x9094 */ { false, 0x9094, 0x9094 }, /* 0x9095 */ { false, 0x9095, 0x9095 }, /* 0x9096 */ { false, 0x9096, 0x9096 }, /* 0x9097 */ { false, 0x9097, 0x9097 }, /* 0x9098 */ { false, 0x9098, 0x9098 }, /* 0x9099 */ { false, 0x9099, 0x9099 }, /* 0x909a */ { false, 0x909a, 0x909a }, /* 0x909b */ { false, 0x909b, 0x909b }, /* 0x909c */ { false, 0x909c, 0x909c }, /* 0x909d */ { false, 0x909d, 0x909d }, /* 0x909e */ { false, 0x909e, 0x909e }, /* 0x909f */ { false, 0x909f, 0x909f }, /* 0x90a0 */ { false, 0x90a0, 0x90a0 }, /* 0x90a1 */ { false, 0x90a1, 0x90a1 }, /* 0x90a2 */ { false, 0x90a2, 0x90a2 }, /* 0x90a3 */ { false, 0x90a3, 0x90a3 }, /* 0x90a4 */ { false, 0x90a4, 0x90a4 }, /* 0x90a5 */ { false, 0x90a5, 0x90a5 }, /* 0x90a6 */ { false, 0x90a6, 0x90a6 }, /* 0x90a7 */ { false, 0x90a7, 0x90a7 }, /* 0x90a8 */ { false, 0x90a8, 0x90a8 }, /* 0x90a9 */ { false, 0x90a9, 0x90a9 }, /* 0x90aa */ { false, 0x90aa, 0x90aa }, /* 0x90ab */ { false, 0x90ab, 0x90ab }, /* 0x90ac */ { false, 0x90ac, 0x90ac }, /* 0x90ad */ { false, 0x90ad, 0x90ad }, /* 0x90ae */ { false, 0x90ae, 0x90ae }, /* 0x90af */ { false, 0x90af, 0x90af }, /* 0x90b0 */ { false, 0x90b0, 0x90b0 }, /* 0x90b1 */ { false, 0x90b1, 0x90b1 }, /* 0x90b2 */ { false, 0x90b2, 0x90b2 }, /* 0x90b3 */ { false, 0x90b3, 0x90b3 }, /* 0x90b4 */ { false, 0x90b4, 0x90b4 }, /* 0x90b5 */ { false, 0x90b5, 0x90b5 }, /* 0x90b6 */ { false, 0x90b6, 0x90b6 }, /* 0x90b7 */ { false, 0x90b7, 0x90b7 }, /* 0x90b8 */ { false, 0x90b8, 0x90b8 }, /* 0x90b9 */ { false, 0x90b9, 0x90b9 }, /* 0x90ba */ { false, 0x90ba, 0x90ba }, /* 0x90bb */ { false, 0x90bb, 0x90bb }, /* 0x90bc */ { false, 0x90bc, 0x90bc }, /* 0x90bd */ { false, 0x90bd, 0x90bd }, /* 0x90be */ { false, 0x90be, 0x90be }, /* 0x90bf */ { false, 0x90bf, 0x90bf }, /* 0x90c0 */ { false, 0x90c0, 0x90c0 }, /* 0x90c1 */ { false, 0x90c1, 0x90c1 }, /* 0x90c2 */ { false, 0x90c2, 0x90c2 }, /* 0x90c3 */ { false, 0x90c3, 0x90c3 }, /* 0x90c4 */ { false, 0x90c4, 0x90c4 }, /* 0x90c5 */ { false, 0x90c5, 0x90c5 }, /* 0x90c6 */ { false, 0x90c6, 0x90c6 }, /* 0x90c7 */ { false, 0x90c7, 0x90c7 }, /* 0x90c8 */ { false, 0x90c8, 0x90c8 }, /* 0x90c9 */ { false, 0x90c9, 0x90c9 }, /* 0x90ca */ { false, 0x90ca, 0x90ca }, /* 0x90cb */ { false, 0x90cb, 0x90cb }, /* 0x90cc */ { false, 0x90cc, 0x90cc }, /* 0x90cd */ { false, 0x90cd, 0x90cd }, /* 0x90ce */ { false, 0x90ce, 0x90ce }, /* 0x90cf */ { false, 0x90cf, 0x90cf }, /* 0x90d0 */ { false, 0x90d0, 0x90d0 }, /* 0x90d1 */ { false, 0x90d1, 0x90d1 }, /* 0x90d2 */ { false, 0x90d2, 0x90d2 }, /* 0x90d3 */ { false, 0x90d3, 0x90d3 }, /* 0x90d4 */ { false, 0x90d4, 0x90d4 }, /* 0x90d5 */ { false, 0x90d5, 0x90d5 }, /* 0x90d6 */ { false, 0x90d6, 0x90d6 }, /* 0x90d7 */ { false, 0x90d7, 0x90d7 }, /* 0x90d8 */ { false, 0x90d8, 0x90d8 }, /* 0x90d9 */ { false, 0x90d9, 0x90d9 }, /* 0x90da */ { false, 0x90da, 0x90da }, /* 0x90db */ { false, 0x90db, 0x90db }, /* 0x90dc */ { false, 0x90dc, 0x90dc }, /* 0x90dd */ { false, 0x90dd, 0x90dd }, /* 0x90de */ { false, 0x90de, 0x90de }, /* 0x90df */ { false, 0x90df, 0x90df }, /* 0x90e0 */ { false, 0x90e0, 0x90e0 }, /* 0x90e1 */ { false, 0x90e1, 0x90e1 }, /* 0x90e2 */ { false, 0x90e2, 0x90e2 }, /* 0x90e3 */ { false, 0x90e3, 0x90e3 }, /* 0x90e4 */ { false, 0x90e4, 0x90e4 }, /* 0x90e5 */ { false, 0x90e5, 0x90e5 }, /* 0x90e6 */ { false, 0x90e6, 0x90e6 }, /* 0x90e7 */ { false, 0x90e7, 0x90e7 }, /* 0x90e8 */ { false, 0x90e8, 0x90e8 }, /* 0x90e9 */ { false, 0x90e9, 0x90e9 }, /* 0x90ea */ { false, 0x90ea, 0x90ea }, /* 0x90eb */ { false, 0x90eb, 0x90eb }, /* 0x90ec */ { false, 0x90ec, 0x90ec }, /* 0x90ed */ { false, 0x90ed, 0x90ed }, /* 0x90ee */ { false, 0x90ee, 0x90ee }, /* 0x90ef */ { false, 0x90ef, 0x90ef }, /* 0x90f0 */ { false, 0x90f0, 0x90f0 }, /* 0x90f1 */ { false, 0x90f1, 0x90f1 }, /* 0x90f2 */ { false, 0x90f2, 0x90f2 }, /* 0x90f3 */ { false, 0x90f3, 0x90f3 }, /* 0x90f4 */ { false, 0x90f4, 0x90f4 }, /* 0x90f5 */ { false, 0x90f5, 0x90f5 }, /* 0x90f6 */ { false, 0x90f6, 0x90f6 }, /* 0x90f7 */ { false, 0x90f7, 0x90f7 }, /* 0x90f8 */ { false, 0x90f8, 0x90f8 }, /* 0x90f9 */ { false, 0x90f9, 0x90f9 }, /* 0x90fa */ { false, 0x90fa, 0x90fa }, /* 0x90fb */ { false, 0x90fb, 0x90fb }, /* 0x90fc */ { false, 0x90fc, 0x90fc }, /* 0x90fd */ { false, 0x90fd, 0x90fd }, /* 0x90fe */ { false, 0x90fe, 0x90fe }, /* 0x90ff */ { false, 0x90ff, 0x90ff }, /* 0x9100 */ { false, 0x9100, 0x9100 }, /* 0x9101 */ { false, 0x9101, 0x9101 }, /* 0x9102 */ { false, 0x9102, 0x9102 }, /* 0x9103 */ { false, 0x9103, 0x9103 }, /* 0x9104 */ { false, 0x9104, 0x9104 }, /* 0x9105 */ { false, 0x9105, 0x9105 }, /* 0x9106 */ { false, 0x9106, 0x9106 }, /* 0x9107 */ { false, 0x9107, 0x9107 }, /* 0x9108 */ { false, 0x9108, 0x9108 }, /* 0x9109 */ { false, 0x9109, 0x9109 }, /* 0x910a */ { false, 0x910a, 0x910a }, /* 0x910b */ { false, 0x910b, 0x910b }, /* 0x910c */ { false, 0x910c, 0x910c }, /* 0x910d */ { false, 0x910d, 0x910d }, /* 0x910e */ { false, 0x910e, 0x910e }, /* 0x910f */ { false, 0x910f, 0x910f }, /* 0x9110 */ { false, 0x9110, 0x9110 }, /* 0x9111 */ { false, 0x9111, 0x9111 }, /* 0x9112 */ { false, 0x9112, 0x9112 }, /* 0x9113 */ { false, 0x9113, 0x9113 }, /* 0x9114 */ { false, 0x9114, 0x9114 }, /* 0x9115 */ { false, 0x9115, 0x9115 }, /* 0x9116 */ { false, 0x9116, 0x9116 }, /* 0x9117 */ { false, 0x9117, 0x9117 }, /* 0x9118 */ { false, 0x9118, 0x9118 }, /* 0x9119 */ { false, 0x9119, 0x9119 }, /* 0x911a */ { false, 0x911a, 0x911a }, /* 0x911b */ { false, 0x911b, 0x911b }, /* 0x911c */ { false, 0x911c, 0x911c }, /* 0x911d */ { false, 0x911d, 0x911d }, /* 0x911e */ { false, 0x911e, 0x911e }, /* 0x911f */ { false, 0x911f, 0x911f }, /* 0x9120 */ { false, 0x9120, 0x9120 }, /* 0x9121 */ { false, 0x9121, 0x9121 }, /* 0x9122 */ { false, 0x9122, 0x9122 }, /* 0x9123 */ { false, 0x9123, 0x9123 }, /* 0x9124 */ { false, 0x9124, 0x9124 }, /* 0x9125 */ { false, 0x9125, 0x9125 }, /* 0x9126 */ { false, 0x9126, 0x9126 }, /* 0x9127 */ { false, 0x9127, 0x9127 }, /* 0x9128 */ { false, 0x9128, 0x9128 }, /* 0x9129 */ { false, 0x9129, 0x9129 }, /* 0x912a */ { false, 0x912a, 0x912a }, /* 0x912b */ { false, 0x912b, 0x912b }, /* 0x912c */ { false, 0x912c, 0x912c }, /* 0x912d */ { false, 0x912d, 0x912d }, /* 0x912e */ { false, 0x912e, 0x912e }, /* 0x912f */ { false, 0x912f, 0x912f }, /* 0x9130 */ { false, 0x9130, 0x9130 }, /* 0x9131 */ { false, 0x9131, 0x9131 }, /* 0x9132 */ { false, 0x9132, 0x9132 }, /* 0x9133 */ { false, 0x9133, 0x9133 }, /* 0x9134 */ { false, 0x9134, 0x9134 }, /* 0x9135 */ { false, 0x9135, 0x9135 }, /* 0x9136 */ { false, 0x9136, 0x9136 }, /* 0x9137 */ { false, 0x9137, 0x9137 }, /* 0x9138 */ { false, 0x9138, 0x9138 }, /* 0x9139 */ { false, 0x9139, 0x9139 }, /* 0x913a */ { false, 0x913a, 0x913a }, /* 0x913b */ { false, 0x913b, 0x913b }, /* 0x913c */ { false, 0x913c, 0x913c }, /* 0x913d */ { false, 0x913d, 0x913d }, /* 0x913e */ { false, 0x913e, 0x913e }, /* 0x913f */ { false, 0x913f, 0x913f }, /* 0x9140 */ { false, 0x9140, 0x9140 }, /* 0x9141 */ { false, 0x9141, 0x9141 }, /* 0x9142 */ { false, 0x9142, 0x9142 }, /* 0x9143 */ { false, 0x9143, 0x9143 }, /* 0x9144 */ { false, 0x9144, 0x9144 }, /* 0x9145 */ { false, 0x9145, 0x9145 }, /* 0x9146 */ { false, 0x9146, 0x9146 }, /* 0x9147 */ { false, 0x9147, 0x9147 }, /* 0x9148 */ { false, 0x9148, 0x9148 }, /* 0x9149 */ { false, 0x9149, 0x9149 }, /* 0x914a */ { false, 0x914a, 0x914a }, /* 0x914b */ { false, 0x914b, 0x914b }, /* 0x914c */ { false, 0x914c, 0x914c }, /* 0x914d */ { false, 0x914d, 0x914d }, /* 0x914e */ { false, 0x914e, 0x914e }, /* 0x914f */ { false, 0x914f, 0x914f }, /* 0x9150 */ { false, 0x9150, 0x9150 }, /* 0x9151 */ { false, 0x9151, 0x9151 }, /* 0x9152 */ { false, 0x9152, 0x9152 }, /* 0x9153 */ { false, 0x9153, 0x9153 }, /* 0x9154 */ { false, 0x9154, 0x9154 }, /* 0x9155 */ { false, 0x9155, 0x9155 }, /* 0x9156 */ { false, 0x9156, 0x9156 }, /* 0x9157 */ { false, 0x9157, 0x9157 }, /* 0x9158 */ { false, 0x9158, 0x9158 }, /* 0x9159 */ { false, 0x9159, 0x9159 }, /* 0x915a */ { false, 0x915a, 0x915a }, /* 0x915b */ { false, 0x915b, 0x915b }, /* 0x915c */ { false, 0x915c, 0x915c }, /* 0x915d */ { false, 0x915d, 0x915d }, /* 0x915e */ { false, 0x915e, 0x915e }, /* 0x915f */ { false, 0x915f, 0x915f }, /* 0x9160 */ { false, 0x9160, 0x9160 }, /* 0x9161 */ { false, 0x9161, 0x9161 }, /* 0x9162 */ { false, 0x9162, 0x9162 }, /* 0x9163 */ { false, 0x9163, 0x9163 }, /* 0x9164 */ { false, 0x9164, 0x9164 }, /* 0x9165 */ { false, 0x9165, 0x9165 }, /* 0x9166 */ { false, 0x9166, 0x9166 }, /* 0x9167 */ { false, 0x9167, 0x9167 }, /* 0x9168 */ { false, 0x9168, 0x9168 }, /* 0x9169 */ { false, 0x9169, 0x9169 }, /* 0x916a */ { false, 0x916a, 0x916a }, /* 0x916b */ { false, 0x916b, 0x916b }, /* 0x916c */ { false, 0x916c, 0x916c }, /* 0x916d */ { false, 0x916d, 0x916d }, /* 0x916e */ { false, 0x916e, 0x916e }, /* 0x916f */ { false, 0x916f, 0x916f }, /* 0x9170 */ { false, 0x9170, 0x9170 }, /* 0x9171 */ { false, 0x9171, 0x9171 }, /* 0x9172 */ { false, 0x9172, 0x9172 }, /* 0x9173 */ { false, 0x9173, 0x9173 }, /* 0x9174 */ { false, 0x9174, 0x9174 }, /* 0x9175 */ { false, 0x9175, 0x9175 }, /* 0x9176 */ { false, 0x9176, 0x9176 }, /* 0x9177 */ { false, 0x9177, 0x9177 }, /* 0x9178 */ { false, 0x9178, 0x9178 }, /* 0x9179 */ { false, 0x9179, 0x9179 }, /* 0x917a */ { false, 0x917a, 0x917a }, /* 0x917b */ { false, 0x917b, 0x917b }, /* 0x917c */ { false, 0x917c, 0x917c }, /* 0x917d */ { false, 0x917d, 0x917d }, /* 0x917e */ { false, 0x917e, 0x917e }, /* 0x917f */ { false, 0x917f, 0x917f }, /* 0x9180 */ { false, 0x9180, 0x9180 }, /* 0x9181 */ { false, 0x9181, 0x9181 }, /* 0x9182 */ { false, 0x9182, 0x9182 }, /* 0x9183 */ { false, 0x9183, 0x9183 }, /* 0x9184 */ { false, 0x9184, 0x9184 }, /* 0x9185 */ { false, 0x9185, 0x9185 }, /* 0x9186 */ { false, 0x9186, 0x9186 }, /* 0x9187 */ { false, 0x9187, 0x9187 }, /* 0x9188 */ { false, 0x9188, 0x9188 }, /* 0x9189 */ { false, 0x9189, 0x9189 }, /* 0x918a */ { false, 0x918a, 0x918a }, /* 0x918b */ { false, 0x918b, 0x918b }, /* 0x918c */ { false, 0x918c, 0x918c }, /* 0x918d */ { false, 0x918d, 0x918d }, /* 0x918e */ { false, 0x918e, 0x918e }, /* 0x918f */ { false, 0x918f, 0x918f }, /* 0x9190 */ { false, 0x9190, 0x9190 }, /* 0x9191 */ { false, 0x9191, 0x9191 }, /* 0x9192 */ { false, 0x9192, 0x9192 }, /* 0x9193 */ { false, 0x9193, 0x9193 }, /* 0x9194 */ { false, 0x9194, 0x9194 }, /* 0x9195 */ { false, 0x9195, 0x9195 }, /* 0x9196 */ { false, 0x9196, 0x9196 }, /* 0x9197 */ { false, 0x9197, 0x9197 }, /* 0x9198 */ { false, 0x9198, 0x9198 }, /* 0x9199 */ { false, 0x9199, 0x9199 }, /* 0x919a */ { false, 0x919a, 0x919a }, /* 0x919b */ { false, 0x919b, 0x919b }, /* 0x919c */ { false, 0x919c, 0x919c }, /* 0x919d */ { false, 0x919d, 0x919d }, /* 0x919e */ { false, 0x919e, 0x919e }, /* 0x919f */ { false, 0x919f, 0x919f }, /* 0x91a0 */ { false, 0x91a0, 0x91a0 }, /* 0x91a1 */ { false, 0x91a1, 0x91a1 }, /* 0x91a2 */ { false, 0x91a2, 0x91a2 }, /* 0x91a3 */ { false, 0x91a3, 0x91a3 }, /* 0x91a4 */ { false, 0x91a4, 0x91a4 }, /* 0x91a5 */ { false, 0x91a5, 0x91a5 }, /* 0x91a6 */ { false, 0x91a6, 0x91a6 }, /* 0x91a7 */ { false, 0x91a7, 0x91a7 }, /* 0x91a8 */ { false, 0x91a8, 0x91a8 }, /* 0x91a9 */ { false, 0x91a9, 0x91a9 }, /* 0x91aa */ { false, 0x91aa, 0x91aa }, /* 0x91ab */ { false, 0x91ab, 0x91ab }, /* 0x91ac */ { false, 0x91ac, 0x91ac }, /* 0x91ad */ { false, 0x91ad, 0x91ad }, /* 0x91ae */ { false, 0x91ae, 0x91ae }, /* 0x91af */ { false, 0x91af, 0x91af }, /* 0x91b0 */ { false, 0x91b0, 0x91b0 }, /* 0x91b1 */ { false, 0x91b1, 0x91b1 }, /* 0x91b2 */ { false, 0x91b2, 0x91b2 }, /* 0x91b3 */ { false, 0x91b3, 0x91b3 }, /* 0x91b4 */ { false, 0x91b4, 0x91b4 }, /* 0x91b5 */ { false, 0x91b5, 0x91b5 }, /* 0x91b6 */ { false, 0x91b6, 0x91b6 }, /* 0x91b7 */ { false, 0x91b7, 0x91b7 }, /* 0x91b8 */ { false, 0x91b8, 0x91b8 }, /* 0x91b9 */ { false, 0x91b9, 0x91b9 }, /* 0x91ba */ { false, 0x91ba, 0x91ba }, /* 0x91bb */ { false, 0x91bb, 0x91bb }, /* 0x91bc */ { false, 0x91bc, 0x91bc }, /* 0x91bd */ { false, 0x91bd, 0x91bd }, /* 0x91be */ { false, 0x91be, 0x91be }, /* 0x91bf */ { false, 0x91bf, 0x91bf }, /* 0x91c0 */ { false, 0x91c0, 0x91c0 }, /* 0x91c1 */ { false, 0x91c1, 0x91c1 }, /* 0x91c2 */ { false, 0x91c2, 0x91c2 }, /* 0x91c3 */ { false, 0x91c3, 0x91c3 }, /* 0x91c4 */ { false, 0x91c4, 0x91c4 }, /* 0x91c5 */ { false, 0x91c5, 0x91c5 }, /* 0x91c6 */ { false, 0x91c6, 0x91c6 }, /* 0x91c7 */ { false, 0x91c7, 0x91c7 }, /* 0x91c8 */ { false, 0x91c8, 0x91c8 }, /* 0x91c9 */ { false, 0x91c9, 0x91c9 }, /* 0x91ca */ { false, 0x91ca, 0x91ca }, /* 0x91cb */ { false, 0x91cb, 0x91cb }, /* 0x91cc */ { false, 0x91cc, 0x91cc }, /* 0x91cd */ { false, 0x91cd, 0x91cd }, /* 0x91ce */ { false, 0x91ce, 0x91ce }, /* 0x91cf */ { false, 0x91cf, 0x91cf }, /* 0x91d0 */ { false, 0x91d0, 0x91d0 }, /* 0x91d1 */ { false, 0x91d1, 0x91d1 }, /* 0x91d2 */ { false, 0x91d2, 0x91d2 }, /* 0x91d3 */ { false, 0x91d3, 0x91d3 }, /* 0x91d4 */ { false, 0x91d4, 0x91d4 }, /* 0x91d5 */ { false, 0x91d5, 0x91d5 }, /* 0x91d6 */ { false, 0x91d6, 0x91d6 }, /* 0x91d7 */ { false, 0x91d7, 0x91d7 }, /* 0x91d8 */ { false, 0x91d8, 0x91d8 }, /* 0x91d9 */ { false, 0x91d9, 0x91d9 }, /* 0x91da */ { false, 0x91da, 0x91da }, /* 0x91db */ { false, 0x91db, 0x91db }, /* 0x91dc */ { false, 0x91dc, 0x91dc }, /* 0x91dd */ { false, 0x91dd, 0x91dd }, /* 0x91de */ { false, 0x91de, 0x91de }, /* 0x91df */ { false, 0x91df, 0x91df }, /* 0x91e0 */ { false, 0x91e0, 0x91e0 }, /* 0x91e1 */ { false, 0x91e1, 0x91e1 }, /* 0x91e2 */ { false, 0x91e2, 0x91e2 }, /* 0x91e3 */ { false, 0x91e3, 0x91e3 }, /* 0x91e4 */ { false, 0x91e4, 0x91e4 }, /* 0x91e5 */ { false, 0x91e5, 0x91e5 }, /* 0x91e6 */ { false, 0x91e6, 0x91e6 }, /* 0x91e7 */ { false, 0x91e7, 0x91e7 }, /* 0x91e8 */ { false, 0x91e8, 0x91e8 }, /* 0x91e9 */ { false, 0x91e9, 0x91e9 }, /* 0x91ea */ { false, 0x91ea, 0x91ea }, /* 0x91eb */ { false, 0x91eb, 0x91eb }, /* 0x91ec */ { false, 0x91ec, 0x91ec }, /* 0x91ed */ { false, 0x91ed, 0x91ed }, /* 0x91ee */ { false, 0x91ee, 0x91ee }, /* 0x91ef */ { false, 0x91ef, 0x91ef }, /* 0x91f0 */ { false, 0x91f0, 0x91f0 }, /* 0x91f1 */ { false, 0x91f1, 0x91f1 }, /* 0x91f2 */ { false, 0x91f2, 0x91f2 }, /* 0x91f3 */ { false, 0x91f3, 0x91f3 }, /* 0x91f4 */ { false, 0x91f4, 0x91f4 }, /* 0x91f5 */ { false, 0x91f5, 0x91f5 }, /* 0x91f6 */ { false, 0x91f6, 0x91f6 }, /* 0x91f7 */ { false, 0x91f7, 0x91f7 }, /* 0x91f8 */ { false, 0x91f8, 0x91f8 }, /* 0x91f9 */ { false, 0x91f9, 0x91f9 }, /* 0x91fa */ { false, 0x91fa, 0x91fa }, /* 0x91fb */ { false, 0x91fb, 0x91fb }, /* 0x91fc */ { false, 0x91fc, 0x91fc }, /* 0x91fd */ { false, 0x91fd, 0x91fd }, /* 0x91fe */ { false, 0x91fe, 0x91fe }, /* 0x91ff */ { false, 0x91ff, 0x91ff }, /* 0x9200 */ { false, 0x9200, 0x9200 }, /* 0x9201 */ { false, 0x9201, 0x9201 }, /* 0x9202 */ { false, 0x9202, 0x9202 }, /* 0x9203 */ { false, 0x9203, 0x9203 }, /* 0x9204 */ { false, 0x9204, 0x9204 }, /* 0x9205 */ { false, 0x9205, 0x9205 }, /* 0x9206 */ { false, 0x9206, 0x9206 }, /* 0x9207 */ { false, 0x9207, 0x9207 }, /* 0x9208 */ { false, 0x9208, 0x9208 }, /* 0x9209 */ { false, 0x9209, 0x9209 }, /* 0x920a */ { false, 0x920a, 0x920a }, /* 0x920b */ { false, 0x920b, 0x920b }, /* 0x920c */ { false, 0x920c, 0x920c }, /* 0x920d */ { false, 0x920d, 0x920d }, /* 0x920e */ { false, 0x920e, 0x920e }, /* 0x920f */ { false, 0x920f, 0x920f }, /* 0x9210 */ { false, 0x9210, 0x9210 }, /* 0x9211 */ { false, 0x9211, 0x9211 }, /* 0x9212 */ { false, 0x9212, 0x9212 }, /* 0x9213 */ { false, 0x9213, 0x9213 }, /* 0x9214 */ { false, 0x9214, 0x9214 }, /* 0x9215 */ { false, 0x9215, 0x9215 }, /* 0x9216 */ { false, 0x9216, 0x9216 }, /* 0x9217 */ { false, 0x9217, 0x9217 }, /* 0x9218 */ { false, 0x9218, 0x9218 }, /* 0x9219 */ { false, 0x9219, 0x9219 }, /* 0x921a */ { false, 0x921a, 0x921a }, /* 0x921b */ { false, 0x921b, 0x921b }, /* 0x921c */ { false, 0x921c, 0x921c }, /* 0x921d */ { false, 0x921d, 0x921d }, /* 0x921e */ { false, 0x921e, 0x921e }, /* 0x921f */ { false, 0x921f, 0x921f }, /* 0x9220 */ { false, 0x9220, 0x9220 }, /* 0x9221 */ { false, 0x9221, 0x9221 }, /* 0x9222 */ { false, 0x9222, 0x9222 }, /* 0x9223 */ { false, 0x9223, 0x9223 }, /* 0x9224 */ { false, 0x9224, 0x9224 }, /* 0x9225 */ { false, 0x9225, 0x9225 }, /* 0x9226 */ { false, 0x9226, 0x9226 }, /* 0x9227 */ { false, 0x9227, 0x9227 }, /* 0x9228 */ { false, 0x9228, 0x9228 }, /* 0x9229 */ { false, 0x9229, 0x9229 }, /* 0x922a */ { false, 0x922a, 0x922a }, /* 0x922b */ { false, 0x922b, 0x922b }, /* 0x922c */ { false, 0x922c, 0x922c }, /* 0x922d */ { false, 0x922d, 0x922d }, /* 0x922e */ { false, 0x922e, 0x922e }, /* 0x922f */ { false, 0x922f, 0x922f }, /* 0x9230 */ { false, 0x9230, 0x9230 }, /* 0x9231 */ { false, 0x9231, 0x9231 }, /* 0x9232 */ { false, 0x9232, 0x9232 }, /* 0x9233 */ { false, 0x9233, 0x9233 }, /* 0x9234 */ { false, 0x9234, 0x9234 }, /* 0x9235 */ { false, 0x9235, 0x9235 }, /* 0x9236 */ { false, 0x9236, 0x9236 }, /* 0x9237 */ { false, 0x9237, 0x9237 }, /* 0x9238 */ { false, 0x9238, 0x9238 }, /* 0x9239 */ { false, 0x9239, 0x9239 }, /* 0x923a */ { false, 0x923a, 0x923a }, /* 0x923b */ { false, 0x923b, 0x923b }, /* 0x923c */ { false, 0x923c, 0x923c }, /* 0x923d */ { false, 0x923d, 0x923d }, /* 0x923e */ { false, 0x923e, 0x923e }, /* 0x923f */ { false, 0x923f, 0x923f }, /* 0x9240 */ { false, 0x9240, 0x9240 }, /* 0x9241 */ { false, 0x9241, 0x9241 }, /* 0x9242 */ { false, 0x9242, 0x9242 }, /* 0x9243 */ { false, 0x9243, 0x9243 }, /* 0x9244 */ { false, 0x9244, 0x9244 }, /* 0x9245 */ { false, 0x9245, 0x9245 }, /* 0x9246 */ { false, 0x9246, 0x9246 }, /* 0x9247 */ { false, 0x9247, 0x9247 }, /* 0x9248 */ { false, 0x9248, 0x9248 }, /* 0x9249 */ { false, 0x9249, 0x9249 }, /* 0x924a */ { false, 0x924a, 0x924a }, /* 0x924b */ { false, 0x924b, 0x924b }, /* 0x924c */ { false, 0x924c, 0x924c }, /* 0x924d */ { false, 0x924d, 0x924d }, /* 0x924e */ { false, 0x924e, 0x924e }, /* 0x924f */ { false, 0x924f, 0x924f }, /* 0x9250 */ { false, 0x9250, 0x9250 }, /* 0x9251 */ { false, 0x9251, 0x9251 }, /* 0x9252 */ { false, 0x9252, 0x9252 }, /* 0x9253 */ { false, 0x9253, 0x9253 }, /* 0x9254 */ { false, 0x9254, 0x9254 }, /* 0x9255 */ { false, 0x9255, 0x9255 }, /* 0x9256 */ { false, 0x9256, 0x9256 }, /* 0x9257 */ { false, 0x9257, 0x9257 }, /* 0x9258 */ { false, 0x9258, 0x9258 }, /* 0x9259 */ { false, 0x9259, 0x9259 }, /* 0x925a */ { false, 0x925a, 0x925a }, /* 0x925b */ { false, 0x925b, 0x925b }, /* 0x925c */ { false, 0x925c, 0x925c }, /* 0x925d */ { false, 0x925d, 0x925d }, /* 0x925e */ { false, 0x925e, 0x925e }, /* 0x925f */ { false, 0x925f, 0x925f }, /* 0x9260 */ { false, 0x9260, 0x9260 }, /* 0x9261 */ { false, 0x9261, 0x9261 }, /* 0x9262 */ { false, 0x9262, 0x9262 }, /* 0x9263 */ { false, 0x9263, 0x9263 }, /* 0x9264 */ { false, 0x9264, 0x9264 }, /* 0x9265 */ { false, 0x9265, 0x9265 }, /* 0x9266 */ { false, 0x9266, 0x9266 }, /* 0x9267 */ { false, 0x9267, 0x9267 }, /* 0x9268 */ { false, 0x9268, 0x9268 }, /* 0x9269 */ { false, 0x9269, 0x9269 }, /* 0x926a */ { false, 0x926a, 0x926a }, /* 0x926b */ { false, 0x926b, 0x926b }, /* 0x926c */ { false, 0x926c, 0x926c }, /* 0x926d */ { false, 0x926d, 0x926d }, /* 0x926e */ { false, 0x926e, 0x926e }, /* 0x926f */ { false, 0x926f, 0x926f }, /* 0x9270 */ { false, 0x9270, 0x9270 }, /* 0x9271 */ { false, 0x9271, 0x9271 }, /* 0x9272 */ { false, 0x9272, 0x9272 }, /* 0x9273 */ { false, 0x9273, 0x9273 }, /* 0x9274 */ { false, 0x9274, 0x9274 }, /* 0x9275 */ { false, 0x9275, 0x9275 }, /* 0x9276 */ { false, 0x9276, 0x9276 }, /* 0x9277 */ { false, 0x9277, 0x9277 }, /* 0x9278 */ { false, 0x9278, 0x9278 }, /* 0x9279 */ { false, 0x9279, 0x9279 }, /* 0x927a */ { false, 0x927a, 0x927a }, /* 0x927b */ { false, 0x927b, 0x927b }, /* 0x927c */ { false, 0x927c, 0x927c }, /* 0x927d */ { false, 0x927d, 0x927d }, /* 0x927e */ { false, 0x927e, 0x927e }, /* 0x927f */ { false, 0x927f, 0x927f }, /* 0x9280 */ { false, 0x9280, 0x9280 }, /* 0x9281 */ { false, 0x9281, 0x9281 }, /* 0x9282 */ { false, 0x9282, 0x9282 }, /* 0x9283 */ { false, 0x9283, 0x9283 }, /* 0x9284 */ { false, 0x9284, 0x9284 }, /* 0x9285 */ { false, 0x9285, 0x9285 }, /* 0x9286 */ { false, 0x9286, 0x9286 }, /* 0x9287 */ { false, 0x9287, 0x9287 }, /* 0x9288 */ { false, 0x9288, 0x9288 }, /* 0x9289 */ { false, 0x9289, 0x9289 }, /* 0x928a */ { false, 0x928a, 0x928a }, /* 0x928b */ { false, 0x928b, 0x928b }, /* 0x928c */ { false, 0x928c, 0x928c }, /* 0x928d */ { false, 0x928d, 0x928d }, /* 0x928e */ { false, 0x928e, 0x928e }, /* 0x928f */ { false, 0x928f, 0x928f }, /* 0x9290 */ { false, 0x9290, 0x9290 }, /* 0x9291 */ { false, 0x9291, 0x9291 }, /* 0x9292 */ { false, 0x9292, 0x9292 }, /* 0x9293 */ { false, 0x9293, 0x9293 }, /* 0x9294 */ { false, 0x9294, 0x9294 }, /* 0x9295 */ { false, 0x9295, 0x9295 }, /* 0x9296 */ { false, 0x9296, 0x9296 }, /* 0x9297 */ { false, 0x9297, 0x9297 }, /* 0x9298 */ { false, 0x9298, 0x9298 }, /* 0x9299 */ { false, 0x9299, 0x9299 }, /* 0x929a */ { false, 0x929a, 0x929a }, /* 0x929b */ { false, 0x929b, 0x929b }, /* 0x929c */ { false, 0x929c, 0x929c }, /* 0x929d */ { false, 0x929d, 0x929d }, /* 0x929e */ { false, 0x929e, 0x929e }, /* 0x929f */ { false, 0x929f, 0x929f }, /* 0x92a0 */ { false, 0x92a0, 0x92a0 }, /* 0x92a1 */ { false, 0x92a1, 0x92a1 }, /* 0x92a2 */ { false, 0x92a2, 0x92a2 }, /* 0x92a3 */ { false, 0x92a3, 0x92a3 }, /* 0x92a4 */ { false, 0x92a4, 0x92a4 }, /* 0x92a5 */ { false, 0x92a5, 0x92a5 }, /* 0x92a6 */ { false, 0x92a6, 0x92a6 }, /* 0x92a7 */ { false, 0x92a7, 0x92a7 }, /* 0x92a8 */ { false, 0x92a8, 0x92a8 }, /* 0x92a9 */ { false, 0x92a9, 0x92a9 }, /* 0x92aa */ { false, 0x92aa, 0x92aa }, /* 0x92ab */ { false, 0x92ab, 0x92ab }, /* 0x92ac */ { false, 0x92ac, 0x92ac }, /* 0x92ad */ { false, 0x92ad, 0x92ad }, /* 0x92ae */ { false, 0x92ae, 0x92ae }, /* 0x92af */ { false, 0x92af, 0x92af }, /* 0x92b0 */ { false, 0x92b0, 0x92b0 }, /* 0x92b1 */ { false, 0x92b1, 0x92b1 }, /* 0x92b2 */ { false, 0x92b2, 0x92b2 }, /* 0x92b3 */ { false, 0x92b3, 0x92b3 }, /* 0x92b4 */ { false, 0x92b4, 0x92b4 }, /* 0x92b5 */ { false, 0x92b5, 0x92b5 }, /* 0x92b6 */ { false, 0x92b6, 0x92b6 }, /* 0x92b7 */ { false, 0x92b7, 0x92b7 }, /* 0x92b8 */ { false, 0x92b8, 0x92b8 }, /* 0x92b9 */ { false, 0x92b9, 0x92b9 }, /* 0x92ba */ { false, 0x92ba, 0x92ba }, /* 0x92bb */ { false, 0x92bb, 0x92bb }, /* 0x92bc */ { false, 0x92bc, 0x92bc }, /* 0x92bd */ { false, 0x92bd, 0x92bd }, /* 0x92be */ { false, 0x92be, 0x92be }, /* 0x92bf */ { false, 0x92bf, 0x92bf }, /* 0x92c0 */ { false, 0x92c0, 0x92c0 }, /* 0x92c1 */ { false, 0x92c1, 0x92c1 }, /* 0x92c2 */ { false, 0x92c2, 0x92c2 }, /* 0x92c3 */ { false, 0x92c3, 0x92c3 }, /* 0x92c4 */ { false, 0x92c4, 0x92c4 }, /* 0x92c5 */ { false, 0x92c5, 0x92c5 }, /* 0x92c6 */ { false, 0x92c6, 0x92c6 }, /* 0x92c7 */ { false, 0x92c7, 0x92c7 }, /* 0x92c8 */ { false, 0x92c8, 0x92c8 }, /* 0x92c9 */ { false, 0x92c9, 0x92c9 }, /* 0x92ca */ { false, 0x92ca, 0x92ca }, /* 0x92cb */ { false, 0x92cb, 0x92cb }, /* 0x92cc */ { false, 0x92cc, 0x92cc }, /* 0x92cd */ { false, 0x92cd, 0x92cd }, /* 0x92ce */ { false, 0x92ce, 0x92ce }, /* 0x92cf */ { false, 0x92cf, 0x92cf }, /* 0x92d0 */ { false, 0x92d0, 0x92d0 }, /* 0x92d1 */ { false, 0x92d1, 0x92d1 }, /* 0x92d2 */ { false, 0x92d2, 0x92d2 }, /* 0x92d3 */ { false, 0x92d3, 0x92d3 }, /* 0x92d4 */ { false, 0x92d4, 0x92d4 }, /* 0x92d5 */ { false, 0x92d5, 0x92d5 }, /* 0x92d6 */ { false, 0x92d6, 0x92d6 }, /* 0x92d7 */ { false, 0x92d7, 0x92d7 }, /* 0x92d8 */ { false, 0x92d8, 0x92d8 }, /* 0x92d9 */ { false, 0x92d9, 0x92d9 }, /* 0x92da */ { false, 0x92da, 0x92da }, /* 0x92db */ { false, 0x92db, 0x92db }, /* 0x92dc */ { false, 0x92dc, 0x92dc }, /* 0x92dd */ { false, 0x92dd, 0x92dd }, /* 0x92de */ { false, 0x92de, 0x92de }, /* 0x92df */ { false, 0x92df, 0x92df }, /* 0x92e0 */ { false, 0x92e0, 0x92e0 }, /* 0x92e1 */ { false, 0x92e1, 0x92e1 }, /* 0x92e2 */ { false, 0x92e2, 0x92e2 }, /* 0x92e3 */ { false, 0x92e3, 0x92e3 }, /* 0x92e4 */ { false, 0x92e4, 0x92e4 }, /* 0x92e5 */ { false, 0x92e5, 0x92e5 }, /* 0x92e6 */ { false, 0x92e6, 0x92e6 }, /* 0x92e7 */ { false, 0x92e7, 0x92e7 }, /* 0x92e8 */ { false, 0x92e8, 0x92e8 }, /* 0x92e9 */ { false, 0x92e9, 0x92e9 }, /* 0x92ea */ { false, 0x92ea, 0x92ea }, /* 0x92eb */ { false, 0x92eb, 0x92eb }, /* 0x92ec */ { false, 0x92ec, 0x92ec }, /* 0x92ed */ { false, 0x92ed, 0x92ed }, /* 0x92ee */ { false, 0x92ee, 0x92ee }, /* 0x92ef */ { false, 0x92ef, 0x92ef }, /* 0x92f0 */ { false, 0x92f0, 0x92f0 }, /* 0x92f1 */ { false, 0x92f1, 0x92f1 }, /* 0x92f2 */ { false, 0x92f2, 0x92f2 }, /* 0x92f3 */ { false, 0x92f3, 0x92f3 }, /* 0x92f4 */ { false, 0x92f4, 0x92f4 }, /* 0x92f5 */ { false, 0x92f5, 0x92f5 }, /* 0x92f6 */ { false, 0x92f6, 0x92f6 }, /* 0x92f7 */ { false, 0x92f7, 0x92f7 }, /* 0x92f8 */ { false, 0x92f8, 0x92f8 }, /* 0x92f9 */ { false, 0x92f9, 0x92f9 }, /* 0x92fa */ { false, 0x92fa, 0x92fa }, /* 0x92fb */ { false, 0x92fb, 0x92fb }, /* 0x92fc */ { false, 0x92fc, 0x92fc }, /* 0x92fd */ { false, 0x92fd, 0x92fd }, /* 0x92fe */ { false, 0x92fe, 0x92fe }, /* 0x92ff */ { false, 0x92ff, 0x92ff }, /* 0x9300 */ { false, 0x9300, 0x9300 }, /* 0x9301 */ { false, 0x9301, 0x9301 }, /* 0x9302 */ { false, 0x9302, 0x9302 }, /* 0x9303 */ { false, 0x9303, 0x9303 }, /* 0x9304 */ { false, 0x9304, 0x9304 }, /* 0x9305 */ { false, 0x9305, 0x9305 }, /* 0x9306 */ { false, 0x9306, 0x9306 }, /* 0x9307 */ { false, 0x9307, 0x9307 }, /* 0x9308 */ { false, 0x9308, 0x9308 }, /* 0x9309 */ { false, 0x9309, 0x9309 }, /* 0x930a */ { false, 0x930a, 0x930a }, /* 0x930b */ { false, 0x930b, 0x930b }, /* 0x930c */ { false, 0x930c, 0x930c }, /* 0x930d */ { false, 0x930d, 0x930d }, /* 0x930e */ { false, 0x930e, 0x930e }, /* 0x930f */ { false, 0x930f, 0x930f }, /* 0x9310 */ { false, 0x9310, 0x9310 }, /* 0x9311 */ { false, 0x9311, 0x9311 }, /* 0x9312 */ { false, 0x9312, 0x9312 }, /* 0x9313 */ { false, 0x9313, 0x9313 }, /* 0x9314 */ { false, 0x9314, 0x9314 }, /* 0x9315 */ { false, 0x9315, 0x9315 }, /* 0x9316 */ { false, 0x9316, 0x9316 }, /* 0x9317 */ { false, 0x9317, 0x9317 }, /* 0x9318 */ { false, 0x9318, 0x9318 }, /* 0x9319 */ { false, 0x9319, 0x9319 }, /* 0x931a */ { false, 0x931a, 0x931a }, /* 0x931b */ { false, 0x931b, 0x931b }, /* 0x931c */ { false, 0x931c, 0x931c }, /* 0x931d */ { false, 0x931d, 0x931d }, /* 0x931e */ { false, 0x931e, 0x931e }, /* 0x931f */ { false, 0x931f, 0x931f }, /* 0x9320 */ { false, 0x9320, 0x9320 }, /* 0x9321 */ { false, 0x9321, 0x9321 }, /* 0x9322 */ { false, 0x9322, 0x9322 }, /* 0x9323 */ { false, 0x9323, 0x9323 }, /* 0x9324 */ { false, 0x9324, 0x9324 }, /* 0x9325 */ { false, 0x9325, 0x9325 }, /* 0x9326 */ { false, 0x9326, 0x9326 }, /* 0x9327 */ { false, 0x9327, 0x9327 }, /* 0x9328 */ { false, 0x9328, 0x9328 }, /* 0x9329 */ { false, 0x9329, 0x9329 }, /* 0x932a */ { false, 0x932a, 0x932a }, /* 0x932b */ { false, 0x932b, 0x932b }, /* 0x932c */ { false, 0x932c, 0x932c }, /* 0x932d */ { false, 0x932d, 0x932d }, /* 0x932e */ { false, 0x932e, 0x932e }, /* 0x932f */ { false, 0x932f, 0x932f }, /* 0x9330 */ { false, 0x9330, 0x9330 }, /* 0x9331 */ { false, 0x9331, 0x9331 }, /* 0x9332 */ { false, 0x9332, 0x9332 }, /* 0x9333 */ { false, 0x9333, 0x9333 }, /* 0x9334 */ { false, 0x9334, 0x9334 }, /* 0x9335 */ { false, 0x9335, 0x9335 }, /* 0x9336 */ { false, 0x9336, 0x9336 }, /* 0x9337 */ { false, 0x9337, 0x9337 }, /* 0x9338 */ { false, 0x9338, 0x9338 }, /* 0x9339 */ { false, 0x9339, 0x9339 }, /* 0x933a */ { false, 0x933a, 0x933a }, /* 0x933b */ { false, 0x933b, 0x933b }, /* 0x933c */ { false, 0x933c, 0x933c }, /* 0x933d */ { false, 0x933d, 0x933d }, /* 0x933e */ { false, 0x933e, 0x933e }, /* 0x933f */ { false, 0x933f, 0x933f }, /* 0x9340 */ { false, 0x9340, 0x9340 }, /* 0x9341 */ { false, 0x9341, 0x9341 }, /* 0x9342 */ { false, 0x9342, 0x9342 }, /* 0x9343 */ { false, 0x9343, 0x9343 }, /* 0x9344 */ { false, 0x9344, 0x9344 }, /* 0x9345 */ { false, 0x9345, 0x9345 }, /* 0x9346 */ { false, 0x9346, 0x9346 }, /* 0x9347 */ { false, 0x9347, 0x9347 }, /* 0x9348 */ { false, 0x9348, 0x9348 }, /* 0x9349 */ { false, 0x9349, 0x9349 }, /* 0x934a */ { false, 0x934a, 0x934a }, /* 0x934b */ { false, 0x934b, 0x934b }, /* 0x934c */ { false, 0x934c, 0x934c }, /* 0x934d */ { false, 0x934d, 0x934d }, /* 0x934e */ { false, 0x934e, 0x934e }, /* 0x934f */ { false, 0x934f, 0x934f }, /* 0x9350 */ { false, 0x9350, 0x9350 }, /* 0x9351 */ { false, 0x9351, 0x9351 }, /* 0x9352 */ { false, 0x9352, 0x9352 }, /* 0x9353 */ { false, 0x9353, 0x9353 }, /* 0x9354 */ { false, 0x9354, 0x9354 }, /* 0x9355 */ { false, 0x9355, 0x9355 }, /* 0x9356 */ { false, 0x9356, 0x9356 }, /* 0x9357 */ { false, 0x9357, 0x9357 }, /* 0x9358 */ { false, 0x9358, 0x9358 }, /* 0x9359 */ { false, 0x9359, 0x9359 }, /* 0x935a */ { false, 0x935a, 0x935a }, /* 0x935b */ { false, 0x935b, 0x935b }, /* 0x935c */ { false, 0x935c, 0x935c }, /* 0x935d */ { false, 0x935d, 0x935d }, /* 0x935e */ { false, 0x935e, 0x935e }, /* 0x935f */ { false, 0x935f, 0x935f }, /* 0x9360 */ { false, 0x9360, 0x9360 }, /* 0x9361 */ { false, 0x9361, 0x9361 }, /* 0x9362 */ { false, 0x9362, 0x9362 }, /* 0x9363 */ { false, 0x9363, 0x9363 }, /* 0x9364 */ { false, 0x9364, 0x9364 }, /* 0x9365 */ { false, 0x9365, 0x9365 }, /* 0x9366 */ { false, 0x9366, 0x9366 }, /* 0x9367 */ { false, 0x9367, 0x9367 }, /* 0x9368 */ { false, 0x9368, 0x9368 }, /* 0x9369 */ { false, 0x9369, 0x9369 }, /* 0x936a */ { false, 0x936a, 0x936a }, /* 0x936b */ { false, 0x936b, 0x936b }, /* 0x936c */ { false, 0x936c, 0x936c }, /* 0x936d */ { false, 0x936d, 0x936d }, /* 0x936e */ { false, 0x936e, 0x936e }, /* 0x936f */ { false, 0x936f, 0x936f }, /* 0x9370 */ { false, 0x9370, 0x9370 }, /* 0x9371 */ { false, 0x9371, 0x9371 }, /* 0x9372 */ { false, 0x9372, 0x9372 }, /* 0x9373 */ { false, 0x9373, 0x9373 }, /* 0x9374 */ { false, 0x9374, 0x9374 }, /* 0x9375 */ { false, 0x9375, 0x9375 }, /* 0x9376 */ { false, 0x9376, 0x9376 }, /* 0x9377 */ { false, 0x9377, 0x9377 }, /* 0x9378 */ { false, 0x9378, 0x9378 }, /* 0x9379 */ { false, 0x9379, 0x9379 }, /* 0x937a */ { false, 0x937a, 0x937a }, /* 0x937b */ { false, 0x937b, 0x937b }, /* 0x937c */ { false, 0x937c, 0x937c }, /* 0x937d */ { false, 0x937d, 0x937d }, /* 0x937e */ { false, 0x937e, 0x937e }, /* 0x937f */ { false, 0x937f, 0x937f }, /* 0x9380 */ { false, 0x9380, 0x9380 }, /* 0x9381 */ { false, 0x9381, 0x9381 }, /* 0x9382 */ { false, 0x9382, 0x9382 }, /* 0x9383 */ { false, 0x9383, 0x9383 }, /* 0x9384 */ { false, 0x9384, 0x9384 }, /* 0x9385 */ { false, 0x9385, 0x9385 }, /* 0x9386 */ { false, 0x9386, 0x9386 }, /* 0x9387 */ { false, 0x9387, 0x9387 }, /* 0x9388 */ { false, 0x9388, 0x9388 }, /* 0x9389 */ { false, 0x9389, 0x9389 }, /* 0x938a */ { false, 0x938a, 0x938a }, /* 0x938b */ { false, 0x938b, 0x938b }, /* 0x938c */ { false, 0x938c, 0x938c }, /* 0x938d */ { false, 0x938d, 0x938d }, /* 0x938e */ { false, 0x938e, 0x938e }, /* 0x938f */ { false, 0x938f, 0x938f }, /* 0x9390 */ { false, 0x9390, 0x9390 }, /* 0x9391 */ { false, 0x9391, 0x9391 }, /* 0x9392 */ { false, 0x9392, 0x9392 }, /* 0x9393 */ { false, 0x9393, 0x9393 }, /* 0x9394 */ { false, 0x9394, 0x9394 }, /* 0x9395 */ { false, 0x9395, 0x9395 }, /* 0x9396 */ { false, 0x9396, 0x9396 }, /* 0x9397 */ { false, 0x9397, 0x9397 }, /* 0x9398 */ { false, 0x9398, 0x9398 }, /* 0x9399 */ { false, 0x9399, 0x9399 }, /* 0x939a */ { false, 0x939a, 0x939a }, /* 0x939b */ { false, 0x939b, 0x939b }, /* 0x939c */ { false, 0x939c, 0x939c }, /* 0x939d */ { false, 0x939d, 0x939d }, /* 0x939e */ { false, 0x939e, 0x939e }, /* 0x939f */ { false, 0x939f, 0x939f }, /* 0x93a0 */ { false, 0x93a0, 0x93a0 }, /* 0x93a1 */ { false, 0x93a1, 0x93a1 }, /* 0x93a2 */ { false, 0x93a2, 0x93a2 }, /* 0x93a3 */ { false, 0x93a3, 0x93a3 }, /* 0x93a4 */ { false, 0x93a4, 0x93a4 }, /* 0x93a5 */ { false, 0x93a5, 0x93a5 }, /* 0x93a6 */ { false, 0x93a6, 0x93a6 }, /* 0x93a7 */ { false, 0x93a7, 0x93a7 }, /* 0x93a8 */ { false, 0x93a8, 0x93a8 }, /* 0x93a9 */ { false, 0x93a9, 0x93a9 }, /* 0x93aa */ { false, 0x93aa, 0x93aa }, /* 0x93ab */ { false, 0x93ab, 0x93ab }, /* 0x93ac */ { false, 0x93ac, 0x93ac }, /* 0x93ad */ { false, 0x93ad, 0x93ad }, /* 0x93ae */ { false, 0x93ae, 0x93ae }, /* 0x93af */ { false, 0x93af, 0x93af }, /* 0x93b0 */ { false, 0x93b0, 0x93b0 }, /* 0x93b1 */ { false, 0x93b1, 0x93b1 }, /* 0x93b2 */ { false, 0x93b2, 0x93b2 }, /* 0x93b3 */ { false, 0x93b3, 0x93b3 }, /* 0x93b4 */ { false, 0x93b4, 0x93b4 }, /* 0x93b5 */ { false, 0x93b5, 0x93b5 }, /* 0x93b6 */ { false, 0x93b6, 0x93b6 }, /* 0x93b7 */ { false, 0x93b7, 0x93b7 }, /* 0x93b8 */ { false, 0x93b8, 0x93b8 }, /* 0x93b9 */ { false, 0x93b9, 0x93b9 }, /* 0x93ba */ { false, 0x93ba, 0x93ba }, /* 0x93bb */ { false, 0x93bb, 0x93bb }, /* 0x93bc */ { false, 0x93bc, 0x93bc }, /* 0x93bd */ { false, 0x93bd, 0x93bd }, /* 0x93be */ { false, 0x93be, 0x93be }, /* 0x93bf */ { false, 0x93bf, 0x93bf }, /* 0x93c0 */ { false, 0x93c0, 0x93c0 }, /* 0x93c1 */ { false, 0x93c1, 0x93c1 }, /* 0x93c2 */ { false, 0x93c2, 0x93c2 }, /* 0x93c3 */ { false, 0x93c3, 0x93c3 }, /* 0x93c4 */ { false, 0x93c4, 0x93c4 }, /* 0x93c5 */ { false, 0x93c5, 0x93c5 }, /* 0x93c6 */ { false, 0x93c6, 0x93c6 }, /* 0x93c7 */ { false, 0x93c7, 0x93c7 }, /* 0x93c8 */ { false, 0x93c8, 0x93c8 }, /* 0x93c9 */ { false, 0x93c9, 0x93c9 }, /* 0x93ca */ { false, 0x93ca, 0x93ca }, /* 0x93cb */ { false, 0x93cb, 0x93cb }, /* 0x93cc */ { false, 0x93cc, 0x93cc }, /* 0x93cd */ { false, 0x93cd, 0x93cd }, /* 0x93ce */ { false, 0x93ce, 0x93ce }, /* 0x93cf */ { false, 0x93cf, 0x93cf }, /* 0x93d0 */ { false, 0x93d0, 0x93d0 }, /* 0x93d1 */ { false, 0x93d1, 0x93d1 }, /* 0x93d2 */ { false, 0x93d2, 0x93d2 }, /* 0x93d3 */ { false, 0x93d3, 0x93d3 }, /* 0x93d4 */ { false, 0x93d4, 0x93d4 }, /* 0x93d5 */ { false, 0x93d5, 0x93d5 }, /* 0x93d6 */ { false, 0x93d6, 0x93d6 }, /* 0x93d7 */ { false, 0x93d7, 0x93d7 }, /* 0x93d8 */ { false, 0x93d8, 0x93d8 }, /* 0x93d9 */ { false, 0x93d9, 0x93d9 }, /* 0x93da */ { false, 0x93da, 0x93da }, /* 0x93db */ { false, 0x93db, 0x93db }, /* 0x93dc */ { false, 0x93dc, 0x93dc }, /* 0x93dd */ { false, 0x93dd, 0x93dd }, /* 0x93de */ { false, 0x93de, 0x93de }, /* 0x93df */ { false, 0x93df, 0x93df }, /* 0x93e0 */ { false, 0x93e0, 0x93e0 }, /* 0x93e1 */ { false, 0x93e1, 0x93e1 }, /* 0x93e2 */ { false, 0x93e2, 0x93e2 }, /* 0x93e3 */ { false, 0x93e3, 0x93e3 }, /* 0x93e4 */ { false, 0x93e4, 0x93e4 }, /* 0x93e5 */ { false, 0x93e5, 0x93e5 }, /* 0x93e6 */ { false, 0x93e6, 0x93e6 }, /* 0x93e7 */ { false, 0x93e7, 0x93e7 }, /* 0x93e8 */ { false, 0x93e8, 0x93e8 }, /* 0x93e9 */ { false, 0x93e9, 0x93e9 }, /* 0x93ea */ { false, 0x93ea, 0x93ea }, /* 0x93eb */ { false, 0x93eb, 0x93eb }, /* 0x93ec */ { false, 0x93ec, 0x93ec }, /* 0x93ed */ { false, 0x93ed, 0x93ed }, /* 0x93ee */ { false, 0x93ee, 0x93ee }, /* 0x93ef */ { false, 0x93ef, 0x93ef }, /* 0x93f0 */ { false, 0x93f0, 0x93f0 }, /* 0x93f1 */ { false, 0x93f1, 0x93f1 }, /* 0x93f2 */ { false, 0x93f2, 0x93f2 }, /* 0x93f3 */ { false, 0x93f3, 0x93f3 }, /* 0x93f4 */ { false, 0x93f4, 0x93f4 }, /* 0x93f5 */ { false, 0x93f5, 0x93f5 }, /* 0x93f6 */ { false, 0x93f6, 0x93f6 }, /* 0x93f7 */ { false, 0x93f7, 0x93f7 }, /* 0x93f8 */ { false, 0x93f8, 0x93f8 }, /* 0x93f9 */ { false, 0x93f9, 0x93f9 }, /* 0x93fa */ { false, 0x93fa, 0x93fa }, /* 0x93fb */ { false, 0x93fb, 0x93fb }, /* 0x93fc */ { false, 0x93fc, 0x93fc }, /* 0x93fd */ { false, 0x93fd, 0x93fd }, /* 0x93fe */ { false, 0x93fe, 0x93fe }, /* 0x93ff */ { false, 0x93ff, 0x93ff }, /* 0x9400 */ { false, 0x9400, 0x9400 }, /* 0x9401 */ { false, 0x9401, 0x9401 }, /* 0x9402 */ { false, 0x9402, 0x9402 }, /* 0x9403 */ { false, 0x9403, 0x9403 }, /* 0x9404 */ { false, 0x9404, 0x9404 }, /* 0x9405 */ { false, 0x9405, 0x9405 }, /* 0x9406 */ { false, 0x9406, 0x9406 }, /* 0x9407 */ { false, 0x9407, 0x9407 }, /* 0x9408 */ { false, 0x9408, 0x9408 }, /* 0x9409 */ { false, 0x9409, 0x9409 }, /* 0x940a */ { false, 0x940a, 0x940a }, /* 0x940b */ { false, 0x940b, 0x940b }, /* 0x940c */ { false, 0x940c, 0x940c }, /* 0x940d */ { false, 0x940d, 0x940d }, /* 0x940e */ { false, 0x940e, 0x940e }, /* 0x940f */ { false, 0x940f, 0x940f }, /* 0x9410 */ { false, 0x9410, 0x9410 }, /* 0x9411 */ { false, 0x9411, 0x9411 }, /* 0x9412 */ { false, 0x9412, 0x9412 }, /* 0x9413 */ { false, 0x9413, 0x9413 }, /* 0x9414 */ { false, 0x9414, 0x9414 }, /* 0x9415 */ { false, 0x9415, 0x9415 }, /* 0x9416 */ { false, 0x9416, 0x9416 }, /* 0x9417 */ { false, 0x9417, 0x9417 }, /* 0x9418 */ { false, 0x9418, 0x9418 }, /* 0x9419 */ { false, 0x9419, 0x9419 }, /* 0x941a */ { false, 0x941a, 0x941a }, /* 0x941b */ { false, 0x941b, 0x941b }, /* 0x941c */ { false, 0x941c, 0x941c }, /* 0x941d */ { false, 0x941d, 0x941d }, /* 0x941e */ { false, 0x941e, 0x941e }, /* 0x941f */ { false, 0x941f, 0x941f }, /* 0x9420 */ { false, 0x9420, 0x9420 }, /* 0x9421 */ { false, 0x9421, 0x9421 }, /* 0x9422 */ { false, 0x9422, 0x9422 }, /* 0x9423 */ { false, 0x9423, 0x9423 }, /* 0x9424 */ { false, 0x9424, 0x9424 }, /* 0x9425 */ { false, 0x9425, 0x9425 }, /* 0x9426 */ { false, 0x9426, 0x9426 }, /* 0x9427 */ { false, 0x9427, 0x9427 }, /* 0x9428 */ { false, 0x9428, 0x9428 }, /* 0x9429 */ { false, 0x9429, 0x9429 }, /* 0x942a */ { false, 0x942a, 0x942a }, /* 0x942b */ { false, 0x942b, 0x942b }, /* 0x942c */ { false, 0x942c, 0x942c }, /* 0x942d */ { false, 0x942d, 0x942d }, /* 0x942e */ { false, 0x942e, 0x942e }, /* 0x942f */ { false, 0x942f, 0x942f }, /* 0x9430 */ { false, 0x9430, 0x9430 }, /* 0x9431 */ { false, 0x9431, 0x9431 }, /* 0x9432 */ { false, 0x9432, 0x9432 }, /* 0x9433 */ { false, 0x9433, 0x9433 }, /* 0x9434 */ { false, 0x9434, 0x9434 }, /* 0x9435 */ { false, 0x9435, 0x9435 }, /* 0x9436 */ { false, 0x9436, 0x9436 }, /* 0x9437 */ { false, 0x9437, 0x9437 }, /* 0x9438 */ { false, 0x9438, 0x9438 }, /* 0x9439 */ { false, 0x9439, 0x9439 }, /* 0x943a */ { false, 0x943a, 0x943a }, /* 0x943b */ { false, 0x943b, 0x943b }, /* 0x943c */ { false, 0x943c, 0x943c }, /* 0x943d */ { false, 0x943d, 0x943d }, /* 0x943e */ { false, 0x943e, 0x943e }, /* 0x943f */ { false, 0x943f, 0x943f }, /* 0x9440 */ { false, 0x9440, 0x9440 }, /* 0x9441 */ { false, 0x9441, 0x9441 }, /* 0x9442 */ { false, 0x9442, 0x9442 }, /* 0x9443 */ { false, 0x9443, 0x9443 }, /* 0x9444 */ { false, 0x9444, 0x9444 }, /* 0x9445 */ { false, 0x9445, 0x9445 }, /* 0x9446 */ { false, 0x9446, 0x9446 }, /* 0x9447 */ { false, 0x9447, 0x9447 }, /* 0x9448 */ { false, 0x9448, 0x9448 }, /* 0x9449 */ { false, 0x9449, 0x9449 }, /* 0x944a */ { false, 0x944a, 0x944a }, /* 0x944b */ { false, 0x944b, 0x944b }, /* 0x944c */ { false, 0x944c, 0x944c }, /* 0x944d */ { false, 0x944d, 0x944d }, /* 0x944e */ { false, 0x944e, 0x944e }, /* 0x944f */ { false, 0x944f, 0x944f }, /* 0x9450 */ { false, 0x9450, 0x9450 }, /* 0x9451 */ { false, 0x9451, 0x9451 }, /* 0x9452 */ { false, 0x9452, 0x9452 }, /* 0x9453 */ { false, 0x9453, 0x9453 }, /* 0x9454 */ { false, 0x9454, 0x9454 }, /* 0x9455 */ { false, 0x9455, 0x9455 }, /* 0x9456 */ { false, 0x9456, 0x9456 }, /* 0x9457 */ { false, 0x9457, 0x9457 }, /* 0x9458 */ { false, 0x9458, 0x9458 }, /* 0x9459 */ { false, 0x9459, 0x9459 }, /* 0x945a */ { false, 0x945a, 0x945a }, /* 0x945b */ { false, 0x945b, 0x945b }, /* 0x945c */ { false, 0x945c, 0x945c }, /* 0x945d */ { false, 0x945d, 0x945d }, /* 0x945e */ { false, 0x945e, 0x945e }, /* 0x945f */ { false, 0x945f, 0x945f }, /* 0x9460 */ { false, 0x9460, 0x9460 }, /* 0x9461 */ { false, 0x9461, 0x9461 }, /* 0x9462 */ { false, 0x9462, 0x9462 }, /* 0x9463 */ { false, 0x9463, 0x9463 }, /* 0x9464 */ { false, 0x9464, 0x9464 }, /* 0x9465 */ { false, 0x9465, 0x9465 }, /* 0x9466 */ { false, 0x9466, 0x9466 }, /* 0x9467 */ { false, 0x9467, 0x9467 }, /* 0x9468 */ { false, 0x9468, 0x9468 }, /* 0x9469 */ { false, 0x9469, 0x9469 }, /* 0x946a */ { false, 0x946a, 0x946a }, /* 0x946b */ { false, 0x946b, 0x946b }, /* 0x946c */ { false, 0x946c, 0x946c }, /* 0x946d */ { false, 0x946d, 0x946d }, /* 0x946e */ { false, 0x946e, 0x946e }, /* 0x946f */ { false, 0x946f, 0x946f }, /* 0x9470 */ { false, 0x9470, 0x9470 }, /* 0x9471 */ { false, 0x9471, 0x9471 }, /* 0x9472 */ { false, 0x9472, 0x9472 }, /* 0x9473 */ { false, 0x9473, 0x9473 }, /* 0x9474 */ { false, 0x9474, 0x9474 }, /* 0x9475 */ { false, 0x9475, 0x9475 }, /* 0x9476 */ { false, 0x9476, 0x9476 }, /* 0x9477 */ { false, 0x9477, 0x9477 }, /* 0x9478 */ { false, 0x9478, 0x9478 }, /* 0x9479 */ { false, 0x9479, 0x9479 }, /* 0x947a */ { false, 0x947a, 0x947a }, /* 0x947b */ { false, 0x947b, 0x947b }, /* 0x947c */ { false, 0x947c, 0x947c }, /* 0x947d */ { false, 0x947d, 0x947d }, /* 0x947e */ { false, 0x947e, 0x947e }, /* 0x947f */ { false, 0x947f, 0x947f }, /* 0x9480 */ { false, 0x9480, 0x9480 }, /* 0x9481 */ { false, 0x9481, 0x9481 }, /* 0x9482 */ { false, 0x9482, 0x9482 }, /* 0x9483 */ { false, 0x9483, 0x9483 }, /* 0x9484 */ { false, 0x9484, 0x9484 }, /* 0x9485 */ { false, 0x9485, 0x9485 }, /* 0x9486 */ { false, 0x9486, 0x9486 }, /* 0x9487 */ { false, 0x9487, 0x9487 }, /* 0x9488 */ { false, 0x9488, 0x9488 }, /* 0x9489 */ { false, 0x9489, 0x9489 }, /* 0x948a */ { false, 0x948a, 0x948a }, /* 0x948b */ { false, 0x948b, 0x948b }, /* 0x948c */ { false, 0x948c, 0x948c }, /* 0x948d */ { false, 0x948d, 0x948d }, /* 0x948e */ { false, 0x948e, 0x948e }, /* 0x948f */ { false, 0x948f, 0x948f }, /* 0x9490 */ { false, 0x9490, 0x9490 }, /* 0x9491 */ { false, 0x9491, 0x9491 }, /* 0x9492 */ { false, 0x9492, 0x9492 }, /* 0x9493 */ { false, 0x9493, 0x9493 }, /* 0x9494 */ { false, 0x9494, 0x9494 }, /* 0x9495 */ { false, 0x9495, 0x9495 }, /* 0x9496 */ { false, 0x9496, 0x9496 }, /* 0x9497 */ { false, 0x9497, 0x9497 }, /* 0x9498 */ { false, 0x9498, 0x9498 }, /* 0x9499 */ { false, 0x9499, 0x9499 }, /* 0x949a */ { false, 0x949a, 0x949a }, /* 0x949b */ { false, 0x949b, 0x949b }, /* 0x949c */ { false, 0x949c, 0x949c }, /* 0x949d */ { false, 0x949d, 0x949d }, /* 0x949e */ { false, 0x949e, 0x949e }, /* 0x949f */ { false, 0x949f, 0x949f }, /* 0x94a0 */ { false, 0x94a0, 0x94a0 }, /* 0x94a1 */ { false, 0x94a1, 0x94a1 }, /* 0x94a2 */ { false, 0x94a2, 0x94a2 }, /* 0x94a3 */ { false, 0x94a3, 0x94a3 }, /* 0x94a4 */ { false, 0x94a4, 0x94a4 }, /* 0x94a5 */ { false, 0x94a5, 0x94a5 }, /* 0x94a6 */ { false, 0x94a6, 0x94a6 }, /* 0x94a7 */ { false, 0x94a7, 0x94a7 }, /* 0x94a8 */ { false, 0x94a8, 0x94a8 }, /* 0x94a9 */ { false, 0x94a9, 0x94a9 }, /* 0x94aa */ { false, 0x94aa, 0x94aa }, /* 0x94ab */ { false, 0x94ab, 0x94ab }, /* 0x94ac */ { false, 0x94ac, 0x94ac }, /* 0x94ad */ { false, 0x94ad, 0x94ad }, /* 0x94ae */ { false, 0x94ae, 0x94ae }, /* 0x94af */ { false, 0x94af, 0x94af }, /* 0x94b0 */ { false, 0x94b0, 0x94b0 }, /* 0x94b1 */ { false, 0x94b1, 0x94b1 }, /* 0x94b2 */ { false, 0x94b2, 0x94b2 }, /* 0x94b3 */ { false, 0x94b3, 0x94b3 }, /* 0x94b4 */ { false, 0x94b4, 0x94b4 }, /* 0x94b5 */ { false, 0x94b5, 0x94b5 }, /* 0x94b6 */ { false, 0x94b6, 0x94b6 }, /* 0x94b7 */ { false, 0x94b7, 0x94b7 }, /* 0x94b8 */ { false, 0x94b8, 0x94b8 }, /* 0x94b9 */ { false, 0x94b9, 0x94b9 }, /* 0x94ba */ { false, 0x94ba, 0x94ba }, /* 0x94bb */ { false, 0x94bb, 0x94bb }, /* 0x94bc */ { false, 0x94bc, 0x94bc }, /* 0x94bd */ { false, 0x94bd, 0x94bd }, /* 0x94be */ { false, 0x94be, 0x94be }, /* 0x94bf */ { false, 0x94bf, 0x94bf }, /* 0x94c0 */ { false, 0x94c0, 0x94c0 }, /* 0x94c1 */ { false, 0x94c1, 0x94c1 }, /* 0x94c2 */ { false, 0x94c2, 0x94c2 }, /* 0x94c3 */ { false, 0x94c3, 0x94c3 }, /* 0x94c4 */ { false, 0x94c4, 0x94c4 }, /* 0x94c5 */ { false, 0x94c5, 0x94c5 }, /* 0x94c6 */ { false, 0x94c6, 0x94c6 }, /* 0x94c7 */ { false, 0x94c7, 0x94c7 }, /* 0x94c8 */ { false, 0x94c8, 0x94c8 }, /* 0x94c9 */ { false, 0x94c9, 0x94c9 }, /* 0x94ca */ { false, 0x94ca, 0x94ca }, /* 0x94cb */ { false, 0x94cb, 0x94cb }, /* 0x94cc */ { false, 0x94cc, 0x94cc }, /* 0x94cd */ { false, 0x94cd, 0x94cd }, /* 0x94ce */ { false, 0x94ce, 0x94ce }, /* 0x94cf */ { false, 0x94cf, 0x94cf }, /* 0x94d0 */ { false, 0x94d0, 0x94d0 }, /* 0x94d1 */ { false, 0x94d1, 0x94d1 }, /* 0x94d2 */ { false, 0x94d2, 0x94d2 }, /* 0x94d3 */ { false, 0x94d3, 0x94d3 }, /* 0x94d4 */ { false, 0x94d4, 0x94d4 }, /* 0x94d5 */ { false, 0x94d5, 0x94d5 }, /* 0x94d6 */ { false, 0x94d6, 0x94d6 }, /* 0x94d7 */ { false, 0x94d7, 0x94d7 }, /* 0x94d8 */ { false, 0x94d8, 0x94d8 }, /* 0x94d9 */ { false, 0x94d9, 0x94d9 }, /* 0x94da */ { false, 0x94da, 0x94da }, /* 0x94db */ { false, 0x94db, 0x94db }, /* 0x94dc */ { false, 0x94dc, 0x94dc }, /* 0x94dd */ { false, 0x94dd, 0x94dd }, /* 0x94de */ { false, 0x94de, 0x94de }, /* 0x94df */ { false, 0x94df, 0x94df }, /* 0x94e0 */ { false, 0x94e0, 0x94e0 }, /* 0x94e1 */ { false, 0x94e1, 0x94e1 }, /* 0x94e2 */ { false, 0x94e2, 0x94e2 }, /* 0x94e3 */ { false, 0x94e3, 0x94e3 }, /* 0x94e4 */ { false, 0x94e4, 0x94e4 }, /* 0x94e5 */ { false, 0x94e5, 0x94e5 }, /* 0x94e6 */ { false, 0x94e6, 0x94e6 }, /* 0x94e7 */ { false, 0x94e7, 0x94e7 }, /* 0x94e8 */ { false, 0x94e8, 0x94e8 }, /* 0x94e9 */ { false, 0x94e9, 0x94e9 }, /* 0x94ea */ { false, 0x94ea, 0x94ea }, /* 0x94eb */ { false, 0x94eb, 0x94eb }, /* 0x94ec */ { false, 0x94ec, 0x94ec }, /* 0x94ed */ { false, 0x94ed, 0x94ed }, /* 0x94ee */ { false, 0x94ee, 0x94ee }, /* 0x94ef */ { false, 0x94ef, 0x94ef }, /* 0x94f0 */ { false, 0x94f0, 0x94f0 }, /* 0x94f1 */ { false, 0x94f1, 0x94f1 }, /* 0x94f2 */ { false, 0x94f2, 0x94f2 }, /* 0x94f3 */ { false, 0x94f3, 0x94f3 }, /* 0x94f4 */ { false, 0x94f4, 0x94f4 }, /* 0x94f5 */ { false, 0x94f5, 0x94f5 }, /* 0x94f6 */ { false, 0x94f6, 0x94f6 }, /* 0x94f7 */ { false, 0x94f7, 0x94f7 }, /* 0x94f8 */ { false, 0x94f8, 0x94f8 }, /* 0x94f9 */ { false, 0x94f9, 0x94f9 }, /* 0x94fa */ { false, 0x94fa, 0x94fa }, /* 0x94fb */ { false, 0x94fb, 0x94fb }, /* 0x94fc */ { false, 0x94fc, 0x94fc }, /* 0x94fd */ { false, 0x94fd, 0x94fd }, /* 0x94fe */ { false, 0x94fe, 0x94fe }, /* 0x94ff */ { false, 0x94ff, 0x94ff }, /* 0x9500 */ { false, 0x9500, 0x9500 }, /* 0x9501 */ { false, 0x9501, 0x9501 }, /* 0x9502 */ { false, 0x9502, 0x9502 }, /* 0x9503 */ { false, 0x9503, 0x9503 }, /* 0x9504 */ { false, 0x9504, 0x9504 }, /* 0x9505 */ { false, 0x9505, 0x9505 }, /* 0x9506 */ { false, 0x9506, 0x9506 }, /* 0x9507 */ { false, 0x9507, 0x9507 }, /* 0x9508 */ { false, 0x9508, 0x9508 }, /* 0x9509 */ { false, 0x9509, 0x9509 }, /* 0x950a */ { false, 0x950a, 0x950a }, /* 0x950b */ { false, 0x950b, 0x950b }, /* 0x950c */ { false, 0x950c, 0x950c }, /* 0x950d */ { false, 0x950d, 0x950d }, /* 0x950e */ { false, 0x950e, 0x950e }, /* 0x950f */ { false, 0x950f, 0x950f }, /* 0x9510 */ { false, 0x9510, 0x9510 }, /* 0x9511 */ { false, 0x9511, 0x9511 }, /* 0x9512 */ { false, 0x9512, 0x9512 }, /* 0x9513 */ { false, 0x9513, 0x9513 }, /* 0x9514 */ { false, 0x9514, 0x9514 }, /* 0x9515 */ { false, 0x9515, 0x9515 }, /* 0x9516 */ { false, 0x9516, 0x9516 }, /* 0x9517 */ { false, 0x9517, 0x9517 }, /* 0x9518 */ { false, 0x9518, 0x9518 }, /* 0x9519 */ { false, 0x9519, 0x9519 }, /* 0x951a */ { false, 0x951a, 0x951a }, /* 0x951b */ { false, 0x951b, 0x951b }, /* 0x951c */ { false, 0x951c, 0x951c }, /* 0x951d */ { false, 0x951d, 0x951d }, /* 0x951e */ { false, 0x951e, 0x951e }, /* 0x951f */ { false, 0x951f, 0x951f }, /* 0x9520 */ { false, 0x9520, 0x9520 }, /* 0x9521 */ { false, 0x9521, 0x9521 }, /* 0x9522 */ { false, 0x9522, 0x9522 }, /* 0x9523 */ { false, 0x9523, 0x9523 }, /* 0x9524 */ { false, 0x9524, 0x9524 }, /* 0x9525 */ { false, 0x9525, 0x9525 }, /* 0x9526 */ { false, 0x9526, 0x9526 }, /* 0x9527 */ { false, 0x9527, 0x9527 }, /* 0x9528 */ { false, 0x9528, 0x9528 }, /* 0x9529 */ { false, 0x9529, 0x9529 }, /* 0x952a */ { false, 0x952a, 0x952a }, /* 0x952b */ { false, 0x952b, 0x952b }, /* 0x952c */ { false, 0x952c, 0x952c }, /* 0x952d */ { false, 0x952d, 0x952d }, /* 0x952e */ { false, 0x952e, 0x952e }, /* 0x952f */ { false, 0x952f, 0x952f }, /* 0x9530 */ { false, 0x9530, 0x9530 }, /* 0x9531 */ { false, 0x9531, 0x9531 }, /* 0x9532 */ { false, 0x9532, 0x9532 }, /* 0x9533 */ { false, 0x9533, 0x9533 }, /* 0x9534 */ { false, 0x9534, 0x9534 }, /* 0x9535 */ { false, 0x9535, 0x9535 }, /* 0x9536 */ { false, 0x9536, 0x9536 }, /* 0x9537 */ { false, 0x9537, 0x9537 }, /* 0x9538 */ { false, 0x9538, 0x9538 }, /* 0x9539 */ { false, 0x9539, 0x9539 }, /* 0x953a */ { false, 0x953a, 0x953a }, /* 0x953b */ { false, 0x953b, 0x953b }, /* 0x953c */ { false, 0x953c, 0x953c }, /* 0x953d */ { false, 0x953d, 0x953d }, /* 0x953e */ { false, 0x953e, 0x953e }, /* 0x953f */ { false, 0x953f, 0x953f }, /* 0x9540 */ { false, 0x9540, 0x9540 }, /* 0x9541 */ { false, 0x9541, 0x9541 }, /* 0x9542 */ { false, 0x9542, 0x9542 }, /* 0x9543 */ { false, 0x9543, 0x9543 }, /* 0x9544 */ { false, 0x9544, 0x9544 }, /* 0x9545 */ { false, 0x9545, 0x9545 }, /* 0x9546 */ { false, 0x9546, 0x9546 }, /* 0x9547 */ { false, 0x9547, 0x9547 }, /* 0x9548 */ { false, 0x9548, 0x9548 }, /* 0x9549 */ { false, 0x9549, 0x9549 }, /* 0x954a */ { false, 0x954a, 0x954a }, /* 0x954b */ { false, 0x954b, 0x954b }, /* 0x954c */ { false, 0x954c, 0x954c }, /* 0x954d */ { false, 0x954d, 0x954d }, /* 0x954e */ { false, 0x954e, 0x954e }, /* 0x954f */ { false, 0x954f, 0x954f }, /* 0x9550 */ { false, 0x9550, 0x9550 }, /* 0x9551 */ { false, 0x9551, 0x9551 }, /* 0x9552 */ { false, 0x9552, 0x9552 }, /* 0x9553 */ { false, 0x9553, 0x9553 }, /* 0x9554 */ { false, 0x9554, 0x9554 }, /* 0x9555 */ { false, 0x9555, 0x9555 }, /* 0x9556 */ { false, 0x9556, 0x9556 }, /* 0x9557 */ { false, 0x9557, 0x9557 }, /* 0x9558 */ { false, 0x9558, 0x9558 }, /* 0x9559 */ { false, 0x9559, 0x9559 }, /* 0x955a */ { false, 0x955a, 0x955a }, /* 0x955b */ { false, 0x955b, 0x955b }, /* 0x955c */ { false, 0x955c, 0x955c }, /* 0x955d */ { false, 0x955d, 0x955d }, /* 0x955e */ { false, 0x955e, 0x955e }, /* 0x955f */ { false, 0x955f, 0x955f }, /* 0x9560 */ { false, 0x9560, 0x9560 }, /* 0x9561 */ { false, 0x9561, 0x9561 }, /* 0x9562 */ { false, 0x9562, 0x9562 }, /* 0x9563 */ { false, 0x9563, 0x9563 }, /* 0x9564 */ { false, 0x9564, 0x9564 }, /* 0x9565 */ { false, 0x9565, 0x9565 }, /* 0x9566 */ { false, 0x9566, 0x9566 }, /* 0x9567 */ { false, 0x9567, 0x9567 }, /* 0x9568 */ { false, 0x9568, 0x9568 }, /* 0x9569 */ { false, 0x9569, 0x9569 }, /* 0x956a */ { false, 0x956a, 0x956a }, /* 0x956b */ { false, 0x956b, 0x956b }, /* 0x956c */ { false, 0x956c, 0x956c }, /* 0x956d */ { false, 0x956d, 0x956d }, /* 0x956e */ { false, 0x956e, 0x956e }, /* 0x956f */ { false, 0x956f, 0x956f }, /* 0x9570 */ { false, 0x9570, 0x9570 }, /* 0x9571 */ { false, 0x9571, 0x9571 }, /* 0x9572 */ { false, 0x9572, 0x9572 }, /* 0x9573 */ { false, 0x9573, 0x9573 }, /* 0x9574 */ { false, 0x9574, 0x9574 }, /* 0x9575 */ { false, 0x9575, 0x9575 }, /* 0x9576 */ { false, 0x9576, 0x9576 }, /* 0x9577 */ { false, 0x9577, 0x9577 }, /* 0x9578 */ { false, 0x9578, 0x9578 }, /* 0x9579 */ { false, 0x9579, 0x9579 }, /* 0x957a */ { false, 0x957a, 0x957a }, /* 0x957b */ { false, 0x957b, 0x957b }, /* 0x957c */ { false, 0x957c, 0x957c }, /* 0x957d */ { false, 0x957d, 0x957d }, /* 0x957e */ { false, 0x957e, 0x957e }, /* 0x957f */ { false, 0x957f, 0x957f }, /* 0x9580 */ { false, 0x9580, 0x9580 }, /* 0x9581 */ { false, 0x9581, 0x9581 }, /* 0x9582 */ { false, 0x9582, 0x9582 }, /* 0x9583 */ { false, 0x9583, 0x9583 }, /* 0x9584 */ { false, 0x9584, 0x9584 }, /* 0x9585 */ { false, 0x9585, 0x9585 }, /* 0x9586 */ { false, 0x9586, 0x9586 }, /* 0x9587 */ { false, 0x9587, 0x9587 }, /* 0x9588 */ { false, 0x9588, 0x9588 }, /* 0x9589 */ { false, 0x9589, 0x9589 }, /* 0x958a */ { false, 0x958a, 0x958a }, /* 0x958b */ { false, 0x958b, 0x958b }, /* 0x958c */ { false, 0x958c, 0x958c }, /* 0x958d */ { false, 0x958d, 0x958d }, /* 0x958e */ { false, 0x958e, 0x958e }, /* 0x958f */ { false, 0x958f, 0x958f }, /* 0x9590 */ { false, 0x9590, 0x9590 }, /* 0x9591 */ { false, 0x9591, 0x9591 }, /* 0x9592 */ { false, 0x9592, 0x9592 }, /* 0x9593 */ { false, 0x9593, 0x9593 }, /* 0x9594 */ { false, 0x9594, 0x9594 }, /* 0x9595 */ { false, 0x9595, 0x9595 }, /* 0x9596 */ { false, 0x9596, 0x9596 }, /* 0x9597 */ { false, 0x9597, 0x9597 }, /* 0x9598 */ { false, 0x9598, 0x9598 }, /* 0x9599 */ { false, 0x9599, 0x9599 }, /* 0x959a */ { false, 0x959a, 0x959a }, /* 0x959b */ { false, 0x959b, 0x959b }, /* 0x959c */ { false, 0x959c, 0x959c }, /* 0x959d */ { false, 0x959d, 0x959d }, /* 0x959e */ { false, 0x959e, 0x959e }, /* 0x959f */ { false, 0x959f, 0x959f }, /* 0x95a0 */ { false, 0x95a0, 0x95a0 }, /* 0x95a1 */ { false, 0x95a1, 0x95a1 }, /* 0x95a2 */ { false, 0x95a2, 0x95a2 }, /* 0x95a3 */ { false, 0x95a3, 0x95a3 }, /* 0x95a4 */ { false, 0x95a4, 0x95a4 }, /* 0x95a5 */ { false, 0x95a5, 0x95a5 }, /* 0x95a6 */ { false, 0x95a6, 0x95a6 }, /* 0x95a7 */ { false, 0x95a7, 0x95a7 }, /* 0x95a8 */ { false, 0x95a8, 0x95a8 }, /* 0x95a9 */ { false, 0x95a9, 0x95a9 }, /* 0x95aa */ { false, 0x95aa, 0x95aa }, /* 0x95ab */ { false, 0x95ab, 0x95ab }, /* 0x95ac */ { false, 0x95ac, 0x95ac }, /* 0x95ad */ { false, 0x95ad, 0x95ad }, /* 0x95ae */ { false, 0x95ae, 0x95ae }, /* 0x95af */ { false, 0x95af, 0x95af }, /* 0x95b0 */ { false, 0x95b0, 0x95b0 }, /* 0x95b1 */ { false, 0x95b1, 0x95b1 }, /* 0x95b2 */ { false, 0x95b2, 0x95b2 }, /* 0x95b3 */ { false, 0x95b3, 0x95b3 }, /* 0x95b4 */ { false, 0x95b4, 0x95b4 }, /* 0x95b5 */ { false, 0x95b5, 0x95b5 }, /* 0x95b6 */ { false, 0x95b6, 0x95b6 }, /* 0x95b7 */ { false, 0x95b7, 0x95b7 }, /* 0x95b8 */ { false, 0x95b8, 0x95b8 }, /* 0x95b9 */ { false, 0x95b9, 0x95b9 }, /* 0x95ba */ { false, 0x95ba, 0x95ba }, /* 0x95bb */ { false, 0x95bb, 0x95bb }, /* 0x95bc */ { false, 0x95bc, 0x95bc }, /* 0x95bd */ { false, 0x95bd, 0x95bd }, /* 0x95be */ { false, 0x95be, 0x95be }, /* 0x95bf */ { false, 0x95bf, 0x95bf }, /* 0x95c0 */ { false, 0x95c0, 0x95c0 }, /* 0x95c1 */ { false, 0x95c1, 0x95c1 }, /* 0x95c2 */ { false, 0x95c2, 0x95c2 }, /* 0x95c3 */ { false, 0x95c3, 0x95c3 }, /* 0x95c4 */ { false, 0x95c4, 0x95c4 }, /* 0x95c5 */ { false, 0x95c5, 0x95c5 }, /* 0x95c6 */ { false, 0x95c6, 0x95c6 }, /* 0x95c7 */ { false, 0x95c7, 0x95c7 }, /* 0x95c8 */ { false, 0x95c8, 0x95c8 }, /* 0x95c9 */ { false, 0x95c9, 0x95c9 }, /* 0x95ca */ { false, 0x95ca, 0x95ca }, /* 0x95cb */ { false, 0x95cb, 0x95cb }, /* 0x95cc */ { false, 0x95cc, 0x95cc }, /* 0x95cd */ { false, 0x95cd, 0x95cd }, /* 0x95ce */ { false, 0x95ce, 0x95ce }, /* 0x95cf */ { false, 0x95cf, 0x95cf }, /* 0x95d0 */ { false, 0x95d0, 0x95d0 }, /* 0x95d1 */ { false, 0x95d1, 0x95d1 }, /* 0x95d2 */ { false, 0x95d2, 0x95d2 }, /* 0x95d3 */ { false, 0x95d3, 0x95d3 }, /* 0x95d4 */ { false, 0x95d4, 0x95d4 }, /* 0x95d5 */ { false, 0x95d5, 0x95d5 }, /* 0x95d6 */ { false, 0x95d6, 0x95d6 }, /* 0x95d7 */ { false, 0x95d7, 0x95d7 }, /* 0x95d8 */ { false, 0x95d8, 0x95d8 }, /* 0x95d9 */ { false, 0x95d9, 0x95d9 }, /* 0x95da */ { false, 0x95da, 0x95da }, /* 0x95db */ { false, 0x95db, 0x95db }, /* 0x95dc */ { false, 0x95dc, 0x95dc }, /* 0x95dd */ { false, 0x95dd, 0x95dd }, /* 0x95de */ { false, 0x95de, 0x95de }, /* 0x95df */ { false, 0x95df, 0x95df }, /* 0x95e0 */ { false, 0x95e0, 0x95e0 }, /* 0x95e1 */ { false, 0x95e1, 0x95e1 }, /* 0x95e2 */ { false, 0x95e2, 0x95e2 }, /* 0x95e3 */ { false, 0x95e3, 0x95e3 }, /* 0x95e4 */ { false, 0x95e4, 0x95e4 }, /* 0x95e5 */ { false, 0x95e5, 0x95e5 }, /* 0x95e6 */ { false, 0x95e6, 0x95e6 }, /* 0x95e7 */ { false, 0x95e7, 0x95e7 }, /* 0x95e8 */ { false, 0x95e8, 0x95e8 }, /* 0x95e9 */ { false, 0x95e9, 0x95e9 }, /* 0x95ea */ { false, 0x95ea, 0x95ea }, /* 0x95eb */ { false, 0x95eb, 0x95eb }, /* 0x95ec */ { false, 0x95ec, 0x95ec }, /* 0x95ed */ { false, 0x95ed, 0x95ed }, /* 0x95ee */ { false, 0x95ee, 0x95ee }, /* 0x95ef */ { false, 0x95ef, 0x95ef }, /* 0x95f0 */ { false, 0x95f0, 0x95f0 }, /* 0x95f1 */ { false, 0x95f1, 0x95f1 }, /* 0x95f2 */ { false, 0x95f2, 0x95f2 }, /* 0x95f3 */ { false, 0x95f3, 0x95f3 }, /* 0x95f4 */ { false, 0x95f4, 0x95f4 }, /* 0x95f5 */ { false, 0x95f5, 0x95f5 }, /* 0x95f6 */ { false, 0x95f6, 0x95f6 }, /* 0x95f7 */ { false, 0x95f7, 0x95f7 }, /* 0x95f8 */ { false, 0x95f8, 0x95f8 }, /* 0x95f9 */ { false, 0x95f9, 0x95f9 }, /* 0x95fa */ { false, 0x95fa, 0x95fa }, /* 0x95fb */ { false, 0x95fb, 0x95fb }, /* 0x95fc */ { false, 0x95fc, 0x95fc }, /* 0x95fd */ { false, 0x95fd, 0x95fd }, /* 0x95fe */ { false, 0x95fe, 0x95fe }, /* 0x95ff */ { false, 0x95ff, 0x95ff }, /* 0x9600 */ { false, 0x9600, 0x9600 }, /* 0x9601 */ { false, 0x9601, 0x9601 }, /* 0x9602 */ { false, 0x9602, 0x9602 }, /* 0x9603 */ { false, 0x9603, 0x9603 }, /* 0x9604 */ { false, 0x9604, 0x9604 }, /* 0x9605 */ { false, 0x9605, 0x9605 }, /* 0x9606 */ { false, 0x9606, 0x9606 }, /* 0x9607 */ { false, 0x9607, 0x9607 }, /* 0x9608 */ { false, 0x9608, 0x9608 }, /* 0x9609 */ { false, 0x9609, 0x9609 }, /* 0x960a */ { false, 0x960a, 0x960a }, /* 0x960b */ { false, 0x960b, 0x960b }, /* 0x960c */ { false, 0x960c, 0x960c }, /* 0x960d */ { false, 0x960d, 0x960d }, /* 0x960e */ { false, 0x960e, 0x960e }, /* 0x960f */ { false, 0x960f, 0x960f }, /* 0x9610 */ { false, 0x9610, 0x9610 }, /* 0x9611 */ { false, 0x9611, 0x9611 }, /* 0x9612 */ { false, 0x9612, 0x9612 }, /* 0x9613 */ { false, 0x9613, 0x9613 }, /* 0x9614 */ { false, 0x9614, 0x9614 }, /* 0x9615 */ { false, 0x9615, 0x9615 }, /* 0x9616 */ { false, 0x9616, 0x9616 }, /* 0x9617 */ { false, 0x9617, 0x9617 }, /* 0x9618 */ { false, 0x9618, 0x9618 }, /* 0x9619 */ { false, 0x9619, 0x9619 }, /* 0x961a */ { false, 0x961a, 0x961a }, /* 0x961b */ { false, 0x961b, 0x961b }, /* 0x961c */ { false, 0x961c, 0x961c }, /* 0x961d */ { false, 0x961d, 0x961d }, /* 0x961e */ { false, 0x961e, 0x961e }, /* 0x961f */ { false, 0x961f, 0x961f }, /* 0x9620 */ { false, 0x9620, 0x9620 }, /* 0x9621 */ { false, 0x9621, 0x9621 }, /* 0x9622 */ { false, 0x9622, 0x9622 }, /* 0x9623 */ { false, 0x9623, 0x9623 }, /* 0x9624 */ { false, 0x9624, 0x9624 }, /* 0x9625 */ { false, 0x9625, 0x9625 }, /* 0x9626 */ { false, 0x9626, 0x9626 }, /* 0x9627 */ { false, 0x9627, 0x9627 }, /* 0x9628 */ { false, 0x9628, 0x9628 }, /* 0x9629 */ { false, 0x9629, 0x9629 }, /* 0x962a */ { false, 0x962a, 0x962a }, /* 0x962b */ { false, 0x962b, 0x962b }, /* 0x962c */ { false, 0x962c, 0x962c }, /* 0x962d */ { false, 0x962d, 0x962d }, /* 0x962e */ { false, 0x962e, 0x962e }, /* 0x962f */ { false, 0x962f, 0x962f }, /* 0x9630 */ { false, 0x9630, 0x9630 }, /* 0x9631 */ { false, 0x9631, 0x9631 }, /* 0x9632 */ { false, 0x9632, 0x9632 }, /* 0x9633 */ { false, 0x9633, 0x9633 }, /* 0x9634 */ { false, 0x9634, 0x9634 }, /* 0x9635 */ { false, 0x9635, 0x9635 }, /* 0x9636 */ { false, 0x9636, 0x9636 }, /* 0x9637 */ { false, 0x9637, 0x9637 }, /* 0x9638 */ { false, 0x9638, 0x9638 }, /* 0x9639 */ { false, 0x9639, 0x9639 }, /* 0x963a */ { false, 0x963a, 0x963a }, /* 0x963b */ { false, 0x963b, 0x963b }, /* 0x963c */ { false, 0x963c, 0x963c }, /* 0x963d */ { false, 0x963d, 0x963d }, /* 0x963e */ { false, 0x963e, 0x963e }, /* 0x963f */ { false, 0x963f, 0x963f }, /* 0x9640 */ { false, 0x9640, 0x9640 }, /* 0x9641 */ { false, 0x9641, 0x9641 }, /* 0x9642 */ { false, 0x9642, 0x9642 }, /* 0x9643 */ { false, 0x9643, 0x9643 }, /* 0x9644 */ { false, 0x9644, 0x9644 }, /* 0x9645 */ { false, 0x9645, 0x9645 }, /* 0x9646 */ { false, 0x9646, 0x9646 }, /* 0x9647 */ { false, 0x9647, 0x9647 }, /* 0x9648 */ { false, 0x9648, 0x9648 }, /* 0x9649 */ { false, 0x9649, 0x9649 }, /* 0x964a */ { false, 0x964a, 0x964a }, /* 0x964b */ { false, 0x964b, 0x964b }, /* 0x964c */ { false, 0x964c, 0x964c }, /* 0x964d */ { false, 0x964d, 0x964d }, /* 0x964e */ { false, 0x964e, 0x964e }, /* 0x964f */ { false, 0x964f, 0x964f }, /* 0x9650 */ { false, 0x9650, 0x9650 }, /* 0x9651 */ { false, 0x9651, 0x9651 }, /* 0x9652 */ { false, 0x9652, 0x9652 }, /* 0x9653 */ { false, 0x9653, 0x9653 }, /* 0x9654 */ { false, 0x9654, 0x9654 }, /* 0x9655 */ { false, 0x9655, 0x9655 }, /* 0x9656 */ { false, 0x9656, 0x9656 }, /* 0x9657 */ { false, 0x9657, 0x9657 }, /* 0x9658 */ { false, 0x9658, 0x9658 }, /* 0x9659 */ { false, 0x9659, 0x9659 }, /* 0x965a */ { false, 0x965a, 0x965a }, /* 0x965b */ { false, 0x965b, 0x965b }, /* 0x965c */ { false, 0x965c, 0x965c }, /* 0x965d */ { false, 0x965d, 0x965d }, /* 0x965e */ { false, 0x965e, 0x965e }, /* 0x965f */ { false, 0x965f, 0x965f }, /* 0x9660 */ { false, 0x9660, 0x9660 }, /* 0x9661 */ { false, 0x9661, 0x9661 }, /* 0x9662 */ { false, 0x9662, 0x9662 }, /* 0x9663 */ { false, 0x9663, 0x9663 }, /* 0x9664 */ { false, 0x9664, 0x9664 }, /* 0x9665 */ { false, 0x9665, 0x9665 }, /* 0x9666 */ { false, 0x9666, 0x9666 }, /* 0x9667 */ { false, 0x9667, 0x9667 }, /* 0x9668 */ { false, 0x9668, 0x9668 }, /* 0x9669 */ { false, 0x9669, 0x9669 }, /* 0x966a */ { false, 0x966a, 0x966a }, /* 0x966b */ { false, 0x966b, 0x966b }, /* 0x966c */ { false, 0x966c, 0x966c }, /* 0x966d */ { false, 0x966d, 0x966d }, /* 0x966e */ { false, 0x966e, 0x966e }, /* 0x966f */ { false, 0x966f, 0x966f }, /* 0x9670 */ { false, 0x9670, 0x9670 }, /* 0x9671 */ { false, 0x9671, 0x9671 }, /* 0x9672 */ { false, 0x9672, 0x9672 }, /* 0x9673 */ { false, 0x9673, 0x9673 }, /* 0x9674 */ { false, 0x9674, 0x9674 }, /* 0x9675 */ { false, 0x9675, 0x9675 }, /* 0x9676 */ { false, 0x9676, 0x9676 }, /* 0x9677 */ { false, 0x9677, 0x9677 }, /* 0x9678 */ { false, 0x9678, 0x9678 }, /* 0x9679 */ { false, 0x9679, 0x9679 }, /* 0x967a */ { false, 0x967a, 0x967a }, /* 0x967b */ { false, 0x967b, 0x967b }, /* 0x967c */ { false, 0x967c, 0x967c }, /* 0x967d */ { false, 0x967d, 0x967d }, /* 0x967e */ { false, 0x967e, 0x967e }, /* 0x967f */ { false, 0x967f, 0x967f }, /* 0x9680 */ { false, 0x9680, 0x9680 }, /* 0x9681 */ { false, 0x9681, 0x9681 }, /* 0x9682 */ { false, 0x9682, 0x9682 }, /* 0x9683 */ { false, 0x9683, 0x9683 }, /* 0x9684 */ { false, 0x9684, 0x9684 }, /* 0x9685 */ { false, 0x9685, 0x9685 }, /* 0x9686 */ { false, 0x9686, 0x9686 }, /* 0x9687 */ { false, 0x9687, 0x9687 }, /* 0x9688 */ { false, 0x9688, 0x9688 }, /* 0x9689 */ { false, 0x9689, 0x9689 }, /* 0x968a */ { false, 0x968a, 0x968a }, /* 0x968b */ { false, 0x968b, 0x968b }, /* 0x968c */ { false, 0x968c, 0x968c }, /* 0x968d */ { false, 0x968d, 0x968d }, /* 0x968e */ { false, 0x968e, 0x968e }, /* 0x968f */ { false, 0x968f, 0x968f }, /* 0x9690 */ { false, 0x9690, 0x9690 }, /* 0x9691 */ { false, 0x9691, 0x9691 }, /* 0x9692 */ { false, 0x9692, 0x9692 }, /* 0x9693 */ { false, 0x9693, 0x9693 }, /* 0x9694 */ { false, 0x9694, 0x9694 }, /* 0x9695 */ { false, 0x9695, 0x9695 }, /* 0x9696 */ { false, 0x9696, 0x9696 }, /* 0x9697 */ { false, 0x9697, 0x9697 }, /* 0x9698 */ { false, 0x9698, 0x9698 }, /* 0x9699 */ { false, 0x9699, 0x9699 }, /* 0x969a */ { false, 0x969a, 0x969a }, /* 0x969b */ { false, 0x969b, 0x969b }, /* 0x969c */ { false, 0x969c, 0x969c }, /* 0x969d */ { false, 0x969d, 0x969d }, /* 0x969e */ { false, 0x969e, 0x969e }, /* 0x969f */ { false, 0x969f, 0x969f }, /* 0x96a0 */ { false, 0x96a0, 0x96a0 }, /* 0x96a1 */ { false, 0x96a1, 0x96a1 }, /* 0x96a2 */ { false, 0x96a2, 0x96a2 }, /* 0x96a3 */ { false, 0x96a3, 0x96a3 }, /* 0x96a4 */ { false, 0x96a4, 0x96a4 }, /* 0x96a5 */ { false, 0x96a5, 0x96a5 }, /* 0x96a6 */ { false, 0x96a6, 0x96a6 }, /* 0x96a7 */ { false, 0x96a7, 0x96a7 }, /* 0x96a8 */ { false, 0x96a8, 0x96a8 }, /* 0x96a9 */ { false, 0x96a9, 0x96a9 }, /* 0x96aa */ { false, 0x96aa, 0x96aa }, /* 0x96ab */ { false, 0x96ab, 0x96ab }, /* 0x96ac */ { false, 0x96ac, 0x96ac }, /* 0x96ad */ { false, 0x96ad, 0x96ad }, /* 0x96ae */ { false, 0x96ae, 0x96ae }, /* 0x96af */ { false, 0x96af, 0x96af }, /* 0x96b0 */ { false, 0x96b0, 0x96b0 }, /* 0x96b1 */ { false, 0x96b1, 0x96b1 }, /* 0x96b2 */ { false, 0x96b2, 0x96b2 }, /* 0x96b3 */ { false, 0x96b3, 0x96b3 }, /* 0x96b4 */ { false, 0x96b4, 0x96b4 }, /* 0x96b5 */ { false, 0x96b5, 0x96b5 }, /* 0x96b6 */ { false, 0x96b6, 0x96b6 }, /* 0x96b7 */ { false, 0x96b7, 0x96b7 }, /* 0x96b8 */ { false, 0x96b8, 0x96b8 }, /* 0x96b9 */ { false, 0x96b9, 0x96b9 }, /* 0x96ba */ { false, 0x96ba, 0x96ba }, /* 0x96bb */ { false, 0x96bb, 0x96bb }, /* 0x96bc */ { false, 0x96bc, 0x96bc }, /* 0x96bd */ { false, 0x96bd, 0x96bd }, /* 0x96be */ { false, 0x96be, 0x96be }, /* 0x96bf */ { false, 0x96bf, 0x96bf }, /* 0x96c0 */ { false, 0x96c0, 0x96c0 }, /* 0x96c1 */ { false, 0x96c1, 0x96c1 }, /* 0x96c2 */ { false, 0x96c2, 0x96c2 }, /* 0x96c3 */ { false, 0x96c3, 0x96c3 }, /* 0x96c4 */ { false, 0x96c4, 0x96c4 }, /* 0x96c5 */ { false, 0x96c5, 0x96c5 }, /* 0x96c6 */ { false, 0x96c6, 0x96c6 }, /* 0x96c7 */ { false, 0x96c7, 0x96c7 }, /* 0x96c8 */ { false, 0x96c8, 0x96c8 }, /* 0x96c9 */ { false, 0x96c9, 0x96c9 }, /* 0x96ca */ { false, 0x96ca, 0x96ca }, /* 0x96cb */ { false, 0x96cb, 0x96cb }, /* 0x96cc */ { false, 0x96cc, 0x96cc }, /* 0x96cd */ { false, 0x96cd, 0x96cd }, /* 0x96ce */ { false, 0x96ce, 0x96ce }, /* 0x96cf */ { false, 0x96cf, 0x96cf }, /* 0x96d0 */ { false, 0x96d0, 0x96d0 }, /* 0x96d1 */ { false, 0x96d1, 0x96d1 }, /* 0x96d2 */ { false, 0x96d2, 0x96d2 }, /* 0x96d3 */ { false, 0x96d3, 0x96d3 }, /* 0x96d4 */ { false, 0x96d4, 0x96d4 }, /* 0x96d5 */ { false, 0x96d5, 0x96d5 }, /* 0x96d6 */ { false, 0x96d6, 0x96d6 }, /* 0x96d7 */ { false, 0x96d7, 0x96d7 }, /* 0x96d8 */ { false, 0x96d8, 0x96d8 }, /* 0x96d9 */ { false, 0x96d9, 0x96d9 }, /* 0x96da */ { false, 0x96da, 0x96da }, /* 0x96db */ { false, 0x96db, 0x96db }, /* 0x96dc */ { false, 0x96dc, 0x96dc }, /* 0x96dd */ { false, 0x96dd, 0x96dd }, /* 0x96de */ { false, 0x96de, 0x96de }, /* 0x96df */ { false, 0x96df, 0x96df }, /* 0x96e0 */ { false, 0x96e0, 0x96e0 }, /* 0x96e1 */ { false, 0x96e1, 0x96e1 }, /* 0x96e2 */ { false, 0x96e2, 0x96e2 }, /* 0x96e3 */ { false, 0x96e3, 0x96e3 }, /* 0x96e4 */ { false, 0x96e4, 0x96e4 }, /* 0x96e5 */ { false, 0x96e5, 0x96e5 }, /* 0x96e6 */ { false, 0x96e6, 0x96e6 }, /* 0x96e7 */ { false, 0x96e7, 0x96e7 }, /* 0x96e8 */ { false, 0x96e8, 0x96e8 }, /* 0x96e9 */ { false, 0x96e9, 0x96e9 }, /* 0x96ea */ { false, 0x96ea, 0x96ea }, /* 0x96eb */ { false, 0x96eb, 0x96eb }, /* 0x96ec */ { false, 0x96ec, 0x96ec }, /* 0x96ed */ { false, 0x96ed, 0x96ed }, /* 0x96ee */ { false, 0x96ee, 0x96ee }, /* 0x96ef */ { false, 0x96ef, 0x96ef }, /* 0x96f0 */ { false, 0x96f0, 0x96f0 }, /* 0x96f1 */ { false, 0x96f1, 0x96f1 }, /* 0x96f2 */ { false, 0x96f2, 0x96f2 }, /* 0x96f3 */ { false, 0x96f3, 0x96f3 }, /* 0x96f4 */ { false, 0x96f4, 0x96f4 }, /* 0x96f5 */ { false, 0x96f5, 0x96f5 }, /* 0x96f6 */ { false, 0x96f6, 0x96f6 }, /* 0x96f7 */ { false, 0x96f7, 0x96f7 }, /* 0x96f8 */ { false, 0x96f8, 0x96f8 }, /* 0x96f9 */ { false, 0x96f9, 0x96f9 }, /* 0x96fa */ { false, 0x96fa, 0x96fa }, /* 0x96fb */ { false, 0x96fb, 0x96fb }, /* 0x96fc */ { false, 0x96fc, 0x96fc }, /* 0x96fd */ { false, 0x96fd, 0x96fd }, /* 0x96fe */ { false, 0x96fe, 0x96fe }, /* 0x96ff */ { false, 0x96ff, 0x96ff }, /* 0x9700 */ { false, 0x9700, 0x9700 }, /* 0x9701 */ { false, 0x9701, 0x9701 }, /* 0x9702 */ { false, 0x9702, 0x9702 }, /* 0x9703 */ { false, 0x9703, 0x9703 }, /* 0x9704 */ { false, 0x9704, 0x9704 }, /* 0x9705 */ { false, 0x9705, 0x9705 }, /* 0x9706 */ { false, 0x9706, 0x9706 }, /* 0x9707 */ { false, 0x9707, 0x9707 }, /* 0x9708 */ { false, 0x9708, 0x9708 }, /* 0x9709 */ { false, 0x9709, 0x9709 }, /* 0x970a */ { false, 0x970a, 0x970a }, /* 0x970b */ { false, 0x970b, 0x970b }, /* 0x970c */ { false, 0x970c, 0x970c }, /* 0x970d */ { false, 0x970d, 0x970d }, /* 0x970e */ { false, 0x970e, 0x970e }, /* 0x970f */ { false, 0x970f, 0x970f }, /* 0x9710 */ { false, 0x9710, 0x9710 }, /* 0x9711 */ { false, 0x9711, 0x9711 }, /* 0x9712 */ { false, 0x9712, 0x9712 }, /* 0x9713 */ { false, 0x9713, 0x9713 }, /* 0x9714 */ { false, 0x9714, 0x9714 }, /* 0x9715 */ { false, 0x9715, 0x9715 }, /* 0x9716 */ { false, 0x9716, 0x9716 }, /* 0x9717 */ { false, 0x9717, 0x9717 }, /* 0x9718 */ { false, 0x9718, 0x9718 }, /* 0x9719 */ { false, 0x9719, 0x9719 }, /* 0x971a */ { false, 0x971a, 0x971a }, /* 0x971b */ { false, 0x971b, 0x971b }, /* 0x971c */ { false, 0x971c, 0x971c }, /* 0x971d */ { false, 0x971d, 0x971d }, /* 0x971e */ { false, 0x971e, 0x971e }, /* 0x971f */ { false, 0x971f, 0x971f }, /* 0x9720 */ { false, 0x9720, 0x9720 }, /* 0x9721 */ { false, 0x9721, 0x9721 }, /* 0x9722 */ { false, 0x9722, 0x9722 }, /* 0x9723 */ { false, 0x9723, 0x9723 }, /* 0x9724 */ { false, 0x9724, 0x9724 }, /* 0x9725 */ { false, 0x9725, 0x9725 }, /* 0x9726 */ { false, 0x9726, 0x9726 }, /* 0x9727 */ { false, 0x9727, 0x9727 }, /* 0x9728 */ { false, 0x9728, 0x9728 }, /* 0x9729 */ { false, 0x9729, 0x9729 }, /* 0x972a */ { false, 0x972a, 0x972a }, /* 0x972b */ { false, 0x972b, 0x972b }, /* 0x972c */ { false, 0x972c, 0x972c }, /* 0x972d */ { false, 0x972d, 0x972d }, /* 0x972e */ { false, 0x972e, 0x972e }, /* 0x972f */ { false, 0x972f, 0x972f }, /* 0x9730 */ { false, 0x9730, 0x9730 }, /* 0x9731 */ { false, 0x9731, 0x9731 }, /* 0x9732 */ { false, 0x9732, 0x9732 }, /* 0x9733 */ { false, 0x9733, 0x9733 }, /* 0x9734 */ { false, 0x9734, 0x9734 }, /* 0x9735 */ { false, 0x9735, 0x9735 }, /* 0x9736 */ { false, 0x9736, 0x9736 }, /* 0x9737 */ { false, 0x9737, 0x9737 }, /* 0x9738 */ { false, 0x9738, 0x9738 }, /* 0x9739 */ { false, 0x9739, 0x9739 }, /* 0x973a */ { false, 0x973a, 0x973a }, /* 0x973b */ { false, 0x973b, 0x973b }, /* 0x973c */ { false, 0x973c, 0x973c }, /* 0x973d */ { false, 0x973d, 0x973d }, /* 0x973e */ { false, 0x973e, 0x973e }, /* 0x973f */ { false, 0x973f, 0x973f }, /* 0x9740 */ { false, 0x9740, 0x9740 }, /* 0x9741 */ { false, 0x9741, 0x9741 }, /* 0x9742 */ { false, 0x9742, 0x9742 }, /* 0x9743 */ { false, 0x9743, 0x9743 }, /* 0x9744 */ { false, 0x9744, 0x9744 }, /* 0x9745 */ { false, 0x9745, 0x9745 }, /* 0x9746 */ { false, 0x9746, 0x9746 }, /* 0x9747 */ { false, 0x9747, 0x9747 }, /* 0x9748 */ { false, 0x9748, 0x9748 }, /* 0x9749 */ { false, 0x9749, 0x9749 }, /* 0x974a */ { false, 0x974a, 0x974a }, /* 0x974b */ { false, 0x974b, 0x974b }, /* 0x974c */ { false, 0x974c, 0x974c }, /* 0x974d */ { false, 0x974d, 0x974d }, /* 0x974e */ { false, 0x974e, 0x974e }, /* 0x974f */ { false, 0x974f, 0x974f }, /* 0x9750 */ { false, 0x9750, 0x9750 }, /* 0x9751 */ { false, 0x9751, 0x9751 }, /* 0x9752 */ { false, 0x9752, 0x9752 }, /* 0x9753 */ { false, 0x9753, 0x9753 }, /* 0x9754 */ { false, 0x9754, 0x9754 }, /* 0x9755 */ { false, 0x9755, 0x9755 }, /* 0x9756 */ { false, 0x9756, 0x9756 }, /* 0x9757 */ { false, 0x9757, 0x9757 }, /* 0x9758 */ { false, 0x9758, 0x9758 }, /* 0x9759 */ { false, 0x9759, 0x9759 }, /* 0x975a */ { false, 0x975a, 0x975a }, /* 0x975b */ { false, 0x975b, 0x975b }, /* 0x975c */ { false, 0x975c, 0x975c }, /* 0x975d */ { false, 0x975d, 0x975d }, /* 0x975e */ { false, 0x975e, 0x975e }, /* 0x975f */ { false, 0x975f, 0x975f }, /* 0x9760 */ { false, 0x9760, 0x9760 }, /* 0x9761 */ { false, 0x9761, 0x9761 }, /* 0x9762 */ { false, 0x9762, 0x9762 }, /* 0x9763 */ { false, 0x9763, 0x9763 }, /* 0x9764 */ { false, 0x9764, 0x9764 }, /* 0x9765 */ { false, 0x9765, 0x9765 }, /* 0x9766 */ { false, 0x9766, 0x9766 }, /* 0x9767 */ { false, 0x9767, 0x9767 }, /* 0x9768 */ { false, 0x9768, 0x9768 }, /* 0x9769 */ { false, 0x9769, 0x9769 }, /* 0x976a */ { false, 0x976a, 0x976a }, /* 0x976b */ { false, 0x976b, 0x976b }, /* 0x976c */ { false, 0x976c, 0x976c }, /* 0x976d */ { false, 0x976d, 0x976d }, /* 0x976e */ { false, 0x976e, 0x976e }, /* 0x976f */ { false, 0x976f, 0x976f }, /* 0x9770 */ { false, 0x9770, 0x9770 }, /* 0x9771 */ { false, 0x9771, 0x9771 }, /* 0x9772 */ { false, 0x9772, 0x9772 }, /* 0x9773 */ { false, 0x9773, 0x9773 }, /* 0x9774 */ { false, 0x9774, 0x9774 }, /* 0x9775 */ { false, 0x9775, 0x9775 }, /* 0x9776 */ { false, 0x9776, 0x9776 }, /* 0x9777 */ { false, 0x9777, 0x9777 }, /* 0x9778 */ { false, 0x9778, 0x9778 }, /* 0x9779 */ { false, 0x9779, 0x9779 }, /* 0x977a */ { false, 0x977a, 0x977a }, /* 0x977b */ { false, 0x977b, 0x977b }, /* 0x977c */ { false, 0x977c, 0x977c }, /* 0x977d */ { false, 0x977d, 0x977d }, /* 0x977e */ { false, 0x977e, 0x977e }, /* 0x977f */ { false, 0x977f, 0x977f }, /* 0x9780 */ { false, 0x9780, 0x9780 }, /* 0x9781 */ { false, 0x9781, 0x9781 }, /* 0x9782 */ { false, 0x9782, 0x9782 }, /* 0x9783 */ { false, 0x9783, 0x9783 }, /* 0x9784 */ { false, 0x9784, 0x9784 }, /* 0x9785 */ { false, 0x9785, 0x9785 }, /* 0x9786 */ { false, 0x9786, 0x9786 }, /* 0x9787 */ { false, 0x9787, 0x9787 }, /* 0x9788 */ { false, 0x9788, 0x9788 }, /* 0x9789 */ { false, 0x9789, 0x9789 }, /* 0x978a */ { false, 0x978a, 0x978a }, /* 0x978b */ { false, 0x978b, 0x978b }, /* 0x978c */ { false, 0x978c, 0x978c }, /* 0x978d */ { false, 0x978d, 0x978d }, /* 0x978e */ { false, 0x978e, 0x978e }, /* 0x978f */ { false, 0x978f, 0x978f }, /* 0x9790 */ { false, 0x9790, 0x9790 }, /* 0x9791 */ { false, 0x9791, 0x9791 }, /* 0x9792 */ { false, 0x9792, 0x9792 }, /* 0x9793 */ { false, 0x9793, 0x9793 }, /* 0x9794 */ { false, 0x9794, 0x9794 }, /* 0x9795 */ { false, 0x9795, 0x9795 }, /* 0x9796 */ { false, 0x9796, 0x9796 }, /* 0x9797 */ { false, 0x9797, 0x9797 }, /* 0x9798 */ { false, 0x9798, 0x9798 }, /* 0x9799 */ { false, 0x9799, 0x9799 }, /* 0x979a */ { false, 0x979a, 0x979a }, /* 0x979b */ { false, 0x979b, 0x979b }, /* 0x979c */ { false, 0x979c, 0x979c }, /* 0x979d */ { false, 0x979d, 0x979d }, /* 0x979e */ { false, 0x979e, 0x979e }, /* 0x979f */ { false, 0x979f, 0x979f }, /* 0x97a0 */ { false, 0x97a0, 0x97a0 }, /* 0x97a1 */ { false, 0x97a1, 0x97a1 }, /* 0x97a2 */ { false, 0x97a2, 0x97a2 }, /* 0x97a3 */ { false, 0x97a3, 0x97a3 }, /* 0x97a4 */ { false, 0x97a4, 0x97a4 }, /* 0x97a5 */ { false, 0x97a5, 0x97a5 }, /* 0x97a6 */ { false, 0x97a6, 0x97a6 }, /* 0x97a7 */ { false, 0x97a7, 0x97a7 }, /* 0x97a8 */ { false, 0x97a8, 0x97a8 }, /* 0x97a9 */ { false, 0x97a9, 0x97a9 }, /* 0x97aa */ { false, 0x97aa, 0x97aa }, /* 0x97ab */ { false, 0x97ab, 0x97ab }, /* 0x97ac */ { false, 0x97ac, 0x97ac }, /* 0x97ad */ { false, 0x97ad, 0x97ad }, /* 0x97ae */ { false, 0x97ae, 0x97ae }, /* 0x97af */ { false, 0x97af, 0x97af }, /* 0x97b0 */ { false, 0x97b0, 0x97b0 }, /* 0x97b1 */ { false, 0x97b1, 0x97b1 }, /* 0x97b2 */ { false, 0x97b2, 0x97b2 }, /* 0x97b3 */ { false, 0x97b3, 0x97b3 }, /* 0x97b4 */ { false, 0x97b4, 0x97b4 }, /* 0x97b5 */ { false, 0x97b5, 0x97b5 }, /* 0x97b6 */ { false, 0x97b6, 0x97b6 }, /* 0x97b7 */ { false, 0x97b7, 0x97b7 }, /* 0x97b8 */ { false, 0x97b8, 0x97b8 }, /* 0x97b9 */ { false, 0x97b9, 0x97b9 }, /* 0x97ba */ { false, 0x97ba, 0x97ba }, /* 0x97bb */ { false, 0x97bb, 0x97bb }, /* 0x97bc */ { false, 0x97bc, 0x97bc }, /* 0x97bd */ { false, 0x97bd, 0x97bd }, /* 0x97be */ { false, 0x97be, 0x97be }, /* 0x97bf */ { false, 0x97bf, 0x97bf }, /* 0x97c0 */ { false, 0x97c0, 0x97c0 }, /* 0x97c1 */ { false, 0x97c1, 0x97c1 }, /* 0x97c2 */ { false, 0x97c2, 0x97c2 }, /* 0x97c3 */ { false, 0x97c3, 0x97c3 }, /* 0x97c4 */ { false, 0x97c4, 0x97c4 }, /* 0x97c5 */ { false, 0x97c5, 0x97c5 }, /* 0x97c6 */ { false, 0x97c6, 0x97c6 }, /* 0x97c7 */ { false, 0x97c7, 0x97c7 }, /* 0x97c8 */ { false, 0x97c8, 0x97c8 }, /* 0x97c9 */ { false, 0x97c9, 0x97c9 }, /* 0x97ca */ { false, 0x97ca, 0x97ca }, /* 0x97cb */ { false, 0x97cb, 0x97cb }, /* 0x97cc */ { false, 0x97cc, 0x97cc }, /* 0x97cd */ { false, 0x97cd, 0x97cd }, /* 0x97ce */ { false, 0x97ce, 0x97ce }, /* 0x97cf */ { false, 0x97cf, 0x97cf }, /* 0x97d0 */ { false, 0x97d0, 0x97d0 }, /* 0x97d1 */ { false, 0x97d1, 0x97d1 }, /* 0x97d2 */ { false, 0x97d2, 0x97d2 }, /* 0x97d3 */ { false, 0x97d3, 0x97d3 }, /* 0x97d4 */ { false, 0x97d4, 0x97d4 }, /* 0x97d5 */ { false, 0x97d5, 0x97d5 }, /* 0x97d6 */ { false, 0x97d6, 0x97d6 }, /* 0x97d7 */ { false, 0x97d7, 0x97d7 }, /* 0x97d8 */ { false, 0x97d8, 0x97d8 }, /* 0x97d9 */ { false, 0x97d9, 0x97d9 }, /* 0x97da */ { false, 0x97da, 0x97da }, /* 0x97db */ { false, 0x97db, 0x97db }, /* 0x97dc */ { false, 0x97dc, 0x97dc }, /* 0x97dd */ { false, 0x97dd, 0x97dd }, /* 0x97de */ { false, 0x97de, 0x97de }, /* 0x97df */ { false, 0x97df, 0x97df }, /* 0x97e0 */ { false, 0x97e0, 0x97e0 }, /* 0x97e1 */ { false, 0x97e1, 0x97e1 }, /* 0x97e2 */ { false, 0x97e2, 0x97e2 }, /* 0x97e3 */ { false, 0x97e3, 0x97e3 }, /* 0x97e4 */ { false, 0x97e4, 0x97e4 }, /* 0x97e5 */ { false, 0x97e5, 0x97e5 }, /* 0x97e6 */ { false, 0x97e6, 0x97e6 }, /* 0x97e7 */ { false, 0x97e7, 0x97e7 }, /* 0x97e8 */ { false, 0x97e8, 0x97e8 }, /* 0x97e9 */ { false, 0x97e9, 0x97e9 }, /* 0x97ea */ { false, 0x97ea, 0x97ea }, /* 0x97eb */ { false, 0x97eb, 0x97eb }, /* 0x97ec */ { false, 0x97ec, 0x97ec }, /* 0x97ed */ { false, 0x97ed, 0x97ed }, /* 0x97ee */ { false, 0x97ee, 0x97ee }, /* 0x97ef */ { false, 0x97ef, 0x97ef }, /* 0x97f0 */ { false, 0x97f0, 0x97f0 }, /* 0x97f1 */ { false, 0x97f1, 0x97f1 }, /* 0x97f2 */ { false, 0x97f2, 0x97f2 }, /* 0x97f3 */ { false, 0x97f3, 0x97f3 }, /* 0x97f4 */ { false, 0x97f4, 0x97f4 }, /* 0x97f5 */ { false, 0x97f5, 0x97f5 }, /* 0x97f6 */ { false, 0x97f6, 0x97f6 }, /* 0x97f7 */ { false, 0x97f7, 0x97f7 }, /* 0x97f8 */ { false, 0x97f8, 0x97f8 }, /* 0x97f9 */ { false, 0x97f9, 0x97f9 }, /* 0x97fa */ { false, 0x97fa, 0x97fa }, /* 0x97fb */ { false, 0x97fb, 0x97fb }, /* 0x97fc */ { false, 0x97fc, 0x97fc }, /* 0x97fd */ { false, 0x97fd, 0x97fd }, /* 0x97fe */ { false, 0x97fe, 0x97fe }, /* 0x97ff */ { false, 0x97ff, 0x97ff }, /* 0x9800 */ { false, 0x9800, 0x9800 }, /* 0x9801 */ { false, 0x9801, 0x9801 }, /* 0x9802 */ { false, 0x9802, 0x9802 }, /* 0x9803 */ { false, 0x9803, 0x9803 }, /* 0x9804 */ { false, 0x9804, 0x9804 }, /* 0x9805 */ { false, 0x9805, 0x9805 }, /* 0x9806 */ { false, 0x9806, 0x9806 }, /* 0x9807 */ { false, 0x9807, 0x9807 }, /* 0x9808 */ { false, 0x9808, 0x9808 }, /* 0x9809 */ { false, 0x9809, 0x9809 }, /* 0x980a */ { false, 0x980a, 0x980a }, /* 0x980b */ { false, 0x980b, 0x980b }, /* 0x980c */ { false, 0x980c, 0x980c }, /* 0x980d */ { false, 0x980d, 0x980d }, /* 0x980e */ { false, 0x980e, 0x980e }, /* 0x980f */ { false, 0x980f, 0x980f }, /* 0x9810 */ { false, 0x9810, 0x9810 }, /* 0x9811 */ { false, 0x9811, 0x9811 }, /* 0x9812 */ { false, 0x9812, 0x9812 }, /* 0x9813 */ { false, 0x9813, 0x9813 }, /* 0x9814 */ { false, 0x9814, 0x9814 }, /* 0x9815 */ { false, 0x9815, 0x9815 }, /* 0x9816 */ { false, 0x9816, 0x9816 }, /* 0x9817 */ { false, 0x9817, 0x9817 }, /* 0x9818 */ { false, 0x9818, 0x9818 }, /* 0x9819 */ { false, 0x9819, 0x9819 }, /* 0x981a */ { false, 0x981a, 0x981a }, /* 0x981b */ { false, 0x981b, 0x981b }, /* 0x981c */ { false, 0x981c, 0x981c }, /* 0x981d */ { false, 0x981d, 0x981d }, /* 0x981e */ { false, 0x981e, 0x981e }, /* 0x981f */ { false, 0x981f, 0x981f }, /* 0x9820 */ { false, 0x9820, 0x9820 }, /* 0x9821 */ { false, 0x9821, 0x9821 }, /* 0x9822 */ { false, 0x9822, 0x9822 }, /* 0x9823 */ { false, 0x9823, 0x9823 }, /* 0x9824 */ { false, 0x9824, 0x9824 }, /* 0x9825 */ { false, 0x9825, 0x9825 }, /* 0x9826 */ { false, 0x9826, 0x9826 }, /* 0x9827 */ { false, 0x9827, 0x9827 }, /* 0x9828 */ { false, 0x9828, 0x9828 }, /* 0x9829 */ { false, 0x9829, 0x9829 }, /* 0x982a */ { false, 0x982a, 0x982a }, /* 0x982b */ { false, 0x982b, 0x982b }, /* 0x982c */ { false, 0x982c, 0x982c }, /* 0x982d */ { false, 0x982d, 0x982d }, /* 0x982e */ { false, 0x982e, 0x982e }, /* 0x982f */ { false, 0x982f, 0x982f }, /* 0x9830 */ { false, 0x9830, 0x9830 }, /* 0x9831 */ { false, 0x9831, 0x9831 }, /* 0x9832 */ { false, 0x9832, 0x9832 }, /* 0x9833 */ { false, 0x9833, 0x9833 }, /* 0x9834 */ { false, 0x9834, 0x9834 }, /* 0x9835 */ { false, 0x9835, 0x9835 }, /* 0x9836 */ { false, 0x9836, 0x9836 }, /* 0x9837 */ { false, 0x9837, 0x9837 }, /* 0x9838 */ { false, 0x9838, 0x9838 }, /* 0x9839 */ { false, 0x9839, 0x9839 }, /* 0x983a */ { false, 0x983a, 0x983a }, /* 0x983b */ { false, 0x983b, 0x983b }, /* 0x983c */ { false, 0x983c, 0x983c }, /* 0x983d */ { false, 0x983d, 0x983d }, /* 0x983e */ { false, 0x983e, 0x983e }, /* 0x983f */ { false, 0x983f, 0x983f }, /* 0x9840 */ { false, 0x9840, 0x9840 }, /* 0x9841 */ { false, 0x9841, 0x9841 }, /* 0x9842 */ { false, 0x9842, 0x9842 }, /* 0x9843 */ { false, 0x9843, 0x9843 }, /* 0x9844 */ { false, 0x9844, 0x9844 }, /* 0x9845 */ { false, 0x9845, 0x9845 }, /* 0x9846 */ { false, 0x9846, 0x9846 }, /* 0x9847 */ { false, 0x9847, 0x9847 }, /* 0x9848 */ { false, 0x9848, 0x9848 }, /* 0x9849 */ { false, 0x9849, 0x9849 }, /* 0x984a */ { false, 0x984a, 0x984a }, /* 0x984b */ { false, 0x984b, 0x984b }, /* 0x984c */ { false, 0x984c, 0x984c }, /* 0x984d */ { false, 0x984d, 0x984d }, /* 0x984e */ { false, 0x984e, 0x984e }, /* 0x984f */ { false, 0x984f, 0x984f }, /* 0x9850 */ { false, 0x9850, 0x9850 }, /* 0x9851 */ { false, 0x9851, 0x9851 }, /* 0x9852 */ { false, 0x9852, 0x9852 }, /* 0x9853 */ { false, 0x9853, 0x9853 }, /* 0x9854 */ { false, 0x9854, 0x9854 }, /* 0x9855 */ { false, 0x9855, 0x9855 }, /* 0x9856 */ { false, 0x9856, 0x9856 }, /* 0x9857 */ { false, 0x9857, 0x9857 }, /* 0x9858 */ { false, 0x9858, 0x9858 }, /* 0x9859 */ { false, 0x9859, 0x9859 }, /* 0x985a */ { false, 0x985a, 0x985a }, /* 0x985b */ { false, 0x985b, 0x985b }, /* 0x985c */ { false, 0x985c, 0x985c }, /* 0x985d */ { false, 0x985d, 0x985d }, /* 0x985e */ { false, 0x985e, 0x985e }, /* 0x985f */ { false, 0x985f, 0x985f }, /* 0x9860 */ { false, 0x9860, 0x9860 }, /* 0x9861 */ { false, 0x9861, 0x9861 }, /* 0x9862 */ { false, 0x9862, 0x9862 }, /* 0x9863 */ { false, 0x9863, 0x9863 }, /* 0x9864 */ { false, 0x9864, 0x9864 }, /* 0x9865 */ { false, 0x9865, 0x9865 }, /* 0x9866 */ { false, 0x9866, 0x9866 }, /* 0x9867 */ { false, 0x9867, 0x9867 }, /* 0x9868 */ { false, 0x9868, 0x9868 }, /* 0x9869 */ { false, 0x9869, 0x9869 }, /* 0x986a */ { false, 0x986a, 0x986a }, /* 0x986b */ { false, 0x986b, 0x986b }, /* 0x986c */ { false, 0x986c, 0x986c }, /* 0x986d */ { false, 0x986d, 0x986d }, /* 0x986e */ { false, 0x986e, 0x986e }, /* 0x986f */ { false, 0x986f, 0x986f }, /* 0x9870 */ { false, 0x9870, 0x9870 }, /* 0x9871 */ { false, 0x9871, 0x9871 }, /* 0x9872 */ { false, 0x9872, 0x9872 }, /* 0x9873 */ { false, 0x9873, 0x9873 }, /* 0x9874 */ { false, 0x9874, 0x9874 }, /* 0x9875 */ { false, 0x9875, 0x9875 }, /* 0x9876 */ { false, 0x9876, 0x9876 }, /* 0x9877 */ { false, 0x9877, 0x9877 }, /* 0x9878 */ { false, 0x9878, 0x9878 }, /* 0x9879 */ { false, 0x9879, 0x9879 }, /* 0x987a */ { false, 0x987a, 0x987a }, /* 0x987b */ { false, 0x987b, 0x987b }, /* 0x987c */ { false, 0x987c, 0x987c }, /* 0x987d */ { false, 0x987d, 0x987d }, /* 0x987e */ { false, 0x987e, 0x987e }, /* 0x987f */ { false, 0x987f, 0x987f }, /* 0x9880 */ { false, 0x9880, 0x9880 }, /* 0x9881 */ { false, 0x9881, 0x9881 }, /* 0x9882 */ { false, 0x9882, 0x9882 }, /* 0x9883 */ { false, 0x9883, 0x9883 }, /* 0x9884 */ { false, 0x9884, 0x9884 }, /* 0x9885 */ { false, 0x9885, 0x9885 }, /* 0x9886 */ { false, 0x9886, 0x9886 }, /* 0x9887 */ { false, 0x9887, 0x9887 }, /* 0x9888 */ { false, 0x9888, 0x9888 }, /* 0x9889 */ { false, 0x9889, 0x9889 }, /* 0x988a */ { false, 0x988a, 0x988a }, /* 0x988b */ { false, 0x988b, 0x988b }, /* 0x988c */ { false, 0x988c, 0x988c }, /* 0x988d */ { false, 0x988d, 0x988d }, /* 0x988e */ { false, 0x988e, 0x988e }, /* 0x988f */ { false, 0x988f, 0x988f }, /* 0x9890 */ { false, 0x9890, 0x9890 }, /* 0x9891 */ { false, 0x9891, 0x9891 }, /* 0x9892 */ { false, 0x9892, 0x9892 }, /* 0x9893 */ { false, 0x9893, 0x9893 }, /* 0x9894 */ { false, 0x9894, 0x9894 }, /* 0x9895 */ { false, 0x9895, 0x9895 }, /* 0x9896 */ { false, 0x9896, 0x9896 }, /* 0x9897 */ { false, 0x9897, 0x9897 }, /* 0x9898 */ { false, 0x9898, 0x9898 }, /* 0x9899 */ { false, 0x9899, 0x9899 }, /* 0x989a */ { false, 0x989a, 0x989a }, /* 0x989b */ { false, 0x989b, 0x989b }, /* 0x989c */ { false, 0x989c, 0x989c }, /* 0x989d */ { false, 0x989d, 0x989d }, /* 0x989e */ { false, 0x989e, 0x989e }, /* 0x989f */ { false, 0x989f, 0x989f }, /* 0x98a0 */ { false, 0x98a0, 0x98a0 }, /* 0x98a1 */ { false, 0x98a1, 0x98a1 }, /* 0x98a2 */ { false, 0x98a2, 0x98a2 }, /* 0x98a3 */ { false, 0x98a3, 0x98a3 }, /* 0x98a4 */ { false, 0x98a4, 0x98a4 }, /* 0x98a5 */ { false, 0x98a5, 0x98a5 }, /* 0x98a6 */ { false, 0x98a6, 0x98a6 }, /* 0x98a7 */ { false, 0x98a7, 0x98a7 }, /* 0x98a8 */ { false, 0x98a8, 0x98a8 }, /* 0x98a9 */ { false, 0x98a9, 0x98a9 }, /* 0x98aa */ { false, 0x98aa, 0x98aa }, /* 0x98ab */ { false, 0x98ab, 0x98ab }, /* 0x98ac */ { false, 0x98ac, 0x98ac }, /* 0x98ad */ { false, 0x98ad, 0x98ad }, /* 0x98ae */ { false, 0x98ae, 0x98ae }, /* 0x98af */ { false, 0x98af, 0x98af }, /* 0x98b0 */ { false, 0x98b0, 0x98b0 }, /* 0x98b1 */ { false, 0x98b1, 0x98b1 }, /* 0x98b2 */ { false, 0x98b2, 0x98b2 }, /* 0x98b3 */ { false, 0x98b3, 0x98b3 }, /* 0x98b4 */ { false, 0x98b4, 0x98b4 }, /* 0x98b5 */ { false, 0x98b5, 0x98b5 }, /* 0x98b6 */ { false, 0x98b6, 0x98b6 }, /* 0x98b7 */ { false, 0x98b7, 0x98b7 }, /* 0x98b8 */ { false, 0x98b8, 0x98b8 }, /* 0x98b9 */ { false, 0x98b9, 0x98b9 }, /* 0x98ba */ { false, 0x98ba, 0x98ba }, /* 0x98bb */ { false, 0x98bb, 0x98bb }, /* 0x98bc */ { false, 0x98bc, 0x98bc }, /* 0x98bd */ { false, 0x98bd, 0x98bd }, /* 0x98be */ { false, 0x98be, 0x98be }, /* 0x98bf */ { false, 0x98bf, 0x98bf }, /* 0x98c0 */ { false, 0x98c0, 0x98c0 }, /* 0x98c1 */ { false, 0x98c1, 0x98c1 }, /* 0x98c2 */ { false, 0x98c2, 0x98c2 }, /* 0x98c3 */ { false, 0x98c3, 0x98c3 }, /* 0x98c4 */ { false, 0x98c4, 0x98c4 }, /* 0x98c5 */ { false, 0x98c5, 0x98c5 }, /* 0x98c6 */ { false, 0x98c6, 0x98c6 }, /* 0x98c7 */ { false, 0x98c7, 0x98c7 }, /* 0x98c8 */ { false, 0x98c8, 0x98c8 }, /* 0x98c9 */ { false, 0x98c9, 0x98c9 }, /* 0x98ca */ { false, 0x98ca, 0x98ca }, /* 0x98cb */ { false, 0x98cb, 0x98cb }, /* 0x98cc */ { false, 0x98cc, 0x98cc }, /* 0x98cd */ { false, 0x98cd, 0x98cd }, /* 0x98ce */ { false, 0x98ce, 0x98ce }, /* 0x98cf */ { false, 0x98cf, 0x98cf }, /* 0x98d0 */ { false, 0x98d0, 0x98d0 }, /* 0x98d1 */ { false, 0x98d1, 0x98d1 }, /* 0x98d2 */ { false, 0x98d2, 0x98d2 }, /* 0x98d3 */ { false, 0x98d3, 0x98d3 }, /* 0x98d4 */ { false, 0x98d4, 0x98d4 }, /* 0x98d5 */ { false, 0x98d5, 0x98d5 }, /* 0x98d6 */ { false, 0x98d6, 0x98d6 }, /* 0x98d7 */ { false, 0x98d7, 0x98d7 }, /* 0x98d8 */ { false, 0x98d8, 0x98d8 }, /* 0x98d9 */ { false, 0x98d9, 0x98d9 }, /* 0x98da */ { false, 0x98da, 0x98da }, /* 0x98db */ { false, 0x98db, 0x98db }, /* 0x98dc */ { false, 0x98dc, 0x98dc }, /* 0x98dd */ { false, 0x98dd, 0x98dd }, /* 0x98de */ { false, 0x98de, 0x98de }, /* 0x98df */ { false, 0x98df, 0x98df }, /* 0x98e0 */ { false, 0x98e0, 0x98e0 }, /* 0x98e1 */ { false, 0x98e1, 0x98e1 }, /* 0x98e2 */ { false, 0x98e2, 0x98e2 }, /* 0x98e3 */ { false, 0x98e3, 0x98e3 }, /* 0x98e4 */ { false, 0x98e4, 0x98e4 }, /* 0x98e5 */ { false, 0x98e5, 0x98e5 }, /* 0x98e6 */ { false, 0x98e6, 0x98e6 }, /* 0x98e7 */ { false, 0x98e7, 0x98e7 }, /* 0x98e8 */ { false, 0x98e8, 0x98e8 }, /* 0x98e9 */ { false, 0x98e9, 0x98e9 }, /* 0x98ea */ { false, 0x98ea, 0x98ea }, /* 0x98eb */ { false, 0x98eb, 0x98eb }, /* 0x98ec */ { false, 0x98ec, 0x98ec }, /* 0x98ed */ { false, 0x98ed, 0x98ed }, /* 0x98ee */ { false, 0x98ee, 0x98ee }, /* 0x98ef */ { false, 0x98ef, 0x98ef }, /* 0x98f0 */ { false, 0x98f0, 0x98f0 }, /* 0x98f1 */ { false, 0x98f1, 0x98f1 }, /* 0x98f2 */ { false, 0x98f2, 0x98f2 }, /* 0x98f3 */ { false, 0x98f3, 0x98f3 }, /* 0x98f4 */ { false, 0x98f4, 0x98f4 }, /* 0x98f5 */ { false, 0x98f5, 0x98f5 }, /* 0x98f6 */ { false, 0x98f6, 0x98f6 }, /* 0x98f7 */ { false, 0x98f7, 0x98f7 }, /* 0x98f8 */ { false, 0x98f8, 0x98f8 }, /* 0x98f9 */ { false, 0x98f9, 0x98f9 }, /* 0x98fa */ { false, 0x98fa, 0x98fa }, /* 0x98fb */ { false, 0x98fb, 0x98fb }, /* 0x98fc */ { false, 0x98fc, 0x98fc }, /* 0x98fd */ { false, 0x98fd, 0x98fd }, /* 0x98fe */ { false, 0x98fe, 0x98fe }, /* 0x98ff */ { false, 0x98ff, 0x98ff }, /* 0x9900 */ { false, 0x9900, 0x9900 }, /* 0x9901 */ { false, 0x9901, 0x9901 }, /* 0x9902 */ { false, 0x9902, 0x9902 }, /* 0x9903 */ { false, 0x9903, 0x9903 }, /* 0x9904 */ { false, 0x9904, 0x9904 }, /* 0x9905 */ { false, 0x9905, 0x9905 }, /* 0x9906 */ { false, 0x9906, 0x9906 }, /* 0x9907 */ { false, 0x9907, 0x9907 }, /* 0x9908 */ { false, 0x9908, 0x9908 }, /* 0x9909 */ { false, 0x9909, 0x9909 }, /* 0x990a */ { false, 0x990a, 0x990a }, /* 0x990b */ { false, 0x990b, 0x990b }, /* 0x990c */ { false, 0x990c, 0x990c }, /* 0x990d */ { false, 0x990d, 0x990d }, /* 0x990e */ { false, 0x990e, 0x990e }, /* 0x990f */ { false, 0x990f, 0x990f }, /* 0x9910 */ { false, 0x9910, 0x9910 }, /* 0x9911 */ { false, 0x9911, 0x9911 }, /* 0x9912 */ { false, 0x9912, 0x9912 }, /* 0x9913 */ { false, 0x9913, 0x9913 }, /* 0x9914 */ { false, 0x9914, 0x9914 }, /* 0x9915 */ { false, 0x9915, 0x9915 }, /* 0x9916 */ { false, 0x9916, 0x9916 }, /* 0x9917 */ { false, 0x9917, 0x9917 }, /* 0x9918 */ { false, 0x9918, 0x9918 }, /* 0x9919 */ { false, 0x9919, 0x9919 }, /* 0x991a */ { false, 0x991a, 0x991a }, /* 0x991b */ { false, 0x991b, 0x991b }, /* 0x991c */ { false, 0x991c, 0x991c }, /* 0x991d */ { false, 0x991d, 0x991d }, /* 0x991e */ { false, 0x991e, 0x991e }, /* 0x991f */ { false, 0x991f, 0x991f }, /* 0x9920 */ { false, 0x9920, 0x9920 }, /* 0x9921 */ { false, 0x9921, 0x9921 }, /* 0x9922 */ { false, 0x9922, 0x9922 }, /* 0x9923 */ { false, 0x9923, 0x9923 }, /* 0x9924 */ { false, 0x9924, 0x9924 }, /* 0x9925 */ { false, 0x9925, 0x9925 }, /* 0x9926 */ { false, 0x9926, 0x9926 }, /* 0x9927 */ { false, 0x9927, 0x9927 }, /* 0x9928 */ { false, 0x9928, 0x9928 }, /* 0x9929 */ { false, 0x9929, 0x9929 }, /* 0x992a */ { false, 0x992a, 0x992a }, /* 0x992b */ { false, 0x992b, 0x992b }, /* 0x992c */ { false, 0x992c, 0x992c }, /* 0x992d */ { false, 0x992d, 0x992d }, /* 0x992e */ { false, 0x992e, 0x992e }, /* 0x992f */ { false, 0x992f, 0x992f }, /* 0x9930 */ { false, 0x9930, 0x9930 }, /* 0x9931 */ { false, 0x9931, 0x9931 }, /* 0x9932 */ { false, 0x9932, 0x9932 }, /* 0x9933 */ { false, 0x9933, 0x9933 }, /* 0x9934 */ { false, 0x9934, 0x9934 }, /* 0x9935 */ { false, 0x9935, 0x9935 }, /* 0x9936 */ { false, 0x9936, 0x9936 }, /* 0x9937 */ { false, 0x9937, 0x9937 }, /* 0x9938 */ { false, 0x9938, 0x9938 }, /* 0x9939 */ { false, 0x9939, 0x9939 }, /* 0x993a */ { false, 0x993a, 0x993a }, /* 0x993b */ { false, 0x993b, 0x993b }, /* 0x993c */ { false, 0x993c, 0x993c }, /* 0x993d */ { false, 0x993d, 0x993d }, /* 0x993e */ { false, 0x993e, 0x993e }, /* 0x993f */ { false, 0x993f, 0x993f }, /* 0x9940 */ { false, 0x9940, 0x9940 }, /* 0x9941 */ { false, 0x9941, 0x9941 }, /* 0x9942 */ { false, 0x9942, 0x9942 }, /* 0x9943 */ { false, 0x9943, 0x9943 }, /* 0x9944 */ { false, 0x9944, 0x9944 }, /* 0x9945 */ { false, 0x9945, 0x9945 }, /* 0x9946 */ { false, 0x9946, 0x9946 }, /* 0x9947 */ { false, 0x9947, 0x9947 }, /* 0x9948 */ { false, 0x9948, 0x9948 }, /* 0x9949 */ { false, 0x9949, 0x9949 }, /* 0x994a */ { false, 0x994a, 0x994a }, /* 0x994b */ { false, 0x994b, 0x994b }, /* 0x994c */ { false, 0x994c, 0x994c }, /* 0x994d */ { false, 0x994d, 0x994d }, /* 0x994e */ { false, 0x994e, 0x994e }, /* 0x994f */ { false, 0x994f, 0x994f }, /* 0x9950 */ { false, 0x9950, 0x9950 }, /* 0x9951 */ { false, 0x9951, 0x9951 }, /* 0x9952 */ { false, 0x9952, 0x9952 }, /* 0x9953 */ { false, 0x9953, 0x9953 }, /* 0x9954 */ { false, 0x9954, 0x9954 }, /* 0x9955 */ { false, 0x9955, 0x9955 }, /* 0x9956 */ { false, 0x9956, 0x9956 }, /* 0x9957 */ { false, 0x9957, 0x9957 }, /* 0x9958 */ { false, 0x9958, 0x9958 }, /* 0x9959 */ { false, 0x9959, 0x9959 }, /* 0x995a */ { false, 0x995a, 0x995a }, /* 0x995b */ { false, 0x995b, 0x995b }, /* 0x995c */ { false, 0x995c, 0x995c }, /* 0x995d */ { false, 0x995d, 0x995d }, /* 0x995e */ { false, 0x995e, 0x995e }, /* 0x995f */ { false, 0x995f, 0x995f }, /* 0x9960 */ { false, 0x9960, 0x9960 }, /* 0x9961 */ { false, 0x9961, 0x9961 }, /* 0x9962 */ { false, 0x9962, 0x9962 }, /* 0x9963 */ { false, 0x9963, 0x9963 }, /* 0x9964 */ { false, 0x9964, 0x9964 }, /* 0x9965 */ { false, 0x9965, 0x9965 }, /* 0x9966 */ { false, 0x9966, 0x9966 }, /* 0x9967 */ { false, 0x9967, 0x9967 }, /* 0x9968 */ { false, 0x9968, 0x9968 }, /* 0x9969 */ { false, 0x9969, 0x9969 }, /* 0x996a */ { false, 0x996a, 0x996a }, /* 0x996b */ { false, 0x996b, 0x996b }, /* 0x996c */ { false, 0x996c, 0x996c }, /* 0x996d */ { false, 0x996d, 0x996d }, /* 0x996e */ { false, 0x996e, 0x996e }, /* 0x996f */ { false, 0x996f, 0x996f }, /* 0x9970 */ { false, 0x9970, 0x9970 }, /* 0x9971 */ { false, 0x9971, 0x9971 }, /* 0x9972 */ { false, 0x9972, 0x9972 }, /* 0x9973 */ { false, 0x9973, 0x9973 }, /* 0x9974 */ { false, 0x9974, 0x9974 }, /* 0x9975 */ { false, 0x9975, 0x9975 }, /* 0x9976 */ { false, 0x9976, 0x9976 }, /* 0x9977 */ { false, 0x9977, 0x9977 }, /* 0x9978 */ { false, 0x9978, 0x9978 }, /* 0x9979 */ { false, 0x9979, 0x9979 }, /* 0x997a */ { false, 0x997a, 0x997a }, /* 0x997b */ { false, 0x997b, 0x997b }, /* 0x997c */ { false, 0x997c, 0x997c }, /* 0x997d */ { false, 0x997d, 0x997d }, /* 0x997e */ { false, 0x997e, 0x997e }, /* 0x997f */ { false, 0x997f, 0x997f }, /* 0x9980 */ { false, 0x9980, 0x9980 }, /* 0x9981 */ { false, 0x9981, 0x9981 }, /* 0x9982 */ { false, 0x9982, 0x9982 }, /* 0x9983 */ { false, 0x9983, 0x9983 }, /* 0x9984 */ { false, 0x9984, 0x9984 }, /* 0x9985 */ { false, 0x9985, 0x9985 }, /* 0x9986 */ { false, 0x9986, 0x9986 }, /* 0x9987 */ { false, 0x9987, 0x9987 }, /* 0x9988 */ { false, 0x9988, 0x9988 }, /* 0x9989 */ { false, 0x9989, 0x9989 }, /* 0x998a */ { false, 0x998a, 0x998a }, /* 0x998b */ { false, 0x998b, 0x998b }, /* 0x998c */ { false, 0x998c, 0x998c }, /* 0x998d */ { false, 0x998d, 0x998d }, /* 0x998e */ { false, 0x998e, 0x998e }, /* 0x998f */ { false, 0x998f, 0x998f }, /* 0x9990 */ { false, 0x9990, 0x9990 }, /* 0x9991 */ { false, 0x9991, 0x9991 }, /* 0x9992 */ { false, 0x9992, 0x9992 }, /* 0x9993 */ { false, 0x9993, 0x9993 }, /* 0x9994 */ { false, 0x9994, 0x9994 }, /* 0x9995 */ { false, 0x9995, 0x9995 }, /* 0x9996 */ { false, 0x9996, 0x9996 }, /* 0x9997 */ { false, 0x9997, 0x9997 }, /* 0x9998 */ { false, 0x9998, 0x9998 }, /* 0x9999 */ { false, 0x9999, 0x9999 }, /* 0x999a */ { false, 0x999a, 0x999a }, /* 0x999b */ { false, 0x999b, 0x999b }, /* 0x999c */ { false, 0x999c, 0x999c }, /* 0x999d */ { false, 0x999d, 0x999d }, /* 0x999e */ { false, 0x999e, 0x999e }, /* 0x999f */ { false, 0x999f, 0x999f }, /* 0x99a0 */ { false, 0x99a0, 0x99a0 }, /* 0x99a1 */ { false, 0x99a1, 0x99a1 }, /* 0x99a2 */ { false, 0x99a2, 0x99a2 }, /* 0x99a3 */ { false, 0x99a3, 0x99a3 }, /* 0x99a4 */ { false, 0x99a4, 0x99a4 }, /* 0x99a5 */ { false, 0x99a5, 0x99a5 }, /* 0x99a6 */ { false, 0x99a6, 0x99a6 }, /* 0x99a7 */ { false, 0x99a7, 0x99a7 }, /* 0x99a8 */ { false, 0x99a8, 0x99a8 }, /* 0x99a9 */ { false, 0x99a9, 0x99a9 }, /* 0x99aa */ { false, 0x99aa, 0x99aa }, /* 0x99ab */ { false, 0x99ab, 0x99ab }, /* 0x99ac */ { false, 0x99ac, 0x99ac }, /* 0x99ad */ { false, 0x99ad, 0x99ad }, /* 0x99ae */ { false, 0x99ae, 0x99ae }, /* 0x99af */ { false, 0x99af, 0x99af }, /* 0x99b0 */ { false, 0x99b0, 0x99b0 }, /* 0x99b1 */ { false, 0x99b1, 0x99b1 }, /* 0x99b2 */ { false, 0x99b2, 0x99b2 }, /* 0x99b3 */ { false, 0x99b3, 0x99b3 }, /* 0x99b4 */ { false, 0x99b4, 0x99b4 }, /* 0x99b5 */ { false, 0x99b5, 0x99b5 }, /* 0x99b6 */ { false, 0x99b6, 0x99b6 }, /* 0x99b7 */ { false, 0x99b7, 0x99b7 }, /* 0x99b8 */ { false, 0x99b8, 0x99b8 }, /* 0x99b9 */ { false, 0x99b9, 0x99b9 }, /* 0x99ba */ { false, 0x99ba, 0x99ba }, /* 0x99bb */ { false, 0x99bb, 0x99bb }, /* 0x99bc */ { false, 0x99bc, 0x99bc }, /* 0x99bd */ { false, 0x99bd, 0x99bd }, /* 0x99be */ { false, 0x99be, 0x99be }, /* 0x99bf */ { false, 0x99bf, 0x99bf }, /* 0x99c0 */ { false, 0x99c0, 0x99c0 }, /* 0x99c1 */ { false, 0x99c1, 0x99c1 }, /* 0x99c2 */ { false, 0x99c2, 0x99c2 }, /* 0x99c3 */ { false, 0x99c3, 0x99c3 }, /* 0x99c4 */ { false, 0x99c4, 0x99c4 }, /* 0x99c5 */ { false, 0x99c5, 0x99c5 }, /* 0x99c6 */ { false, 0x99c6, 0x99c6 }, /* 0x99c7 */ { false, 0x99c7, 0x99c7 }, /* 0x99c8 */ { false, 0x99c8, 0x99c8 }, /* 0x99c9 */ { false, 0x99c9, 0x99c9 }, /* 0x99ca */ { false, 0x99ca, 0x99ca }, /* 0x99cb */ { false, 0x99cb, 0x99cb }, /* 0x99cc */ { false, 0x99cc, 0x99cc }, /* 0x99cd */ { false, 0x99cd, 0x99cd }, /* 0x99ce */ { false, 0x99ce, 0x99ce }, /* 0x99cf */ { false, 0x99cf, 0x99cf }, /* 0x99d0 */ { false, 0x99d0, 0x99d0 }, /* 0x99d1 */ { false, 0x99d1, 0x99d1 }, /* 0x99d2 */ { false, 0x99d2, 0x99d2 }, /* 0x99d3 */ { false, 0x99d3, 0x99d3 }, /* 0x99d4 */ { false, 0x99d4, 0x99d4 }, /* 0x99d5 */ { false, 0x99d5, 0x99d5 }, /* 0x99d6 */ { false, 0x99d6, 0x99d6 }, /* 0x99d7 */ { false, 0x99d7, 0x99d7 }, /* 0x99d8 */ { false, 0x99d8, 0x99d8 }, /* 0x99d9 */ { false, 0x99d9, 0x99d9 }, /* 0x99da */ { false, 0x99da, 0x99da }, /* 0x99db */ { false, 0x99db, 0x99db }, /* 0x99dc */ { false, 0x99dc, 0x99dc }, /* 0x99dd */ { false, 0x99dd, 0x99dd }, /* 0x99de */ { false, 0x99de, 0x99de }, /* 0x99df */ { false, 0x99df, 0x99df }, /* 0x99e0 */ { false, 0x99e0, 0x99e0 }, /* 0x99e1 */ { false, 0x99e1, 0x99e1 }, /* 0x99e2 */ { false, 0x99e2, 0x99e2 }, /* 0x99e3 */ { false, 0x99e3, 0x99e3 }, /* 0x99e4 */ { false, 0x99e4, 0x99e4 }, /* 0x99e5 */ { false, 0x99e5, 0x99e5 }, /* 0x99e6 */ { false, 0x99e6, 0x99e6 }, /* 0x99e7 */ { false, 0x99e7, 0x99e7 }, /* 0x99e8 */ { false, 0x99e8, 0x99e8 }, /* 0x99e9 */ { false, 0x99e9, 0x99e9 }, /* 0x99ea */ { false, 0x99ea, 0x99ea }, /* 0x99eb */ { false, 0x99eb, 0x99eb }, /* 0x99ec */ { false, 0x99ec, 0x99ec }, /* 0x99ed */ { false, 0x99ed, 0x99ed }, /* 0x99ee */ { false, 0x99ee, 0x99ee }, /* 0x99ef */ { false, 0x99ef, 0x99ef }, /* 0x99f0 */ { false, 0x99f0, 0x99f0 }, /* 0x99f1 */ { false, 0x99f1, 0x99f1 }, /* 0x99f2 */ { false, 0x99f2, 0x99f2 }, /* 0x99f3 */ { false, 0x99f3, 0x99f3 }, /* 0x99f4 */ { false, 0x99f4, 0x99f4 }, /* 0x99f5 */ { false, 0x99f5, 0x99f5 }, /* 0x99f6 */ { false, 0x99f6, 0x99f6 }, /* 0x99f7 */ { false, 0x99f7, 0x99f7 }, /* 0x99f8 */ { false, 0x99f8, 0x99f8 }, /* 0x99f9 */ { false, 0x99f9, 0x99f9 }, /* 0x99fa */ { false, 0x99fa, 0x99fa }, /* 0x99fb */ { false, 0x99fb, 0x99fb }, /* 0x99fc */ { false, 0x99fc, 0x99fc }, /* 0x99fd */ { false, 0x99fd, 0x99fd }, /* 0x99fe */ { false, 0x99fe, 0x99fe }, /* 0x99ff */ { false, 0x99ff, 0x99ff }, /* 0x9a00 */ { false, 0x9a00, 0x9a00 }, /* 0x9a01 */ { false, 0x9a01, 0x9a01 }, /* 0x9a02 */ { false, 0x9a02, 0x9a02 }, /* 0x9a03 */ { false, 0x9a03, 0x9a03 }, /* 0x9a04 */ { false, 0x9a04, 0x9a04 }, /* 0x9a05 */ { false, 0x9a05, 0x9a05 }, /* 0x9a06 */ { false, 0x9a06, 0x9a06 }, /* 0x9a07 */ { false, 0x9a07, 0x9a07 }, /* 0x9a08 */ { false, 0x9a08, 0x9a08 }, /* 0x9a09 */ { false, 0x9a09, 0x9a09 }, /* 0x9a0a */ { false, 0x9a0a, 0x9a0a }, /* 0x9a0b */ { false, 0x9a0b, 0x9a0b }, /* 0x9a0c */ { false, 0x9a0c, 0x9a0c }, /* 0x9a0d */ { false, 0x9a0d, 0x9a0d }, /* 0x9a0e */ { false, 0x9a0e, 0x9a0e }, /* 0x9a0f */ { false, 0x9a0f, 0x9a0f }, /* 0x9a10 */ { false, 0x9a10, 0x9a10 }, /* 0x9a11 */ { false, 0x9a11, 0x9a11 }, /* 0x9a12 */ { false, 0x9a12, 0x9a12 }, /* 0x9a13 */ { false, 0x9a13, 0x9a13 }, /* 0x9a14 */ { false, 0x9a14, 0x9a14 }, /* 0x9a15 */ { false, 0x9a15, 0x9a15 }, /* 0x9a16 */ { false, 0x9a16, 0x9a16 }, /* 0x9a17 */ { false, 0x9a17, 0x9a17 }, /* 0x9a18 */ { false, 0x9a18, 0x9a18 }, /* 0x9a19 */ { false, 0x9a19, 0x9a19 }, /* 0x9a1a */ { false, 0x9a1a, 0x9a1a }, /* 0x9a1b */ { false, 0x9a1b, 0x9a1b }, /* 0x9a1c */ { false, 0x9a1c, 0x9a1c }, /* 0x9a1d */ { false, 0x9a1d, 0x9a1d }, /* 0x9a1e */ { false, 0x9a1e, 0x9a1e }, /* 0x9a1f */ { false, 0x9a1f, 0x9a1f }, /* 0x9a20 */ { false, 0x9a20, 0x9a20 }, /* 0x9a21 */ { false, 0x9a21, 0x9a21 }, /* 0x9a22 */ { false, 0x9a22, 0x9a22 }, /* 0x9a23 */ { false, 0x9a23, 0x9a23 }, /* 0x9a24 */ { false, 0x9a24, 0x9a24 }, /* 0x9a25 */ { false, 0x9a25, 0x9a25 }, /* 0x9a26 */ { false, 0x9a26, 0x9a26 }, /* 0x9a27 */ { false, 0x9a27, 0x9a27 }, /* 0x9a28 */ { false, 0x9a28, 0x9a28 }, /* 0x9a29 */ { false, 0x9a29, 0x9a29 }, /* 0x9a2a */ { false, 0x9a2a, 0x9a2a }, /* 0x9a2b */ { false, 0x9a2b, 0x9a2b }, /* 0x9a2c */ { false, 0x9a2c, 0x9a2c }, /* 0x9a2d */ { false, 0x9a2d, 0x9a2d }, /* 0x9a2e */ { false, 0x9a2e, 0x9a2e }, /* 0x9a2f */ { false, 0x9a2f, 0x9a2f }, /* 0x9a30 */ { false, 0x9a30, 0x9a30 }, /* 0x9a31 */ { false, 0x9a31, 0x9a31 }, /* 0x9a32 */ { false, 0x9a32, 0x9a32 }, /* 0x9a33 */ { false, 0x9a33, 0x9a33 }, /* 0x9a34 */ { false, 0x9a34, 0x9a34 }, /* 0x9a35 */ { false, 0x9a35, 0x9a35 }, /* 0x9a36 */ { false, 0x9a36, 0x9a36 }, /* 0x9a37 */ { false, 0x9a37, 0x9a37 }, /* 0x9a38 */ { false, 0x9a38, 0x9a38 }, /* 0x9a39 */ { false, 0x9a39, 0x9a39 }, /* 0x9a3a */ { false, 0x9a3a, 0x9a3a }, /* 0x9a3b */ { false, 0x9a3b, 0x9a3b }, /* 0x9a3c */ { false, 0x9a3c, 0x9a3c }, /* 0x9a3d */ { false, 0x9a3d, 0x9a3d }, /* 0x9a3e */ { false, 0x9a3e, 0x9a3e }, /* 0x9a3f */ { false, 0x9a3f, 0x9a3f }, /* 0x9a40 */ { false, 0x9a40, 0x9a40 }, /* 0x9a41 */ { false, 0x9a41, 0x9a41 }, /* 0x9a42 */ { false, 0x9a42, 0x9a42 }, /* 0x9a43 */ { false, 0x9a43, 0x9a43 }, /* 0x9a44 */ { false, 0x9a44, 0x9a44 }, /* 0x9a45 */ { false, 0x9a45, 0x9a45 }, /* 0x9a46 */ { false, 0x9a46, 0x9a46 }, /* 0x9a47 */ { false, 0x9a47, 0x9a47 }, /* 0x9a48 */ { false, 0x9a48, 0x9a48 }, /* 0x9a49 */ { false, 0x9a49, 0x9a49 }, /* 0x9a4a */ { false, 0x9a4a, 0x9a4a }, /* 0x9a4b */ { false, 0x9a4b, 0x9a4b }, /* 0x9a4c */ { false, 0x9a4c, 0x9a4c }, /* 0x9a4d */ { false, 0x9a4d, 0x9a4d }, /* 0x9a4e */ { false, 0x9a4e, 0x9a4e }, /* 0x9a4f */ { false, 0x9a4f, 0x9a4f }, /* 0x9a50 */ { false, 0x9a50, 0x9a50 }, /* 0x9a51 */ { false, 0x9a51, 0x9a51 }, /* 0x9a52 */ { false, 0x9a52, 0x9a52 }, /* 0x9a53 */ { false, 0x9a53, 0x9a53 }, /* 0x9a54 */ { false, 0x9a54, 0x9a54 }, /* 0x9a55 */ { false, 0x9a55, 0x9a55 }, /* 0x9a56 */ { false, 0x9a56, 0x9a56 }, /* 0x9a57 */ { false, 0x9a57, 0x9a57 }, /* 0x9a58 */ { false, 0x9a58, 0x9a58 }, /* 0x9a59 */ { false, 0x9a59, 0x9a59 }, /* 0x9a5a */ { false, 0x9a5a, 0x9a5a }, /* 0x9a5b */ { false, 0x9a5b, 0x9a5b }, /* 0x9a5c */ { false, 0x9a5c, 0x9a5c }, /* 0x9a5d */ { false, 0x9a5d, 0x9a5d }, /* 0x9a5e */ { false, 0x9a5e, 0x9a5e }, /* 0x9a5f */ { false, 0x9a5f, 0x9a5f }, /* 0x9a60 */ { false, 0x9a60, 0x9a60 }, /* 0x9a61 */ { false, 0x9a61, 0x9a61 }, /* 0x9a62 */ { false, 0x9a62, 0x9a62 }, /* 0x9a63 */ { false, 0x9a63, 0x9a63 }, /* 0x9a64 */ { false, 0x9a64, 0x9a64 }, /* 0x9a65 */ { false, 0x9a65, 0x9a65 }, /* 0x9a66 */ { false, 0x9a66, 0x9a66 }, /* 0x9a67 */ { false, 0x9a67, 0x9a67 }, /* 0x9a68 */ { false, 0x9a68, 0x9a68 }, /* 0x9a69 */ { false, 0x9a69, 0x9a69 }, /* 0x9a6a */ { false, 0x9a6a, 0x9a6a }, /* 0x9a6b */ { false, 0x9a6b, 0x9a6b }, /* 0x9a6c */ { false, 0x9a6c, 0x9a6c }, /* 0x9a6d */ { false, 0x9a6d, 0x9a6d }, /* 0x9a6e */ { false, 0x9a6e, 0x9a6e }, /* 0x9a6f */ { false, 0x9a6f, 0x9a6f }, /* 0x9a70 */ { false, 0x9a70, 0x9a70 }, /* 0x9a71 */ { false, 0x9a71, 0x9a71 }, /* 0x9a72 */ { false, 0x9a72, 0x9a72 }, /* 0x9a73 */ { false, 0x9a73, 0x9a73 }, /* 0x9a74 */ { false, 0x9a74, 0x9a74 }, /* 0x9a75 */ { false, 0x9a75, 0x9a75 }, /* 0x9a76 */ { false, 0x9a76, 0x9a76 }, /* 0x9a77 */ { false, 0x9a77, 0x9a77 }, /* 0x9a78 */ { false, 0x9a78, 0x9a78 }, /* 0x9a79 */ { false, 0x9a79, 0x9a79 }, /* 0x9a7a */ { false, 0x9a7a, 0x9a7a }, /* 0x9a7b */ { false, 0x9a7b, 0x9a7b }, /* 0x9a7c */ { false, 0x9a7c, 0x9a7c }, /* 0x9a7d */ { false, 0x9a7d, 0x9a7d }, /* 0x9a7e */ { false, 0x9a7e, 0x9a7e }, /* 0x9a7f */ { false, 0x9a7f, 0x9a7f }, /* 0x9a80 */ { false, 0x9a80, 0x9a80 }, /* 0x9a81 */ { false, 0x9a81, 0x9a81 }, /* 0x9a82 */ { false, 0x9a82, 0x9a82 }, /* 0x9a83 */ { false, 0x9a83, 0x9a83 }, /* 0x9a84 */ { false, 0x9a84, 0x9a84 }, /* 0x9a85 */ { false, 0x9a85, 0x9a85 }, /* 0x9a86 */ { false, 0x9a86, 0x9a86 }, /* 0x9a87 */ { false, 0x9a87, 0x9a87 }, /* 0x9a88 */ { false, 0x9a88, 0x9a88 }, /* 0x9a89 */ { false, 0x9a89, 0x9a89 }, /* 0x9a8a */ { false, 0x9a8a, 0x9a8a }, /* 0x9a8b */ { false, 0x9a8b, 0x9a8b }, /* 0x9a8c */ { false, 0x9a8c, 0x9a8c }, /* 0x9a8d */ { false, 0x9a8d, 0x9a8d }, /* 0x9a8e */ { false, 0x9a8e, 0x9a8e }, /* 0x9a8f */ { false, 0x9a8f, 0x9a8f }, /* 0x9a90 */ { false, 0x9a90, 0x9a90 }, /* 0x9a91 */ { false, 0x9a91, 0x9a91 }, /* 0x9a92 */ { false, 0x9a92, 0x9a92 }, /* 0x9a93 */ { false, 0x9a93, 0x9a93 }, /* 0x9a94 */ { false, 0x9a94, 0x9a94 }, /* 0x9a95 */ { false, 0x9a95, 0x9a95 }, /* 0x9a96 */ { false, 0x9a96, 0x9a96 }, /* 0x9a97 */ { false, 0x9a97, 0x9a97 }, /* 0x9a98 */ { false, 0x9a98, 0x9a98 }, /* 0x9a99 */ { false, 0x9a99, 0x9a99 }, /* 0x9a9a */ { false, 0x9a9a, 0x9a9a }, /* 0x9a9b */ { false, 0x9a9b, 0x9a9b }, /* 0x9a9c */ { false, 0x9a9c, 0x9a9c }, /* 0x9a9d */ { false, 0x9a9d, 0x9a9d }, /* 0x9a9e */ { false, 0x9a9e, 0x9a9e }, /* 0x9a9f */ { false, 0x9a9f, 0x9a9f }, /* 0x9aa0 */ { false, 0x9aa0, 0x9aa0 }, /* 0x9aa1 */ { false, 0x9aa1, 0x9aa1 }, /* 0x9aa2 */ { false, 0x9aa2, 0x9aa2 }, /* 0x9aa3 */ { false, 0x9aa3, 0x9aa3 }, /* 0x9aa4 */ { false, 0x9aa4, 0x9aa4 }, /* 0x9aa5 */ { false, 0x9aa5, 0x9aa5 }, /* 0x9aa6 */ { false, 0x9aa6, 0x9aa6 }, /* 0x9aa7 */ { false, 0x9aa7, 0x9aa7 }, /* 0x9aa8 */ { false, 0x9aa8, 0x9aa8 }, /* 0x9aa9 */ { false, 0x9aa9, 0x9aa9 }, /* 0x9aaa */ { false, 0x9aaa, 0x9aaa }, /* 0x9aab */ { false, 0x9aab, 0x9aab }, /* 0x9aac */ { false, 0x9aac, 0x9aac }, /* 0x9aad */ { false, 0x9aad, 0x9aad }, /* 0x9aae */ { false, 0x9aae, 0x9aae }, /* 0x9aaf */ { false, 0x9aaf, 0x9aaf }, /* 0x9ab0 */ { false, 0x9ab0, 0x9ab0 }, /* 0x9ab1 */ { false, 0x9ab1, 0x9ab1 }, /* 0x9ab2 */ { false, 0x9ab2, 0x9ab2 }, /* 0x9ab3 */ { false, 0x9ab3, 0x9ab3 }, /* 0x9ab4 */ { false, 0x9ab4, 0x9ab4 }, /* 0x9ab5 */ { false, 0x9ab5, 0x9ab5 }, /* 0x9ab6 */ { false, 0x9ab6, 0x9ab6 }, /* 0x9ab7 */ { false, 0x9ab7, 0x9ab7 }, /* 0x9ab8 */ { false, 0x9ab8, 0x9ab8 }, /* 0x9ab9 */ { false, 0x9ab9, 0x9ab9 }, /* 0x9aba */ { false, 0x9aba, 0x9aba }, /* 0x9abb */ { false, 0x9abb, 0x9abb }, /* 0x9abc */ { false, 0x9abc, 0x9abc }, /* 0x9abd */ { false, 0x9abd, 0x9abd }, /* 0x9abe */ { false, 0x9abe, 0x9abe }, /* 0x9abf */ { false, 0x9abf, 0x9abf }, /* 0x9ac0 */ { false, 0x9ac0, 0x9ac0 }, /* 0x9ac1 */ { false, 0x9ac1, 0x9ac1 }, /* 0x9ac2 */ { false, 0x9ac2, 0x9ac2 }, /* 0x9ac3 */ { false, 0x9ac3, 0x9ac3 }, /* 0x9ac4 */ { false, 0x9ac4, 0x9ac4 }, /* 0x9ac5 */ { false, 0x9ac5, 0x9ac5 }, /* 0x9ac6 */ { false, 0x9ac6, 0x9ac6 }, /* 0x9ac7 */ { false, 0x9ac7, 0x9ac7 }, /* 0x9ac8 */ { false, 0x9ac8, 0x9ac8 }, /* 0x9ac9 */ { false, 0x9ac9, 0x9ac9 }, /* 0x9aca */ { false, 0x9aca, 0x9aca }, /* 0x9acb */ { false, 0x9acb, 0x9acb }, /* 0x9acc */ { false, 0x9acc, 0x9acc }, /* 0x9acd */ { false, 0x9acd, 0x9acd }, /* 0x9ace */ { false, 0x9ace, 0x9ace }, /* 0x9acf */ { false, 0x9acf, 0x9acf }, /* 0x9ad0 */ { false, 0x9ad0, 0x9ad0 }, /* 0x9ad1 */ { false, 0x9ad1, 0x9ad1 }, /* 0x9ad2 */ { false, 0x9ad2, 0x9ad2 }, /* 0x9ad3 */ { false, 0x9ad3, 0x9ad3 }, /* 0x9ad4 */ { false, 0x9ad4, 0x9ad4 }, /* 0x9ad5 */ { false, 0x9ad5, 0x9ad5 }, /* 0x9ad6 */ { false, 0x9ad6, 0x9ad6 }, /* 0x9ad7 */ { false, 0x9ad7, 0x9ad7 }, /* 0x9ad8 */ { false, 0x9ad8, 0x9ad8 }, /* 0x9ad9 */ { false, 0x9ad9, 0x9ad9 }, /* 0x9ada */ { false, 0x9ada, 0x9ada }, /* 0x9adb */ { false, 0x9adb, 0x9adb }, /* 0x9adc */ { false, 0x9adc, 0x9adc }, /* 0x9add */ { false, 0x9add, 0x9add }, /* 0x9ade */ { false, 0x9ade, 0x9ade }, /* 0x9adf */ { false, 0x9adf, 0x9adf }, /* 0x9ae0 */ { false, 0x9ae0, 0x9ae0 }, /* 0x9ae1 */ { false, 0x9ae1, 0x9ae1 }, /* 0x9ae2 */ { false, 0x9ae2, 0x9ae2 }, /* 0x9ae3 */ { false, 0x9ae3, 0x9ae3 }, /* 0x9ae4 */ { false, 0x9ae4, 0x9ae4 }, /* 0x9ae5 */ { false, 0x9ae5, 0x9ae5 }, /* 0x9ae6 */ { false, 0x9ae6, 0x9ae6 }, /* 0x9ae7 */ { false, 0x9ae7, 0x9ae7 }, /* 0x9ae8 */ { false, 0x9ae8, 0x9ae8 }, /* 0x9ae9 */ { false, 0x9ae9, 0x9ae9 }, /* 0x9aea */ { false, 0x9aea, 0x9aea }, /* 0x9aeb */ { false, 0x9aeb, 0x9aeb }, /* 0x9aec */ { false, 0x9aec, 0x9aec }, /* 0x9aed */ { false, 0x9aed, 0x9aed }, /* 0x9aee */ { false, 0x9aee, 0x9aee }, /* 0x9aef */ { false, 0x9aef, 0x9aef }, /* 0x9af0 */ { false, 0x9af0, 0x9af0 }, /* 0x9af1 */ { false, 0x9af1, 0x9af1 }, /* 0x9af2 */ { false, 0x9af2, 0x9af2 }, /* 0x9af3 */ { false, 0x9af3, 0x9af3 }, /* 0x9af4 */ { false, 0x9af4, 0x9af4 }, /* 0x9af5 */ { false, 0x9af5, 0x9af5 }, /* 0x9af6 */ { false, 0x9af6, 0x9af6 }, /* 0x9af7 */ { false, 0x9af7, 0x9af7 }, /* 0x9af8 */ { false, 0x9af8, 0x9af8 }, /* 0x9af9 */ { false, 0x9af9, 0x9af9 }, /* 0x9afa */ { false, 0x9afa, 0x9afa }, /* 0x9afb */ { false, 0x9afb, 0x9afb }, /* 0x9afc */ { false, 0x9afc, 0x9afc }, /* 0x9afd */ { false, 0x9afd, 0x9afd }, /* 0x9afe */ { false, 0x9afe, 0x9afe }, /* 0x9aff */ { false, 0x9aff, 0x9aff }, /* 0x9b00 */ { false, 0x9b00, 0x9b00 }, /* 0x9b01 */ { false, 0x9b01, 0x9b01 }, /* 0x9b02 */ { false, 0x9b02, 0x9b02 }, /* 0x9b03 */ { false, 0x9b03, 0x9b03 }, /* 0x9b04 */ { false, 0x9b04, 0x9b04 }, /* 0x9b05 */ { false, 0x9b05, 0x9b05 }, /* 0x9b06 */ { false, 0x9b06, 0x9b06 }, /* 0x9b07 */ { false, 0x9b07, 0x9b07 }, /* 0x9b08 */ { false, 0x9b08, 0x9b08 }, /* 0x9b09 */ { false, 0x9b09, 0x9b09 }, /* 0x9b0a */ { false, 0x9b0a, 0x9b0a }, /* 0x9b0b */ { false, 0x9b0b, 0x9b0b }, /* 0x9b0c */ { false, 0x9b0c, 0x9b0c }, /* 0x9b0d */ { false, 0x9b0d, 0x9b0d }, /* 0x9b0e */ { false, 0x9b0e, 0x9b0e }, /* 0x9b0f */ { false, 0x9b0f, 0x9b0f }, /* 0x9b10 */ { false, 0x9b10, 0x9b10 }, /* 0x9b11 */ { false, 0x9b11, 0x9b11 }, /* 0x9b12 */ { false, 0x9b12, 0x9b12 }, /* 0x9b13 */ { false, 0x9b13, 0x9b13 }, /* 0x9b14 */ { false, 0x9b14, 0x9b14 }, /* 0x9b15 */ { false, 0x9b15, 0x9b15 }, /* 0x9b16 */ { false, 0x9b16, 0x9b16 }, /* 0x9b17 */ { false, 0x9b17, 0x9b17 }, /* 0x9b18 */ { false, 0x9b18, 0x9b18 }, /* 0x9b19 */ { false, 0x9b19, 0x9b19 }, /* 0x9b1a */ { false, 0x9b1a, 0x9b1a }, /* 0x9b1b */ { false, 0x9b1b, 0x9b1b }, /* 0x9b1c */ { false, 0x9b1c, 0x9b1c }, /* 0x9b1d */ { false, 0x9b1d, 0x9b1d }, /* 0x9b1e */ { false, 0x9b1e, 0x9b1e }, /* 0x9b1f */ { false, 0x9b1f, 0x9b1f }, /* 0x9b20 */ { false, 0x9b20, 0x9b20 }, /* 0x9b21 */ { false, 0x9b21, 0x9b21 }, /* 0x9b22 */ { false, 0x9b22, 0x9b22 }, /* 0x9b23 */ { false, 0x9b23, 0x9b23 }, /* 0x9b24 */ { false, 0x9b24, 0x9b24 }, /* 0x9b25 */ { false, 0x9b25, 0x9b25 }, /* 0x9b26 */ { false, 0x9b26, 0x9b26 }, /* 0x9b27 */ { false, 0x9b27, 0x9b27 }, /* 0x9b28 */ { false, 0x9b28, 0x9b28 }, /* 0x9b29 */ { false, 0x9b29, 0x9b29 }, /* 0x9b2a */ { false, 0x9b2a, 0x9b2a }, /* 0x9b2b */ { false, 0x9b2b, 0x9b2b }, /* 0x9b2c */ { false, 0x9b2c, 0x9b2c }, /* 0x9b2d */ { false, 0x9b2d, 0x9b2d }, /* 0x9b2e */ { false, 0x9b2e, 0x9b2e }, /* 0x9b2f */ { false, 0x9b2f, 0x9b2f }, /* 0x9b30 */ { false, 0x9b30, 0x9b30 }, /* 0x9b31 */ { false, 0x9b31, 0x9b31 }, /* 0x9b32 */ { false, 0x9b32, 0x9b32 }, /* 0x9b33 */ { false, 0x9b33, 0x9b33 }, /* 0x9b34 */ { false, 0x9b34, 0x9b34 }, /* 0x9b35 */ { false, 0x9b35, 0x9b35 }, /* 0x9b36 */ { false, 0x9b36, 0x9b36 }, /* 0x9b37 */ { false, 0x9b37, 0x9b37 }, /* 0x9b38 */ { false, 0x9b38, 0x9b38 }, /* 0x9b39 */ { false, 0x9b39, 0x9b39 }, /* 0x9b3a */ { false, 0x9b3a, 0x9b3a }, /* 0x9b3b */ { false, 0x9b3b, 0x9b3b }, /* 0x9b3c */ { false, 0x9b3c, 0x9b3c }, /* 0x9b3d */ { false, 0x9b3d, 0x9b3d }, /* 0x9b3e */ { false, 0x9b3e, 0x9b3e }, /* 0x9b3f */ { false, 0x9b3f, 0x9b3f }, /* 0x9b40 */ { false, 0x9b40, 0x9b40 }, /* 0x9b41 */ { false, 0x9b41, 0x9b41 }, /* 0x9b42 */ { false, 0x9b42, 0x9b42 }, /* 0x9b43 */ { false, 0x9b43, 0x9b43 }, /* 0x9b44 */ { false, 0x9b44, 0x9b44 }, /* 0x9b45 */ { false, 0x9b45, 0x9b45 }, /* 0x9b46 */ { false, 0x9b46, 0x9b46 }, /* 0x9b47 */ { false, 0x9b47, 0x9b47 }, /* 0x9b48 */ { false, 0x9b48, 0x9b48 }, /* 0x9b49 */ { false, 0x9b49, 0x9b49 }, /* 0x9b4a */ { false, 0x9b4a, 0x9b4a }, /* 0x9b4b */ { false, 0x9b4b, 0x9b4b }, /* 0x9b4c */ { false, 0x9b4c, 0x9b4c }, /* 0x9b4d */ { false, 0x9b4d, 0x9b4d }, /* 0x9b4e */ { false, 0x9b4e, 0x9b4e }, /* 0x9b4f */ { false, 0x9b4f, 0x9b4f }, /* 0x9b50 */ { false, 0x9b50, 0x9b50 }, /* 0x9b51 */ { false, 0x9b51, 0x9b51 }, /* 0x9b52 */ { false, 0x9b52, 0x9b52 }, /* 0x9b53 */ { false, 0x9b53, 0x9b53 }, /* 0x9b54 */ { false, 0x9b54, 0x9b54 }, /* 0x9b55 */ { false, 0x9b55, 0x9b55 }, /* 0x9b56 */ { false, 0x9b56, 0x9b56 }, /* 0x9b57 */ { false, 0x9b57, 0x9b57 }, /* 0x9b58 */ { false, 0x9b58, 0x9b58 }, /* 0x9b59 */ { false, 0x9b59, 0x9b59 }, /* 0x9b5a */ { false, 0x9b5a, 0x9b5a }, /* 0x9b5b */ { false, 0x9b5b, 0x9b5b }, /* 0x9b5c */ { false, 0x9b5c, 0x9b5c }, /* 0x9b5d */ { false, 0x9b5d, 0x9b5d }, /* 0x9b5e */ { false, 0x9b5e, 0x9b5e }, /* 0x9b5f */ { false, 0x9b5f, 0x9b5f }, /* 0x9b60 */ { false, 0x9b60, 0x9b60 }, /* 0x9b61 */ { false, 0x9b61, 0x9b61 }, /* 0x9b62 */ { false, 0x9b62, 0x9b62 }, /* 0x9b63 */ { false, 0x9b63, 0x9b63 }, /* 0x9b64 */ { false, 0x9b64, 0x9b64 }, /* 0x9b65 */ { false, 0x9b65, 0x9b65 }, /* 0x9b66 */ { false, 0x9b66, 0x9b66 }, /* 0x9b67 */ { false, 0x9b67, 0x9b67 }, /* 0x9b68 */ { false, 0x9b68, 0x9b68 }, /* 0x9b69 */ { false, 0x9b69, 0x9b69 }, /* 0x9b6a */ { false, 0x9b6a, 0x9b6a }, /* 0x9b6b */ { false, 0x9b6b, 0x9b6b }, /* 0x9b6c */ { false, 0x9b6c, 0x9b6c }, /* 0x9b6d */ { false, 0x9b6d, 0x9b6d }, /* 0x9b6e */ { false, 0x9b6e, 0x9b6e }, /* 0x9b6f */ { false, 0x9b6f, 0x9b6f }, /* 0x9b70 */ { false, 0x9b70, 0x9b70 }, /* 0x9b71 */ { false, 0x9b71, 0x9b71 }, /* 0x9b72 */ { false, 0x9b72, 0x9b72 }, /* 0x9b73 */ { false, 0x9b73, 0x9b73 }, /* 0x9b74 */ { false, 0x9b74, 0x9b74 }, /* 0x9b75 */ { false, 0x9b75, 0x9b75 }, /* 0x9b76 */ { false, 0x9b76, 0x9b76 }, /* 0x9b77 */ { false, 0x9b77, 0x9b77 }, /* 0x9b78 */ { false, 0x9b78, 0x9b78 }, /* 0x9b79 */ { false, 0x9b79, 0x9b79 }, /* 0x9b7a */ { false, 0x9b7a, 0x9b7a }, /* 0x9b7b */ { false, 0x9b7b, 0x9b7b }, /* 0x9b7c */ { false, 0x9b7c, 0x9b7c }, /* 0x9b7d */ { false, 0x9b7d, 0x9b7d }, /* 0x9b7e */ { false, 0x9b7e, 0x9b7e }, /* 0x9b7f */ { false, 0x9b7f, 0x9b7f }, /* 0x9b80 */ { false, 0x9b80, 0x9b80 }, /* 0x9b81 */ { false, 0x9b81, 0x9b81 }, /* 0x9b82 */ { false, 0x9b82, 0x9b82 }, /* 0x9b83 */ { false, 0x9b83, 0x9b83 }, /* 0x9b84 */ { false, 0x9b84, 0x9b84 }, /* 0x9b85 */ { false, 0x9b85, 0x9b85 }, /* 0x9b86 */ { false, 0x9b86, 0x9b86 }, /* 0x9b87 */ { false, 0x9b87, 0x9b87 }, /* 0x9b88 */ { false, 0x9b88, 0x9b88 }, /* 0x9b89 */ { false, 0x9b89, 0x9b89 }, /* 0x9b8a */ { false, 0x9b8a, 0x9b8a }, /* 0x9b8b */ { false, 0x9b8b, 0x9b8b }, /* 0x9b8c */ { false, 0x9b8c, 0x9b8c }, /* 0x9b8d */ { false, 0x9b8d, 0x9b8d }, /* 0x9b8e */ { false, 0x9b8e, 0x9b8e }, /* 0x9b8f */ { false, 0x9b8f, 0x9b8f }, /* 0x9b90 */ { false, 0x9b90, 0x9b90 }, /* 0x9b91 */ { false, 0x9b91, 0x9b91 }, /* 0x9b92 */ { false, 0x9b92, 0x9b92 }, /* 0x9b93 */ { false, 0x9b93, 0x9b93 }, /* 0x9b94 */ { false, 0x9b94, 0x9b94 }, /* 0x9b95 */ { false, 0x9b95, 0x9b95 }, /* 0x9b96 */ { false, 0x9b96, 0x9b96 }, /* 0x9b97 */ { false, 0x9b97, 0x9b97 }, /* 0x9b98 */ { false, 0x9b98, 0x9b98 }, /* 0x9b99 */ { false, 0x9b99, 0x9b99 }, /* 0x9b9a */ { false, 0x9b9a, 0x9b9a }, /* 0x9b9b */ { false, 0x9b9b, 0x9b9b }, /* 0x9b9c */ { false, 0x9b9c, 0x9b9c }, /* 0x9b9d */ { false, 0x9b9d, 0x9b9d }, /* 0x9b9e */ { false, 0x9b9e, 0x9b9e }, /* 0x9b9f */ { false, 0x9b9f, 0x9b9f }, /* 0x9ba0 */ { false, 0x9ba0, 0x9ba0 }, /* 0x9ba1 */ { false, 0x9ba1, 0x9ba1 }, /* 0x9ba2 */ { false, 0x9ba2, 0x9ba2 }, /* 0x9ba3 */ { false, 0x9ba3, 0x9ba3 }, /* 0x9ba4 */ { false, 0x9ba4, 0x9ba4 }, /* 0x9ba5 */ { false, 0x9ba5, 0x9ba5 }, /* 0x9ba6 */ { false, 0x9ba6, 0x9ba6 }, /* 0x9ba7 */ { false, 0x9ba7, 0x9ba7 }, /* 0x9ba8 */ { false, 0x9ba8, 0x9ba8 }, /* 0x9ba9 */ { false, 0x9ba9, 0x9ba9 }, /* 0x9baa */ { false, 0x9baa, 0x9baa }, /* 0x9bab */ { false, 0x9bab, 0x9bab }, /* 0x9bac */ { false, 0x9bac, 0x9bac }, /* 0x9bad */ { false, 0x9bad, 0x9bad }, /* 0x9bae */ { false, 0x9bae, 0x9bae }, /* 0x9baf */ { false, 0x9baf, 0x9baf }, /* 0x9bb0 */ { false, 0x9bb0, 0x9bb0 }, /* 0x9bb1 */ { false, 0x9bb1, 0x9bb1 }, /* 0x9bb2 */ { false, 0x9bb2, 0x9bb2 }, /* 0x9bb3 */ { false, 0x9bb3, 0x9bb3 }, /* 0x9bb4 */ { false, 0x9bb4, 0x9bb4 }, /* 0x9bb5 */ { false, 0x9bb5, 0x9bb5 }, /* 0x9bb6 */ { false, 0x9bb6, 0x9bb6 }, /* 0x9bb7 */ { false, 0x9bb7, 0x9bb7 }, /* 0x9bb8 */ { false, 0x9bb8, 0x9bb8 }, /* 0x9bb9 */ { false, 0x9bb9, 0x9bb9 }, /* 0x9bba */ { false, 0x9bba, 0x9bba }, /* 0x9bbb */ { false, 0x9bbb, 0x9bbb }, /* 0x9bbc */ { false, 0x9bbc, 0x9bbc }, /* 0x9bbd */ { false, 0x9bbd, 0x9bbd }, /* 0x9bbe */ { false, 0x9bbe, 0x9bbe }, /* 0x9bbf */ { false, 0x9bbf, 0x9bbf }, /* 0x9bc0 */ { false, 0x9bc0, 0x9bc0 }, /* 0x9bc1 */ { false, 0x9bc1, 0x9bc1 }, /* 0x9bc2 */ { false, 0x9bc2, 0x9bc2 }, /* 0x9bc3 */ { false, 0x9bc3, 0x9bc3 }, /* 0x9bc4 */ { false, 0x9bc4, 0x9bc4 }, /* 0x9bc5 */ { false, 0x9bc5, 0x9bc5 }, /* 0x9bc6 */ { false, 0x9bc6, 0x9bc6 }, /* 0x9bc7 */ { false, 0x9bc7, 0x9bc7 }, /* 0x9bc8 */ { false, 0x9bc8, 0x9bc8 }, /* 0x9bc9 */ { false, 0x9bc9, 0x9bc9 }, /* 0x9bca */ { false, 0x9bca, 0x9bca }, /* 0x9bcb */ { false, 0x9bcb, 0x9bcb }, /* 0x9bcc */ { false, 0x9bcc, 0x9bcc }, /* 0x9bcd */ { false, 0x9bcd, 0x9bcd }, /* 0x9bce */ { false, 0x9bce, 0x9bce }, /* 0x9bcf */ { false, 0x9bcf, 0x9bcf }, /* 0x9bd0 */ { false, 0x9bd0, 0x9bd0 }, /* 0x9bd1 */ { false, 0x9bd1, 0x9bd1 }, /* 0x9bd2 */ { false, 0x9bd2, 0x9bd2 }, /* 0x9bd3 */ { false, 0x9bd3, 0x9bd3 }, /* 0x9bd4 */ { false, 0x9bd4, 0x9bd4 }, /* 0x9bd5 */ { false, 0x9bd5, 0x9bd5 }, /* 0x9bd6 */ { false, 0x9bd6, 0x9bd6 }, /* 0x9bd7 */ { false, 0x9bd7, 0x9bd7 }, /* 0x9bd8 */ { false, 0x9bd8, 0x9bd8 }, /* 0x9bd9 */ { false, 0x9bd9, 0x9bd9 }, /* 0x9bda */ { false, 0x9bda, 0x9bda }, /* 0x9bdb */ { false, 0x9bdb, 0x9bdb }, /* 0x9bdc */ { false, 0x9bdc, 0x9bdc }, /* 0x9bdd */ { false, 0x9bdd, 0x9bdd }, /* 0x9bde */ { false, 0x9bde, 0x9bde }, /* 0x9bdf */ { false, 0x9bdf, 0x9bdf }, /* 0x9be0 */ { false, 0x9be0, 0x9be0 }, /* 0x9be1 */ { false, 0x9be1, 0x9be1 }, /* 0x9be2 */ { false, 0x9be2, 0x9be2 }, /* 0x9be3 */ { false, 0x9be3, 0x9be3 }, /* 0x9be4 */ { false, 0x9be4, 0x9be4 }, /* 0x9be5 */ { false, 0x9be5, 0x9be5 }, /* 0x9be6 */ { false, 0x9be6, 0x9be6 }, /* 0x9be7 */ { false, 0x9be7, 0x9be7 }, /* 0x9be8 */ { false, 0x9be8, 0x9be8 }, /* 0x9be9 */ { false, 0x9be9, 0x9be9 }, /* 0x9bea */ { false, 0x9bea, 0x9bea }, /* 0x9beb */ { false, 0x9beb, 0x9beb }, /* 0x9bec */ { false, 0x9bec, 0x9bec }, /* 0x9bed */ { false, 0x9bed, 0x9bed }, /* 0x9bee */ { false, 0x9bee, 0x9bee }, /* 0x9bef */ { false, 0x9bef, 0x9bef }, /* 0x9bf0 */ { false, 0x9bf0, 0x9bf0 }, /* 0x9bf1 */ { false, 0x9bf1, 0x9bf1 }, /* 0x9bf2 */ { false, 0x9bf2, 0x9bf2 }, /* 0x9bf3 */ { false, 0x9bf3, 0x9bf3 }, /* 0x9bf4 */ { false, 0x9bf4, 0x9bf4 }, /* 0x9bf5 */ { false, 0x9bf5, 0x9bf5 }, /* 0x9bf6 */ { false, 0x9bf6, 0x9bf6 }, /* 0x9bf7 */ { false, 0x9bf7, 0x9bf7 }, /* 0x9bf8 */ { false, 0x9bf8, 0x9bf8 }, /* 0x9bf9 */ { false, 0x9bf9, 0x9bf9 }, /* 0x9bfa */ { false, 0x9bfa, 0x9bfa }, /* 0x9bfb */ { false, 0x9bfb, 0x9bfb }, /* 0x9bfc */ { false, 0x9bfc, 0x9bfc }, /* 0x9bfd */ { false, 0x9bfd, 0x9bfd }, /* 0x9bfe */ { false, 0x9bfe, 0x9bfe }, /* 0x9bff */ { false, 0x9bff, 0x9bff }, /* 0x9c00 */ { false, 0x9c00, 0x9c00 }, /* 0x9c01 */ { false, 0x9c01, 0x9c01 }, /* 0x9c02 */ { false, 0x9c02, 0x9c02 }, /* 0x9c03 */ { false, 0x9c03, 0x9c03 }, /* 0x9c04 */ { false, 0x9c04, 0x9c04 }, /* 0x9c05 */ { false, 0x9c05, 0x9c05 }, /* 0x9c06 */ { false, 0x9c06, 0x9c06 }, /* 0x9c07 */ { false, 0x9c07, 0x9c07 }, /* 0x9c08 */ { false, 0x9c08, 0x9c08 }, /* 0x9c09 */ { false, 0x9c09, 0x9c09 }, /* 0x9c0a */ { false, 0x9c0a, 0x9c0a }, /* 0x9c0b */ { false, 0x9c0b, 0x9c0b }, /* 0x9c0c */ { false, 0x9c0c, 0x9c0c }, /* 0x9c0d */ { false, 0x9c0d, 0x9c0d }, /* 0x9c0e */ { false, 0x9c0e, 0x9c0e }, /* 0x9c0f */ { false, 0x9c0f, 0x9c0f }, /* 0x9c10 */ { false, 0x9c10, 0x9c10 }, /* 0x9c11 */ { false, 0x9c11, 0x9c11 }, /* 0x9c12 */ { false, 0x9c12, 0x9c12 }, /* 0x9c13 */ { false, 0x9c13, 0x9c13 }, /* 0x9c14 */ { false, 0x9c14, 0x9c14 }, /* 0x9c15 */ { false, 0x9c15, 0x9c15 }, /* 0x9c16 */ { false, 0x9c16, 0x9c16 }, /* 0x9c17 */ { false, 0x9c17, 0x9c17 }, /* 0x9c18 */ { false, 0x9c18, 0x9c18 }, /* 0x9c19 */ { false, 0x9c19, 0x9c19 }, /* 0x9c1a */ { false, 0x9c1a, 0x9c1a }, /* 0x9c1b */ { false, 0x9c1b, 0x9c1b }, /* 0x9c1c */ { false, 0x9c1c, 0x9c1c }, /* 0x9c1d */ { false, 0x9c1d, 0x9c1d }, /* 0x9c1e */ { false, 0x9c1e, 0x9c1e }, /* 0x9c1f */ { false, 0x9c1f, 0x9c1f }, /* 0x9c20 */ { false, 0x9c20, 0x9c20 }, /* 0x9c21 */ { false, 0x9c21, 0x9c21 }, /* 0x9c22 */ { false, 0x9c22, 0x9c22 }, /* 0x9c23 */ { false, 0x9c23, 0x9c23 }, /* 0x9c24 */ { false, 0x9c24, 0x9c24 }, /* 0x9c25 */ { false, 0x9c25, 0x9c25 }, /* 0x9c26 */ { false, 0x9c26, 0x9c26 }, /* 0x9c27 */ { false, 0x9c27, 0x9c27 }, /* 0x9c28 */ { false, 0x9c28, 0x9c28 }, /* 0x9c29 */ { false, 0x9c29, 0x9c29 }, /* 0x9c2a */ { false, 0x9c2a, 0x9c2a }, /* 0x9c2b */ { false, 0x9c2b, 0x9c2b }, /* 0x9c2c */ { false, 0x9c2c, 0x9c2c }, /* 0x9c2d */ { false, 0x9c2d, 0x9c2d }, /* 0x9c2e */ { false, 0x9c2e, 0x9c2e }, /* 0x9c2f */ { false, 0x9c2f, 0x9c2f }, /* 0x9c30 */ { false, 0x9c30, 0x9c30 }, /* 0x9c31 */ { false, 0x9c31, 0x9c31 }, /* 0x9c32 */ { false, 0x9c32, 0x9c32 }, /* 0x9c33 */ { false, 0x9c33, 0x9c33 }, /* 0x9c34 */ { false, 0x9c34, 0x9c34 }, /* 0x9c35 */ { false, 0x9c35, 0x9c35 }, /* 0x9c36 */ { false, 0x9c36, 0x9c36 }, /* 0x9c37 */ { false, 0x9c37, 0x9c37 }, /* 0x9c38 */ { false, 0x9c38, 0x9c38 }, /* 0x9c39 */ { false, 0x9c39, 0x9c39 }, /* 0x9c3a */ { false, 0x9c3a, 0x9c3a }, /* 0x9c3b */ { false, 0x9c3b, 0x9c3b }, /* 0x9c3c */ { false, 0x9c3c, 0x9c3c }, /* 0x9c3d */ { false, 0x9c3d, 0x9c3d }, /* 0x9c3e */ { false, 0x9c3e, 0x9c3e }, /* 0x9c3f */ { false, 0x9c3f, 0x9c3f }, /* 0x9c40 */ { false, 0x9c40, 0x9c40 }, /* 0x9c41 */ { false, 0x9c41, 0x9c41 }, /* 0x9c42 */ { false, 0x9c42, 0x9c42 }, /* 0x9c43 */ { false, 0x9c43, 0x9c43 }, /* 0x9c44 */ { false, 0x9c44, 0x9c44 }, /* 0x9c45 */ { false, 0x9c45, 0x9c45 }, /* 0x9c46 */ { false, 0x9c46, 0x9c46 }, /* 0x9c47 */ { false, 0x9c47, 0x9c47 }, /* 0x9c48 */ { false, 0x9c48, 0x9c48 }, /* 0x9c49 */ { false, 0x9c49, 0x9c49 }, /* 0x9c4a */ { false, 0x9c4a, 0x9c4a }, /* 0x9c4b */ { false, 0x9c4b, 0x9c4b }, /* 0x9c4c */ { false, 0x9c4c, 0x9c4c }, /* 0x9c4d */ { false, 0x9c4d, 0x9c4d }, /* 0x9c4e */ { false, 0x9c4e, 0x9c4e }, /* 0x9c4f */ { false, 0x9c4f, 0x9c4f }, /* 0x9c50 */ { false, 0x9c50, 0x9c50 }, /* 0x9c51 */ { false, 0x9c51, 0x9c51 }, /* 0x9c52 */ { false, 0x9c52, 0x9c52 }, /* 0x9c53 */ { false, 0x9c53, 0x9c53 }, /* 0x9c54 */ { false, 0x9c54, 0x9c54 }, /* 0x9c55 */ { false, 0x9c55, 0x9c55 }, /* 0x9c56 */ { false, 0x9c56, 0x9c56 }, /* 0x9c57 */ { false, 0x9c57, 0x9c57 }, /* 0x9c58 */ { false, 0x9c58, 0x9c58 }, /* 0x9c59 */ { false, 0x9c59, 0x9c59 }, /* 0x9c5a */ { false, 0x9c5a, 0x9c5a }, /* 0x9c5b */ { false, 0x9c5b, 0x9c5b }, /* 0x9c5c */ { false, 0x9c5c, 0x9c5c }, /* 0x9c5d */ { false, 0x9c5d, 0x9c5d }, /* 0x9c5e */ { false, 0x9c5e, 0x9c5e }, /* 0x9c5f */ { false, 0x9c5f, 0x9c5f }, /* 0x9c60 */ { false, 0x9c60, 0x9c60 }, /* 0x9c61 */ { false, 0x9c61, 0x9c61 }, /* 0x9c62 */ { false, 0x9c62, 0x9c62 }, /* 0x9c63 */ { false, 0x9c63, 0x9c63 }, /* 0x9c64 */ { false, 0x9c64, 0x9c64 }, /* 0x9c65 */ { false, 0x9c65, 0x9c65 }, /* 0x9c66 */ { false, 0x9c66, 0x9c66 }, /* 0x9c67 */ { false, 0x9c67, 0x9c67 }, /* 0x9c68 */ { false, 0x9c68, 0x9c68 }, /* 0x9c69 */ { false, 0x9c69, 0x9c69 }, /* 0x9c6a */ { false, 0x9c6a, 0x9c6a }, /* 0x9c6b */ { false, 0x9c6b, 0x9c6b }, /* 0x9c6c */ { false, 0x9c6c, 0x9c6c }, /* 0x9c6d */ { false, 0x9c6d, 0x9c6d }, /* 0x9c6e */ { false, 0x9c6e, 0x9c6e }, /* 0x9c6f */ { false, 0x9c6f, 0x9c6f }, /* 0x9c70 */ { false, 0x9c70, 0x9c70 }, /* 0x9c71 */ { false, 0x9c71, 0x9c71 }, /* 0x9c72 */ { false, 0x9c72, 0x9c72 }, /* 0x9c73 */ { false, 0x9c73, 0x9c73 }, /* 0x9c74 */ { false, 0x9c74, 0x9c74 }, /* 0x9c75 */ { false, 0x9c75, 0x9c75 }, /* 0x9c76 */ { false, 0x9c76, 0x9c76 }, /* 0x9c77 */ { false, 0x9c77, 0x9c77 }, /* 0x9c78 */ { false, 0x9c78, 0x9c78 }, /* 0x9c79 */ { false, 0x9c79, 0x9c79 }, /* 0x9c7a */ { false, 0x9c7a, 0x9c7a }, /* 0x9c7b */ { false, 0x9c7b, 0x9c7b }, /* 0x9c7c */ { false, 0x9c7c, 0x9c7c }, /* 0x9c7d */ { false, 0x9c7d, 0x9c7d }, /* 0x9c7e */ { false, 0x9c7e, 0x9c7e }, /* 0x9c7f */ { false, 0x9c7f, 0x9c7f }, /* 0x9c80 */ { false, 0x9c80, 0x9c80 }, /* 0x9c81 */ { false, 0x9c81, 0x9c81 }, /* 0x9c82 */ { false, 0x9c82, 0x9c82 }, /* 0x9c83 */ { false, 0x9c83, 0x9c83 }, /* 0x9c84 */ { false, 0x9c84, 0x9c84 }, /* 0x9c85 */ { false, 0x9c85, 0x9c85 }, /* 0x9c86 */ { false, 0x9c86, 0x9c86 }, /* 0x9c87 */ { false, 0x9c87, 0x9c87 }, /* 0x9c88 */ { false, 0x9c88, 0x9c88 }, /* 0x9c89 */ { false, 0x9c89, 0x9c89 }, /* 0x9c8a */ { false, 0x9c8a, 0x9c8a }, /* 0x9c8b */ { false, 0x9c8b, 0x9c8b }, /* 0x9c8c */ { false, 0x9c8c, 0x9c8c }, /* 0x9c8d */ { false, 0x9c8d, 0x9c8d }, /* 0x9c8e */ { false, 0x9c8e, 0x9c8e }, /* 0x9c8f */ { false, 0x9c8f, 0x9c8f }, /* 0x9c90 */ { false, 0x9c90, 0x9c90 }, /* 0x9c91 */ { false, 0x9c91, 0x9c91 }, /* 0x9c92 */ { false, 0x9c92, 0x9c92 }, /* 0x9c93 */ { false, 0x9c93, 0x9c93 }, /* 0x9c94 */ { false, 0x9c94, 0x9c94 }, /* 0x9c95 */ { false, 0x9c95, 0x9c95 }, /* 0x9c96 */ { false, 0x9c96, 0x9c96 }, /* 0x9c97 */ { false, 0x9c97, 0x9c97 }, /* 0x9c98 */ { false, 0x9c98, 0x9c98 }, /* 0x9c99 */ { false, 0x9c99, 0x9c99 }, /* 0x9c9a */ { false, 0x9c9a, 0x9c9a }, /* 0x9c9b */ { false, 0x9c9b, 0x9c9b }, /* 0x9c9c */ { false, 0x9c9c, 0x9c9c }, /* 0x9c9d */ { false, 0x9c9d, 0x9c9d }, /* 0x9c9e */ { false, 0x9c9e, 0x9c9e }, /* 0x9c9f */ { false, 0x9c9f, 0x9c9f }, /* 0x9ca0 */ { false, 0x9ca0, 0x9ca0 }, /* 0x9ca1 */ { false, 0x9ca1, 0x9ca1 }, /* 0x9ca2 */ { false, 0x9ca2, 0x9ca2 }, /* 0x9ca3 */ { false, 0x9ca3, 0x9ca3 }, /* 0x9ca4 */ { false, 0x9ca4, 0x9ca4 }, /* 0x9ca5 */ { false, 0x9ca5, 0x9ca5 }, /* 0x9ca6 */ { false, 0x9ca6, 0x9ca6 }, /* 0x9ca7 */ { false, 0x9ca7, 0x9ca7 }, /* 0x9ca8 */ { false, 0x9ca8, 0x9ca8 }, /* 0x9ca9 */ { false, 0x9ca9, 0x9ca9 }, /* 0x9caa */ { false, 0x9caa, 0x9caa }, /* 0x9cab */ { false, 0x9cab, 0x9cab }, /* 0x9cac */ { false, 0x9cac, 0x9cac }, /* 0x9cad */ { false, 0x9cad, 0x9cad }, /* 0x9cae */ { false, 0x9cae, 0x9cae }, /* 0x9caf */ { false, 0x9caf, 0x9caf }, /* 0x9cb0 */ { false, 0x9cb0, 0x9cb0 }, /* 0x9cb1 */ { false, 0x9cb1, 0x9cb1 }, /* 0x9cb2 */ { false, 0x9cb2, 0x9cb2 }, /* 0x9cb3 */ { false, 0x9cb3, 0x9cb3 }, /* 0x9cb4 */ { false, 0x9cb4, 0x9cb4 }, /* 0x9cb5 */ { false, 0x9cb5, 0x9cb5 }, /* 0x9cb6 */ { false, 0x9cb6, 0x9cb6 }, /* 0x9cb7 */ { false, 0x9cb7, 0x9cb7 }, /* 0x9cb8 */ { false, 0x9cb8, 0x9cb8 }, /* 0x9cb9 */ { false, 0x9cb9, 0x9cb9 }, /* 0x9cba */ { false, 0x9cba, 0x9cba }, /* 0x9cbb */ { false, 0x9cbb, 0x9cbb }, /* 0x9cbc */ { false, 0x9cbc, 0x9cbc }, /* 0x9cbd */ { false, 0x9cbd, 0x9cbd }, /* 0x9cbe */ { false, 0x9cbe, 0x9cbe }, /* 0x9cbf */ { false, 0x9cbf, 0x9cbf }, /* 0x9cc0 */ { false, 0x9cc0, 0x9cc0 }, /* 0x9cc1 */ { false, 0x9cc1, 0x9cc1 }, /* 0x9cc2 */ { false, 0x9cc2, 0x9cc2 }, /* 0x9cc3 */ { false, 0x9cc3, 0x9cc3 }, /* 0x9cc4 */ { false, 0x9cc4, 0x9cc4 }, /* 0x9cc5 */ { false, 0x9cc5, 0x9cc5 }, /* 0x9cc6 */ { false, 0x9cc6, 0x9cc6 }, /* 0x9cc7 */ { false, 0x9cc7, 0x9cc7 }, /* 0x9cc8 */ { false, 0x9cc8, 0x9cc8 }, /* 0x9cc9 */ { false, 0x9cc9, 0x9cc9 }, /* 0x9cca */ { false, 0x9cca, 0x9cca }, /* 0x9ccb */ { false, 0x9ccb, 0x9ccb }, /* 0x9ccc */ { false, 0x9ccc, 0x9ccc }, /* 0x9ccd */ { false, 0x9ccd, 0x9ccd }, /* 0x9cce */ { false, 0x9cce, 0x9cce }, /* 0x9ccf */ { false, 0x9ccf, 0x9ccf }, /* 0x9cd0 */ { false, 0x9cd0, 0x9cd0 }, /* 0x9cd1 */ { false, 0x9cd1, 0x9cd1 }, /* 0x9cd2 */ { false, 0x9cd2, 0x9cd2 }, /* 0x9cd3 */ { false, 0x9cd3, 0x9cd3 }, /* 0x9cd4 */ { false, 0x9cd4, 0x9cd4 }, /* 0x9cd5 */ { false, 0x9cd5, 0x9cd5 }, /* 0x9cd6 */ { false, 0x9cd6, 0x9cd6 }, /* 0x9cd7 */ { false, 0x9cd7, 0x9cd7 }, /* 0x9cd8 */ { false, 0x9cd8, 0x9cd8 }, /* 0x9cd9 */ { false, 0x9cd9, 0x9cd9 }, /* 0x9cda */ { false, 0x9cda, 0x9cda }, /* 0x9cdb */ { false, 0x9cdb, 0x9cdb }, /* 0x9cdc */ { false, 0x9cdc, 0x9cdc }, /* 0x9cdd */ { false, 0x9cdd, 0x9cdd }, /* 0x9cde */ { false, 0x9cde, 0x9cde }, /* 0x9cdf */ { false, 0x9cdf, 0x9cdf }, /* 0x9ce0 */ { false, 0x9ce0, 0x9ce0 }, /* 0x9ce1 */ { false, 0x9ce1, 0x9ce1 }, /* 0x9ce2 */ { false, 0x9ce2, 0x9ce2 }, /* 0x9ce3 */ { false, 0x9ce3, 0x9ce3 }, /* 0x9ce4 */ { false, 0x9ce4, 0x9ce4 }, /* 0x9ce5 */ { false, 0x9ce5, 0x9ce5 }, /* 0x9ce6 */ { false, 0x9ce6, 0x9ce6 }, /* 0x9ce7 */ { false, 0x9ce7, 0x9ce7 }, /* 0x9ce8 */ { false, 0x9ce8, 0x9ce8 }, /* 0x9ce9 */ { false, 0x9ce9, 0x9ce9 }, /* 0x9cea */ { false, 0x9cea, 0x9cea }, /* 0x9ceb */ { false, 0x9ceb, 0x9ceb }, /* 0x9cec */ { false, 0x9cec, 0x9cec }, /* 0x9ced */ { false, 0x9ced, 0x9ced }, /* 0x9cee */ { false, 0x9cee, 0x9cee }, /* 0x9cef */ { false, 0x9cef, 0x9cef }, /* 0x9cf0 */ { false, 0x9cf0, 0x9cf0 }, /* 0x9cf1 */ { false, 0x9cf1, 0x9cf1 }, /* 0x9cf2 */ { false, 0x9cf2, 0x9cf2 }, /* 0x9cf3 */ { false, 0x9cf3, 0x9cf3 }, /* 0x9cf4 */ { false, 0x9cf4, 0x9cf4 }, /* 0x9cf5 */ { false, 0x9cf5, 0x9cf5 }, /* 0x9cf6 */ { false, 0x9cf6, 0x9cf6 }, /* 0x9cf7 */ { false, 0x9cf7, 0x9cf7 }, /* 0x9cf8 */ { false, 0x9cf8, 0x9cf8 }, /* 0x9cf9 */ { false, 0x9cf9, 0x9cf9 }, /* 0x9cfa */ { false, 0x9cfa, 0x9cfa }, /* 0x9cfb */ { false, 0x9cfb, 0x9cfb }, /* 0x9cfc */ { false, 0x9cfc, 0x9cfc }, /* 0x9cfd */ { false, 0x9cfd, 0x9cfd }, /* 0x9cfe */ { false, 0x9cfe, 0x9cfe }, /* 0x9cff */ { false, 0x9cff, 0x9cff }, /* 0x9d00 */ { false, 0x9d00, 0x9d00 }, /* 0x9d01 */ { false, 0x9d01, 0x9d01 }, /* 0x9d02 */ { false, 0x9d02, 0x9d02 }, /* 0x9d03 */ { false, 0x9d03, 0x9d03 }, /* 0x9d04 */ { false, 0x9d04, 0x9d04 }, /* 0x9d05 */ { false, 0x9d05, 0x9d05 }, /* 0x9d06 */ { false, 0x9d06, 0x9d06 }, /* 0x9d07 */ { false, 0x9d07, 0x9d07 }, /* 0x9d08 */ { false, 0x9d08, 0x9d08 }, /* 0x9d09 */ { false, 0x9d09, 0x9d09 }, /* 0x9d0a */ { false, 0x9d0a, 0x9d0a }, /* 0x9d0b */ { false, 0x9d0b, 0x9d0b }, /* 0x9d0c */ { false, 0x9d0c, 0x9d0c }, /* 0x9d0d */ { false, 0x9d0d, 0x9d0d }, /* 0x9d0e */ { false, 0x9d0e, 0x9d0e }, /* 0x9d0f */ { false, 0x9d0f, 0x9d0f }, /* 0x9d10 */ { false, 0x9d10, 0x9d10 }, /* 0x9d11 */ { false, 0x9d11, 0x9d11 }, /* 0x9d12 */ { false, 0x9d12, 0x9d12 }, /* 0x9d13 */ { false, 0x9d13, 0x9d13 }, /* 0x9d14 */ { false, 0x9d14, 0x9d14 }, /* 0x9d15 */ { false, 0x9d15, 0x9d15 }, /* 0x9d16 */ { false, 0x9d16, 0x9d16 }, /* 0x9d17 */ { false, 0x9d17, 0x9d17 }, /* 0x9d18 */ { false, 0x9d18, 0x9d18 }, /* 0x9d19 */ { false, 0x9d19, 0x9d19 }, /* 0x9d1a */ { false, 0x9d1a, 0x9d1a }, /* 0x9d1b */ { false, 0x9d1b, 0x9d1b }, /* 0x9d1c */ { false, 0x9d1c, 0x9d1c }, /* 0x9d1d */ { false, 0x9d1d, 0x9d1d }, /* 0x9d1e */ { false, 0x9d1e, 0x9d1e }, /* 0x9d1f */ { false, 0x9d1f, 0x9d1f }, /* 0x9d20 */ { false, 0x9d20, 0x9d20 }, /* 0x9d21 */ { false, 0x9d21, 0x9d21 }, /* 0x9d22 */ { false, 0x9d22, 0x9d22 }, /* 0x9d23 */ { false, 0x9d23, 0x9d23 }, /* 0x9d24 */ { false, 0x9d24, 0x9d24 }, /* 0x9d25 */ { false, 0x9d25, 0x9d25 }, /* 0x9d26 */ { false, 0x9d26, 0x9d26 }, /* 0x9d27 */ { false, 0x9d27, 0x9d27 }, /* 0x9d28 */ { false, 0x9d28, 0x9d28 }, /* 0x9d29 */ { false, 0x9d29, 0x9d29 }, /* 0x9d2a */ { false, 0x9d2a, 0x9d2a }, /* 0x9d2b */ { false, 0x9d2b, 0x9d2b }, /* 0x9d2c */ { false, 0x9d2c, 0x9d2c }, /* 0x9d2d */ { false, 0x9d2d, 0x9d2d }, /* 0x9d2e */ { false, 0x9d2e, 0x9d2e }, /* 0x9d2f */ { false, 0x9d2f, 0x9d2f }, /* 0x9d30 */ { false, 0x9d30, 0x9d30 }, /* 0x9d31 */ { false, 0x9d31, 0x9d31 }, /* 0x9d32 */ { false, 0x9d32, 0x9d32 }, /* 0x9d33 */ { false, 0x9d33, 0x9d33 }, /* 0x9d34 */ { false, 0x9d34, 0x9d34 }, /* 0x9d35 */ { false, 0x9d35, 0x9d35 }, /* 0x9d36 */ { false, 0x9d36, 0x9d36 }, /* 0x9d37 */ { false, 0x9d37, 0x9d37 }, /* 0x9d38 */ { false, 0x9d38, 0x9d38 }, /* 0x9d39 */ { false, 0x9d39, 0x9d39 }, /* 0x9d3a */ { false, 0x9d3a, 0x9d3a }, /* 0x9d3b */ { false, 0x9d3b, 0x9d3b }, /* 0x9d3c */ { false, 0x9d3c, 0x9d3c }, /* 0x9d3d */ { false, 0x9d3d, 0x9d3d }, /* 0x9d3e */ { false, 0x9d3e, 0x9d3e }, /* 0x9d3f */ { false, 0x9d3f, 0x9d3f }, /* 0x9d40 */ { false, 0x9d40, 0x9d40 }, /* 0x9d41 */ { false, 0x9d41, 0x9d41 }, /* 0x9d42 */ { false, 0x9d42, 0x9d42 }, /* 0x9d43 */ { false, 0x9d43, 0x9d43 }, /* 0x9d44 */ { false, 0x9d44, 0x9d44 }, /* 0x9d45 */ { false, 0x9d45, 0x9d45 }, /* 0x9d46 */ { false, 0x9d46, 0x9d46 }, /* 0x9d47 */ { false, 0x9d47, 0x9d47 }, /* 0x9d48 */ { false, 0x9d48, 0x9d48 }, /* 0x9d49 */ { false, 0x9d49, 0x9d49 }, /* 0x9d4a */ { false, 0x9d4a, 0x9d4a }, /* 0x9d4b */ { false, 0x9d4b, 0x9d4b }, /* 0x9d4c */ { false, 0x9d4c, 0x9d4c }, /* 0x9d4d */ { false, 0x9d4d, 0x9d4d }, /* 0x9d4e */ { false, 0x9d4e, 0x9d4e }, /* 0x9d4f */ { false, 0x9d4f, 0x9d4f }, /* 0x9d50 */ { false, 0x9d50, 0x9d50 }, /* 0x9d51 */ { false, 0x9d51, 0x9d51 }, /* 0x9d52 */ { false, 0x9d52, 0x9d52 }, /* 0x9d53 */ { false, 0x9d53, 0x9d53 }, /* 0x9d54 */ { false, 0x9d54, 0x9d54 }, /* 0x9d55 */ { false, 0x9d55, 0x9d55 }, /* 0x9d56 */ { false, 0x9d56, 0x9d56 }, /* 0x9d57 */ { false, 0x9d57, 0x9d57 }, /* 0x9d58 */ { false, 0x9d58, 0x9d58 }, /* 0x9d59 */ { false, 0x9d59, 0x9d59 }, /* 0x9d5a */ { false, 0x9d5a, 0x9d5a }, /* 0x9d5b */ { false, 0x9d5b, 0x9d5b }, /* 0x9d5c */ { false, 0x9d5c, 0x9d5c }, /* 0x9d5d */ { false, 0x9d5d, 0x9d5d }, /* 0x9d5e */ { false, 0x9d5e, 0x9d5e }, /* 0x9d5f */ { false, 0x9d5f, 0x9d5f }, /* 0x9d60 */ { false, 0x9d60, 0x9d60 }, /* 0x9d61 */ { false, 0x9d61, 0x9d61 }, /* 0x9d62 */ { false, 0x9d62, 0x9d62 }, /* 0x9d63 */ { false, 0x9d63, 0x9d63 }, /* 0x9d64 */ { false, 0x9d64, 0x9d64 }, /* 0x9d65 */ { false, 0x9d65, 0x9d65 }, /* 0x9d66 */ { false, 0x9d66, 0x9d66 }, /* 0x9d67 */ { false, 0x9d67, 0x9d67 }, /* 0x9d68 */ { false, 0x9d68, 0x9d68 }, /* 0x9d69 */ { false, 0x9d69, 0x9d69 }, /* 0x9d6a */ { false, 0x9d6a, 0x9d6a }, /* 0x9d6b */ { false, 0x9d6b, 0x9d6b }, /* 0x9d6c */ { false, 0x9d6c, 0x9d6c }, /* 0x9d6d */ { false, 0x9d6d, 0x9d6d }, /* 0x9d6e */ { false, 0x9d6e, 0x9d6e }, /* 0x9d6f */ { false, 0x9d6f, 0x9d6f }, /* 0x9d70 */ { false, 0x9d70, 0x9d70 }, /* 0x9d71 */ { false, 0x9d71, 0x9d71 }, /* 0x9d72 */ { false, 0x9d72, 0x9d72 }, /* 0x9d73 */ { false, 0x9d73, 0x9d73 }, /* 0x9d74 */ { false, 0x9d74, 0x9d74 }, /* 0x9d75 */ { false, 0x9d75, 0x9d75 }, /* 0x9d76 */ { false, 0x9d76, 0x9d76 }, /* 0x9d77 */ { false, 0x9d77, 0x9d77 }, /* 0x9d78 */ { false, 0x9d78, 0x9d78 }, /* 0x9d79 */ { false, 0x9d79, 0x9d79 }, /* 0x9d7a */ { false, 0x9d7a, 0x9d7a }, /* 0x9d7b */ { false, 0x9d7b, 0x9d7b }, /* 0x9d7c */ { false, 0x9d7c, 0x9d7c }, /* 0x9d7d */ { false, 0x9d7d, 0x9d7d }, /* 0x9d7e */ { false, 0x9d7e, 0x9d7e }, /* 0x9d7f */ { false, 0x9d7f, 0x9d7f }, /* 0x9d80 */ { false, 0x9d80, 0x9d80 }, /* 0x9d81 */ { false, 0x9d81, 0x9d81 }, /* 0x9d82 */ { false, 0x9d82, 0x9d82 }, /* 0x9d83 */ { false, 0x9d83, 0x9d83 }, /* 0x9d84 */ { false, 0x9d84, 0x9d84 }, /* 0x9d85 */ { false, 0x9d85, 0x9d85 }, /* 0x9d86 */ { false, 0x9d86, 0x9d86 }, /* 0x9d87 */ { false, 0x9d87, 0x9d87 }, /* 0x9d88 */ { false, 0x9d88, 0x9d88 }, /* 0x9d89 */ { false, 0x9d89, 0x9d89 }, /* 0x9d8a */ { false, 0x9d8a, 0x9d8a }, /* 0x9d8b */ { false, 0x9d8b, 0x9d8b }, /* 0x9d8c */ { false, 0x9d8c, 0x9d8c }, /* 0x9d8d */ { false, 0x9d8d, 0x9d8d }, /* 0x9d8e */ { false, 0x9d8e, 0x9d8e }, /* 0x9d8f */ { false, 0x9d8f, 0x9d8f }, /* 0x9d90 */ { false, 0x9d90, 0x9d90 }, /* 0x9d91 */ { false, 0x9d91, 0x9d91 }, /* 0x9d92 */ { false, 0x9d92, 0x9d92 }, /* 0x9d93 */ { false, 0x9d93, 0x9d93 }, /* 0x9d94 */ { false, 0x9d94, 0x9d94 }, /* 0x9d95 */ { false, 0x9d95, 0x9d95 }, /* 0x9d96 */ { false, 0x9d96, 0x9d96 }, /* 0x9d97 */ { false, 0x9d97, 0x9d97 }, /* 0x9d98 */ { false, 0x9d98, 0x9d98 }, /* 0x9d99 */ { false, 0x9d99, 0x9d99 }, /* 0x9d9a */ { false, 0x9d9a, 0x9d9a }, /* 0x9d9b */ { false, 0x9d9b, 0x9d9b }, /* 0x9d9c */ { false, 0x9d9c, 0x9d9c }, /* 0x9d9d */ { false, 0x9d9d, 0x9d9d }, /* 0x9d9e */ { false, 0x9d9e, 0x9d9e }, /* 0x9d9f */ { false, 0x9d9f, 0x9d9f }, /* 0x9da0 */ { false, 0x9da0, 0x9da0 }, /* 0x9da1 */ { false, 0x9da1, 0x9da1 }, /* 0x9da2 */ { false, 0x9da2, 0x9da2 }, /* 0x9da3 */ { false, 0x9da3, 0x9da3 }, /* 0x9da4 */ { false, 0x9da4, 0x9da4 }, /* 0x9da5 */ { false, 0x9da5, 0x9da5 }, /* 0x9da6 */ { false, 0x9da6, 0x9da6 }, /* 0x9da7 */ { false, 0x9da7, 0x9da7 }, /* 0x9da8 */ { false, 0x9da8, 0x9da8 }, /* 0x9da9 */ { false, 0x9da9, 0x9da9 }, /* 0x9daa */ { false, 0x9daa, 0x9daa }, /* 0x9dab */ { false, 0x9dab, 0x9dab }, /* 0x9dac */ { false, 0x9dac, 0x9dac }, /* 0x9dad */ { false, 0x9dad, 0x9dad }, /* 0x9dae */ { false, 0x9dae, 0x9dae }, /* 0x9daf */ { false, 0x9daf, 0x9daf }, /* 0x9db0 */ { false, 0x9db0, 0x9db0 }, /* 0x9db1 */ { false, 0x9db1, 0x9db1 }, /* 0x9db2 */ { false, 0x9db2, 0x9db2 }, /* 0x9db3 */ { false, 0x9db3, 0x9db3 }, /* 0x9db4 */ { false, 0x9db4, 0x9db4 }, /* 0x9db5 */ { false, 0x9db5, 0x9db5 }, /* 0x9db6 */ { false, 0x9db6, 0x9db6 }, /* 0x9db7 */ { false, 0x9db7, 0x9db7 }, /* 0x9db8 */ { false, 0x9db8, 0x9db8 }, /* 0x9db9 */ { false, 0x9db9, 0x9db9 }, /* 0x9dba */ { false, 0x9dba, 0x9dba }, /* 0x9dbb */ { false, 0x9dbb, 0x9dbb }, /* 0x9dbc */ { false, 0x9dbc, 0x9dbc }, /* 0x9dbd */ { false, 0x9dbd, 0x9dbd }, /* 0x9dbe */ { false, 0x9dbe, 0x9dbe }, /* 0x9dbf */ { false, 0x9dbf, 0x9dbf }, /* 0x9dc0 */ { false, 0x9dc0, 0x9dc0 }, /* 0x9dc1 */ { false, 0x9dc1, 0x9dc1 }, /* 0x9dc2 */ { false, 0x9dc2, 0x9dc2 }, /* 0x9dc3 */ { false, 0x9dc3, 0x9dc3 }, /* 0x9dc4 */ { false, 0x9dc4, 0x9dc4 }, /* 0x9dc5 */ { false, 0x9dc5, 0x9dc5 }, /* 0x9dc6 */ { false, 0x9dc6, 0x9dc6 }, /* 0x9dc7 */ { false, 0x9dc7, 0x9dc7 }, /* 0x9dc8 */ { false, 0x9dc8, 0x9dc8 }, /* 0x9dc9 */ { false, 0x9dc9, 0x9dc9 }, /* 0x9dca */ { false, 0x9dca, 0x9dca }, /* 0x9dcb */ { false, 0x9dcb, 0x9dcb }, /* 0x9dcc */ { false, 0x9dcc, 0x9dcc }, /* 0x9dcd */ { false, 0x9dcd, 0x9dcd }, /* 0x9dce */ { false, 0x9dce, 0x9dce }, /* 0x9dcf */ { false, 0x9dcf, 0x9dcf }, /* 0x9dd0 */ { false, 0x9dd0, 0x9dd0 }, /* 0x9dd1 */ { false, 0x9dd1, 0x9dd1 }, /* 0x9dd2 */ { false, 0x9dd2, 0x9dd2 }, /* 0x9dd3 */ { false, 0x9dd3, 0x9dd3 }, /* 0x9dd4 */ { false, 0x9dd4, 0x9dd4 }, /* 0x9dd5 */ { false, 0x9dd5, 0x9dd5 }, /* 0x9dd6 */ { false, 0x9dd6, 0x9dd6 }, /* 0x9dd7 */ { false, 0x9dd7, 0x9dd7 }, /* 0x9dd8 */ { false, 0x9dd8, 0x9dd8 }, /* 0x9dd9 */ { false, 0x9dd9, 0x9dd9 }, /* 0x9dda */ { false, 0x9dda, 0x9dda }, /* 0x9ddb */ { false, 0x9ddb, 0x9ddb }, /* 0x9ddc */ { false, 0x9ddc, 0x9ddc }, /* 0x9ddd */ { false, 0x9ddd, 0x9ddd }, /* 0x9dde */ { false, 0x9dde, 0x9dde }, /* 0x9ddf */ { false, 0x9ddf, 0x9ddf }, /* 0x9de0 */ { false, 0x9de0, 0x9de0 }, /* 0x9de1 */ { false, 0x9de1, 0x9de1 }, /* 0x9de2 */ { false, 0x9de2, 0x9de2 }, /* 0x9de3 */ { false, 0x9de3, 0x9de3 }, /* 0x9de4 */ { false, 0x9de4, 0x9de4 }, /* 0x9de5 */ { false, 0x9de5, 0x9de5 }, /* 0x9de6 */ { false, 0x9de6, 0x9de6 }, /* 0x9de7 */ { false, 0x9de7, 0x9de7 }, /* 0x9de8 */ { false, 0x9de8, 0x9de8 }, /* 0x9de9 */ { false, 0x9de9, 0x9de9 }, /* 0x9dea */ { false, 0x9dea, 0x9dea }, /* 0x9deb */ { false, 0x9deb, 0x9deb }, /* 0x9dec */ { false, 0x9dec, 0x9dec }, /* 0x9ded */ { false, 0x9ded, 0x9ded }, /* 0x9dee */ { false, 0x9dee, 0x9dee }, /* 0x9def */ { false, 0x9def, 0x9def }, /* 0x9df0 */ { false, 0x9df0, 0x9df0 }, /* 0x9df1 */ { false, 0x9df1, 0x9df1 }, /* 0x9df2 */ { false, 0x9df2, 0x9df2 }, /* 0x9df3 */ { false, 0x9df3, 0x9df3 }, /* 0x9df4 */ { false, 0x9df4, 0x9df4 }, /* 0x9df5 */ { false, 0x9df5, 0x9df5 }, /* 0x9df6 */ { false, 0x9df6, 0x9df6 }, /* 0x9df7 */ { false, 0x9df7, 0x9df7 }, /* 0x9df8 */ { false, 0x9df8, 0x9df8 }, /* 0x9df9 */ { false, 0x9df9, 0x9df9 }, /* 0x9dfa */ { false, 0x9dfa, 0x9dfa }, /* 0x9dfb */ { false, 0x9dfb, 0x9dfb }, /* 0x9dfc */ { false, 0x9dfc, 0x9dfc }, /* 0x9dfd */ { false, 0x9dfd, 0x9dfd }, /* 0x9dfe */ { false, 0x9dfe, 0x9dfe }, /* 0x9dff */ { false, 0x9dff, 0x9dff }, /* 0x9e00 */ { false, 0x9e00, 0x9e00 }, /* 0x9e01 */ { false, 0x9e01, 0x9e01 }, /* 0x9e02 */ { false, 0x9e02, 0x9e02 }, /* 0x9e03 */ { false, 0x9e03, 0x9e03 }, /* 0x9e04 */ { false, 0x9e04, 0x9e04 }, /* 0x9e05 */ { false, 0x9e05, 0x9e05 }, /* 0x9e06 */ { false, 0x9e06, 0x9e06 }, /* 0x9e07 */ { false, 0x9e07, 0x9e07 }, /* 0x9e08 */ { false, 0x9e08, 0x9e08 }, /* 0x9e09 */ { false, 0x9e09, 0x9e09 }, /* 0x9e0a */ { false, 0x9e0a, 0x9e0a }, /* 0x9e0b */ { false, 0x9e0b, 0x9e0b }, /* 0x9e0c */ { false, 0x9e0c, 0x9e0c }, /* 0x9e0d */ { false, 0x9e0d, 0x9e0d }, /* 0x9e0e */ { false, 0x9e0e, 0x9e0e }, /* 0x9e0f */ { false, 0x9e0f, 0x9e0f }, /* 0x9e10 */ { false, 0x9e10, 0x9e10 }, /* 0x9e11 */ { false, 0x9e11, 0x9e11 }, /* 0x9e12 */ { false, 0x9e12, 0x9e12 }, /* 0x9e13 */ { false, 0x9e13, 0x9e13 }, /* 0x9e14 */ { false, 0x9e14, 0x9e14 }, /* 0x9e15 */ { false, 0x9e15, 0x9e15 }, /* 0x9e16 */ { false, 0x9e16, 0x9e16 }, /* 0x9e17 */ { false, 0x9e17, 0x9e17 }, /* 0x9e18 */ { false, 0x9e18, 0x9e18 }, /* 0x9e19 */ { false, 0x9e19, 0x9e19 }, /* 0x9e1a */ { false, 0x9e1a, 0x9e1a }, /* 0x9e1b */ { false, 0x9e1b, 0x9e1b }, /* 0x9e1c */ { false, 0x9e1c, 0x9e1c }, /* 0x9e1d */ { false, 0x9e1d, 0x9e1d }, /* 0x9e1e */ { false, 0x9e1e, 0x9e1e }, /* 0x9e1f */ { false, 0x9e1f, 0x9e1f }, /* 0x9e20 */ { false, 0x9e20, 0x9e20 }, /* 0x9e21 */ { false, 0x9e21, 0x9e21 }, /* 0x9e22 */ { false, 0x9e22, 0x9e22 }, /* 0x9e23 */ { false, 0x9e23, 0x9e23 }, /* 0x9e24 */ { false, 0x9e24, 0x9e24 }, /* 0x9e25 */ { false, 0x9e25, 0x9e25 }, /* 0x9e26 */ { false, 0x9e26, 0x9e26 }, /* 0x9e27 */ { false, 0x9e27, 0x9e27 }, /* 0x9e28 */ { false, 0x9e28, 0x9e28 }, /* 0x9e29 */ { false, 0x9e29, 0x9e29 }, /* 0x9e2a */ { false, 0x9e2a, 0x9e2a }, /* 0x9e2b */ { false, 0x9e2b, 0x9e2b }, /* 0x9e2c */ { false, 0x9e2c, 0x9e2c }, /* 0x9e2d */ { false, 0x9e2d, 0x9e2d }, /* 0x9e2e */ { false, 0x9e2e, 0x9e2e }, /* 0x9e2f */ { false, 0x9e2f, 0x9e2f }, /* 0x9e30 */ { false, 0x9e30, 0x9e30 }, /* 0x9e31 */ { false, 0x9e31, 0x9e31 }, /* 0x9e32 */ { false, 0x9e32, 0x9e32 }, /* 0x9e33 */ { false, 0x9e33, 0x9e33 }, /* 0x9e34 */ { false, 0x9e34, 0x9e34 }, /* 0x9e35 */ { false, 0x9e35, 0x9e35 }, /* 0x9e36 */ { false, 0x9e36, 0x9e36 }, /* 0x9e37 */ { false, 0x9e37, 0x9e37 }, /* 0x9e38 */ { false, 0x9e38, 0x9e38 }, /* 0x9e39 */ { false, 0x9e39, 0x9e39 }, /* 0x9e3a */ { false, 0x9e3a, 0x9e3a }, /* 0x9e3b */ { false, 0x9e3b, 0x9e3b }, /* 0x9e3c */ { false, 0x9e3c, 0x9e3c }, /* 0x9e3d */ { false, 0x9e3d, 0x9e3d }, /* 0x9e3e */ { false, 0x9e3e, 0x9e3e }, /* 0x9e3f */ { false, 0x9e3f, 0x9e3f }, /* 0x9e40 */ { false, 0x9e40, 0x9e40 }, /* 0x9e41 */ { false, 0x9e41, 0x9e41 }, /* 0x9e42 */ { false, 0x9e42, 0x9e42 }, /* 0x9e43 */ { false, 0x9e43, 0x9e43 }, /* 0x9e44 */ { false, 0x9e44, 0x9e44 }, /* 0x9e45 */ { false, 0x9e45, 0x9e45 }, /* 0x9e46 */ { false, 0x9e46, 0x9e46 }, /* 0x9e47 */ { false, 0x9e47, 0x9e47 }, /* 0x9e48 */ { false, 0x9e48, 0x9e48 }, /* 0x9e49 */ { false, 0x9e49, 0x9e49 }, /* 0x9e4a */ { false, 0x9e4a, 0x9e4a }, /* 0x9e4b */ { false, 0x9e4b, 0x9e4b }, /* 0x9e4c */ { false, 0x9e4c, 0x9e4c }, /* 0x9e4d */ { false, 0x9e4d, 0x9e4d }, /* 0x9e4e */ { false, 0x9e4e, 0x9e4e }, /* 0x9e4f */ { false, 0x9e4f, 0x9e4f }, /* 0x9e50 */ { false, 0x9e50, 0x9e50 }, /* 0x9e51 */ { false, 0x9e51, 0x9e51 }, /* 0x9e52 */ { false, 0x9e52, 0x9e52 }, /* 0x9e53 */ { false, 0x9e53, 0x9e53 }, /* 0x9e54 */ { false, 0x9e54, 0x9e54 }, /* 0x9e55 */ { false, 0x9e55, 0x9e55 }, /* 0x9e56 */ { false, 0x9e56, 0x9e56 }, /* 0x9e57 */ { false, 0x9e57, 0x9e57 }, /* 0x9e58 */ { false, 0x9e58, 0x9e58 }, /* 0x9e59 */ { false, 0x9e59, 0x9e59 }, /* 0x9e5a */ { false, 0x9e5a, 0x9e5a }, /* 0x9e5b */ { false, 0x9e5b, 0x9e5b }, /* 0x9e5c */ { false, 0x9e5c, 0x9e5c }, /* 0x9e5d */ { false, 0x9e5d, 0x9e5d }, /* 0x9e5e */ { false, 0x9e5e, 0x9e5e }, /* 0x9e5f */ { false, 0x9e5f, 0x9e5f }, /* 0x9e60 */ { false, 0x9e60, 0x9e60 }, /* 0x9e61 */ { false, 0x9e61, 0x9e61 }, /* 0x9e62 */ { false, 0x9e62, 0x9e62 }, /* 0x9e63 */ { false, 0x9e63, 0x9e63 }, /* 0x9e64 */ { false, 0x9e64, 0x9e64 }, /* 0x9e65 */ { false, 0x9e65, 0x9e65 }, /* 0x9e66 */ { false, 0x9e66, 0x9e66 }, /* 0x9e67 */ { false, 0x9e67, 0x9e67 }, /* 0x9e68 */ { false, 0x9e68, 0x9e68 }, /* 0x9e69 */ { false, 0x9e69, 0x9e69 }, /* 0x9e6a */ { false, 0x9e6a, 0x9e6a }, /* 0x9e6b */ { false, 0x9e6b, 0x9e6b }, /* 0x9e6c */ { false, 0x9e6c, 0x9e6c }, /* 0x9e6d */ { false, 0x9e6d, 0x9e6d }, /* 0x9e6e */ { false, 0x9e6e, 0x9e6e }, /* 0x9e6f */ { false, 0x9e6f, 0x9e6f }, /* 0x9e70 */ { false, 0x9e70, 0x9e70 }, /* 0x9e71 */ { false, 0x9e71, 0x9e71 }, /* 0x9e72 */ { false, 0x9e72, 0x9e72 }, /* 0x9e73 */ { false, 0x9e73, 0x9e73 }, /* 0x9e74 */ { false, 0x9e74, 0x9e74 }, /* 0x9e75 */ { false, 0x9e75, 0x9e75 }, /* 0x9e76 */ { false, 0x9e76, 0x9e76 }, /* 0x9e77 */ { false, 0x9e77, 0x9e77 }, /* 0x9e78 */ { false, 0x9e78, 0x9e78 }, /* 0x9e79 */ { false, 0x9e79, 0x9e79 }, /* 0x9e7a */ { false, 0x9e7a, 0x9e7a }, /* 0x9e7b */ { false, 0x9e7b, 0x9e7b }, /* 0x9e7c */ { false, 0x9e7c, 0x9e7c }, /* 0x9e7d */ { false, 0x9e7d, 0x9e7d }, /* 0x9e7e */ { false, 0x9e7e, 0x9e7e }, /* 0x9e7f */ { false, 0x9e7f, 0x9e7f }, /* 0x9e80 */ { false, 0x9e80, 0x9e80 }, /* 0x9e81 */ { false, 0x9e81, 0x9e81 }, /* 0x9e82 */ { false, 0x9e82, 0x9e82 }, /* 0x9e83 */ { false, 0x9e83, 0x9e83 }, /* 0x9e84 */ { false, 0x9e84, 0x9e84 }, /* 0x9e85 */ { false, 0x9e85, 0x9e85 }, /* 0x9e86 */ { false, 0x9e86, 0x9e86 }, /* 0x9e87 */ { false, 0x9e87, 0x9e87 }, /* 0x9e88 */ { false, 0x9e88, 0x9e88 }, /* 0x9e89 */ { false, 0x9e89, 0x9e89 }, /* 0x9e8a */ { false, 0x9e8a, 0x9e8a }, /* 0x9e8b */ { false, 0x9e8b, 0x9e8b }, /* 0x9e8c */ { false, 0x9e8c, 0x9e8c }, /* 0x9e8d */ { false, 0x9e8d, 0x9e8d }, /* 0x9e8e */ { false, 0x9e8e, 0x9e8e }, /* 0x9e8f */ { false, 0x9e8f, 0x9e8f }, /* 0x9e90 */ { false, 0x9e90, 0x9e90 }, /* 0x9e91 */ { false, 0x9e91, 0x9e91 }, /* 0x9e92 */ { false, 0x9e92, 0x9e92 }, /* 0x9e93 */ { false, 0x9e93, 0x9e93 }, /* 0x9e94 */ { false, 0x9e94, 0x9e94 }, /* 0x9e95 */ { false, 0x9e95, 0x9e95 }, /* 0x9e96 */ { false, 0x9e96, 0x9e96 }, /* 0x9e97 */ { false, 0x9e97, 0x9e97 }, /* 0x9e98 */ { false, 0x9e98, 0x9e98 }, /* 0x9e99 */ { false, 0x9e99, 0x9e99 }, /* 0x9e9a */ { false, 0x9e9a, 0x9e9a }, /* 0x9e9b */ { false, 0x9e9b, 0x9e9b }, /* 0x9e9c */ { false, 0x9e9c, 0x9e9c }, /* 0x9e9d */ { false, 0x9e9d, 0x9e9d }, /* 0x9e9e */ { false, 0x9e9e, 0x9e9e }, /* 0x9e9f */ { false, 0x9e9f, 0x9e9f }, /* 0x9ea0 */ { false, 0x9ea0, 0x9ea0 }, /* 0x9ea1 */ { false, 0x9ea1, 0x9ea1 }, /* 0x9ea2 */ { false, 0x9ea2, 0x9ea2 }, /* 0x9ea3 */ { false, 0x9ea3, 0x9ea3 }, /* 0x9ea4 */ { false, 0x9ea4, 0x9ea4 }, /* 0x9ea5 */ { false, 0x9ea5, 0x9ea5 }, /* 0x9ea6 */ { false, 0x9ea6, 0x9ea6 }, /* 0x9ea7 */ { false, 0x9ea7, 0x9ea7 }, /* 0x9ea8 */ { false, 0x9ea8, 0x9ea8 }, /* 0x9ea9 */ { false, 0x9ea9, 0x9ea9 }, /* 0x9eaa */ { false, 0x9eaa, 0x9eaa }, /* 0x9eab */ { false, 0x9eab, 0x9eab }, /* 0x9eac */ { false, 0x9eac, 0x9eac }, /* 0x9ead */ { false, 0x9ead, 0x9ead }, /* 0x9eae */ { false, 0x9eae, 0x9eae }, /* 0x9eaf */ { false, 0x9eaf, 0x9eaf }, /* 0x9eb0 */ { false, 0x9eb0, 0x9eb0 }, /* 0x9eb1 */ { false, 0x9eb1, 0x9eb1 }, /* 0x9eb2 */ { false, 0x9eb2, 0x9eb2 }, /* 0x9eb3 */ { false, 0x9eb3, 0x9eb3 }, /* 0x9eb4 */ { false, 0x9eb4, 0x9eb4 }, /* 0x9eb5 */ { false, 0x9eb5, 0x9eb5 }, /* 0x9eb6 */ { false, 0x9eb6, 0x9eb6 }, /* 0x9eb7 */ { false, 0x9eb7, 0x9eb7 }, /* 0x9eb8 */ { false, 0x9eb8, 0x9eb8 }, /* 0x9eb9 */ { false, 0x9eb9, 0x9eb9 }, /* 0x9eba */ { false, 0x9eba, 0x9eba }, /* 0x9ebb */ { false, 0x9ebb, 0x9ebb }, /* 0x9ebc */ { false, 0x9ebc, 0x9ebc }, /* 0x9ebd */ { false, 0x9ebd, 0x9ebd }, /* 0x9ebe */ { false, 0x9ebe, 0x9ebe }, /* 0x9ebf */ { false, 0x9ebf, 0x9ebf }, /* 0x9ec0 */ { false, 0x9ec0, 0x9ec0 }, /* 0x9ec1 */ { false, 0x9ec1, 0x9ec1 }, /* 0x9ec2 */ { false, 0x9ec2, 0x9ec2 }, /* 0x9ec3 */ { false, 0x9ec3, 0x9ec3 }, /* 0x9ec4 */ { false, 0x9ec4, 0x9ec4 }, /* 0x9ec5 */ { false, 0x9ec5, 0x9ec5 }, /* 0x9ec6 */ { false, 0x9ec6, 0x9ec6 }, /* 0x9ec7 */ { false, 0x9ec7, 0x9ec7 }, /* 0x9ec8 */ { false, 0x9ec8, 0x9ec8 }, /* 0x9ec9 */ { false, 0x9ec9, 0x9ec9 }, /* 0x9eca */ { false, 0x9eca, 0x9eca }, /* 0x9ecb */ { false, 0x9ecb, 0x9ecb }, /* 0x9ecc */ { false, 0x9ecc, 0x9ecc }, /* 0x9ecd */ { false, 0x9ecd, 0x9ecd }, /* 0x9ece */ { false, 0x9ece, 0x9ece }, /* 0x9ecf */ { false, 0x9ecf, 0x9ecf }, /* 0x9ed0 */ { false, 0x9ed0, 0x9ed0 }, /* 0x9ed1 */ { false, 0x9ed1, 0x9ed1 }, /* 0x9ed2 */ { false, 0x9ed2, 0x9ed2 }, /* 0x9ed3 */ { false, 0x9ed3, 0x9ed3 }, /* 0x9ed4 */ { false, 0x9ed4, 0x9ed4 }, /* 0x9ed5 */ { false, 0x9ed5, 0x9ed5 }, /* 0x9ed6 */ { false, 0x9ed6, 0x9ed6 }, /* 0x9ed7 */ { false, 0x9ed7, 0x9ed7 }, /* 0x9ed8 */ { false, 0x9ed8, 0x9ed8 }, /* 0x9ed9 */ { false, 0x9ed9, 0x9ed9 }, /* 0x9eda */ { false, 0x9eda, 0x9eda }, /* 0x9edb */ { false, 0x9edb, 0x9edb }, /* 0x9edc */ { false, 0x9edc, 0x9edc }, /* 0x9edd */ { false, 0x9edd, 0x9edd }, /* 0x9ede */ { false, 0x9ede, 0x9ede }, /* 0x9edf */ { false, 0x9edf, 0x9edf }, /* 0x9ee0 */ { false, 0x9ee0, 0x9ee0 }, /* 0x9ee1 */ { false, 0x9ee1, 0x9ee1 }, /* 0x9ee2 */ { false, 0x9ee2, 0x9ee2 }, /* 0x9ee3 */ { false, 0x9ee3, 0x9ee3 }, /* 0x9ee4 */ { false, 0x9ee4, 0x9ee4 }, /* 0x9ee5 */ { false, 0x9ee5, 0x9ee5 }, /* 0x9ee6 */ { false, 0x9ee6, 0x9ee6 }, /* 0x9ee7 */ { false, 0x9ee7, 0x9ee7 }, /* 0x9ee8 */ { false, 0x9ee8, 0x9ee8 }, /* 0x9ee9 */ { false, 0x9ee9, 0x9ee9 }, /* 0x9eea */ { false, 0x9eea, 0x9eea }, /* 0x9eeb */ { false, 0x9eeb, 0x9eeb }, /* 0x9eec */ { false, 0x9eec, 0x9eec }, /* 0x9eed */ { false, 0x9eed, 0x9eed }, /* 0x9eee */ { false, 0x9eee, 0x9eee }, /* 0x9eef */ { false, 0x9eef, 0x9eef }, /* 0x9ef0 */ { false, 0x9ef0, 0x9ef0 }, /* 0x9ef1 */ { false, 0x9ef1, 0x9ef1 }, /* 0x9ef2 */ { false, 0x9ef2, 0x9ef2 }, /* 0x9ef3 */ { false, 0x9ef3, 0x9ef3 }, /* 0x9ef4 */ { false, 0x9ef4, 0x9ef4 }, /* 0x9ef5 */ { false, 0x9ef5, 0x9ef5 }, /* 0x9ef6 */ { false, 0x9ef6, 0x9ef6 }, /* 0x9ef7 */ { false, 0x9ef7, 0x9ef7 }, /* 0x9ef8 */ { false, 0x9ef8, 0x9ef8 }, /* 0x9ef9 */ { false, 0x9ef9, 0x9ef9 }, /* 0x9efa */ { false, 0x9efa, 0x9efa }, /* 0x9efb */ { false, 0x9efb, 0x9efb }, /* 0x9efc */ { false, 0x9efc, 0x9efc }, /* 0x9efd */ { false, 0x9efd, 0x9efd }, /* 0x9efe */ { false, 0x9efe, 0x9efe }, /* 0x9eff */ { false, 0x9eff, 0x9eff }, /* 0x9f00 */ { false, 0x9f00, 0x9f00 }, /* 0x9f01 */ { false, 0x9f01, 0x9f01 }, /* 0x9f02 */ { false, 0x9f02, 0x9f02 }, /* 0x9f03 */ { false, 0x9f03, 0x9f03 }, /* 0x9f04 */ { false, 0x9f04, 0x9f04 }, /* 0x9f05 */ { false, 0x9f05, 0x9f05 }, /* 0x9f06 */ { false, 0x9f06, 0x9f06 }, /* 0x9f07 */ { false, 0x9f07, 0x9f07 }, /* 0x9f08 */ { false, 0x9f08, 0x9f08 }, /* 0x9f09 */ { false, 0x9f09, 0x9f09 }, /* 0x9f0a */ { false, 0x9f0a, 0x9f0a }, /* 0x9f0b */ { false, 0x9f0b, 0x9f0b }, /* 0x9f0c */ { false, 0x9f0c, 0x9f0c }, /* 0x9f0d */ { false, 0x9f0d, 0x9f0d }, /* 0x9f0e */ { false, 0x9f0e, 0x9f0e }, /* 0x9f0f */ { false, 0x9f0f, 0x9f0f }, /* 0x9f10 */ { false, 0x9f10, 0x9f10 }, /* 0x9f11 */ { false, 0x9f11, 0x9f11 }, /* 0x9f12 */ { false, 0x9f12, 0x9f12 }, /* 0x9f13 */ { false, 0x9f13, 0x9f13 }, /* 0x9f14 */ { false, 0x9f14, 0x9f14 }, /* 0x9f15 */ { false, 0x9f15, 0x9f15 }, /* 0x9f16 */ { false, 0x9f16, 0x9f16 }, /* 0x9f17 */ { false, 0x9f17, 0x9f17 }, /* 0x9f18 */ { false, 0x9f18, 0x9f18 }, /* 0x9f19 */ { false, 0x9f19, 0x9f19 }, /* 0x9f1a */ { false, 0x9f1a, 0x9f1a }, /* 0x9f1b */ { false, 0x9f1b, 0x9f1b }, /* 0x9f1c */ { false, 0x9f1c, 0x9f1c }, /* 0x9f1d */ { false, 0x9f1d, 0x9f1d }, /* 0x9f1e */ { false, 0x9f1e, 0x9f1e }, /* 0x9f1f */ { false, 0x9f1f, 0x9f1f }, /* 0x9f20 */ { false, 0x9f20, 0x9f20 }, /* 0x9f21 */ { false, 0x9f21, 0x9f21 }, /* 0x9f22 */ { false, 0x9f22, 0x9f22 }, /* 0x9f23 */ { false, 0x9f23, 0x9f23 }, /* 0x9f24 */ { false, 0x9f24, 0x9f24 }, /* 0x9f25 */ { false, 0x9f25, 0x9f25 }, /* 0x9f26 */ { false, 0x9f26, 0x9f26 }, /* 0x9f27 */ { false, 0x9f27, 0x9f27 }, /* 0x9f28 */ { false, 0x9f28, 0x9f28 }, /* 0x9f29 */ { false, 0x9f29, 0x9f29 }, /* 0x9f2a */ { false, 0x9f2a, 0x9f2a }, /* 0x9f2b */ { false, 0x9f2b, 0x9f2b }, /* 0x9f2c */ { false, 0x9f2c, 0x9f2c }, /* 0x9f2d */ { false, 0x9f2d, 0x9f2d }, /* 0x9f2e */ { false, 0x9f2e, 0x9f2e }, /* 0x9f2f */ { false, 0x9f2f, 0x9f2f }, /* 0x9f30 */ { false, 0x9f30, 0x9f30 }, /* 0x9f31 */ { false, 0x9f31, 0x9f31 }, /* 0x9f32 */ { false, 0x9f32, 0x9f32 }, /* 0x9f33 */ { false, 0x9f33, 0x9f33 }, /* 0x9f34 */ { false, 0x9f34, 0x9f34 }, /* 0x9f35 */ { false, 0x9f35, 0x9f35 }, /* 0x9f36 */ { false, 0x9f36, 0x9f36 }, /* 0x9f37 */ { false, 0x9f37, 0x9f37 }, /* 0x9f38 */ { false, 0x9f38, 0x9f38 }, /* 0x9f39 */ { false, 0x9f39, 0x9f39 }, /* 0x9f3a */ { false, 0x9f3a, 0x9f3a }, /* 0x9f3b */ { false, 0x9f3b, 0x9f3b }, /* 0x9f3c */ { false, 0x9f3c, 0x9f3c }, /* 0x9f3d */ { false, 0x9f3d, 0x9f3d }, /* 0x9f3e */ { false, 0x9f3e, 0x9f3e }, /* 0x9f3f */ { false, 0x9f3f, 0x9f3f }, /* 0x9f40 */ { false, 0x9f40, 0x9f40 }, /* 0x9f41 */ { false, 0x9f41, 0x9f41 }, /* 0x9f42 */ { false, 0x9f42, 0x9f42 }, /* 0x9f43 */ { false, 0x9f43, 0x9f43 }, /* 0x9f44 */ { false, 0x9f44, 0x9f44 }, /* 0x9f45 */ { false, 0x9f45, 0x9f45 }, /* 0x9f46 */ { false, 0x9f46, 0x9f46 }, /* 0x9f47 */ { false, 0x9f47, 0x9f47 }, /* 0x9f48 */ { false, 0x9f48, 0x9f48 }, /* 0x9f49 */ { false, 0x9f49, 0x9f49 }, /* 0x9f4a */ { false, 0x9f4a, 0x9f4a }, /* 0x9f4b */ { false, 0x9f4b, 0x9f4b }, /* 0x9f4c */ { false, 0x9f4c, 0x9f4c }, /* 0x9f4d */ { false, 0x9f4d, 0x9f4d }, /* 0x9f4e */ { false, 0x9f4e, 0x9f4e }, /* 0x9f4f */ { false, 0x9f4f, 0x9f4f }, /* 0x9f50 */ { false, 0x9f50, 0x9f50 }, /* 0x9f51 */ { false, 0x9f51, 0x9f51 }, /* 0x9f52 */ { false, 0x9f52, 0x9f52 }, /* 0x9f53 */ { false, 0x9f53, 0x9f53 }, /* 0x9f54 */ { false, 0x9f54, 0x9f54 }, /* 0x9f55 */ { false, 0x9f55, 0x9f55 }, /* 0x9f56 */ { false, 0x9f56, 0x9f56 }, /* 0x9f57 */ { false, 0x9f57, 0x9f57 }, /* 0x9f58 */ { false, 0x9f58, 0x9f58 }, /* 0x9f59 */ { false, 0x9f59, 0x9f59 }, /* 0x9f5a */ { false, 0x9f5a, 0x9f5a }, /* 0x9f5b */ { false, 0x9f5b, 0x9f5b }, /* 0x9f5c */ { false, 0x9f5c, 0x9f5c }, /* 0x9f5d */ { false, 0x9f5d, 0x9f5d }, /* 0x9f5e */ { false, 0x9f5e, 0x9f5e }, /* 0x9f5f */ { false, 0x9f5f, 0x9f5f }, /* 0x9f60 */ { false, 0x9f60, 0x9f60 }, /* 0x9f61 */ { false, 0x9f61, 0x9f61 }, /* 0x9f62 */ { false, 0x9f62, 0x9f62 }, /* 0x9f63 */ { false, 0x9f63, 0x9f63 }, /* 0x9f64 */ { false, 0x9f64, 0x9f64 }, /* 0x9f65 */ { false, 0x9f65, 0x9f65 }, /* 0x9f66 */ { false, 0x9f66, 0x9f66 }, /* 0x9f67 */ { false, 0x9f67, 0x9f67 }, /* 0x9f68 */ { false, 0x9f68, 0x9f68 }, /* 0x9f69 */ { false, 0x9f69, 0x9f69 }, /* 0x9f6a */ { false, 0x9f6a, 0x9f6a }, /* 0x9f6b */ { false, 0x9f6b, 0x9f6b }, /* 0x9f6c */ { false, 0x9f6c, 0x9f6c }, /* 0x9f6d */ { false, 0x9f6d, 0x9f6d }, /* 0x9f6e */ { false, 0x9f6e, 0x9f6e }, /* 0x9f6f */ { false, 0x9f6f, 0x9f6f }, /* 0x9f70 */ { false, 0x9f70, 0x9f70 }, /* 0x9f71 */ { false, 0x9f71, 0x9f71 }, /* 0x9f72 */ { false, 0x9f72, 0x9f72 }, /* 0x9f73 */ { false, 0x9f73, 0x9f73 }, /* 0x9f74 */ { false, 0x9f74, 0x9f74 }, /* 0x9f75 */ { false, 0x9f75, 0x9f75 }, /* 0x9f76 */ { false, 0x9f76, 0x9f76 }, /* 0x9f77 */ { false, 0x9f77, 0x9f77 }, /* 0x9f78 */ { false, 0x9f78, 0x9f78 }, /* 0x9f79 */ { false, 0x9f79, 0x9f79 }, /* 0x9f7a */ { false, 0x9f7a, 0x9f7a }, /* 0x9f7b */ { false, 0x9f7b, 0x9f7b }, /* 0x9f7c */ { false, 0x9f7c, 0x9f7c }, /* 0x9f7d */ { false, 0x9f7d, 0x9f7d }, /* 0x9f7e */ { false, 0x9f7e, 0x9f7e }, /* 0x9f7f */ { false, 0x9f7f, 0x9f7f }, /* 0x9f80 */ { false, 0x9f80, 0x9f80 }, /* 0x9f81 */ { false, 0x9f81, 0x9f81 }, /* 0x9f82 */ { false, 0x9f82, 0x9f82 }, /* 0x9f83 */ { false, 0x9f83, 0x9f83 }, /* 0x9f84 */ { false, 0x9f84, 0x9f84 }, /* 0x9f85 */ { false, 0x9f85, 0x9f85 }, /* 0x9f86 */ { false, 0x9f86, 0x9f86 }, /* 0x9f87 */ { false, 0x9f87, 0x9f87 }, /* 0x9f88 */ { false, 0x9f88, 0x9f88 }, /* 0x9f89 */ { false, 0x9f89, 0x9f89 }, /* 0x9f8a */ { false, 0x9f8a, 0x9f8a }, /* 0x9f8b */ { false, 0x9f8b, 0x9f8b }, /* 0x9f8c */ { false, 0x9f8c, 0x9f8c }, /* 0x9f8d */ { false, 0x9f8d, 0x9f8d }, /* 0x9f8e */ { false, 0x9f8e, 0x9f8e }, /* 0x9f8f */ { false, 0x9f8f, 0x9f8f }, /* 0x9f90 */ { false, 0x9f90, 0x9f90 }, /* 0x9f91 */ { false, 0x9f91, 0x9f91 }, /* 0x9f92 */ { false, 0x9f92, 0x9f92 }, /* 0x9f93 */ { false, 0x9f93, 0x9f93 }, /* 0x9f94 */ { false, 0x9f94, 0x9f94 }, /* 0x9f95 */ { false, 0x9f95, 0x9f95 }, /* 0x9f96 */ { false, 0x9f96, 0x9f96 }, /* 0x9f97 */ { false, 0x9f97, 0x9f97 }, /* 0x9f98 */ { false, 0x9f98, 0x9f98 }, /* 0x9f99 */ { false, 0x9f99, 0x9f99 }, /* 0x9f9a */ { false, 0x9f9a, 0x9f9a }, /* 0x9f9b */ { false, 0x9f9b, 0x9f9b }, /* 0x9f9c */ { false, 0x9f9c, 0x9f9c }, /* 0x9f9d */ { false, 0x9f9d, 0x9f9d }, /* 0x9f9e */ { false, 0x9f9e, 0x9f9e }, /* 0x9f9f */ { false, 0x9f9f, 0x9f9f }, /* 0x9fa0 */ { false, 0x9fa0, 0x9fa0 }, /* 0x9fa1 */ { false, 0x9fa1, 0x9fa1 }, /* 0x9fa2 */ { false, 0x9fa2, 0x9fa2 }, /* 0x9fa3 */ { false, 0x9fa3, 0x9fa3 }, /* 0x9fa4 */ { false, 0x9fa4, 0x9fa4 }, /* 0x9fa5 */ { false, 0x9fa5, 0x9fa5 }, /* 0x9fa6 */ { false, 0x9fa6, 0x9fa6 }, /* 0x9fa7 */ { false, 0x9fa7, 0x9fa7 }, /* 0x9fa8 */ { false, 0x9fa8, 0x9fa8 }, /* 0x9fa9 */ { false, 0x9fa9, 0x9fa9 }, /* 0x9faa */ { false, 0x9faa, 0x9faa }, /* 0x9fab */ { false, 0x9fab, 0x9fab }, /* 0x9fac */ { false, 0x9fac, 0x9fac }, /* 0x9fad */ { false, 0x9fad, 0x9fad }, /* 0x9fae */ { false, 0x9fae, 0x9fae }, /* 0x9faf */ { false, 0x9faf, 0x9faf }, /* 0x9fb0 */ { false, 0x9fb0, 0x9fb0 }, /* 0x9fb1 */ { false, 0x9fb1, 0x9fb1 }, /* 0x9fb2 */ { false, 0x9fb2, 0x9fb2 }, /* 0x9fb3 */ { false, 0x9fb3, 0x9fb3 }, /* 0x9fb4 */ { false, 0x9fb4, 0x9fb4 }, /* 0x9fb5 */ { false, 0x9fb5, 0x9fb5 }, /* 0x9fb6 */ { false, 0x9fb6, 0x9fb6 }, /* 0x9fb7 */ { false, 0x9fb7, 0x9fb7 }, /* 0x9fb8 */ { false, 0x9fb8, 0x9fb8 }, /* 0x9fb9 */ { false, 0x9fb9, 0x9fb9 }, /* 0x9fba */ { false, 0x9fba, 0x9fba }, /* 0x9fbb */ { true, 0x9fbb, 0x9fbb }, /* 0x9fbc */ { false, 0x9fbc, 0x9fbc }, /* 0x9fbd */ { false, 0x9fbd, 0x9fbd }, /* 0x9fbe */ { false, 0x9fbe, 0x9fbe }, /* 0x9fbf */ { false, 0x9fbf, 0x9fbf }, /* 0x9fc0 */ { false, 0x9fc0, 0x9fc0 }, /* 0x9fc1 */ { false, 0x9fc1, 0x9fc1 }, /* 0x9fc2 */ { false, 0x9fc2, 0x9fc2 }, /* 0x9fc3 */ { false, 0x9fc3, 0x9fc3 }, /* 0x9fc4 */ { false, 0x9fc4, 0x9fc4 }, /* 0x9fc5 */ { false, 0x9fc5, 0x9fc5 }, /* 0x9fc6 */ { false, 0x9fc6, 0x9fc6 }, /* 0x9fc7 */ { false, 0x9fc7, 0x9fc7 }, /* 0x9fc8 */ { false, 0x9fc8, 0x9fc8 }, /* 0x9fc9 */ { false, 0x9fc9, 0x9fc9 }, /* 0x9fca */ { false, 0x9fca, 0x9fca }, /* 0x9fcb */ { false, 0x9fcb, 0x9fcb }, /* 0x9fcc */ { false, 0x9fcc, 0x9fcc }, /* 0x9fcd */ { false, 0x9fcd, 0x9fcd }, /* 0x9fce */ { false, 0x9fce, 0x9fce }, /* 0x9fcf */ { false, 0x9fcf, 0x9fcf }, /* 0x9fd0 */ { false, 0x9fd0, 0x9fd0 }, /* 0x9fd1 */ { false, 0x9fd1, 0x9fd1 }, /* 0x9fd2 */ { false, 0x9fd2, 0x9fd2 }, /* 0x9fd3 */ { false, 0x9fd3, 0x9fd3 }, /* 0x9fd4 */ { false, 0x9fd4, 0x9fd4 }, /* 0x9fd5 */ { false, 0x9fd5, 0x9fd5 }, /* 0x9fd6 */ { false, 0x9fd6, 0x9fd6 }, /* 0x9fd7 */ { false, 0x9fd7, 0x9fd7 }, /* 0x9fd8 */ { false, 0x9fd8, 0x9fd8 }, /* 0x9fd9 */ { false, 0x9fd9, 0x9fd9 }, /* 0x9fda */ { false, 0x9fda, 0x9fda }, /* 0x9fdb */ { false, 0x9fdb, 0x9fdb }, /* 0x9fdc */ { false, 0x9fdc, 0x9fdc }, /* 0x9fdd */ { false, 0x9fdd, 0x9fdd }, /* 0x9fde */ { false, 0x9fde, 0x9fde }, /* 0x9fdf */ { false, 0x9fdf, 0x9fdf }, /* 0x9fe0 */ { false, 0x9fe0, 0x9fe0 }, /* 0x9fe1 */ { false, 0x9fe1, 0x9fe1 }, /* 0x9fe2 */ { false, 0x9fe2, 0x9fe2 }, /* 0x9fe3 */ { false, 0x9fe3, 0x9fe3 }, /* 0x9fe4 */ { false, 0x9fe4, 0x9fe4 }, /* 0x9fe5 */ { false, 0x9fe5, 0x9fe5 }, /* 0x9fe6 */ { false, 0x9fe6, 0x9fe6 }, /* 0x9fe7 */ { false, 0x9fe7, 0x9fe7 }, /* 0x9fe8 */ { false, 0x9fe8, 0x9fe8 }, /* 0x9fe9 */ { false, 0x9fe9, 0x9fe9 }, /* 0x9fea */ { false, 0x9fea, 0x9fea }, /* 0x9feb */ { false, 0x9feb, 0x9feb }, /* 0x9fec */ { false, 0x9fec, 0x9fec }, /* 0x9fed */ { false, 0x9fed, 0x9fed }, /* 0x9fee */ { false, 0x9fee, 0x9fee }, /* 0x9fef */ { false, 0x9fef, 0x9fef }, /* 0x9ff0 */ { false, 0x9ff0, 0x9ff0 }, /* 0x9ff1 */ { false, 0x9ff1, 0x9ff1 }, /* 0x9ff2 */ { false, 0x9ff2, 0x9ff2 }, /* 0x9ff3 */ { false, 0x9ff3, 0x9ff3 }, /* 0x9ff4 */ { false, 0x9ff4, 0x9ff4 }, /* 0x9ff5 */ { false, 0x9ff5, 0x9ff5 }, /* 0x9ff6 */ { false, 0x9ff6, 0x9ff6 }, /* 0x9ff7 */ { false, 0x9ff7, 0x9ff7 }, /* 0x9ff8 */ { false, 0x9ff8, 0x9ff8 }, /* 0x9ff9 */ { false, 0x9ff9, 0x9ff9 }, /* 0x9ffa */ { false, 0x9ffa, 0x9ffa }, /* 0x9ffb */ { false, 0x9ffb, 0x9ffb }, /* 0x9ffc */ { false, 0x9ffc, 0x9ffc }, /* 0x9ffd */ { false, 0x9ffd, 0x9ffd }, /* 0x9ffe */ { false, 0x9ffe, 0x9ffe }, /* 0x9fff */ { false, 0x9fff, 0x9fff }, /* 0xa000 */ { true, 0xa000, 0xa000 }, /* 0xa001 */ { true, 0xa001, 0xa001 }, /* 0xa002 */ { true, 0xa002, 0xa002 }, /* 0xa003 */ { true, 0xa003, 0xa003 }, /* 0xa004 */ { true, 0xa004, 0xa004 }, /* 0xa005 */ { true, 0xa005, 0xa005 }, /* 0xa006 */ { true, 0xa006, 0xa006 }, /* 0xa007 */ { true, 0xa007, 0xa007 }, /* 0xa008 */ { true, 0xa008, 0xa008 }, /* 0xa009 */ { true, 0xa009, 0xa009 }, /* 0xa00a */ { true, 0xa00a, 0xa00a }, /* 0xa00b */ { true, 0xa00b, 0xa00b }, /* 0xa00c */ { true, 0xa00c, 0xa00c }, /* 0xa00d */ { true, 0xa00d, 0xa00d }, /* 0xa00e */ { true, 0xa00e, 0xa00e }, /* 0xa00f */ { true, 0xa00f, 0xa00f }, /* 0xa010 */ { true, 0xa010, 0xa010 }, /* 0xa011 */ { true, 0xa011, 0xa011 }, /* 0xa012 */ { true, 0xa012, 0xa012 }, /* 0xa013 */ { true, 0xa013, 0xa013 }, /* 0xa014 */ { true, 0xa014, 0xa014 }, /* 0xa015 */ { true, 0xa015, 0xa015 }, /* 0xa016 */ { true, 0xa016, 0xa016 }, /* 0xa017 */ { true, 0xa017, 0xa017 }, /* 0xa018 */ { true, 0xa018, 0xa018 }, /* 0xa019 */ { true, 0xa019, 0xa019 }, /* 0xa01a */ { true, 0xa01a, 0xa01a }, /* 0xa01b */ { true, 0xa01b, 0xa01b }, /* 0xa01c */ { true, 0xa01c, 0xa01c }, /* 0xa01d */ { true, 0xa01d, 0xa01d }, /* 0xa01e */ { true, 0xa01e, 0xa01e }, /* 0xa01f */ { true, 0xa01f, 0xa01f }, /* 0xa020 */ { true, 0xa020, 0xa020 }, /* 0xa021 */ { true, 0xa021, 0xa021 }, /* 0xa022 */ { true, 0xa022, 0xa022 }, /* 0xa023 */ { true, 0xa023, 0xa023 }, /* 0xa024 */ { true, 0xa024, 0xa024 }, /* 0xa025 */ { true, 0xa025, 0xa025 }, /* 0xa026 */ { true, 0xa026, 0xa026 }, /* 0xa027 */ { true, 0xa027, 0xa027 }, /* 0xa028 */ { true, 0xa028, 0xa028 }, /* 0xa029 */ { true, 0xa029, 0xa029 }, /* 0xa02a */ { true, 0xa02a, 0xa02a }, /* 0xa02b */ { true, 0xa02b, 0xa02b }, /* 0xa02c */ { true, 0xa02c, 0xa02c }, /* 0xa02d */ { true, 0xa02d, 0xa02d }, /* 0xa02e */ { true, 0xa02e, 0xa02e }, /* 0xa02f */ { true, 0xa02f, 0xa02f }, /* 0xa030 */ { true, 0xa030, 0xa030 }, /* 0xa031 */ { true, 0xa031, 0xa031 }, /* 0xa032 */ { true, 0xa032, 0xa032 }, /* 0xa033 */ { true, 0xa033, 0xa033 }, /* 0xa034 */ { true, 0xa034, 0xa034 }, /* 0xa035 */ { true, 0xa035, 0xa035 }, /* 0xa036 */ { true, 0xa036, 0xa036 }, /* 0xa037 */ { true, 0xa037, 0xa037 }, /* 0xa038 */ { true, 0xa038, 0xa038 }, /* 0xa039 */ { true, 0xa039, 0xa039 }, /* 0xa03a */ { true, 0xa03a, 0xa03a }, /* 0xa03b */ { true, 0xa03b, 0xa03b }, /* 0xa03c */ { true, 0xa03c, 0xa03c }, /* 0xa03d */ { true, 0xa03d, 0xa03d }, /* 0xa03e */ { true, 0xa03e, 0xa03e }, /* 0xa03f */ { true, 0xa03f, 0xa03f }, /* 0xa040 */ { true, 0xa040, 0xa040 }, /* 0xa041 */ { true, 0xa041, 0xa041 }, /* 0xa042 */ { true, 0xa042, 0xa042 }, /* 0xa043 */ { true, 0xa043, 0xa043 }, /* 0xa044 */ { true, 0xa044, 0xa044 }, /* 0xa045 */ { true, 0xa045, 0xa045 }, /* 0xa046 */ { true, 0xa046, 0xa046 }, /* 0xa047 */ { true, 0xa047, 0xa047 }, /* 0xa048 */ { true, 0xa048, 0xa048 }, /* 0xa049 */ { true, 0xa049, 0xa049 }, /* 0xa04a */ { true, 0xa04a, 0xa04a }, /* 0xa04b */ { true, 0xa04b, 0xa04b }, /* 0xa04c */ { true, 0xa04c, 0xa04c }, /* 0xa04d */ { true, 0xa04d, 0xa04d }, /* 0xa04e */ { true, 0xa04e, 0xa04e }, /* 0xa04f */ { true, 0xa04f, 0xa04f }, /* 0xa050 */ { true, 0xa050, 0xa050 }, /* 0xa051 */ { true, 0xa051, 0xa051 }, /* 0xa052 */ { true, 0xa052, 0xa052 }, /* 0xa053 */ { true, 0xa053, 0xa053 }, /* 0xa054 */ { true, 0xa054, 0xa054 }, /* 0xa055 */ { true, 0xa055, 0xa055 }, /* 0xa056 */ { true, 0xa056, 0xa056 }, /* 0xa057 */ { true, 0xa057, 0xa057 }, /* 0xa058 */ { true, 0xa058, 0xa058 }, /* 0xa059 */ { true, 0xa059, 0xa059 }, /* 0xa05a */ { true, 0xa05a, 0xa05a }, /* 0xa05b */ { true, 0xa05b, 0xa05b }, /* 0xa05c */ { true, 0xa05c, 0xa05c }, /* 0xa05d */ { true, 0xa05d, 0xa05d }, /* 0xa05e */ { true, 0xa05e, 0xa05e }, /* 0xa05f */ { true, 0xa05f, 0xa05f }, /* 0xa060 */ { true, 0xa060, 0xa060 }, /* 0xa061 */ { true, 0xa061, 0xa061 }, /* 0xa062 */ { true, 0xa062, 0xa062 }, /* 0xa063 */ { true, 0xa063, 0xa063 }, /* 0xa064 */ { true, 0xa064, 0xa064 }, /* 0xa065 */ { true, 0xa065, 0xa065 }, /* 0xa066 */ { true, 0xa066, 0xa066 }, /* 0xa067 */ { true, 0xa067, 0xa067 }, /* 0xa068 */ { true, 0xa068, 0xa068 }, /* 0xa069 */ { true, 0xa069, 0xa069 }, /* 0xa06a */ { true, 0xa06a, 0xa06a }, /* 0xa06b */ { true, 0xa06b, 0xa06b }, /* 0xa06c */ { true, 0xa06c, 0xa06c }, /* 0xa06d */ { true, 0xa06d, 0xa06d }, /* 0xa06e */ { true, 0xa06e, 0xa06e }, /* 0xa06f */ { true, 0xa06f, 0xa06f }, /* 0xa070 */ { true, 0xa070, 0xa070 }, /* 0xa071 */ { true, 0xa071, 0xa071 }, /* 0xa072 */ { true, 0xa072, 0xa072 }, /* 0xa073 */ { true, 0xa073, 0xa073 }, /* 0xa074 */ { true, 0xa074, 0xa074 }, /* 0xa075 */ { true, 0xa075, 0xa075 }, /* 0xa076 */ { true, 0xa076, 0xa076 }, /* 0xa077 */ { true, 0xa077, 0xa077 }, /* 0xa078 */ { true, 0xa078, 0xa078 }, /* 0xa079 */ { true, 0xa079, 0xa079 }, /* 0xa07a */ { true, 0xa07a, 0xa07a }, /* 0xa07b */ { true, 0xa07b, 0xa07b }, /* 0xa07c */ { true, 0xa07c, 0xa07c }, /* 0xa07d */ { true, 0xa07d, 0xa07d }, /* 0xa07e */ { true, 0xa07e, 0xa07e }, /* 0xa07f */ { true, 0xa07f, 0xa07f }, /* 0xa080 */ { true, 0xa080, 0xa080 }, /* 0xa081 */ { true, 0xa081, 0xa081 }, /* 0xa082 */ { true, 0xa082, 0xa082 }, /* 0xa083 */ { true, 0xa083, 0xa083 }, /* 0xa084 */ { true, 0xa084, 0xa084 }, /* 0xa085 */ { true, 0xa085, 0xa085 }, /* 0xa086 */ { true, 0xa086, 0xa086 }, /* 0xa087 */ { true, 0xa087, 0xa087 }, /* 0xa088 */ { true, 0xa088, 0xa088 }, /* 0xa089 */ { true, 0xa089, 0xa089 }, /* 0xa08a */ { true, 0xa08a, 0xa08a }, /* 0xa08b */ { true, 0xa08b, 0xa08b }, /* 0xa08c */ { true, 0xa08c, 0xa08c }, /* 0xa08d */ { true, 0xa08d, 0xa08d }, /* 0xa08e */ { true, 0xa08e, 0xa08e }, /* 0xa08f */ { true, 0xa08f, 0xa08f }, /* 0xa090 */ { true, 0xa090, 0xa090 }, /* 0xa091 */ { true, 0xa091, 0xa091 }, /* 0xa092 */ { true, 0xa092, 0xa092 }, /* 0xa093 */ { true, 0xa093, 0xa093 }, /* 0xa094 */ { true, 0xa094, 0xa094 }, /* 0xa095 */ { true, 0xa095, 0xa095 }, /* 0xa096 */ { true, 0xa096, 0xa096 }, /* 0xa097 */ { true, 0xa097, 0xa097 }, /* 0xa098 */ { true, 0xa098, 0xa098 }, /* 0xa099 */ { true, 0xa099, 0xa099 }, /* 0xa09a */ { true, 0xa09a, 0xa09a }, /* 0xa09b */ { true, 0xa09b, 0xa09b }, /* 0xa09c */ { true, 0xa09c, 0xa09c }, /* 0xa09d */ { true, 0xa09d, 0xa09d }, /* 0xa09e */ { true, 0xa09e, 0xa09e }, /* 0xa09f */ { true, 0xa09f, 0xa09f }, /* 0xa0a0 */ { true, 0xa0a0, 0xa0a0 }, /* 0xa0a1 */ { true, 0xa0a1, 0xa0a1 }, /* 0xa0a2 */ { true, 0xa0a2, 0xa0a2 }, /* 0xa0a3 */ { true, 0xa0a3, 0xa0a3 }, /* 0xa0a4 */ { true, 0xa0a4, 0xa0a4 }, /* 0xa0a5 */ { true, 0xa0a5, 0xa0a5 }, /* 0xa0a6 */ { true, 0xa0a6, 0xa0a6 }, /* 0xa0a7 */ { true, 0xa0a7, 0xa0a7 }, /* 0xa0a8 */ { true, 0xa0a8, 0xa0a8 }, /* 0xa0a9 */ { true, 0xa0a9, 0xa0a9 }, /* 0xa0aa */ { true, 0xa0aa, 0xa0aa }, /* 0xa0ab */ { true, 0xa0ab, 0xa0ab }, /* 0xa0ac */ { true, 0xa0ac, 0xa0ac }, /* 0xa0ad */ { true, 0xa0ad, 0xa0ad }, /* 0xa0ae */ { true, 0xa0ae, 0xa0ae }, /* 0xa0af */ { true, 0xa0af, 0xa0af }, /* 0xa0b0 */ { true, 0xa0b0, 0xa0b0 }, /* 0xa0b1 */ { true, 0xa0b1, 0xa0b1 }, /* 0xa0b2 */ { true, 0xa0b2, 0xa0b2 }, /* 0xa0b3 */ { true, 0xa0b3, 0xa0b3 }, /* 0xa0b4 */ { true, 0xa0b4, 0xa0b4 }, /* 0xa0b5 */ { true, 0xa0b5, 0xa0b5 }, /* 0xa0b6 */ { true, 0xa0b6, 0xa0b6 }, /* 0xa0b7 */ { true, 0xa0b7, 0xa0b7 }, /* 0xa0b8 */ { true, 0xa0b8, 0xa0b8 }, /* 0xa0b9 */ { true, 0xa0b9, 0xa0b9 }, /* 0xa0ba */ { true, 0xa0ba, 0xa0ba }, /* 0xa0bb */ { true, 0xa0bb, 0xa0bb }, /* 0xa0bc */ { true, 0xa0bc, 0xa0bc }, /* 0xa0bd */ { true, 0xa0bd, 0xa0bd }, /* 0xa0be */ { true, 0xa0be, 0xa0be }, /* 0xa0bf */ { true, 0xa0bf, 0xa0bf }, /* 0xa0c0 */ { true, 0xa0c0, 0xa0c0 }, /* 0xa0c1 */ { true, 0xa0c1, 0xa0c1 }, /* 0xa0c2 */ { true, 0xa0c2, 0xa0c2 }, /* 0xa0c3 */ { true, 0xa0c3, 0xa0c3 }, /* 0xa0c4 */ { true, 0xa0c4, 0xa0c4 }, /* 0xa0c5 */ { true, 0xa0c5, 0xa0c5 }, /* 0xa0c6 */ { true, 0xa0c6, 0xa0c6 }, /* 0xa0c7 */ { true, 0xa0c7, 0xa0c7 }, /* 0xa0c8 */ { true, 0xa0c8, 0xa0c8 }, /* 0xa0c9 */ { true, 0xa0c9, 0xa0c9 }, /* 0xa0ca */ { true, 0xa0ca, 0xa0ca }, /* 0xa0cb */ { true, 0xa0cb, 0xa0cb }, /* 0xa0cc */ { true, 0xa0cc, 0xa0cc }, /* 0xa0cd */ { true, 0xa0cd, 0xa0cd }, /* 0xa0ce */ { true, 0xa0ce, 0xa0ce }, /* 0xa0cf */ { true, 0xa0cf, 0xa0cf }, /* 0xa0d0 */ { true, 0xa0d0, 0xa0d0 }, /* 0xa0d1 */ { true, 0xa0d1, 0xa0d1 }, /* 0xa0d2 */ { true, 0xa0d2, 0xa0d2 }, /* 0xa0d3 */ { true, 0xa0d3, 0xa0d3 }, /* 0xa0d4 */ { true, 0xa0d4, 0xa0d4 }, /* 0xa0d5 */ { true, 0xa0d5, 0xa0d5 }, /* 0xa0d6 */ { true, 0xa0d6, 0xa0d6 }, /* 0xa0d7 */ { true, 0xa0d7, 0xa0d7 }, /* 0xa0d8 */ { true, 0xa0d8, 0xa0d8 }, /* 0xa0d9 */ { true, 0xa0d9, 0xa0d9 }, /* 0xa0da */ { true, 0xa0da, 0xa0da }, /* 0xa0db */ { true, 0xa0db, 0xa0db }, /* 0xa0dc */ { true, 0xa0dc, 0xa0dc }, /* 0xa0dd */ { true, 0xa0dd, 0xa0dd }, /* 0xa0de */ { true, 0xa0de, 0xa0de }, /* 0xa0df */ { true, 0xa0df, 0xa0df }, /* 0xa0e0 */ { true, 0xa0e0, 0xa0e0 }, /* 0xa0e1 */ { true, 0xa0e1, 0xa0e1 }, /* 0xa0e2 */ { true, 0xa0e2, 0xa0e2 }, /* 0xa0e3 */ { true, 0xa0e3, 0xa0e3 }, /* 0xa0e4 */ { true, 0xa0e4, 0xa0e4 }, /* 0xa0e5 */ { true, 0xa0e5, 0xa0e5 }, /* 0xa0e6 */ { true, 0xa0e6, 0xa0e6 }, /* 0xa0e7 */ { true, 0xa0e7, 0xa0e7 }, /* 0xa0e8 */ { true, 0xa0e8, 0xa0e8 }, /* 0xa0e9 */ { true, 0xa0e9, 0xa0e9 }, /* 0xa0ea */ { true, 0xa0ea, 0xa0ea }, /* 0xa0eb */ { true, 0xa0eb, 0xa0eb }, /* 0xa0ec */ { true, 0xa0ec, 0xa0ec }, /* 0xa0ed */ { true, 0xa0ed, 0xa0ed }, /* 0xa0ee */ { true, 0xa0ee, 0xa0ee }, /* 0xa0ef */ { true, 0xa0ef, 0xa0ef }, /* 0xa0f0 */ { true, 0xa0f0, 0xa0f0 }, /* 0xa0f1 */ { true, 0xa0f1, 0xa0f1 }, /* 0xa0f2 */ { true, 0xa0f2, 0xa0f2 }, /* 0xa0f3 */ { true, 0xa0f3, 0xa0f3 }, /* 0xa0f4 */ { true, 0xa0f4, 0xa0f4 }, /* 0xa0f5 */ { true, 0xa0f5, 0xa0f5 }, /* 0xa0f6 */ { true, 0xa0f6, 0xa0f6 }, /* 0xa0f7 */ { true, 0xa0f7, 0xa0f7 }, /* 0xa0f8 */ { true, 0xa0f8, 0xa0f8 }, /* 0xa0f9 */ { true, 0xa0f9, 0xa0f9 }, /* 0xa0fa */ { true, 0xa0fa, 0xa0fa }, /* 0xa0fb */ { true, 0xa0fb, 0xa0fb }, /* 0xa0fc */ { true, 0xa0fc, 0xa0fc }, /* 0xa0fd */ { true, 0xa0fd, 0xa0fd }, /* 0xa0fe */ { true, 0xa0fe, 0xa0fe }, /* 0xa0ff */ { true, 0xa0ff, 0xa0ff }, /* 0xa100 */ { true, 0xa100, 0xa100 }, /* 0xa101 */ { true, 0xa101, 0xa101 }, /* 0xa102 */ { true, 0xa102, 0xa102 }, /* 0xa103 */ { true, 0xa103, 0xa103 }, /* 0xa104 */ { true, 0xa104, 0xa104 }, /* 0xa105 */ { true, 0xa105, 0xa105 }, /* 0xa106 */ { true, 0xa106, 0xa106 }, /* 0xa107 */ { true, 0xa107, 0xa107 }, /* 0xa108 */ { true, 0xa108, 0xa108 }, /* 0xa109 */ { true, 0xa109, 0xa109 }, /* 0xa10a */ { true, 0xa10a, 0xa10a }, /* 0xa10b */ { true, 0xa10b, 0xa10b }, /* 0xa10c */ { true, 0xa10c, 0xa10c }, /* 0xa10d */ { true, 0xa10d, 0xa10d }, /* 0xa10e */ { true, 0xa10e, 0xa10e }, /* 0xa10f */ { true, 0xa10f, 0xa10f }, /* 0xa110 */ { true, 0xa110, 0xa110 }, /* 0xa111 */ { true, 0xa111, 0xa111 }, /* 0xa112 */ { true, 0xa112, 0xa112 }, /* 0xa113 */ { true, 0xa113, 0xa113 }, /* 0xa114 */ { true, 0xa114, 0xa114 }, /* 0xa115 */ { true, 0xa115, 0xa115 }, /* 0xa116 */ { true, 0xa116, 0xa116 }, /* 0xa117 */ { true, 0xa117, 0xa117 }, /* 0xa118 */ { true, 0xa118, 0xa118 }, /* 0xa119 */ { true, 0xa119, 0xa119 }, /* 0xa11a */ { true, 0xa11a, 0xa11a }, /* 0xa11b */ { true, 0xa11b, 0xa11b }, /* 0xa11c */ { true, 0xa11c, 0xa11c }, /* 0xa11d */ { true, 0xa11d, 0xa11d }, /* 0xa11e */ { true, 0xa11e, 0xa11e }, /* 0xa11f */ { true, 0xa11f, 0xa11f }, /* 0xa120 */ { true, 0xa120, 0xa120 }, /* 0xa121 */ { true, 0xa121, 0xa121 }, /* 0xa122 */ { true, 0xa122, 0xa122 }, /* 0xa123 */ { true, 0xa123, 0xa123 }, /* 0xa124 */ { true, 0xa124, 0xa124 }, /* 0xa125 */ { true, 0xa125, 0xa125 }, /* 0xa126 */ { true, 0xa126, 0xa126 }, /* 0xa127 */ { true, 0xa127, 0xa127 }, /* 0xa128 */ { true, 0xa128, 0xa128 }, /* 0xa129 */ { true, 0xa129, 0xa129 }, /* 0xa12a */ { true, 0xa12a, 0xa12a }, /* 0xa12b */ { true, 0xa12b, 0xa12b }, /* 0xa12c */ { true, 0xa12c, 0xa12c }, /* 0xa12d */ { true, 0xa12d, 0xa12d }, /* 0xa12e */ { true, 0xa12e, 0xa12e }, /* 0xa12f */ { true, 0xa12f, 0xa12f }, /* 0xa130 */ { true, 0xa130, 0xa130 }, /* 0xa131 */ { true, 0xa131, 0xa131 }, /* 0xa132 */ { true, 0xa132, 0xa132 }, /* 0xa133 */ { true, 0xa133, 0xa133 }, /* 0xa134 */ { true, 0xa134, 0xa134 }, /* 0xa135 */ { true, 0xa135, 0xa135 }, /* 0xa136 */ { true, 0xa136, 0xa136 }, /* 0xa137 */ { true, 0xa137, 0xa137 }, /* 0xa138 */ { true, 0xa138, 0xa138 }, /* 0xa139 */ { true, 0xa139, 0xa139 }, /* 0xa13a */ { true, 0xa13a, 0xa13a }, /* 0xa13b */ { true, 0xa13b, 0xa13b }, /* 0xa13c */ { true, 0xa13c, 0xa13c }, /* 0xa13d */ { true, 0xa13d, 0xa13d }, /* 0xa13e */ { true, 0xa13e, 0xa13e }, /* 0xa13f */ { true, 0xa13f, 0xa13f }, /* 0xa140 */ { true, 0xa140, 0xa140 }, /* 0xa141 */ { true, 0xa141, 0xa141 }, /* 0xa142 */ { true, 0xa142, 0xa142 }, /* 0xa143 */ { true, 0xa143, 0xa143 }, /* 0xa144 */ { true, 0xa144, 0xa144 }, /* 0xa145 */ { true, 0xa145, 0xa145 }, /* 0xa146 */ { true, 0xa146, 0xa146 }, /* 0xa147 */ { true, 0xa147, 0xa147 }, /* 0xa148 */ { true, 0xa148, 0xa148 }, /* 0xa149 */ { true, 0xa149, 0xa149 }, /* 0xa14a */ { true, 0xa14a, 0xa14a }, /* 0xa14b */ { true, 0xa14b, 0xa14b }, /* 0xa14c */ { true, 0xa14c, 0xa14c }, /* 0xa14d */ { true, 0xa14d, 0xa14d }, /* 0xa14e */ { true, 0xa14e, 0xa14e }, /* 0xa14f */ { true, 0xa14f, 0xa14f }, /* 0xa150 */ { true, 0xa150, 0xa150 }, /* 0xa151 */ { true, 0xa151, 0xa151 }, /* 0xa152 */ { true, 0xa152, 0xa152 }, /* 0xa153 */ { true, 0xa153, 0xa153 }, /* 0xa154 */ { true, 0xa154, 0xa154 }, /* 0xa155 */ { true, 0xa155, 0xa155 }, /* 0xa156 */ { true, 0xa156, 0xa156 }, /* 0xa157 */ { true, 0xa157, 0xa157 }, /* 0xa158 */ { true, 0xa158, 0xa158 }, /* 0xa159 */ { true, 0xa159, 0xa159 }, /* 0xa15a */ { true, 0xa15a, 0xa15a }, /* 0xa15b */ { true, 0xa15b, 0xa15b }, /* 0xa15c */ { true, 0xa15c, 0xa15c }, /* 0xa15d */ { true, 0xa15d, 0xa15d }, /* 0xa15e */ { true, 0xa15e, 0xa15e }, /* 0xa15f */ { true, 0xa15f, 0xa15f }, /* 0xa160 */ { true, 0xa160, 0xa160 }, /* 0xa161 */ { true, 0xa161, 0xa161 }, /* 0xa162 */ { true, 0xa162, 0xa162 }, /* 0xa163 */ { true, 0xa163, 0xa163 }, /* 0xa164 */ { true, 0xa164, 0xa164 }, /* 0xa165 */ { true, 0xa165, 0xa165 }, /* 0xa166 */ { true, 0xa166, 0xa166 }, /* 0xa167 */ { true, 0xa167, 0xa167 }, /* 0xa168 */ { true, 0xa168, 0xa168 }, /* 0xa169 */ { true, 0xa169, 0xa169 }, /* 0xa16a */ { true, 0xa16a, 0xa16a }, /* 0xa16b */ { true, 0xa16b, 0xa16b }, /* 0xa16c */ { true, 0xa16c, 0xa16c }, /* 0xa16d */ { true, 0xa16d, 0xa16d }, /* 0xa16e */ { true, 0xa16e, 0xa16e }, /* 0xa16f */ { true, 0xa16f, 0xa16f }, /* 0xa170 */ { true, 0xa170, 0xa170 }, /* 0xa171 */ { true, 0xa171, 0xa171 }, /* 0xa172 */ { true, 0xa172, 0xa172 }, /* 0xa173 */ { true, 0xa173, 0xa173 }, /* 0xa174 */ { true, 0xa174, 0xa174 }, /* 0xa175 */ { true, 0xa175, 0xa175 }, /* 0xa176 */ { true, 0xa176, 0xa176 }, /* 0xa177 */ { true, 0xa177, 0xa177 }, /* 0xa178 */ { true, 0xa178, 0xa178 }, /* 0xa179 */ { true, 0xa179, 0xa179 }, /* 0xa17a */ { true, 0xa17a, 0xa17a }, /* 0xa17b */ { true, 0xa17b, 0xa17b }, /* 0xa17c */ { true, 0xa17c, 0xa17c }, /* 0xa17d */ { true, 0xa17d, 0xa17d }, /* 0xa17e */ { true, 0xa17e, 0xa17e }, /* 0xa17f */ { true, 0xa17f, 0xa17f }, /* 0xa180 */ { true, 0xa180, 0xa180 }, /* 0xa181 */ { true, 0xa181, 0xa181 }, /* 0xa182 */ { true, 0xa182, 0xa182 }, /* 0xa183 */ { true, 0xa183, 0xa183 }, /* 0xa184 */ { true, 0xa184, 0xa184 }, /* 0xa185 */ { true, 0xa185, 0xa185 }, /* 0xa186 */ { true, 0xa186, 0xa186 }, /* 0xa187 */ { true, 0xa187, 0xa187 }, /* 0xa188 */ { true, 0xa188, 0xa188 }, /* 0xa189 */ { true, 0xa189, 0xa189 }, /* 0xa18a */ { true, 0xa18a, 0xa18a }, /* 0xa18b */ { true, 0xa18b, 0xa18b }, /* 0xa18c */ { true, 0xa18c, 0xa18c }, /* 0xa18d */ { true, 0xa18d, 0xa18d }, /* 0xa18e */ { true, 0xa18e, 0xa18e }, /* 0xa18f */ { true, 0xa18f, 0xa18f }, /* 0xa190 */ { true, 0xa190, 0xa190 }, /* 0xa191 */ { true, 0xa191, 0xa191 }, /* 0xa192 */ { true, 0xa192, 0xa192 }, /* 0xa193 */ { true, 0xa193, 0xa193 }, /* 0xa194 */ { true, 0xa194, 0xa194 }, /* 0xa195 */ { true, 0xa195, 0xa195 }, /* 0xa196 */ { true, 0xa196, 0xa196 }, /* 0xa197 */ { true, 0xa197, 0xa197 }, /* 0xa198 */ { true, 0xa198, 0xa198 }, /* 0xa199 */ { true, 0xa199, 0xa199 }, /* 0xa19a */ { true, 0xa19a, 0xa19a }, /* 0xa19b */ { true, 0xa19b, 0xa19b }, /* 0xa19c */ { true, 0xa19c, 0xa19c }, /* 0xa19d */ { true, 0xa19d, 0xa19d }, /* 0xa19e */ { true, 0xa19e, 0xa19e }, /* 0xa19f */ { true, 0xa19f, 0xa19f }, /* 0xa1a0 */ { true, 0xa1a0, 0xa1a0 }, /* 0xa1a1 */ { true, 0xa1a1, 0xa1a1 }, /* 0xa1a2 */ { true, 0xa1a2, 0xa1a2 }, /* 0xa1a3 */ { true, 0xa1a3, 0xa1a3 }, /* 0xa1a4 */ { true, 0xa1a4, 0xa1a4 }, /* 0xa1a5 */ { true, 0xa1a5, 0xa1a5 }, /* 0xa1a6 */ { true, 0xa1a6, 0xa1a6 }, /* 0xa1a7 */ { true, 0xa1a7, 0xa1a7 }, /* 0xa1a8 */ { true, 0xa1a8, 0xa1a8 }, /* 0xa1a9 */ { true, 0xa1a9, 0xa1a9 }, /* 0xa1aa */ { true, 0xa1aa, 0xa1aa }, /* 0xa1ab */ { true, 0xa1ab, 0xa1ab }, /* 0xa1ac */ { true, 0xa1ac, 0xa1ac }, /* 0xa1ad */ { true, 0xa1ad, 0xa1ad }, /* 0xa1ae */ { true, 0xa1ae, 0xa1ae }, /* 0xa1af */ { true, 0xa1af, 0xa1af }, /* 0xa1b0 */ { true, 0xa1b0, 0xa1b0 }, /* 0xa1b1 */ { true, 0xa1b1, 0xa1b1 }, /* 0xa1b2 */ { true, 0xa1b2, 0xa1b2 }, /* 0xa1b3 */ { true, 0xa1b3, 0xa1b3 }, /* 0xa1b4 */ { true, 0xa1b4, 0xa1b4 }, /* 0xa1b5 */ { true, 0xa1b5, 0xa1b5 }, /* 0xa1b6 */ { true, 0xa1b6, 0xa1b6 }, /* 0xa1b7 */ { true, 0xa1b7, 0xa1b7 }, /* 0xa1b8 */ { true, 0xa1b8, 0xa1b8 }, /* 0xa1b9 */ { true, 0xa1b9, 0xa1b9 }, /* 0xa1ba */ { true, 0xa1ba, 0xa1ba }, /* 0xa1bb */ { true, 0xa1bb, 0xa1bb }, /* 0xa1bc */ { true, 0xa1bc, 0xa1bc }, /* 0xa1bd */ { true, 0xa1bd, 0xa1bd }, /* 0xa1be */ { true, 0xa1be, 0xa1be }, /* 0xa1bf */ { true, 0xa1bf, 0xa1bf }, /* 0xa1c0 */ { true, 0xa1c0, 0xa1c0 }, /* 0xa1c1 */ { true, 0xa1c1, 0xa1c1 }, /* 0xa1c2 */ { true, 0xa1c2, 0xa1c2 }, /* 0xa1c3 */ { true, 0xa1c3, 0xa1c3 }, /* 0xa1c4 */ { true, 0xa1c4, 0xa1c4 }, /* 0xa1c5 */ { true, 0xa1c5, 0xa1c5 }, /* 0xa1c6 */ { true, 0xa1c6, 0xa1c6 }, /* 0xa1c7 */ { true, 0xa1c7, 0xa1c7 }, /* 0xa1c8 */ { true, 0xa1c8, 0xa1c8 }, /* 0xa1c9 */ { true, 0xa1c9, 0xa1c9 }, /* 0xa1ca */ { true, 0xa1ca, 0xa1ca }, /* 0xa1cb */ { true, 0xa1cb, 0xa1cb }, /* 0xa1cc */ { true, 0xa1cc, 0xa1cc }, /* 0xa1cd */ { true, 0xa1cd, 0xa1cd }, /* 0xa1ce */ { true, 0xa1ce, 0xa1ce }, /* 0xa1cf */ { true, 0xa1cf, 0xa1cf }, /* 0xa1d0 */ { true, 0xa1d0, 0xa1d0 }, /* 0xa1d1 */ { true, 0xa1d1, 0xa1d1 }, /* 0xa1d2 */ { true, 0xa1d2, 0xa1d2 }, /* 0xa1d3 */ { true, 0xa1d3, 0xa1d3 }, /* 0xa1d4 */ { true, 0xa1d4, 0xa1d4 }, /* 0xa1d5 */ { true, 0xa1d5, 0xa1d5 }, /* 0xa1d6 */ { true, 0xa1d6, 0xa1d6 }, /* 0xa1d7 */ { true, 0xa1d7, 0xa1d7 }, /* 0xa1d8 */ { true, 0xa1d8, 0xa1d8 }, /* 0xa1d9 */ { true, 0xa1d9, 0xa1d9 }, /* 0xa1da */ { true, 0xa1da, 0xa1da }, /* 0xa1db */ { true, 0xa1db, 0xa1db }, /* 0xa1dc */ { true, 0xa1dc, 0xa1dc }, /* 0xa1dd */ { true, 0xa1dd, 0xa1dd }, /* 0xa1de */ { true, 0xa1de, 0xa1de }, /* 0xa1df */ { true, 0xa1df, 0xa1df }, /* 0xa1e0 */ { true, 0xa1e0, 0xa1e0 }, /* 0xa1e1 */ { true, 0xa1e1, 0xa1e1 }, /* 0xa1e2 */ { true, 0xa1e2, 0xa1e2 }, /* 0xa1e3 */ { true, 0xa1e3, 0xa1e3 }, /* 0xa1e4 */ { true, 0xa1e4, 0xa1e4 }, /* 0xa1e5 */ { true, 0xa1e5, 0xa1e5 }, /* 0xa1e6 */ { true, 0xa1e6, 0xa1e6 }, /* 0xa1e7 */ { true, 0xa1e7, 0xa1e7 }, /* 0xa1e8 */ { true, 0xa1e8, 0xa1e8 }, /* 0xa1e9 */ { true, 0xa1e9, 0xa1e9 }, /* 0xa1ea */ { true, 0xa1ea, 0xa1ea }, /* 0xa1eb */ { true, 0xa1eb, 0xa1eb }, /* 0xa1ec */ { true, 0xa1ec, 0xa1ec }, /* 0xa1ed */ { true, 0xa1ed, 0xa1ed }, /* 0xa1ee */ { true, 0xa1ee, 0xa1ee }, /* 0xa1ef */ { true, 0xa1ef, 0xa1ef }, /* 0xa1f0 */ { true, 0xa1f0, 0xa1f0 }, /* 0xa1f1 */ { true, 0xa1f1, 0xa1f1 }, /* 0xa1f2 */ { true, 0xa1f2, 0xa1f2 }, /* 0xa1f3 */ { true, 0xa1f3, 0xa1f3 }, /* 0xa1f4 */ { true, 0xa1f4, 0xa1f4 }, /* 0xa1f5 */ { true, 0xa1f5, 0xa1f5 }, /* 0xa1f6 */ { true, 0xa1f6, 0xa1f6 }, /* 0xa1f7 */ { true, 0xa1f7, 0xa1f7 }, /* 0xa1f8 */ { true, 0xa1f8, 0xa1f8 }, /* 0xa1f9 */ { true, 0xa1f9, 0xa1f9 }, /* 0xa1fa */ { true, 0xa1fa, 0xa1fa }, /* 0xa1fb */ { true, 0xa1fb, 0xa1fb }, /* 0xa1fc */ { true, 0xa1fc, 0xa1fc }, /* 0xa1fd */ { true, 0xa1fd, 0xa1fd }, /* 0xa1fe */ { true, 0xa1fe, 0xa1fe }, /* 0xa1ff */ { true, 0xa1ff, 0xa1ff }, /* 0xa200 */ { true, 0xa200, 0xa200 }, /* 0xa201 */ { true, 0xa201, 0xa201 }, /* 0xa202 */ { true, 0xa202, 0xa202 }, /* 0xa203 */ { true, 0xa203, 0xa203 }, /* 0xa204 */ { true, 0xa204, 0xa204 }, /* 0xa205 */ { true, 0xa205, 0xa205 }, /* 0xa206 */ { true, 0xa206, 0xa206 }, /* 0xa207 */ { true, 0xa207, 0xa207 }, /* 0xa208 */ { true, 0xa208, 0xa208 }, /* 0xa209 */ { true, 0xa209, 0xa209 }, /* 0xa20a */ { true, 0xa20a, 0xa20a }, /* 0xa20b */ { true, 0xa20b, 0xa20b }, /* 0xa20c */ { true, 0xa20c, 0xa20c }, /* 0xa20d */ { true, 0xa20d, 0xa20d }, /* 0xa20e */ { true, 0xa20e, 0xa20e }, /* 0xa20f */ { true, 0xa20f, 0xa20f }, /* 0xa210 */ { true, 0xa210, 0xa210 }, /* 0xa211 */ { true, 0xa211, 0xa211 }, /* 0xa212 */ { true, 0xa212, 0xa212 }, /* 0xa213 */ { true, 0xa213, 0xa213 }, /* 0xa214 */ { true, 0xa214, 0xa214 }, /* 0xa215 */ { true, 0xa215, 0xa215 }, /* 0xa216 */ { true, 0xa216, 0xa216 }, /* 0xa217 */ { true, 0xa217, 0xa217 }, /* 0xa218 */ { true, 0xa218, 0xa218 }, /* 0xa219 */ { true, 0xa219, 0xa219 }, /* 0xa21a */ { true, 0xa21a, 0xa21a }, /* 0xa21b */ { true, 0xa21b, 0xa21b }, /* 0xa21c */ { true, 0xa21c, 0xa21c }, /* 0xa21d */ { true, 0xa21d, 0xa21d }, /* 0xa21e */ { true, 0xa21e, 0xa21e }, /* 0xa21f */ { true, 0xa21f, 0xa21f }, /* 0xa220 */ { true, 0xa220, 0xa220 }, /* 0xa221 */ { true, 0xa221, 0xa221 }, /* 0xa222 */ { true, 0xa222, 0xa222 }, /* 0xa223 */ { true, 0xa223, 0xa223 }, /* 0xa224 */ { true, 0xa224, 0xa224 }, /* 0xa225 */ { true, 0xa225, 0xa225 }, /* 0xa226 */ { true, 0xa226, 0xa226 }, /* 0xa227 */ { true, 0xa227, 0xa227 }, /* 0xa228 */ { true, 0xa228, 0xa228 }, /* 0xa229 */ { true, 0xa229, 0xa229 }, /* 0xa22a */ { true, 0xa22a, 0xa22a }, /* 0xa22b */ { true, 0xa22b, 0xa22b }, /* 0xa22c */ { true, 0xa22c, 0xa22c }, /* 0xa22d */ { true, 0xa22d, 0xa22d }, /* 0xa22e */ { true, 0xa22e, 0xa22e }, /* 0xa22f */ { true, 0xa22f, 0xa22f }, /* 0xa230 */ { true, 0xa230, 0xa230 }, /* 0xa231 */ { true, 0xa231, 0xa231 }, /* 0xa232 */ { true, 0xa232, 0xa232 }, /* 0xa233 */ { true, 0xa233, 0xa233 }, /* 0xa234 */ { true, 0xa234, 0xa234 }, /* 0xa235 */ { true, 0xa235, 0xa235 }, /* 0xa236 */ { true, 0xa236, 0xa236 }, /* 0xa237 */ { true, 0xa237, 0xa237 }, /* 0xa238 */ { true, 0xa238, 0xa238 }, /* 0xa239 */ { true, 0xa239, 0xa239 }, /* 0xa23a */ { true, 0xa23a, 0xa23a }, /* 0xa23b */ { true, 0xa23b, 0xa23b }, /* 0xa23c */ { true, 0xa23c, 0xa23c }, /* 0xa23d */ { true, 0xa23d, 0xa23d }, /* 0xa23e */ { true, 0xa23e, 0xa23e }, /* 0xa23f */ { true, 0xa23f, 0xa23f }, /* 0xa240 */ { true, 0xa240, 0xa240 }, /* 0xa241 */ { true, 0xa241, 0xa241 }, /* 0xa242 */ { true, 0xa242, 0xa242 }, /* 0xa243 */ { true, 0xa243, 0xa243 }, /* 0xa244 */ { true, 0xa244, 0xa244 }, /* 0xa245 */ { true, 0xa245, 0xa245 }, /* 0xa246 */ { true, 0xa246, 0xa246 }, /* 0xa247 */ { true, 0xa247, 0xa247 }, /* 0xa248 */ { true, 0xa248, 0xa248 }, /* 0xa249 */ { true, 0xa249, 0xa249 }, /* 0xa24a */ { true, 0xa24a, 0xa24a }, /* 0xa24b */ { true, 0xa24b, 0xa24b }, /* 0xa24c */ { true, 0xa24c, 0xa24c }, /* 0xa24d */ { true, 0xa24d, 0xa24d }, /* 0xa24e */ { true, 0xa24e, 0xa24e }, /* 0xa24f */ { true, 0xa24f, 0xa24f }, /* 0xa250 */ { true, 0xa250, 0xa250 }, /* 0xa251 */ { true, 0xa251, 0xa251 }, /* 0xa252 */ { true, 0xa252, 0xa252 }, /* 0xa253 */ { true, 0xa253, 0xa253 }, /* 0xa254 */ { true, 0xa254, 0xa254 }, /* 0xa255 */ { true, 0xa255, 0xa255 }, /* 0xa256 */ { true, 0xa256, 0xa256 }, /* 0xa257 */ { true, 0xa257, 0xa257 }, /* 0xa258 */ { true, 0xa258, 0xa258 }, /* 0xa259 */ { true, 0xa259, 0xa259 }, /* 0xa25a */ { true, 0xa25a, 0xa25a }, /* 0xa25b */ { true, 0xa25b, 0xa25b }, /* 0xa25c */ { true, 0xa25c, 0xa25c }, /* 0xa25d */ { true, 0xa25d, 0xa25d }, /* 0xa25e */ { true, 0xa25e, 0xa25e }, /* 0xa25f */ { true, 0xa25f, 0xa25f }, /* 0xa260 */ { true, 0xa260, 0xa260 }, /* 0xa261 */ { true, 0xa261, 0xa261 }, /* 0xa262 */ { true, 0xa262, 0xa262 }, /* 0xa263 */ { true, 0xa263, 0xa263 }, /* 0xa264 */ { true, 0xa264, 0xa264 }, /* 0xa265 */ { true, 0xa265, 0xa265 }, /* 0xa266 */ { true, 0xa266, 0xa266 }, /* 0xa267 */ { true, 0xa267, 0xa267 }, /* 0xa268 */ { true, 0xa268, 0xa268 }, /* 0xa269 */ { true, 0xa269, 0xa269 }, /* 0xa26a */ { true, 0xa26a, 0xa26a }, /* 0xa26b */ { true, 0xa26b, 0xa26b }, /* 0xa26c */ { true, 0xa26c, 0xa26c }, /* 0xa26d */ { true, 0xa26d, 0xa26d }, /* 0xa26e */ { true, 0xa26e, 0xa26e }, /* 0xa26f */ { true, 0xa26f, 0xa26f }, /* 0xa270 */ { true, 0xa270, 0xa270 }, /* 0xa271 */ { true, 0xa271, 0xa271 }, /* 0xa272 */ { true, 0xa272, 0xa272 }, /* 0xa273 */ { true, 0xa273, 0xa273 }, /* 0xa274 */ { true, 0xa274, 0xa274 }, /* 0xa275 */ { true, 0xa275, 0xa275 }, /* 0xa276 */ { true, 0xa276, 0xa276 }, /* 0xa277 */ { true, 0xa277, 0xa277 }, /* 0xa278 */ { true, 0xa278, 0xa278 }, /* 0xa279 */ { true, 0xa279, 0xa279 }, /* 0xa27a */ { true, 0xa27a, 0xa27a }, /* 0xa27b */ { true, 0xa27b, 0xa27b }, /* 0xa27c */ { true, 0xa27c, 0xa27c }, /* 0xa27d */ { true, 0xa27d, 0xa27d }, /* 0xa27e */ { true, 0xa27e, 0xa27e }, /* 0xa27f */ { true, 0xa27f, 0xa27f }, /* 0xa280 */ { true, 0xa280, 0xa280 }, /* 0xa281 */ { true, 0xa281, 0xa281 }, /* 0xa282 */ { true, 0xa282, 0xa282 }, /* 0xa283 */ { true, 0xa283, 0xa283 }, /* 0xa284 */ { true, 0xa284, 0xa284 }, /* 0xa285 */ { true, 0xa285, 0xa285 }, /* 0xa286 */ { true, 0xa286, 0xa286 }, /* 0xa287 */ { true, 0xa287, 0xa287 }, /* 0xa288 */ { true, 0xa288, 0xa288 }, /* 0xa289 */ { true, 0xa289, 0xa289 }, /* 0xa28a */ { true, 0xa28a, 0xa28a }, /* 0xa28b */ { true, 0xa28b, 0xa28b }, /* 0xa28c */ { true, 0xa28c, 0xa28c }, /* 0xa28d */ { true, 0xa28d, 0xa28d }, /* 0xa28e */ { true, 0xa28e, 0xa28e }, /* 0xa28f */ { true, 0xa28f, 0xa28f }, /* 0xa290 */ { true, 0xa290, 0xa290 }, /* 0xa291 */ { true, 0xa291, 0xa291 }, /* 0xa292 */ { true, 0xa292, 0xa292 }, /* 0xa293 */ { true, 0xa293, 0xa293 }, /* 0xa294 */ { true, 0xa294, 0xa294 }, /* 0xa295 */ { true, 0xa295, 0xa295 }, /* 0xa296 */ { true, 0xa296, 0xa296 }, /* 0xa297 */ { true, 0xa297, 0xa297 }, /* 0xa298 */ { true, 0xa298, 0xa298 }, /* 0xa299 */ { true, 0xa299, 0xa299 }, /* 0xa29a */ { true, 0xa29a, 0xa29a }, /* 0xa29b */ { true, 0xa29b, 0xa29b }, /* 0xa29c */ { true, 0xa29c, 0xa29c }, /* 0xa29d */ { true, 0xa29d, 0xa29d }, /* 0xa29e */ { true, 0xa29e, 0xa29e }, /* 0xa29f */ { true, 0xa29f, 0xa29f }, /* 0xa2a0 */ { true, 0xa2a0, 0xa2a0 }, /* 0xa2a1 */ { true, 0xa2a1, 0xa2a1 }, /* 0xa2a2 */ { true, 0xa2a2, 0xa2a2 }, /* 0xa2a3 */ { true, 0xa2a3, 0xa2a3 }, /* 0xa2a4 */ { true, 0xa2a4, 0xa2a4 }, /* 0xa2a5 */ { true, 0xa2a5, 0xa2a5 }, /* 0xa2a6 */ { true, 0xa2a6, 0xa2a6 }, /* 0xa2a7 */ { true, 0xa2a7, 0xa2a7 }, /* 0xa2a8 */ { true, 0xa2a8, 0xa2a8 }, /* 0xa2a9 */ { true, 0xa2a9, 0xa2a9 }, /* 0xa2aa */ { true, 0xa2aa, 0xa2aa }, /* 0xa2ab */ { true, 0xa2ab, 0xa2ab }, /* 0xa2ac */ { true, 0xa2ac, 0xa2ac }, /* 0xa2ad */ { true, 0xa2ad, 0xa2ad }, /* 0xa2ae */ { true, 0xa2ae, 0xa2ae }, /* 0xa2af */ { true, 0xa2af, 0xa2af }, /* 0xa2b0 */ { true, 0xa2b0, 0xa2b0 }, /* 0xa2b1 */ { true, 0xa2b1, 0xa2b1 }, /* 0xa2b2 */ { true, 0xa2b2, 0xa2b2 }, /* 0xa2b3 */ { true, 0xa2b3, 0xa2b3 }, /* 0xa2b4 */ { true, 0xa2b4, 0xa2b4 }, /* 0xa2b5 */ { true, 0xa2b5, 0xa2b5 }, /* 0xa2b6 */ { true, 0xa2b6, 0xa2b6 }, /* 0xa2b7 */ { true, 0xa2b7, 0xa2b7 }, /* 0xa2b8 */ { true, 0xa2b8, 0xa2b8 }, /* 0xa2b9 */ { true, 0xa2b9, 0xa2b9 }, /* 0xa2ba */ { true, 0xa2ba, 0xa2ba }, /* 0xa2bb */ { true, 0xa2bb, 0xa2bb }, /* 0xa2bc */ { true, 0xa2bc, 0xa2bc }, /* 0xa2bd */ { true, 0xa2bd, 0xa2bd }, /* 0xa2be */ { true, 0xa2be, 0xa2be }, /* 0xa2bf */ { true, 0xa2bf, 0xa2bf }, /* 0xa2c0 */ { true, 0xa2c0, 0xa2c0 }, /* 0xa2c1 */ { true, 0xa2c1, 0xa2c1 }, /* 0xa2c2 */ { true, 0xa2c2, 0xa2c2 }, /* 0xa2c3 */ { true, 0xa2c3, 0xa2c3 }, /* 0xa2c4 */ { true, 0xa2c4, 0xa2c4 }, /* 0xa2c5 */ { true, 0xa2c5, 0xa2c5 }, /* 0xa2c6 */ { true, 0xa2c6, 0xa2c6 }, /* 0xa2c7 */ { true, 0xa2c7, 0xa2c7 }, /* 0xa2c8 */ { true, 0xa2c8, 0xa2c8 }, /* 0xa2c9 */ { true, 0xa2c9, 0xa2c9 }, /* 0xa2ca */ { true, 0xa2ca, 0xa2ca }, /* 0xa2cb */ { true, 0xa2cb, 0xa2cb }, /* 0xa2cc */ { true, 0xa2cc, 0xa2cc }, /* 0xa2cd */ { true, 0xa2cd, 0xa2cd }, /* 0xa2ce */ { true, 0xa2ce, 0xa2ce }, /* 0xa2cf */ { true, 0xa2cf, 0xa2cf }, /* 0xa2d0 */ { true, 0xa2d0, 0xa2d0 }, /* 0xa2d1 */ { true, 0xa2d1, 0xa2d1 }, /* 0xa2d2 */ { true, 0xa2d2, 0xa2d2 }, /* 0xa2d3 */ { true, 0xa2d3, 0xa2d3 }, /* 0xa2d4 */ { true, 0xa2d4, 0xa2d4 }, /* 0xa2d5 */ { true, 0xa2d5, 0xa2d5 }, /* 0xa2d6 */ { true, 0xa2d6, 0xa2d6 }, /* 0xa2d7 */ { true, 0xa2d7, 0xa2d7 }, /* 0xa2d8 */ { true, 0xa2d8, 0xa2d8 }, /* 0xa2d9 */ { true, 0xa2d9, 0xa2d9 }, /* 0xa2da */ { true, 0xa2da, 0xa2da }, /* 0xa2db */ { true, 0xa2db, 0xa2db }, /* 0xa2dc */ { true, 0xa2dc, 0xa2dc }, /* 0xa2dd */ { true, 0xa2dd, 0xa2dd }, /* 0xa2de */ { true, 0xa2de, 0xa2de }, /* 0xa2df */ { true, 0xa2df, 0xa2df }, /* 0xa2e0 */ { true, 0xa2e0, 0xa2e0 }, /* 0xa2e1 */ { true, 0xa2e1, 0xa2e1 }, /* 0xa2e2 */ { true, 0xa2e2, 0xa2e2 }, /* 0xa2e3 */ { true, 0xa2e3, 0xa2e3 }, /* 0xa2e4 */ { true, 0xa2e4, 0xa2e4 }, /* 0xa2e5 */ { true, 0xa2e5, 0xa2e5 }, /* 0xa2e6 */ { true, 0xa2e6, 0xa2e6 }, /* 0xa2e7 */ { true, 0xa2e7, 0xa2e7 }, /* 0xa2e8 */ { true, 0xa2e8, 0xa2e8 }, /* 0xa2e9 */ { true, 0xa2e9, 0xa2e9 }, /* 0xa2ea */ { true, 0xa2ea, 0xa2ea }, /* 0xa2eb */ { true, 0xa2eb, 0xa2eb }, /* 0xa2ec */ { true, 0xa2ec, 0xa2ec }, /* 0xa2ed */ { true, 0xa2ed, 0xa2ed }, /* 0xa2ee */ { true, 0xa2ee, 0xa2ee }, /* 0xa2ef */ { true, 0xa2ef, 0xa2ef }, /* 0xa2f0 */ { true, 0xa2f0, 0xa2f0 }, /* 0xa2f1 */ { true, 0xa2f1, 0xa2f1 }, /* 0xa2f2 */ { true, 0xa2f2, 0xa2f2 }, /* 0xa2f3 */ { true, 0xa2f3, 0xa2f3 }, /* 0xa2f4 */ { true, 0xa2f4, 0xa2f4 }, /* 0xa2f5 */ { true, 0xa2f5, 0xa2f5 }, /* 0xa2f6 */ { true, 0xa2f6, 0xa2f6 }, /* 0xa2f7 */ { true, 0xa2f7, 0xa2f7 }, /* 0xa2f8 */ { true, 0xa2f8, 0xa2f8 }, /* 0xa2f9 */ { true, 0xa2f9, 0xa2f9 }, /* 0xa2fa */ { true, 0xa2fa, 0xa2fa }, /* 0xa2fb */ { true, 0xa2fb, 0xa2fb }, /* 0xa2fc */ { true, 0xa2fc, 0xa2fc }, /* 0xa2fd */ { true, 0xa2fd, 0xa2fd }, /* 0xa2fe */ { true, 0xa2fe, 0xa2fe }, /* 0xa2ff */ { true, 0xa2ff, 0xa2ff }, /* 0xa300 */ { true, 0xa300, 0xa300 }, /* 0xa301 */ { true, 0xa301, 0xa301 }, /* 0xa302 */ { true, 0xa302, 0xa302 }, /* 0xa303 */ { true, 0xa303, 0xa303 }, /* 0xa304 */ { true, 0xa304, 0xa304 }, /* 0xa305 */ { true, 0xa305, 0xa305 }, /* 0xa306 */ { true, 0xa306, 0xa306 }, /* 0xa307 */ { true, 0xa307, 0xa307 }, /* 0xa308 */ { true, 0xa308, 0xa308 }, /* 0xa309 */ { true, 0xa309, 0xa309 }, /* 0xa30a */ { true, 0xa30a, 0xa30a }, /* 0xa30b */ { true, 0xa30b, 0xa30b }, /* 0xa30c */ { true, 0xa30c, 0xa30c }, /* 0xa30d */ { true, 0xa30d, 0xa30d }, /* 0xa30e */ { true, 0xa30e, 0xa30e }, /* 0xa30f */ { true, 0xa30f, 0xa30f }, /* 0xa310 */ { true, 0xa310, 0xa310 }, /* 0xa311 */ { true, 0xa311, 0xa311 }, /* 0xa312 */ { true, 0xa312, 0xa312 }, /* 0xa313 */ { true, 0xa313, 0xa313 }, /* 0xa314 */ { true, 0xa314, 0xa314 }, /* 0xa315 */ { true, 0xa315, 0xa315 }, /* 0xa316 */ { true, 0xa316, 0xa316 }, /* 0xa317 */ { true, 0xa317, 0xa317 }, /* 0xa318 */ { true, 0xa318, 0xa318 }, /* 0xa319 */ { true, 0xa319, 0xa319 }, /* 0xa31a */ { true, 0xa31a, 0xa31a }, /* 0xa31b */ { true, 0xa31b, 0xa31b }, /* 0xa31c */ { true, 0xa31c, 0xa31c }, /* 0xa31d */ { true, 0xa31d, 0xa31d }, /* 0xa31e */ { true, 0xa31e, 0xa31e }, /* 0xa31f */ { true, 0xa31f, 0xa31f }, /* 0xa320 */ { true, 0xa320, 0xa320 }, /* 0xa321 */ { true, 0xa321, 0xa321 }, /* 0xa322 */ { true, 0xa322, 0xa322 }, /* 0xa323 */ { true, 0xa323, 0xa323 }, /* 0xa324 */ { true, 0xa324, 0xa324 }, /* 0xa325 */ { true, 0xa325, 0xa325 }, /* 0xa326 */ { true, 0xa326, 0xa326 }, /* 0xa327 */ { true, 0xa327, 0xa327 }, /* 0xa328 */ { true, 0xa328, 0xa328 }, /* 0xa329 */ { true, 0xa329, 0xa329 }, /* 0xa32a */ { true, 0xa32a, 0xa32a }, /* 0xa32b */ { true, 0xa32b, 0xa32b }, /* 0xa32c */ { true, 0xa32c, 0xa32c }, /* 0xa32d */ { true, 0xa32d, 0xa32d }, /* 0xa32e */ { true, 0xa32e, 0xa32e }, /* 0xa32f */ { true, 0xa32f, 0xa32f }, /* 0xa330 */ { true, 0xa330, 0xa330 }, /* 0xa331 */ { true, 0xa331, 0xa331 }, /* 0xa332 */ { true, 0xa332, 0xa332 }, /* 0xa333 */ { true, 0xa333, 0xa333 }, /* 0xa334 */ { true, 0xa334, 0xa334 }, /* 0xa335 */ { true, 0xa335, 0xa335 }, /* 0xa336 */ { true, 0xa336, 0xa336 }, /* 0xa337 */ { true, 0xa337, 0xa337 }, /* 0xa338 */ { true, 0xa338, 0xa338 }, /* 0xa339 */ { true, 0xa339, 0xa339 }, /* 0xa33a */ { true, 0xa33a, 0xa33a }, /* 0xa33b */ { true, 0xa33b, 0xa33b }, /* 0xa33c */ { true, 0xa33c, 0xa33c }, /* 0xa33d */ { true, 0xa33d, 0xa33d }, /* 0xa33e */ { true, 0xa33e, 0xa33e }, /* 0xa33f */ { true, 0xa33f, 0xa33f }, /* 0xa340 */ { true, 0xa340, 0xa340 }, /* 0xa341 */ { true, 0xa341, 0xa341 }, /* 0xa342 */ { true, 0xa342, 0xa342 }, /* 0xa343 */ { true, 0xa343, 0xa343 }, /* 0xa344 */ { true, 0xa344, 0xa344 }, /* 0xa345 */ { true, 0xa345, 0xa345 }, /* 0xa346 */ { true, 0xa346, 0xa346 }, /* 0xa347 */ { true, 0xa347, 0xa347 }, /* 0xa348 */ { true, 0xa348, 0xa348 }, /* 0xa349 */ { true, 0xa349, 0xa349 }, /* 0xa34a */ { true, 0xa34a, 0xa34a }, /* 0xa34b */ { true, 0xa34b, 0xa34b }, /* 0xa34c */ { true, 0xa34c, 0xa34c }, /* 0xa34d */ { true, 0xa34d, 0xa34d }, /* 0xa34e */ { true, 0xa34e, 0xa34e }, /* 0xa34f */ { true, 0xa34f, 0xa34f }, /* 0xa350 */ { true, 0xa350, 0xa350 }, /* 0xa351 */ { true, 0xa351, 0xa351 }, /* 0xa352 */ { true, 0xa352, 0xa352 }, /* 0xa353 */ { true, 0xa353, 0xa353 }, /* 0xa354 */ { true, 0xa354, 0xa354 }, /* 0xa355 */ { true, 0xa355, 0xa355 }, /* 0xa356 */ { true, 0xa356, 0xa356 }, /* 0xa357 */ { true, 0xa357, 0xa357 }, /* 0xa358 */ { true, 0xa358, 0xa358 }, /* 0xa359 */ { true, 0xa359, 0xa359 }, /* 0xa35a */ { true, 0xa35a, 0xa35a }, /* 0xa35b */ { true, 0xa35b, 0xa35b }, /* 0xa35c */ { true, 0xa35c, 0xa35c }, /* 0xa35d */ { true, 0xa35d, 0xa35d }, /* 0xa35e */ { true, 0xa35e, 0xa35e }, /* 0xa35f */ { true, 0xa35f, 0xa35f }, /* 0xa360 */ { true, 0xa360, 0xa360 }, /* 0xa361 */ { true, 0xa361, 0xa361 }, /* 0xa362 */ { true, 0xa362, 0xa362 }, /* 0xa363 */ { true, 0xa363, 0xa363 }, /* 0xa364 */ { true, 0xa364, 0xa364 }, /* 0xa365 */ { true, 0xa365, 0xa365 }, /* 0xa366 */ { true, 0xa366, 0xa366 }, /* 0xa367 */ { true, 0xa367, 0xa367 }, /* 0xa368 */ { true, 0xa368, 0xa368 }, /* 0xa369 */ { true, 0xa369, 0xa369 }, /* 0xa36a */ { true, 0xa36a, 0xa36a }, /* 0xa36b */ { true, 0xa36b, 0xa36b }, /* 0xa36c */ { true, 0xa36c, 0xa36c }, /* 0xa36d */ { true, 0xa36d, 0xa36d }, /* 0xa36e */ { true, 0xa36e, 0xa36e }, /* 0xa36f */ { true, 0xa36f, 0xa36f }, /* 0xa370 */ { true, 0xa370, 0xa370 }, /* 0xa371 */ { true, 0xa371, 0xa371 }, /* 0xa372 */ { true, 0xa372, 0xa372 }, /* 0xa373 */ { true, 0xa373, 0xa373 }, /* 0xa374 */ { true, 0xa374, 0xa374 }, /* 0xa375 */ { true, 0xa375, 0xa375 }, /* 0xa376 */ { true, 0xa376, 0xa376 }, /* 0xa377 */ { true, 0xa377, 0xa377 }, /* 0xa378 */ { true, 0xa378, 0xa378 }, /* 0xa379 */ { true, 0xa379, 0xa379 }, /* 0xa37a */ { true, 0xa37a, 0xa37a }, /* 0xa37b */ { true, 0xa37b, 0xa37b }, /* 0xa37c */ { true, 0xa37c, 0xa37c }, /* 0xa37d */ { true, 0xa37d, 0xa37d }, /* 0xa37e */ { true, 0xa37e, 0xa37e }, /* 0xa37f */ { true, 0xa37f, 0xa37f }, /* 0xa380 */ { true, 0xa380, 0xa380 }, /* 0xa381 */ { true, 0xa381, 0xa381 }, /* 0xa382 */ { true, 0xa382, 0xa382 }, /* 0xa383 */ { true, 0xa383, 0xa383 }, /* 0xa384 */ { true, 0xa384, 0xa384 }, /* 0xa385 */ { true, 0xa385, 0xa385 }, /* 0xa386 */ { true, 0xa386, 0xa386 }, /* 0xa387 */ { true, 0xa387, 0xa387 }, /* 0xa388 */ { true, 0xa388, 0xa388 }, /* 0xa389 */ { true, 0xa389, 0xa389 }, /* 0xa38a */ { true, 0xa38a, 0xa38a }, /* 0xa38b */ { true, 0xa38b, 0xa38b }, /* 0xa38c */ { true, 0xa38c, 0xa38c }, /* 0xa38d */ { true, 0xa38d, 0xa38d }, /* 0xa38e */ { true, 0xa38e, 0xa38e }, /* 0xa38f */ { true, 0xa38f, 0xa38f }, /* 0xa390 */ { true, 0xa390, 0xa390 }, /* 0xa391 */ { true, 0xa391, 0xa391 }, /* 0xa392 */ { true, 0xa392, 0xa392 }, /* 0xa393 */ { true, 0xa393, 0xa393 }, /* 0xa394 */ { true, 0xa394, 0xa394 }, /* 0xa395 */ { true, 0xa395, 0xa395 }, /* 0xa396 */ { true, 0xa396, 0xa396 }, /* 0xa397 */ { true, 0xa397, 0xa397 }, /* 0xa398 */ { true, 0xa398, 0xa398 }, /* 0xa399 */ { true, 0xa399, 0xa399 }, /* 0xa39a */ { true, 0xa39a, 0xa39a }, /* 0xa39b */ { true, 0xa39b, 0xa39b }, /* 0xa39c */ { true, 0xa39c, 0xa39c }, /* 0xa39d */ { true, 0xa39d, 0xa39d }, /* 0xa39e */ { true, 0xa39e, 0xa39e }, /* 0xa39f */ { true, 0xa39f, 0xa39f }, /* 0xa3a0 */ { true, 0xa3a0, 0xa3a0 }, /* 0xa3a1 */ { true, 0xa3a1, 0xa3a1 }, /* 0xa3a2 */ { true, 0xa3a2, 0xa3a2 }, /* 0xa3a3 */ { true, 0xa3a3, 0xa3a3 }, /* 0xa3a4 */ { true, 0xa3a4, 0xa3a4 }, /* 0xa3a5 */ { true, 0xa3a5, 0xa3a5 }, /* 0xa3a6 */ { true, 0xa3a6, 0xa3a6 }, /* 0xa3a7 */ { true, 0xa3a7, 0xa3a7 }, /* 0xa3a8 */ { true, 0xa3a8, 0xa3a8 }, /* 0xa3a9 */ { true, 0xa3a9, 0xa3a9 }, /* 0xa3aa */ { true, 0xa3aa, 0xa3aa }, /* 0xa3ab */ { true, 0xa3ab, 0xa3ab }, /* 0xa3ac */ { true, 0xa3ac, 0xa3ac }, /* 0xa3ad */ { true, 0xa3ad, 0xa3ad }, /* 0xa3ae */ { true, 0xa3ae, 0xa3ae }, /* 0xa3af */ { true, 0xa3af, 0xa3af }, /* 0xa3b0 */ { true, 0xa3b0, 0xa3b0 }, /* 0xa3b1 */ { true, 0xa3b1, 0xa3b1 }, /* 0xa3b2 */ { true, 0xa3b2, 0xa3b2 }, /* 0xa3b3 */ { true, 0xa3b3, 0xa3b3 }, /* 0xa3b4 */ { true, 0xa3b4, 0xa3b4 }, /* 0xa3b5 */ { true, 0xa3b5, 0xa3b5 }, /* 0xa3b6 */ { true, 0xa3b6, 0xa3b6 }, /* 0xa3b7 */ { true, 0xa3b7, 0xa3b7 }, /* 0xa3b8 */ { true, 0xa3b8, 0xa3b8 }, /* 0xa3b9 */ { true, 0xa3b9, 0xa3b9 }, /* 0xa3ba */ { true, 0xa3ba, 0xa3ba }, /* 0xa3bb */ { true, 0xa3bb, 0xa3bb }, /* 0xa3bc */ { true, 0xa3bc, 0xa3bc }, /* 0xa3bd */ { true, 0xa3bd, 0xa3bd }, /* 0xa3be */ { true, 0xa3be, 0xa3be }, /* 0xa3bf */ { true, 0xa3bf, 0xa3bf }, /* 0xa3c0 */ { true, 0xa3c0, 0xa3c0 }, /* 0xa3c1 */ { true, 0xa3c1, 0xa3c1 }, /* 0xa3c2 */ { true, 0xa3c2, 0xa3c2 }, /* 0xa3c3 */ { true, 0xa3c3, 0xa3c3 }, /* 0xa3c4 */ { true, 0xa3c4, 0xa3c4 }, /* 0xa3c5 */ { true, 0xa3c5, 0xa3c5 }, /* 0xa3c6 */ { true, 0xa3c6, 0xa3c6 }, /* 0xa3c7 */ { true, 0xa3c7, 0xa3c7 }, /* 0xa3c8 */ { true, 0xa3c8, 0xa3c8 }, /* 0xa3c9 */ { true, 0xa3c9, 0xa3c9 }, /* 0xa3ca */ { true, 0xa3ca, 0xa3ca }, /* 0xa3cb */ { true, 0xa3cb, 0xa3cb }, /* 0xa3cc */ { true, 0xa3cc, 0xa3cc }, /* 0xa3cd */ { true, 0xa3cd, 0xa3cd }, /* 0xa3ce */ { true, 0xa3ce, 0xa3ce }, /* 0xa3cf */ { true, 0xa3cf, 0xa3cf }, /* 0xa3d0 */ { true, 0xa3d0, 0xa3d0 }, /* 0xa3d1 */ { true, 0xa3d1, 0xa3d1 }, /* 0xa3d2 */ { true, 0xa3d2, 0xa3d2 }, /* 0xa3d3 */ { true, 0xa3d3, 0xa3d3 }, /* 0xa3d4 */ { true, 0xa3d4, 0xa3d4 }, /* 0xa3d5 */ { true, 0xa3d5, 0xa3d5 }, /* 0xa3d6 */ { true, 0xa3d6, 0xa3d6 }, /* 0xa3d7 */ { true, 0xa3d7, 0xa3d7 }, /* 0xa3d8 */ { true, 0xa3d8, 0xa3d8 }, /* 0xa3d9 */ { true, 0xa3d9, 0xa3d9 }, /* 0xa3da */ { true, 0xa3da, 0xa3da }, /* 0xa3db */ { true, 0xa3db, 0xa3db }, /* 0xa3dc */ { true, 0xa3dc, 0xa3dc }, /* 0xa3dd */ { true, 0xa3dd, 0xa3dd }, /* 0xa3de */ { true, 0xa3de, 0xa3de }, /* 0xa3df */ { true, 0xa3df, 0xa3df }, /* 0xa3e0 */ { true, 0xa3e0, 0xa3e0 }, /* 0xa3e1 */ { true, 0xa3e1, 0xa3e1 }, /* 0xa3e2 */ { true, 0xa3e2, 0xa3e2 }, /* 0xa3e3 */ { true, 0xa3e3, 0xa3e3 }, /* 0xa3e4 */ { true, 0xa3e4, 0xa3e4 }, /* 0xa3e5 */ { true, 0xa3e5, 0xa3e5 }, /* 0xa3e6 */ { true, 0xa3e6, 0xa3e6 }, /* 0xa3e7 */ { true, 0xa3e7, 0xa3e7 }, /* 0xa3e8 */ { true, 0xa3e8, 0xa3e8 }, /* 0xa3e9 */ { true, 0xa3e9, 0xa3e9 }, /* 0xa3ea */ { true, 0xa3ea, 0xa3ea }, /* 0xa3eb */ { true, 0xa3eb, 0xa3eb }, /* 0xa3ec */ { true, 0xa3ec, 0xa3ec }, /* 0xa3ed */ { true, 0xa3ed, 0xa3ed }, /* 0xa3ee */ { true, 0xa3ee, 0xa3ee }, /* 0xa3ef */ { true, 0xa3ef, 0xa3ef }, /* 0xa3f0 */ { true, 0xa3f0, 0xa3f0 }, /* 0xa3f1 */ { true, 0xa3f1, 0xa3f1 }, /* 0xa3f2 */ { true, 0xa3f2, 0xa3f2 }, /* 0xa3f3 */ { true, 0xa3f3, 0xa3f3 }, /* 0xa3f4 */ { true, 0xa3f4, 0xa3f4 }, /* 0xa3f5 */ { true, 0xa3f5, 0xa3f5 }, /* 0xa3f6 */ { true, 0xa3f6, 0xa3f6 }, /* 0xa3f7 */ { true, 0xa3f7, 0xa3f7 }, /* 0xa3f8 */ { true, 0xa3f8, 0xa3f8 }, /* 0xa3f9 */ { true, 0xa3f9, 0xa3f9 }, /* 0xa3fa */ { true, 0xa3fa, 0xa3fa }, /* 0xa3fb */ { true, 0xa3fb, 0xa3fb }, /* 0xa3fc */ { true, 0xa3fc, 0xa3fc }, /* 0xa3fd */ { true, 0xa3fd, 0xa3fd }, /* 0xa3fe */ { true, 0xa3fe, 0xa3fe }, /* 0xa3ff */ { true, 0xa3ff, 0xa3ff }, /* 0xa400 */ { true, 0xa400, 0xa400 }, /* 0xa401 */ { true, 0xa401, 0xa401 }, /* 0xa402 */ { true, 0xa402, 0xa402 }, /* 0xa403 */ { true, 0xa403, 0xa403 }, /* 0xa404 */ { true, 0xa404, 0xa404 }, /* 0xa405 */ { true, 0xa405, 0xa405 }, /* 0xa406 */ { true, 0xa406, 0xa406 }, /* 0xa407 */ { true, 0xa407, 0xa407 }, /* 0xa408 */ { true, 0xa408, 0xa408 }, /* 0xa409 */ { true, 0xa409, 0xa409 }, /* 0xa40a */ { true, 0xa40a, 0xa40a }, /* 0xa40b */ { true, 0xa40b, 0xa40b }, /* 0xa40c */ { true, 0xa40c, 0xa40c }, /* 0xa40d */ { true, 0xa40d, 0xa40d }, /* 0xa40e */ { true, 0xa40e, 0xa40e }, /* 0xa40f */ { true, 0xa40f, 0xa40f }, /* 0xa410 */ { true, 0xa410, 0xa410 }, /* 0xa411 */ { true, 0xa411, 0xa411 }, /* 0xa412 */ { true, 0xa412, 0xa412 }, /* 0xa413 */ { true, 0xa413, 0xa413 }, /* 0xa414 */ { true, 0xa414, 0xa414 }, /* 0xa415 */ { true, 0xa415, 0xa415 }, /* 0xa416 */ { true, 0xa416, 0xa416 }, /* 0xa417 */ { true, 0xa417, 0xa417 }, /* 0xa418 */ { true, 0xa418, 0xa418 }, /* 0xa419 */ { true, 0xa419, 0xa419 }, /* 0xa41a */ { true, 0xa41a, 0xa41a }, /* 0xa41b */ { true, 0xa41b, 0xa41b }, /* 0xa41c */ { true, 0xa41c, 0xa41c }, /* 0xa41d */ { true, 0xa41d, 0xa41d }, /* 0xa41e */ { true, 0xa41e, 0xa41e }, /* 0xa41f */ { true, 0xa41f, 0xa41f }, /* 0xa420 */ { true, 0xa420, 0xa420 }, /* 0xa421 */ { true, 0xa421, 0xa421 }, /* 0xa422 */ { true, 0xa422, 0xa422 }, /* 0xa423 */ { true, 0xa423, 0xa423 }, /* 0xa424 */ { true, 0xa424, 0xa424 }, /* 0xa425 */ { true, 0xa425, 0xa425 }, /* 0xa426 */ { true, 0xa426, 0xa426 }, /* 0xa427 */ { true, 0xa427, 0xa427 }, /* 0xa428 */ { true, 0xa428, 0xa428 }, /* 0xa429 */ { true, 0xa429, 0xa429 }, /* 0xa42a */ { true, 0xa42a, 0xa42a }, /* 0xa42b */ { true, 0xa42b, 0xa42b }, /* 0xa42c */ { true, 0xa42c, 0xa42c }, /* 0xa42d */ { true, 0xa42d, 0xa42d }, /* 0xa42e */ { true, 0xa42e, 0xa42e }, /* 0xa42f */ { true, 0xa42f, 0xa42f }, /* 0xa430 */ { true, 0xa430, 0xa430 }, /* 0xa431 */ { true, 0xa431, 0xa431 }, /* 0xa432 */ { true, 0xa432, 0xa432 }, /* 0xa433 */ { true, 0xa433, 0xa433 }, /* 0xa434 */ { true, 0xa434, 0xa434 }, /* 0xa435 */ { true, 0xa435, 0xa435 }, /* 0xa436 */ { true, 0xa436, 0xa436 }, /* 0xa437 */ { true, 0xa437, 0xa437 }, /* 0xa438 */ { true, 0xa438, 0xa438 }, /* 0xa439 */ { true, 0xa439, 0xa439 }, /* 0xa43a */ { true, 0xa43a, 0xa43a }, /* 0xa43b */ { true, 0xa43b, 0xa43b }, /* 0xa43c */ { true, 0xa43c, 0xa43c }, /* 0xa43d */ { true, 0xa43d, 0xa43d }, /* 0xa43e */ { true, 0xa43e, 0xa43e }, /* 0xa43f */ { true, 0xa43f, 0xa43f }, /* 0xa440 */ { true, 0xa440, 0xa440 }, /* 0xa441 */ { true, 0xa441, 0xa441 }, /* 0xa442 */ { true, 0xa442, 0xa442 }, /* 0xa443 */ { true, 0xa443, 0xa443 }, /* 0xa444 */ { true, 0xa444, 0xa444 }, /* 0xa445 */ { true, 0xa445, 0xa445 }, /* 0xa446 */ { true, 0xa446, 0xa446 }, /* 0xa447 */ { true, 0xa447, 0xa447 }, /* 0xa448 */ { true, 0xa448, 0xa448 }, /* 0xa449 */ { true, 0xa449, 0xa449 }, /* 0xa44a */ { true, 0xa44a, 0xa44a }, /* 0xa44b */ { true, 0xa44b, 0xa44b }, /* 0xa44c */ { true, 0xa44c, 0xa44c }, /* 0xa44d */ { true, 0xa44d, 0xa44d }, /* 0xa44e */ { true, 0xa44e, 0xa44e }, /* 0xa44f */ { true, 0xa44f, 0xa44f }, /* 0xa450 */ { true, 0xa450, 0xa450 }, /* 0xa451 */ { true, 0xa451, 0xa451 }, /* 0xa452 */ { true, 0xa452, 0xa452 }, /* 0xa453 */ { true, 0xa453, 0xa453 }, /* 0xa454 */ { true, 0xa454, 0xa454 }, /* 0xa455 */ { true, 0xa455, 0xa455 }, /* 0xa456 */ { true, 0xa456, 0xa456 }, /* 0xa457 */ { true, 0xa457, 0xa457 }, /* 0xa458 */ { true, 0xa458, 0xa458 }, /* 0xa459 */ { true, 0xa459, 0xa459 }, /* 0xa45a */ { true, 0xa45a, 0xa45a }, /* 0xa45b */ { true, 0xa45b, 0xa45b }, /* 0xa45c */ { true, 0xa45c, 0xa45c }, /* 0xa45d */ { true, 0xa45d, 0xa45d }, /* 0xa45e */ { true, 0xa45e, 0xa45e }, /* 0xa45f */ { true, 0xa45f, 0xa45f }, /* 0xa460 */ { true, 0xa460, 0xa460 }, /* 0xa461 */ { true, 0xa461, 0xa461 }, /* 0xa462 */ { true, 0xa462, 0xa462 }, /* 0xa463 */ { true, 0xa463, 0xa463 }, /* 0xa464 */ { true, 0xa464, 0xa464 }, /* 0xa465 */ { true, 0xa465, 0xa465 }, /* 0xa466 */ { true, 0xa466, 0xa466 }, /* 0xa467 */ { true, 0xa467, 0xa467 }, /* 0xa468 */ { true, 0xa468, 0xa468 }, /* 0xa469 */ { true, 0xa469, 0xa469 }, /* 0xa46a */ { true, 0xa46a, 0xa46a }, /* 0xa46b */ { true, 0xa46b, 0xa46b }, /* 0xa46c */ { true, 0xa46c, 0xa46c }, /* 0xa46d */ { true, 0xa46d, 0xa46d }, /* 0xa46e */ { true, 0xa46e, 0xa46e }, /* 0xa46f */ { true, 0xa46f, 0xa46f }, /* 0xa470 */ { true, 0xa470, 0xa470 }, /* 0xa471 */ { true, 0xa471, 0xa471 }, /* 0xa472 */ { true, 0xa472, 0xa472 }, /* 0xa473 */ { true, 0xa473, 0xa473 }, /* 0xa474 */ { true, 0xa474, 0xa474 }, /* 0xa475 */ { true, 0xa475, 0xa475 }, /* 0xa476 */ { true, 0xa476, 0xa476 }, /* 0xa477 */ { true, 0xa477, 0xa477 }, /* 0xa478 */ { true, 0xa478, 0xa478 }, /* 0xa479 */ { true, 0xa479, 0xa479 }, /* 0xa47a */ { true, 0xa47a, 0xa47a }, /* 0xa47b */ { true, 0xa47b, 0xa47b }, /* 0xa47c */ { true, 0xa47c, 0xa47c }, /* 0xa47d */ { true, 0xa47d, 0xa47d }, /* 0xa47e */ { true, 0xa47e, 0xa47e }, /* 0xa47f */ { true, 0xa47f, 0xa47f }, /* 0xa480 */ { true, 0xa480, 0xa480 }, /* 0xa481 */ { true, 0xa481, 0xa481 }, /* 0xa482 */ { true, 0xa482, 0xa482 }, /* 0xa483 */ { true, 0xa483, 0xa483 }, /* 0xa484 */ { true, 0xa484, 0xa484 }, /* 0xa485 */ { true, 0xa485, 0xa485 }, /* 0xa486 */ { true, 0xa486, 0xa486 }, /* 0xa487 */ { true, 0xa487, 0xa487 }, /* 0xa488 */ { true, 0xa488, 0xa488 }, /* 0xa489 */ { true, 0xa489, 0xa489 }, /* 0xa48a */ { true, 0xa48a, 0xa48a }, /* 0xa48b */ { true, 0xa48b, 0xa48b }, /* 0xa48c */ { true, 0xa48c, 0xa48c }, /* 0xa48d */ { false, 0xa48d, 0xa48d }, /* 0xa48e */ { false, 0xa48e, 0xa48e }, /* 0xa48f */ { false, 0xa48f, 0xa48f }, /* 0xa490 */ { false, 0xa490, 0xa490 }, /* 0xa491 */ { false, 0xa491, 0xa491 }, /* 0xa492 */ { false, 0xa492, 0xa492 }, /* 0xa493 */ { false, 0xa493, 0xa493 }, /* 0xa494 */ { false, 0xa494, 0xa494 }, /* 0xa495 */ { false, 0xa495, 0xa495 }, /* 0xa496 */ { false, 0xa496, 0xa496 }, /* 0xa497 */ { false, 0xa497, 0xa497 }, /* 0xa498 */ { false, 0xa498, 0xa498 }, /* 0xa499 */ { false, 0xa499, 0xa499 }, /* 0xa49a */ { false, 0xa49a, 0xa49a }, /* 0xa49b */ { false, 0xa49b, 0xa49b }, /* 0xa49c */ { false, 0xa49c, 0xa49c }, /* 0xa49d */ { false, 0xa49d, 0xa49d }, /* 0xa49e */ { false, 0xa49e, 0xa49e }, /* 0xa49f */ { false, 0xa49f, 0xa49f }, /* 0xa4a0 */ { false, 0xa4a0, 0xa4a0 }, /* 0xa4a1 */ { false, 0xa4a1, 0xa4a1 }, /* 0xa4a2 */ { false, 0xa4a2, 0xa4a2 }, /* 0xa4a3 */ { false, 0xa4a3, 0xa4a3 }, /* 0xa4a4 */ { false, 0xa4a4, 0xa4a4 }, /* 0xa4a5 */ { false, 0xa4a5, 0xa4a5 }, /* 0xa4a6 */ { false, 0xa4a6, 0xa4a6 }, /* 0xa4a7 */ { false, 0xa4a7, 0xa4a7 }, /* 0xa4a8 */ { false, 0xa4a8, 0xa4a8 }, /* 0xa4a9 */ { false, 0xa4a9, 0xa4a9 }, /* 0xa4aa */ { false, 0xa4aa, 0xa4aa }, /* 0xa4ab */ { false, 0xa4ab, 0xa4ab }, /* 0xa4ac */ { false, 0xa4ac, 0xa4ac }, /* 0xa4ad */ { false, 0xa4ad, 0xa4ad }, /* 0xa4ae */ { false, 0xa4ae, 0xa4ae }, /* 0xa4af */ { false, 0xa4af, 0xa4af }, /* 0xa4b0 */ { false, 0xa4b0, 0xa4b0 }, /* 0xa4b1 */ { false, 0xa4b1, 0xa4b1 }, /* 0xa4b2 */ { false, 0xa4b2, 0xa4b2 }, /* 0xa4b3 */ { false, 0xa4b3, 0xa4b3 }, /* 0xa4b4 */ { false, 0xa4b4, 0xa4b4 }, /* 0xa4b5 */ { false, 0xa4b5, 0xa4b5 }, /* 0xa4b6 */ { false, 0xa4b6, 0xa4b6 }, /* 0xa4b7 */ { false, 0xa4b7, 0xa4b7 }, /* 0xa4b8 */ { false, 0xa4b8, 0xa4b8 }, /* 0xa4b9 */ { false, 0xa4b9, 0xa4b9 }, /* 0xa4ba */ { false, 0xa4ba, 0xa4ba }, /* 0xa4bb */ { false, 0xa4bb, 0xa4bb }, /* 0xa4bc */ { false, 0xa4bc, 0xa4bc }, /* 0xa4bd */ { false, 0xa4bd, 0xa4bd }, /* 0xa4be */ { false, 0xa4be, 0xa4be }, /* 0xa4bf */ { false, 0xa4bf, 0xa4bf }, /* 0xa4c0 */ { false, 0xa4c0, 0xa4c0 }, /* 0xa4c1 */ { false, 0xa4c1, 0xa4c1 }, /* 0xa4c2 */ { false, 0xa4c2, 0xa4c2 }, /* 0xa4c3 */ { false, 0xa4c3, 0xa4c3 }, /* 0xa4c4 */ { false, 0xa4c4, 0xa4c4 }, /* 0xa4c5 */ { false, 0xa4c5, 0xa4c5 }, /* 0xa4c6 */ { false, 0xa4c6, 0xa4c6 }, /* 0xa4c7 */ { false, 0xa4c7, 0xa4c7 }, /* 0xa4c8 */ { false, 0xa4c8, 0xa4c8 }, /* 0xa4c9 */ { false, 0xa4c9, 0xa4c9 }, /* 0xa4ca */ { false, 0xa4ca, 0xa4ca }, /* 0xa4cb */ { false, 0xa4cb, 0xa4cb }, /* 0xa4cc */ { false, 0xa4cc, 0xa4cc }, /* 0xa4cd */ { false, 0xa4cd, 0xa4cd }, /* 0xa4ce */ { false, 0xa4ce, 0xa4ce }, /* 0xa4cf */ { false, 0xa4cf, 0xa4cf }, /* 0xa4d0 */ { false, 0xa4d0, 0xa4d0 }, /* 0xa4d1 */ { false, 0xa4d1, 0xa4d1 }, /* 0xa4d2 */ { false, 0xa4d2, 0xa4d2 }, /* 0xa4d3 */ { false, 0xa4d3, 0xa4d3 }, /* 0xa4d4 */ { false, 0xa4d4, 0xa4d4 }, /* 0xa4d5 */ { false, 0xa4d5, 0xa4d5 }, /* 0xa4d6 */ { false, 0xa4d6, 0xa4d6 }, /* 0xa4d7 */ { false, 0xa4d7, 0xa4d7 }, /* 0xa4d8 */ { false, 0xa4d8, 0xa4d8 }, /* 0xa4d9 */ { false, 0xa4d9, 0xa4d9 }, /* 0xa4da */ { false, 0xa4da, 0xa4da }, /* 0xa4db */ { false, 0xa4db, 0xa4db }, /* 0xa4dc */ { false, 0xa4dc, 0xa4dc }, /* 0xa4dd */ { false, 0xa4dd, 0xa4dd }, /* 0xa4de */ { false, 0xa4de, 0xa4de }, /* 0xa4df */ { false, 0xa4df, 0xa4df }, /* 0xa4e0 */ { false, 0xa4e0, 0xa4e0 }, /* 0xa4e1 */ { false, 0xa4e1, 0xa4e1 }, /* 0xa4e2 */ { false, 0xa4e2, 0xa4e2 }, /* 0xa4e3 */ { false, 0xa4e3, 0xa4e3 }, /* 0xa4e4 */ { false, 0xa4e4, 0xa4e4 }, /* 0xa4e5 */ { false, 0xa4e5, 0xa4e5 }, /* 0xa4e6 */ { false, 0xa4e6, 0xa4e6 }, /* 0xa4e7 */ { false, 0xa4e7, 0xa4e7 }, /* 0xa4e8 */ { false, 0xa4e8, 0xa4e8 }, /* 0xa4e9 */ { false, 0xa4e9, 0xa4e9 }, /* 0xa4ea */ { false, 0xa4ea, 0xa4ea }, /* 0xa4eb */ { false, 0xa4eb, 0xa4eb }, /* 0xa4ec */ { false, 0xa4ec, 0xa4ec }, /* 0xa4ed */ { false, 0xa4ed, 0xa4ed }, /* 0xa4ee */ { false, 0xa4ee, 0xa4ee }, /* 0xa4ef */ { false, 0xa4ef, 0xa4ef }, /* 0xa4f0 */ { false, 0xa4f0, 0xa4f0 }, /* 0xa4f1 */ { false, 0xa4f1, 0xa4f1 }, /* 0xa4f2 */ { false, 0xa4f2, 0xa4f2 }, /* 0xa4f3 */ { false, 0xa4f3, 0xa4f3 }, /* 0xa4f4 */ { false, 0xa4f4, 0xa4f4 }, /* 0xa4f5 */ { false, 0xa4f5, 0xa4f5 }, /* 0xa4f6 */ { false, 0xa4f6, 0xa4f6 }, /* 0xa4f7 */ { false, 0xa4f7, 0xa4f7 }, /* 0xa4f8 */ { false, 0xa4f8, 0xa4f8 }, /* 0xa4f9 */ { false, 0xa4f9, 0xa4f9 }, /* 0xa4fa */ { false, 0xa4fa, 0xa4fa }, /* 0xa4fb */ { false, 0xa4fb, 0xa4fb }, /* 0xa4fc */ { false, 0xa4fc, 0xa4fc }, /* 0xa4fd */ { false, 0xa4fd, 0xa4fd }, /* 0xa4fe */ { false, 0xa4fe, 0xa4fe }, /* 0xa4ff */ { false, 0xa4ff, 0xa4ff }, /* 0xa500 */ { false, 0xa500, 0xa500 }, /* 0xa501 */ { false, 0xa501, 0xa501 }, /* 0xa502 */ { false, 0xa502, 0xa502 }, /* 0xa503 */ { false, 0xa503, 0xa503 }, /* 0xa504 */ { false, 0xa504, 0xa504 }, /* 0xa505 */ { false, 0xa505, 0xa505 }, /* 0xa506 */ { false, 0xa506, 0xa506 }, /* 0xa507 */ { false, 0xa507, 0xa507 }, /* 0xa508 */ { false, 0xa508, 0xa508 }, /* 0xa509 */ { false, 0xa509, 0xa509 }, /* 0xa50a */ { false, 0xa50a, 0xa50a }, /* 0xa50b */ { false, 0xa50b, 0xa50b }, /* 0xa50c */ { false, 0xa50c, 0xa50c }, /* 0xa50d */ { false, 0xa50d, 0xa50d }, /* 0xa50e */ { false, 0xa50e, 0xa50e }, /* 0xa50f */ { false, 0xa50f, 0xa50f }, /* 0xa510 */ { false, 0xa510, 0xa510 }, /* 0xa511 */ { false, 0xa511, 0xa511 }, /* 0xa512 */ { false, 0xa512, 0xa512 }, /* 0xa513 */ { false, 0xa513, 0xa513 }, /* 0xa514 */ { false, 0xa514, 0xa514 }, /* 0xa515 */ { false, 0xa515, 0xa515 }, /* 0xa516 */ { false, 0xa516, 0xa516 }, /* 0xa517 */ { false, 0xa517, 0xa517 }, /* 0xa518 */ { false, 0xa518, 0xa518 }, /* 0xa519 */ { false, 0xa519, 0xa519 }, /* 0xa51a */ { false, 0xa51a, 0xa51a }, /* 0xa51b */ { false, 0xa51b, 0xa51b }, /* 0xa51c */ { false, 0xa51c, 0xa51c }, /* 0xa51d */ { false, 0xa51d, 0xa51d }, /* 0xa51e */ { false, 0xa51e, 0xa51e }, /* 0xa51f */ { false, 0xa51f, 0xa51f }, /* 0xa520 */ { false, 0xa520, 0xa520 }, /* 0xa521 */ { false, 0xa521, 0xa521 }, /* 0xa522 */ { false, 0xa522, 0xa522 }, /* 0xa523 */ { false, 0xa523, 0xa523 }, /* 0xa524 */ { false, 0xa524, 0xa524 }, /* 0xa525 */ { false, 0xa525, 0xa525 }, /* 0xa526 */ { false, 0xa526, 0xa526 }, /* 0xa527 */ { false, 0xa527, 0xa527 }, /* 0xa528 */ { false, 0xa528, 0xa528 }, /* 0xa529 */ { false, 0xa529, 0xa529 }, /* 0xa52a */ { false, 0xa52a, 0xa52a }, /* 0xa52b */ { false, 0xa52b, 0xa52b }, /* 0xa52c */ { false, 0xa52c, 0xa52c }, /* 0xa52d */ { false, 0xa52d, 0xa52d }, /* 0xa52e */ { false, 0xa52e, 0xa52e }, /* 0xa52f */ { false, 0xa52f, 0xa52f }, /* 0xa530 */ { false, 0xa530, 0xa530 }, /* 0xa531 */ { false, 0xa531, 0xa531 }, /* 0xa532 */ { false, 0xa532, 0xa532 }, /* 0xa533 */ { false, 0xa533, 0xa533 }, /* 0xa534 */ { false, 0xa534, 0xa534 }, /* 0xa535 */ { false, 0xa535, 0xa535 }, /* 0xa536 */ { false, 0xa536, 0xa536 }, /* 0xa537 */ { false, 0xa537, 0xa537 }, /* 0xa538 */ { false, 0xa538, 0xa538 }, /* 0xa539 */ { false, 0xa539, 0xa539 }, /* 0xa53a */ { false, 0xa53a, 0xa53a }, /* 0xa53b */ { false, 0xa53b, 0xa53b }, /* 0xa53c */ { false, 0xa53c, 0xa53c }, /* 0xa53d */ { false, 0xa53d, 0xa53d }, /* 0xa53e */ { false, 0xa53e, 0xa53e }, /* 0xa53f */ { false, 0xa53f, 0xa53f }, /* 0xa540 */ { false, 0xa540, 0xa540 }, /* 0xa541 */ { false, 0xa541, 0xa541 }, /* 0xa542 */ { false, 0xa542, 0xa542 }, /* 0xa543 */ { false, 0xa543, 0xa543 }, /* 0xa544 */ { false, 0xa544, 0xa544 }, /* 0xa545 */ { false, 0xa545, 0xa545 }, /* 0xa546 */ { false, 0xa546, 0xa546 }, /* 0xa547 */ { false, 0xa547, 0xa547 }, /* 0xa548 */ { false, 0xa548, 0xa548 }, /* 0xa549 */ { false, 0xa549, 0xa549 }, /* 0xa54a */ { false, 0xa54a, 0xa54a }, /* 0xa54b */ { false, 0xa54b, 0xa54b }, /* 0xa54c */ { false, 0xa54c, 0xa54c }, /* 0xa54d */ { false, 0xa54d, 0xa54d }, /* 0xa54e */ { false, 0xa54e, 0xa54e }, /* 0xa54f */ { false, 0xa54f, 0xa54f }, /* 0xa550 */ { false, 0xa550, 0xa550 }, /* 0xa551 */ { false, 0xa551, 0xa551 }, /* 0xa552 */ { false, 0xa552, 0xa552 }, /* 0xa553 */ { false, 0xa553, 0xa553 }, /* 0xa554 */ { false, 0xa554, 0xa554 }, /* 0xa555 */ { false, 0xa555, 0xa555 }, /* 0xa556 */ { false, 0xa556, 0xa556 }, /* 0xa557 */ { false, 0xa557, 0xa557 }, /* 0xa558 */ { false, 0xa558, 0xa558 }, /* 0xa559 */ { false, 0xa559, 0xa559 }, /* 0xa55a */ { false, 0xa55a, 0xa55a }, /* 0xa55b */ { false, 0xa55b, 0xa55b }, /* 0xa55c */ { false, 0xa55c, 0xa55c }, /* 0xa55d */ { false, 0xa55d, 0xa55d }, /* 0xa55e */ { false, 0xa55e, 0xa55e }, /* 0xa55f */ { false, 0xa55f, 0xa55f }, /* 0xa560 */ { false, 0xa560, 0xa560 }, /* 0xa561 */ { false, 0xa561, 0xa561 }, /* 0xa562 */ { false, 0xa562, 0xa562 }, /* 0xa563 */ { false, 0xa563, 0xa563 }, /* 0xa564 */ { false, 0xa564, 0xa564 }, /* 0xa565 */ { false, 0xa565, 0xa565 }, /* 0xa566 */ { false, 0xa566, 0xa566 }, /* 0xa567 */ { false, 0xa567, 0xa567 }, /* 0xa568 */ { false, 0xa568, 0xa568 }, /* 0xa569 */ { false, 0xa569, 0xa569 }, /* 0xa56a */ { false, 0xa56a, 0xa56a }, /* 0xa56b */ { false, 0xa56b, 0xa56b }, /* 0xa56c */ { false, 0xa56c, 0xa56c }, /* 0xa56d */ { false, 0xa56d, 0xa56d }, /* 0xa56e */ { false, 0xa56e, 0xa56e }, /* 0xa56f */ { false, 0xa56f, 0xa56f }, /* 0xa570 */ { false, 0xa570, 0xa570 }, /* 0xa571 */ { false, 0xa571, 0xa571 }, /* 0xa572 */ { false, 0xa572, 0xa572 }, /* 0xa573 */ { false, 0xa573, 0xa573 }, /* 0xa574 */ { false, 0xa574, 0xa574 }, /* 0xa575 */ { false, 0xa575, 0xa575 }, /* 0xa576 */ { false, 0xa576, 0xa576 }, /* 0xa577 */ { false, 0xa577, 0xa577 }, /* 0xa578 */ { false, 0xa578, 0xa578 }, /* 0xa579 */ { false, 0xa579, 0xa579 }, /* 0xa57a */ { false, 0xa57a, 0xa57a }, /* 0xa57b */ { false, 0xa57b, 0xa57b }, /* 0xa57c */ { false, 0xa57c, 0xa57c }, /* 0xa57d */ { false, 0xa57d, 0xa57d }, /* 0xa57e */ { false, 0xa57e, 0xa57e }, /* 0xa57f */ { false, 0xa57f, 0xa57f }, /* 0xa580 */ { false, 0xa580, 0xa580 }, /* 0xa581 */ { false, 0xa581, 0xa581 }, /* 0xa582 */ { false, 0xa582, 0xa582 }, /* 0xa583 */ { false, 0xa583, 0xa583 }, /* 0xa584 */ { false, 0xa584, 0xa584 }, /* 0xa585 */ { false, 0xa585, 0xa585 }, /* 0xa586 */ { false, 0xa586, 0xa586 }, /* 0xa587 */ { false, 0xa587, 0xa587 }, /* 0xa588 */ { false, 0xa588, 0xa588 }, /* 0xa589 */ { false, 0xa589, 0xa589 }, /* 0xa58a */ { false, 0xa58a, 0xa58a }, /* 0xa58b */ { false, 0xa58b, 0xa58b }, /* 0xa58c */ { false, 0xa58c, 0xa58c }, /* 0xa58d */ { false, 0xa58d, 0xa58d }, /* 0xa58e */ { false, 0xa58e, 0xa58e }, /* 0xa58f */ { false, 0xa58f, 0xa58f }, /* 0xa590 */ { false, 0xa590, 0xa590 }, /* 0xa591 */ { false, 0xa591, 0xa591 }, /* 0xa592 */ { false, 0xa592, 0xa592 }, /* 0xa593 */ { false, 0xa593, 0xa593 }, /* 0xa594 */ { false, 0xa594, 0xa594 }, /* 0xa595 */ { false, 0xa595, 0xa595 }, /* 0xa596 */ { false, 0xa596, 0xa596 }, /* 0xa597 */ { false, 0xa597, 0xa597 }, /* 0xa598 */ { false, 0xa598, 0xa598 }, /* 0xa599 */ { false, 0xa599, 0xa599 }, /* 0xa59a */ { false, 0xa59a, 0xa59a }, /* 0xa59b */ { false, 0xa59b, 0xa59b }, /* 0xa59c */ { false, 0xa59c, 0xa59c }, /* 0xa59d */ { false, 0xa59d, 0xa59d }, /* 0xa59e */ { false, 0xa59e, 0xa59e }, /* 0xa59f */ { false, 0xa59f, 0xa59f }, /* 0xa5a0 */ { false, 0xa5a0, 0xa5a0 }, /* 0xa5a1 */ { false, 0xa5a1, 0xa5a1 }, /* 0xa5a2 */ { false, 0xa5a2, 0xa5a2 }, /* 0xa5a3 */ { false, 0xa5a3, 0xa5a3 }, /* 0xa5a4 */ { false, 0xa5a4, 0xa5a4 }, /* 0xa5a5 */ { false, 0xa5a5, 0xa5a5 }, /* 0xa5a6 */ { false, 0xa5a6, 0xa5a6 }, /* 0xa5a7 */ { false, 0xa5a7, 0xa5a7 }, /* 0xa5a8 */ { false, 0xa5a8, 0xa5a8 }, /* 0xa5a9 */ { false, 0xa5a9, 0xa5a9 }, /* 0xa5aa */ { false, 0xa5aa, 0xa5aa }, /* 0xa5ab */ { false, 0xa5ab, 0xa5ab }, /* 0xa5ac */ { false, 0xa5ac, 0xa5ac }, /* 0xa5ad */ { false, 0xa5ad, 0xa5ad }, /* 0xa5ae */ { false, 0xa5ae, 0xa5ae }, /* 0xa5af */ { false, 0xa5af, 0xa5af }, /* 0xa5b0 */ { false, 0xa5b0, 0xa5b0 }, /* 0xa5b1 */ { false, 0xa5b1, 0xa5b1 }, /* 0xa5b2 */ { false, 0xa5b2, 0xa5b2 }, /* 0xa5b3 */ { false, 0xa5b3, 0xa5b3 }, /* 0xa5b4 */ { false, 0xa5b4, 0xa5b4 }, /* 0xa5b5 */ { false, 0xa5b5, 0xa5b5 }, /* 0xa5b6 */ { false, 0xa5b6, 0xa5b6 }, /* 0xa5b7 */ { false, 0xa5b7, 0xa5b7 }, /* 0xa5b8 */ { false, 0xa5b8, 0xa5b8 }, /* 0xa5b9 */ { false, 0xa5b9, 0xa5b9 }, /* 0xa5ba */ { false, 0xa5ba, 0xa5ba }, /* 0xa5bb */ { false, 0xa5bb, 0xa5bb }, /* 0xa5bc */ { false, 0xa5bc, 0xa5bc }, /* 0xa5bd */ { false, 0xa5bd, 0xa5bd }, /* 0xa5be */ { false, 0xa5be, 0xa5be }, /* 0xa5bf */ { false, 0xa5bf, 0xa5bf }, /* 0xa5c0 */ { false, 0xa5c0, 0xa5c0 }, /* 0xa5c1 */ { false, 0xa5c1, 0xa5c1 }, /* 0xa5c2 */ { false, 0xa5c2, 0xa5c2 }, /* 0xa5c3 */ { false, 0xa5c3, 0xa5c3 }, /* 0xa5c4 */ { false, 0xa5c4, 0xa5c4 }, /* 0xa5c5 */ { false, 0xa5c5, 0xa5c5 }, /* 0xa5c6 */ { false, 0xa5c6, 0xa5c6 }, /* 0xa5c7 */ { false, 0xa5c7, 0xa5c7 }, /* 0xa5c8 */ { false, 0xa5c8, 0xa5c8 }, /* 0xa5c9 */ { false, 0xa5c9, 0xa5c9 }, /* 0xa5ca */ { false, 0xa5ca, 0xa5ca }, /* 0xa5cb */ { false, 0xa5cb, 0xa5cb }, /* 0xa5cc */ { false, 0xa5cc, 0xa5cc }, /* 0xa5cd */ { false, 0xa5cd, 0xa5cd }, /* 0xa5ce */ { false, 0xa5ce, 0xa5ce }, /* 0xa5cf */ { false, 0xa5cf, 0xa5cf }, /* 0xa5d0 */ { false, 0xa5d0, 0xa5d0 }, /* 0xa5d1 */ { false, 0xa5d1, 0xa5d1 }, /* 0xa5d2 */ { false, 0xa5d2, 0xa5d2 }, /* 0xa5d3 */ { false, 0xa5d3, 0xa5d3 }, /* 0xa5d4 */ { false, 0xa5d4, 0xa5d4 }, /* 0xa5d5 */ { false, 0xa5d5, 0xa5d5 }, /* 0xa5d6 */ { false, 0xa5d6, 0xa5d6 }, /* 0xa5d7 */ { false, 0xa5d7, 0xa5d7 }, /* 0xa5d8 */ { false, 0xa5d8, 0xa5d8 }, /* 0xa5d9 */ { false, 0xa5d9, 0xa5d9 }, /* 0xa5da */ { false, 0xa5da, 0xa5da }, /* 0xa5db */ { false, 0xa5db, 0xa5db }, /* 0xa5dc */ { false, 0xa5dc, 0xa5dc }, /* 0xa5dd */ { false, 0xa5dd, 0xa5dd }, /* 0xa5de */ { false, 0xa5de, 0xa5de }, /* 0xa5df */ { false, 0xa5df, 0xa5df }, /* 0xa5e0 */ { false, 0xa5e0, 0xa5e0 }, /* 0xa5e1 */ { false, 0xa5e1, 0xa5e1 }, /* 0xa5e2 */ { false, 0xa5e2, 0xa5e2 }, /* 0xa5e3 */ { false, 0xa5e3, 0xa5e3 }, /* 0xa5e4 */ { false, 0xa5e4, 0xa5e4 }, /* 0xa5e5 */ { false, 0xa5e5, 0xa5e5 }, /* 0xa5e6 */ { false, 0xa5e6, 0xa5e6 }, /* 0xa5e7 */ { false, 0xa5e7, 0xa5e7 }, /* 0xa5e8 */ { false, 0xa5e8, 0xa5e8 }, /* 0xa5e9 */ { false, 0xa5e9, 0xa5e9 }, /* 0xa5ea */ { false, 0xa5ea, 0xa5ea }, /* 0xa5eb */ { false, 0xa5eb, 0xa5eb }, /* 0xa5ec */ { false, 0xa5ec, 0xa5ec }, /* 0xa5ed */ { false, 0xa5ed, 0xa5ed }, /* 0xa5ee */ { false, 0xa5ee, 0xa5ee }, /* 0xa5ef */ { false, 0xa5ef, 0xa5ef }, /* 0xa5f0 */ { false, 0xa5f0, 0xa5f0 }, /* 0xa5f1 */ { false, 0xa5f1, 0xa5f1 }, /* 0xa5f2 */ { false, 0xa5f2, 0xa5f2 }, /* 0xa5f3 */ { false, 0xa5f3, 0xa5f3 }, /* 0xa5f4 */ { false, 0xa5f4, 0xa5f4 }, /* 0xa5f5 */ { false, 0xa5f5, 0xa5f5 }, /* 0xa5f6 */ { false, 0xa5f6, 0xa5f6 }, /* 0xa5f7 */ { false, 0xa5f7, 0xa5f7 }, /* 0xa5f8 */ { false, 0xa5f8, 0xa5f8 }, /* 0xa5f9 */ { false, 0xa5f9, 0xa5f9 }, /* 0xa5fa */ { false, 0xa5fa, 0xa5fa }, /* 0xa5fb */ { false, 0xa5fb, 0xa5fb }, /* 0xa5fc */ { false, 0xa5fc, 0xa5fc }, /* 0xa5fd */ { false, 0xa5fd, 0xa5fd }, /* 0xa5fe */ { false, 0xa5fe, 0xa5fe }, /* 0xa5ff */ { false, 0xa5ff, 0xa5ff }, /* 0xa600 */ { false, 0xa600, 0xa600 }, /* 0xa601 */ { false, 0xa601, 0xa601 }, /* 0xa602 */ { false, 0xa602, 0xa602 }, /* 0xa603 */ { false, 0xa603, 0xa603 }, /* 0xa604 */ { false, 0xa604, 0xa604 }, /* 0xa605 */ { false, 0xa605, 0xa605 }, /* 0xa606 */ { false, 0xa606, 0xa606 }, /* 0xa607 */ { false, 0xa607, 0xa607 }, /* 0xa608 */ { false, 0xa608, 0xa608 }, /* 0xa609 */ { false, 0xa609, 0xa609 }, /* 0xa60a */ { false, 0xa60a, 0xa60a }, /* 0xa60b */ { false, 0xa60b, 0xa60b }, /* 0xa60c */ { false, 0xa60c, 0xa60c }, /* 0xa60d */ { false, 0xa60d, 0xa60d }, /* 0xa60e */ { false, 0xa60e, 0xa60e }, /* 0xa60f */ { false, 0xa60f, 0xa60f }, /* 0xa610 */ { false, 0xa610, 0xa610 }, /* 0xa611 */ { false, 0xa611, 0xa611 }, /* 0xa612 */ { false, 0xa612, 0xa612 }, /* 0xa613 */ { false, 0xa613, 0xa613 }, /* 0xa614 */ { false, 0xa614, 0xa614 }, /* 0xa615 */ { false, 0xa615, 0xa615 }, /* 0xa616 */ { false, 0xa616, 0xa616 }, /* 0xa617 */ { false, 0xa617, 0xa617 }, /* 0xa618 */ { false, 0xa618, 0xa618 }, /* 0xa619 */ { false, 0xa619, 0xa619 }, /* 0xa61a */ { false, 0xa61a, 0xa61a }, /* 0xa61b */ { false, 0xa61b, 0xa61b }, /* 0xa61c */ { false, 0xa61c, 0xa61c }, /* 0xa61d */ { false, 0xa61d, 0xa61d }, /* 0xa61e */ { false, 0xa61e, 0xa61e }, /* 0xa61f */ { false, 0xa61f, 0xa61f }, /* 0xa620 */ { false, 0xa620, 0xa620 }, /* 0xa621 */ { false, 0xa621, 0xa621 }, /* 0xa622 */ { false, 0xa622, 0xa622 }, /* 0xa623 */ { false, 0xa623, 0xa623 }, /* 0xa624 */ { false, 0xa624, 0xa624 }, /* 0xa625 */ { false, 0xa625, 0xa625 }, /* 0xa626 */ { false, 0xa626, 0xa626 }, /* 0xa627 */ { false, 0xa627, 0xa627 }, /* 0xa628 */ { false, 0xa628, 0xa628 }, /* 0xa629 */ { false, 0xa629, 0xa629 }, /* 0xa62a */ { false, 0xa62a, 0xa62a }, /* 0xa62b */ { false, 0xa62b, 0xa62b }, /* 0xa62c */ { false, 0xa62c, 0xa62c }, /* 0xa62d */ { false, 0xa62d, 0xa62d }, /* 0xa62e */ { false, 0xa62e, 0xa62e }, /* 0xa62f */ { false, 0xa62f, 0xa62f }, /* 0xa630 */ { false, 0xa630, 0xa630 }, /* 0xa631 */ { false, 0xa631, 0xa631 }, /* 0xa632 */ { false, 0xa632, 0xa632 }, /* 0xa633 */ { false, 0xa633, 0xa633 }, /* 0xa634 */ { false, 0xa634, 0xa634 }, /* 0xa635 */ { false, 0xa635, 0xa635 }, /* 0xa636 */ { false, 0xa636, 0xa636 }, /* 0xa637 */ { false, 0xa637, 0xa637 }, /* 0xa638 */ { false, 0xa638, 0xa638 }, /* 0xa639 */ { false, 0xa639, 0xa639 }, /* 0xa63a */ { false, 0xa63a, 0xa63a }, /* 0xa63b */ { false, 0xa63b, 0xa63b }, /* 0xa63c */ { false, 0xa63c, 0xa63c }, /* 0xa63d */ { false, 0xa63d, 0xa63d }, /* 0xa63e */ { false, 0xa63e, 0xa63e }, /* 0xa63f */ { false, 0xa63f, 0xa63f }, /* 0xa640 */ { false, 0xa640, 0xa640 }, /* 0xa641 */ { false, 0xa641, 0xa641 }, /* 0xa642 */ { false, 0xa642, 0xa642 }, /* 0xa643 */ { false, 0xa643, 0xa643 }, /* 0xa644 */ { false, 0xa644, 0xa644 }, /* 0xa645 */ { false, 0xa645, 0xa645 }, /* 0xa646 */ { false, 0xa646, 0xa646 }, /* 0xa647 */ { false, 0xa647, 0xa647 }, /* 0xa648 */ { false, 0xa648, 0xa648 }, /* 0xa649 */ { false, 0xa649, 0xa649 }, /* 0xa64a */ { false, 0xa64a, 0xa64a }, /* 0xa64b */ { false, 0xa64b, 0xa64b }, /* 0xa64c */ { false, 0xa64c, 0xa64c }, /* 0xa64d */ { false, 0xa64d, 0xa64d }, /* 0xa64e */ { false, 0xa64e, 0xa64e }, /* 0xa64f */ { false, 0xa64f, 0xa64f }, /* 0xa650 */ { false, 0xa650, 0xa650 }, /* 0xa651 */ { false, 0xa651, 0xa651 }, /* 0xa652 */ { false, 0xa652, 0xa652 }, /* 0xa653 */ { false, 0xa653, 0xa653 }, /* 0xa654 */ { false, 0xa654, 0xa654 }, /* 0xa655 */ { false, 0xa655, 0xa655 }, /* 0xa656 */ { false, 0xa656, 0xa656 }, /* 0xa657 */ { false, 0xa657, 0xa657 }, /* 0xa658 */ { false, 0xa658, 0xa658 }, /* 0xa659 */ { false, 0xa659, 0xa659 }, /* 0xa65a */ { false, 0xa65a, 0xa65a }, /* 0xa65b */ { false, 0xa65b, 0xa65b }, /* 0xa65c */ { false, 0xa65c, 0xa65c }, /* 0xa65d */ { false, 0xa65d, 0xa65d }, /* 0xa65e */ { false, 0xa65e, 0xa65e }, /* 0xa65f */ { false, 0xa65f, 0xa65f }, /* 0xa660 */ { false, 0xa660, 0xa660 }, /* 0xa661 */ { false, 0xa661, 0xa661 }, /* 0xa662 */ { false, 0xa662, 0xa662 }, /* 0xa663 */ { false, 0xa663, 0xa663 }, /* 0xa664 */ { false, 0xa664, 0xa664 }, /* 0xa665 */ { false, 0xa665, 0xa665 }, /* 0xa666 */ { false, 0xa666, 0xa666 }, /* 0xa667 */ { false, 0xa667, 0xa667 }, /* 0xa668 */ { false, 0xa668, 0xa668 }, /* 0xa669 */ { false, 0xa669, 0xa669 }, /* 0xa66a */ { false, 0xa66a, 0xa66a }, /* 0xa66b */ { false, 0xa66b, 0xa66b }, /* 0xa66c */ { false, 0xa66c, 0xa66c }, /* 0xa66d */ { false, 0xa66d, 0xa66d }, /* 0xa66e */ { false, 0xa66e, 0xa66e }, /* 0xa66f */ { false, 0xa66f, 0xa66f }, /* 0xa670 */ { false, 0xa670, 0xa670 }, /* 0xa671 */ { false, 0xa671, 0xa671 }, /* 0xa672 */ { false, 0xa672, 0xa672 }, /* 0xa673 */ { false, 0xa673, 0xa673 }, /* 0xa674 */ { false, 0xa674, 0xa674 }, /* 0xa675 */ { false, 0xa675, 0xa675 }, /* 0xa676 */ { false, 0xa676, 0xa676 }, /* 0xa677 */ { false, 0xa677, 0xa677 }, /* 0xa678 */ { false, 0xa678, 0xa678 }, /* 0xa679 */ { false, 0xa679, 0xa679 }, /* 0xa67a */ { false, 0xa67a, 0xa67a }, /* 0xa67b */ { false, 0xa67b, 0xa67b }, /* 0xa67c */ { false, 0xa67c, 0xa67c }, /* 0xa67d */ { false, 0xa67d, 0xa67d }, /* 0xa67e */ { false, 0xa67e, 0xa67e }, /* 0xa67f */ { false, 0xa67f, 0xa67f }, /* 0xa680 */ { false, 0xa680, 0xa680 }, /* 0xa681 */ { false, 0xa681, 0xa681 }, /* 0xa682 */ { false, 0xa682, 0xa682 }, /* 0xa683 */ { false, 0xa683, 0xa683 }, /* 0xa684 */ { false, 0xa684, 0xa684 }, /* 0xa685 */ { false, 0xa685, 0xa685 }, /* 0xa686 */ { false, 0xa686, 0xa686 }, /* 0xa687 */ { false, 0xa687, 0xa687 }, /* 0xa688 */ { false, 0xa688, 0xa688 }, /* 0xa689 */ { false, 0xa689, 0xa689 }, /* 0xa68a */ { false, 0xa68a, 0xa68a }, /* 0xa68b */ { false, 0xa68b, 0xa68b }, /* 0xa68c */ { false, 0xa68c, 0xa68c }, /* 0xa68d */ { false, 0xa68d, 0xa68d }, /* 0xa68e */ { false, 0xa68e, 0xa68e }, /* 0xa68f */ { false, 0xa68f, 0xa68f }, /* 0xa690 */ { false, 0xa690, 0xa690 }, /* 0xa691 */ { false, 0xa691, 0xa691 }, /* 0xa692 */ { false, 0xa692, 0xa692 }, /* 0xa693 */ { false, 0xa693, 0xa693 }, /* 0xa694 */ { false, 0xa694, 0xa694 }, /* 0xa695 */ { false, 0xa695, 0xa695 }, /* 0xa696 */ { false, 0xa696, 0xa696 }, /* 0xa697 */ { false, 0xa697, 0xa697 }, /* 0xa698 */ { false, 0xa698, 0xa698 }, /* 0xa699 */ { false, 0xa699, 0xa699 }, /* 0xa69a */ { false, 0xa69a, 0xa69a }, /* 0xa69b */ { false, 0xa69b, 0xa69b }, /* 0xa69c */ { false, 0xa69c, 0xa69c }, /* 0xa69d */ { false, 0xa69d, 0xa69d }, /* 0xa69e */ { false, 0xa69e, 0xa69e }, /* 0xa69f */ { false, 0xa69f, 0xa69f }, /* 0xa6a0 */ { false, 0xa6a0, 0xa6a0 }, /* 0xa6a1 */ { false, 0xa6a1, 0xa6a1 }, /* 0xa6a2 */ { false, 0xa6a2, 0xa6a2 }, /* 0xa6a3 */ { false, 0xa6a3, 0xa6a3 }, /* 0xa6a4 */ { false, 0xa6a4, 0xa6a4 }, /* 0xa6a5 */ { false, 0xa6a5, 0xa6a5 }, /* 0xa6a6 */ { false, 0xa6a6, 0xa6a6 }, /* 0xa6a7 */ { false, 0xa6a7, 0xa6a7 }, /* 0xa6a8 */ { false, 0xa6a8, 0xa6a8 }, /* 0xa6a9 */ { false, 0xa6a9, 0xa6a9 }, /* 0xa6aa */ { false, 0xa6aa, 0xa6aa }, /* 0xa6ab */ { false, 0xa6ab, 0xa6ab }, /* 0xa6ac */ { false, 0xa6ac, 0xa6ac }, /* 0xa6ad */ { false, 0xa6ad, 0xa6ad }, /* 0xa6ae */ { false, 0xa6ae, 0xa6ae }, /* 0xa6af */ { false, 0xa6af, 0xa6af }, /* 0xa6b0 */ { false, 0xa6b0, 0xa6b0 }, /* 0xa6b1 */ { false, 0xa6b1, 0xa6b1 }, /* 0xa6b2 */ { false, 0xa6b2, 0xa6b2 }, /* 0xa6b3 */ { false, 0xa6b3, 0xa6b3 }, /* 0xa6b4 */ { false, 0xa6b4, 0xa6b4 }, /* 0xa6b5 */ { false, 0xa6b5, 0xa6b5 }, /* 0xa6b6 */ { false, 0xa6b6, 0xa6b6 }, /* 0xa6b7 */ { false, 0xa6b7, 0xa6b7 }, /* 0xa6b8 */ { false, 0xa6b8, 0xa6b8 }, /* 0xa6b9 */ { false, 0xa6b9, 0xa6b9 }, /* 0xa6ba */ { false, 0xa6ba, 0xa6ba }, /* 0xa6bb */ { false, 0xa6bb, 0xa6bb }, /* 0xa6bc */ { false, 0xa6bc, 0xa6bc }, /* 0xa6bd */ { false, 0xa6bd, 0xa6bd }, /* 0xa6be */ { false, 0xa6be, 0xa6be }, /* 0xa6bf */ { false, 0xa6bf, 0xa6bf }, /* 0xa6c0 */ { false, 0xa6c0, 0xa6c0 }, /* 0xa6c1 */ { false, 0xa6c1, 0xa6c1 }, /* 0xa6c2 */ { false, 0xa6c2, 0xa6c2 }, /* 0xa6c3 */ { false, 0xa6c3, 0xa6c3 }, /* 0xa6c4 */ { false, 0xa6c4, 0xa6c4 }, /* 0xa6c5 */ { false, 0xa6c5, 0xa6c5 }, /* 0xa6c6 */ { false, 0xa6c6, 0xa6c6 }, /* 0xa6c7 */ { false, 0xa6c7, 0xa6c7 }, /* 0xa6c8 */ { false, 0xa6c8, 0xa6c8 }, /* 0xa6c9 */ { false, 0xa6c9, 0xa6c9 }, /* 0xa6ca */ { false, 0xa6ca, 0xa6ca }, /* 0xa6cb */ { false, 0xa6cb, 0xa6cb }, /* 0xa6cc */ { false, 0xa6cc, 0xa6cc }, /* 0xa6cd */ { false, 0xa6cd, 0xa6cd }, /* 0xa6ce */ { false, 0xa6ce, 0xa6ce }, /* 0xa6cf */ { false, 0xa6cf, 0xa6cf }, /* 0xa6d0 */ { false, 0xa6d0, 0xa6d0 }, /* 0xa6d1 */ { false, 0xa6d1, 0xa6d1 }, /* 0xa6d2 */ { false, 0xa6d2, 0xa6d2 }, /* 0xa6d3 */ { false, 0xa6d3, 0xa6d3 }, /* 0xa6d4 */ { false, 0xa6d4, 0xa6d4 }, /* 0xa6d5 */ { false, 0xa6d5, 0xa6d5 }, /* 0xa6d6 */ { false, 0xa6d6, 0xa6d6 }, /* 0xa6d7 */ { false, 0xa6d7, 0xa6d7 }, /* 0xa6d8 */ { false, 0xa6d8, 0xa6d8 }, /* 0xa6d9 */ { false, 0xa6d9, 0xa6d9 }, /* 0xa6da */ { false, 0xa6da, 0xa6da }, /* 0xa6db */ { false, 0xa6db, 0xa6db }, /* 0xa6dc */ { false, 0xa6dc, 0xa6dc }, /* 0xa6dd */ { false, 0xa6dd, 0xa6dd }, /* 0xa6de */ { false, 0xa6de, 0xa6de }, /* 0xa6df */ { false, 0xa6df, 0xa6df }, /* 0xa6e0 */ { false, 0xa6e0, 0xa6e0 }, /* 0xa6e1 */ { false, 0xa6e1, 0xa6e1 }, /* 0xa6e2 */ { false, 0xa6e2, 0xa6e2 }, /* 0xa6e3 */ { false, 0xa6e3, 0xa6e3 }, /* 0xa6e4 */ { false, 0xa6e4, 0xa6e4 }, /* 0xa6e5 */ { false, 0xa6e5, 0xa6e5 }, /* 0xa6e6 */ { false, 0xa6e6, 0xa6e6 }, /* 0xa6e7 */ { false, 0xa6e7, 0xa6e7 }, /* 0xa6e8 */ { false, 0xa6e8, 0xa6e8 }, /* 0xa6e9 */ { false, 0xa6e9, 0xa6e9 }, /* 0xa6ea */ { false, 0xa6ea, 0xa6ea }, /* 0xa6eb */ { false, 0xa6eb, 0xa6eb }, /* 0xa6ec */ { false, 0xa6ec, 0xa6ec }, /* 0xa6ed */ { false, 0xa6ed, 0xa6ed }, /* 0xa6ee */ { false, 0xa6ee, 0xa6ee }, /* 0xa6ef */ { false, 0xa6ef, 0xa6ef }, /* 0xa6f0 */ { false, 0xa6f0, 0xa6f0 }, /* 0xa6f1 */ { false, 0xa6f1, 0xa6f1 }, /* 0xa6f2 */ { false, 0xa6f2, 0xa6f2 }, /* 0xa6f3 */ { false, 0xa6f3, 0xa6f3 }, /* 0xa6f4 */ { false, 0xa6f4, 0xa6f4 }, /* 0xa6f5 */ { false, 0xa6f5, 0xa6f5 }, /* 0xa6f6 */ { false, 0xa6f6, 0xa6f6 }, /* 0xa6f7 */ { false, 0xa6f7, 0xa6f7 }, /* 0xa6f8 */ { false, 0xa6f8, 0xa6f8 }, /* 0xa6f9 */ { false, 0xa6f9, 0xa6f9 }, /* 0xa6fa */ { false, 0xa6fa, 0xa6fa }, /* 0xa6fb */ { false, 0xa6fb, 0xa6fb }, /* 0xa6fc */ { false, 0xa6fc, 0xa6fc }, /* 0xa6fd */ { false, 0xa6fd, 0xa6fd }, /* 0xa6fe */ { false, 0xa6fe, 0xa6fe }, /* 0xa6ff */ { false, 0xa6ff, 0xa6ff }, /* 0xa700 */ { false, 0xa700, 0xa700 }, /* 0xa701 */ { false, 0xa701, 0xa701 }, /* 0xa702 */ { false, 0xa702, 0xa702 }, /* 0xa703 */ { false, 0xa703, 0xa703 }, /* 0xa704 */ { false, 0xa704, 0xa704 }, /* 0xa705 */ { false, 0xa705, 0xa705 }, /* 0xa706 */ { false, 0xa706, 0xa706 }, /* 0xa707 */ { false, 0xa707, 0xa707 }, /* 0xa708 */ { false, 0xa708, 0xa708 }, /* 0xa709 */ { false, 0xa709, 0xa709 }, /* 0xa70a */ { false, 0xa70a, 0xa70a }, /* 0xa70b */ { false, 0xa70b, 0xa70b }, /* 0xa70c */ { false, 0xa70c, 0xa70c }, /* 0xa70d */ { false, 0xa70d, 0xa70d }, /* 0xa70e */ { false, 0xa70e, 0xa70e }, /* 0xa70f */ { false, 0xa70f, 0xa70f }, /* 0xa710 */ { false, 0xa710, 0xa710 }, /* 0xa711 */ { false, 0xa711, 0xa711 }, /* 0xa712 */ { false, 0xa712, 0xa712 }, /* 0xa713 */ { false, 0xa713, 0xa713 }, /* 0xa714 */ { false, 0xa714, 0xa714 }, /* 0xa715 */ { false, 0xa715, 0xa715 }, /* 0xa716 */ { false, 0xa716, 0xa716 }, /* 0xa717 */ { false, 0xa717, 0xa717 }, /* 0xa718 */ { false, 0xa718, 0xa718 }, /* 0xa719 */ { false, 0xa719, 0xa719 }, /* 0xa71a */ { false, 0xa71a, 0xa71a }, /* 0xa71b */ { false, 0xa71b, 0xa71b }, /* 0xa71c */ { false, 0xa71c, 0xa71c }, /* 0xa71d */ { false, 0xa71d, 0xa71d }, /* 0xa71e */ { false, 0xa71e, 0xa71e }, /* 0xa71f */ { false, 0xa71f, 0xa71f }, /* 0xa720 */ { false, 0xa720, 0xa720 }, /* 0xa721 */ { false, 0xa721, 0xa721 }, /* 0xa722 */ { false, 0xa722, 0xa722 }, /* 0xa723 */ { false, 0xa723, 0xa723 }, /* 0xa724 */ { false, 0xa724, 0xa724 }, /* 0xa725 */ { false, 0xa725, 0xa725 }, /* 0xa726 */ { false, 0xa726, 0xa726 }, /* 0xa727 */ { false, 0xa727, 0xa727 }, /* 0xa728 */ { false, 0xa728, 0xa728 }, /* 0xa729 */ { false, 0xa729, 0xa729 }, /* 0xa72a */ { false, 0xa72a, 0xa72a }, /* 0xa72b */ { false, 0xa72b, 0xa72b }, /* 0xa72c */ { false, 0xa72c, 0xa72c }, /* 0xa72d */ { false, 0xa72d, 0xa72d }, /* 0xa72e */ { false, 0xa72e, 0xa72e }, /* 0xa72f */ { false, 0xa72f, 0xa72f }, /* 0xa730 */ { false, 0xa730, 0xa730 }, /* 0xa731 */ { false, 0xa731, 0xa731 }, /* 0xa732 */ { false, 0xa732, 0xa732 }, /* 0xa733 */ { false, 0xa733, 0xa733 }, /* 0xa734 */ { false, 0xa734, 0xa734 }, /* 0xa735 */ { false, 0xa735, 0xa735 }, /* 0xa736 */ { false, 0xa736, 0xa736 }, /* 0xa737 */ { false, 0xa737, 0xa737 }, /* 0xa738 */ { false, 0xa738, 0xa738 }, /* 0xa739 */ { false, 0xa739, 0xa739 }, /* 0xa73a */ { false, 0xa73a, 0xa73a }, /* 0xa73b */ { false, 0xa73b, 0xa73b }, /* 0xa73c */ { false, 0xa73c, 0xa73c }, /* 0xa73d */ { false, 0xa73d, 0xa73d }, /* 0xa73e */ { false, 0xa73e, 0xa73e }, /* 0xa73f */ { false, 0xa73f, 0xa73f }, /* 0xa740 */ { false, 0xa740, 0xa740 }, /* 0xa741 */ { false, 0xa741, 0xa741 }, /* 0xa742 */ { false, 0xa742, 0xa742 }, /* 0xa743 */ { false, 0xa743, 0xa743 }, /* 0xa744 */ { false, 0xa744, 0xa744 }, /* 0xa745 */ { false, 0xa745, 0xa745 }, /* 0xa746 */ { false, 0xa746, 0xa746 }, /* 0xa747 */ { false, 0xa747, 0xa747 }, /* 0xa748 */ { false, 0xa748, 0xa748 }, /* 0xa749 */ { false, 0xa749, 0xa749 }, /* 0xa74a */ { false, 0xa74a, 0xa74a }, /* 0xa74b */ { false, 0xa74b, 0xa74b }, /* 0xa74c */ { false, 0xa74c, 0xa74c }, /* 0xa74d */ { false, 0xa74d, 0xa74d }, /* 0xa74e */ { false, 0xa74e, 0xa74e }, /* 0xa74f */ { false, 0xa74f, 0xa74f }, /* 0xa750 */ { false, 0xa750, 0xa750 }, /* 0xa751 */ { false, 0xa751, 0xa751 }, /* 0xa752 */ { false, 0xa752, 0xa752 }, /* 0xa753 */ { false, 0xa753, 0xa753 }, /* 0xa754 */ { false, 0xa754, 0xa754 }, /* 0xa755 */ { false, 0xa755, 0xa755 }, /* 0xa756 */ { false, 0xa756, 0xa756 }, /* 0xa757 */ { false, 0xa757, 0xa757 }, /* 0xa758 */ { false, 0xa758, 0xa758 }, /* 0xa759 */ { false, 0xa759, 0xa759 }, /* 0xa75a */ { false, 0xa75a, 0xa75a }, /* 0xa75b */ { false, 0xa75b, 0xa75b }, /* 0xa75c */ { false, 0xa75c, 0xa75c }, /* 0xa75d */ { false, 0xa75d, 0xa75d }, /* 0xa75e */ { false, 0xa75e, 0xa75e }, /* 0xa75f */ { false, 0xa75f, 0xa75f }, /* 0xa760 */ { false, 0xa760, 0xa760 }, /* 0xa761 */ { false, 0xa761, 0xa761 }, /* 0xa762 */ { false, 0xa762, 0xa762 }, /* 0xa763 */ { false, 0xa763, 0xa763 }, /* 0xa764 */ { false, 0xa764, 0xa764 }, /* 0xa765 */ { false, 0xa765, 0xa765 }, /* 0xa766 */ { false, 0xa766, 0xa766 }, /* 0xa767 */ { false, 0xa767, 0xa767 }, /* 0xa768 */ { false, 0xa768, 0xa768 }, /* 0xa769 */ { false, 0xa769, 0xa769 }, /* 0xa76a */ { false, 0xa76a, 0xa76a }, /* 0xa76b */ { false, 0xa76b, 0xa76b }, /* 0xa76c */ { false, 0xa76c, 0xa76c }, /* 0xa76d */ { false, 0xa76d, 0xa76d }, /* 0xa76e */ { false, 0xa76e, 0xa76e }, /* 0xa76f */ { false, 0xa76f, 0xa76f }, /* 0xa770 */ { false, 0xa770, 0xa770 }, /* 0xa771 */ { false, 0xa771, 0xa771 }, /* 0xa772 */ { false, 0xa772, 0xa772 }, /* 0xa773 */ { false, 0xa773, 0xa773 }, /* 0xa774 */ { false, 0xa774, 0xa774 }, /* 0xa775 */ { false, 0xa775, 0xa775 }, /* 0xa776 */ { false, 0xa776, 0xa776 }, /* 0xa777 */ { false, 0xa777, 0xa777 }, /* 0xa778 */ { false, 0xa778, 0xa778 }, /* 0xa779 */ { false, 0xa779, 0xa779 }, /* 0xa77a */ { false, 0xa77a, 0xa77a }, /* 0xa77b */ { false, 0xa77b, 0xa77b }, /* 0xa77c */ { false, 0xa77c, 0xa77c }, /* 0xa77d */ { false, 0xa77d, 0xa77d }, /* 0xa77e */ { false, 0xa77e, 0xa77e }, /* 0xa77f */ { false, 0xa77f, 0xa77f }, /* 0xa780 */ { false, 0xa780, 0xa780 }, /* 0xa781 */ { false, 0xa781, 0xa781 }, /* 0xa782 */ { false, 0xa782, 0xa782 }, /* 0xa783 */ { false, 0xa783, 0xa783 }, /* 0xa784 */ { false, 0xa784, 0xa784 }, /* 0xa785 */ { false, 0xa785, 0xa785 }, /* 0xa786 */ { false, 0xa786, 0xa786 }, /* 0xa787 */ { false, 0xa787, 0xa787 }, /* 0xa788 */ { false, 0xa788, 0xa788 }, /* 0xa789 */ { false, 0xa789, 0xa789 }, /* 0xa78a */ { false, 0xa78a, 0xa78a }, /* 0xa78b */ { false, 0xa78b, 0xa78b }, /* 0xa78c */ { false, 0xa78c, 0xa78c }, /* 0xa78d */ { false, 0xa78d, 0xa78d }, /* 0xa78e */ { false, 0xa78e, 0xa78e }, /* 0xa78f */ { false, 0xa78f, 0xa78f }, /* 0xa790 */ { false, 0xa790, 0xa790 }, /* 0xa791 */ { false, 0xa791, 0xa791 }, /* 0xa792 */ { false, 0xa792, 0xa792 }, /* 0xa793 */ { false, 0xa793, 0xa793 }, /* 0xa794 */ { false, 0xa794, 0xa794 }, /* 0xa795 */ { false, 0xa795, 0xa795 }, /* 0xa796 */ { false, 0xa796, 0xa796 }, /* 0xa797 */ { false, 0xa797, 0xa797 }, /* 0xa798 */ { false, 0xa798, 0xa798 }, /* 0xa799 */ { false, 0xa799, 0xa799 }, /* 0xa79a */ { false, 0xa79a, 0xa79a }, /* 0xa79b */ { false, 0xa79b, 0xa79b }, /* 0xa79c */ { false, 0xa79c, 0xa79c }, /* 0xa79d */ { false, 0xa79d, 0xa79d }, /* 0xa79e */ { false, 0xa79e, 0xa79e }, /* 0xa79f */ { false, 0xa79f, 0xa79f }, /* 0xa7a0 */ { false, 0xa7a0, 0xa7a0 }, /* 0xa7a1 */ { false, 0xa7a1, 0xa7a1 }, /* 0xa7a2 */ { false, 0xa7a2, 0xa7a2 }, /* 0xa7a3 */ { false, 0xa7a3, 0xa7a3 }, /* 0xa7a4 */ { false, 0xa7a4, 0xa7a4 }, /* 0xa7a5 */ { false, 0xa7a5, 0xa7a5 }, /* 0xa7a6 */ { false, 0xa7a6, 0xa7a6 }, /* 0xa7a7 */ { false, 0xa7a7, 0xa7a7 }, /* 0xa7a8 */ { false, 0xa7a8, 0xa7a8 }, /* 0xa7a9 */ { false, 0xa7a9, 0xa7a9 }, /* 0xa7aa */ { false, 0xa7aa, 0xa7aa }, /* 0xa7ab */ { false, 0xa7ab, 0xa7ab }, /* 0xa7ac */ { false, 0xa7ac, 0xa7ac }, /* 0xa7ad */ { false, 0xa7ad, 0xa7ad }, /* 0xa7ae */ { false, 0xa7ae, 0xa7ae }, /* 0xa7af */ { false, 0xa7af, 0xa7af }, /* 0xa7b0 */ { false, 0xa7b0, 0xa7b0 }, /* 0xa7b1 */ { false, 0xa7b1, 0xa7b1 }, /* 0xa7b2 */ { false, 0xa7b2, 0xa7b2 }, /* 0xa7b3 */ { false, 0xa7b3, 0xa7b3 }, /* 0xa7b4 */ { false, 0xa7b4, 0xa7b4 }, /* 0xa7b5 */ { false, 0xa7b5, 0xa7b5 }, /* 0xa7b6 */ { false, 0xa7b6, 0xa7b6 }, /* 0xa7b7 */ { false, 0xa7b7, 0xa7b7 }, /* 0xa7b8 */ { false, 0xa7b8, 0xa7b8 }, /* 0xa7b9 */ { false, 0xa7b9, 0xa7b9 }, /* 0xa7ba */ { false, 0xa7ba, 0xa7ba }, /* 0xa7bb */ { false, 0xa7bb, 0xa7bb }, /* 0xa7bc */ { false, 0xa7bc, 0xa7bc }, /* 0xa7bd */ { false, 0xa7bd, 0xa7bd }, /* 0xa7be */ { false, 0xa7be, 0xa7be }, /* 0xa7bf */ { false, 0xa7bf, 0xa7bf }, /* 0xa7c0 */ { false, 0xa7c0, 0xa7c0 }, /* 0xa7c1 */ { false, 0xa7c1, 0xa7c1 }, /* 0xa7c2 */ { false, 0xa7c2, 0xa7c2 }, /* 0xa7c3 */ { false, 0xa7c3, 0xa7c3 }, /* 0xa7c4 */ { false, 0xa7c4, 0xa7c4 }, /* 0xa7c5 */ { false, 0xa7c5, 0xa7c5 }, /* 0xa7c6 */ { false, 0xa7c6, 0xa7c6 }, /* 0xa7c7 */ { false, 0xa7c7, 0xa7c7 }, /* 0xa7c8 */ { false, 0xa7c8, 0xa7c8 }, /* 0xa7c9 */ { false, 0xa7c9, 0xa7c9 }, /* 0xa7ca */ { false, 0xa7ca, 0xa7ca }, /* 0xa7cb */ { false, 0xa7cb, 0xa7cb }, /* 0xa7cc */ { false, 0xa7cc, 0xa7cc }, /* 0xa7cd */ { false, 0xa7cd, 0xa7cd }, /* 0xa7ce */ { false, 0xa7ce, 0xa7ce }, /* 0xa7cf */ { false, 0xa7cf, 0xa7cf }, /* 0xa7d0 */ { false, 0xa7d0, 0xa7d0 }, /* 0xa7d1 */ { false, 0xa7d1, 0xa7d1 }, /* 0xa7d2 */ { false, 0xa7d2, 0xa7d2 }, /* 0xa7d3 */ { false, 0xa7d3, 0xa7d3 }, /* 0xa7d4 */ { false, 0xa7d4, 0xa7d4 }, /* 0xa7d5 */ { false, 0xa7d5, 0xa7d5 }, /* 0xa7d6 */ { false, 0xa7d6, 0xa7d6 }, /* 0xa7d7 */ { false, 0xa7d7, 0xa7d7 }, /* 0xa7d8 */ { false, 0xa7d8, 0xa7d8 }, /* 0xa7d9 */ { false, 0xa7d9, 0xa7d9 }, /* 0xa7da */ { false, 0xa7da, 0xa7da }, /* 0xa7db */ { false, 0xa7db, 0xa7db }, /* 0xa7dc */ { false, 0xa7dc, 0xa7dc }, /* 0xa7dd */ { false, 0xa7dd, 0xa7dd }, /* 0xa7de */ { false, 0xa7de, 0xa7de }, /* 0xa7df */ { false, 0xa7df, 0xa7df }, /* 0xa7e0 */ { false, 0xa7e0, 0xa7e0 }, /* 0xa7e1 */ { false, 0xa7e1, 0xa7e1 }, /* 0xa7e2 */ { false, 0xa7e2, 0xa7e2 }, /* 0xa7e3 */ { false, 0xa7e3, 0xa7e3 }, /* 0xa7e4 */ { false, 0xa7e4, 0xa7e4 }, /* 0xa7e5 */ { false, 0xa7e5, 0xa7e5 }, /* 0xa7e6 */ { false, 0xa7e6, 0xa7e6 }, /* 0xa7e7 */ { false, 0xa7e7, 0xa7e7 }, /* 0xa7e8 */ { false, 0xa7e8, 0xa7e8 }, /* 0xa7e9 */ { false, 0xa7e9, 0xa7e9 }, /* 0xa7ea */ { false, 0xa7ea, 0xa7ea }, /* 0xa7eb */ { false, 0xa7eb, 0xa7eb }, /* 0xa7ec */ { false, 0xa7ec, 0xa7ec }, /* 0xa7ed */ { false, 0xa7ed, 0xa7ed }, /* 0xa7ee */ { false, 0xa7ee, 0xa7ee }, /* 0xa7ef */ { false, 0xa7ef, 0xa7ef }, /* 0xa7f0 */ { false, 0xa7f0, 0xa7f0 }, /* 0xa7f1 */ { false, 0xa7f1, 0xa7f1 }, /* 0xa7f2 */ { false, 0xa7f2, 0xa7f2 }, /* 0xa7f3 */ { false, 0xa7f3, 0xa7f3 }, /* 0xa7f4 */ { false, 0xa7f4, 0xa7f4 }, /* 0xa7f5 */ { false, 0xa7f5, 0xa7f5 }, /* 0xa7f6 */ { false, 0xa7f6, 0xa7f6 }, /* 0xa7f7 */ { false, 0xa7f7, 0xa7f7 }, /* 0xa7f8 */ { false, 0xa7f8, 0xa7f8 }, /* 0xa7f9 */ { false, 0xa7f9, 0xa7f9 }, /* 0xa7fa */ { false, 0xa7fa, 0xa7fa }, /* 0xa7fb */ { false, 0xa7fb, 0xa7fb }, /* 0xa7fc */ { false, 0xa7fc, 0xa7fc }, /* 0xa7fd */ { false, 0xa7fd, 0xa7fd }, /* 0xa7fe */ { false, 0xa7fe, 0xa7fe }, /* 0xa7ff */ { false, 0xa7ff, 0xa7ff }, /* 0xa800 */ { true, 0xa800, 0xa800 }, /* 0xa801 */ { true, 0xa801, 0xa801 }, /* 0xa802 */ { false, 0xa802, 0xa802 }, /* 0xa803 */ { true, 0xa803, 0xa803 }, /* 0xa804 */ { true, 0xa804, 0xa804 }, /* 0xa805 */ { true, 0xa805, 0xa805 }, /* 0xa806 */ { true, 0xa806, 0xa806 }, /* 0xa807 */ { true, 0xa807, 0xa807 }, /* 0xa808 */ { true, 0xa808, 0xa808 }, /* 0xa809 */ { true, 0xa809, 0xa809 }, /* 0xa80a */ { true, 0xa80a, 0xa80a }, /* 0xa80b */ { true, 0xa80b, 0xa80b }, /* 0xa80c */ { true, 0xa80c, 0xa80c }, /* 0xa80d */ { true, 0xa80d, 0xa80d }, /* 0xa80e */ { true, 0xa80e, 0xa80e }, /* 0xa80f */ { true, 0xa80f, 0xa80f }, /* 0xa810 */ { true, 0xa810, 0xa810 }, /* 0xa811 */ { true, 0xa811, 0xa811 }, /* 0xa812 */ { true, 0xa812, 0xa812 }, /* 0xa813 */ { true, 0xa813, 0xa813 }, /* 0xa814 */ { true, 0xa814, 0xa814 }, /* 0xa815 */ { true, 0xa815, 0xa815 }, /* 0xa816 */ { true, 0xa816, 0xa816 }, /* 0xa817 */ { true, 0xa817, 0xa817 }, /* 0xa818 */ { true, 0xa818, 0xa818 }, /* 0xa819 */ { true, 0xa819, 0xa819 }, /* 0xa81a */ { true, 0xa81a, 0xa81a }, /* 0xa81b */ { true, 0xa81b, 0xa81b }, /* 0xa81c */ { true, 0xa81c, 0xa81c }, /* 0xa81d */ { true, 0xa81d, 0xa81d }, /* 0xa81e */ { true, 0xa81e, 0xa81e }, /* 0xa81f */ { true, 0xa81f, 0xa81f }, /* 0xa820 */ { true, 0xa820, 0xa820 }, /* 0xa821 */ { true, 0xa821, 0xa821 }, /* 0xa822 */ { true, 0xa822, 0xa822 }, /* 0xa823 */ { false, 0xa823, 0xa823 }, /* 0xa824 */ { false, 0xa824, 0xa824 }, /* 0xa825 */ { true, 0xa825, 0xa825 }, /* 0xa826 */ { true, 0xa826, 0xa826 }, /* 0xa827 */ { false, 0xa827, 0xa827 }, /* 0xa828 */ { false, 0xa828, 0xa828 }, /* 0xa829 */ { false, 0xa829, 0xa829 }, /* 0xa82a */ { false, 0xa82a, 0xa82a }, /* 0xa82b */ { false, 0xa82b, 0xa82b }, /* 0xa82c */ { false, 0xa82c, 0xa82c }, /* 0xa82d */ { false, 0xa82d, 0xa82d }, /* 0xa82e */ { false, 0xa82e, 0xa82e }, /* 0xa82f */ { false, 0xa82f, 0xa82f }, /* 0xa830 */ { false, 0xa830, 0xa830 }, /* 0xa831 */ { false, 0xa831, 0xa831 }, /* 0xa832 */ { false, 0xa832, 0xa832 }, /* 0xa833 */ { false, 0xa833, 0xa833 }, /* 0xa834 */ { false, 0xa834, 0xa834 }, /* 0xa835 */ { false, 0xa835, 0xa835 }, /* 0xa836 */ { false, 0xa836, 0xa836 }, /* 0xa837 */ { false, 0xa837, 0xa837 }, /* 0xa838 */ { false, 0xa838, 0xa838 }, /* 0xa839 */ { false, 0xa839, 0xa839 }, /* 0xa83a */ { false, 0xa83a, 0xa83a }, /* 0xa83b */ { false, 0xa83b, 0xa83b }, /* 0xa83c */ { false, 0xa83c, 0xa83c }, /* 0xa83d */ { false, 0xa83d, 0xa83d }, /* 0xa83e */ { false, 0xa83e, 0xa83e }, /* 0xa83f */ { false, 0xa83f, 0xa83f }, /* 0xa840 */ { false, 0xa840, 0xa840 }, /* 0xa841 */ { false, 0xa841, 0xa841 }, /* 0xa842 */ { false, 0xa842, 0xa842 }, /* 0xa843 */ { false, 0xa843, 0xa843 }, /* 0xa844 */ { false, 0xa844, 0xa844 }, /* 0xa845 */ { false, 0xa845, 0xa845 }, /* 0xa846 */ { false, 0xa846, 0xa846 }, /* 0xa847 */ { false, 0xa847, 0xa847 }, /* 0xa848 */ { false, 0xa848, 0xa848 }, /* 0xa849 */ { false, 0xa849, 0xa849 }, /* 0xa84a */ { false, 0xa84a, 0xa84a }, /* 0xa84b */ { false, 0xa84b, 0xa84b }, /* 0xa84c */ { false, 0xa84c, 0xa84c }, /* 0xa84d */ { false, 0xa84d, 0xa84d }, /* 0xa84e */ { false, 0xa84e, 0xa84e }, /* 0xa84f */ { false, 0xa84f, 0xa84f }, /* 0xa850 */ { false, 0xa850, 0xa850 }, /* 0xa851 */ { false, 0xa851, 0xa851 }, /* 0xa852 */ { false, 0xa852, 0xa852 }, /* 0xa853 */ { false, 0xa853, 0xa853 }, /* 0xa854 */ { false, 0xa854, 0xa854 }, /* 0xa855 */ { false, 0xa855, 0xa855 }, /* 0xa856 */ { false, 0xa856, 0xa856 }, /* 0xa857 */ { false, 0xa857, 0xa857 }, /* 0xa858 */ { false, 0xa858, 0xa858 }, /* 0xa859 */ { false, 0xa859, 0xa859 }, /* 0xa85a */ { false, 0xa85a, 0xa85a }, /* 0xa85b */ { false, 0xa85b, 0xa85b }, /* 0xa85c */ { false, 0xa85c, 0xa85c }, /* 0xa85d */ { false, 0xa85d, 0xa85d }, /* 0xa85e */ { false, 0xa85e, 0xa85e }, /* 0xa85f */ { false, 0xa85f, 0xa85f }, /* 0xa860 */ { false, 0xa860, 0xa860 }, /* 0xa861 */ { false, 0xa861, 0xa861 }, /* 0xa862 */ { false, 0xa862, 0xa862 }, /* 0xa863 */ { false, 0xa863, 0xa863 }, /* 0xa864 */ { false, 0xa864, 0xa864 }, /* 0xa865 */ { false, 0xa865, 0xa865 }, /* 0xa866 */ { false, 0xa866, 0xa866 }, /* 0xa867 */ { false, 0xa867, 0xa867 }, /* 0xa868 */ { false, 0xa868, 0xa868 }, /* 0xa869 */ { false, 0xa869, 0xa869 }, /* 0xa86a */ { false, 0xa86a, 0xa86a }, /* 0xa86b */ { false, 0xa86b, 0xa86b }, /* 0xa86c */ { false, 0xa86c, 0xa86c }, /* 0xa86d */ { false, 0xa86d, 0xa86d }, /* 0xa86e */ { false, 0xa86e, 0xa86e }, /* 0xa86f */ { false, 0xa86f, 0xa86f }, /* 0xa870 */ { false, 0xa870, 0xa870 }, /* 0xa871 */ { false, 0xa871, 0xa871 }, /* 0xa872 */ { false, 0xa872, 0xa872 }, /* 0xa873 */ { false, 0xa873, 0xa873 }, /* 0xa874 */ { false, 0xa874, 0xa874 }, /* 0xa875 */ { false, 0xa875, 0xa875 }, /* 0xa876 */ { false, 0xa876, 0xa876 }, /* 0xa877 */ { false, 0xa877, 0xa877 }, /* 0xa878 */ { false, 0xa878, 0xa878 }, /* 0xa879 */ { false, 0xa879, 0xa879 }, /* 0xa87a */ { false, 0xa87a, 0xa87a }, /* 0xa87b */ { false, 0xa87b, 0xa87b }, /* 0xa87c */ { false, 0xa87c, 0xa87c }, /* 0xa87d */ { false, 0xa87d, 0xa87d }, /* 0xa87e */ { false, 0xa87e, 0xa87e }, /* 0xa87f */ { false, 0xa87f, 0xa87f }, /* 0xa880 */ { false, 0xa880, 0xa880 }, /* 0xa881 */ { false, 0xa881, 0xa881 }, /* 0xa882 */ { false, 0xa882, 0xa882 }, /* 0xa883 */ { false, 0xa883, 0xa883 }, /* 0xa884 */ { false, 0xa884, 0xa884 }, /* 0xa885 */ { false, 0xa885, 0xa885 }, /* 0xa886 */ { false, 0xa886, 0xa886 }, /* 0xa887 */ { false, 0xa887, 0xa887 }, /* 0xa888 */ { false, 0xa888, 0xa888 }, /* 0xa889 */ { false, 0xa889, 0xa889 }, /* 0xa88a */ { false, 0xa88a, 0xa88a }, /* 0xa88b */ { false, 0xa88b, 0xa88b }, /* 0xa88c */ { false, 0xa88c, 0xa88c }, /* 0xa88d */ { false, 0xa88d, 0xa88d }, /* 0xa88e */ { false, 0xa88e, 0xa88e }, /* 0xa88f */ { false, 0xa88f, 0xa88f }, /* 0xa890 */ { false, 0xa890, 0xa890 }, /* 0xa891 */ { false, 0xa891, 0xa891 }, /* 0xa892 */ { false, 0xa892, 0xa892 }, /* 0xa893 */ { false, 0xa893, 0xa893 }, /* 0xa894 */ { false, 0xa894, 0xa894 }, /* 0xa895 */ { false, 0xa895, 0xa895 }, /* 0xa896 */ { false, 0xa896, 0xa896 }, /* 0xa897 */ { false, 0xa897, 0xa897 }, /* 0xa898 */ { false, 0xa898, 0xa898 }, /* 0xa899 */ { false, 0xa899, 0xa899 }, /* 0xa89a */ { false, 0xa89a, 0xa89a }, /* 0xa89b */ { false, 0xa89b, 0xa89b }, /* 0xa89c */ { false, 0xa89c, 0xa89c }, /* 0xa89d */ { false, 0xa89d, 0xa89d }, /* 0xa89e */ { false, 0xa89e, 0xa89e }, /* 0xa89f */ { false, 0xa89f, 0xa89f }, /* 0xa8a0 */ { false, 0xa8a0, 0xa8a0 }, /* 0xa8a1 */ { false, 0xa8a1, 0xa8a1 }, /* 0xa8a2 */ { false, 0xa8a2, 0xa8a2 }, /* 0xa8a3 */ { false, 0xa8a3, 0xa8a3 }, /* 0xa8a4 */ { false, 0xa8a4, 0xa8a4 }, /* 0xa8a5 */ { false, 0xa8a5, 0xa8a5 }, /* 0xa8a6 */ { false, 0xa8a6, 0xa8a6 }, /* 0xa8a7 */ { false, 0xa8a7, 0xa8a7 }, /* 0xa8a8 */ { false, 0xa8a8, 0xa8a8 }, /* 0xa8a9 */ { false, 0xa8a9, 0xa8a9 }, /* 0xa8aa */ { false, 0xa8aa, 0xa8aa }, /* 0xa8ab */ { false, 0xa8ab, 0xa8ab }, /* 0xa8ac */ { false, 0xa8ac, 0xa8ac }, /* 0xa8ad */ { false, 0xa8ad, 0xa8ad }, /* 0xa8ae */ { false, 0xa8ae, 0xa8ae }, /* 0xa8af */ { false, 0xa8af, 0xa8af }, /* 0xa8b0 */ { false, 0xa8b0, 0xa8b0 }, /* 0xa8b1 */ { false, 0xa8b1, 0xa8b1 }, /* 0xa8b2 */ { false, 0xa8b2, 0xa8b2 }, /* 0xa8b3 */ { false, 0xa8b3, 0xa8b3 }, /* 0xa8b4 */ { false, 0xa8b4, 0xa8b4 }, /* 0xa8b5 */ { false, 0xa8b5, 0xa8b5 }, /* 0xa8b6 */ { false, 0xa8b6, 0xa8b6 }, /* 0xa8b7 */ { false, 0xa8b7, 0xa8b7 }, /* 0xa8b8 */ { false, 0xa8b8, 0xa8b8 }, /* 0xa8b9 */ { false, 0xa8b9, 0xa8b9 }, /* 0xa8ba */ { false, 0xa8ba, 0xa8ba }, /* 0xa8bb */ { false, 0xa8bb, 0xa8bb }, /* 0xa8bc */ { false, 0xa8bc, 0xa8bc }, /* 0xa8bd */ { false, 0xa8bd, 0xa8bd }, /* 0xa8be */ { false, 0xa8be, 0xa8be }, /* 0xa8bf */ { false, 0xa8bf, 0xa8bf }, /* 0xa8c0 */ { false, 0xa8c0, 0xa8c0 }, /* 0xa8c1 */ { false, 0xa8c1, 0xa8c1 }, /* 0xa8c2 */ { false, 0xa8c2, 0xa8c2 }, /* 0xa8c3 */ { false, 0xa8c3, 0xa8c3 }, /* 0xa8c4 */ { false, 0xa8c4, 0xa8c4 }, /* 0xa8c5 */ { false, 0xa8c5, 0xa8c5 }, /* 0xa8c6 */ { false, 0xa8c6, 0xa8c6 }, /* 0xa8c7 */ { false, 0xa8c7, 0xa8c7 }, /* 0xa8c8 */ { false, 0xa8c8, 0xa8c8 }, /* 0xa8c9 */ { false, 0xa8c9, 0xa8c9 }, /* 0xa8ca */ { false, 0xa8ca, 0xa8ca }, /* 0xa8cb */ { false, 0xa8cb, 0xa8cb }, /* 0xa8cc */ { false, 0xa8cc, 0xa8cc }, /* 0xa8cd */ { false, 0xa8cd, 0xa8cd }, /* 0xa8ce */ { false, 0xa8ce, 0xa8ce }, /* 0xa8cf */ { false, 0xa8cf, 0xa8cf }, /* 0xa8d0 */ { false, 0xa8d0, 0xa8d0 }, /* 0xa8d1 */ { false, 0xa8d1, 0xa8d1 }, /* 0xa8d2 */ { false, 0xa8d2, 0xa8d2 }, /* 0xa8d3 */ { false, 0xa8d3, 0xa8d3 }, /* 0xa8d4 */ { false, 0xa8d4, 0xa8d4 }, /* 0xa8d5 */ { false, 0xa8d5, 0xa8d5 }, /* 0xa8d6 */ { false, 0xa8d6, 0xa8d6 }, /* 0xa8d7 */ { false, 0xa8d7, 0xa8d7 }, /* 0xa8d8 */ { false, 0xa8d8, 0xa8d8 }, /* 0xa8d9 */ { false, 0xa8d9, 0xa8d9 }, /* 0xa8da */ { false, 0xa8da, 0xa8da }, /* 0xa8db */ { false, 0xa8db, 0xa8db }, /* 0xa8dc */ { false, 0xa8dc, 0xa8dc }, /* 0xa8dd */ { false, 0xa8dd, 0xa8dd }, /* 0xa8de */ { false, 0xa8de, 0xa8de }, /* 0xa8df */ { false, 0xa8df, 0xa8df }, /* 0xa8e0 */ { false, 0xa8e0, 0xa8e0 }, /* 0xa8e1 */ { false, 0xa8e1, 0xa8e1 }, /* 0xa8e2 */ { false, 0xa8e2, 0xa8e2 }, /* 0xa8e3 */ { false, 0xa8e3, 0xa8e3 }, /* 0xa8e4 */ { false, 0xa8e4, 0xa8e4 }, /* 0xa8e5 */ { false, 0xa8e5, 0xa8e5 }, /* 0xa8e6 */ { false, 0xa8e6, 0xa8e6 }, /* 0xa8e7 */ { false, 0xa8e7, 0xa8e7 }, /* 0xa8e8 */ { false, 0xa8e8, 0xa8e8 }, /* 0xa8e9 */ { false, 0xa8e9, 0xa8e9 }, /* 0xa8ea */ { false, 0xa8ea, 0xa8ea }, /* 0xa8eb */ { false, 0xa8eb, 0xa8eb }, /* 0xa8ec */ { false, 0xa8ec, 0xa8ec }, /* 0xa8ed */ { false, 0xa8ed, 0xa8ed }, /* 0xa8ee */ { false, 0xa8ee, 0xa8ee }, /* 0xa8ef */ { false, 0xa8ef, 0xa8ef }, /* 0xa8f0 */ { false, 0xa8f0, 0xa8f0 }, /* 0xa8f1 */ { false, 0xa8f1, 0xa8f1 }, /* 0xa8f2 */ { false, 0xa8f2, 0xa8f2 }, /* 0xa8f3 */ { false, 0xa8f3, 0xa8f3 }, /* 0xa8f4 */ { false, 0xa8f4, 0xa8f4 }, /* 0xa8f5 */ { false, 0xa8f5, 0xa8f5 }, /* 0xa8f6 */ { false, 0xa8f6, 0xa8f6 }, /* 0xa8f7 */ { false, 0xa8f7, 0xa8f7 }, /* 0xa8f8 */ { false, 0xa8f8, 0xa8f8 }, /* 0xa8f9 */ { false, 0xa8f9, 0xa8f9 }, /* 0xa8fa */ { false, 0xa8fa, 0xa8fa }, /* 0xa8fb */ { false, 0xa8fb, 0xa8fb }, /* 0xa8fc */ { false, 0xa8fc, 0xa8fc }, /* 0xa8fd */ { false, 0xa8fd, 0xa8fd }, /* 0xa8fe */ { false, 0xa8fe, 0xa8fe }, /* 0xa8ff */ { false, 0xa8ff, 0xa8ff }, /* 0xa900 */ { false, 0xa900, 0xa900 }, /* 0xa901 */ { false, 0xa901, 0xa901 }, /* 0xa902 */ { false, 0xa902, 0xa902 }, /* 0xa903 */ { false, 0xa903, 0xa903 }, /* 0xa904 */ { false, 0xa904, 0xa904 }, /* 0xa905 */ { false, 0xa905, 0xa905 }, /* 0xa906 */ { false, 0xa906, 0xa906 }, /* 0xa907 */ { false, 0xa907, 0xa907 }, /* 0xa908 */ { false, 0xa908, 0xa908 }, /* 0xa909 */ { false, 0xa909, 0xa909 }, /* 0xa90a */ { false, 0xa90a, 0xa90a }, /* 0xa90b */ { false, 0xa90b, 0xa90b }, /* 0xa90c */ { false, 0xa90c, 0xa90c }, /* 0xa90d */ { false, 0xa90d, 0xa90d }, /* 0xa90e */ { false, 0xa90e, 0xa90e }, /* 0xa90f */ { false, 0xa90f, 0xa90f }, /* 0xa910 */ { false, 0xa910, 0xa910 }, /* 0xa911 */ { false, 0xa911, 0xa911 }, /* 0xa912 */ { false, 0xa912, 0xa912 }, /* 0xa913 */ { false, 0xa913, 0xa913 }, /* 0xa914 */ { false, 0xa914, 0xa914 }, /* 0xa915 */ { false, 0xa915, 0xa915 }, /* 0xa916 */ { false, 0xa916, 0xa916 }, /* 0xa917 */ { false, 0xa917, 0xa917 }, /* 0xa918 */ { false, 0xa918, 0xa918 }, /* 0xa919 */ { false, 0xa919, 0xa919 }, /* 0xa91a */ { false, 0xa91a, 0xa91a }, /* 0xa91b */ { false, 0xa91b, 0xa91b }, /* 0xa91c */ { false, 0xa91c, 0xa91c }, /* 0xa91d */ { false, 0xa91d, 0xa91d }, /* 0xa91e */ { false, 0xa91e, 0xa91e }, /* 0xa91f */ { false, 0xa91f, 0xa91f }, /* 0xa920 */ { false, 0xa920, 0xa920 }, /* 0xa921 */ { false, 0xa921, 0xa921 }, /* 0xa922 */ { false, 0xa922, 0xa922 }, /* 0xa923 */ { false, 0xa923, 0xa923 }, /* 0xa924 */ { false, 0xa924, 0xa924 }, /* 0xa925 */ { false, 0xa925, 0xa925 }, /* 0xa926 */ { false, 0xa926, 0xa926 }, /* 0xa927 */ { false, 0xa927, 0xa927 }, /* 0xa928 */ { false, 0xa928, 0xa928 }, /* 0xa929 */ { false, 0xa929, 0xa929 }, /* 0xa92a */ { false, 0xa92a, 0xa92a }, /* 0xa92b */ { false, 0xa92b, 0xa92b }, /* 0xa92c */ { false, 0xa92c, 0xa92c }, /* 0xa92d */ { false, 0xa92d, 0xa92d }, /* 0xa92e */ { false, 0xa92e, 0xa92e }, /* 0xa92f */ { false, 0xa92f, 0xa92f }, /* 0xa930 */ { false, 0xa930, 0xa930 }, /* 0xa931 */ { false, 0xa931, 0xa931 }, /* 0xa932 */ { false, 0xa932, 0xa932 }, /* 0xa933 */ { false, 0xa933, 0xa933 }, /* 0xa934 */ { false, 0xa934, 0xa934 }, /* 0xa935 */ { false, 0xa935, 0xa935 }, /* 0xa936 */ { false, 0xa936, 0xa936 }, /* 0xa937 */ { false, 0xa937, 0xa937 }, /* 0xa938 */ { false, 0xa938, 0xa938 }, /* 0xa939 */ { false, 0xa939, 0xa939 }, /* 0xa93a */ { false, 0xa93a, 0xa93a }, /* 0xa93b */ { false, 0xa93b, 0xa93b }, /* 0xa93c */ { false, 0xa93c, 0xa93c }, /* 0xa93d */ { false, 0xa93d, 0xa93d }, /* 0xa93e */ { false, 0xa93e, 0xa93e }, /* 0xa93f */ { false, 0xa93f, 0xa93f }, /* 0xa940 */ { false, 0xa940, 0xa940 }, /* 0xa941 */ { false, 0xa941, 0xa941 }, /* 0xa942 */ { false, 0xa942, 0xa942 }, /* 0xa943 */ { false, 0xa943, 0xa943 }, /* 0xa944 */ { false, 0xa944, 0xa944 }, /* 0xa945 */ { false, 0xa945, 0xa945 }, /* 0xa946 */ { false, 0xa946, 0xa946 }, /* 0xa947 */ { false, 0xa947, 0xa947 }, /* 0xa948 */ { false, 0xa948, 0xa948 }, /* 0xa949 */ { false, 0xa949, 0xa949 }, /* 0xa94a */ { false, 0xa94a, 0xa94a }, /* 0xa94b */ { false, 0xa94b, 0xa94b }, /* 0xa94c */ { false, 0xa94c, 0xa94c }, /* 0xa94d */ { false, 0xa94d, 0xa94d }, /* 0xa94e */ { false, 0xa94e, 0xa94e }, /* 0xa94f */ { false, 0xa94f, 0xa94f }, /* 0xa950 */ { false, 0xa950, 0xa950 }, /* 0xa951 */ { false, 0xa951, 0xa951 }, /* 0xa952 */ { false, 0xa952, 0xa952 }, /* 0xa953 */ { false, 0xa953, 0xa953 }, /* 0xa954 */ { false, 0xa954, 0xa954 }, /* 0xa955 */ { false, 0xa955, 0xa955 }, /* 0xa956 */ { false, 0xa956, 0xa956 }, /* 0xa957 */ { false, 0xa957, 0xa957 }, /* 0xa958 */ { false, 0xa958, 0xa958 }, /* 0xa959 */ { false, 0xa959, 0xa959 }, /* 0xa95a */ { false, 0xa95a, 0xa95a }, /* 0xa95b */ { false, 0xa95b, 0xa95b }, /* 0xa95c */ { false, 0xa95c, 0xa95c }, /* 0xa95d */ { false, 0xa95d, 0xa95d }, /* 0xa95e */ { false, 0xa95e, 0xa95e }, /* 0xa95f */ { false, 0xa95f, 0xa95f }, /* 0xa960 */ { false, 0xa960, 0xa960 }, /* 0xa961 */ { false, 0xa961, 0xa961 }, /* 0xa962 */ { false, 0xa962, 0xa962 }, /* 0xa963 */ { false, 0xa963, 0xa963 }, /* 0xa964 */ { false, 0xa964, 0xa964 }, /* 0xa965 */ { false, 0xa965, 0xa965 }, /* 0xa966 */ { false, 0xa966, 0xa966 }, /* 0xa967 */ { false, 0xa967, 0xa967 }, /* 0xa968 */ { false, 0xa968, 0xa968 }, /* 0xa969 */ { false, 0xa969, 0xa969 }, /* 0xa96a */ { false, 0xa96a, 0xa96a }, /* 0xa96b */ { false, 0xa96b, 0xa96b }, /* 0xa96c */ { false, 0xa96c, 0xa96c }, /* 0xa96d */ { false, 0xa96d, 0xa96d }, /* 0xa96e */ { false, 0xa96e, 0xa96e }, /* 0xa96f */ { false, 0xa96f, 0xa96f }, /* 0xa970 */ { false, 0xa970, 0xa970 }, /* 0xa971 */ { false, 0xa971, 0xa971 }, /* 0xa972 */ { false, 0xa972, 0xa972 }, /* 0xa973 */ { false, 0xa973, 0xa973 }, /* 0xa974 */ { false, 0xa974, 0xa974 }, /* 0xa975 */ { false, 0xa975, 0xa975 }, /* 0xa976 */ { false, 0xa976, 0xa976 }, /* 0xa977 */ { false, 0xa977, 0xa977 }, /* 0xa978 */ { false, 0xa978, 0xa978 }, /* 0xa979 */ { false, 0xa979, 0xa979 }, /* 0xa97a */ { false, 0xa97a, 0xa97a }, /* 0xa97b */ { false, 0xa97b, 0xa97b }, /* 0xa97c */ { false, 0xa97c, 0xa97c }, /* 0xa97d */ { false, 0xa97d, 0xa97d }, /* 0xa97e */ { false, 0xa97e, 0xa97e }, /* 0xa97f */ { false, 0xa97f, 0xa97f }, /* 0xa980 */ { false, 0xa980, 0xa980 }, /* 0xa981 */ { false, 0xa981, 0xa981 }, /* 0xa982 */ { false, 0xa982, 0xa982 }, /* 0xa983 */ { false, 0xa983, 0xa983 }, /* 0xa984 */ { false, 0xa984, 0xa984 }, /* 0xa985 */ { false, 0xa985, 0xa985 }, /* 0xa986 */ { false, 0xa986, 0xa986 }, /* 0xa987 */ { false, 0xa987, 0xa987 }, /* 0xa988 */ { false, 0xa988, 0xa988 }, /* 0xa989 */ { false, 0xa989, 0xa989 }, /* 0xa98a */ { false, 0xa98a, 0xa98a }, /* 0xa98b */ { false, 0xa98b, 0xa98b }, /* 0xa98c */ { false, 0xa98c, 0xa98c }, /* 0xa98d */ { false, 0xa98d, 0xa98d }, /* 0xa98e */ { false, 0xa98e, 0xa98e }, /* 0xa98f */ { false, 0xa98f, 0xa98f }, /* 0xa990 */ { false, 0xa990, 0xa990 }, /* 0xa991 */ { false, 0xa991, 0xa991 }, /* 0xa992 */ { false, 0xa992, 0xa992 }, /* 0xa993 */ { false, 0xa993, 0xa993 }, /* 0xa994 */ { false, 0xa994, 0xa994 }, /* 0xa995 */ { false, 0xa995, 0xa995 }, /* 0xa996 */ { false, 0xa996, 0xa996 }, /* 0xa997 */ { false, 0xa997, 0xa997 }, /* 0xa998 */ { false, 0xa998, 0xa998 }, /* 0xa999 */ { false, 0xa999, 0xa999 }, /* 0xa99a */ { false, 0xa99a, 0xa99a }, /* 0xa99b */ { false, 0xa99b, 0xa99b }, /* 0xa99c */ { false, 0xa99c, 0xa99c }, /* 0xa99d */ { false, 0xa99d, 0xa99d }, /* 0xa99e */ { false, 0xa99e, 0xa99e }, /* 0xa99f */ { false, 0xa99f, 0xa99f }, /* 0xa9a0 */ { false, 0xa9a0, 0xa9a0 }, /* 0xa9a1 */ { false, 0xa9a1, 0xa9a1 }, /* 0xa9a2 */ { false, 0xa9a2, 0xa9a2 }, /* 0xa9a3 */ { false, 0xa9a3, 0xa9a3 }, /* 0xa9a4 */ { false, 0xa9a4, 0xa9a4 }, /* 0xa9a5 */ { false, 0xa9a5, 0xa9a5 }, /* 0xa9a6 */ { false, 0xa9a6, 0xa9a6 }, /* 0xa9a7 */ { false, 0xa9a7, 0xa9a7 }, /* 0xa9a8 */ { false, 0xa9a8, 0xa9a8 }, /* 0xa9a9 */ { false, 0xa9a9, 0xa9a9 }, /* 0xa9aa */ { false, 0xa9aa, 0xa9aa }, /* 0xa9ab */ { false, 0xa9ab, 0xa9ab }, /* 0xa9ac */ { false, 0xa9ac, 0xa9ac }, /* 0xa9ad */ { false, 0xa9ad, 0xa9ad }, /* 0xa9ae */ { false, 0xa9ae, 0xa9ae }, /* 0xa9af */ { false, 0xa9af, 0xa9af }, /* 0xa9b0 */ { false, 0xa9b0, 0xa9b0 }, /* 0xa9b1 */ { false, 0xa9b1, 0xa9b1 }, /* 0xa9b2 */ { false, 0xa9b2, 0xa9b2 }, /* 0xa9b3 */ { false, 0xa9b3, 0xa9b3 }, /* 0xa9b4 */ { false, 0xa9b4, 0xa9b4 }, /* 0xa9b5 */ { false, 0xa9b5, 0xa9b5 }, /* 0xa9b6 */ { false, 0xa9b6, 0xa9b6 }, /* 0xa9b7 */ { false, 0xa9b7, 0xa9b7 }, /* 0xa9b8 */ { false, 0xa9b8, 0xa9b8 }, /* 0xa9b9 */ { false, 0xa9b9, 0xa9b9 }, /* 0xa9ba */ { false, 0xa9ba, 0xa9ba }, /* 0xa9bb */ { false, 0xa9bb, 0xa9bb }, /* 0xa9bc */ { false, 0xa9bc, 0xa9bc }, /* 0xa9bd */ { false, 0xa9bd, 0xa9bd }, /* 0xa9be */ { false, 0xa9be, 0xa9be }, /* 0xa9bf */ { false, 0xa9bf, 0xa9bf }, /* 0xa9c0 */ { false, 0xa9c0, 0xa9c0 }, /* 0xa9c1 */ { false, 0xa9c1, 0xa9c1 }, /* 0xa9c2 */ { false, 0xa9c2, 0xa9c2 }, /* 0xa9c3 */ { false, 0xa9c3, 0xa9c3 }, /* 0xa9c4 */ { false, 0xa9c4, 0xa9c4 }, /* 0xa9c5 */ { false, 0xa9c5, 0xa9c5 }, /* 0xa9c6 */ { false, 0xa9c6, 0xa9c6 }, /* 0xa9c7 */ { false, 0xa9c7, 0xa9c7 }, /* 0xa9c8 */ { false, 0xa9c8, 0xa9c8 }, /* 0xa9c9 */ { false, 0xa9c9, 0xa9c9 }, /* 0xa9ca */ { false, 0xa9ca, 0xa9ca }, /* 0xa9cb */ { false, 0xa9cb, 0xa9cb }, /* 0xa9cc */ { false, 0xa9cc, 0xa9cc }, /* 0xa9cd */ { false, 0xa9cd, 0xa9cd }, /* 0xa9ce */ { false, 0xa9ce, 0xa9ce }, /* 0xa9cf */ { false, 0xa9cf, 0xa9cf }, /* 0xa9d0 */ { false, 0xa9d0, 0xa9d0 }, /* 0xa9d1 */ { false, 0xa9d1, 0xa9d1 }, /* 0xa9d2 */ { false, 0xa9d2, 0xa9d2 }, /* 0xa9d3 */ { false, 0xa9d3, 0xa9d3 }, /* 0xa9d4 */ { false, 0xa9d4, 0xa9d4 }, /* 0xa9d5 */ { false, 0xa9d5, 0xa9d5 }, /* 0xa9d6 */ { false, 0xa9d6, 0xa9d6 }, /* 0xa9d7 */ { false, 0xa9d7, 0xa9d7 }, /* 0xa9d8 */ { false, 0xa9d8, 0xa9d8 }, /* 0xa9d9 */ { false, 0xa9d9, 0xa9d9 }, /* 0xa9da */ { false, 0xa9da, 0xa9da }, /* 0xa9db */ { false, 0xa9db, 0xa9db }, /* 0xa9dc */ { false, 0xa9dc, 0xa9dc }, /* 0xa9dd */ { false, 0xa9dd, 0xa9dd }, /* 0xa9de */ { false, 0xa9de, 0xa9de }, /* 0xa9df */ { false, 0xa9df, 0xa9df }, /* 0xa9e0 */ { false, 0xa9e0, 0xa9e0 }, /* 0xa9e1 */ { false, 0xa9e1, 0xa9e1 }, /* 0xa9e2 */ { false, 0xa9e2, 0xa9e2 }, /* 0xa9e3 */ { false, 0xa9e3, 0xa9e3 }, /* 0xa9e4 */ { false, 0xa9e4, 0xa9e4 }, /* 0xa9e5 */ { false, 0xa9e5, 0xa9e5 }, /* 0xa9e6 */ { false, 0xa9e6, 0xa9e6 }, /* 0xa9e7 */ { false, 0xa9e7, 0xa9e7 }, /* 0xa9e8 */ { false, 0xa9e8, 0xa9e8 }, /* 0xa9e9 */ { false, 0xa9e9, 0xa9e9 }, /* 0xa9ea */ { false, 0xa9ea, 0xa9ea }, /* 0xa9eb */ { false, 0xa9eb, 0xa9eb }, /* 0xa9ec */ { false, 0xa9ec, 0xa9ec }, /* 0xa9ed */ { false, 0xa9ed, 0xa9ed }, /* 0xa9ee */ { false, 0xa9ee, 0xa9ee }, /* 0xa9ef */ { false, 0xa9ef, 0xa9ef }, /* 0xa9f0 */ { false, 0xa9f0, 0xa9f0 }, /* 0xa9f1 */ { false, 0xa9f1, 0xa9f1 }, /* 0xa9f2 */ { false, 0xa9f2, 0xa9f2 }, /* 0xa9f3 */ { false, 0xa9f3, 0xa9f3 }, /* 0xa9f4 */ { false, 0xa9f4, 0xa9f4 }, /* 0xa9f5 */ { false, 0xa9f5, 0xa9f5 }, /* 0xa9f6 */ { false, 0xa9f6, 0xa9f6 }, /* 0xa9f7 */ { false, 0xa9f7, 0xa9f7 }, /* 0xa9f8 */ { false, 0xa9f8, 0xa9f8 }, /* 0xa9f9 */ { false, 0xa9f9, 0xa9f9 }, /* 0xa9fa */ { false, 0xa9fa, 0xa9fa }, /* 0xa9fb */ { false, 0xa9fb, 0xa9fb }, /* 0xa9fc */ { false, 0xa9fc, 0xa9fc }, /* 0xa9fd */ { false, 0xa9fd, 0xa9fd }, /* 0xa9fe */ { false, 0xa9fe, 0xa9fe }, /* 0xa9ff */ { false, 0xa9ff, 0xa9ff }, /* 0xaa00 */ { false, 0xaa00, 0xaa00 }, /* 0xaa01 */ { false, 0xaa01, 0xaa01 }, /* 0xaa02 */ { false, 0xaa02, 0xaa02 }, /* 0xaa03 */ { false, 0xaa03, 0xaa03 }, /* 0xaa04 */ { false, 0xaa04, 0xaa04 }, /* 0xaa05 */ { false, 0xaa05, 0xaa05 }, /* 0xaa06 */ { false, 0xaa06, 0xaa06 }, /* 0xaa07 */ { false, 0xaa07, 0xaa07 }, /* 0xaa08 */ { false, 0xaa08, 0xaa08 }, /* 0xaa09 */ { false, 0xaa09, 0xaa09 }, /* 0xaa0a */ { false, 0xaa0a, 0xaa0a }, /* 0xaa0b */ { false, 0xaa0b, 0xaa0b }, /* 0xaa0c */ { false, 0xaa0c, 0xaa0c }, /* 0xaa0d */ { false, 0xaa0d, 0xaa0d }, /* 0xaa0e */ { false, 0xaa0e, 0xaa0e }, /* 0xaa0f */ { false, 0xaa0f, 0xaa0f }, /* 0xaa10 */ { false, 0xaa10, 0xaa10 }, /* 0xaa11 */ { false, 0xaa11, 0xaa11 }, /* 0xaa12 */ { false, 0xaa12, 0xaa12 }, /* 0xaa13 */ { false, 0xaa13, 0xaa13 }, /* 0xaa14 */ { false, 0xaa14, 0xaa14 }, /* 0xaa15 */ { false, 0xaa15, 0xaa15 }, /* 0xaa16 */ { false, 0xaa16, 0xaa16 }, /* 0xaa17 */ { false, 0xaa17, 0xaa17 }, /* 0xaa18 */ { false, 0xaa18, 0xaa18 }, /* 0xaa19 */ { false, 0xaa19, 0xaa19 }, /* 0xaa1a */ { false, 0xaa1a, 0xaa1a }, /* 0xaa1b */ { false, 0xaa1b, 0xaa1b }, /* 0xaa1c */ { false, 0xaa1c, 0xaa1c }, /* 0xaa1d */ { false, 0xaa1d, 0xaa1d }, /* 0xaa1e */ { false, 0xaa1e, 0xaa1e }, /* 0xaa1f */ { false, 0xaa1f, 0xaa1f }, /* 0xaa20 */ { false, 0xaa20, 0xaa20 }, /* 0xaa21 */ { false, 0xaa21, 0xaa21 }, /* 0xaa22 */ { false, 0xaa22, 0xaa22 }, /* 0xaa23 */ { false, 0xaa23, 0xaa23 }, /* 0xaa24 */ { false, 0xaa24, 0xaa24 }, /* 0xaa25 */ { false, 0xaa25, 0xaa25 }, /* 0xaa26 */ { false, 0xaa26, 0xaa26 }, /* 0xaa27 */ { false, 0xaa27, 0xaa27 }, /* 0xaa28 */ { false, 0xaa28, 0xaa28 }, /* 0xaa29 */ { false, 0xaa29, 0xaa29 }, /* 0xaa2a */ { false, 0xaa2a, 0xaa2a }, /* 0xaa2b */ { false, 0xaa2b, 0xaa2b }, /* 0xaa2c */ { false, 0xaa2c, 0xaa2c }, /* 0xaa2d */ { false, 0xaa2d, 0xaa2d }, /* 0xaa2e */ { false, 0xaa2e, 0xaa2e }, /* 0xaa2f */ { false, 0xaa2f, 0xaa2f }, /* 0xaa30 */ { false, 0xaa30, 0xaa30 }, /* 0xaa31 */ { false, 0xaa31, 0xaa31 }, /* 0xaa32 */ { false, 0xaa32, 0xaa32 }, /* 0xaa33 */ { false, 0xaa33, 0xaa33 }, /* 0xaa34 */ { false, 0xaa34, 0xaa34 }, /* 0xaa35 */ { false, 0xaa35, 0xaa35 }, /* 0xaa36 */ { false, 0xaa36, 0xaa36 }, /* 0xaa37 */ { false, 0xaa37, 0xaa37 }, /* 0xaa38 */ { false, 0xaa38, 0xaa38 }, /* 0xaa39 */ { false, 0xaa39, 0xaa39 }, /* 0xaa3a */ { false, 0xaa3a, 0xaa3a }, /* 0xaa3b */ { false, 0xaa3b, 0xaa3b }, /* 0xaa3c */ { false, 0xaa3c, 0xaa3c }, /* 0xaa3d */ { false, 0xaa3d, 0xaa3d }, /* 0xaa3e */ { false, 0xaa3e, 0xaa3e }, /* 0xaa3f */ { false, 0xaa3f, 0xaa3f }, /* 0xaa40 */ { false, 0xaa40, 0xaa40 }, /* 0xaa41 */ { false, 0xaa41, 0xaa41 }, /* 0xaa42 */ { false, 0xaa42, 0xaa42 }, /* 0xaa43 */ { false, 0xaa43, 0xaa43 }, /* 0xaa44 */ { false, 0xaa44, 0xaa44 }, /* 0xaa45 */ { false, 0xaa45, 0xaa45 }, /* 0xaa46 */ { false, 0xaa46, 0xaa46 }, /* 0xaa47 */ { false, 0xaa47, 0xaa47 }, /* 0xaa48 */ { false, 0xaa48, 0xaa48 }, /* 0xaa49 */ { false, 0xaa49, 0xaa49 }, /* 0xaa4a */ { false, 0xaa4a, 0xaa4a }, /* 0xaa4b */ { false, 0xaa4b, 0xaa4b }, /* 0xaa4c */ { false, 0xaa4c, 0xaa4c }, /* 0xaa4d */ { false, 0xaa4d, 0xaa4d }, /* 0xaa4e */ { false, 0xaa4e, 0xaa4e }, /* 0xaa4f */ { false, 0xaa4f, 0xaa4f }, /* 0xaa50 */ { false, 0xaa50, 0xaa50 }, /* 0xaa51 */ { false, 0xaa51, 0xaa51 }, /* 0xaa52 */ { false, 0xaa52, 0xaa52 }, /* 0xaa53 */ { false, 0xaa53, 0xaa53 }, /* 0xaa54 */ { false, 0xaa54, 0xaa54 }, /* 0xaa55 */ { false, 0xaa55, 0xaa55 }, /* 0xaa56 */ { false, 0xaa56, 0xaa56 }, /* 0xaa57 */ { false, 0xaa57, 0xaa57 }, /* 0xaa58 */ { false, 0xaa58, 0xaa58 }, /* 0xaa59 */ { false, 0xaa59, 0xaa59 }, /* 0xaa5a */ { false, 0xaa5a, 0xaa5a }, /* 0xaa5b */ { false, 0xaa5b, 0xaa5b }, /* 0xaa5c */ { false, 0xaa5c, 0xaa5c }, /* 0xaa5d */ { false, 0xaa5d, 0xaa5d }, /* 0xaa5e */ { false, 0xaa5e, 0xaa5e }, /* 0xaa5f */ { false, 0xaa5f, 0xaa5f }, /* 0xaa60 */ { false, 0xaa60, 0xaa60 }, /* 0xaa61 */ { false, 0xaa61, 0xaa61 }, /* 0xaa62 */ { false, 0xaa62, 0xaa62 }, /* 0xaa63 */ { false, 0xaa63, 0xaa63 }, /* 0xaa64 */ { false, 0xaa64, 0xaa64 }, /* 0xaa65 */ { false, 0xaa65, 0xaa65 }, /* 0xaa66 */ { false, 0xaa66, 0xaa66 }, /* 0xaa67 */ { false, 0xaa67, 0xaa67 }, /* 0xaa68 */ { false, 0xaa68, 0xaa68 }, /* 0xaa69 */ { false, 0xaa69, 0xaa69 }, /* 0xaa6a */ { false, 0xaa6a, 0xaa6a }, /* 0xaa6b */ { false, 0xaa6b, 0xaa6b }, /* 0xaa6c */ { false, 0xaa6c, 0xaa6c }, /* 0xaa6d */ { false, 0xaa6d, 0xaa6d }, /* 0xaa6e */ { false, 0xaa6e, 0xaa6e }, /* 0xaa6f */ { false, 0xaa6f, 0xaa6f }, /* 0xaa70 */ { false, 0xaa70, 0xaa70 }, /* 0xaa71 */ { false, 0xaa71, 0xaa71 }, /* 0xaa72 */ { false, 0xaa72, 0xaa72 }, /* 0xaa73 */ { false, 0xaa73, 0xaa73 }, /* 0xaa74 */ { false, 0xaa74, 0xaa74 }, /* 0xaa75 */ { false, 0xaa75, 0xaa75 }, /* 0xaa76 */ { false, 0xaa76, 0xaa76 }, /* 0xaa77 */ { false, 0xaa77, 0xaa77 }, /* 0xaa78 */ { false, 0xaa78, 0xaa78 }, /* 0xaa79 */ { false, 0xaa79, 0xaa79 }, /* 0xaa7a */ { false, 0xaa7a, 0xaa7a }, /* 0xaa7b */ { false, 0xaa7b, 0xaa7b }, /* 0xaa7c */ { false, 0xaa7c, 0xaa7c }, /* 0xaa7d */ { false, 0xaa7d, 0xaa7d }, /* 0xaa7e */ { false, 0xaa7e, 0xaa7e }, /* 0xaa7f */ { false, 0xaa7f, 0xaa7f }, /* 0xaa80 */ { false, 0xaa80, 0xaa80 }, /* 0xaa81 */ { false, 0xaa81, 0xaa81 }, /* 0xaa82 */ { false, 0xaa82, 0xaa82 }, /* 0xaa83 */ { false, 0xaa83, 0xaa83 }, /* 0xaa84 */ { false, 0xaa84, 0xaa84 }, /* 0xaa85 */ { false, 0xaa85, 0xaa85 }, /* 0xaa86 */ { false, 0xaa86, 0xaa86 }, /* 0xaa87 */ { false, 0xaa87, 0xaa87 }, /* 0xaa88 */ { false, 0xaa88, 0xaa88 }, /* 0xaa89 */ { false, 0xaa89, 0xaa89 }, /* 0xaa8a */ { false, 0xaa8a, 0xaa8a }, /* 0xaa8b */ { false, 0xaa8b, 0xaa8b }, /* 0xaa8c */ { false, 0xaa8c, 0xaa8c }, /* 0xaa8d */ { false, 0xaa8d, 0xaa8d }, /* 0xaa8e */ { false, 0xaa8e, 0xaa8e }, /* 0xaa8f */ { false, 0xaa8f, 0xaa8f }, /* 0xaa90 */ { false, 0xaa90, 0xaa90 }, /* 0xaa91 */ { false, 0xaa91, 0xaa91 }, /* 0xaa92 */ { false, 0xaa92, 0xaa92 }, /* 0xaa93 */ { false, 0xaa93, 0xaa93 }, /* 0xaa94 */ { false, 0xaa94, 0xaa94 }, /* 0xaa95 */ { false, 0xaa95, 0xaa95 }, /* 0xaa96 */ { false, 0xaa96, 0xaa96 }, /* 0xaa97 */ { false, 0xaa97, 0xaa97 }, /* 0xaa98 */ { false, 0xaa98, 0xaa98 }, /* 0xaa99 */ { false, 0xaa99, 0xaa99 }, /* 0xaa9a */ { false, 0xaa9a, 0xaa9a }, /* 0xaa9b */ { false, 0xaa9b, 0xaa9b }, /* 0xaa9c */ { false, 0xaa9c, 0xaa9c }, /* 0xaa9d */ { false, 0xaa9d, 0xaa9d }, /* 0xaa9e */ { false, 0xaa9e, 0xaa9e }, /* 0xaa9f */ { false, 0xaa9f, 0xaa9f }, /* 0xaaa0 */ { false, 0xaaa0, 0xaaa0 }, /* 0xaaa1 */ { false, 0xaaa1, 0xaaa1 }, /* 0xaaa2 */ { false, 0xaaa2, 0xaaa2 }, /* 0xaaa3 */ { false, 0xaaa3, 0xaaa3 }, /* 0xaaa4 */ { false, 0xaaa4, 0xaaa4 }, /* 0xaaa5 */ { false, 0xaaa5, 0xaaa5 }, /* 0xaaa6 */ { false, 0xaaa6, 0xaaa6 }, /* 0xaaa7 */ { false, 0xaaa7, 0xaaa7 }, /* 0xaaa8 */ { false, 0xaaa8, 0xaaa8 }, /* 0xaaa9 */ { false, 0xaaa9, 0xaaa9 }, /* 0xaaaa */ { false, 0xaaaa, 0xaaaa }, /* 0xaaab */ { false, 0xaaab, 0xaaab }, /* 0xaaac */ { false, 0xaaac, 0xaaac }, /* 0xaaad */ { false, 0xaaad, 0xaaad }, /* 0xaaae */ { false, 0xaaae, 0xaaae }, /* 0xaaaf */ { false, 0xaaaf, 0xaaaf }, /* 0xaab0 */ { false, 0xaab0, 0xaab0 }, /* 0xaab1 */ { false, 0xaab1, 0xaab1 }, /* 0xaab2 */ { false, 0xaab2, 0xaab2 }, /* 0xaab3 */ { false, 0xaab3, 0xaab3 }, /* 0xaab4 */ { false, 0xaab4, 0xaab4 }, /* 0xaab5 */ { false, 0xaab5, 0xaab5 }, /* 0xaab6 */ { false, 0xaab6, 0xaab6 }, /* 0xaab7 */ { false, 0xaab7, 0xaab7 }, /* 0xaab8 */ { false, 0xaab8, 0xaab8 }, /* 0xaab9 */ { false, 0xaab9, 0xaab9 }, /* 0xaaba */ { false, 0xaaba, 0xaaba }, /* 0xaabb */ { false, 0xaabb, 0xaabb }, /* 0xaabc */ { false, 0xaabc, 0xaabc }, /* 0xaabd */ { false, 0xaabd, 0xaabd }, /* 0xaabe */ { false, 0xaabe, 0xaabe }, /* 0xaabf */ { false, 0xaabf, 0xaabf }, /* 0xaac0 */ { false, 0xaac0, 0xaac0 }, /* 0xaac1 */ { false, 0xaac1, 0xaac1 }, /* 0xaac2 */ { false, 0xaac2, 0xaac2 }, /* 0xaac3 */ { false, 0xaac3, 0xaac3 }, /* 0xaac4 */ { false, 0xaac4, 0xaac4 }, /* 0xaac5 */ { false, 0xaac5, 0xaac5 }, /* 0xaac6 */ { false, 0xaac6, 0xaac6 }, /* 0xaac7 */ { false, 0xaac7, 0xaac7 }, /* 0xaac8 */ { false, 0xaac8, 0xaac8 }, /* 0xaac9 */ { false, 0xaac9, 0xaac9 }, /* 0xaaca */ { false, 0xaaca, 0xaaca }, /* 0xaacb */ { false, 0xaacb, 0xaacb }, /* 0xaacc */ { false, 0xaacc, 0xaacc }, /* 0xaacd */ { false, 0xaacd, 0xaacd }, /* 0xaace */ { false, 0xaace, 0xaace }, /* 0xaacf */ { false, 0xaacf, 0xaacf }, /* 0xaad0 */ { false, 0xaad0, 0xaad0 }, /* 0xaad1 */ { false, 0xaad1, 0xaad1 }, /* 0xaad2 */ { false, 0xaad2, 0xaad2 }, /* 0xaad3 */ { false, 0xaad3, 0xaad3 }, /* 0xaad4 */ { false, 0xaad4, 0xaad4 }, /* 0xaad5 */ { false, 0xaad5, 0xaad5 }, /* 0xaad6 */ { false, 0xaad6, 0xaad6 }, /* 0xaad7 */ { false, 0xaad7, 0xaad7 }, /* 0xaad8 */ { false, 0xaad8, 0xaad8 }, /* 0xaad9 */ { false, 0xaad9, 0xaad9 }, /* 0xaada */ { false, 0xaada, 0xaada }, /* 0xaadb */ { false, 0xaadb, 0xaadb }, /* 0xaadc */ { false, 0xaadc, 0xaadc }, /* 0xaadd */ { false, 0xaadd, 0xaadd }, /* 0xaade */ { false, 0xaade, 0xaade }, /* 0xaadf */ { false, 0xaadf, 0xaadf }, /* 0xaae0 */ { false, 0xaae0, 0xaae0 }, /* 0xaae1 */ { false, 0xaae1, 0xaae1 }, /* 0xaae2 */ { false, 0xaae2, 0xaae2 }, /* 0xaae3 */ { false, 0xaae3, 0xaae3 }, /* 0xaae4 */ { false, 0xaae4, 0xaae4 }, /* 0xaae5 */ { false, 0xaae5, 0xaae5 }, /* 0xaae6 */ { false, 0xaae6, 0xaae6 }, /* 0xaae7 */ { false, 0xaae7, 0xaae7 }, /* 0xaae8 */ { false, 0xaae8, 0xaae8 }, /* 0xaae9 */ { false, 0xaae9, 0xaae9 }, /* 0xaaea */ { false, 0xaaea, 0xaaea }, /* 0xaaeb */ { false, 0xaaeb, 0xaaeb }, /* 0xaaec */ { false, 0xaaec, 0xaaec }, /* 0xaaed */ { false, 0xaaed, 0xaaed }, /* 0xaaee */ { false, 0xaaee, 0xaaee }, /* 0xaaef */ { false, 0xaaef, 0xaaef }, /* 0xaaf0 */ { false, 0xaaf0, 0xaaf0 }, /* 0xaaf1 */ { false, 0xaaf1, 0xaaf1 }, /* 0xaaf2 */ { false, 0xaaf2, 0xaaf2 }, /* 0xaaf3 */ { false, 0xaaf3, 0xaaf3 }, /* 0xaaf4 */ { false, 0xaaf4, 0xaaf4 }, /* 0xaaf5 */ { false, 0xaaf5, 0xaaf5 }, /* 0xaaf6 */ { false, 0xaaf6, 0xaaf6 }, /* 0xaaf7 */ { false, 0xaaf7, 0xaaf7 }, /* 0xaaf8 */ { false, 0xaaf8, 0xaaf8 }, /* 0xaaf9 */ { false, 0xaaf9, 0xaaf9 }, /* 0xaafa */ { false, 0xaafa, 0xaafa }, /* 0xaafb */ { false, 0xaafb, 0xaafb }, /* 0xaafc */ { false, 0xaafc, 0xaafc }, /* 0xaafd */ { false, 0xaafd, 0xaafd }, /* 0xaafe */ { false, 0xaafe, 0xaafe }, /* 0xaaff */ { false, 0xaaff, 0xaaff }, /* 0xab00 */ { false, 0xab00, 0xab00 }, /* 0xab01 */ { false, 0xab01, 0xab01 }, /* 0xab02 */ { false, 0xab02, 0xab02 }, /* 0xab03 */ { false, 0xab03, 0xab03 }, /* 0xab04 */ { false, 0xab04, 0xab04 }, /* 0xab05 */ { false, 0xab05, 0xab05 }, /* 0xab06 */ { false, 0xab06, 0xab06 }, /* 0xab07 */ { false, 0xab07, 0xab07 }, /* 0xab08 */ { false, 0xab08, 0xab08 }, /* 0xab09 */ { false, 0xab09, 0xab09 }, /* 0xab0a */ { false, 0xab0a, 0xab0a }, /* 0xab0b */ { false, 0xab0b, 0xab0b }, /* 0xab0c */ { false, 0xab0c, 0xab0c }, /* 0xab0d */ { false, 0xab0d, 0xab0d }, /* 0xab0e */ { false, 0xab0e, 0xab0e }, /* 0xab0f */ { false, 0xab0f, 0xab0f }, /* 0xab10 */ { false, 0xab10, 0xab10 }, /* 0xab11 */ { false, 0xab11, 0xab11 }, /* 0xab12 */ { false, 0xab12, 0xab12 }, /* 0xab13 */ { false, 0xab13, 0xab13 }, /* 0xab14 */ { false, 0xab14, 0xab14 }, /* 0xab15 */ { false, 0xab15, 0xab15 }, /* 0xab16 */ { false, 0xab16, 0xab16 }, /* 0xab17 */ { false, 0xab17, 0xab17 }, /* 0xab18 */ { false, 0xab18, 0xab18 }, /* 0xab19 */ { false, 0xab19, 0xab19 }, /* 0xab1a */ { false, 0xab1a, 0xab1a }, /* 0xab1b */ { false, 0xab1b, 0xab1b }, /* 0xab1c */ { false, 0xab1c, 0xab1c }, /* 0xab1d */ { false, 0xab1d, 0xab1d }, /* 0xab1e */ { false, 0xab1e, 0xab1e }, /* 0xab1f */ { false, 0xab1f, 0xab1f }, /* 0xab20 */ { false, 0xab20, 0xab20 }, /* 0xab21 */ { false, 0xab21, 0xab21 }, /* 0xab22 */ { false, 0xab22, 0xab22 }, /* 0xab23 */ { false, 0xab23, 0xab23 }, /* 0xab24 */ { false, 0xab24, 0xab24 }, /* 0xab25 */ { false, 0xab25, 0xab25 }, /* 0xab26 */ { false, 0xab26, 0xab26 }, /* 0xab27 */ { false, 0xab27, 0xab27 }, /* 0xab28 */ { false, 0xab28, 0xab28 }, /* 0xab29 */ { false, 0xab29, 0xab29 }, /* 0xab2a */ { false, 0xab2a, 0xab2a }, /* 0xab2b */ { false, 0xab2b, 0xab2b }, /* 0xab2c */ { false, 0xab2c, 0xab2c }, /* 0xab2d */ { false, 0xab2d, 0xab2d }, /* 0xab2e */ { false, 0xab2e, 0xab2e }, /* 0xab2f */ { false, 0xab2f, 0xab2f }, /* 0xab30 */ { false, 0xab30, 0xab30 }, /* 0xab31 */ { false, 0xab31, 0xab31 }, /* 0xab32 */ { false, 0xab32, 0xab32 }, /* 0xab33 */ { false, 0xab33, 0xab33 }, /* 0xab34 */ { false, 0xab34, 0xab34 }, /* 0xab35 */ { false, 0xab35, 0xab35 }, /* 0xab36 */ { false, 0xab36, 0xab36 }, /* 0xab37 */ { false, 0xab37, 0xab37 }, /* 0xab38 */ { false, 0xab38, 0xab38 }, /* 0xab39 */ { false, 0xab39, 0xab39 }, /* 0xab3a */ { false, 0xab3a, 0xab3a }, /* 0xab3b */ { false, 0xab3b, 0xab3b }, /* 0xab3c */ { false, 0xab3c, 0xab3c }, /* 0xab3d */ { false, 0xab3d, 0xab3d }, /* 0xab3e */ { false, 0xab3e, 0xab3e }, /* 0xab3f */ { false, 0xab3f, 0xab3f }, /* 0xab40 */ { false, 0xab40, 0xab40 }, /* 0xab41 */ { false, 0xab41, 0xab41 }, /* 0xab42 */ { false, 0xab42, 0xab42 }, /* 0xab43 */ { false, 0xab43, 0xab43 }, /* 0xab44 */ { false, 0xab44, 0xab44 }, /* 0xab45 */ { false, 0xab45, 0xab45 }, /* 0xab46 */ { false, 0xab46, 0xab46 }, /* 0xab47 */ { false, 0xab47, 0xab47 }, /* 0xab48 */ { false, 0xab48, 0xab48 }, /* 0xab49 */ { false, 0xab49, 0xab49 }, /* 0xab4a */ { false, 0xab4a, 0xab4a }, /* 0xab4b */ { false, 0xab4b, 0xab4b }, /* 0xab4c */ { false, 0xab4c, 0xab4c }, /* 0xab4d */ { false, 0xab4d, 0xab4d }, /* 0xab4e */ { false, 0xab4e, 0xab4e }, /* 0xab4f */ { false, 0xab4f, 0xab4f }, /* 0xab50 */ { false, 0xab50, 0xab50 }, /* 0xab51 */ { false, 0xab51, 0xab51 }, /* 0xab52 */ { false, 0xab52, 0xab52 }, /* 0xab53 */ { false, 0xab53, 0xab53 }, /* 0xab54 */ { false, 0xab54, 0xab54 }, /* 0xab55 */ { false, 0xab55, 0xab55 }, /* 0xab56 */ { false, 0xab56, 0xab56 }, /* 0xab57 */ { false, 0xab57, 0xab57 }, /* 0xab58 */ { false, 0xab58, 0xab58 }, /* 0xab59 */ { false, 0xab59, 0xab59 }, /* 0xab5a */ { false, 0xab5a, 0xab5a }, /* 0xab5b */ { false, 0xab5b, 0xab5b }, /* 0xab5c */ { false, 0xab5c, 0xab5c }, /* 0xab5d */ { false, 0xab5d, 0xab5d }, /* 0xab5e */ { false, 0xab5e, 0xab5e }, /* 0xab5f */ { false, 0xab5f, 0xab5f }, /* 0xab60 */ { false, 0xab60, 0xab60 }, /* 0xab61 */ { false, 0xab61, 0xab61 }, /* 0xab62 */ { false, 0xab62, 0xab62 }, /* 0xab63 */ { false, 0xab63, 0xab63 }, /* 0xab64 */ { false, 0xab64, 0xab64 }, /* 0xab65 */ { false, 0xab65, 0xab65 }, /* 0xab66 */ { false, 0xab66, 0xab66 }, /* 0xab67 */ { false, 0xab67, 0xab67 }, /* 0xab68 */ { false, 0xab68, 0xab68 }, /* 0xab69 */ { false, 0xab69, 0xab69 }, /* 0xab6a */ { false, 0xab6a, 0xab6a }, /* 0xab6b */ { false, 0xab6b, 0xab6b }, /* 0xab6c */ { false, 0xab6c, 0xab6c }, /* 0xab6d */ { false, 0xab6d, 0xab6d }, /* 0xab6e */ { false, 0xab6e, 0xab6e }, /* 0xab6f */ { false, 0xab6f, 0xab6f }, /* 0xab70 */ { false, 0xab70, 0xab70 }, /* 0xab71 */ { false, 0xab71, 0xab71 }, /* 0xab72 */ { false, 0xab72, 0xab72 }, /* 0xab73 */ { false, 0xab73, 0xab73 }, /* 0xab74 */ { false, 0xab74, 0xab74 }, /* 0xab75 */ { false, 0xab75, 0xab75 }, /* 0xab76 */ { false, 0xab76, 0xab76 }, /* 0xab77 */ { false, 0xab77, 0xab77 }, /* 0xab78 */ { false, 0xab78, 0xab78 }, /* 0xab79 */ { false, 0xab79, 0xab79 }, /* 0xab7a */ { false, 0xab7a, 0xab7a }, /* 0xab7b */ { false, 0xab7b, 0xab7b }, /* 0xab7c */ { false, 0xab7c, 0xab7c }, /* 0xab7d */ { false, 0xab7d, 0xab7d }, /* 0xab7e */ { false, 0xab7e, 0xab7e }, /* 0xab7f */ { false, 0xab7f, 0xab7f }, /* 0xab80 */ { false, 0xab80, 0xab80 }, /* 0xab81 */ { false, 0xab81, 0xab81 }, /* 0xab82 */ { false, 0xab82, 0xab82 }, /* 0xab83 */ { false, 0xab83, 0xab83 }, /* 0xab84 */ { false, 0xab84, 0xab84 }, /* 0xab85 */ { false, 0xab85, 0xab85 }, /* 0xab86 */ { false, 0xab86, 0xab86 }, /* 0xab87 */ { false, 0xab87, 0xab87 }, /* 0xab88 */ { false, 0xab88, 0xab88 }, /* 0xab89 */ { false, 0xab89, 0xab89 }, /* 0xab8a */ { false, 0xab8a, 0xab8a }, /* 0xab8b */ { false, 0xab8b, 0xab8b }, /* 0xab8c */ { false, 0xab8c, 0xab8c }, /* 0xab8d */ { false, 0xab8d, 0xab8d }, /* 0xab8e */ { false, 0xab8e, 0xab8e }, /* 0xab8f */ { false, 0xab8f, 0xab8f }, /* 0xab90 */ { false, 0xab90, 0xab90 }, /* 0xab91 */ { false, 0xab91, 0xab91 }, /* 0xab92 */ { false, 0xab92, 0xab92 }, /* 0xab93 */ { false, 0xab93, 0xab93 }, /* 0xab94 */ { false, 0xab94, 0xab94 }, /* 0xab95 */ { false, 0xab95, 0xab95 }, /* 0xab96 */ { false, 0xab96, 0xab96 }, /* 0xab97 */ { false, 0xab97, 0xab97 }, /* 0xab98 */ { false, 0xab98, 0xab98 }, /* 0xab99 */ { false, 0xab99, 0xab99 }, /* 0xab9a */ { false, 0xab9a, 0xab9a }, /* 0xab9b */ { false, 0xab9b, 0xab9b }, /* 0xab9c */ { false, 0xab9c, 0xab9c }, /* 0xab9d */ { false, 0xab9d, 0xab9d }, /* 0xab9e */ { false, 0xab9e, 0xab9e }, /* 0xab9f */ { false, 0xab9f, 0xab9f }, /* 0xaba0 */ { false, 0xaba0, 0xaba0 }, /* 0xaba1 */ { false, 0xaba1, 0xaba1 }, /* 0xaba2 */ { false, 0xaba2, 0xaba2 }, /* 0xaba3 */ { false, 0xaba3, 0xaba3 }, /* 0xaba4 */ { false, 0xaba4, 0xaba4 }, /* 0xaba5 */ { false, 0xaba5, 0xaba5 }, /* 0xaba6 */ { false, 0xaba6, 0xaba6 }, /* 0xaba7 */ { false, 0xaba7, 0xaba7 }, /* 0xaba8 */ { false, 0xaba8, 0xaba8 }, /* 0xaba9 */ { false, 0xaba9, 0xaba9 }, /* 0xabaa */ { false, 0xabaa, 0xabaa }, /* 0xabab */ { false, 0xabab, 0xabab }, /* 0xabac */ { false, 0xabac, 0xabac }, /* 0xabad */ { false, 0xabad, 0xabad }, /* 0xabae */ { false, 0xabae, 0xabae }, /* 0xabaf */ { false, 0xabaf, 0xabaf }, /* 0xabb0 */ { false, 0xabb0, 0xabb0 }, /* 0xabb1 */ { false, 0xabb1, 0xabb1 }, /* 0xabb2 */ { false, 0xabb2, 0xabb2 }, /* 0xabb3 */ { false, 0xabb3, 0xabb3 }, /* 0xabb4 */ { false, 0xabb4, 0xabb4 }, /* 0xabb5 */ { false, 0xabb5, 0xabb5 }, /* 0xabb6 */ { false, 0xabb6, 0xabb6 }, /* 0xabb7 */ { false, 0xabb7, 0xabb7 }, /* 0xabb8 */ { false, 0xabb8, 0xabb8 }, /* 0xabb9 */ { false, 0xabb9, 0xabb9 }, /* 0xabba */ { false, 0xabba, 0xabba }, /* 0xabbb */ { false, 0xabbb, 0xabbb }, /* 0xabbc */ { false, 0xabbc, 0xabbc }, /* 0xabbd */ { false, 0xabbd, 0xabbd }, /* 0xabbe */ { false, 0xabbe, 0xabbe }, /* 0xabbf */ { false, 0xabbf, 0xabbf }, /* 0xabc0 */ { false, 0xabc0, 0xabc0 }, /* 0xabc1 */ { false, 0xabc1, 0xabc1 }, /* 0xabc2 */ { false, 0xabc2, 0xabc2 }, /* 0xabc3 */ { false, 0xabc3, 0xabc3 }, /* 0xabc4 */ { false, 0xabc4, 0xabc4 }, /* 0xabc5 */ { false, 0xabc5, 0xabc5 }, /* 0xabc6 */ { false, 0xabc6, 0xabc6 }, /* 0xabc7 */ { false, 0xabc7, 0xabc7 }, /* 0xabc8 */ { false, 0xabc8, 0xabc8 }, /* 0xabc9 */ { false, 0xabc9, 0xabc9 }, /* 0xabca */ { false, 0xabca, 0xabca }, /* 0xabcb */ { false, 0xabcb, 0xabcb }, /* 0xabcc */ { false, 0xabcc, 0xabcc }, /* 0xabcd */ { false, 0xabcd, 0xabcd }, /* 0xabce */ { false, 0xabce, 0xabce }, /* 0xabcf */ { false, 0xabcf, 0xabcf }, /* 0xabd0 */ { false, 0xabd0, 0xabd0 }, /* 0xabd1 */ { false, 0xabd1, 0xabd1 }, /* 0xabd2 */ { false, 0xabd2, 0xabd2 }, /* 0xabd3 */ { false, 0xabd3, 0xabd3 }, /* 0xabd4 */ { false, 0xabd4, 0xabd4 }, /* 0xabd5 */ { false, 0xabd5, 0xabd5 }, /* 0xabd6 */ { false, 0xabd6, 0xabd6 }, /* 0xabd7 */ { false, 0xabd7, 0xabd7 }, /* 0xabd8 */ { false, 0xabd8, 0xabd8 }, /* 0xabd9 */ { false, 0xabd9, 0xabd9 }, /* 0xabda */ { false, 0xabda, 0xabda }, /* 0xabdb */ { false, 0xabdb, 0xabdb }, /* 0xabdc */ { false, 0xabdc, 0xabdc }, /* 0xabdd */ { false, 0xabdd, 0xabdd }, /* 0xabde */ { false, 0xabde, 0xabde }, /* 0xabdf */ { false, 0xabdf, 0xabdf }, /* 0xabe0 */ { false, 0xabe0, 0xabe0 }, /* 0xabe1 */ { false, 0xabe1, 0xabe1 }, /* 0xabe2 */ { false, 0xabe2, 0xabe2 }, /* 0xabe3 */ { false, 0xabe3, 0xabe3 }, /* 0xabe4 */ { false, 0xabe4, 0xabe4 }, /* 0xabe5 */ { false, 0xabe5, 0xabe5 }, /* 0xabe6 */ { false, 0xabe6, 0xabe6 }, /* 0xabe7 */ { false, 0xabe7, 0xabe7 }, /* 0xabe8 */ { false, 0xabe8, 0xabe8 }, /* 0xabe9 */ { false, 0xabe9, 0xabe9 }, /* 0xabea */ { false, 0xabea, 0xabea }, /* 0xabeb */ { false, 0xabeb, 0xabeb }, /* 0xabec */ { false, 0xabec, 0xabec }, /* 0xabed */ { false, 0xabed, 0xabed }, /* 0xabee */ { false, 0xabee, 0xabee }, /* 0xabef */ { false, 0xabef, 0xabef }, /* 0xabf0 */ { false, 0xabf0, 0xabf0 }, /* 0xabf1 */ { false, 0xabf1, 0xabf1 }, /* 0xabf2 */ { false, 0xabf2, 0xabf2 }, /* 0xabf3 */ { false, 0xabf3, 0xabf3 }, /* 0xabf4 */ { false, 0xabf4, 0xabf4 }, /* 0xabf5 */ { false, 0xabf5, 0xabf5 }, /* 0xabf6 */ { false, 0xabf6, 0xabf6 }, /* 0xabf7 */ { false, 0xabf7, 0xabf7 }, /* 0xabf8 */ { false, 0xabf8, 0xabf8 }, /* 0xabf9 */ { false, 0xabf9, 0xabf9 }, /* 0xabfa */ { false, 0xabfa, 0xabfa }, /* 0xabfb */ { false, 0xabfb, 0xabfb }, /* 0xabfc */ { false, 0xabfc, 0xabfc }, /* 0xabfd */ { false, 0xabfd, 0xabfd }, /* 0xabfe */ { false, 0xabfe, 0xabfe }, /* 0xabff */ { false, 0xabff, 0xabff }, /* 0xac00 */ { true, 0xac00, 0xac00 }, /* 0xac01 */ { true, 0xac01, 0xac01 }, /* 0xac02 */ { true, 0xac02, 0xac02 }, /* 0xac03 */ { true, 0xac03, 0xac03 }, /* 0xac04 */ { true, 0xac04, 0xac04 }, /* 0xac05 */ { true, 0xac05, 0xac05 }, /* 0xac06 */ { true, 0xac06, 0xac06 }, /* 0xac07 */ { true, 0xac07, 0xac07 }, /* 0xac08 */ { true, 0xac08, 0xac08 }, /* 0xac09 */ { true, 0xac09, 0xac09 }, /* 0xac0a */ { true, 0xac0a, 0xac0a }, /* 0xac0b */ { true, 0xac0b, 0xac0b }, /* 0xac0c */ { true, 0xac0c, 0xac0c }, /* 0xac0d */ { true, 0xac0d, 0xac0d }, /* 0xac0e */ { true, 0xac0e, 0xac0e }, /* 0xac0f */ { true, 0xac0f, 0xac0f }, /* 0xac10 */ { true, 0xac10, 0xac10 }, /* 0xac11 */ { true, 0xac11, 0xac11 }, /* 0xac12 */ { true, 0xac12, 0xac12 }, /* 0xac13 */ { true, 0xac13, 0xac13 }, /* 0xac14 */ { true, 0xac14, 0xac14 }, /* 0xac15 */ { true, 0xac15, 0xac15 }, /* 0xac16 */ { true, 0xac16, 0xac16 }, /* 0xac17 */ { true, 0xac17, 0xac17 }, /* 0xac18 */ { true, 0xac18, 0xac18 }, /* 0xac19 */ { true, 0xac19, 0xac19 }, /* 0xac1a */ { true, 0xac1a, 0xac1a }, /* 0xac1b */ { true, 0xac1b, 0xac1b }, /* 0xac1c */ { true, 0xac1c, 0xac1c }, /* 0xac1d */ { true, 0xac1d, 0xac1d }, /* 0xac1e */ { true, 0xac1e, 0xac1e }, /* 0xac1f */ { true, 0xac1f, 0xac1f }, /* 0xac20 */ { true, 0xac20, 0xac20 }, /* 0xac21 */ { true, 0xac21, 0xac21 }, /* 0xac22 */ { true, 0xac22, 0xac22 }, /* 0xac23 */ { true, 0xac23, 0xac23 }, /* 0xac24 */ { true, 0xac24, 0xac24 }, /* 0xac25 */ { true, 0xac25, 0xac25 }, /* 0xac26 */ { true, 0xac26, 0xac26 }, /* 0xac27 */ { true, 0xac27, 0xac27 }, /* 0xac28 */ { true, 0xac28, 0xac28 }, /* 0xac29 */ { true, 0xac29, 0xac29 }, /* 0xac2a */ { true, 0xac2a, 0xac2a }, /* 0xac2b */ { true, 0xac2b, 0xac2b }, /* 0xac2c */ { true, 0xac2c, 0xac2c }, /* 0xac2d */ { true, 0xac2d, 0xac2d }, /* 0xac2e */ { true, 0xac2e, 0xac2e }, /* 0xac2f */ { true, 0xac2f, 0xac2f }, /* 0xac30 */ { true, 0xac30, 0xac30 }, /* 0xac31 */ { true, 0xac31, 0xac31 }, /* 0xac32 */ { true, 0xac32, 0xac32 }, /* 0xac33 */ { true, 0xac33, 0xac33 }, /* 0xac34 */ { true, 0xac34, 0xac34 }, /* 0xac35 */ { true, 0xac35, 0xac35 }, /* 0xac36 */ { true, 0xac36, 0xac36 }, /* 0xac37 */ { true, 0xac37, 0xac37 }, /* 0xac38 */ { true, 0xac38, 0xac38 }, /* 0xac39 */ { true, 0xac39, 0xac39 }, /* 0xac3a */ { true, 0xac3a, 0xac3a }, /* 0xac3b */ { true, 0xac3b, 0xac3b }, /* 0xac3c */ { true, 0xac3c, 0xac3c }, /* 0xac3d */ { true, 0xac3d, 0xac3d }, /* 0xac3e */ { true, 0xac3e, 0xac3e }, /* 0xac3f */ { true, 0xac3f, 0xac3f }, /* 0xac40 */ { true, 0xac40, 0xac40 }, /* 0xac41 */ { true, 0xac41, 0xac41 }, /* 0xac42 */ { true, 0xac42, 0xac42 }, /* 0xac43 */ { true, 0xac43, 0xac43 }, /* 0xac44 */ { true, 0xac44, 0xac44 }, /* 0xac45 */ { true, 0xac45, 0xac45 }, /* 0xac46 */ { true, 0xac46, 0xac46 }, /* 0xac47 */ { true, 0xac47, 0xac47 }, /* 0xac48 */ { true, 0xac48, 0xac48 }, /* 0xac49 */ { true, 0xac49, 0xac49 }, /* 0xac4a */ { true, 0xac4a, 0xac4a }, /* 0xac4b */ { true, 0xac4b, 0xac4b }, /* 0xac4c */ { true, 0xac4c, 0xac4c }, /* 0xac4d */ { true, 0xac4d, 0xac4d }, /* 0xac4e */ { true, 0xac4e, 0xac4e }, /* 0xac4f */ { true, 0xac4f, 0xac4f }, /* 0xac50 */ { true, 0xac50, 0xac50 }, /* 0xac51 */ { true, 0xac51, 0xac51 }, /* 0xac52 */ { true, 0xac52, 0xac52 }, /* 0xac53 */ { true, 0xac53, 0xac53 }, /* 0xac54 */ { true, 0xac54, 0xac54 }, /* 0xac55 */ { true, 0xac55, 0xac55 }, /* 0xac56 */ { true, 0xac56, 0xac56 }, /* 0xac57 */ { true, 0xac57, 0xac57 }, /* 0xac58 */ { true, 0xac58, 0xac58 }, /* 0xac59 */ { true, 0xac59, 0xac59 }, /* 0xac5a */ { true, 0xac5a, 0xac5a }, /* 0xac5b */ { true, 0xac5b, 0xac5b }, /* 0xac5c */ { true, 0xac5c, 0xac5c }, /* 0xac5d */ { true, 0xac5d, 0xac5d }, /* 0xac5e */ { true, 0xac5e, 0xac5e }, /* 0xac5f */ { true, 0xac5f, 0xac5f }, /* 0xac60 */ { true, 0xac60, 0xac60 }, /* 0xac61 */ { true, 0xac61, 0xac61 }, /* 0xac62 */ { true, 0xac62, 0xac62 }, /* 0xac63 */ { true, 0xac63, 0xac63 }, /* 0xac64 */ { true, 0xac64, 0xac64 }, /* 0xac65 */ { true, 0xac65, 0xac65 }, /* 0xac66 */ { true, 0xac66, 0xac66 }, /* 0xac67 */ { true, 0xac67, 0xac67 }, /* 0xac68 */ { true, 0xac68, 0xac68 }, /* 0xac69 */ { true, 0xac69, 0xac69 }, /* 0xac6a */ { true, 0xac6a, 0xac6a }, /* 0xac6b */ { true, 0xac6b, 0xac6b }, /* 0xac6c */ { true, 0xac6c, 0xac6c }, /* 0xac6d */ { true, 0xac6d, 0xac6d }, /* 0xac6e */ { true, 0xac6e, 0xac6e }, /* 0xac6f */ { true, 0xac6f, 0xac6f }, /* 0xac70 */ { true, 0xac70, 0xac70 }, /* 0xac71 */ { true, 0xac71, 0xac71 }, /* 0xac72 */ { true, 0xac72, 0xac72 }, /* 0xac73 */ { true, 0xac73, 0xac73 }, /* 0xac74 */ { true, 0xac74, 0xac74 }, /* 0xac75 */ { true, 0xac75, 0xac75 }, /* 0xac76 */ { true, 0xac76, 0xac76 }, /* 0xac77 */ { true, 0xac77, 0xac77 }, /* 0xac78 */ { true, 0xac78, 0xac78 }, /* 0xac79 */ { true, 0xac79, 0xac79 }, /* 0xac7a */ { true, 0xac7a, 0xac7a }, /* 0xac7b */ { true, 0xac7b, 0xac7b }, /* 0xac7c */ { true, 0xac7c, 0xac7c }, /* 0xac7d */ { true, 0xac7d, 0xac7d }, /* 0xac7e */ { true, 0xac7e, 0xac7e }, /* 0xac7f */ { true, 0xac7f, 0xac7f }, /* 0xac80 */ { true, 0xac80, 0xac80 }, /* 0xac81 */ { true, 0xac81, 0xac81 }, /* 0xac82 */ { true, 0xac82, 0xac82 }, /* 0xac83 */ { true, 0xac83, 0xac83 }, /* 0xac84 */ { true, 0xac84, 0xac84 }, /* 0xac85 */ { true, 0xac85, 0xac85 }, /* 0xac86 */ { true, 0xac86, 0xac86 }, /* 0xac87 */ { true, 0xac87, 0xac87 }, /* 0xac88 */ { true, 0xac88, 0xac88 }, /* 0xac89 */ { true, 0xac89, 0xac89 }, /* 0xac8a */ { true, 0xac8a, 0xac8a }, /* 0xac8b */ { true, 0xac8b, 0xac8b }, /* 0xac8c */ { true, 0xac8c, 0xac8c }, /* 0xac8d */ { true, 0xac8d, 0xac8d }, /* 0xac8e */ { true, 0xac8e, 0xac8e }, /* 0xac8f */ { true, 0xac8f, 0xac8f }, /* 0xac90 */ { true, 0xac90, 0xac90 }, /* 0xac91 */ { true, 0xac91, 0xac91 }, /* 0xac92 */ { true, 0xac92, 0xac92 }, /* 0xac93 */ { true, 0xac93, 0xac93 }, /* 0xac94 */ { true, 0xac94, 0xac94 }, /* 0xac95 */ { true, 0xac95, 0xac95 }, /* 0xac96 */ { true, 0xac96, 0xac96 }, /* 0xac97 */ { true, 0xac97, 0xac97 }, /* 0xac98 */ { true, 0xac98, 0xac98 }, /* 0xac99 */ { true, 0xac99, 0xac99 }, /* 0xac9a */ { true, 0xac9a, 0xac9a }, /* 0xac9b */ { true, 0xac9b, 0xac9b }, /* 0xac9c */ { true, 0xac9c, 0xac9c }, /* 0xac9d */ { true, 0xac9d, 0xac9d }, /* 0xac9e */ { true, 0xac9e, 0xac9e }, /* 0xac9f */ { true, 0xac9f, 0xac9f }, /* 0xaca0 */ { true, 0xaca0, 0xaca0 }, /* 0xaca1 */ { true, 0xaca1, 0xaca1 }, /* 0xaca2 */ { true, 0xaca2, 0xaca2 }, /* 0xaca3 */ { true, 0xaca3, 0xaca3 }, /* 0xaca4 */ { true, 0xaca4, 0xaca4 }, /* 0xaca5 */ { true, 0xaca5, 0xaca5 }, /* 0xaca6 */ { true, 0xaca6, 0xaca6 }, /* 0xaca7 */ { true, 0xaca7, 0xaca7 }, /* 0xaca8 */ { true, 0xaca8, 0xaca8 }, /* 0xaca9 */ { true, 0xaca9, 0xaca9 }, /* 0xacaa */ { true, 0xacaa, 0xacaa }, /* 0xacab */ { true, 0xacab, 0xacab }, /* 0xacac */ { true, 0xacac, 0xacac }, /* 0xacad */ { true, 0xacad, 0xacad }, /* 0xacae */ { true, 0xacae, 0xacae }, /* 0xacaf */ { true, 0xacaf, 0xacaf }, /* 0xacb0 */ { true, 0xacb0, 0xacb0 }, /* 0xacb1 */ { true, 0xacb1, 0xacb1 }, /* 0xacb2 */ { true, 0xacb2, 0xacb2 }, /* 0xacb3 */ { true, 0xacb3, 0xacb3 }, /* 0xacb4 */ { true, 0xacb4, 0xacb4 }, /* 0xacb5 */ { true, 0xacb5, 0xacb5 }, /* 0xacb6 */ { true, 0xacb6, 0xacb6 }, /* 0xacb7 */ { true, 0xacb7, 0xacb7 }, /* 0xacb8 */ { true, 0xacb8, 0xacb8 }, /* 0xacb9 */ { true, 0xacb9, 0xacb9 }, /* 0xacba */ { true, 0xacba, 0xacba }, /* 0xacbb */ { true, 0xacbb, 0xacbb }, /* 0xacbc */ { true, 0xacbc, 0xacbc }, /* 0xacbd */ { true, 0xacbd, 0xacbd }, /* 0xacbe */ { true, 0xacbe, 0xacbe }, /* 0xacbf */ { true, 0xacbf, 0xacbf }, /* 0xacc0 */ { true, 0xacc0, 0xacc0 }, /* 0xacc1 */ { true, 0xacc1, 0xacc1 }, /* 0xacc2 */ { true, 0xacc2, 0xacc2 }, /* 0xacc3 */ { true, 0xacc3, 0xacc3 }, /* 0xacc4 */ { true, 0xacc4, 0xacc4 }, /* 0xacc5 */ { true, 0xacc5, 0xacc5 }, /* 0xacc6 */ { true, 0xacc6, 0xacc6 }, /* 0xacc7 */ { true, 0xacc7, 0xacc7 }, /* 0xacc8 */ { true, 0xacc8, 0xacc8 }, /* 0xacc9 */ { true, 0xacc9, 0xacc9 }, /* 0xacca */ { true, 0xacca, 0xacca }, /* 0xaccb */ { true, 0xaccb, 0xaccb }, /* 0xaccc */ { true, 0xaccc, 0xaccc }, /* 0xaccd */ { true, 0xaccd, 0xaccd }, /* 0xacce */ { true, 0xacce, 0xacce }, /* 0xaccf */ { true, 0xaccf, 0xaccf }, /* 0xacd0 */ { true, 0xacd0, 0xacd0 }, /* 0xacd1 */ { true, 0xacd1, 0xacd1 }, /* 0xacd2 */ { true, 0xacd2, 0xacd2 }, /* 0xacd3 */ { true, 0xacd3, 0xacd3 }, /* 0xacd4 */ { true, 0xacd4, 0xacd4 }, /* 0xacd5 */ { true, 0xacd5, 0xacd5 }, /* 0xacd6 */ { true, 0xacd6, 0xacd6 }, /* 0xacd7 */ { true, 0xacd7, 0xacd7 }, /* 0xacd8 */ { true, 0xacd8, 0xacd8 }, /* 0xacd9 */ { true, 0xacd9, 0xacd9 }, /* 0xacda */ { true, 0xacda, 0xacda }, /* 0xacdb */ { true, 0xacdb, 0xacdb }, /* 0xacdc */ { true, 0xacdc, 0xacdc }, /* 0xacdd */ { true, 0xacdd, 0xacdd }, /* 0xacde */ { true, 0xacde, 0xacde }, /* 0xacdf */ { true, 0xacdf, 0xacdf }, /* 0xace0 */ { true, 0xace0, 0xace0 }, /* 0xace1 */ { true, 0xace1, 0xace1 }, /* 0xace2 */ { true, 0xace2, 0xace2 }, /* 0xace3 */ { true, 0xace3, 0xace3 }, /* 0xace4 */ { true, 0xace4, 0xace4 }, /* 0xace5 */ { true, 0xace5, 0xace5 }, /* 0xace6 */ { true, 0xace6, 0xace6 }, /* 0xace7 */ { true, 0xace7, 0xace7 }, /* 0xace8 */ { true, 0xace8, 0xace8 }, /* 0xace9 */ { true, 0xace9, 0xace9 }, /* 0xacea */ { true, 0xacea, 0xacea }, /* 0xaceb */ { true, 0xaceb, 0xaceb }, /* 0xacec */ { true, 0xacec, 0xacec }, /* 0xaced */ { true, 0xaced, 0xaced }, /* 0xacee */ { true, 0xacee, 0xacee }, /* 0xacef */ { true, 0xacef, 0xacef }, /* 0xacf0 */ { true, 0xacf0, 0xacf0 }, /* 0xacf1 */ { true, 0xacf1, 0xacf1 }, /* 0xacf2 */ { true, 0xacf2, 0xacf2 }, /* 0xacf3 */ { true, 0xacf3, 0xacf3 }, /* 0xacf4 */ { true, 0xacf4, 0xacf4 }, /* 0xacf5 */ { true, 0xacf5, 0xacf5 }, /* 0xacf6 */ { true, 0xacf6, 0xacf6 }, /* 0xacf7 */ { true, 0xacf7, 0xacf7 }, /* 0xacf8 */ { true, 0xacf8, 0xacf8 }, /* 0xacf9 */ { true, 0xacf9, 0xacf9 }, /* 0xacfa */ { true, 0xacfa, 0xacfa }, /* 0xacfb */ { true, 0xacfb, 0xacfb }, /* 0xacfc */ { true, 0xacfc, 0xacfc }, /* 0xacfd */ { true, 0xacfd, 0xacfd }, /* 0xacfe */ { true, 0xacfe, 0xacfe }, /* 0xacff */ { true, 0xacff, 0xacff }, /* 0xad00 */ { true, 0xad00, 0xad00 }, /* 0xad01 */ { true, 0xad01, 0xad01 }, /* 0xad02 */ { true, 0xad02, 0xad02 }, /* 0xad03 */ { true, 0xad03, 0xad03 }, /* 0xad04 */ { true, 0xad04, 0xad04 }, /* 0xad05 */ { true, 0xad05, 0xad05 }, /* 0xad06 */ { true, 0xad06, 0xad06 }, /* 0xad07 */ { true, 0xad07, 0xad07 }, /* 0xad08 */ { true, 0xad08, 0xad08 }, /* 0xad09 */ { true, 0xad09, 0xad09 }, /* 0xad0a */ { true, 0xad0a, 0xad0a }, /* 0xad0b */ { true, 0xad0b, 0xad0b }, /* 0xad0c */ { true, 0xad0c, 0xad0c }, /* 0xad0d */ { true, 0xad0d, 0xad0d }, /* 0xad0e */ { true, 0xad0e, 0xad0e }, /* 0xad0f */ { true, 0xad0f, 0xad0f }, /* 0xad10 */ { true, 0xad10, 0xad10 }, /* 0xad11 */ { true, 0xad11, 0xad11 }, /* 0xad12 */ { true, 0xad12, 0xad12 }, /* 0xad13 */ { true, 0xad13, 0xad13 }, /* 0xad14 */ { true, 0xad14, 0xad14 }, /* 0xad15 */ { true, 0xad15, 0xad15 }, /* 0xad16 */ { true, 0xad16, 0xad16 }, /* 0xad17 */ { true, 0xad17, 0xad17 }, /* 0xad18 */ { true, 0xad18, 0xad18 }, /* 0xad19 */ { true, 0xad19, 0xad19 }, /* 0xad1a */ { true, 0xad1a, 0xad1a }, /* 0xad1b */ { true, 0xad1b, 0xad1b }, /* 0xad1c */ { true, 0xad1c, 0xad1c }, /* 0xad1d */ { true, 0xad1d, 0xad1d }, /* 0xad1e */ { true, 0xad1e, 0xad1e }, /* 0xad1f */ { true, 0xad1f, 0xad1f }, /* 0xad20 */ { true, 0xad20, 0xad20 }, /* 0xad21 */ { true, 0xad21, 0xad21 }, /* 0xad22 */ { true, 0xad22, 0xad22 }, /* 0xad23 */ { true, 0xad23, 0xad23 }, /* 0xad24 */ { true, 0xad24, 0xad24 }, /* 0xad25 */ { true, 0xad25, 0xad25 }, /* 0xad26 */ { true, 0xad26, 0xad26 }, /* 0xad27 */ { true, 0xad27, 0xad27 }, /* 0xad28 */ { true, 0xad28, 0xad28 }, /* 0xad29 */ { true, 0xad29, 0xad29 }, /* 0xad2a */ { true, 0xad2a, 0xad2a }, /* 0xad2b */ { true, 0xad2b, 0xad2b }, /* 0xad2c */ { true, 0xad2c, 0xad2c }, /* 0xad2d */ { true, 0xad2d, 0xad2d }, /* 0xad2e */ { true, 0xad2e, 0xad2e }, /* 0xad2f */ { true, 0xad2f, 0xad2f }, /* 0xad30 */ { true, 0xad30, 0xad30 }, /* 0xad31 */ { true, 0xad31, 0xad31 }, /* 0xad32 */ { true, 0xad32, 0xad32 }, /* 0xad33 */ { true, 0xad33, 0xad33 }, /* 0xad34 */ { true, 0xad34, 0xad34 }, /* 0xad35 */ { true, 0xad35, 0xad35 }, /* 0xad36 */ { true, 0xad36, 0xad36 }, /* 0xad37 */ { true, 0xad37, 0xad37 }, /* 0xad38 */ { true, 0xad38, 0xad38 }, /* 0xad39 */ { true, 0xad39, 0xad39 }, /* 0xad3a */ { true, 0xad3a, 0xad3a }, /* 0xad3b */ { true, 0xad3b, 0xad3b }, /* 0xad3c */ { true, 0xad3c, 0xad3c }, /* 0xad3d */ { true, 0xad3d, 0xad3d }, /* 0xad3e */ { true, 0xad3e, 0xad3e }, /* 0xad3f */ { true, 0xad3f, 0xad3f }, /* 0xad40 */ { true, 0xad40, 0xad40 }, /* 0xad41 */ { true, 0xad41, 0xad41 }, /* 0xad42 */ { true, 0xad42, 0xad42 }, /* 0xad43 */ { true, 0xad43, 0xad43 }, /* 0xad44 */ { true, 0xad44, 0xad44 }, /* 0xad45 */ { true, 0xad45, 0xad45 }, /* 0xad46 */ { true, 0xad46, 0xad46 }, /* 0xad47 */ { true, 0xad47, 0xad47 }, /* 0xad48 */ { true, 0xad48, 0xad48 }, /* 0xad49 */ { true, 0xad49, 0xad49 }, /* 0xad4a */ { true, 0xad4a, 0xad4a }, /* 0xad4b */ { true, 0xad4b, 0xad4b }, /* 0xad4c */ { true, 0xad4c, 0xad4c }, /* 0xad4d */ { true, 0xad4d, 0xad4d }, /* 0xad4e */ { true, 0xad4e, 0xad4e }, /* 0xad4f */ { true, 0xad4f, 0xad4f }, /* 0xad50 */ { true, 0xad50, 0xad50 }, /* 0xad51 */ { true, 0xad51, 0xad51 }, /* 0xad52 */ { true, 0xad52, 0xad52 }, /* 0xad53 */ { true, 0xad53, 0xad53 }, /* 0xad54 */ { true, 0xad54, 0xad54 }, /* 0xad55 */ { true, 0xad55, 0xad55 }, /* 0xad56 */ { true, 0xad56, 0xad56 }, /* 0xad57 */ { true, 0xad57, 0xad57 }, /* 0xad58 */ { true, 0xad58, 0xad58 }, /* 0xad59 */ { true, 0xad59, 0xad59 }, /* 0xad5a */ { true, 0xad5a, 0xad5a }, /* 0xad5b */ { true, 0xad5b, 0xad5b }, /* 0xad5c */ { true, 0xad5c, 0xad5c }, /* 0xad5d */ { true, 0xad5d, 0xad5d }, /* 0xad5e */ { true, 0xad5e, 0xad5e }, /* 0xad5f */ { true, 0xad5f, 0xad5f }, /* 0xad60 */ { true, 0xad60, 0xad60 }, /* 0xad61 */ { true, 0xad61, 0xad61 }, /* 0xad62 */ { true, 0xad62, 0xad62 }, /* 0xad63 */ { true, 0xad63, 0xad63 }, /* 0xad64 */ { true, 0xad64, 0xad64 }, /* 0xad65 */ { true, 0xad65, 0xad65 }, /* 0xad66 */ { true, 0xad66, 0xad66 }, /* 0xad67 */ { true, 0xad67, 0xad67 }, /* 0xad68 */ { true, 0xad68, 0xad68 }, /* 0xad69 */ { true, 0xad69, 0xad69 }, /* 0xad6a */ { true, 0xad6a, 0xad6a }, /* 0xad6b */ { true, 0xad6b, 0xad6b }, /* 0xad6c */ { true, 0xad6c, 0xad6c }, /* 0xad6d */ { true, 0xad6d, 0xad6d }, /* 0xad6e */ { true, 0xad6e, 0xad6e }, /* 0xad6f */ { true, 0xad6f, 0xad6f }, /* 0xad70 */ { true, 0xad70, 0xad70 }, /* 0xad71 */ { true, 0xad71, 0xad71 }, /* 0xad72 */ { true, 0xad72, 0xad72 }, /* 0xad73 */ { true, 0xad73, 0xad73 }, /* 0xad74 */ { true, 0xad74, 0xad74 }, /* 0xad75 */ { true, 0xad75, 0xad75 }, /* 0xad76 */ { true, 0xad76, 0xad76 }, /* 0xad77 */ { true, 0xad77, 0xad77 }, /* 0xad78 */ { true, 0xad78, 0xad78 }, /* 0xad79 */ { true, 0xad79, 0xad79 }, /* 0xad7a */ { true, 0xad7a, 0xad7a }, /* 0xad7b */ { true, 0xad7b, 0xad7b }, /* 0xad7c */ { true, 0xad7c, 0xad7c }, /* 0xad7d */ { true, 0xad7d, 0xad7d }, /* 0xad7e */ { true, 0xad7e, 0xad7e }, /* 0xad7f */ { true, 0xad7f, 0xad7f }, /* 0xad80 */ { true, 0xad80, 0xad80 }, /* 0xad81 */ { true, 0xad81, 0xad81 }, /* 0xad82 */ { true, 0xad82, 0xad82 }, /* 0xad83 */ { true, 0xad83, 0xad83 }, /* 0xad84 */ { true, 0xad84, 0xad84 }, /* 0xad85 */ { true, 0xad85, 0xad85 }, /* 0xad86 */ { true, 0xad86, 0xad86 }, /* 0xad87 */ { true, 0xad87, 0xad87 }, /* 0xad88 */ { true, 0xad88, 0xad88 }, /* 0xad89 */ { true, 0xad89, 0xad89 }, /* 0xad8a */ { true, 0xad8a, 0xad8a }, /* 0xad8b */ { true, 0xad8b, 0xad8b }, /* 0xad8c */ { true, 0xad8c, 0xad8c }, /* 0xad8d */ { true, 0xad8d, 0xad8d }, /* 0xad8e */ { true, 0xad8e, 0xad8e }, /* 0xad8f */ { true, 0xad8f, 0xad8f }, /* 0xad90 */ { true, 0xad90, 0xad90 }, /* 0xad91 */ { true, 0xad91, 0xad91 }, /* 0xad92 */ { true, 0xad92, 0xad92 }, /* 0xad93 */ { true, 0xad93, 0xad93 }, /* 0xad94 */ { true, 0xad94, 0xad94 }, /* 0xad95 */ { true, 0xad95, 0xad95 }, /* 0xad96 */ { true, 0xad96, 0xad96 }, /* 0xad97 */ { true, 0xad97, 0xad97 }, /* 0xad98 */ { true, 0xad98, 0xad98 }, /* 0xad99 */ { true, 0xad99, 0xad99 }, /* 0xad9a */ { true, 0xad9a, 0xad9a }, /* 0xad9b */ { true, 0xad9b, 0xad9b }, /* 0xad9c */ { true, 0xad9c, 0xad9c }, /* 0xad9d */ { true, 0xad9d, 0xad9d }, /* 0xad9e */ { true, 0xad9e, 0xad9e }, /* 0xad9f */ { true, 0xad9f, 0xad9f }, /* 0xada0 */ { true, 0xada0, 0xada0 }, /* 0xada1 */ { true, 0xada1, 0xada1 }, /* 0xada2 */ { true, 0xada2, 0xada2 }, /* 0xada3 */ { true, 0xada3, 0xada3 }, /* 0xada4 */ { true, 0xada4, 0xada4 }, /* 0xada5 */ { true, 0xada5, 0xada5 }, /* 0xada6 */ { true, 0xada6, 0xada6 }, /* 0xada7 */ { true, 0xada7, 0xada7 }, /* 0xada8 */ { true, 0xada8, 0xada8 }, /* 0xada9 */ { true, 0xada9, 0xada9 }, /* 0xadaa */ { true, 0xadaa, 0xadaa }, /* 0xadab */ { true, 0xadab, 0xadab }, /* 0xadac */ { true, 0xadac, 0xadac }, /* 0xadad */ { true, 0xadad, 0xadad }, /* 0xadae */ { true, 0xadae, 0xadae }, /* 0xadaf */ { true, 0xadaf, 0xadaf }, /* 0xadb0 */ { true, 0xadb0, 0xadb0 }, /* 0xadb1 */ { true, 0xadb1, 0xadb1 }, /* 0xadb2 */ { true, 0xadb2, 0xadb2 }, /* 0xadb3 */ { true, 0xadb3, 0xadb3 }, /* 0xadb4 */ { true, 0xadb4, 0xadb4 }, /* 0xadb5 */ { true, 0xadb5, 0xadb5 }, /* 0xadb6 */ { true, 0xadb6, 0xadb6 }, /* 0xadb7 */ { true, 0xadb7, 0xadb7 }, /* 0xadb8 */ { true, 0xadb8, 0xadb8 }, /* 0xadb9 */ { true, 0xadb9, 0xadb9 }, /* 0xadba */ { true, 0xadba, 0xadba }, /* 0xadbb */ { true, 0xadbb, 0xadbb }, /* 0xadbc */ { true, 0xadbc, 0xadbc }, /* 0xadbd */ { true, 0xadbd, 0xadbd }, /* 0xadbe */ { true, 0xadbe, 0xadbe }, /* 0xadbf */ { true, 0xadbf, 0xadbf }, /* 0xadc0 */ { true, 0xadc0, 0xadc0 }, /* 0xadc1 */ { true, 0xadc1, 0xadc1 }, /* 0xadc2 */ { true, 0xadc2, 0xadc2 }, /* 0xadc3 */ { true, 0xadc3, 0xadc3 }, /* 0xadc4 */ { true, 0xadc4, 0xadc4 }, /* 0xadc5 */ { true, 0xadc5, 0xadc5 }, /* 0xadc6 */ { true, 0xadc6, 0xadc6 }, /* 0xadc7 */ { true, 0xadc7, 0xadc7 }, /* 0xadc8 */ { true, 0xadc8, 0xadc8 }, /* 0xadc9 */ { true, 0xadc9, 0xadc9 }, /* 0xadca */ { true, 0xadca, 0xadca }, /* 0xadcb */ { true, 0xadcb, 0xadcb }, /* 0xadcc */ { true, 0xadcc, 0xadcc }, /* 0xadcd */ { true, 0xadcd, 0xadcd }, /* 0xadce */ { true, 0xadce, 0xadce }, /* 0xadcf */ { true, 0xadcf, 0xadcf }, /* 0xadd0 */ { true, 0xadd0, 0xadd0 }, /* 0xadd1 */ { true, 0xadd1, 0xadd1 }, /* 0xadd2 */ { true, 0xadd2, 0xadd2 }, /* 0xadd3 */ { true, 0xadd3, 0xadd3 }, /* 0xadd4 */ { true, 0xadd4, 0xadd4 }, /* 0xadd5 */ { true, 0xadd5, 0xadd5 }, /* 0xadd6 */ { true, 0xadd6, 0xadd6 }, /* 0xadd7 */ { true, 0xadd7, 0xadd7 }, /* 0xadd8 */ { true, 0xadd8, 0xadd8 }, /* 0xadd9 */ { true, 0xadd9, 0xadd9 }, /* 0xadda */ { true, 0xadda, 0xadda }, /* 0xaddb */ { true, 0xaddb, 0xaddb }, /* 0xaddc */ { true, 0xaddc, 0xaddc }, /* 0xaddd */ { true, 0xaddd, 0xaddd }, /* 0xadde */ { true, 0xadde, 0xadde }, /* 0xaddf */ { true, 0xaddf, 0xaddf }, /* 0xade0 */ { true, 0xade0, 0xade0 }, /* 0xade1 */ { true, 0xade1, 0xade1 }, /* 0xade2 */ { true, 0xade2, 0xade2 }, /* 0xade3 */ { true, 0xade3, 0xade3 }, /* 0xade4 */ { true, 0xade4, 0xade4 }, /* 0xade5 */ { true, 0xade5, 0xade5 }, /* 0xade6 */ { true, 0xade6, 0xade6 }, /* 0xade7 */ { true, 0xade7, 0xade7 }, /* 0xade8 */ { true, 0xade8, 0xade8 }, /* 0xade9 */ { true, 0xade9, 0xade9 }, /* 0xadea */ { true, 0xadea, 0xadea }, /* 0xadeb */ { true, 0xadeb, 0xadeb }, /* 0xadec */ { true, 0xadec, 0xadec }, /* 0xaded */ { true, 0xaded, 0xaded }, /* 0xadee */ { true, 0xadee, 0xadee }, /* 0xadef */ { true, 0xadef, 0xadef }, /* 0xadf0 */ { true, 0xadf0, 0xadf0 }, /* 0xadf1 */ { true, 0xadf1, 0xadf1 }, /* 0xadf2 */ { true, 0xadf2, 0xadf2 }, /* 0xadf3 */ { true, 0xadf3, 0xadf3 }, /* 0xadf4 */ { true, 0xadf4, 0xadf4 }, /* 0xadf5 */ { true, 0xadf5, 0xadf5 }, /* 0xadf6 */ { true, 0xadf6, 0xadf6 }, /* 0xadf7 */ { true, 0xadf7, 0xadf7 }, /* 0xadf8 */ { true, 0xadf8, 0xadf8 }, /* 0xadf9 */ { true, 0xadf9, 0xadf9 }, /* 0xadfa */ { true, 0xadfa, 0xadfa }, /* 0xadfb */ { true, 0xadfb, 0xadfb }, /* 0xadfc */ { true, 0xadfc, 0xadfc }, /* 0xadfd */ { true, 0xadfd, 0xadfd }, /* 0xadfe */ { true, 0xadfe, 0xadfe }, /* 0xadff */ { true, 0xadff, 0xadff }, /* 0xae00 */ { true, 0xae00, 0xae00 }, /* 0xae01 */ { true, 0xae01, 0xae01 }, /* 0xae02 */ { true, 0xae02, 0xae02 }, /* 0xae03 */ { true, 0xae03, 0xae03 }, /* 0xae04 */ { true, 0xae04, 0xae04 }, /* 0xae05 */ { true, 0xae05, 0xae05 }, /* 0xae06 */ { true, 0xae06, 0xae06 }, /* 0xae07 */ { true, 0xae07, 0xae07 }, /* 0xae08 */ { true, 0xae08, 0xae08 }, /* 0xae09 */ { true, 0xae09, 0xae09 }, /* 0xae0a */ { true, 0xae0a, 0xae0a }, /* 0xae0b */ { true, 0xae0b, 0xae0b }, /* 0xae0c */ { true, 0xae0c, 0xae0c }, /* 0xae0d */ { true, 0xae0d, 0xae0d }, /* 0xae0e */ { true, 0xae0e, 0xae0e }, /* 0xae0f */ { true, 0xae0f, 0xae0f }, /* 0xae10 */ { true, 0xae10, 0xae10 }, /* 0xae11 */ { true, 0xae11, 0xae11 }, /* 0xae12 */ { true, 0xae12, 0xae12 }, /* 0xae13 */ { true, 0xae13, 0xae13 }, /* 0xae14 */ { true, 0xae14, 0xae14 }, /* 0xae15 */ { true, 0xae15, 0xae15 }, /* 0xae16 */ { true, 0xae16, 0xae16 }, /* 0xae17 */ { true, 0xae17, 0xae17 }, /* 0xae18 */ { true, 0xae18, 0xae18 }, /* 0xae19 */ { true, 0xae19, 0xae19 }, /* 0xae1a */ { true, 0xae1a, 0xae1a }, /* 0xae1b */ { true, 0xae1b, 0xae1b }, /* 0xae1c */ { true, 0xae1c, 0xae1c }, /* 0xae1d */ { true, 0xae1d, 0xae1d }, /* 0xae1e */ { true, 0xae1e, 0xae1e }, /* 0xae1f */ { true, 0xae1f, 0xae1f }, /* 0xae20 */ { true, 0xae20, 0xae20 }, /* 0xae21 */ { true, 0xae21, 0xae21 }, /* 0xae22 */ { true, 0xae22, 0xae22 }, /* 0xae23 */ { true, 0xae23, 0xae23 }, /* 0xae24 */ { true, 0xae24, 0xae24 }, /* 0xae25 */ { true, 0xae25, 0xae25 }, /* 0xae26 */ { true, 0xae26, 0xae26 }, /* 0xae27 */ { true, 0xae27, 0xae27 }, /* 0xae28 */ { true, 0xae28, 0xae28 }, /* 0xae29 */ { true, 0xae29, 0xae29 }, /* 0xae2a */ { true, 0xae2a, 0xae2a }, /* 0xae2b */ { true, 0xae2b, 0xae2b }, /* 0xae2c */ { true, 0xae2c, 0xae2c }, /* 0xae2d */ { true, 0xae2d, 0xae2d }, /* 0xae2e */ { true, 0xae2e, 0xae2e }, /* 0xae2f */ { true, 0xae2f, 0xae2f }, /* 0xae30 */ { true, 0xae30, 0xae30 }, /* 0xae31 */ { true, 0xae31, 0xae31 }, /* 0xae32 */ { true, 0xae32, 0xae32 }, /* 0xae33 */ { true, 0xae33, 0xae33 }, /* 0xae34 */ { true, 0xae34, 0xae34 }, /* 0xae35 */ { true, 0xae35, 0xae35 }, /* 0xae36 */ { true, 0xae36, 0xae36 }, /* 0xae37 */ { true, 0xae37, 0xae37 }, /* 0xae38 */ { true, 0xae38, 0xae38 }, /* 0xae39 */ { true, 0xae39, 0xae39 }, /* 0xae3a */ { true, 0xae3a, 0xae3a }, /* 0xae3b */ { true, 0xae3b, 0xae3b }, /* 0xae3c */ { true, 0xae3c, 0xae3c }, /* 0xae3d */ { true, 0xae3d, 0xae3d }, /* 0xae3e */ { true, 0xae3e, 0xae3e }, /* 0xae3f */ { true, 0xae3f, 0xae3f }, /* 0xae40 */ { true, 0xae40, 0xae40 }, /* 0xae41 */ { true, 0xae41, 0xae41 }, /* 0xae42 */ { true, 0xae42, 0xae42 }, /* 0xae43 */ { true, 0xae43, 0xae43 }, /* 0xae44 */ { true, 0xae44, 0xae44 }, /* 0xae45 */ { true, 0xae45, 0xae45 }, /* 0xae46 */ { true, 0xae46, 0xae46 }, /* 0xae47 */ { true, 0xae47, 0xae47 }, /* 0xae48 */ { true, 0xae48, 0xae48 }, /* 0xae49 */ { true, 0xae49, 0xae49 }, /* 0xae4a */ { true, 0xae4a, 0xae4a }, /* 0xae4b */ { true, 0xae4b, 0xae4b }, /* 0xae4c */ { true, 0xae4c, 0xae4c }, /* 0xae4d */ { true, 0xae4d, 0xae4d }, /* 0xae4e */ { true, 0xae4e, 0xae4e }, /* 0xae4f */ { true, 0xae4f, 0xae4f }, /* 0xae50 */ { true, 0xae50, 0xae50 }, /* 0xae51 */ { true, 0xae51, 0xae51 }, /* 0xae52 */ { true, 0xae52, 0xae52 }, /* 0xae53 */ { true, 0xae53, 0xae53 }, /* 0xae54 */ { true, 0xae54, 0xae54 }, /* 0xae55 */ { true, 0xae55, 0xae55 }, /* 0xae56 */ { true, 0xae56, 0xae56 }, /* 0xae57 */ { true, 0xae57, 0xae57 }, /* 0xae58 */ { true, 0xae58, 0xae58 }, /* 0xae59 */ { true, 0xae59, 0xae59 }, /* 0xae5a */ { true, 0xae5a, 0xae5a }, /* 0xae5b */ { true, 0xae5b, 0xae5b }, /* 0xae5c */ { true, 0xae5c, 0xae5c }, /* 0xae5d */ { true, 0xae5d, 0xae5d }, /* 0xae5e */ { true, 0xae5e, 0xae5e }, /* 0xae5f */ { true, 0xae5f, 0xae5f }, /* 0xae60 */ { true, 0xae60, 0xae60 }, /* 0xae61 */ { true, 0xae61, 0xae61 }, /* 0xae62 */ { true, 0xae62, 0xae62 }, /* 0xae63 */ { true, 0xae63, 0xae63 }, /* 0xae64 */ { true, 0xae64, 0xae64 }, /* 0xae65 */ { true, 0xae65, 0xae65 }, /* 0xae66 */ { true, 0xae66, 0xae66 }, /* 0xae67 */ { true, 0xae67, 0xae67 }, /* 0xae68 */ { true, 0xae68, 0xae68 }, /* 0xae69 */ { true, 0xae69, 0xae69 }, /* 0xae6a */ { true, 0xae6a, 0xae6a }, /* 0xae6b */ { true, 0xae6b, 0xae6b }, /* 0xae6c */ { true, 0xae6c, 0xae6c }, /* 0xae6d */ { true, 0xae6d, 0xae6d }, /* 0xae6e */ { true, 0xae6e, 0xae6e }, /* 0xae6f */ { true, 0xae6f, 0xae6f }, /* 0xae70 */ { true, 0xae70, 0xae70 }, /* 0xae71 */ { true, 0xae71, 0xae71 }, /* 0xae72 */ { true, 0xae72, 0xae72 }, /* 0xae73 */ { true, 0xae73, 0xae73 }, /* 0xae74 */ { true, 0xae74, 0xae74 }, /* 0xae75 */ { true, 0xae75, 0xae75 }, /* 0xae76 */ { true, 0xae76, 0xae76 }, /* 0xae77 */ { true, 0xae77, 0xae77 }, /* 0xae78 */ { true, 0xae78, 0xae78 }, /* 0xae79 */ { true, 0xae79, 0xae79 }, /* 0xae7a */ { true, 0xae7a, 0xae7a }, /* 0xae7b */ { true, 0xae7b, 0xae7b }, /* 0xae7c */ { true, 0xae7c, 0xae7c }, /* 0xae7d */ { true, 0xae7d, 0xae7d }, /* 0xae7e */ { true, 0xae7e, 0xae7e }, /* 0xae7f */ { true, 0xae7f, 0xae7f }, /* 0xae80 */ { true, 0xae80, 0xae80 }, /* 0xae81 */ { true, 0xae81, 0xae81 }, /* 0xae82 */ { true, 0xae82, 0xae82 }, /* 0xae83 */ { true, 0xae83, 0xae83 }, /* 0xae84 */ { true, 0xae84, 0xae84 }, /* 0xae85 */ { true, 0xae85, 0xae85 }, /* 0xae86 */ { true, 0xae86, 0xae86 }, /* 0xae87 */ { true, 0xae87, 0xae87 }, /* 0xae88 */ { true, 0xae88, 0xae88 }, /* 0xae89 */ { true, 0xae89, 0xae89 }, /* 0xae8a */ { true, 0xae8a, 0xae8a }, /* 0xae8b */ { true, 0xae8b, 0xae8b }, /* 0xae8c */ { true, 0xae8c, 0xae8c }, /* 0xae8d */ { true, 0xae8d, 0xae8d }, /* 0xae8e */ { true, 0xae8e, 0xae8e }, /* 0xae8f */ { true, 0xae8f, 0xae8f }, /* 0xae90 */ { true, 0xae90, 0xae90 }, /* 0xae91 */ { true, 0xae91, 0xae91 }, /* 0xae92 */ { true, 0xae92, 0xae92 }, /* 0xae93 */ { true, 0xae93, 0xae93 }, /* 0xae94 */ { true, 0xae94, 0xae94 }, /* 0xae95 */ { true, 0xae95, 0xae95 }, /* 0xae96 */ { true, 0xae96, 0xae96 }, /* 0xae97 */ { true, 0xae97, 0xae97 }, /* 0xae98 */ { true, 0xae98, 0xae98 }, /* 0xae99 */ { true, 0xae99, 0xae99 }, /* 0xae9a */ { true, 0xae9a, 0xae9a }, /* 0xae9b */ { true, 0xae9b, 0xae9b }, /* 0xae9c */ { true, 0xae9c, 0xae9c }, /* 0xae9d */ { true, 0xae9d, 0xae9d }, /* 0xae9e */ { true, 0xae9e, 0xae9e }, /* 0xae9f */ { true, 0xae9f, 0xae9f }, /* 0xaea0 */ { true, 0xaea0, 0xaea0 }, /* 0xaea1 */ { true, 0xaea1, 0xaea1 }, /* 0xaea2 */ { true, 0xaea2, 0xaea2 }, /* 0xaea3 */ { true, 0xaea3, 0xaea3 }, /* 0xaea4 */ { true, 0xaea4, 0xaea4 }, /* 0xaea5 */ { true, 0xaea5, 0xaea5 }, /* 0xaea6 */ { true, 0xaea6, 0xaea6 }, /* 0xaea7 */ { true, 0xaea7, 0xaea7 }, /* 0xaea8 */ { true, 0xaea8, 0xaea8 }, /* 0xaea9 */ { true, 0xaea9, 0xaea9 }, /* 0xaeaa */ { true, 0xaeaa, 0xaeaa }, /* 0xaeab */ { true, 0xaeab, 0xaeab }, /* 0xaeac */ { true, 0xaeac, 0xaeac }, /* 0xaead */ { true, 0xaead, 0xaead }, /* 0xaeae */ { true, 0xaeae, 0xaeae }, /* 0xaeaf */ { true, 0xaeaf, 0xaeaf }, /* 0xaeb0 */ { true, 0xaeb0, 0xaeb0 }, /* 0xaeb1 */ { true, 0xaeb1, 0xaeb1 }, /* 0xaeb2 */ { true, 0xaeb2, 0xaeb2 }, /* 0xaeb3 */ { true, 0xaeb3, 0xaeb3 }, /* 0xaeb4 */ { true, 0xaeb4, 0xaeb4 }, /* 0xaeb5 */ { true, 0xaeb5, 0xaeb5 }, /* 0xaeb6 */ { true, 0xaeb6, 0xaeb6 }, /* 0xaeb7 */ { true, 0xaeb7, 0xaeb7 }, /* 0xaeb8 */ { true, 0xaeb8, 0xaeb8 }, /* 0xaeb9 */ { true, 0xaeb9, 0xaeb9 }, /* 0xaeba */ { true, 0xaeba, 0xaeba }, /* 0xaebb */ { true, 0xaebb, 0xaebb }, /* 0xaebc */ { true, 0xaebc, 0xaebc }, /* 0xaebd */ { true, 0xaebd, 0xaebd }, /* 0xaebe */ { true, 0xaebe, 0xaebe }, /* 0xaebf */ { true, 0xaebf, 0xaebf }, /* 0xaec0 */ { true, 0xaec0, 0xaec0 }, /* 0xaec1 */ { true, 0xaec1, 0xaec1 }, /* 0xaec2 */ { true, 0xaec2, 0xaec2 }, /* 0xaec3 */ { true, 0xaec3, 0xaec3 }, /* 0xaec4 */ { true, 0xaec4, 0xaec4 }, /* 0xaec5 */ { true, 0xaec5, 0xaec5 }, /* 0xaec6 */ { true, 0xaec6, 0xaec6 }, /* 0xaec7 */ { true, 0xaec7, 0xaec7 }, /* 0xaec8 */ { true, 0xaec8, 0xaec8 }, /* 0xaec9 */ { true, 0xaec9, 0xaec9 }, /* 0xaeca */ { true, 0xaeca, 0xaeca }, /* 0xaecb */ { true, 0xaecb, 0xaecb }, /* 0xaecc */ { true, 0xaecc, 0xaecc }, /* 0xaecd */ { true, 0xaecd, 0xaecd }, /* 0xaece */ { true, 0xaece, 0xaece }, /* 0xaecf */ { true, 0xaecf, 0xaecf }, /* 0xaed0 */ { true, 0xaed0, 0xaed0 }, /* 0xaed1 */ { true, 0xaed1, 0xaed1 }, /* 0xaed2 */ { true, 0xaed2, 0xaed2 }, /* 0xaed3 */ { true, 0xaed3, 0xaed3 }, /* 0xaed4 */ { true, 0xaed4, 0xaed4 }, /* 0xaed5 */ { true, 0xaed5, 0xaed5 }, /* 0xaed6 */ { true, 0xaed6, 0xaed6 }, /* 0xaed7 */ { true, 0xaed7, 0xaed7 }, /* 0xaed8 */ { true, 0xaed8, 0xaed8 }, /* 0xaed9 */ { true, 0xaed9, 0xaed9 }, /* 0xaeda */ { true, 0xaeda, 0xaeda }, /* 0xaedb */ { true, 0xaedb, 0xaedb }, /* 0xaedc */ { true, 0xaedc, 0xaedc }, /* 0xaedd */ { true, 0xaedd, 0xaedd }, /* 0xaede */ { true, 0xaede, 0xaede }, /* 0xaedf */ { true, 0xaedf, 0xaedf }, /* 0xaee0 */ { true, 0xaee0, 0xaee0 }, /* 0xaee1 */ { true, 0xaee1, 0xaee1 }, /* 0xaee2 */ { true, 0xaee2, 0xaee2 }, /* 0xaee3 */ { true, 0xaee3, 0xaee3 }, /* 0xaee4 */ { true, 0xaee4, 0xaee4 }, /* 0xaee5 */ { true, 0xaee5, 0xaee5 }, /* 0xaee6 */ { true, 0xaee6, 0xaee6 }, /* 0xaee7 */ { true, 0xaee7, 0xaee7 }, /* 0xaee8 */ { true, 0xaee8, 0xaee8 }, /* 0xaee9 */ { true, 0xaee9, 0xaee9 }, /* 0xaeea */ { true, 0xaeea, 0xaeea }, /* 0xaeeb */ { true, 0xaeeb, 0xaeeb }, /* 0xaeec */ { true, 0xaeec, 0xaeec }, /* 0xaeed */ { true, 0xaeed, 0xaeed }, /* 0xaeee */ { true, 0xaeee, 0xaeee }, /* 0xaeef */ { true, 0xaeef, 0xaeef }, /* 0xaef0 */ { true, 0xaef0, 0xaef0 }, /* 0xaef1 */ { true, 0xaef1, 0xaef1 }, /* 0xaef2 */ { true, 0xaef2, 0xaef2 }, /* 0xaef3 */ { true, 0xaef3, 0xaef3 }, /* 0xaef4 */ { true, 0xaef4, 0xaef4 }, /* 0xaef5 */ { true, 0xaef5, 0xaef5 }, /* 0xaef6 */ { true, 0xaef6, 0xaef6 }, /* 0xaef7 */ { true, 0xaef7, 0xaef7 }, /* 0xaef8 */ { true, 0xaef8, 0xaef8 }, /* 0xaef9 */ { true, 0xaef9, 0xaef9 }, /* 0xaefa */ { true, 0xaefa, 0xaefa }, /* 0xaefb */ { true, 0xaefb, 0xaefb }, /* 0xaefc */ { true, 0xaefc, 0xaefc }, /* 0xaefd */ { true, 0xaefd, 0xaefd }, /* 0xaefe */ { true, 0xaefe, 0xaefe }, /* 0xaeff */ { true, 0xaeff, 0xaeff }, /* 0xaf00 */ { true, 0xaf00, 0xaf00 }, /* 0xaf01 */ { true, 0xaf01, 0xaf01 }, /* 0xaf02 */ { true, 0xaf02, 0xaf02 }, /* 0xaf03 */ { true, 0xaf03, 0xaf03 }, /* 0xaf04 */ { true, 0xaf04, 0xaf04 }, /* 0xaf05 */ { true, 0xaf05, 0xaf05 }, /* 0xaf06 */ { true, 0xaf06, 0xaf06 }, /* 0xaf07 */ { true, 0xaf07, 0xaf07 }, /* 0xaf08 */ { true, 0xaf08, 0xaf08 }, /* 0xaf09 */ { true, 0xaf09, 0xaf09 }, /* 0xaf0a */ { true, 0xaf0a, 0xaf0a }, /* 0xaf0b */ { true, 0xaf0b, 0xaf0b }, /* 0xaf0c */ { true, 0xaf0c, 0xaf0c }, /* 0xaf0d */ { true, 0xaf0d, 0xaf0d }, /* 0xaf0e */ { true, 0xaf0e, 0xaf0e }, /* 0xaf0f */ { true, 0xaf0f, 0xaf0f }, /* 0xaf10 */ { true, 0xaf10, 0xaf10 }, /* 0xaf11 */ { true, 0xaf11, 0xaf11 }, /* 0xaf12 */ { true, 0xaf12, 0xaf12 }, /* 0xaf13 */ { true, 0xaf13, 0xaf13 }, /* 0xaf14 */ { true, 0xaf14, 0xaf14 }, /* 0xaf15 */ { true, 0xaf15, 0xaf15 }, /* 0xaf16 */ { true, 0xaf16, 0xaf16 }, /* 0xaf17 */ { true, 0xaf17, 0xaf17 }, /* 0xaf18 */ { true, 0xaf18, 0xaf18 }, /* 0xaf19 */ { true, 0xaf19, 0xaf19 }, /* 0xaf1a */ { true, 0xaf1a, 0xaf1a }, /* 0xaf1b */ { true, 0xaf1b, 0xaf1b }, /* 0xaf1c */ { true, 0xaf1c, 0xaf1c }, /* 0xaf1d */ { true, 0xaf1d, 0xaf1d }, /* 0xaf1e */ { true, 0xaf1e, 0xaf1e }, /* 0xaf1f */ { true, 0xaf1f, 0xaf1f }, /* 0xaf20 */ { true, 0xaf20, 0xaf20 }, /* 0xaf21 */ { true, 0xaf21, 0xaf21 }, /* 0xaf22 */ { true, 0xaf22, 0xaf22 }, /* 0xaf23 */ { true, 0xaf23, 0xaf23 }, /* 0xaf24 */ { true, 0xaf24, 0xaf24 }, /* 0xaf25 */ { true, 0xaf25, 0xaf25 }, /* 0xaf26 */ { true, 0xaf26, 0xaf26 }, /* 0xaf27 */ { true, 0xaf27, 0xaf27 }, /* 0xaf28 */ { true, 0xaf28, 0xaf28 }, /* 0xaf29 */ { true, 0xaf29, 0xaf29 }, /* 0xaf2a */ { true, 0xaf2a, 0xaf2a }, /* 0xaf2b */ { true, 0xaf2b, 0xaf2b }, /* 0xaf2c */ { true, 0xaf2c, 0xaf2c }, /* 0xaf2d */ { true, 0xaf2d, 0xaf2d }, /* 0xaf2e */ { true, 0xaf2e, 0xaf2e }, /* 0xaf2f */ { true, 0xaf2f, 0xaf2f }, /* 0xaf30 */ { true, 0xaf30, 0xaf30 }, /* 0xaf31 */ { true, 0xaf31, 0xaf31 }, /* 0xaf32 */ { true, 0xaf32, 0xaf32 }, /* 0xaf33 */ { true, 0xaf33, 0xaf33 }, /* 0xaf34 */ { true, 0xaf34, 0xaf34 }, /* 0xaf35 */ { true, 0xaf35, 0xaf35 }, /* 0xaf36 */ { true, 0xaf36, 0xaf36 }, /* 0xaf37 */ { true, 0xaf37, 0xaf37 }, /* 0xaf38 */ { true, 0xaf38, 0xaf38 }, /* 0xaf39 */ { true, 0xaf39, 0xaf39 }, /* 0xaf3a */ { true, 0xaf3a, 0xaf3a }, /* 0xaf3b */ { true, 0xaf3b, 0xaf3b }, /* 0xaf3c */ { true, 0xaf3c, 0xaf3c }, /* 0xaf3d */ { true, 0xaf3d, 0xaf3d }, /* 0xaf3e */ { true, 0xaf3e, 0xaf3e }, /* 0xaf3f */ { true, 0xaf3f, 0xaf3f }, /* 0xaf40 */ { true, 0xaf40, 0xaf40 }, /* 0xaf41 */ { true, 0xaf41, 0xaf41 }, /* 0xaf42 */ { true, 0xaf42, 0xaf42 }, /* 0xaf43 */ { true, 0xaf43, 0xaf43 }, /* 0xaf44 */ { true, 0xaf44, 0xaf44 }, /* 0xaf45 */ { true, 0xaf45, 0xaf45 }, /* 0xaf46 */ { true, 0xaf46, 0xaf46 }, /* 0xaf47 */ { true, 0xaf47, 0xaf47 }, /* 0xaf48 */ { true, 0xaf48, 0xaf48 }, /* 0xaf49 */ { true, 0xaf49, 0xaf49 }, /* 0xaf4a */ { true, 0xaf4a, 0xaf4a }, /* 0xaf4b */ { true, 0xaf4b, 0xaf4b }, /* 0xaf4c */ { true, 0xaf4c, 0xaf4c }, /* 0xaf4d */ { true, 0xaf4d, 0xaf4d }, /* 0xaf4e */ { true, 0xaf4e, 0xaf4e }, /* 0xaf4f */ { true, 0xaf4f, 0xaf4f }, /* 0xaf50 */ { true, 0xaf50, 0xaf50 }, /* 0xaf51 */ { true, 0xaf51, 0xaf51 }, /* 0xaf52 */ { true, 0xaf52, 0xaf52 }, /* 0xaf53 */ { true, 0xaf53, 0xaf53 }, /* 0xaf54 */ { true, 0xaf54, 0xaf54 }, /* 0xaf55 */ { true, 0xaf55, 0xaf55 }, /* 0xaf56 */ { true, 0xaf56, 0xaf56 }, /* 0xaf57 */ { true, 0xaf57, 0xaf57 }, /* 0xaf58 */ { true, 0xaf58, 0xaf58 }, /* 0xaf59 */ { true, 0xaf59, 0xaf59 }, /* 0xaf5a */ { true, 0xaf5a, 0xaf5a }, /* 0xaf5b */ { true, 0xaf5b, 0xaf5b }, /* 0xaf5c */ { true, 0xaf5c, 0xaf5c }, /* 0xaf5d */ { true, 0xaf5d, 0xaf5d }, /* 0xaf5e */ { true, 0xaf5e, 0xaf5e }, /* 0xaf5f */ { true, 0xaf5f, 0xaf5f }, /* 0xaf60 */ { true, 0xaf60, 0xaf60 }, /* 0xaf61 */ { true, 0xaf61, 0xaf61 }, /* 0xaf62 */ { true, 0xaf62, 0xaf62 }, /* 0xaf63 */ { true, 0xaf63, 0xaf63 }, /* 0xaf64 */ { true, 0xaf64, 0xaf64 }, /* 0xaf65 */ { true, 0xaf65, 0xaf65 }, /* 0xaf66 */ { true, 0xaf66, 0xaf66 }, /* 0xaf67 */ { true, 0xaf67, 0xaf67 }, /* 0xaf68 */ { true, 0xaf68, 0xaf68 }, /* 0xaf69 */ { true, 0xaf69, 0xaf69 }, /* 0xaf6a */ { true, 0xaf6a, 0xaf6a }, /* 0xaf6b */ { true, 0xaf6b, 0xaf6b }, /* 0xaf6c */ { true, 0xaf6c, 0xaf6c }, /* 0xaf6d */ { true, 0xaf6d, 0xaf6d }, /* 0xaf6e */ { true, 0xaf6e, 0xaf6e }, /* 0xaf6f */ { true, 0xaf6f, 0xaf6f }, /* 0xaf70 */ { true, 0xaf70, 0xaf70 }, /* 0xaf71 */ { true, 0xaf71, 0xaf71 }, /* 0xaf72 */ { true, 0xaf72, 0xaf72 }, /* 0xaf73 */ { true, 0xaf73, 0xaf73 }, /* 0xaf74 */ { true, 0xaf74, 0xaf74 }, /* 0xaf75 */ { true, 0xaf75, 0xaf75 }, /* 0xaf76 */ { true, 0xaf76, 0xaf76 }, /* 0xaf77 */ { true, 0xaf77, 0xaf77 }, /* 0xaf78 */ { true, 0xaf78, 0xaf78 }, /* 0xaf79 */ { true, 0xaf79, 0xaf79 }, /* 0xaf7a */ { true, 0xaf7a, 0xaf7a }, /* 0xaf7b */ { true, 0xaf7b, 0xaf7b }, /* 0xaf7c */ { true, 0xaf7c, 0xaf7c }, /* 0xaf7d */ { true, 0xaf7d, 0xaf7d }, /* 0xaf7e */ { true, 0xaf7e, 0xaf7e }, /* 0xaf7f */ { true, 0xaf7f, 0xaf7f }, /* 0xaf80 */ { true, 0xaf80, 0xaf80 }, /* 0xaf81 */ { true, 0xaf81, 0xaf81 }, /* 0xaf82 */ { true, 0xaf82, 0xaf82 }, /* 0xaf83 */ { true, 0xaf83, 0xaf83 }, /* 0xaf84 */ { true, 0xaf84, 0xaf84 }, /* 0xaf85 */ { true, 0xaf85, 0xaf85 }, /* 0xaf86 */ { true, 0xaf86, 0xaf86 }, /* 0xaf87 */ { true, 0xaf87, 0xaf87 }, /* 0xaf88 */ { true, 0xaf88, 0xaf88 }, /* 0xaf89 */ { true, 0xaf89, 0xaf89 }, /* 0xaf8a */ { true, 0xaf8a, 0xaf8a }, /* 0xaf8b */ { true, 0xaf8b, 0xaf8b }, /* 0xaf8c */ { true, 0xaf8c, 0xaf8c }, /* 0xaf8d */ { true, 0xaf8d, 0xaf8d }, /* 0xaf8e */ { true, 0xaf8e, 0xaf8e }, /* 0xaf8f */ { true, 0xaf8f, 0xaf8f }, /* 0xaf90 */ { true, 0xaf90, 0xaf90 }, /* 0xaf91 */ { true, 0xaf91, 0xaf91 }, /* 0xaf92 */ { true, 0xaf92, 0xaf92 }, /* 0xaf93 */ { true, 0xaf93, 0xaf93 }, /* 0xaf94 */ { true, 0xaf94, 0xaf94 }, /* 0xaf95 */ { true, 0xaf95, 0xaf95 }, /* 0xaf96 */ { true, 0xaf96, 0xaf96 }, /* 0xaf97 */ { true, 0xaf97, 0xaf97 }, /* 0xaf98 */ { true, 0xaf98, 0xaf98 }, /* 0xaf99 */ { true, 0xaf99, 0xaf99 }, /* 0xaf9a */ { true, 0xaf9a, 0xaf9a }, /* 0xaf9b */ { true, 0xaf9b, 0xaf9b }, /* 0xaf9c */ { true, 0xaf9c, 0xaf9c }, /* 0xaf9d */ { true, 0xaf9d, 0xaf9d }, /* 0xaf9e */ { true, 0xaf9e, 0xaf9e }, /* 0xaf9f */ { true, 0xaf9f, 0xaf9f }, /* 0xafa0 */ { true, 0xafa0, 0xafa0 }, /* 0xafa1 */ { true, 0xafa1, 0xafa1 }, /* 0xafa2 */ { true, 0xafa2, 0xafa2 }, /* 0xafa3 */ { true, 0xafa3, 0xafa3 }, /* 0xafa4 */ { true, 0xafa4, 0xafa4 }, /* 0xafa5 */ { true, 0xafa5, 0xafa5 }, /* 0xafa6 */ { true, 0xafa6, 0xafa6 }, /* 0xafa7 */ { true, 0xafa7, 0xafa7 }, /* 0xafa8 */ { true, 0xafa8, 0xafa8 }, /* 0xafa9 */ { true, 0xafa9, 0xafa9 }, /* 0xafaa */ { true, 0xafaa, 0xafaa }, /* 0xafab */ { true, 0xafab, 0xafab }, /* 0xafac */ { true, 0xafac, 0xafac }, /* 0xafad */ { true, 0xafad, 0xafad }, /* 0xafae */ { true, 0xafae, 0xafae }, /* 0xafaf */ { true, 0xafaf, 0xafaf }, /* 0xafb0 */ { true, 0xafb0, 0xafb0 }, /* 0xafb1 */ { true, 0xafb1, 0xafb1 }, /* 0xafb2 */ { true, 0xafb2, 0xafb2 }, /* 0xafb3 */ { true, 0xafb3, 0xafb3 }, /* 0xafb4 */ { true, 0xafb4, 0xafb4 }, /* 0xafb5 */ { true, 0xafb5, 0xafb5 }, /* 0xafb6 */ { true, 0xafb6, 0xafb6 }, /* 0xafb7 */ { true, 0xafb7, 0xafb7 }, /* 0xafb8 */ { true, 0xafb8, 0xafb8 }, /* 0xafb9 */ { true, 0xafb9, 0xafb9 }, /* 0xafba */ { true, 0xafba, 0xafba }, /* 0xafbb */ { true, 0xafbb, 0xafbb }, /* 0xafbc */ { true, 0xafbc, 0xafbc }, /* 0xafbd */ { true, 0xafbd, 0xafbd }, /* 0xafbe */ { true, 0xafbe, 0xafbe }, /* 0xafbf */ { true, 0xafbf, 0xafbf }, /* 0xafc0 */ { true, 0xafc0, 0xafc0 }, /* 0xafc1 */ { true, 0xafc1, 0xafc1 }, /* 0xafc2 */ { true, 0xafc2, 0xafc2 }, /* 0xafc3 */ { true, 0xafc3, 0xafc3 }, /* 0xafc4 */ { true, 0xafc4, 0xafc4 }, /* 0xafc5 */ { true, 0xafc5, 0xafc5 }, /* 0xafc6 */ { true, 0xafc6, 0xafc6 }, /* 0xafc7 */ { true, 0xafc7, 0xafc7 }, /* 0xafc8 */ { true, 0xafc8, 0xafc8 }, /* 0xafc9 */ { true, 0xafc9, 0xafc9 }, /* 0xafca */ { true, 0xafca, 0xafca }, /* 0xafcb */ { true, 0xafcb, 0xafcb }, /* 0xafcc */ { true, 0xafcc, 0xafcc }, /* 0xafcd */ { true, 0xafcd, 0xafcd }, /* 0xafce */ { true, 0xafce, 0xafce }, /* 0xafcf */ { true, 0xafcf, 0xafcf }, /* 0xafd0 */ { true, 0xafd0, 0xafd0 }, /* 0xafd1 */ { true, 0xafd1, 0xafd1 }, /* 0xafd2 */ { true, 0xafd2, 0xafd2 }, /* 0xafd3 */ { true, 0xafd3, 0xafd3 }, /* 0xafd4 */ { true, 0xafd4, 0xafd4 }, /* 0xafd5 */ { true, 0xafd5, 0xafd5 }, /* 0xafd6 */ { true, 0xafd6, 0xafd6 }, /* 0xafd7 */ { true, 0xafd7, 0xafd7 }, /* 0xafd8 */ { true, 0xafd8, 0xafd8 }, /* 0xafd9 */ { true, 0xafd9, 0xafd9 }, /* 0xafda */ { true, 0xafda, 0xafda }, /* 0xafdb */ { true, 0xafdb, 0xafdb }, /* 0xafdc */ { true, 0xafdc, 0xafdc }, /* 0xafdd */ { true, 0xafdd, 0xafdd }, /* 0xafde */ { true, 0xafde, 0xafde }, /* 0xafdf */ { true, 0xafdf, 0xafdf }, /* 0xafe0 */ { true, 0xafe0, 0xafe0 }, /* 0xafe1 */ { true, 0xafe1, 0xafe1 }, /* 0xafe2 */ { true, 0xafe2, 0xafe2 }, /* 0xafe3 */ { true, 0xafe3, 0xafe3 }, /* 0xafe4 */ { true, 0xafe4, 0xafe4 }, /* 0xafe5 */ { true, 0xafe5, 0xafe5 }, /* 0xafe6 */ { true, 0xafe6, 0xafe6 }, /* 0xafe7 */ { true, 0xafe7, 0xafe7 }, /* 0xafe8 */ { true, 0xafe8, 0xafe8 }, /* 0xafe9 */ { true, 0xafe9, 0xafe9 }, /* 0xafea */ { true, 0xafea, 0xafea }, /* 0xafeb */ { true, 0xafeb, 0xafeb }, /* 0xafec */ { true, 0xafec, 0xafec }, /* 0xafed */ { true, 0xafed, 0xafed }, /* 0xafee */ { true, 0xafee, 0xafee }, /* 0xafef */ { true, 0xafef, 0xafef }, /* 0xaff0 */ { true, 0xaff0, 0xaff0 }, /* 0xaff1 */ { true, 0xaff1, 0xaff1 }, /* 0xaff2 */ { true, 0xaff2, 0xaff2 }, /* 0xaff3 */ { true, 0xaff3, 0xaff3 }, /* 0xaff4 */ { true, 0xaff4, 0xaff4 }, /* 0xaff5 */ { true, 0xaff5, 0xaff5 }, /* 0xaff6 */ { true, 0xaff6, 0xaff6 }, /* 0xaff7 */ { true, 0xaff7, 0xaff7 }, /* 0xaff8 */ { true, 0xaff8, 0xaff8 }, /* 0xaff9 */ { true, 0xaff9, 0xaff9 }, /* 0xaffa */ { true, 0xaffa, 0xaffa }, /* 0xaffb */ { true, 0xaffb, 0xaffb }, /* 0xaffc */ { true, 0xaffc, 0xaffc }, /* 0xaffd */ { true, 0xaffd, 0xaffd }, /* 0xaffe */ { true, 0xaffe, 0xaffe }, /* 0xafff */ { true, 0xafff, 0xafff }, /* 0xb000 */ { true, 0xb000, 0xb000 }, /* 0xb001 */ { true, 0xb001, 0xb001 }, /* 0xb002 */ { true, 0xb002, 0xb002 }, /* 0xb003 */ { true, 0xb003, 0xb003 }, /* 0xb004 */ { true, 0xb004, 0xb004 }, /* 0xb005 */ { true, 0xb005, 0xb005 }, /* 0xb006 */ { true, 0xb006, 0xb006 }, /* 0xb007 */ { true, 0xb007, 0xb007 }, /* 0xb008 */ { true, 0xb008, 0xb008 }, /* 0xb009 */ { true, 0xb009, 0xb009 }, /* 0xb00a */ { true, 0xb00a, 0xb00a }, /* 0xb00b */ { true, 0xb00b, 0xb00b }, /* 0xb00c */ { true, 0xb00c, 0xb00c }, /* 0xb00d */ { true, 0xb00d, 0xb00d }, /* 0xb00e */ { true, 0xb00e, 0xb00e }, /* 0xb00f */ { true, 0xb00f, 0xb00f }, /* 0xb010 */ { true, 0xb010, 0xb010 }, /* 0xb011 */ { true, 0xb011, 0xb011 }, /* 0xb012 */ { true, 0xb012, 0xb012 }, /* 0xb013 */ { true, 0xb013, 0xb013 }, /* 0xb014 */ { true, 0xb014, 0xb014 }, /* 0xb015 */ { true, 0xb015, 0xb015 }, /* 0xb016 */ { true, 0xb016, 0xb016 }, /* 0xb017 */ { true, 0xb017, 0xb017 }, /* 0xb018 */ { true, 0xb018, 0xb018 }, /* 0xb019 */ { true, 0xb019, 0xb019 }, /* 0xb01a */ { true, 0xb01a, 0xb01a }, /* 0xb01b */ { true, 0xb01b, 0xb01b }, /* 0xb01c */ { true, 0xb01c, 0xb01c }, /* 0xb01d */ { true, 0xb01d, 0xb01d }, /* 0xb01e */ { true, 0xb01e, 0xb01e }, /* 0xb01f */ { true, 0xb01f, 0xb01f }, /* 0xb020 */ { true, 0xb020, 0xb020 }, /* 0xb021 */ { true, 0xb021, 0xb021 }, /* 0xb022 */ { true, 0xb022, 0xb022 }, /* 0xb023 */ { true, 0xb023, 0xb023 }, /* 0xb024 */ { true, 0xb024, 0xb024 }, /* 0xb025 */ { true, 0xb025, 0xb025 }, /* 0xb026 */ { true, 0xb026, 0xb026 }, /* 0xb027 */ { true, 0xb027, 0xb027 }, /* 0xb028 */ { true, 0xb028, 0xb028 }, /* 0xb029 */ { true, 0xb029, 0xb029 }, /* 0xb02a */ { true, 0xb02a, 0xb02a }, /* 0xb02b */ { true, 0xb02b, 0xb02b }, /* 0xb02c */ { true, 0xb02c, 0xb02c }, /* 0xb02d */ { true, 0xb02d, 0xb02d }, /* 0xb02e */ { true, 0xb02e, 0xb02e }, /* 0xb02f */ { true, 0xb02f, 0xb02f }, /* 0xb030 */ { true, 0xb030, 0xb030 }, /* 0xb031 */ { true, 0xb031, 0xb031 }, /* 0xb032 */ { true, 0xb032, 0xb032 }, /* 0xb033 */ { true, 0xb033, 0xb033 }, /* 0xb034 */ { true, 0xb034, 0xb034 }, /* 0xb035 */ { true, 0xb035, 0xb035 }, /* 0xb036 */ { true, 0xb036, 0xb036 }, /* 0xb037 */ { true, 0xb037, 0xb037 }, /* 0xb038 */ { true, 0xb038, 0xb038 }, /* 0xb039 */ { true, 0xb039, 0xb039 }, /* 0xb03a */ { true, 0xb03a, 0xb03a }, /* 0xb03b */ { true, 0xb03b, 0xb03b }, /* 0xb03c */ { true, 0xb03c, 0xb03c }, /* 0xb03d */ { true, 0xb03d, 0xb03d }, /* 0xb03e */ { true, 0xb03e, 0xb03e }, /* 0xb03f */ { true, 0xb03f, 0xb03f }, /* 0xb040 */ { true, 0xb040, 0xb040 }, /* 0xb041 */ { true, 0xb041, 0xb041 }, /* 0xb042 */ { true, 0xb042, 0xb042 }, /* 0xb043 */ { true, 0xb043, 0xb043 }, /* 0xb044 */ { true, 0xb044, 0xb044 }, /* 0xb045 */ { true, 0xb045, 0xb045 }, /* 0xb046 */ { true, 0xb046, 0xb046 }, /* 0xb047 */ { true, 0xb047, 0xb047 }, /* 0xb048 */ { true, 0xb048, 0xb048 }, /* 0xb049 */ { true, 0xb049, 0xb049 }, /* 0xb04a */ { true, 0xb04a, 0xb04a }, /* 0xb04b */ { true, 0xb04b, 0xb04b }, /* 0xb04c */ { true, 0xb04c, 0xb04c }, /* 0xb04d */ { true, 0xb04d, 0xb04d }, /* 0xb04e */ { true, 0xb04e, 0xb04e }, /* 0xb04f */ { true, 0xb04f, 0xb04f }, /* 0xb050 */ { true, 0xb050, 0xb050 }, /* 0xb051 */ { true, 0xb051, 0xb051 }, /* 0xb052 */ { true, 0xb052, 0xb052 }, /* 0xb053 */ { true, 0xb053, 0xb053 }, /* 0xb054 */ { true, 0xb054, 0xb054 }, /* 0xb055 */ { true, 0xb055, 0xb055 }, /* 0xb056 */ { true, 0xb056, 0xb056 }, /* 0xb057 */ { true, 0xb057, 0xb057 }, /* 0xb058 */ { true, 0xb058, 0xb058 }, /* 0xb059 */ { true, 0xb059, 0xb059 }, /* 0xb05a */ { true, 0xb05a, 0xb05a }, /* 0xb05b */ { true, 0xb05b, 0xb05b }, /* 0xb05c */ { true, 0xb05c, 0xb05c }, /* 0xb05d */ { true, 0xb05d, 0xb05d }, /* 0xb05e */ { true, 0xb05e, 0xb05e }, /* 0xb05f */ { true, 0xb05f, 0xb05f }, /* 0xb060 */ { true, 0xb060, 0xb060 }, /* 0xb061 */ { true, 0xb061, 0xb061 }, /* 0xb062 */ { true, 0xb062, 0xb062 }, /* 0xb063 */ { true, 0xb063, 0xb063 }, /* 0xb064 */ { true, 0xb064, 0xb064 }, /* 0xb065 */ { true, 0xb065, 0xb065 }, /* 0xb066 */ { true, 0xb066, 0xb066 }, /* 0xb067 */ { true, 0xb067, 0xb067 }, /* 0xb068 */ { true, 0xb068, 0xb068 }, /* 0xb069 */ { true, 0xb069, 0xb069 }, /* 0xb06a */ { true, 0xb06a, 0xb06a }, /* 0xb06b */ { true, 0xb06b, 0xb06b }, /* 0xb06c */ { true, 0xb06c, 0xb06c }, /* 0xb06d */ { true, 0xb06d, 0xb06d }, /* 0xb06e */ { true, 0xb06e, 0xb06e }, /* 0xb06f */ { true, 0xb06f, 0xb06f }, /* 0xb070 */ { true, 0xb070, 0xb070 }, /* 0xb071 */ { true, 0xb071, 0xb071 }, /* 0xb072 */ { true, 0xb072, 0xb072 }, /* 0xb073 */ { true, 0xb073, 0xb073 }, /* 0xb074 */ { true, 0xb074, 0xb074 }, /* 0xb075 */ { true, 0xb075, 0xb075 }, /* 0xb076 */ { true, 0xb076, 0xb076 }, /* 0xb077 */ { true, 0xb077, 0xb077 }, /* 0xb078 */ { true, 0xb078, 0xb078 }, /* 0xb079 */ { true, 0xb079, 0xb079 }, /* 0xb07a */ { true, 0xb07a, 0xb07a }, /* 0xb07b */ { true, 0xb07b, 0xb07b }, /* 0xb07c */ { true, 0xb07c, 0xb07c }, /* 0xb07d */ { true, 0xb07d, 0xb07d }, /* 0xb07e */ { true, 0xb07e, 0xb07e }, /* 0xb07f */ { true, 0xb07f, 0xb07f }, /* 0xb080 */ { true, 0xb080, 0xb080 }, /* 0xb081 */ { true, 0xb081, 0xb081 }, /* 0xb082 */ { true, 0xb082, 0xb082 }, /* 0xb083 */ { true, 0xb083, 0xb083 }, /* 0xb084 */ { true, 0xb084, 0xb084 }, /* 0xb085 */ { true, 0xb085, 0xb085 }, /* 0xb086 */ { true, 0xb086, 0xb086 }, /* 0xb087 */ { true, 0xb087, 0xb087 }, /* 0xb088 */ { true, 0xb088, 0xb088 }, /* 0xb089 */ { true, 0xb089, 0xb089 }, /* 0xb08a */ { true, 0xb08a, 0xb08a }, /* 0xb08b */ { true, 0xb08b, 0xb08b }, /* 0xb08c */ { true, 0xb08c, 0xb08c }, /* 0xb08d */ { true, 0xb08d, 0xb08d }, /* 0xb08e */ { true, 0xb08e, 0xb08e }, /* 0xb08f */ { true, 0xb08f, 0xb08f }, /* 0xb090 */ { true, 0xb090, 0xb090 }, /* 0xb091 */ { true, 0xb091, 0xb091 }, /* 0xb092 */ { true, 0xb092, 0xb092 }, /* 0xb093 */ { true, 0xb093, 0xb093 }, /* 0xb094 */ { true, 0xb094, 0xb094 }, /* 0xb095 */ { true, 0xb095, 0xb095 }, /* 0xb096 */ { true, 0xb096, 0xb096 }, /* 0xb097 */ { true, 0xb097, 0xb097 }, /* 0xb098 */ { true, 0xb098, 0xb098 }, /* 0xb099 */ { true, 0xb099, 0xb099 }, /* 0xb09a */ { true, 0xb09a, 0xb09a }, /* 0xb09b */ { true, 0xb09b, 0xb09b }, /* 0xb09c */ { true, 0xb09c, 0xb09c }, /* 0xb09d */ { true, 0xb09d, 0xb09d }, /* 0xb09e */ { true, 0xb09e, 0xb09e }, /* 0xb09f */ { true, 0xb09f, 0xb09f }, /* 0xb0a0 */ { true, 0xb0a0, 0xb0a0 }, /* 0xb0a1 */ { true, 0xb0a1, 0xb0a1 }, /* 0xb0a2 */ { true, 0xb0a2, 0xb0a2 }, /* 0xb0a3 */ { true, 0xb0a3, 0xb0a3 }, /* 0xb0a4 */ { true, 0xb0a4, 0xb0a4 }, /* 0xb0a5 */ { true, 0xb0a5, 0xb0a5 }, /* 0xb0a6 */ { true, 0xb0a6, 0xb0a6 }, /* 0xb0a7 */ { true, 0xb0a7, 0xb0a7 }, /* 0xb0a8 */ { true, 0xb0a8, 0xb0a8 }, /* 0xb0a9 */ { true, 0xb0a9, 0xb0a9 }, /* 0xb0aa */ { true, 0xb0aa, 0xb0aa }, /* 0xb0ab */ { true, 0xb0ab, 0xb0ab }, /* 0xb0ac */ { true, 0xb0ac, 0xb0ac }, /* 0xb0ad */ { true, 0xb0ad, 0xb0ad }, /* 0xb0ae */ { true, 0xb0ae, 0xb0ae }, /* 0xb0af */ { true, 0xb0af, 0xb0af }, /* 0xb0b0 */ { true, 0xb0b0, 0xb0b0 }, /* 0xb0b1 */ { true, 0xb0b1, 0xb0b1 }, /* 0xb0b2 */ { true, 0xb0b2, 0xb0b2 }, /* 0xb0b3 */ { true, 0xb0b3, 0xb0b3 }, /* 0xb0b4 */ { true, 0xb0b4, 0xb0b4 }, /* 0xb0b5 */ { true, 0xb0b5, 0xb0b5 }, /* 0xb0b6 */ { true, 0xb0b6, 0xb0b6 }, /* 0xb0b7 */ { true, 0xb0b7, 0xb0b7 }, /* 0xb0b8 */ { true, 0xb0b8, 0xb0b8 }, /* 0xb0b9 */ { true, 0xb0b9, 0xb0b9 }, /* 0xb0ba */ { true, 0xb0ba, 0xb0ba }, /* 0xb0bb */ { true, 0xb0bb, 0xb0bb }, /* 0xb0bc */ { true, 0xb0bc, 0xb0bc }, /* 0xb0bd */ { true, 0xb0bd, 0xb0bd }, /* 0xb0be */ { true, 0xb0be, 0xb0be }, /* 0xb0bf */ { true, 0xb0bf, 0xb0bf }, /* 0xb0c0 */ { true, 0xb0c0, 0xb0c0 }, /* 0xb0c1 */ { true, 0xb0c1, 0xb0c1 }, /* 0xb0c2 */ { true, 0xb0c2, 0xb0c2 }, /* 0xb0c3 */ { true, 0xb0c3, 0xb0c3 }, /* 0xb0c4 */ { true, 0xb0c4, 0xb0c4 }, /* 0xb0c5 */ { true, 0xb0c5, 0xb0c5 }, /* 0xb0c6 */ { true, 0xb0c6, 0xb0c6 }, /* 0xb0c7 */ { true, 0xb0c7, 0xb0c7 }, /* 0xb0c8 */ { true, 0xb0c8, 0xb0c8 }, /* 0xb0c9 */ { true, 0xb0c9, 0xb0c9 }, /* 0xb0ca */ { true, 0xb0ca, 0xb0ca }, /* 0xb0cb */ { true, 0xb0cb, 0xb0cb }, /* 0xb0cc */ { true, 0xb0cc, 0xb0cc }, /* 0xb0cd */ { true, 0xb0cd, 0xb0cd }, /* 0xb0ce */ { true, 0xb0ce, 0xb0ce }, /* 0xb0cf */ { true, 0xb0cf, 0xb0cf }, /* 0xb0d0 */ { true, 0xb0d0, 0xb0d0 }, /* 0xb0d1 */ { true, 0xb0d1, 0xb0d1 }, /* 0xb0d2 */ { true, 0xb0d2, 0xb0d2 }, /* 0xb0d3 */ { true, 0xb0d3, 0xb0d3 }, /* 0xb0d4 */ { true, 0xb0d4, 0xb0d4 }, /* 0xb0d5 */ { true, 0xb0d5, 0xb0d5 }, /* 0xb0d6 */ { true, 0xb0d6, 0xb0d6 }, /* 0xb0d7 */ { true, 0xb0d7, 0xb0d7 }, /* 0xb0d8 */ { true, 0xb0d8, 0xb0d8 }, /* 0xb0d9 */ { true, 0xb0d9, 0xb0d9 }, /* 0xb0da */ { true, 0xb0da, 0xb0da }, /* 0xb0db */ { true, 0xb0db, 0xb0db }, /* 0xb0dc */ { true, 0xb0dc, 0xb0dc }, /* 0xb0dd */ { true, 0xb0dd, 0xb0dd }, /* 0xb0de */ { true, 0xb0de, 0xb0de }, /* 0xb0df */ { true, 0xb0df, 0xb0df }, /* 0xb0e0 */ { true, 0xb0e0, 0xb0e0 }, /* 0xb0e1 */ { true, 0xb0e1, 0xb0e1 }, /* 0xb0e2 */ { true, 0xb0e2, 0xb0e2 }, /* 0xb0e3 */ { true, 0xb0e3, 0xb0e3 }, /* 0xb0e4 */ { true, 0xb0e4, 0xb0e4 }, /* 0xb0e5 */ { true, 0xb0e5, 0xb0e5 }, /* 0xb0e6 */ { true, 0xb0e6, 0xb0e6 }, /* 0xb0e7 */ { true, 0xb0e7, 0xb0e7 }, /* 0xb0e8 */ { true, 0xb0e8, 0xb0e8 }, /* 0xb0e9 */ { true, 0xb0e9, 0xb0e9 }, /* 0xb0ea */ { true, 0xb0ea, 0xb0ea }, /* 0xb0eb */ { true, 0xb0eb, 0xb0eb }, /* 0xb0ec */ { true, 0xb0ec, 0xb0ec }, /* 0xb0ed */ { true, 0xb0ed, 0xb0ed }, /* 0xb0ee */ { true, 0xb0ee, 0xb0ee }, /* 0xb0ef */ { true, 0xb0ef, 0xb0ef }, /* 0xb0f0 */ { true, 0xb0f0, 0xb0f0 }, /* 0xb0f1 */ { true, 0xb0f1, 0xb0f1 }, /* 0xb0f2 */ { true, 0xb0f2, 0xb0f2 }, /* 0xb0f3 */ { true, 0xb0f3, 0xb0f3 }, /* 0xb0f4 */ { true, 0xb0f4, 0xb0f4 }, /* 0xb0f5 */ { true, 0xb0f5, 0xb0f5 }, /* 0xb0f6 */ { true, 0xb0f6, 0xb0f6 }, /* 0xb0f7 */ { true, 0xb0f7, 0xb0f7 }, /* 0xb0f8 */ { true, 0xb0f8, 0xb0f8 }, /* 0xb0f9 */ { true, 0xb0f9, 0xb0f9 }, /* 0xb0fa */ { true, 0xb0fa, 0xb0fa }, /* 0xb0fb */ { true, 0xb0fb, 0xb0fb }, /* 0xb0fc */ { true, 0xb0fc, 0xb0fc }, /* 0xb0fd */ { true, 0xb0fd, 0xb0fd }, /* 0xb0fe */ { true, 0xb0fe, 0xb0fe }, /* 0xb0ff */ { true, 0xb0ff, 0xb0ff }, /* 0xb100 */ { true, 0xb100, 0xb100 }, /* 0xb101 */ { true, 0xb101, 0xb101 }, /* 0xb102 */ { true, 0xb102, 0xb102 }, /* 0xb103 */ { true, 0xb103, 0xb103 }, /* 0xb104 */ { true, 0xb104, 0xb104 }, /* 0xb105 */ { true, 0xb105, 0xb105 }, /* 0xb106 */ { true, 0xb106, 0xb106 }, /* 0xb107 */ { true, 0xb107, 0xb107 }, /* 0xb108 */ { true, 0xb108, 0xb108 }, /* 0xb109 */ { true, 0xb109, 0xb109 }, /* 0xb10a */ { true, 0xb10a, 0xb10a }, /* 0xb10b */ { true, 0xb10b, 0xb10b }, /* 0xb10c */ { true, 0xb10c, 0xb10c }, /* 0xb10d */ { true, 0xb10d, 0xb10d }, /* 0xb10e */ { true, 0xb10e, 0xb10e }, /* 0xb10f */ { true, 0xb10f, 0xb10f }, /* 0xb110 */ { true, 0xb110, 0xb110 }, /* 0xb111 */ { true, 0xb111, 0xb111 }, /* 0xb112 */ { true, 0xb112, 0xb112 }, /* 0xb113 */ { true, 0xb113, 0xb113 }, /* 0xb114 */ { true, 0xb114, 0xb114 }, /* 0xb115 */ { true, 0xb115, 0xb115 }, /* 0xb116 */ { true, 0xb116, 0xb116 }, /* 0xb117 */ { true, 0xb117, 0xb117 }, /* 0xb118 */ { true, 0xb118, 0xb118 }, /* 0xb119 */ { true, 0xb119, 0xb119 }, /* 0xb11a */ { true, 0xb11a, 0xb11a }, /* 0xb11b */ { true, 0xb11b, 0xb11b }, /* 0xb11c */ { true, 0xb11c, 0xb11c }, /* 0xb11d */ { true, 0xb11d, 0xb11d }, /* 0xb11e */ { true, 0xb11e, 0xb11e }, /* 0xb11f */ { true, 0xb11f, 0xb11f }, /* 0xb120 */ { true, 0xb120, 0xb120 }, /* 0xb121 */ { true, 0xb121, 0xb121 }, /* 0xb122 */ { true, 0xb122, 0xb122 }, /* 0xb123 */ { true, 0xb123, 0xb123 }, /* 0xb124 */ { true, 0xb124, 0xb124 }, /* 0xb125 */ { true, 0xb125, 0xb125 }, /* 0xb126 */ { true, 0xb126, 0xb126 }, /* 0xb127 */ { true, 0xb127, 0xb127 }, /* 0xb128 */ { true, 0xb128, 0xb128 }, /* 0xb129 */ { true, 0xb129, 0xb129 }, /* 0xb12a */ { true, 0xb12a, 0xb12a }, /* 0xb12b */ { true, 0xb12b, 0xb12b }, /* 0xb12c */ { true, 0xb12c, 0xb12c }, /* 0xb12d */ { true, 0xb12d, 0xb12d }, /* 0xb12e */ { true, 0xb12e, 0xb12e }, /* 0xb12f */ { true, 0xb12f, 0xb12f }, /* 0xb130 */ { true, 0xb130, 0xb130 }, /* 0xb131 */ { true, 0xb131, 0xb131 }, /* 0xb132 */ { true, 0xb132, 0xb132 }, /* 0xb133 */ { true, 0xb133, 0xb133 }, /* 0xb134 */ { true, 0xb134, 0xb134 }, /* 0xb135 */ { true, 0xb135, 0xb135 }, /* 0xb136 */ { true, 0xb136, 0xb136 }, /* 0xb137 */ { true, 0xb137, 0xb137 }, /* 0xb138 */ { true, 0xb138, 0xb138 }, /* 0xb139 */ { true, 0xb139, 0xb139 }, /* 0xb13a */ { true, 0xb13a, 0xb13a }, /* 0xb13b */ { true, 0xb13b, 0xb13b }, /* 0xb13c */ { true, 0xb13c, 0xb13c }, /* 0xb13d */ { true, 0xb13d, 0xb13d }, /* 0xb13e */ { true, 0xb13e, 0xb13e }, /* 0xb13f */ { true, 0xb13f, 0xb13f }, /* 0xb140 */ { true, 0xb140, 0xb140 }, /* 0xb141 */ { true, 0xb141, 0xb141 }, /* 0xb142 */ { true, 0xb142, 0xb142 }, /* 0xb143 */ { true, 0xb143, 0xb143 }, /* 0xb144 */ { true, 0xb144, 0xb144 }, /* 0xb145 */ { true, 0xb145, 0xb145 }, /* 0xb146 */ { true, 0xb146, 0xb146 }, /* 0xb147 */ { true, 0xb147, 0xb147 }, /* 0xb148 */ { true, 0xb148, 0xb148 }, /* 0xb149 */ { true, 0xb149, 0xb149 }, /* 0xb14a */ { true, 0xb14a, 0xb14a }, /* 0xb14b */ { true, 0xb14b, 0xb14b }, /* 0xb14c */ { true, 0xb14c, 0xb14c }, /* 0xb14d */ { true, 0xb14d, 0xb14d }, /* 0xb14e */ { true, 0xb14e, 0xb14e }, /* 0xb14f */ { true, 0xb14f, 0xb14f }, /* 0xb150 */ { true, 0xb150, 0xb150 }, /* 0xb151 */ { true, 0xb151, 0xb151 }, /* 0xb152 */ { true, 0xb152, 0xb152 }, /* 0xb153 */ { true, 0xb153, 0xb153 }, /* 0xb154 */ { true, 0xb154, 0xb154 }, /* 0xb155 */ { true, 0xb155, 0xb155 }, /* 0xb156 */ { true, 0xb156, 0xb156 }, /* 0xb157 */ { true, 0xb157, 0xb157 }, /* 0xb158 */ { true, 0xb158, 0xb158 }, /* 0xb159 */ { true, 0xb159, 0xb159 }, /* 0xb15a */ { true, 0xb15a, 0xb15a }, /* 0xb15b */ { true, 0xb15b, 0xb15b }, /* 0xb15c */ { true, 0xb15c, 0xb15c }, /* 0xb15d */ { true, 0xb15d, 0xb15d }, /* 0xb15e */ { true, 0xb15e, 0xb15e }, /* 0xb15f */ { true, 0xb15f, 0xb15f }, /* 0xb160 */ { true, 0xb160, 0xb160 }, /* 0xb161 */ { true, 0xb161, 0xb161 }, /* 0xb162 */ { true, 0xb162, 0xb162 }, /* 0xb163 */ { true, 0xb163, 0xb163 }, /* 0xb164 */ { true, 0xb164, 0xb164 }, /* 0xb165 */ { true, 0xb165, 0xb165 }, /* 0xb166 */ { true, 0xb166, 0xb166 }, /* 0xb167 */ { true, 0xb167, 0xb167 }, /* 0xb168 */ { true, 0xb168, 0xb168 }, /* 0xb169 */ { true, 0xb169, 0xb169 }, /* 0xb16a */ { true, 0xb16a, 0xb16a }, /* 0xb16b */ { true, 0xb16b, 0xb16b }, /* 0xb16c */ { true, 0xb16c, 0xb16c }, /* 0xb16d */ { true, 0xb16d, 0xb16d }, /* 0xb16e */ { true, 0xb16e, 0xb16e }, /* 0xb16f */ { true, 0xb16f, 0xb16f }, /* 0xb170 */ { true, 0xb170, 0xb170 }, /* 0xb171 */ { true, 0xb171, 0xb171 }, /* 0xb172 */ { true, 0xb172, 0xb172 }, /* 0xb173 */ { true, 0xb173, 0xb173 }, /* 0xb174 */ { true, 0xb174, 0xb174 }, /* 0xb175 */ { true, 0xb175, 0xb175 }, /* 0xb176 */ { true, 0xb176, 0xb176 }, /* 0xb177 */ { true, 0xb177, 0xb177 }, /* 0xb178 */ { true, 0xb178, 0xb178 }, /* 0xb179 */ { true, 0xb179, 0xb179 }, /* 0xb17a */ { true, 0xb17a, 0xb17a }, /* 0xb17b */ { true, 0xb17b, 0xb17b }, /* 0xb17c */ { true, 0xb17c, 0xb17c }, /* 0xb17d */ { true, 0xb17d, 0xb17d }, /* 0xb17e */ { true, 0xb17e, 0xb17e }, /* 0xb17f */ { true, 0xb17f, 0xb17f }, /* 0xb180 */ { true, 0xb180, 0xb180 }, /* 0xb181 */ { true, 0xb181, 0xb181 }, /* 0xb182 */ { true, 0xb182, 0xb182 }, /* 0xb183 */ { true, 0xb183, 0xb183 }, /* 0xb184 */ { true, 0xb184, 0xb184 }, /* 0xb185 */ { true, 0xb185, 0xb185 }, /* 0xb186 */ { true, 0xb186, 0xb186 }, /* 0xb187 */ { true, 0xb187, 0xb187 }, /* 0xb188 */ { true, 0xb188, 0xb188 }, /* 0xb189 */ { true, 0xb189, 0xb189 }, /* 0xb18a */ { true, 0xb18a, 0xb18a }, /* 0xb18b */ { true, 0xb18b, 0xb18b }, /* 0xb18c */ { true, 0xb18c, 0xb18c }, /* 0xb18d */ { true, 0xb18d, 0xb18d }, /* 0xb18e */ { true, 0xb18e, 0xb18e }, /* 0xb18f */ { true, 0xb18f, 0xb18f }, /* 0xb190 */ { true, 0xb190, 0xb190 }, /* 0xb191 */ { true, 0xb191, 0xb191 }, /* 0xb192 */ { true, 0xb192, 0xb192 }, /* 0xb193 */ { true, 0xb193, 0xb193 }, /* 0xb194 */ { true, 0xb194, 0xb194 }, /* 0xb195 */ { true, 0xb195, 0xb195 }, /* 0xb196 */ { true, 0xb196, 0xb196 }, /* 0xb197 */ { true, 0xb197, 0xb197 }, /* 0xb198 */ { true, 0xb198, 0xb198 }, /* 0xb199 */ { true, 0xb199, 0xb199 }, /* 0xb19a */ { true, 0xb19a, 0xb19a }, /* 0xb19b */ { true, 0xb19b, 0xb19b }, /* 0xb19c */ { true, 0xb19c, 0xb19c }, /* 0xb19d */ { true, 0xb19d, 0xb19d }, /* 0xb19e */ { true, 0xb19e, 0xb19e }, /* 0xb19f */ { true, 0xb19f, 0xb19f }, /* 0xb1a0 */ { true, 0xb1a0, 0xb1a0 }, /* 0xb1a1 */ { true, 0xb1a1, 0xb1a1 }, /* 0xb1a2 */ { true, 0xb1a2, 0xb1a2 }, /* 0xb1a3 */ { true, 0xb1a3, 0xb1a3 }, /* 0xb1a4 */ { true, 0xb1a4, 0xb1a4 }, /* 0xb1a5 */ { true, 0xb1a5, 0xb1a5 }, /* 0xb1a6 */ { true, 0xb1a6, 0xb1a6 }, /* 0xb1a7 */ { true, 0xb1a7, 0xb1a7 }, /* 0xb1a8 */ { true, 0xb1a8, 0xb1a8 }, /* 0xb1a9 */ { true, 0xb1a9, 0xb1a9 }, /* 0xb1aa */ { true, 0xb1aa, 0xb1aa }, /* 0xb1ab */ { true, 0xb1ab, 0xb1ab }, /* 0xb1ac */ { true, 0xb1ac, 0xb1ac }, /* 0xb1ad */ { true, 0xb1ad, 0xb1ad }, /* 0xb1ae */ { true, 0xb1ae, 0xb1ae }, /* 0xb1af */ { true, 0xb1af, 0xb1af }, /* 0xb1b0 */ { true, 0xb1b0, 0xb1b0 }, /* 0xb1b1 */ { true, 0xb1b1, 0xb1b1 }, /* 0xb1b2 */ { true, 0xb1b2, 0xb1b2 }, /* 0xb1b3 */ { true, 0xb1b3, 0xb1b3 }, /* 0xb1b4 */ { true, 0xb1b4, 0xb1b4 }, /* 0xb1b5 */ { true, 0xb1b5, 0xb1b5 }, /* 0xb1b6 */ { true, 0xb1b6, 0xb1b6 }, /* 0xb1b7 */ { true, 0xb1b7, 0xb1b7 }, /* 0xb1b8 */ { true, 0xb1b8, 0xb1b8 }, /* 0xb1b9 */ { true, 0xb1b9, 0xb1b9 }, /* 0xb1ba */ { true, 0xb1ba, 0xb1ba }, /* 0xb1bb */ { true, 0xb1bb, 0xb1bb }, /* 0xb1bc */ { true, 0xb1bc, 0xb1bc }, /* 0xb1bd */ { true, 0xb1bd, 0xb1bd }, /* 0xb1be */ { true, 0xb1be, 0xb1be }, /* 0xb1bf */ { true, 0xb1bf, 0xb1bf }, /* 0xb1c0 */ { true, 0xb1c0, 0xb1c0 }, /* 0xb1c1 */ { true, 0xb1c1, 0xb1c1 }, /* 0xb1c2 */ { true, 0xb1c2, 0xb1c2 }, /* 0xb1c3 */ { true, 0xb1c3, 0xb1c3 }, /* 0xb1c4 */ { true, 0xb1c4, 0xb1c4 }, /* 0xb1c5 */ { true, 0xb1c5, 0xb1c5 }, /* 0xb1c6 */ { true, 0xb1c6, 0xb1c6 }, /* 0xb1c7 */ { true, 0xb1c7, 0xb1c7 }, /* 0xb1c8 */ { true, 0xb1c8, 0xb1c8 }, /* 0xb1c9 */ { true, 0xb1c9, 0xb1c9 }, /* 0xb1ca */ { true, 0xb1ca, 0xb1ca }, /* 0xb1cb */ { true, 0xb1cb, 0xb1cb }, /* 0xb1cc */ { true, 0xb1cc, 0xb1cc }, /* 0xb1cd */ { true, 0xb1cd, 0xb1cd }, /* 0xb1ce */ { true, 0xb1ce, 0xb1ce }, /* 0xb1cf */ { true, 0xb1cf, 0xb1cf }, /* 0xb1d0 */ { true, 0xb1d0, 0xb1d0 }, /* 0xb1d1 */ { true, 0xb1d1, 0xb1d1 }, /* 0xb1d2 */ { true, 0xb1d2, 0xb1d2 }, /* 0xb1d3 */ { true, 0xb1d3, 0xb1d3 }, /* 0xb1d4 */ { true, 0xb1d4, 0xb1d4 }, /* 0xb1d5 */ { true, 0xb1d5, 0xb1d5 }, /* 0xb1d6 */ { true, 0xb1d6, 0xb1d6 }, /* 0xb1d7 */ { true, 0xb1d7, 0xb1d7 }, /* 0xb1d8 */ { true, 0xb1d8, 0xb1d8 }, /* 0xb1d9 */ { true, 0xb1d9, 0xb1d9 }, /* 0xb1da */ { true, 0xb1da, 0xb1da }, /* 0xb1db */ { true, 0xb1db, 0xb1db }, /* 0xb1dc */ { true, 0xb1dc, 0xb1dc }, /* 0xb1dd */ { true, 0xb1dd, 0xb1dd }, /* 0xb1de */ { true, 0xb1de, 0xb1de }, /* 0xb1df */ { true, 0xb1df, 0xb1df }, /* 0xb1e0 */ { true, 0xb1e0, 0xb1e0 }, /* 0xb1e1 */ { true, 0xb1e1, 0xb1e1 }, /* 0xb1e2 */ { true, 0xb1e2, 0xb1e2 }, /* 0xb1e3 */ { true, 0xb1e3, 0xb1e3 }, /* 0xb1e4 */ { true, 0xb1e4, 0xb1e4 }, /* 0xb1e5 */ { true, 0xb1e5, 0xb1e5 }, /* 0xb1e6 */ { true, 0xb1e6, 0xb1e6 }, /* 0xb1e7 */ { true, 0xb1e7, 0xb1e7 }, /* 0xb1e8 */ { true, 0xb1e8, 0xb1e8 }, /* 0xb1e9 */ { true, 0xb1e9, 0xb1e9 }, /* 0xb1ea */ { true, 0xb1ea, 0xb1ea }, /* 0xb1eb */ { true, 0xb1eb, 0xb1eb }, /* 0xb1ec */ { true, 0xb1ec, 0xb1ec }, /* 0xb1ed */ { true, 0xb1ed, 0xb1ed }, /* 0xb1ee */ { true, 0xb1ee, 0xb1ee }, /* 0xb1ef */ { true, 0xb1ef, 0xb1ef }, /* 0xb1f0 */ { true, 0xb1f0, 0xb1f0 }, /* 0xb1f1 */ { true, 0xb1f1, 0xb1f1 }, /* 0xb1f2 */ { true, 0xb1f2, 0xb1f2 }, /* 0xb1f3 */ { true, 0xb1f3, 0xb1f3 }, /* 0xb1f4 */ { true, 0xb1f4, 0xb1f4 }, /* 0xb1f5 */ { true, 0xb1f5, 0xb1f5 }, /* 0xb1f6 */ { true, 0xb1f6, 0xb1f6 }, /* 0xb1f7 */ { true, 0xb1f7, 0xb1f7 }, /* 0xb1f8 */ { true, 0xb1f8, 0xb1f8 }, /* 0xb1f9 */ { true, 0xb1f9, 0xb1f9 }, /* 0xb1fa */ { true, 0xb1fa, 0xb1fa }, /* 0xb1fb */ { true, 0xb1fb, 0xb1fb }, /* 0xb1fc */ { true, 0xb1fc, 0xb1fc }, /* 0xb1fd */ { true, 0xb1fd, 0xb1fd }, /* 0xb1fe */ { true, 0xb1fe, 0xb1fe }, /* 0xb1ff */ { true, 0xb1ff, 0xb1ff }, /* 0xb200 */ { true, 0xb200, 0xb200 }, /* 0xb201 */ { true, 0xb201, 0xb201 }, /* 0xb202 */ { true, 0xb202, 0xb202 }, /* 0xb203 */ { true, 0xb203, 0xb203 }, /* 0xb204 */ { true, 0xb204, 0xb204 }, /* 0xb205 */ { true, 0xb205, 0xb205 }, /* 0xb206 */ { true, 0xb206, 0xb206 }, /* 0xb207 */ { true, 0xb207, 0xb207 }, /* 0xb208 */ { true, 0xb208, 0xb208 }, /* 0xb209 */ { true, 0xb209, 0xb209 }, /* 0xb20a */ { true, 0xb20a, 0xb20a }, /* 0xb20b */ { true, 0xb20b, 0xb20b }, /* 0xb20c */ { true, 0xb20c, 0xb20c }, /* 0xb20d */ { true, 0xb20d, 0xb20d }, /* 0xb20e */ { true, 0xb20e, 0xb20e }, /* 0xb20f */ { true, 0xb20f, 0xb20f }, /* 0xb210 */ { true, 0xb210, 0xb210 }, /* 0xb211 */ { true, 0xb211, 0xb211 }, /* 0xb212 */ { true, 0xb212, 0xb212 }, /* 0xb213 */ { true, 0xb213, 0xb213 }, /* 0xb214 */ { true, 0xb214, 0xb214 }, /* 0xb215 */ { true, 0xb215, 0xb215 }, /* 0xb216 */ { true, 0xb216, 0xb216 }, /* 0xb217 */ { true, 0xb217, 0xb217 }, /* 0xb218 */ { true, 0xb218, 0xb218 }, /* 0xb219 */ { true, 0xb219, 0xb219 }, /* 0xb21a */ { true, 0xb21a, 0xb21a }, /* 0xb21b */ { true, 0xb21b, 0xb21b }, /* 0xb21c */ { true, 0xb21c, 0xb21c }, /* 0xb21d */ { true, 0xb21d, 0xb21d }, /* 0xb21e */ { true, 0xb21e, 0xb21e }, /* 0xb21f */ { true, 0xb21f, 0xb21f }, /* 0xb220 */ { true, 0xb220, 0xb220 }, /* 0xb221 */ { true, 0xb221, 0xb221 }, /* 0xb222 */ { true, 0xb222, 0xb222 }, /* 0xb223 */ { true, 0xb223, 0xb223 }, /* 0xb224 */ { true, 0xb224, 0xb224 }, /* 0xb225 */ { true, 0xb225, 0xb225 }, /* 0xb226 */ { true, 0xb226, 0xb226 }, /* 0xb227 */ { true, 0xb227, 0xb227 }, /* 0xb228 */ { true, 0xb228, 0xb228 }, /* 0xb229 */ { true, 0xb229, 0xb229 }, /* 0xb22a */ { true, 0xb22a, 0xb22a }, /* 0xb22b */ { true, 0xb22b, 0xb22b }, /* 0xb22c */ { true, 0xb22c, 0xb22c }, /* 0xb22d */ { true, 0xb22d, 0xb22d }, /* 0xb22e */ { true, 0xb22e, 0xb22e }, /* 0xb22f */ { true, 0xb22f, 0xb22f }, /* 0xb230 */ { true, 0xb230, 0xb230 }, /* 0xb231 */ { true, 0xb231, 0xb231 }, /* 0xb232 */ { true, 0xb232, 0xb232 }, /* 0xb233 */ { true, 0xb233, 0xb233 }, /* 0xb234 */ { true, 0xb234, 0xb234 }, /* 0xb235 */ { true, 0xb235, 0xb235 }, /* 0xb236 */ { true, 0xb236, 0xb236 }, /* 0xb237 */ { true, 0xb237, 0xb237 }, /* 0xb238 */ { true, 0xb238, 0xb238 }, /* 0xb239 */ { true, 0xb239, 0xb239 }, /* 0xb23a */ { true, 0xb23a, 0xb23a }, /* 0xb23b */ { true, 0xb23b, 0xb23b }, /* 0xb23c */ { true, 0xb23c, 0xb23c }, /* 0xb23d */ { true, 0xb23d, 0xb23d }, /* 0xb23e */ { true, 0xb23e, 0xb23e }, /* 0xb23f */ { true, 0xb23f, 0xb23f }, /* 0xb240 */ { true, 0xb240, 0xb240 }, /* 0xb241 */ { true, 0xb241, 0xb241 }, /* 0xb242 */ { true, 0xb242, 0xb242 }, /* 0xb243 */ { true, 0xb243, 0xb243 }, /* 0xb244 */ { true, 0xb244, 0xb244 }, /* 0xb245 */ { true, 0xb245, 0xb245 }, /* 0xb246 */ { true, 0xb246, 0xb246 }, /* 0xb247 */ { true, 0xb247, 0xb247 }, /* 0xb248 */ { true, 0xb248, 0xb248 }, /* 0xb249 */ { true, 0xb249, 0xb249 }, /* 0xb24a */ { true, 0xb24a, 0xb24a }, /* 0xb24b */ { true, 0xb24b, 0xb24b }, /* 0xb24c */ { true, 0xb24c, 0xb24c }, /* 0xb24d */ { true, 0xb24d, 0xb24d }, /* 0xb24e */ { true, 0xb24e, 0xb24e }, /* 0xb24f */ { true, 0xb24f, 0xb24f }, /* 0xb250 */ { true, 0xb250, 0xb250 }, /* 0xb251 */ { true, 0xb251, 0xb251 }, /* 0xb252 */ { true, 0xb252, 0xb252 }, /* 0xb253 */ { true, 0xb253, 0xb253 }, /* 0xb254 */ { true, 0xb254, 0xb254 }, /* 0xb255 */ { true, 0xb255, 0xb255 }, /* 0xb256 */ { true, 0xb256, 0xb256 }, /* 0xb257 */ { true, 0xb257, 0xb257 }, /* 0xb258 */ { true, 0xb258, 0xb258 }, /* 0xb259 */ { true, 0xb259, 0xb259 }, /* 0xb25a */ { true, 0xb25a, 0xb25a }, /* 0xb25b */ { true, 0xb25b, 0xb25b }, /* 0xb25c */ { true, 0xb25c, 0xb25c }, /* 0xb25d */ { true, 0xb25d, 0xb25d }, /* 0xb25e */ { true, 0xb25e, 0xb25e }, /* 0xb25f */ { true, 0xb25f, 0xb25f }, /* 0xb260 */ { true, 0xb260, 0xb260 }, /* 0xb261 */ { true, 0xb261, 0xb261 }, /* 0xb262 */ { true, 0xb262, 0xb262 }, /* 0xb263 */ { true, 0xb263, 0xb263 }, /* 0xb264 */ { true, 0xb264, 0xb264 }, /* 0xb265 */ { true, 0xb265, 0xb265 }, /* 0xb266 */ { true, 0xb266, 0xb266 }, /* 0xb267 */ { true, 0xb267, 0xb267 }, /* 0xb268 */ { true, 0xb268, 0xb268 }, /* 0xb269 */ { true, 0xb269, 0xb269 }, /* 0xb26a */ { true, 0xb26a, 0xb26a }, /* 0xb26b */ { true, 0xb26b, 0xb26b }, /* 0xb26c */ { true, 0xb26c, 0xb26c }, /* 0xb26d */ { true, 0xb26d, 0xb26d }, /* 0xb26e */ { true, 0xb26e, 0xb26e }, /* 0xb26f */ { true, 0xb26f, 0xb26f }, /* 0xb270 */ { true, 0xb270, 0xb270 }, /* 0xb271 */ { true, 0xb271, 0xb271 }, /* 0xb272 */ { true, 0xb272, 0xb272 }, /* 0xb273 */ { true, 0xb273, 0xb273 }, /* 0xb274 */ { true, 0xb274, 0xb274 }, /* 0xb275 */ { true, 0xb275, 0xb275 }, /* 0xb276 */ { true, 0xb276, 0xb276 }, /* 0xb277 */ { true, 0xb277, 0xb277 }, /* 0xb278 */ { true, 0xb278, 0xb278 }, /* 0xb279 */ { true, 0xb279, 0xb279 }, /* 0xb27a */ { true, 0xb27a, 0xb27a }, /* 0xb27b */ { true, 0xb27b, 0xb27b }, /* 0xb27c */ { true, 0xb27c, 0xb27c }, /* 0xb27d */ { true, 0xb27d, 0xb27d }, /* 0xb27e */ { true, 0xb27e, 0xb27e }, /* 0xb27f */ { true, 0xb27f, 0xb27f }, /* 0xb280 */ { true, 0xb280, 0xb280 }, /* 0xb281 */ { true, 0xb281, 0xb281 }, /* 0xb282 */ { true, 0xb282, 0xb282 }, /* 0xb283 */ { true, 0xb283, 0xb283 }, /* 0xb284 */ { true, 0xb284, 0xb284 }, /* 0xb285 */ { true, 0xb285, 0xb285 }, /* 0xb286 */ { true, 0xb286, 0xb286 }, /* 0xb287 */ { true, 0xb287, 0xb287 }, /* 0xb288 */ { true, 0xb288, 0xb288 }, /* 0xb289 */ { true, 0xb289, 0xb289 }, /* 0xb28a */ { true, 0xb28a, 0xb28a }, /* 0xb28b */ { true, 0xb28b, 0xb28b }, /* 0xb28c */ { true, 0xb28c, 0xb28c }, /* 0xb28d */ { true, 0xb28d, 0xb28d }, /* 0xb28e */ { true, 0xb28e, 0xb28e }, /* 0xb28f */ { true, 0xb28f, 0xb28f }, /* 0xb290 */ { true, 0xb290, 0xb290 }, /* 0xb291 */ { true, 0xb291, 0xb291 }, /* 0xb292 */ { true, 0xb292, 0xb292 }, /* 0xb293 */ { true, 0xb293, 0xb293 }, /* 0xb294 */ { true, 0xb294, 0xb294 }, /* 0xb295 */ { true, 0xb295, 0xb295 }, /* 0xb296 */ { true, 0xb296, 0xb296 }, /* 0xb297 */ { true, 0xb297, 0xb297 }, /* 0xb298 */ { true, 0xb298, 0xb298 }, /* 0xb299 */ { true, 0xb299, 0xb299 }, /* 0xb29a */ { true, 0xb29a, 0xb29a }, /* 0xb29b */ { true, 0xb29b, 0xb29b }, /* 0xb29c */ { true, 0xb29c, 0xb29c }, /* 0xb29d */ { true, 0xb29d, 0xb29d }, /* 0xb29e */ { true, 0xb29e, 0xb29e }, /* 0xb29f */ { true, 0xb29f, 0xb29f }, /* 0xb2a0 */ { true, 0xb2a0, 0xb2a0 }, /* 0xb2a1 */ { true, 0xb2a1, 0xb2a1 }, /* 0xb2a2 */ { true, 0xb2a2, 0xb2a2 }, /* 0xb2a3 */ { true, 0xb2a3, 0xb2a3 }, /* 0xb2a4 */ { true, 0xb2a4, 0xb2a4 }, /* 0xb2a5 */ { true, 0xb2a5, 0xb2a5 }, /* 0xb2a6 */ { true, 0xb2a6, 0xb2a6 }, /* 0xb2a7 */ { true, 0xb2a7, 0xb2a7 }, /* 0xb2a8 */ { true, 0xb2a8, 0xb2a8 }, /* 0xb2a9 */ { true, 0xb2a9, 0xb2a9 }, /* 0xb2aa */ { true, 0xb2aa, 0xb2aa }, /* 0xb2ab */ { true, 0xb2ab, 0xb2ab }, /* 0xb2ac */ { true, 0xb2ac, 0xb2ac }, /* 0xb2ad */ { true, 0xb2ad, 0xb2ad }, /* 0xb2ae */ { true, 0xb2ae, 0xb2ae }, /* 0xb2af */ { true, 0xb2af, 0xb2af }, /* 0xb2b0 */ { true, 0xb2b0, 0xb2b0 }, /* 0xb2b1 */ { true, 0xb2b1, 0xb2b1 }, /* 0xb2b2 */ { true, 0xb2b2, 0xb2b2 }, /* 0xb2b3 */ { true, 0xb2b3, 0xb2b3 }, /* 0xb2b4 */ { true, 0xb2b4, 0xb2b4 }, /* 0xb2b5 */ { true, 0xb2b5, 0xb2b5 }, /* 0xb2b6 */ { true, 0xb2b6, 0xb2b6 }, /* 0xb2b7 */ { true, 0xb2b7, 0xb2b7 }, /* 0xb2b8 */ { true, 0xb2b8, 0xb2b8 }, /* 0xb2b9 */ { true, 0xb2b9, 0xb2b9 }, /* 0xb2ba */ { true, 0xb2ba, 0xb2ba }, /* 0xb2bb */ { true, 0xb2bb, 0xb2bb }, /* 0xb2bc */ { true, 0xb2bc, 0xb2bc }, /* 0xb2bd */ { true, 0xb2bd, 0xb2bd }, /* 0xb2be */ { true, 0xb2be, 0xb2be }, /* 0xb2bf */ { true, 0xb2bf, 0xb2bf }, /* 0xb2c0 */ { true, 0xb2c0, 0xb2c0 }, /* 0xb2c1 */ { true, 0xb2c1, 0xb2c1 }, /* 0xb2c2 */ { true, 0xb2c2, 0xb2c2 }, /* 0xb2c3 */ { true, 0xb2c3, 0xb2c3 }, /* 0xb2c4 */ { true, 0xb2c4, 0xb2c4 }, /* 0xb2c5 */ { true, 0xb2c5, 0xb2c5 }, /* 0xb2c6 */ { true, 0xb2c6, 0xb2c6 }, /* 0xb2c7 */ { true, 0xb2c7, 0xb2c7 }, /* 0xb2c8 */ { true, 0xb2c8, 0xb2c8 }, /* 0xb2c9 */ { true, 0xb2c9, 0xb2c9 }, /* 0xb2ca */ { true, 0xb2ca, 0xb2ca }, /* 0xb2cb */ { true, 0xb2cb, 0xb2cb }, /* 0xb2cc */ { true, 0xb2cc, 0xb2cc }, /* 0xb2cd */ { true, 0xb2cd, 0xb2cd }, /* 0xb2ce */ { true, 0xb2ce, 0xb2ce }, /* 0xb2cf */ { true, 0xb2cf, 0xb2cf }, /* 0xb2d0 */ { true, 0xb2d0, 0xb2d0 }, /* 0xb2d1 */ { true, 0xb2d1, 0xb2d1 }, /* 0xb2d2 */ { true, 0xb2d2, 0xb2d2 }, /* 0xb2d3 */ { true, 0xb2d3, 0xb2d3 }, /* 0xb2d4 */ { true, 0xb2d4, 0xb2d4 }, /* 0xb2d5 */ { true, 0xb2d5, 0xb2d5 }, /* 0xb2d6 */ { true, 0xb2d6, 0xb2d6 }, /* 0xb2d7 */ { true, 0xb2d7, 0xb2d7 }, /* 0xb2d8 */ { true, 0xb2d8, 0xb2d8 }, /* 0xb2d9 */ { true, 0xb2d9, 0xb2d9 }, /* 0xb2da */ { true, 0xb2da, 0xb2da }, /* 0xb2db */ { true, 0xb2db, 0xb2db }, /* 0xb2dc */ { true, 0xb2dc, 0xb2dc }, /* 0xb2dd */ { true, 0xb2dd, 0xb2dd }, /* 0xb2de */ { true, 0xb2de, 0xb2de }, /* 0xb2df */ { true, 0xb2df, 0xb2df }, /* 0xb2e0 */ { true, 0xb2e0, 0xb2e0 }, /* 0xb2e1 */ { true, 0xb2e1, 0xb2e1 }, /* 0xb2e2 */ { true, 0xb2e2, 0xb2e2 }, /* 0xb2e3 */ { true, 0xb2e3, 0xb2e3 }, /* 0xb2e4 */ { true, 0xb2e4, 0xb2e4 }, /* 0xb2e5 */ { true, 0xb2e5, 0xb2e5 }, /* 0xb2e6 */ { true, 0xb2e6, 0xb2e6 }, /* 0xb2e7 */ { true, 0xb2e7, 0xb2e7 }, /* 0xb2e8 */ { true, 0xb2e8, 0xb2e8 }, /* 0xb2e9 */ { true, 0xb2e9, 0xb2e9 }, /* 0xb2ea */ { true, 0xb2ea, 0xb2ea }, /* 0xb2eb */ { true, 0xb2eb, 0xb2eb }, /* 0xb2ec */ { true, 0xb2ec, 0xb2ec }, /* 0xb2ed */ { true, 0xb2ed, 0xb2ed }, /* 0xb2ee */ { true, 0xb2ee, 0xb2ee }, /* 0xb2ef */ { true, 0xb2ef, 0xb2ef }, /* 0xb2f0 */ { true, 0xb2f0, 0xb2f0 }, /* 0xb2f1 */ { true, 0xb2f1, 0xb2f1 }, /* 0xb2f2 */ { true, 0xb2f2, 0xb2f2 }, /* 0xb2f3 */ { true, 0xb2f3, 0xb2f3 }, /* 0xb2f4 */ { true, 0xb2f4, 0xb2f4 }, /* 0xb2f5 */ { true, 0xb2f5, 0xb2f5 }, /* 0xb2f6 */ { true, 0xb2f6, 0xb2f6 }, /* 0xb2f7 */ { true, 0xb2f7, 0xb2f7 }, /* 0xb2f8 */ { true, 0xb2f8, 0xb2f8 }, /* 0xb2f9 */ { true, 0xb2f9, 0xb2f9 }, /* 0xb2fa */ { true, 0xb2fa, 0xb2fa }, /* 0xb2fb */ { true, 0xb2fb, 0xb2fb }, /* 0xb2fc */ { true, 0xb2fc, 0xb2fc }, /* 0xb2fd */ { true, 0xb2fd, 0xb2fd }, /* 0xb2fe */ { true, 0xb2fe, 0xb2fe }, /* 0xb2ff */ { true, 0xb2ff, 0xb2ff }, /* 0xb300 */ { true, 0xb300, 0xb300 }, /* 0xb301 */ { true, 0xb301, 0xb301 }, /* 0xb302 */ { true, 0xb302, 0xb302 }, /* 0xb303 */ { true, 0xb303, 0xb303 }, /* 0xb304 */ { true, 0xb304, 0xb304 }, /* 0xb305 */ { true, 0xb305, 0xb305 }, /* 0xb306 */ { true, 0xb306, 0xb306 }, /* 0xb307 */ { true, 0xb307, 0xb307 }, /* 0xb308 */ { true, 0xb308, 0xb308 }, /* 0xb309 */ { true, 0xb309, 0xb309 }, /* 0xb30a */ { true, 0xb30a, 0xb30a }, /* 0xb30b */ { true, 0xb30b, 0xb30b }, /* 0xb30c */ { true, 0xb30c, 0xb30c }, /* 0xb30d */ { true, 0xb30d, 0xb30d }, /* 0xb30e */ { true, 0xb30e, 0xb30e }, /* 0xb30f */ { true, 0xb30f, 0xb30f }, /* 0xb310 */ { true, 0xb310, 0xb310 }, /* 0xb311 */ { true, 0xb311, 0xb311 }, /* 0xb312 */ { true, 0xb312, 0xb312 }, /* 0xb313 */ { true, 0xb313, 0xb313 }, /* 0xb314 */ { true, 0xb314, 0xb314 }, /* 0xb315 */ { true, 0xb315, 0xb315 }, /* 0xb316 */ { true, 0xb316, 0xb316 }, /* 0xb317 */ { true, 0xb317, 0xb317 }, /* 0xb318 */ { true, 0xb318, 0xb318 }, /* 0xb319 */ { true, 0xb319, 0xb319 }, /* 0xb31a */ { true, 0xb31a, 0xb31a }, /* 0xb31b */ { true, 0xb31b, 0xb31b }, /* 0xb31c */ { true, 0xb31c, 0xb31c }, /* 0xb31d */ { true, 0xb31d, 0xb31d }, /* 0xb31e */ { true, 0xb31e, 0xb31e }, /* 0xb31f */ { true, 0xb31f, 0xb31f }, /* 0xb320 */ { true, 0xb320, 0xb320 }, /* 0xb321 */ { true, 0xb321, 0xb321 }, /* 0xb322 */ { true, 0xb322, 0xb322 }, /* 0xb323 */ { true, 0xb323, 0xb323 }, /* 0xb324 */ { true, 0xb324, 0xb324 }, /* 0xb325 */ { true, 0xb325, 0xb325 }, /* 0xb326 */ { true, 0xb326, 0xb326 }, /* 0xb327 */ { true, 0xb327, 0xb327 }, /* 0xb328 */ { true, 0xb328, 0xb328 }, /* 0xb329 */ { true, 0xb329, 0xb329 }, /* 0xb32a */ { true, 0xb32a, 0xb32a }, /* 0xb32b */ { true, 0xb32b, 0xb32b }, /* 0xb32c */ { true, 0xb32c, 0xb32c }, /* 0xb32d */ { true, 0xb32d, 0xb32d }, /* 0xb32e */ { true, 0xb32e, 0xb32e }, /* 0xb32f */ { true, 0xb32f, 0xb32f }, /* 0xb330 */ { true, 0xb330, 0xb330 }, /* 0xb331 */ { true, 0xb331, 0xb331 }, /* 0xb332 */ { true, 0xb332, 0xb332 }, /* 0xb333 */ { true, 0xb333, 0xb333 }, /* 0xb334 */ { true, 0xb334, 0xb334 }, /* 0xb335 */ { true, 0xb335, 0xb335 }, /* 0xb336 */ { true, 0xb336, 0xb336 }, /* 0xb337 */ { true, 0xb337, 0xb337 }, /* 0xb338 */ { true, 0xb338, 0xb338 }, /* 0xb339 */ { true, 0xb339, 0xb339 }, /* 0xb33a */ { true, 0xb33a, 0xb33a }, /* 0xb33b */ { true, 0xb33b, 0xb33b }, /* 0xb33c */ { true, 0xb33c, 0xb33c }, /* 0xb33d */ { true, 0xb33d, 0xb33d }, /* 0xb33e */ { true, 0xb33e, 0xb33e }, /* 0xb33f */ { true, 0xb33f, 0xb33f }, /* 0xb340 */ { true, 0xb340, 0xb340 }, /* 0xb341 */ { true, 0xb341, 0xb341 }, /* 0xb342 */ { true, 0xb342, 0xb342 }, /* 0xb343 */ { true, 0xb343, 0xb343 }, /* 0xb344 */ { true, 0xb344, 0xb344 }, /* 0xb345 */ { true, 0xb345, 0xb345 }, /* 0xb346 */ { true, 0xb346, 0xb346 }, /* 0xb347 */ { true, 0xb347, 0xb347 }, /* 0xb348 */ { true, 0xb348, 0xb348 }, /* 0xb349 */ { true, 0xb349, 0xb349 }, /* 0xb34a */ { true, 0xb34a, 0xb34a }, /* 0xb34b */ { true, 0xb34b, 0xb34b }, /* 0xb34c */ { true, 0xb34c, 0xb34c }, /* 0xb34d */ { true, 0xb34d, 0xb34d }, /* 0xb34e */ { true, 0xb34e, 0xb34e }, /* 0xb34f */ { true, 0xb34f, 0xb34f }, /* 0xb350 */ { true, 0xb350, 0xb350 }, /* 0xb351 */ { true, 0xb351, 0xb351 }, /* 0xb352 */ { true, 0xb352, 0xb352 }, /* 0xb353 */ { true, 0xb353, 0xb353 }, /* 0xb354 */ { true, 0xb354, 0xb354 }, /* 0xb355 */ { true, 0xb355, 0xb355 }, /* 0xb356 */ { true, 0xb356, 0xb356 }, /* 0xb357 */ { true, 0xb357, 0xb357 }, /* 0xb358 */ { true, 0xb358, 0xb358 }, /* 0xb359 */ { true, 0xb359, 0xb359 }, /* 0xb35a */ { true, 0xb35a, 0xb35a }, /* 0xb35b */ { true, 0xb35b, 0xb35b }, /* 0xb35c */ { true, 0xb35c, 0xb35c }, /* 0xb35d */ { true, 0xb35d, 0xb35d }, /* 0xb35e */ { true, 0xb35e, 0xb35e }, /* 0xb35f */ { true, 0xb35f, 0xb35f }, /* 0xb360 */ { true, 0xb360, 0xb360 }, /* 0xb361 */ { true, 0xb361, 0xb361 }, /* 0xb362 */ { true, 0xb362, 0xb362 }, /* 0xb363 */ { true, 0xb363, 0xb363 }, /* 0xb364 */ { true, 0xb364, 0xb364 }, /* 0xb365 */ { true, 0xb365, 0xb365 }, /* 0xb366 */ { true, 0xb366, 0xb366 }, /* 0xb367 */ { true, 0xb367, 0xb367 }, /* 0xb368 */ { true, 0xb368, 0xb368 }, /* 0xb369 */ { true, 0xb369, 0xb369 }, /* 0xb36a */ { true, 0xb36a, 0xb36a }, /* 0xb36b */ { true, 0xb36b, 0xb36b }, /* 0xb36c */ { true, 0xb36c, 0xb36c }, /* 0xb36d */ { true, 0xb36d, 0xb36d }, /* 0xb36e */ { true, 0xb36e, 0xb36e }, /* 0xb36f */ { true, 0xb36f, 0xb36f }, /* 0xb370 */ { true, 0xb370, 0xb370 }, /* 0xb371 */ { true, 0xb371, 0xb371 }, /* 0xb372 */ { true, 0xb372, 0xb372 }, /* 0xb373 */ { true, 0xb373, 0xb373 }, /* 0xb374 */ { true, 0xb374, 0xb374 }, /* 0xb375 */ { true, 0xb375, 0xb375 }, /* 0xb376 */ { true, 0xb376, 0xb376 }, /* 0xb377 */ { true, 0xb377, 0xb377 }, /* 0xb378 */ { true, 0xb378, 0xb378 }, /* 0xb379 */ { true, 0xb379, 0xb379 }, /* 0xb37a */ { true, 0xb37a, 0xb37a }, /* 0xb37b */ { true, 0xb37b, 0xb37b }, /* 0xb37c */ { true, 0xb37c, 0xb37c }, /* 0xb37d */ { true, 0xb37d, 0xb37d }, /* 0xb37e */ { true, 0xb37e, 0xb37e }, /* 0xb37f */ { true, 0xb37f, 0xb37f }, /* 0xb380 */ { true, 0xb380, 0xb380 }, /* 0xb381 */ { true, 0xb381, 0xb381 }, /* 0xb382 */ { true, 0xb382, 0xb382 }, /* 0xb383 */ { true, 0xb383, 0xb383 }, /* 0xb384 */ { true, 0xb384, 0xb384 }, /* 0xb385 */ { true, 0xb385, 0xb385 }, /* 0xb386 */ { true, 0xb386, 0xb386 }, /* 0xb387 */ { true, 0xb387, 0xb387 }, /* 0xb388 */ { true, 0xb388, 0xb388 }, /* 0xb389 */ { true, 0xb389, 0xb389 }, /* 0xb38a */ { true, 0xb38a, 0xb38a }, /* 0xb38b */ { true, 0xb38b, 0xb38b }, /* 0xb38c */ { true, 0xb38c, 0xb38c }, /* 0xb38d */ { true, 0xb38d, 0xb38d }, /* 0xb38e */ { true, 0xb38e, 0xb38e }, /* 0xb38f */ { true, 0xb38f, 0xb38f }, /* 0xb390 */ { true, 0xb390, 0xb390 }, /* 0xb391 */ { true, 0xb391, 0xb391 }, /* 0xb392 */ { true, 0xb392, 0xb392 }, /* 0xb393 */ { true, 0xb393, 0xb393 }, /* 0xb394 */ { true, 0xb394, 0xb394 }, /* 0xb395 */ { true, 0xb395, 0xb395 }, /* 0xb396 */ { true, 0xb396, 0xb396 }, /* 0xb397 */ { true, 0xb397, 0xb397 }, /* 0xb398 */ { true, 0xb398, 0xb398 }, /* 0xb399 */ { true, 0xb399, 0xb399 }, /* 0xb39a */ { true, 0xb39a, 0xb39a }, /* 0xb39b */ { true, 0xb39b, 0xb39b }, /* 0xb39c */ { true, 0xb39c, 0xb39c }, /* 0xb39d */ { true, 0xb39d, 0xb39d }, /* 0xb39e */ { true, 0xb39e, 0xb39e }, /* 0xb39f */ { true, 0xb39f, 0xb39f }, /* 0xb3a0 */ { true, 0xb3a0, 0xb3a0 }, /* 0xb3a1 */ { true, 0xb3a1, 0xb3a1 }, /* 0xb3a2 */ { true, 0xb3a2, 0xb3a2 }, /* 0xb3a3 */ { true, 0xb3a3, 0xb3a3 }, /* 0xb3a4 */ { true, 0xb3a4, 0xb3a4 }, /* 0xb3a5 */ { true, 0xb3a5, 0xb3a5 }, /* 0xb3a6 */ { true, 0xb3a6, 0xb3a6 }, /* 0xb3a7 */ { true, 0xb3a7, 0xb3a7 }, /* 0xb3a8 */ { true, 0xb3a8, 0xb3a8 }, /* 0xb3a9 */ { true, 0xb3a9, 0xb3a9 }, /* 0xb3aa */ { true, 0xb3aa, 0xb3aa }, /* 0xb3ab */ { true, 0xb3ab, 0xb3ab }, /* 0xb3ac */ { true, 0xb3ac, 0xb3ac }, /* 0xb3ad */ { true, 0xb3ad, 0xb3ad }, /* 0xb3ae */ { true, 0xb3ae, 0xb3ae }, /* 0xb3af */ { true, 0xb3af, 0xb3af }, /* 0xb3b0 */ { true, 0xb3b0, 0xb3b0 }, /* 0xb3b1 */ { true, 0xb3b1, 0xb3b1 }, /* 0xb3b2 */ { true, 0xb3b2, 0xb3b2 }, /* 0xb3b3 */ { true, 0xb3b3, 0xb3b3 }, /* 0xb3b4 */ { true, 0xb3b4, 0xb3b4 }, /* 0xb3b5 */ { true, 0xb3b5, 0xb3b5 }, /* 0xb3b6 */ { true, 0xb3b6, 0xb3b6 }, /* 0xb3b7 */ { true, 0xb3b7, 0xb3b7 }, /* 0xb3b8 */ { true, 0xb3b8, 0xb3b8 }, /* 0xb3b9 */ { true, 0xb3b9, 0xb3b9 }, /* 0xb3ba */ { true, 0xb3ba, 0xb3ba }, /* 0xb3bb */ { true, 0xb3bb, 0xb3bb }, /* 0xb3bc */ { true, 0xb3bc, 0xb3bc }, /* 0xb3bd */ { true, 0xb3bd, 0xb3bd }, /* 0xb3be */ { true, 0xb3be, 0xb3be }, /* 0xb3bf */ { true, 0xb3bf, 0xb3bf }, /* 0xb3c0 */ { true, 0xb3c0, 0xb3c0 }, /* 0xb3c1 */ { true, 0xb3c1, 0xb3c1 }, /* 0xb3c2 */ { true, 0xb3c2, 0xb3c2 }, /* 0xb3c3 */ { true, 0xb3c3, 0xb3c3 }, /* 0xb3c4 */ { true, 0xb3c4, 0xb3c4 }, /* 0xb3c5 */ { true, 0xb3c5, 0xb3c5 }, /* 0xb3c6 */ { true, 0xb3c6, 0xb3c6 }, /* 0xb3c7 */ { true, 0xb3c7, 0xb3c7 }, /* 0xb3c8 */ { true, 0xb3c8, 0xb3c8 }, /* 0xb3c9 */ { true, 0xb3c9, 0xb3c9 }, /* 0xb3ca */ { true, 0xb3ca, 0xb3ca }, /* 0xb3cb */ { true, 0xb3cb, 0xb3cb }, /* 0xb3cc */ { true, 0xb3cc, 0xb3cc }, /* 0xb3cd */ { true, 0xb3cd, 0xb3cd }, /* 0xb3ce */ { true, 0xb3ce, 0xb3ce }, /* 0xb3cf */ { true, 0xb3cf, 0xb3cf }, /* 0xb3d0 */ { true, 0xb3d0, 0xb3d0 }, /* 0xb3d1 */ { true, 0xb3d1, 0xb3d1 }, /* 0xb3d2 */ { true, 0xb3d2, 0xb3d2 }, /* 0xb3d3 */ { true, 0xb3d3, 0xb3d3 }, /* 0xb3d4 */ { true, 0xb3d4, 0xb3d4 }, /* 0xb3d5 */ { true, 0xb3d5, 0xb3d5 }, /* 0xb3d6 */ { true, 0xb3d6, 0xb3d6 }, /* 0xb3d7 */ { true, 0xb3d7, 0xb3d7 }, /* 0xb3d8 */ { true, 0xb3d8, 0xb3d8 }, /* 0xb3d9 */ { true, 0xb3d9, 0xb3d9 }, /* 0xb3da */ { true, 0xb3da, 0xb3da }, /* 0xb3db */ { true, 0xb3db, 0xb3db }, /* 0xb3dc */ { true, 0xb3dc, 0xb3dc }, /* 0xb3dd */ { true, 0xb3dd, 0xb3dd }, /* 0xb3de */ { true, 0xb3de, 0xb3de }, /* 0xb3df */ { true, 0xb3df, 0xb3df }, /* 0xb3e0 */ { true, 0xb3e0, 0xb3e0 }, /* 0xb3e1 */ { true, 0xb3e1, 0xb3e1 }, /* 0xb3e2 */ { true, 0xb3e2, 0xb3e2 }, /* 0xb3e3 */ { true, 0xb3e3, 0xb3e3 }, /* 0xb3e4 */ { true, 0xb3e4, 0xb3e4 }, /* 0xb3e5 */ { true, 0xb3e5, 0xb3e5 }, /* 0xb3e6 */ { true, 0xb3e6, 0xb3e6 }, /* 0xb3e7 */ { true, 0xb3e7, 0xb3e7 }, /* 0xb3e8 */ { true, 0xb3e8, 0xb3e8 }, /* 0xb3e9 */ { true, 0xb3e9, 0xb3e9 }, /* 0xb3ea */ { true, 0xb3ea, 0xb3ea }, /* 0xb3eb */ { true, 0xb3eb, 0xb3eb }, /* 0xb3ec */ { true, 0xb3ec, 0xb3ec }, /* 0xb3ed */ { true, 0xb3ed, 0xb3ed }, /* 0xb3ee */ { true, 0xb3ee, 0xb3ee }, /* 0xb3ef */ { true, 0xb3ef, 0xb3ef }, /* 0xb3f0 */ { true, 0xb3f0, 0xb3f0 }, /* 0xb3f1 */ { true, 0xb3f1, 0xb3f1 }, /* 0xb3f2 */ { true, 0xb3f2, 0xb3f2 }, /* 0xb3f3 */ { true, 0xb3f3, 0xb3f3 }, /* 0xb3f4 */ { true, 0xb3f4, 0xb3f4 }, /* 0xb3f5 */ { true, 0xb3f5, 0xb3f5 }, /* 0xb3f6 */ { true, 0xb3f6, 0xb3f6 }, /* 0xb3f7 */ { true, 0xb3f7, 0xb3f7 }, /* 0xb3f8 */ { true, 0xb3f8, 0xb3f8 }, /* 0xb3f9 */ { true, 0xb3f9, 0xb3f9 }, /* 0xb3fa */ { true, 0xb3fa, 0xb3fa }, /* 0xb3fb */ { true, 0xb3fb, 0xb3fb }, /* 0xb3fc */ { true, 0xb3fc, 0xb3fc }, /* 0xb3fd */ { true, 0xb3fd, 0xb3fd }, /* 0xb3fe */ { true, 0xb3fe, 0xb3fe }, /* 0xb3ff */ { true, 0xb3ff, 0xb3ff }, /* 0xb400 */ { true, 0xb400, 0xb400 }, /* 0xb401 */ { true, 0xb401, 0xb401 }, /* 0xb402 */ { true, 0xb402, 0xb402 }, /* 0xb403 */ { true, 0xb403, 0xb403 }, /* 0xb404 */ { true, 0xb404, 0xb404 }, /* 0xb405 */ { true, 0xb405, 0xb405 }, /* 0xb406 */ { true, 0xb406, 0xb406 }, /* 0xb407 */ { true, 0xb407, 0xb407 }, /* 0xb408 */ { true, 0xb408, 0xb408 }, /* 0xb409 */ { true, 0xb409, 0xb409 }, /* 0xb40a */ { true, 0xb40a, 0xb40a }, /* 0xb40b */ { true, 0xb40b, 0xb40b }, /* 0xb40c */ { true, 0xb40c, 0xb40c }, /* 0xb40d */ { true, 0xb40d, 0xb40d }, /* 0xb40e */ { true, 0xb40e, 0xb40e }, /* 0xb40f */ { true, 0xb40f, 0xb40f }, /* 0xb410 */ { true, 0xb410, 0xb410 }, /* 0xb411 */ { true, 0xb411, 0xb411 }, /* 0xb412 */ { true, 0xb412, 0xb412 }, /* 0xb413 */ { true, 0xb413, 0xb413 }, /* 0xb414 */ { true, 0xb414, 0xb414 }, /* 0xb415 */ { true, 0xb415, 0xb415 }, /* 0xb416 */ { true, 0xb416, 0xb416 }, /* 0xb417 */ { true, 0xb417, 0xb417 }, /* 0xb418 */ { true, 0xb418, 0xb418 }, /* 0xb419 */ { true, 0xb419, 0xb419 }, /* 0xb41a */ { true, 0xb41a, 0xb41a }, /* 0xb41b */ { true, 0xb41b, 0xb41b }, /* 0xb41c */ { true, 0xb41c, 0xb41c }, /* 0xb41d */ { true, 0xb41d, 0xb41d }, /* 0xb41e */ { true, 0xb41e, 0xb41e }, /* 0xb41f */ { true, 0xb41f, 0xb41f }, /* 0xb420 */ { true, 0xb420, 0xb420 }, /* 0xb421 */ { true, 0xb421, 0xb421 }, /* 0xb422 */ { true, 0xb422, 0xb422 }, /* 0xb423 */ { true, 0xb423, 0xb423 }, /* 0xb424 */ { true, 0xb424, 0xb424 }, /* 0xb425 */ { true, 0xb425, 0xb425 }, /* 0xb426 */ { true, 0xb426, 0xb426 }, /* 0xb427 */ { true, 0xb427, 0xb427 }, /* 0xb428 */ { true, 0xb428, 0xb428 }, /* 0xb429 */ { true, 0xb429, 0xb429 }, /* 0xb42a */ { true, 0xb42a, 0xb42a }, /* 0xb42b */ { true, 0xb42b, 0xb42b }, /* 0xb42c */ { true, 0xb42c, 0xb42c }, /* 0xb42d */ { true, 0xb42d, 0xb42d }, /* 0xb42e */ { true, 0xb42e, 0xb42e }, /* 0xb42f */ { true, 0xb42f, 0xb42f }, /* 0xb430 */ { true, 0xb430, 0xb430 }, /* 0xb431 */ { true, 0xb431, 0xb431 }, /* 0xb432 */ { true, 0xb432, 0xb432 }, /* 0xb433 */ { true, 0xb433, 0xb433 }, /* 0xb434 */ { true, 0xb434, 0xb434 }, /* 0xb435 */ { true, 0xb435, 0xb435 }, /* 0xb436 */ { true, 0xb436, 0xb436 }, /* 0xb437 */ { true, 0xb437, 0xb437 }, /* 0xb438 */ { true, 0xb438, 0xb438 }, /* 0xb439 */ { true, 0xb439, 0xb439 }, /* 0xb43a */ { true, 0xb43a, 0xb43a }, /* 0xb43b */ { true, 0xb43b, 0xb43b }, /* 0xb43c */ { true, 0xb43c, 0xb43c }, /* 0xb43d */ { true, 0xb43d, 0xb43d }, /* 0xb43e */ { true, 0xb43e, 0xb43e }, /* 0xb43f */ { true, 0xb43f, 0xb43f }, /* 0xb440 */ { true, 0xb440, 0xb440 }, /* 0xb441 */ { true, 0xb441, 0xb441 }, /* 0xb442 */ { true, 0xb442, 0xb442 }, /* 0xb443 */ { true, 0xb443, 0xb443 }, /* 0xb444 */ { true, 0xb444, 0xb444 }, /* 0xb445 */ { true, 0xb445, 0xb445 }, /* 0xb446 */ { true, 0xb446, 0xb446 }, /* 0xb447 */ { true, 0xb447, 0xb447 }, /* 0xb448 */ { true, 0xb448, 0xb448 }, /* 0xb449 */ { true, 0xb449, 0xb449 }, /* 0xb44a */ { true, 0xb44a, 0xb44a }, /* 0xb44b */ { true, 0xb44b, 0xb44b }, /* 0xb44c */ { true, 0xb44c, 0xb44c }, /* 0xb44d */ { true, 0xb44d, 0xb44d }, /* 0xb44e */ { true, 0xb44e, 0xb44e }, /* 0xb44f */ { true, 0xb44f, 0xb44f }, /* 0xb450 */ { true, 0xb450, 0xb450 }, /* 0xb451 */ { true, 0xb451, 0xb451 }, /* 0xb452 */ { true, 0xb452, 0xb452 }, /* 0xb453 */ { true, 0xb453, 0xb453 }, /* 0xb454 */ { true, 0xb454, 0xb454 }, /* 0xb455 */ { true, 0xb455, 0xb455 }, /* 0xb456 */ { true, 0xb456, 0xb456 }, /* 0xb457 */ { true, 0xb457, 0xb457 }, /* 0xb458 */ { true, 0xb458, 0xb458 }, /* 0xb459 */ { true, 0xb459, 0xb459 }, /* 0xb45a */ { true, 0xb45a, 0xb45a }, /* 0xb45b */ { true, 0xb45b, 0xb45b }, /* 0xb45c */ { true, 0xb45c, 0xb45c }, /* 0xb45d */ { true, 0xb45d, 0xb45d }, /* 0xb45e */ { true, 0xb45e, 0xb45e }, /* 0xb45f */ { true, 0xb45f, 0xb45f }, /* 0xb460 */ { true, 0xb460, 0xb460 }, /* 0xb461 */ { true, 0xb461, 0xb461 }, /* 0xb462 */ { true, 0xb462, 0xb462 }, /* 0xb463 */ { true, 0xb463, 0xb463 }, /* 0xb464 */ { true, 0xb464, 0xb464 }, /* 0xb465 */ { true, 0xb465, 0xb465 }, /* 0xb466 */ { true, 0xb466, 0xb466 }, /* 0xb467 */ { true, 0xb467, 0xb467 }, /* 0xb468 */ { true, 0xb468, 0xb468 }, /* 0xb469 */ { true, 0xb469, 0xb469 }, /* 0xb46a */ { true, 0xb46a, 0xb46a }, /* 0xb46b */ { true, 0xb46b, 0xb46b }, /* 0xb46c */ { true, 0xb46c, 0xb46c }, /* 0xb46d */ { true, 0xb46d, 0xb46d }, /* 0xb46e */ { true, 0xb46e, 0xb46e }, /* 0xb46f */ { true, 0xb46f, 0xb46f }, /* 0xb470 */ { true, 0xb470, 0xb470 }, /* 0xb471 */ { true, 0xb471, 0xb471 }, /* 0xb472 */ { true, 0xb472, 0xb472 }, /* 0xb473 */ { true, 0xb473, 0xb473 }, /* 0xb474 */ { true, 0xb474, 0xb474 }, /* 0xb475 */ { true, 0xb475, 0xb475 }, /* 0xb476 */ { true, 0xb476, 0xb476 }, /* 0xb477 */ { true, 0xb477, 0xb477 }, /* 0xb478 */ { true, 0xb478, 0xb478 }, /* 0xb479 */ { true, 0xb479, 0xb479 }, /* 0xb47a */ { true, 0xb47a, 0xb47a }, /* 0xb47b */ { true, 0xb47b, 0xb47b }, /* 0xb47c */ { true, 0xb47c, 0xb47c }, /* 0xb47d */ { true, 0xb47d, 0xb47d }, /* 0xb47e */ { true, 0xb47e, 0xb47e }, /* 0xb47f */ { true, 0xb47f, 0xb47f }, /* 0xb480 */ { true, 0xb480, 0xb480 }, /* 0xb481 */ { true, 0xb481, 0xb481 }, /* 0xb482 */ { true, 0xb482, 0xb482 }, /* 0xb483 */ { true, 0xb483, 0xb483 }, /* 0xb484 */ { true, 0xb484, 0xb484 }, /* 0xb485 */ { true, 0xb485, 0xb485 }, /* 0xb486 */ { true, 0xb486, 0xb486 }, /* 0xb487 */ { true, 0xb487, 0xb487 }, /* 0xb488 */ { true, 0xb488, 0xb488 }, /* 0xb489 */ { true, 0xb489, 0xb489 }, /* 0xb48a */ { true, 0xb48a, 0xb48a }, /* 0xb48b */ { true, 0xb48b, 0xb48b }, /* 0xb48c */ { true, 0xb48c, 0xb48c }, /* 0xb48d */ { true, 0xb48d, 0xb48d }, /* 0xb48e */ { true, 0xb48e, 0xb48e }, /* 0xb48f */ { true, 0xb48f, 0xb48f }, /* 0xb490 */ { true, 0xb490, 0xb490 }, /* 0xb491 */ { true, 0xb491, 0xb491 }, /* 0xb492 */ { true, 0xb492, 0xb492 }, /* 0xb493 */ { true, 0xb493, 0xb493 }, /* 0xb494 */ { true, 0xb494, 0xb494 }, /* 0xb495 */ { true, 0xb495, 0xb495 }, /* 0xb496 */ { true, 0xb496, 0xb496 }, /* 0xb497 */ { true, 0xb497, 0xb497 }, /* 0xb498 */ { true, 0xb498, 0xb498 }, /* 0xb499 */ { true, 0xb499, 0xb499 }, /* 0xb49a */ { true, 0xb49a, 0xb49a }, /* 0xb49b */ { true, 0xb49b, 0xb49b }, /* 0xb49c */ { true, 0xb49c, 0xb49c }, /* 0xb49d */ { true, 0xb49d, 0xb49d }, /* 0xb49e */ { true, 0xb49e, 0xb49e }, /* 0xb49f */ { true, 0xb49f, 0xb49f }, /* 0xb4a0 */ { true, 0xb4a0, 0xb4a0 }, /* 0xb4a1 */ { true, 0xb4a1, 0xb4a1 }, /* 0xb4a2 */ { true, 0xb4a2, 0xb4a2 }, /* 0xb4a3 */ { true, 0xb4a3, 0xb4a3 }, /* 0xb4a4 */ { true, 0xb4a4, 0xb4a4 }, /* 0xb4a5 */ { true, 0xb4a5, 0xb4a5 }, /* 0xb4a6 */ { true, 0xb4a6, 0xb4a6 }, /* 0xb4a7 */ { true, 0xb4a7, 0xb4a7 }, /* 0xb4a8 */ { true, 0xb4a8, 0xb4a8 }, /* 0xb4a9 */ { true, 0xb4a9, 0xb4a9 }, /* 0xb4aa */ { true, 0xb4aa, 0xb4aa }, /* 0xb4ab */ { true, 0xb4ab, 0xb4ab }, /* 0xb4ac */ { true, 0xb4ac, 0xb4ac }, /* 0xb4ad */ { true, 0xb4ad, 0xb4ad }, /* 0xb4ae */ { true, 0xb4ae, 0xb4ae }, /* 0xb4af */ { true, 0xb4af, 0xb4af }, /* 0xb4b0 */ { true, 0xb4b0, 0xb4b0 }, /* 0xb4b1 */ { true, 0xb4b1, 0xb4b1 }, /* 0xb4b2 */ { true, 0xb4b2, 0xb4b2 }, /* 0xb4b3 */ { true, 0xb4b3, 0xb4b3 }, /* 0xb4b4 */ { true, 0xb4b4, 0xb4b4 }, /* 0xb4b5 */ { true, 0xb4b5, 0xb4b5 }, /* 0xb4b6 */ { true, 0xb4b6, 0xb4b6 }, /* 0xb4b7 */ { true, 0xb4b7, 0xb4b7 }, /* 0xb4b8 */ { true, 0xb4b8, 0xb4b8 }, /* 0xb4b9 */ { true, 0xb4b9, 0xb4b9 }, /* 0xb4ba */ { true, 0xb4ba, 0xb4ba }, /* 0xb4bb */ { true, 0xb4bb, 0xb4bb }, /* 0xb4bc */ { true, 0xb4bc, 0xb4bc }, /* 0xb4bd */ { true, 0xb4bd, 0xb4bd }, /* 0xb4be */ { true, 0xb4be, 0xb4be }, /* 0xb4bf */ { true, 0xb4bf, 0xb4bf }, /* 0xb4c0 */ { true, 0xb4c0, 0xb4c0 }, /* 0xb4c1 */ { true, 0xb4c1, 0xb4c1 }, /* 0xb4c2 */ { true, 0xb4c2, 0xb4c2 }, /* 0xb4c3 */ { true, 0xb4c3, 0xb4c3 }, /* 0xb4c4 */ { true, 0xb4c4, 0xb4c4 }, /* 0xb4c5 */ { true, 0xb4c5, 0xb4c5 }, /* 0xb4c6 */ { true, 0xb4c6, 0xb4c6 }, /* 0xb4c7 */ { true, 0xb4c7, 0xb4c7 }, /* 0xb4c8 */ { true, 0xb4c8, 0xb4c8 }, /* 0xb4c9 */ { true, 0xb4c9, 0xb4c9 }, /* 0xb4ca */ { true, 0xb4ca, 0xb4ca }, /* 0xb4cb */ { true, 0xb4cb, 0xb4cb }, /* 0xb4cc */ { true, 0xb4cc, 0xb4cc }, /* 0xb4cd */ { true, 0xb4cd, 0xb4cd }, /* 0xb4ce */ { true, 0xb4ce, 0xb4ce }, /* 0xb4cf */ { true, 0xb4cf, 0xb4cf }, /* 0xb4d0 */ { true, 0xb4d0, 0xb4d0 }, /* 0xb4d1 */ { true, 0xb4d1, 0xb4d1 }, /* 0xb4d2 */ { true, 0xb4d2, 0xb4d2 }, /* 0xb4d3 */ { true, 0xb4d3, 0xb4d3 }, /* 0xb4d4 */ { true, 0xb4d4, 0xb4d4 }, /* 0xb4d5 */ { true, 0xb4d5, 0xb4d5 }, /* 0xb4d6 */ { true, 0xb4d6, 0xb4d6 }, /* 0xb4d7 */ { true, 0xb4d7, 0xb4d7 }, /* 0xb4d8 */ { true, 0xb4d8, 0xb4d8 }, /* 0xb4d9 */ { true, 0xb4d9, 0xb4d9 }, /* 0xb4da */ { true, 0xb4da, 0xb4da }, /* 0xb4db */ { true, 0xb4db, 0xb4db }, /* 0xb4dc */ { true, 0xb4dc, 0xb4dc }, /* 0xb4dd */ { true, 0xb4dd, 0xb4dd }, /* 0xb4de */ { true, 0xb4de, 0xb4de }, /* 0xb4df */ { true, 0xb4df, 0xb4df }, /* 0xb4e0 */ { true, 0xb4e0, 0xb4e0 }, /* 0xb4e1 */ { true, 0xb4e1, 0xb4e1 }, /* 0xb4e2 */ { true, 0xb4e2, 0xb4e2 }, /* 0xb4e3 */ { true, 0xb4e3, 0xb4e3 }, /* 0xb4e4 */ { true, 0xb4e4, 0xb4e4 }, /* 0xb4e5 */ { true, 0xb4e5, 0xb4e5 }, /* 0xb4e6 */ { true, 0xb4e6, 0xb4e6 }, /* 0xb4e7 */ { true, 0xb4e7, 0xb4e7 }, /* 0xb4e8 */ { true, 0xb4e8, 0xb4e8 }, /* 0xb4e9 */ { true, 0xb4e9, 0xb4e9 }, /* 0xb4ea */ { true, 0xb4ea, 0xb4ea }, /* 0xb4eb */ { true, 0xb4eb, 0xb4eb }, /* 0xb4ec */ { true, 0xb4ec, 0xb4ec }, /* 0xb4ed */ { true, 0xb4ed, 0xb4ed }, /* 0xb4ee */ { true, 0xb4ee, 0xb4ee }, /* 0xb4ef */ { true, 0xb4ef, 0xb4ef }, /* 0xb4f0 */ { true, 0xb4f0, 0xb4f0 }, /* 0xb4f1 */ { true, 0xb4f1, 0xb4f1 }, /* 0xb4f2 */ { true, 0xb4f2, 0xb4f2 }, /* 0xb4f3 */ { true, 0xb4f3, 0xb4f3 }, /* 0xb4f4 */ { true, 0xb4f4, 0xb4f4 }, /* 0xb4f5 */ { true, 0xb4f5, 0xb4f5 }, /* 0xb4f6 */ { true, 0xb4f6, 0xb4f6 }, /* 0xb4f7 */ { true, 0xb4f7, 0xb4f7 }, /* 0xb4f8 */ { true, 0xb4f8, 0xb4f8 }, /* 0xb4f9 */ { true, 0xb4f9, 0xb4f9 }, /* 0xb4fa */ { true, 0xb4fa, 0xb4fa }, /* 0xb4fb */ { true, 0xb4fb, 0xb4fb }, /* 0xb4fc */ { true, 0xb4fc, 0xb4fc }, /* 0xb4fd */ { true, 0xb4fd, 0xb4fd }, /* 0xb4fe */ { true, 0xb4fe, 0xb4fe }, /* 0xb4ff */ { true, 0xb4ff, 0xb4ff }, /* 0xb500 */ { true, 0xb500, 0xb500 }, /* 0xb501 */ { true, 0xb501, 0xb501 }, /* 0xb502 */ { true, 0xb502, 0xb502 }, /* 0xb503 */ { true, 0xb503, 0xb503 }, /* 0xb504 */ { true, 0xb504, 0xb504 }, /* 0xb505 */ { true, 0xb505, 0xb505 }, /* 0xb506 */ { true, 0xb506, 0xb506 }, /* 0xb507 */ { true, 0xb507, 0xb507 }, /* 0xb508 */ { true, 0xb508, 0xb508 }, /* 0xb509 */ { true, 0xb509, 0xb509 }, /* 0xb50a */ { true, 0xb50a, 0xb50a }, /* 0xb50b */ { true, 0xb50b, 0xb50b }, /* 0xb50c */ { true, 0xb50c, 0xb50c }, /* 0xb50d */ { true, 0xb50d, 0xb50d }, /* 0xb50e */ { true, 0xb50e, 0xb50e }, /* 0xb50f */ { true, 0xb50f, 0xb50f }, /* 0xb510 */ { true, 0xb510, 0xb510 }, /* 0xb511 */ { true, 0xb511, 0xb511 }, /* 0xb512 */ { true, 0xb512, 0xb512 }, /* 0xb513 */ { true, 0xb513, 0xb513 }, /* 0xb514 */ { true, 0xb514, 0xb514 }, /* 0xb515 */ { true, 0xb515, 0xb515 }, /* 0xb516 */ { true, 0xb516, 0xb516 }, /* 0xb517 */ { true, 0xb517, 0xb517 }, /* 0xb518 */ { true, 0xb518, 0xb518 }, /* 0xb519 */ { true, 0xb519, 0xb519 }, /* 0xb51a */ { true, 0xb51a, 0xb51a }, /* 0xb51b */ { true, 0xb51b, 0xb51b }, /* 0xb51c */ { true, 0xb51c, 0xb51c }, /* 0xb51d */ { true, 0xb51d, 0xb51d }, /* 0xb51e */ { true, 0xb51e, 0xb51e }, /* 0xb51f */ { true, 0xb51f, 0xb51f }, /* 0xb520 */ { true, 0xb520, 0xb520 }, /* 0xb521 */ { true, 0xb521, 0xb521 }, /* 0xb522 */ { true, 0xb522, 0xb522 }, /* 0xb523 */ { true, 0xb523, 0xb523 }, /* 0xb524 */ { true, 0xb524, 0xb524 }, /* 0xb525 */ { true, 0xb525, 0xb525 }, /* 0xb526 */ { true, 0xb526, 0xb526 }, /* 0xb527 */ { true, 0xb527, 0xb527 }, /* 0xb528 */ { true, 0xb528, 0xb528 }, /* 0xb529 */ { true, 0xb529, 0xb529 }, /* 0xb52a */ { true, 0xb52a, 0xb52a }, /* 0xb52b */ { true, 0xb52b, 0xb52b }, /* 0xb52c */ { true, 0xb52c, 0xb52c }, /* 0xb52d */ { true, 0xb52d, 0xb52d }, /* 0xb52e */ { true, 0xb52e, 0xb52e }, /* 0xb52f */ { true, 0xb52f, 0xb52f }, /* 0xb530 */ { true, 0xb530, 0xb530 }, /* 0xb531 */ { true, 0xb531, 0xb531 }, /* 0xb532 */ { true, 0xb532, 0xb532 }, /* 0xb533 */ { true, 0xb533, 0xb533 }, /* 0xb534 */ { true, 0xb534, 0xb534 }, /* 0xb535 */ { true, 0xb535, 0xb535 }, /* 0xb536 */ { true, 0xb536, 0xb536 }, /* 0xb537 */ { true, 0xb537, 0xb537 }, /* 0xb538 */ { true, 0xb538, 0xb538 }, /* 0xb539 */ { true, 0xb539, 0xb539 }, /* 0xb53a */ { true, 0xb53a, 0xb53a }, /* 0xb53b */ { true, 0xb53b, 0xb53b }, /* 0xb53c */ { true, 0xb53c, 0xb53c }, /* 0xb53d */ { true, 0xb53d, 0xb53d }, /* 0xb53e */ { true, 0xb53e, 0xb53e }, /* 0xb53f */ { true, 0xb53f, 0xb53f }, /* 0xb540 */ { true, 0xb540, 0xb540 }, /* 0xb541 */ { true, 0xb541, 0xb541 }, /* 0xb542 */ { true, 0xb542, 0xb542 }, /* 0xb543 */ { true, 0xb543, 0xb543 }, /* 0xb544 */ { true, 0xb544, 0xb544 }, /* 0xb545 */ { true, 0xb545, 0xb545 }, /* 0xb546 */ { true, 0xb546, 0xb546 }, /* 0xb547 */ { true, 0xb547, 0xb547 }, /* 0xb548 */ { true, 0xb548, 0xb548 }, /* 0xb549 */ { true, 0xb549, 0xb549 }, /* 0xb54a */ { true, 0xb54a, 0xb54a }, /* 0xb54b */ { true, 0xb54b, 0xb54b }, /* 0xb54c */ { true, 0xb54c, 0xb54c }, /* 0xb54d */ { true, 0xb54d, 0xb54d }, /* 0xb54e */ { true, 0xb54e, 0xb54e }, /* 0xb54f */ { true, 0xb54f, 0xb54f }, /* 0xb550 */ { true, 0xb550, 0xb550 }, /* 0xb551 */ { true, 0xb551, 0xb551 }, /* 0xb552 */ { true, 0xb552, 0xb552 }, /* 0xb553 */ { true, 0xb553, 0xb553 }, /* 0xb554 */ { true, 0xb554, 0xb554 }, /* 0xb555 */ { true, 0xb555, 0xb555 }, /* 0xb556 */ { true, 0xb556, 0xb556 }, /* 0xb557 */ { true, 0xb557, 0xb557 }, /* 0xb558 */ { true, 0xb558, 0xb558 }, /* 0xb559 */ { true, 0xb559, 0xb559 }, /* 0xb55a */ { true, 0xb55a, 0xb55a }, /* 0xb55b */ { true, 0xb55b, 0xb55b }, /* 0xb55c */ { true, 0xb55c, 0xb55c }, /* 0xb55d */ { true, 0xb55d, 0xb55d }, /* 0xb55e */ { true, 0xb55e, 0xb55e }, /* 0xb55f */ { true, 0xb55f, 0xb55f }, /* 0xb560 */ { true, 0xb560, 0xb560 }, /* 0xb561 */ { true, 0xb561, 0xb561 }, /* 0xb562 */ { true, 0xb562, 0xb562 }, /* 0xb563 */ { true, 0xb563, 0xb563 }, /* 0xb564 */ { true, 0xb564, 0xb564 }, /* 0xb565 */ { true, 0xb565, 0xb565 }, /* 0xb566 */ { true, 0xb566, 0xb566 }, /* 0xb567 */ { true, 0xb567, 0xb567 }, /* 0xb568 */ { true, 0xb568, 0xb568 }, /* 0xb569 */ { true, 0xb569, 0xb569 }, /* 0xb56a */ { true, 0xb56a, 0xb56a }, /* 0xb56b */ { true, 0xb56b, 0xb56b }, /* 0xb56c */ { true, 0xb56c, 0xb56c }, /* 0xb56d */ { true, 0xb56d, 0xb56d }, /* 0xb56e */ { true, 0xb56e, 0xb56e }, /* 0xb56f */ { true, 0xb56f, 0xb56f }, /* 0xb570 */ { true, 0xb570, 0xb570 }, /* 0xb571 */ { true, 0xb571, 0xb571 }, /* 0xb572 */ { true, 0xb572, 0xb572 }, /* 0xb573 */ { true, 0xb573, 0xb573 }, /* 0xb574 */ { true, 0xb574, 0xb574 }, /* 0xb575 */ { true, 0xb575, 0xb575 }, /* 0xb576 */ { true, 0xb576, 0xb576 }, /* 0xb577 */ { true, 0xb577, 0xb577 }, /* 0xb578 */ { true, 0xb578, 0xb578 }, /* 0xb579 */ { true, 0xb579, 0xb579 }, /* 0xb57a */ { true, 0xb57a, 0xb57a }, /* 0xb57b */ { true, 0xb57b, 0xb57b }, /* 0xb57c */ { true, 0xb57c, 0xb57c }, /* 0xb57d */ { true, 0xb57d, 0xb57d }, /* 0xb57e */ { true, 0xb57e, 0xb57e }, /* 0xb57f */ { true, 0xb57f, 0xb57f }, /* 0xb580 */ { true, 0xb580, 0xb580 }, /* 0xb581 */ { true, 0xb581, 0xb581 }, /* 0xb582 */ { true, 0xb582, 0xb582 }, /* 0xb583 */ { true, 0xb583, 0xb583 }, /* 0xb584 */ { true, 0xb584, 0xb584 }, /* 0xb585 */ { true, 0xb585, 0xb585 }, /* 0xb586 */ { true, 0xb586, 0xb586 }, /* 0xb587 */ { true, 0xb587, 0xb587 }, /* 0xb588 */ { true, 0xb588, 0xb588 }, /* 0xb589 */ { true, 0xb589, 0xb589 }, /* 0xb58a */ { true, 0xb58a, 0xb58a }, /* 0xb58b */ { true, 0xb58b, 0xb58b }, /* 0xb58c */ { true, 0xb58c, 0xb58c }, /* 0xb58d */ { true, 0xb58d, 0xb58d }, /* 0xb58e */ { true, 0xb58e, 0xb58e }, /* 0xb58f */ { true, 0xb58f, 0xb58f }, /* 0xb590 */ { true, 0xb590, 0xb590 }, /* 0xb591 */ { true, 0xb591, 0xb591 }, /* 0xb592 */ { true, 0xb592, 0xb592 }, /* 0xb593 */ { true, 0xb593, 0xb593 }, /* 0xb594 */ { true, 0xb594, 0xb594 }, /* 0xb595 */ { true, 0xb595, 0xb595 }, /* 0xb596 */ { true, 0xb596, 0xb596 }, /* 0xb597 */ { true, 0xb597, 0xb597 }, /* 0xb598 */ { true, 0xb598, 0xb598 }, /* 0xb599 */ { true, 0xb599, 0xb599 }, /* 0xb59a */ { true, 0xb59a, 0xb59a }, /* 0xb59b */ { true, 0xb59b, 0xb59b }, /* 0xb59c */ { true, 0xb59c, 0xb59c }, /* 0xb59d */ { true, 0xb59d, 0xb59d }, /* 0xb59e */ { true, 0xb59e, 0xb59e }, /* 0xb59f */ { true, 0xb59f, 0xb59f }, /* 0xb5a0 */ { true, 0xb5a0, 0xb5a0 }, /* 0xb5a1 */ { true, 0xb5a1, 0xb5a1 }, /* 0xb5a2 */ { true, 0xb5a2, 0xb5a2 }, /* 0xb5a3 */ { true, 0xb5a3, 0xb5a3 }, /* 0xb5a4 */ { true, 0xb5a4, 0xb5a4 }, /* 0xb5a5 */ { true, 0xb5a5, 0xb5a5 }, /* 0xb5a6 */ { true, 0xb5a6, 0xb5a6 }, /* 0xb5a7 */ { true, 0xb5a7, 0xb5a7 }, /* 0xb5a8 */ { true, 0xb5a8, 0xb5a8 }, /* 0xb5a9 */ { true, 0xb5a9, 0xb5a9 }, /* 0xb5aa */ { true, 0xb5aa, 0xb5aa }, /* 0xb5ab */ { true, 0xb5ab, 0xb5ab }, /* 0xb5ac */ { true, 0xb5ac, 0xb5ac }, /* 0xb5ad */ { true, 0xb5ad, 0xb5ad }, /* 0xb5ae */ { true, 0xb5ae, 0xb5ae }, /* 0xb5af */ { true, 0xb5af, 0xb5af }, /* 0xb5b0 */ { true, 0xb5b0, 0xb5b0 }, /* 0xb5b1 */ { true, 0xb5b1, 0xb5b1 }, /* 0xb5b2 */ { true, 0xb5b2, 0xb5b2 }, /* 0xb5b3 */ { true, 0xb5b3, 0xb5b3 }, /* 0xb5b4 */ { true, 0xb5b4, 0xb5b4 }, /* 0xb5b5 */ { true, 0xb5b5, 0xb5b5 }, /* 0xb5b6 */ { true, 0xb5b6, 0xb5b6 }, /* 0xb5b7 */ { true, 0xb5b7, 0xb5b7 }, /* 0xb5b8 */ { true, 0xb5b8, 0xb5b8 }, /* 0xb5b9 */ { true, 0xb5b9, 0xb5b9 }, /* 0xb5ba */ { true, 0xb5ba, 0xb5ba }, /* 0xb5bb */ { true, 0xb5bb, 0xb5bb }, /* 0xb5bc */ { true, 0xb5bc, 0xb5bc }, /* 0xb5bd */ { true, 0xb5bd, 0xb5bd }, /* 0xb5be */ { true, 0xb5be, 0xb5be }, /* 0xb5bf */ { true, 0xb5bf, 0xb5bf }, /* 0xb5c0 */ { true, 0xb5c0, 0xb5c0 }, /* 0xb5c1 */ { true, 0xb5c1, 0xb5c1 }, /* 0xb5c2 */ { true, 0xb5c2, 0xb5c2 }, /* 0xb5c3 */ { true, 0xb5c3, 0xb5c3 }, /* 0xb5c4 */ { true, 0xb5c4, 0xb5c4 }, /* 0xb5c5 */ { true, 0xb5c5, 0xb5c5 }, /* 0xb5c6 */ { true, 0xb5c6, 0xb5c6 }, /* 0xb5c7 */ { true, 0xb5c7, 0xb5c7 }, /* 0xb5c8 */ { true, 0xb5c8, 0xb5c8 }, /* 0xb5c9 */ { true, 0xb5c9, 0xb5c9 }, /* 0xb5ca */ { true, 0xb5ca, 0xb5ca }, /* 0xb5cb */ { true, 0xb5cb, 0xb5cb }, /* 0xb5cc */ { true, 0xb5cc, 0xb5cc }, /* 0xb5cd */ { true, 0xb5cd, 0xb5cd }, /* 0xb5ce */ { true, 0xb5ce, 0xb5ce }, /* 0xb5cf */ { true, 0xb5cf, 0xb5cf }, /* 0xb5d0 */ { true, 0xb5d0, 0xb5d0 }, /* 0xb5d1 */ { true, 0xb5d1, 0xb5d1 }, /* 0xb5d2 */ { true, 0xb5d2, 0xb5d2 }, /* 0xb5d3 */ { true, 0xb5d3, 0xb5d3 }, /* 0xb5d4 */ { true, 0xb5d4, 0xb5d4 }, /* 0xb5d5 */ { true, 0xb5d5, 0xb5d5 }, /* 0xb5d6 */ { true, 0xb5d6, 0xb5d6 }, /* 0xb5d7 */ { true, 0xb5d7, 0xb5d7 }, /* 0xb5d8 */ { true, 0xb5d8, 0xb5d8 }, /* 0xb5d9 */ { true, 0xb5d9, 0xb5d9 }, /* 0xb5da */ { true, 0xb5da, 0xb5da }, /* 0xb5db */ { true, 0xb5db, 0xb5db }, /* 0xb5dc */ { true, 0xb5dc, 0xb5dc }, /* 0xb5dd */ { true, 0xb5dd, 0xb5dd }, /* 0xb5de */ { true, 0xb5de, 0xb5de }, /* 0xb5df */ { true, 0xb5df, 0xb5df }, /* 0xb5e0 */ { true, 0xb5e0, 0xb5e0 }, /* 0xb5e1 */ { true, 0xb5e1, 0xb5e1 }, /* 0xb5e2 */ { true, 0xb5e2, 0xb5e2 }, /* 0xb5e3 */ { true, 0xb5e3, 0xb5e3 }, /* 0xb5e4 */ { true, 0xb5e4, 0xb5e4 }, /* 0xb5e5 */ { true, 0xb5e5, 0xb5e5 }, /* 0xb5e6 */ { true, 0xb5e6, 0xb5e6 }, /* 0xb5e7 */ { true, 0xb5e7, 0xb5e7 }, /* 0xb5e8 */ { true, 0xb5e8, 0xb5e8 }, /* 0xb5e9 */ { true, 0xb5e9, 0xb5e9 }, /* 0xb5ea */ { true, 0xb5ea, 0xb5ea }, /* 0xb5eb */ { true, 0xb5eb, 0xb5eb }, /* 0xb5ec */ { true, 0xb5ec, 0xb5ec }, /* 0xb5ed */ { true, 0xb5ed, 0xb5ed }, /* 0xb5ee */ { true, 0xb5ee, 0xb5ee }, /* 0xb5ef */ { true, 0xb5ef, 0xb5ef }, /* 0xb5f0 */ { true, 0xb5f0, 0xb5f0 }, /* 0xb5f1 */ { true, 0xb5f1, 0xb5f1 }, /* 0xb5f2 */ { true, 0xb5f2, 0xb5f2 }, /* 0xb5f3 */ { true, 0xb5f3, 0xb5f3 }, /* 0xb5f4 */ { true, 0xb5f4, 0xb5f4 }, /* 0xb5f5 */ { true, 0xb5f5, 0xb5f5 }, /* 0xb5f6 */ { true, 0xb5f6, 0xb5f6 }, /* 0xb5f7 */ { true, 0xb5f7, 0xb5f7 }, /* 0xb5f8 */ { true, 0xb5f8, 0xb5f8 }, /* 0xb5f9 */ { true, 0xb5f9, 0xb5f9 }, /* 0xb5fa */ { true, 0xb5fa, 0xb5fa }, /* 0xb5fb */ { true, 0xb5fb, 0xb5fb }, /* 0xb5fc */ { true, 0xb5fc, 0xb5fc }, /* 0xb5fd */ { true, 0xb5fd, 0xb5fd }, /* 0xb5fe */ { true, 0xb5fe, 0xb5fe }, /* 0xb5ff */ { true, 0xb5ff, 0xb5ff }, /* 0xb600 */ { true, 0xb600, 0xb600 }, /* 0xb601 */ { true, 0xb601, 0xb601 }, /* 0xb602 */ { true, 0xb602, 0xb602 }, /* 0xb603 */ { true, 0xb603, 0xb603 }, /* 0xb604 */ { true, 0xb604, 0xb604 }, /* 0xb605 */ { true, 0xb605, 0xb605 }, /* 0xb606 */ { true, 0xb606, 0xb606 }, /* 0xb607 */ { true, 0xb607, 0xb607 }, /* 0xb608 */ { true, 0xb608, 0xb608 }, /* 0xb609 */ { true, 0xb609, 0xb609 }, /* 0xb60a */ { true, 0xb60a, 0xb60a }, /* 0xb60b */ { true, 0xb60b, 0xb60b }, /* 0xb60c */ { true, 0xb60c, 0xb60c }, /* 0xb60d */ { true, 0xb60d, 0xb60d }, /* 0xb60e */ { true, 0xb60e, 0xb60e }, /* 0xb60f */ { true, 0xb60f, 0xb60f }, /* 0xb610 */ { true, 0xb610, 0xb610 }, /* 0xb611 */ { true, 0xb611, 0xb611 }, /* 0xb612 */ { true, 0xb612, 0xb612 }, /* 0xb613 */ { true, 0xb613, 0xb613 }, /* 0xb614 */ { true, 0xb614, 0xb614 }, /* 0xb615 */ { true, 0xb615, 0xb615 }, /* 0xb616 */ { true, 0xb616, 0xb616 }, /* 0xb617 */ { true, 0xb617, 0xb617 }, /* 0xb618 */ { true, 0xb618, 0xb618 }, /* 0xb619 */ { true, 0xb619, 0xb619 }, /* 0xb61a */ { true, 0xb61a, 0xb61a }, /* 0xb61b */ { true, 0xb61b, 0xb61b }, /* 0xb61c */ { true, 0xb61c, 0xb61c }, /* 0xb61d */ { true, 0xb61d, 0xb61d }, /* 0xb61e */ { true, 0xb61e, 0xb61e }, /* 0xb61f */ { true, 0xb61f, 0xb61f }, /* 0xb620 */ { true, 0xb620, 0xb620 }, /* 0xb621 */ { true, 0xb621, 0xb621 }, /* 0xb622 */ { true, 0xb622, 0xb622 }, /* 0xb623 */ { true, 0xb623, 0xb623 }, /* 0xb624 */ { true, 0xb624, 0xb624 }, /* 0xb625 */ { true, 0xb625, 0xb625 }, /* 0xb626 */ { true, 0xb626, 0xb626 }, /* 0xb627 */ { true, 0xb627, 0xb627 }, /* 0xb628 */ { true, 0xb628, 0xb628 }, /* 0xb629 */ { true, 0xb629, 0xb629 }, /* 0xb62a */ { true, 0xb62a, 0xb62a }, /* 0xb62b */ { true, 0xb62b, 0xb62b }, /* 0xb62c */ { true, 0xb62c, 0xb62c }, /* 0xb62d */ { true, 0xb62d, 0xb62d }, /* 0xb62e */ { true, 0xb62e, 0xb62e }, /* 0xb62f */ { true, 0xb62f, 0xb62f }, /* 0xb630 */ { true, 0xb630, 0xb630 }, /* 0xb631 */ { true, 0xb631, 0xb631 }, /* 0xb632 */ { true, 0xb632, 0xb632 }, /* 0xb633 */ { true, 0xb633, 0xb633 }, /* 0xb634 */ { true, 0xb634, 0xb634 }, /* 0xb635 */ { true, 0xb635, 0xb635 }, /* 0xb636 */ { true, 0xb636, 0xb636 }, /* 0xb637 */ { true, 0xb637, 0xb637 }, /* 0xb638 */ { true, 0xb638, 0xb638 }, /* 0xb639 */ { true, 0xb639, 0xb639 }, /* 0xb63a */ { true, 0xb63a, 0xb63a }, /* 0xb63b */ { true, 0xb63b, 0xb63b }, /* 0xb63c */ { true, 0xb63c, 0xb63c }, /* 0xb63d */ { true, 0xb63d, 0xb63d }, /* 0xb63e */ { true, 0xb63e, 0xb63e }, /* 0xb63f */ { true, 0xb63f, 0xb63f }, /* 0xb640 */ { true, 0xb640, 0xb640 }, /* 0xb641 */ { true, 0xb641, 0xb641 }, /* 0xb642 */ { true, 0xb642, 0xb642 }, /* 0xb643 */ { true, 0xb643, 0xb643 }, /* 0xb644 */ { true, 0xb644, 0xb644 }, /* 0xb645 */ { true, 0xb645, 0xb645 }, /* 0xb646 */ { true, 0xb646, 0xb646 }, /* 0xb647 */ { true, 0xb647, 0xb647 }, /* 0xb648 */ { true, 0xb648, 0xb648 }, /* 0xb649 */ { true, 0xb649, 0xb649 }, /* 0xb64a */ { true, 0xb64a, 0xb64a }, /* 0xb64b */ { true, 0xb64b, 0xb64b }, /* 0xb64c */ { true, 0xb64c, 0xb64c }, /* 0xb64d */ { true, 0xb64d, 0xb64d }, /* 0xb64e */ { true, 0xb64e, 0xb64e }, /* 0xb64f */ { true, 0xb64f, 0xb64f }, /* 0xb650 */ { true, 0xb650, 0xb650 }, /* 0xb651 */ { true, 0xb651, 0xb651 }, /* 0xb652 */ { true, 0xb652, 0xb652 }, /* 0xb653 */ { true, 0xb653, 0xb653 }, /* 0xb654 */ { true, 0xb654, 0xb654 }, /* 0xb655 */ { true, 0xb655, 0xb655 }, /* 0xb656 */ { true, 0xb656, 0xb656 }, /* 0xb657 */ { true, 0xb657, 0xb657 }, /* 0xb658 */ { true, 0xb658, 0xb658 }, /* 0xb659 */ { true, 0xb659, 0xb659 }, /* 0xb65a */ { true, 0xb65a, 0xb65a }, /* 0xb65b */ { true, 0xb65b, 0xb65b }, /* 0xb65c */ { true, 0xb65c, 0xb65c }, /* 0xb65d */ { true, 0xb65d, 0xb65d }, /* 0xb65e */ { true, 0xb65e, 0xb65e }, /* 0xb65f */ { true, 0xb65f, 0xb65f }, /* 0xb660 */ { true, 0xb660, 0xb660 }, /* 0xb661 */ { true, 0xb661, 0xb661 }, /* 0xb662 */ { true, 0xb662, 0xb662 }, /* 0xb663 */ { true, 0xb663, 0xb663 }, /* 0xb664 */ { true, 0xb664, 0xb664 }, /* 0xb665 */ { true, 0xb665, 0xb665 }, /* 0xb666 */ { true, 0xb666, 0xb666 }, /* 0xb667 */ { true, 0xb667, 0xb667 }, /* 0xb668 */ { true, 0xb668, 0xb668 }, /* 0xb669 */ { true, 0xb669, 0xb669 }, /* 0xb66a */ { true, 0xb66a, 0xb66a }, /* 0xb66b */ { true, 0xb66b, 0xb66b }, /* 0xb66c */ { true, 0xb66c, 0xb66c }, /* 0xb66d */ { true, 0xb66d, 0xb66d }, /* 0xb66e */ { true, 0xb66e, 0xb66e }, /* 0xb66f */ { true, 0xb66f, 0xb66f }, /* 0xb670 */ { true, 0xb670, 0xb670 }, /* 0xb671 */ { true, 0xb671, 0xb671 }, /* 0xb672 */ { true, 0xb672, 0xb672 }, /* 0xb673 */ { true, 0xb673, 0xb673 }, /* 0xb674 */ { true, 0xb674, 0xb674 }, /* 0xb675 */ { true, 0xb675, 0xb675 }, /* 0xb676 */ { true, 0xb676, 0xb676 }, /* 0xb677 */ { true, 0xb677, 0xb677 }, /* 0xb678 */ { true, 0xb678, 0xb678 }, /* 0xb679 */ { true, 0xb679, 0xb679 }, /* 0xb67a */ { true, 0xb67a, 0xb67a }, /* 0xb67b */ { true, 0xb67b, 0xb67b }, /* 0xb67c */ { true, 0xb67c, 0xb67c }, /* 0xb67d */ { true, 0xb67d, 0xb67d }, /* 0xb67e */ { true, 0xb67e, 0xb67e }, /* 0xb67f */ { true, 0xb67f, 0xb67f }, /* 0xb680 */ { true, 0xb680, 0xb680 }, /* 0xb681 */ { true, 0xb681, 0xb681 }, /* 0xb682 */ { true, 0xb682, 0xb682 }, /* 0xb683 */ { true, 0xb683, 0xb683 }, /* 0xb684 */ { true, 0xb684, 0xb684 }, /* 0xb685 */ { true, 0xb685, 0xb685 }, /* 0xb686 */ { true, 0xb686, 0xb686 }, /* 0xb687 */ { true, 0xb687, 0xb687 }, /* 0xb688 */ { true, 0xb688, 0xb688 }, /* 0xb689 */ { true, 0xb689, 0xb689 }, /* 0xb68a */ { true, 0xb68a, 0xb68a }, /* 0xb68b */ { true, 0xb68b, 0xb68b }, /* 0xb68c */ { true, 0xb68c, 0xb68c }, /* 0xb68d */ { true, 0xb68d, 0xb68d }, /* 0xb68e */ { true, 0xb68e, 0xb68e }, /* 0xb68f */ { true, 0xb68f, 0xb68f }, /* 0xb690 */ { true, 0xb690, 0xb690 }, /* 0xb691 */ { true, 0xb691, 0xb691 }, /* 0xb692 */ { true, 0xb692, 0xb692 }, /* 0xb693 */ { true, 0xb693, 0xb693 }, /* 0xb694 */ { true, 0xb694, 0xb694 }, /* 0xb695 */ { true, 0xb695, 0xb695 }, /* 0xb696 */ { true, 0xb696, 0xb696 }, /* 0xb697 */ { true, 0xb697, 0xb697 }, /* 0xb698 */ { true, 0xb698, 0xb698 }, /* 0xb699 */ { true, 0xb699, 0xb699 }, /* 0xb69a */ { true, 0xb69a, 0xb69a }, /* 0xb69b */ { true, 0xb69b, 0xb69b }, /* 0xb69c */ { true, 0xb69c, 0xb69c }, /* 0xb69d */ { true, 0xb69d, 0xb69d }, /* 0xb69e */ { true, 0xb69e, 0xb69e }, /* 0xb69f */ { true, 0xb69f, 0xb69f }, /* 0xb6a0 */ { true, 0xb6a0, 0xb6a0 }, /* 0xb6a1 */ { true, 0xb6a1, 0xb6a1 }, /* 0xb6a2 */ { true, 0xb6a2, 0xb6a2 }, /* 0xb6a3 */ { true, 0xb6a3, 0xb6a3 }, /* 0xb6a4 */ { true, 0xb6a4, 0xb6a4 }, /* 0xb6a5 */ { true, 0xb6a5, 0xb6a5 }, /* 0xb6a6 */ { true, 0xb6a6, 0xb6a6 }, /* 0xb6a7 */ { true, 0xb6a7, 0xb6a7 }, /* 0xb6a8 */ { true, 0xb6a8, 0xb6a8 }, /* 0xb6a9 */ { true, 0xb6a9, 0xb6a9 }, /* 0xb6aa */ { true, 0xb6aa, 0xb6aa }, /* 0xb6ab */ { true, 0xb6ab, 0xb6ab }, /* 0xb6ac */ { true, 0xb6ac, 0xb6ac }, /* 0xb6ad */ { true, 0xb6ad, 0xb6ad }, /* 0xb6ae */ { true, 0xb6ae, 0xb6ae }, /* 0xb6af */ { true, 0xb6af, 0xb6af }, /* 0xb6b0 */ { true, 0xb6b0, 0xb6b0 }, /* 0xb6b1 */ { true, 0xb6b1, 0xb6b1 }, /* 0xb6b2 */ { true, 0xb6b2, 0xb6b2 }, /* 0xb6b3 */ { true, 0xb6b3, 0xb6b3 }, /* 0xb6b4 */ { true, 0xb6b4, 0xb6b4 }, /* 0xb6b5 */ { true, 0xb6b5, 0xb6b5 }, /* 0xb6b6 */ { true, 0xb6b6, 0xb6b6 }, /* 0xb6b7 */ { true, 0xb6b7, 0xb6b7 }, /* 0xb6b8 */ { true, 0xb6b8, 0xb6b8 }, /* 0xb6b9 */ { true, 0xb6b9, 0xb6b9 }, /* 0xb6ba */ { true, 0xb6ba, 0xb6ba }, /* 0xb6bb */ { true, 0xb6bb, 0xb6bb }, /* 0xb6bc */ { true, 0xb6bc, 0xb6bc }, /* 0xb6bd */ { true, 0xb6bd, 0xb6bd }, /* 0xb6be */ { true, 0xb6be, 0xb6be }, /* 0xb6bf */ { true, 0xb6bf, 0xb6bf }, /* 0xb6c0 */ { true, 0xb6c0, 0xb6c0 }, /* 0xb6c1 */ { true, 0xb6c1, 0xb6c1 }, /* 0xb6c2 */ { true, 0xb6c2, 0xb6c2 }, /* 0xb6c3 */ { true, 0xb6c3, 0xb6c3 }, /* 0xb6c4 */ { true, 0xb6c4, 0xb6c4 }, /* 0xb6c5 */ { true, 0xb6c5, 0xb6c5 }, /* 0xb6c6 */ { true, 0xb6c6, 0xb6c6 }, /* 0xb6c7 */ { true, 0xb6c7, 0xb6c7 }, /* 0xb6c8 */ { true, 0xb6c8, 0xb6c8 }, /* 0xb6c9 */ { true, 0xb6c9, 0xb6c9 }, /* 0xb6ca */ { true, 0xb6ca, 0xb6ca }, /* 0xb6cb */ { true, 0xb6cb, 0xb6cb }, /* 0xb6cc */ { true, 0xb6cc, 0xb6cc }, /* 0xb6cd */ { true, 0xb6cd, 0xb6cd }, /* 0xb6ce */ { true, 0xb6ce, 0xb6ce }, /* 0xb6cf */ { true, 0xb6cf, 0xb6cf }, /* 0xb6d0 */ { true, 0xb6d0, 0xb6d0 }, /* 0xb6d1 */ { true, 0xb6d1, 0xb6d1 }, /* 0xb6d2 */ { true, 0xb6d2, 0xb6d2 }, /* 0xb6d3 */ { true, 0xb6d3, 0xb6d3 }, /* 0xb6d4 */ { true, 0xb6d4, 0xb6d4 }, /* 0xb6d5 */ { true, 0xb6d5, 0xb6d5 }, /* 0xb6d6 */ { true, 0xb6d6, 0xb6d6 }, /* 0xb6d7 */ { true, 0xb6d7, 0xb6d7 }, /* 0xb6d8 */ { true, 0xb6d8, 0xb6d8 }, /* 0xb6d9 */ { true, 0xb6d9, 0xb6d9 }, /* 0xb6da */ { true, 0xb6da, 0xb6da }, /* 0xb6db */ { true, 0xb6db, 0xb6db }, /* 0xb6dc */ { true, 0xb6dc, 0xb6dc }, /* 0xb6dd */ { true, 0xb6dd, 0xb6dd }, /* 0xb6de */ { true, 0xb6de, 0xb6de }, /* 0xb6df */ { true, 0xb6df, 0xb6df }, /* 0xb6e0 */ { true, 0xb6e0, 0xb6e0 }, /* 0xb6e1 */ { true, 0xb6e1, 0xb6e1 }, /* 0xb6e2 */ { true, 0xb6e2, 0xb6e2 }, /* 0xb6e3 */ { true, 0xb6e3, 0xb6e3 }, /* 0xb6e4 */ { true, 0xb6e4, 0xb6e4 }, /* 0xb6e5 */ { true, 0xb6e5, 0xb6e5 }, /* 0xb6e6 */ { true, 0xb6e6, 0xb6e6 }, /* 0xb6e7 */ { true, 0xb6e7, 0xb6e7 }, /* 0xb6e8 */ { true, 0xb6e8, 0xb6e8 }, /* 0xb6e9 */ { true, 0xb6e9, 0xb6e9 }, /* 0xb6ea */ { true, 0xb6ea, 0xb6ea }, /* 0xb6eb */ { true, 0xb6eb, 0xb6eb }, /* 0xb6ec */ { true, 0xb6ec, 0xb6ec }, /* 0xb6ed */ { true, 0xb6ed, 0xb6ed }, /* 0xb6ee */ { true, 0xb6ee, 0xb6ee }, /* 0xb6ef */ { true, 0xb6ef, 0xb6ef }, /* 0xb6f0 */ { true, 0xb6f0, 0xb6f0 }, /* 0xb6f1 */ { true, 0xb6f1, 0xb6f1 }, /* 0xb6f2 */ { true, 0xb6f2, 0xb6f2 }, /* 0xb6f3 */ { true, 0xb6f3, 0xb6f3 }, /* 0xb6f4 */ { true, 0xb6f4, 0xb6f4 }, /* 0xb6f5 */ { true, 0xb6f5, 0xb6f5 }, /* 0xb6f6 */ { true, 0xb6f6, 0xb6f6 }, /* 0xb6f7 */ { true, 0xb6f7, 0xb6f7 }, /* 0xb6f8 */ { true, 0xb6f8, 0xb6f8 }, /* 0xb6f9 */ { true, 0xb6f9, 0xb6f9 }, /* 0xb6fa */ { true, 0xb6fa, 0xb6fa }, /* 0xb6fb */ { true, 0xb6fb, 0xb6fb }, /* 0xb6fc */ { true, 0xb6fc, 0xb6fc }, /* 0xb6fd */ { true, 0xb6fd, 0xb6fd }, /* 0xb6fe */ { true, 0xb6fe, 0xb6fe }, /* 0xb6ff */ { true, 0xb6ff, 0xb6ff }, /* 0xb700 */ { true, 0xb700, 0xb700 }, /* 0xb701 */ { true, 0xb701, 0xb701 }, /* 0xb702 */ { true, 0xb702, 0xb702 }, /* 0xb703 */ { true, 0xb703, 0xb703 }, /* 0xb704 */ { true, 0xb704, 0xb704 }, /* 0xb705 */ { true, 0xb705, 0xb705 }, /* 0xb706 */ { true, 0xb706, 0xb706 }, /* 0xb707 */ { true, 0xb707, 0xb707 }, /* 0xb708 */ { true, 0xb708, 0xb708 }, /* 0xb709 */ { true, 0xb709, 0xb709 }, /* 0xb70a */ { true, 0xb70a, 0xb70a }, /* 0xb70b */ { true, 0xb70b, 0xb70b }, /* 0xb70c */ { true, 0xb70c, 0xb70c }, /* 0xb70d */ { true, 0xb70d, 0xb70d }, /* 0xb70e */ { true, 0xb70e, 0xb70e }, /* 0xb70f */ { true, 0xb70f, 0xb70f }, /* 0xb710 */ { true, 0xb710, 0xb710 }, /* 0xb711 */ { true, 0xb711, 0xb711 }, /* 0xb712 */ { true, 0xb712, 0xb712 }, /* 0xb713 */ { true, 0xb713, 0xb713 }, /* 0xb714 */ { true, 0xb714, 0xb714 }, /* 0xb715 */ { true, 0xb715, 0xb715 }, /* 0xb716 */ { true, 0xb716, 0xb716 }, /* 0xb717 */ { true, 0xb717, 0xb717 }, /* 0xb718 */ { true, 0xb718, 0xb718 }, /* 0xb719 */ { true, 0xb719, 0xb719 }, /* 0xb71a */ { true, 0xb71a, 0xb71a }, /* 0xb71b */ { true, 0xb71b, 0xb71b }, /* 0xb71c */ { true, 0xb71c, 0xb71c }, /* 0xb71d */ { true, 0xb71d, 0xb71d }, /* 0xb71e */ { true, 0xb71e, 0xb71e }, /* 0xb71f */ { true, 0xb71f, 0xb71f }, /* 0xb720 */ { true, 0xb720, 0xb720 }, /* 0xb721 */ { true, 0xb721, 0xb721 }, /* 0xb722 */ { true, 0xb722, 0xb722 }, /* 0xb723 */ { true, 0xb723, 0xb723 }, /* 0xb724 */ { true, 0xb724, 0xb724 }, /* 0xb725 */ { true, 0xb725, 0xb725 }, /* 0xb726 */ { true, 0xb726, 0xb726 }, /* 0xb727 */ { true, 0xb727, 0xb727 }, /* 0xb728 */ { true, 0xb728, 0xb728 }, /* 0xb729 */ { true, 0xb729, 0xb729 }, /* 0xb72a */ { true, 0xb72a, 0xb72a }, /* 0xb72b */ { true, 0xb72b, 0xb72b }, /* 0xb72c */ { true, 0xb72c, 0xb72c }, /* 0xb72d */ { true, 0xb72d, 0xb72d }, /* 0xb72e */ { true, 0xb72e, 0xb72e }, /* 0xb72f */ { true, 0xb72f, 0xb72f }, /* 0xb730 */ { true, 0xb730, 0xb730 }, /* 0xb731 */ { true, 0xb731, 0xb731 }, /* 0xb732 */ { true, 0xb732, 0xb732 }, /* 0xb733 */ { true, 0xb733, 0xb733 }, /* 0xb734 */ { true, 0xb734, 0xb734 }, /* 0xb735 */ { true, 0xb735, 0xb735 }, /* 0xb736 */ { true, 0xb736, 0xb736 }, /* 0xb737 */ { true, 0xb737, 0xb737 }, /* 0xb738 */ { true, 0xb738, 0xb738 }, /* 0xb739 */ { true, 0xb739, 0xb739 }, /* 0xb73a */ { true, 0xb73a, 0xb73a }, /* 0xb73b */ { true, 0xb73b, 0xb73b }, /* 0xb73c */ { true, 0xb73c, 0xb73c }, /* 0xb73d */ { true, 0xb73d, 0xb73d }, /* 0xb73e */ { true, 0xb73e, 0xb73e }, /* 0xb73f */ { true, 0xb73f, 0xb73f }, /* 0xb740 */ { true, 0xb740, 0xb740 }, /* 0xb741 */ { true, 0xb741, 0xb741 }, /* 0xb742 */ { true, 0xb742, 0xb742 }, /* 0xb743 */ { true, 0xb743, 0xb743 }, /* 0xb744 */ { true, 0xb744, 0xb744 }, /* 0xb745 */ { true, 0xb745, 0xb745 }, /* 0xb746 */ { true, 0xb746, 0xb746 }, /* 0xb747 */ { true, 0xb747, 0xb747 }, /* 0xb748 */ { true, 0xb748, 0xb748 }, /* 0xb749 */ { true, 0xb749, 0xb749 }, /* 0xb74a */ { true, 0xb74a, 0xb74a }, /* 0xb74b */ { true, 0xb74b, 0xb74b }, /* 0xb74c */ { true, 0xb74c, 0xb74c }, /* 0xb74d */ { true, 0xb74d, 0xb74d }, /* 0xb74e */ { true, 0xb74e, 0xb74e }, /* 0xb74f */ { true, 0xb74f, 0xb74f }, /* 0xb750 */ { true, 0xb750, 0xb750 }, /* 0xb751 */ { true, 0xb751, 0xb751 }, /* 0xb752 */ { true, 0xb752, 0xb752 }, /* 0xb753 */ { true, 0xb753, 0xb753 }, /* 0xb754 */ { true, 0xb754, 0xb754 }, /* 0xb755 */ { true, 0xb755, 0xb755 }, /* 0xb756 */ { true, 0xb756, 0xb756 }, /* 0xb757 */ { true, 0xb757, 0xb757 }, /* 0xb758 */ { true, 0xb758, 0xb758 }, /* 0xb759 */ { true, 0xb759, 0xb759 }, /* 0xb75a */ { true, 0xb75a, 0xb75a }, /* 0xb75b */ { true, 0xb75b, 0xb75b }, /* 0xb75c */ { true, 0xb75c, 0xb75c }, /* 0xb75d */ { true, 0xb75d, 0xb75d }, /* 0xb75e */ { true, 0xb75e, 0xb75e }, /* 0xb75f */ { true, 0xb75f, 0xb75f }, /* 0xb760 */ { true, 0xb760, 0xb760 }, /* 0xb761 */ { true, 0xb761, 0xb761 }, /* 0xb762 */ { true, 0xb762, 0xb762 }, /* 0xb763 */ { true, 0xb763, 0xb763 }, /* 0xb764 */ { true, 0xb764, 0xb764 }, /* 0xb765 */ { true, 0xb765, 0xb765 }, /* 0xb766 */ { true, 0xb766, 0xb766 }, /* 0xb767 */ { true, 0xb767, 0xb767 }, /* 0xb768 */ { true, 0xb768, 0xb768 }, /* 0xb769 */ { true, 0xb769, 0xb769 }, /* 0xb76a */ { true, 0xb76a, 0xb76a }, /* 0xb76b */ { true, 0xb76b, 0xb76b }, /* 0xb76c */ { true, 0xb76c, 0xb76c }, /* 0xb76d */ { true, 0xb76d, 0xb76d }, /* 0xb76e */ { true, 0xb76e, 0xb76e }, /* 0xb76f */ { true, 0xb76f, 0xb76f }, /* 0xb770 */ { true, 0xb770, 0xb770 }, /* 0xb771 */ { true, 0xb771, 0xb771 }, /* 0xb772 */ { true, 0xb772, 0xb772 }, /* 0xb773 */ { true, 0xb773, 0xb773 }, /* 0xb774 */ { true, 0xb774, 0xb774 }, /* 0xb775 */ { true, 0xb775, 0xb775 }, /* 0xb776 */ { true, 0xb776, 0xb776 }, /* 0xb777 */ { true, 0xb777, 0xb777 }, /* 0xb778 */ { true, 0xb778, 0xb778 }, /* 0xb779 */ { true, 0xb779, 0xb779 }, /* 0xb77a */ { true, 0xb77a, 0xb77a }, /* 0xb77b */ { true, 0xb77b, 0xb77b }, /* 0xb77c */ { true, 0xb77c, 0xb77c }, /* 0xb77d */ { true, 0xb77d, 0xb77d }, /* 0xb77e */ { true, 0xb77e, 0xb77e }, /* 0xb77f */ { true, 0xb77f, 0xb77f }, /* 0xb780 */ { true, 0xb780, 0xb780 }, /* 0xb781 */ { true, 0xb781, 0xb781 }, /* 0xb782 */ { true, 0xb782, 0xb782 }, /* 0xb783 */ { true, 0xb783, 0xb783 }, /* 0xb784 */ { true, 0xb784, 0xb784 }, /* 0xb785 */ { true, 0xb785, 0xb785 }, /* 0xb786 */ { true, 0xb786, 0xb786 }, /* 0xb787 */ { true, 0xb787, 0xb787 }, /* 0xb788 */ { true, 0xb788, 0xb788 }, /* 0xb789 */ { true, 0xb789, 0xb789 }, /* 0xb78a */ { true, 0xb78a, 0xb78a }, /* 0xb78b */ { true, 0xb78b, 0xb78b }, /* 0xb78c */ { true, 0xb78c, 0xb78c }, /* 0xb78d */ { true, 0xb78d, 0xb78d }, /* 0xb78e */ { true, 0xb78e, 0xb78e }, /* 0xb78f */ { true, 0xb78f, 0xb78f }, /* 0xb790 */ { true, 0xb790, 0xb790 }, /* 0xb791 */ { true, 0xb791, 0xb791 }, /* 0xb792 */ { true, 0xb792, 0xb792 }, /* 0xb793 */ { true, 0xb793, 0xb793 }, /* 0xb794 */ { true, 0xb794, 0xb794 }, /* 0xb795 */ { true, 0xb795, 0xb795 }, /* 0xb796 */ { true, 0xb796, 0xb796 }, /* 0xb797 */ { true, 0xb797, 0xb797 }, /* 0xb798 */ { true, 0xb798, 0xb798 }, /* 0xb799 */ { true, 0xb799, 0xb799 }, /* 0xb79a */ { true, 0xb79a, 0xb79a }, /* 0xb79b */ { true, 0xb79b, 0xb79b }, /* 0xb79c */ { true, 0xb79c, 0xb79c }, /* 0xb79d */ { true, 0xb79d, 0xb79d }, /* 0xb79e */ { true, 0xb79e, 0xb79e }, /* 0xb79f */ { true, 0xb79f, 0xb79f }, /* 0xb7a0 */ { true, 0xb7a0, 0xb7a0 }, /* 0xb7a1 */ { true, 0xb7a1, 0xb7a1 }, /* 0xb7a2 */ { true, 0xb7a2, 0xb7a2 }, /* 0xb7a3 */ { true, 0xb7a3, 0xb7a3 }, /* 0xb7a4 */ { true, 0xb7a4, 0xb7a4 }, /* 0xb7a5 */ { true, 0xb7a5, 0xb7a5 }, /* 0xb7a6 */ { true, 0xb7a6, 0xb7a6 }, /* 0xb7a7 */ { true, 0xb7a7, 0xb7a7 }, /* 0xb7a8 */ { true, 0xb7a8, 0xb7a8 }, /* 0xb7a9 */ { true, 0xb7a9, 0xb7a9 }, /* 0xb7aa */ { true, 0xb7aa, 0xb7aa }, /* 0xb7ab */ { true, 0xb7ab, 0xb7ab }, /* 0xb7ac */ { true, 0xb7ac, 0xb7ac }, /* 0xb7ad */ { true, 0xb7ad, 0xb7ad }, /* 0xb7ae */ { true, 0xb7ae, 0xb7ae }, /* 0xb7af */ { true, 0xb7af, 0xb7af }, /* 0xb7b0 */ { true, 0xb7b0, 0xb7b0 }, /* 0xb7b1 */ { true, 0xb7b1, 0xb7b1 }, /* 0xb7b2 */ { true, 0xb7b2, 0xb7b2 }, /* 0xb7b3 */ { true, 0xb7b3, 0xb7b3 }, /* 0xb7b4 */ { true, 0xb7b4, 0xb7b4 }, /* 0xb7b5 */ { true, 0xb7b5, 0xb7b5 }, /* 0xb7b6 */ { true, 0xb7b6, 0xb7b6 }, /* 0xb7b7 */ { true, 0xb7b7, 0xb7b7 }, /* 0xb7b8 */ { true, 0xb7b8, 0xb7b8 }, /* 0xb7b9 */ { true, 0xb7b9, 0xb7b9 }, /* 0xb7ba */ { true, 0xb7ba, 0xb7ba }, /* 0xb7bb */ { true, 0xb7bb, 0xb7bb }, /* 0xb7bc */ { true, 0xb7bc, 0xb7bc }, /* 0xb7bd */ { true, 0xb7bd, 0xb7bd }, /* 0xb7be */ { true, 0xb7be, 0xb7be }, /* 0xb7bf */ { true, 0xb7bf, 0xb7bf }, /* 0xb7c0 */ { true, 0xb7c0, 0xb7c0 }, /* 0xb7c1 */ { true, 0xb7c1, 0xb7c1 }, /* 0xb7c2 */ { true, 0xb7c2, 0xb7c2 }, /* 0xb7c3 */ { true, 0xb7c3, 0xb7c3 }, /* 0xb7c4 */ { true, 0xb7c4, 0xb7c4 }, /* 0xb7c5 */ { true, 0xb7c5, 0xb7c5 }, /* 0xb7c6 */ { true, 0xb7c6, 0xb7c6 }, /* 0xb7c7 */ { true, 0xb7c7, 0xb7c7 }, /* 0xb7c8 */ { true, 0xb7c8, 0xb7c8 }, /* 0xb7c9 */ { true, 0xb7c9, 0xb7c9 }, /* 0xb7ca */ { true, 0xb7ca, 0xb7ca }, /* 0xb7cb */ { true, 0xb7cb, 0xb7cb }, /* 0xb7cc */ { true, 0xb7cc, 0xb7cc }, /* 0xb7cd */ { true, 0xb7cd, 0xb7cd }, /* 0xb7ce */ { true, 0xb7ce, 0xb7ce }, /* 0xb7cf */ { true, 0xb7cf, 0xb7cf }, /* 0xb7d0 */ { true, 0xb7d0, 0xb7d0 }, /* 0xb7d1 */ { true, 0xb7d1, 0xb7d1 }, /* 0xb7d2 */ { true, 0xb7d2, 0xb7d2 }, /* 0xb7d3 */ { true, 0xb7d3, 0xb7d3 }, /* 0xb7d4 */ { true, 0xb7d4, 0xb7d4 }, /* 0xb7d5 */ { true, 0xb7d5, 0xb7d5 }, /* 0xb7d6 */ { true, 0xb7d6, 0xb7d6 }, /* 0xb7d7 */ { true, 0xb7d7, 0xb7d7 }, /* 0xb7d8 */ { true, 0xb7d8, 0xb7d8 }, /* 0xb7d9 */ { true, 0xb7d9, 0xb7d9 }, /* 0xb7da */ { true, 0xb7da, 0xb7da }, /* 0xb7db */ { true, 0xb7db, 0xb7db }, /* 0xb7dc */ { true, 0xb7dc, 0xb7dc }, /* 0xb7dd */ { true, 0xb7dd, 0xb7dd }, /* 0xb7de */ { true, 0xb7de, 0xb7de }, /* 0xb7df */ { true, 0xb7df, 0xb7df }, /* 0xb7e0 */ { true, 0xb7e0, 0xb7e0 }, /* 0xb7e1 */ { true, 0xb7e1, 0xb7e1 }, /* 0xb7e2 */ { true, 0xb7e2, 0xb7e2 }, /* 0xb7e3 */ { true, 0xb7e3, 0xb7e3 }, /* 0xb7e4 */ { true, 0xb7e4, 0xb7e4 }, /* 0xb7e5 */ { true, 0xb7e5, 0xb7e5 }, /* 0xb7e6 */ { true, 0xb7e6, 0xb7e6 }, /* 0xb7e7 */ { true, 0xb7e7, 0xb7e7 }, /* 0xb7e8 */ { true, 0xb7e8, 0xb7e8 }, /* 0xb7e9 */ { true, 0xb7e9, 0xb7e9 }, /* 0xb7ea */ { true, 0xb7ea, 0xb7ea }, /* 0xb7eb */ { true, 0xb7eb, 0xb7eb }, /* 0xb7ec */ { true, 0xb7ec, 0xb7ec }, /* 0xb7ed */ { true, 0xb7ed, 0xb7ed }, /* 0xb7ee */ { true, 0xb7ee, 0xb7ee }, /* 0xb7ef */ { true, 0xb7ef, 0xb7ef }, /* 0xb7f0 */ { true, 0xb7f0, 0xb7f0 }, /* 0xb7f1 */ { true, 0xb7f1, 0xb7f1 }, /* 0xb7f2 */ { true, 0xb7f2, 0xb7f2 }, /* 0xb7f3 */ { true, 0xb7f3, 0xb7f3 }, /* 0xb7f4 */ { true, 0xb7f4, 0xb7f4 }, /* 0xb7f5 */ { true, 0xb7f5, 0xb7f5 }, /* 0xb7f6 */ { true, 0xb7f6, 0xb7f6 }, /* 0xb7f7 */ { true, 0xb7f7, 0xb7f7 }, /* 0xb7f8 */ { true, 0xb7f8, 0xb7f8 }, /* 0xb7f9 */ { true, 0xb7f9, 0xb7f9 }, /* 0xb7fa */ { true, 0xb7fa, 0xb7fa }, /* 0xb7fb */ { true, 0xb7fb, 0xb7fb }, /* 0xb7fc */ { true, 0xb7fc, 0xb7fc }, /* 0xb7fd */ { true, 0xb7fd, 0xb7fd }, /* 0xb7fe */ { true, 0xb7fe, 0xb7fe }, /* 0xb7ff */ { true, 0xb7ff, 0xb7ff }, /* 0xb800 */ { true, 0xb800, 0xb800 }, /* 0xb801 */ { true, 0xb801, 0xb801 }, /* 0xb802 */ { true, 0xb802, 0xb802 }, /* 0xb803 */ { true, 0xb803, 0xb803 }, /* 0xb804 */ { true, 0xb804, 0xb804 }, /* 0xb805 */ { true, 0xb805, 0xb805 }, /* 0xb806 */ { true, 0xb806, 0xb806 }, /* 0xb807 */ { true, 0xb807, 0xb807 }, /* 0xb808 */ { true, 0xb808, 0xb808 }, /* 0xb809 */ { true, 0xb809, 0xb809 }, /* 0xb80a */ { true, 0xb80a, 0xb80a }, /* 0xb80b */ { true, 0xb80b, 0xb80b }, /* 0xb80c */ { true, 0xb80c, 0xb80c }, /* 0xb80d */ { true, 0xb80d, 0xb80d }, /* 0xb80e */ { true, 0xb80e, 0xb80e }, /* 0xb80f */ { true, 0xb80f, 0xb80f }, /* 0xb810 */ { true, 0xb810, 0xb810 }, /* 0xb811 */ { true, 0xb811, 0xb811 }, /* 0xb812 */ { true, 0xb812, 0xb812 }, /* 0xb813 */ { true, 0xb813, 0xb813 }, /* 0xb814 */ { true, 0xb814, 0xb814 }, /* 0xb815 */ { true, 0xb815, 0xb815 }, /* 0xb816 */ { true, 0xb816, 0xb816 }, /* 0xb817 */ { true, 0xb817, 0xb817 }, /* 0xb818 */ { true, 0xb818, 0xb818 }, /* 0xb819 */ { true, 0xb819, 0xb819 }, /* 0xb81a */ { true, 0xb81a, 0xb81a }, /* 0xb81b */ { true, 0xb81b, 0xb81b }, /* 0xb81c */ { true, 0xb81c, 0xb81c }, /* 0xb81d */ { true, 0xb81d, 0xb81d }, /* 0xb81e */ { true, 0xb81e, 0xb81e }, /* 0xb81f */ { true, 0xb81f, 0xb81f }, /* 0xb820 */ { true, 0xb820, 0xb820 }, /* 0xb821 */ { true, 0xb821, 0xb821 }, /* 0xb822 */ { true, 0xb822, 0xb822 }, /* 0xb823 */ { true, 0xb823, 0xb823 }, /* 0xb824 */ { true, 0xb824, 0xb824 }, /* 0xb825 */ { true, 0xb825, 0xb825 }, /* 0xb826 */ { true, 0xb826, 0xb826 }, /* 0xb827 */ { true, 0xb827, 0xb827 }, /* 0xb828 */ { true, 0xb828, 0xb828 }, /* 0xb829 */ { true, 0xb829, 0xb829 }, /* 0xb82a */ { true, 0xb82a, 0xb82a }, /* 0xb82b */ { true, 0xb82b, 0xb82b }, /* 0xb82c */ { true, 0xb82c, 0xb82c }, /* 0xb82d */ { true, 0xb82d, 0xb82d }, /* 0xb82e */ { true, 0xb82e, 0xb82e }, /* 0xb82f */ { true, 0xb82f, 0xb82f }, /* 0xb830 */ { true, 0xb830, 0xb830 }, /* 0xb831 */ { true, 0xb831, 0xb831 }, /* 0xb832 */ { true, 0xb832, 0xb832 }, /* 0xb833 */ { true, 0xb833, 0xb833 }, /* 0xb834 */ { true, 0xb834, 0xb834 }, /* 0xb835 */ { true, 0xb835, 0xb835 }, /* 0xb836 */ { true, 0xb836, 0xb836 }, /* 0xb837 */ { true, 0xb837, 0xb837 }, /* 0xb838 */ { true, 0xb838, 0xb838 }, /* 0xb839 */ { true, 0xb839, 0xb839 }, /* 0xb83a */ { true, 0xb83a, 0xb83a }, /* 0xb83b */ { true, 0xb83b, 0xb83b }, /* 0xb83c */ { true, 0xb83c, 0xb83c }, /* 0xb83d */ { true, 0xb83d, 0xb83d }, /* 0xb83e */ { true, 0xb83e, 0xb83e }, /* 0xb83f */ { true, 0xb83f, 0xb83f }, /* 0xb840 */ { true, 0xb840, 0xb840 }, /* 0xb841 */ { true, 0xb841, 0xb841 }, /* 0xb842 */ { true, 0xb842, 0xb842 }, /* 0xb843 */ { true, 0xb843, 0xb843 }, /* 0xb844 */ { true, 0xb844, 0xb844 }, /* 0xb845 */ { true, 0xb845, 0xb845 }, /* 0xb846 */ { true, 0xb846, 0xb846 }, /* 0xb847 */ { true, 0xb847, 0xb847 }, /* 0xb848 */ { true, 0xb848, 0xb848 }, /* 0xb849 */ { true, 0xb849, 0xb849 }, /* 0xb84a */ { true, 0xb84a, 0xb84a }, /* 0xb84b */ { true, 0xb84b, 0xb84b }, /* 0xb84c */ { true, 0xb84c, 0xb84c }, /* 0xb84d */ { true, 0xb84d, 0xb84d }, /* 0xb84e */ { true, 0xb84e, 0xb84e }, /* 0xb84f */ { true, 0xb84f, 0xb84f }, /* 0xb850 */ { true, 0xb850, 0xb850 }, /* 0xb851 */ { true, 0xb851, 0xb851 }, /* 0xb852 */ { true, 0xb852, 0xb852 }, /* 0xb853 */ { true, 0xb853, 0xb853 }, /* 0xb854 */ { true, 0xb854, 0xb854 }, /* 0xb855 */ { true, 0xb855, 0xb855 }, /* 0xb856 */ { true, 0xb856, 0xb856 }, /* 0xb857 */ { true, 0xb857, 0xb857 }, /* 0xb858 */ { true, 0xb858, 0xb858 }, /* 0xb859 */ { true, 0xb859, 0xb859 }, /* 0xb85a */ { true, 0xb85a, 0xb85a }, /* 0xb85b */ { true, 0xb85b, 0xb85b }, /* 0xb85c */ { true, 0xb85c, 0xb85c }, /* 0xb85d */ { true, 0xb85d, 0xb85d }, /* 0xb85e */ { true, 0xb85e, 0xb85e }, /* 0xb85f */ { true, 0xb85f, 0xb85f }, /* 0xb860 */ { true, 0xb860, 0xb860 }, /* 0xb861 */ { true, 0xb861, 0xb861 }, /* 0xb862 */ { true, 0xb862, 0xb862 }, /* 0xb863 */ { true, 0xb863, 0xb863 }, /* 0xb864 */ { true, 0xb864, 0xb864 }, /* 0xb865 */ { true, 0xb865, 0xb865 }, /* 0xb866 */ { true, 0xb866, 0xb866 }, /* 0xb867 */ { true, 0xb867, 0xb867 }, /* 0xb868 */ { true, 0xb868, 0xb868 }, /* 0xb869 */ { true, 0xb869, 0xb869 }, /* 0xb86a */ { true, 0xb86a, 0xb86a }, /* 0xb86b */ { true, 0xb86b, 0xb86b }, /* 0xb86c */ { true, 0xb86c, 0xb86c }, /* 0xb86d */ { true, 0xb86d, 0xb86d }, /* 0xb86e */ { true, 0xb86e, 0xb86e }, /* 0xb86f */ { true, 0xb86f, 0xb86f }, /* 0xb870 */ { true, 0xb870, 0xb870 }, /* 0xb871 */ { true, 0xb871, 0xb871 }, /* 0xb872 */ { true, 0xb872, 0xb872 }, /* 0xb873 */ { true, 0xb873, 0xb873 }, /* 0xb874 */ { true, 0xb874, 0xb874 }, /* 0xb875 */ { true, 0xb875, 0xb875 }, /* 0xb876 */ { true, 0xb876, 0xb876 }, /* 0xb877 */ { true, 0xb877, 0xb877 }, /* 0xb878 */ { true, 0xb878, 0xb878 }, /* 0xb879 */ { true, 0xb879, 0xb879 }, /* 0xb87a */ { true, 0xb87a, 0xb87a }, /* 0xb87b */ { true, 0xb87b, 0xb87b }, /* 0xb87c */ { true, 0xb87c, 0xb87c }, /* 0xb87d */ { true, 0xb87d, 0xb87d }, /* 0xb87e */ { true, 0xb87e, 0xb87e }, /* 0xb87f */ { true, 0xb87f, 0xb87f }, /* 0xb880 */ { true, 0xb880, 0xb880 }, /* 0xb881 */ { true, 0xb881, 0xb881 }, /* 0xb882 */ { true, 0xb882, 0xb882 }, /* 0xb883 */ { true, 0xb883, 0xb883 }, /* 0xb884 */ { true, 0xb884, 0xb884 }, /* 0xb885 */ { true, 0xb885, 0xb885 }, /* 0xb886 */ { true, 0xb886, 0xb886 }, /* 0xb887 */ { true, 0xb887, 0xb887 }, /* 0xb888 */ { true, 0xb888, 0xb888 }, /* 0xb889 */ { true, 0xb889, 0xb889 }, /* 0xb88a */ { true, 0xb88a, 0xb88a }, /* 0xb88b */ { true, 0xb88b, 0xb88b }, /* 0xb88c */ { true, 0xb88c, 0xb88c }, /* 0xb88d */ { true, 0xb88d, 0xb88d }, /* 0xb88e */ { true, 0xb88e, 0xb88e }, /* 0xb88f */ { true, 0xb88f, 0xb88f }, /* 0xb890 */ { true, 0xb890, 0xb890 }, /* 0xb891 */ { true, 0xb891, 0xb891 }, /* 0xb892 */ { true, 0xb892, 0xb892 }, /* 0xb893 */ { true, 0xb893, 0xb893 }, /* 0xb894 */ { true, 0xb894, 0xb894 }, /* 0xb895 */ { true, 0xb895, 0xb895 }, /* 0xb896 */ { true, 0xb896, 0xb896 }, /* 0xb897 */ { true, 0xb897, 0xb897 }, /* 0xb898 */ { true, 0xb898, 0xb898 }, /* 0xb899 */ { true, 0xb899, 0xb899 }, /* 0xb89a */ { true, 0xb89a, 0xb89a }, /* 0xb89b */ { true, 0xb89b, 0xb89b }, /* 0xb89c */ { true, 0xb89c, 0xb89c }, /* 0xb89d */ { true, 0xb89d, 0xb89d }, /* 0xb89e */ { true, 0xb89e, 0xb89e }, /* 0xb89f */ { true, 0xb89f, 0xb89f }, /* 0xb8a0 */ { true, 0xb8a0, 0xb8a0 }, /* 0xb8a1 */ { true, 0xb8a1, 0xb8a1 }, /* 0xb8a2 */ { true, 0xb8a2, 0xb8a2 }, /* 0xb8a3 */ { true, 0xb8a3, 0xb8a3 }, /* 0xb8a4 */ { true, 0xb8a4, 0xb8a4 }, /* 0xb8a5 */ { true, 0xb8a5, 0xb8a5 }, /* 0xb8a6 */ { true, 0xb8a6, 0xb8a6 }, /* 0xb8a7 */ { true, 0xb8a7, 0xb8a7 }, /* 0xb8a8 */ { true, 0xb8a8, 0xb8a8 }, /* 0xb8a9 */ { true, 0xb8a9, 0xb8a9 }, /* 0xb8aa */ { true, 0xb8aa, 0xb8aa }, /* 0xb8ab */ { true, 0xb8ab, 0xb8ab }, /* 0xb8ac */ { true, 0xb8ac, 0xb8ac }, /* 0xb8ad */ { true, 0xb8ad, 0xb8ad }, /* 0xb8ae */ { true, 0xb8ae, 0xb8ae }, /* 0xb8af */ { true, 0xb8af, 0xb8af }, /* 0xb8b0 */ { true, 0xb8b0, 0xb8b0 }, /* 0xb8b1 */ { true, 0xb8b1, 0xb8b1 }, /* 0xb8b2 */ { true, 0xb8b2, 0xb8b2 }, /* 0xb8b3 */ { true, 0xb8b3, 0xb8b3 }, /* 0xb8b4 */ { true, 0xb8b4, 0xb8b4 }, /* 0xb8b5 */ { true, 0xb8b5, 0xb8b5 }, /* 0xb8b6 */ { true, 0xb8b6, 0xb8b6 }, /* 0xb8b7 */ { true, 0xb8b7, 0xb8b7 }, /* 0xb8b8 */ { true, 0xb8b8, 0xb8b8 }, /* 0xb8b9 */ { true, 0xb8b9, 0xb8b9 }, /* 0xb8ba */ { true, 0xb8ba, 0xb8ba }, /* 0xb8bb */ { true, 0xb8bb, 0xb8bb }, /* 0xb8bc */ { true, 0xb8bc, 0xb8bc }, /* 0xb8bd */ { true, 0xb8bd, 0xb8bd }, /* 0xb8be */ { true, 0xb8be, 0xb8be }, /* 0xb8bf */ { true, 0xb8bf, 0xb8bf }, /* 0xb8c0 */ { true, 0xb8c0, 0xb8c0 }, /* 0xb8c1 */ { true, 0xb8c1, 0xb8c1 }, /* 0xb8c2 */ { true, 0xb8c2, 0xb8c2 }, /* 0xb8c3 */ { true, 0xb8c3, 0xb8c3 }, /* 0xb8c4 */ { true, 0xb8c4, 0xb8c4 }, /* 0xb8c5 */ { true, 0xb8c5, 0xb8c5 }, /* 0xb8c6 */ { true, 0xb8c6, 0xb8c6 }, /* 0xb8c7 */ { true, 0xb8c7, 0xb8c7 }, /* 0xb8c8 */ { true, 0xb8c8, 0xb8c8 }, /* 0xb8c9 */ { true, 0xb8c9, 0xb8c9 }, /* 0xb8ca */ { true, 0xb8ca, 0xb8ca }, /* 0xb8cb */ { true, 0xb8cb, 0xb8cb }, /* 0xb8cc */ { true, 0xb8cc, 0xb8cc }, /* 0xb8cd */ { true, 0xb8cd, 0xb8cd }, /* 0xb8ce */ { true, 0xb8ce, 0xb8ce }, /* 0xb8cf */ { true, 0xb8cf, 0xb8cf }, /* 0xb8d0 */ { true, 0xb8d0, 0xb8d0 }, /* 0xb8d1 */ { true, 0xb8d1, 0xb8d1 }, /* 0xb8d2 */ { true, 0xb8d2, 0xb8d2 }, /* 0xb8d3 */ { true, 0xb8d3, 0xb8d3 }, /* 0xb8d4 */ { true, 0xb8d4, 0xb8d4 }, /* 0xb8d5 */ { true, 0xb8d5, 0xb8d5 }, /* 0xb8d6 */ { true, 0xb8d6, 0xb8d6 }, /* 0xb8d7 */ { true, 0xb8d7, 0xb8d7 }, /* 0xb8d8 */ { true, 0xb8d8, 0xb8d8 }, /* 0xb8d9 */ { true, 0xb8d9, 0xb8d9 }, /* 0xb8da */ { true, 0xb8da, 0xb8da }, /* 0xb8db */ { true, 0xb8db, 0xb8db }, /* 0xb8dc */ { true, 0xb8dc, 0xb8dc }, /* 0xb8dd */ { true, 0xb8dd, 0xb8dd }, /* 0xb8de */ { true, 0xb8de, 0xb8de }, /* 0xb8df */ { true, 0xb8df, 0xb8df }, /* 0xb8e0 */ { true, 0xb8e0, 0xb8e0 }, /* 0xb8e1 */ { true, 0xb8e1, 0xb8e1 }, /* 0xb8e2 */ { true, 0xb8e2, 0xb8e2 }, /* 0xb8e3 */ { true, 0xb8e3, 0xb8e3 }, /* 0xb8e4 */ { true, 0xb8e4, 0xb8e4 }, /* 0xb8e5 */ { true, 0xb8e5, 0xb8e5 }, /* 0xb8e6 */ { true, 0xb8e6, 0xb8e6 }, /* 0xb8e7 */ { true, 0xb8e7, 0xb8e7 }, /* 0xb8e8 */ { true, 0xb8e8, 0xb8e8 }, /* 0xb8e9 */ { true, 0xb8e9, 0xb8e9 }, /* 0xb8ea */ { true, 0xb8ea, 0xb8ea }, /* 0xb8eb */ { true, 0xb8eb, 0xb8eb }, /* 0xb8ec */ { true, 0xb8ec, 0xb8ec }, /* 0xb8ed */ { true, 0xb8ed, 0xb8ed }, /* 0xb8ee */ { true, 0xb8ee, 0xb8ee }, /* 0xb8ef */ { true, 0xb8ef, 0xb8ef }, /* 0xb8f0 */ { true, 0xb8f0, 0xb8f0 }, /* 0xb8f1 */ { true, 0xb8f1, 0xb8f1 }, /* 0xb8f2 */ { true, 0xb8f2, 0xb8f2 }, /* 0xb8f3 */ { true, 0xb8f3, 0xb8f3 }, /* 0xb8f4 */ { true, 0xb8f4, 0xb8f4 }, /* 0xb8f5 */ { true, 0xb8f5, 0xb8f5 }, /* 0xb8f6 */ { true, 0xb8f6, 0xb8f6 }, /* 0xb8f7 */ { true, 0xb8f7, 0xb8f7 }, /* 0xb8f8 */ { true, 0xb8f8, 0xb8f8 }, /* 0xb8f9 */ { true, 0xb8f9, 0xb8f9 }, /* 0xb8fa */ { true, 0xb8fa, 0xb8fa }, /* 0xb8fb */ { true, 0xb8fb, 0xb8fb }, /* 0xb8fc */ { true, 0xb8fc, 0xb8fc }, /* 0xb8fd */ { true, 0xb8fd, 0xb8fd }, /* 0xb8fe */ { true, 0xb8fe, 0xb8fe }, /* 0xb8ff */ { true, 0xb8ff, 0xb8ff }, /* 0xb900 */ { true, 0xb900, 0xb900 }, /* 0xb901 */ { true, 0xb901, 0xb901 }, /* 0xb902 */ { true, 0xb902, 0xb902 }, /* 0xb903 */ { true, 0xb903, 0xb903 }, /* 0xb904 */ { true, 0xb904, 0xb904 }, /* 0xb905 */ { true, 0xb905, 0xb905 }, /* 0xb906 */ { true, 0xb906, 0xb906 }, /* 0xb907 */ { true, 0xb907, 0xb907 }, /* 0xb908 */ { true, 0xb908, 0xb908 }, /* 0xb909 */ { true, 0xb909, 0xb909 }, /* 0xb90a */ { true, 0xb90a, 0xb90a }, /* 0xb90b */ { true, 0xb90b, 0xb90b }, /* 0xb90c */ { true, 0xb90c, 0xb90c }, /* 0xb90d */ { true, 0xb90d, 0xb90d }, /* 0xb90e */ { true, 0xb90e, 0xb90e }, /* 0xb90f */ { true, 0xb90f, 0xb90f }, /* 0xb910 */ { true, 0xb910, 0xb910 }, /* 0xb911 */ { true, 0xb911, 0xb911 }, /* 0xb912 */ { true, 0xb912, 0xb912 }, /* 0xb913 */ { true, 0xb913, 0xb913 }, /* 0xb914 */ { true, 0xb914, 0xb914 }, /* 0xb915 */ { true, 0xb915, 0xb915 }, /* 0xb916 */ { true, 0xb916, 0xb916 }, /* 0xb917 */ { true, 0xb917, 0xb917 }, /* 0xb918 */ { true, 0xb918, 0xb918 }, /* 0xb919 */ { true, 0xb919, 0xb919 }, /* 0xb91a */ { true, 0xb91a, 0xb91a }, /* 0xb91b */ { true, 0xb91b, 0xb91b }, /* 0xb91c */ { true, 0xb91c, 0xb91c }, /* 0xb91d */ { true, 0xb91d, 0xb91d }, /* 0xb91e */ { true, 0xb91e, 0xb91e }, /* 0xb91f */ { true, 0xb91f, 0xb91f }, /* 0xb920 */ { true, 0xb920, 0xb920 }, /* 0xb921 */ { true, 0xb921, 0xb921 }, /* 0xb922 */ { true, 0xb922, 0xb922 }, /* 0xb923 */ { true, 0xb923, 0xb923 }, /* 0xb924 */ { true, 0xb924, 0xb924 }, /* 0xb925 */ { true, 0xb925, 0xb925 }, /* 0xb926 */ { true, 0xb926, 0xb926 }, /* 0xb927 */ { true, 0xb927, 0xb927 }, /* 0xb928 */ { true, 0xb928, 0xb928 }, /* 0xb929 */ { true, 0xb929, 0xb929 }, /* 0xb92a */ { true, 0xb92a, 0xb92a }, /* 0xb92b */ { true, 0xb92b, 0xb92b }, /* 0xb92c */ { true, 0xb92c, 0xb92c }, /* 0xb92d */ { true, 0xb92d, 0xb92d }, /* 0xb92e */ { true, 0xb92e, 0xb92e }, /* 0xb92f */ { true, 0xb92f, 0xb92f }, /* 0xb930 */ { true, 0xb930, 0xb930 }, /* 0xb931 */ { true, 0xb931, 0xb931 }, /* 0xb932 */ { true, 0xb932, 0xb932 }, /* 0xb933 */ { true, 0xb933, 0xb933 }, /* 0xb934 */ { true, 0xb934, 0xb934 }, /* 0xb935 */ { true, 0xb935, 0xb935 }, /* 0xb936 */ { true, 0xb936, 0xb936 }, /* 0xb937 */ { true, 0xb937, 0xb937 }, /* 0xb938 */ { true, 0xb938, 0xb938 }, /* 0xb939 */ { true, 0xb939, 0xb939 }, /* 0xb93a */ { true, 0xb93a, 0xb93a }, /* 0xb93b */ { true, 0xb93b, 0xb93b }, /* 0xb93c */ { true, 0xb93c, 0xb93c }, /* 0xb93d */ { true, 0xb93d, 0xb93d }, /* 0xb93e */ { true, 0xb93e, 0xb93e }, /* 0xb93f */ { true, 0xb93f, 0xb93f }, /* 0xb940 */ { true, 0xb940, 0xb940 }, /* 0xb941 */ { true, 0xb941, 0xb941 }, /* 0xb942 */ { true, 0xb942, 0xb942 }, /* 0xb943 */ { true, 0xb943, 0xb943 }, /* 0xb944 */ { true, 0xb944, 0xb944 }, /* 0xb945 */ { true, 0xb945, 0xb945 }, /* 0xb946 */ { true, 0xb946, 0xb946 }, /* 0xb947 */ { true, 0xb947, 0xb947 }, /* 0xb948 */ { true, 0xb948, 0xb948 }, /* 0xb949 */ { true, 0xb949, 0xb949 }, /* 0xb94a */ { true, 0xb94a, 0xb94a }, /* 0xb94b */ { true, 0xb94b, 0xb94b }, /* 0xb94c */ { true, 0xb94c, 0xb94c }, /* 0xb94d */ { true, 0xb94d, 0xb94d }, /* 0xb94e */ { true, 0xb94e, 0xb94e }, /* 0xb94f */ { true, 0xb94f, 0xb94f }, /* 0xb950 */ { true, 0xb950, 0xb950 }, /* 0xb951 */ { true, 0xb951, 0xb951 }, /* 0xb952 */ { true, 0xb952, 0xb952 }, /* 0xb953 */ { true, 0xb953, 0xb953 }, /* 0xb954 */ { true, 0xb954, 0xb954 }, /* 0xb955 */ { true, 0xb955, 0xb955 }, /* 0xb956 */ { true, 0xb956, 0xb956 }, /* 0xb957 */ { true, 0xb957, 0xb957 }, /* 0xb958 */ { true, 0xb958, 0xb958 }, /* 0xb959 */ { true, 0xb959, 0xb959 }, /* 0xb95a */ { true, 0xb95a, 0xb95a }, /* 0xb95b */ { true, 0xb95b, 0xb95b }, /* 0xb95c */ { true, 0xb95c, 0xb95c }, /* 0xb95d */ { true, 0xb95d, 0xb95d }, /* 0xb95e */ { true, 0xb95e, 0xb95e }, /* 0xb95f */ { true, 0xb95f, 0xb95f }, /* 0xb960 */ { true, 0xb960, 0xb960 }, /* 0xb961 */ { true, 0xb961, 0xb961 }, /* 0xb962 */ { true, 0xb962, 0xb962 }, /* 0xb963 */ { true, 0xb963, 0xb963 }, /* 0xb964 */ { true, 0xb964, 0xb964 }, /* 0xb965 */ { true, 0xb965, 0xb965 }, /* 0xb966 */ { true, 0xb966, 0xb966 }, /* 0xb967 */ { true, 0xb967, 0xb967 }, /* 0xb968 */ { true, 0xb968, 0xb968 }, /* 0xb969 */ { true, 0xb969, 0xb969 }, /* 0xb96a */ { true, 0xb96a, 0xb96a }, /* 0xb96b */ { true, 0xb96b, 0xb96b }, /* 0xb96c */ { true, 0xb96c, 0xb96c }, /* 0xb96d */ { true, 0xb96d, 0xb96d }, /* 0xb96e */ { true, 0xb96e, 0xb96e }, /* 0xb96f */ { true, 0xb96f, 0xb96f }, /* 0xb970 */ { true, 0xb970, 0xb970 }, /* 0xb971 */ { true, 0xb971, 0xb971 }, /* 0xb972 */ { true, 0xb972, 0xb972 }, /* 0xb973 */ { true, 0xb973, 0xb973 }, /* 0xb974 */ { true, 0xb974, 0xb974 }, /* 0xb975 */ { true, 0xb975, 0xb975 }, /* 0xb976 */ { true, 0xb976, 0xb976 }, /* 0xb977 */ { true, 0xb977, 0xb977 }, /* 0xb978 */ { true, 0xb978, 0xb978 }, /* 0xb979 */ { true, 0xb979, 0xb979 }, /* 0xb97a */ { true, 0xb97a, 0xb97a }, /* 0xb97b */ { true, 0xb97b, 0xb97b }, /* 0xb97c */ { true, 0xb97c, 0xb97c }, /* 0xb97d */ { true, 0xb97d, 0xb97d }, /* 0xb97e */ { true, 0xb97e, 0xb97e }, /* 0xb97f */ { true, 0xb97f, 0xb97f }, /* 0xb980 */ { true, 0xb980, 0xb980 }, /* 0xb981 */ { true, 0xb981, 0xb981 }, /* 0xb982 */ { true, 0xb982, 0xb982 }, /* 0xb983 */ { true, 0xb983, 0xb983 }, /* 0xb984 */ { true, 0xb984, 0xb984 }, /* 0xb985 */ { true, 0xb985, 0xb985 }, /* 0xb986 */ { true, 0xb986, 0xb986 }, /* 0xb987 */ { true, 0xb987, 0xb987 }, /* 0xb988 */ { true, 0xb988, 0xb988 }, /* 0xb989 */ { true, 0xb989, 0xb989 }, /* 0xb98a */ { true, 0xb98a, 0xb98a }, /* 0xb98b */ { true, 0xb98b, 0xb98b }, /* 0xb98c */ { true, 0xb98c, 0xb98c }, /* 0xb98d */ { true, 0xb98d, 0xb98d }, /* 0xb98e */ { true, 0xb98e, 0xb98e }, /* 0xb98f */ { true, 0xb98f, 0xb98f }, /* 0xb990 */ { true, 0xb990, 0xb990 }, /* 0xb991 */ { true, 0xb991, 0xb991 }, /* 0xb992 */ { true, 0xb992, 0xb992 }, /* 0xb993 */ { true, 0xb993, 0xb993 }, /* 0xb994 */ { true, 0xb994, 0xb994 }, /* 0xb995 */ { true, 0xb995, 0xb995 }, /* 0xb996 */ { true, 0xb996, 0xb996 }, /* 0xb997 */ { true, 0xb997, 0xb997 }, /* 0xb998 */ { true, 0xb998, 0xb998 }, /* 0xb999 */ { true, 0xb999, 0xb999 }, /* 0xb99a */ { true, 0xb99a, 0xb99a }, /* 0xb99b */ { true, 0xb99b, 0xb99b }, /* 0xb99c */ { true, 0xb99c, 0xb99c }, /* 0xb99d */ { true, 0xb99d, 0xb99d }, /* 0xb99e */ { true, 0xb99e, 0xb99e }, /* 0xb99f */ { true, 0xb99f, 0xb99f }, /* 0xb9a0 */ { true, 0xb9a0, 0xb9a0 }, /* 0xb9a1 */ { true, 0xb9a1, 0xb9a1 }, /* 0xb9a2 */ { true, 0xb9a2, 0xb9a2 }, /* 0xb9a3 */ { true, 0xb9a3, 0xb9a3 }, /* 0xb9a4 */ { true, 0xb9a4, 0xb9a4 }, /* 0xb9a5 */ { true, 0xb9a5, 0xb9a5 }, /* 0xb9a6 */ { true, 0xb9a6, 0xb9a6 }, /* 0xb9a7 */ { true, 0xb9a7, 0xb9a7 }, /* 0xb9a8 */ { true, 0xb9a8, 0xb9a8 }, /* 0xb9a9 */ { true, 0xb9a9, 0xb9a9 }, /* 0xb9aa */ { true, 0xb9aa, 0xb9aa }, /* 0xb9ab */ { true, 0xb9ab, 0xb9ab }, /* 0xb9ac */ { true, 0xb9ac, 0xb9ac }, /* 0xb9ad */ { true, 0xb9ad, 0xb9ad }, /* 0xb9ae */ { true, 0xb9ae, 0xb9ae }, /* 0xb9af */ { true, 0xb9af, 0xb9af }, /* 0xb9b0 */ { true, 0xb9b0, 0xb9b0 }, /* 0xb9b1 */ { true, 0xb9b1, 0xb9b1 }, /* 0xb9b2 */ { true, 0xb9b2, 0xb9b2 }, /* 0xb9b3 */ { true, 0xb9b3, 0xb9b3 }, /* 0xb9b4 */ { true, 0xb9b4, 0xb9b4 }, /* 0xb9b5 */ { true, 0xb9b5, 0xb9b5 }, /* 0xb9b6 */ { true, 0xb9b6, 0xb9b6 }, /* 0xb9b7 */ { true, 0xb9b7, 0xb9b7 }, /* 0xb9b8 */ { true, 0xb9b8, 0xb9b8 }, /* 0xb9b9 */ { true, 0xb9b9, 0xb9b9 }, /* 0xb9ba */ { true, 0xb9ba, 0xb9ba }, /* 0xb9bb */ { true, 0xb9bb, 0xb9bb }, /* 0xb9bc */ { true, 0xb9bc, 0xb9bc }, /* 0xb9bd */ { true, 0xb9bd, 0xb9bd }, /* 0xb9be */ { true, 0xb9be, 0xb9be }, /* 0xb9bf */ { true, 0xb9bf, 0xb9bf }, /* 0xb9c0 */ { true, 0xb9c0, 0xb9c0 }, /* 0xb9c1 */ { true, 0xb9c1, 0xb9c1 }, /* 0xb9c2 */ { true, 0xb9c2, 0xb9c2 }, /* 0xb9c3 */ { true, 0xb9c3, 0xb9c3 }, /* 0xb9c4 */ { true, 0xb9c4, 0xb9c4 }, /* 0xb9c5 */ { true, 0xb9c5, 0xb9c5 }, /* 0xb9c6 */ { true, 0xb9c6, 0xb9c6 }, /* 0xb9c7 */ { true, 0xb9c7, 0xb9c7 }, /* 0xb9c8 */ { true, 0xb9c8, 0xb9c8 }, /* 0xb9c9 */ { true, 0xb9c9, 0xb9c9 }, /* 0xb9ca */ { true, 0xb9ca, 0xb9ca }, /* 0xb9cb */ { true, 0xb9cb, 0xb9cb }, /* 0xb9cc */ { true, 0xb9cc, 0xb9cc }, /* 0xb9cd */ { true, 0xb9cd, 0xb9cd }, /* 0xb9ce */ { true, 0xb9ce, 0xb9ce }, /* 0xb9cf */ { true, 0xb9cf, 0xb9cf }, /* 0xb9d0 */ { true, 0xb9d0, 0xb9d0 }, /* 0xb9d1 */ { true, 0xb9d1, 0xb9d1 }, /* 0xb9d2 */ { true, 0xb9d2, 0xb9d2 }, /* 0xb9d3 */ { true, 0xb9d3, 0xb9d3 }, /* 0xb9d4 */ { true, 0xb9d4, 0xb9d4 }, /* 0xb9d5 */ { true, 0xb9d5, 0xb9d5 }, /* 0xb9d6 */ { true, 0xb9d6, 0xb9d6 }, /* 0xb9d7 */ { true, 0xb9d7, 0xb9d7 }, /* 0xb9d8 */ { true, 0xb9d8, 0xb9d8 }, /* 0xb9d9 */ { true, 0xb9d9, 0xb9d9 }, /* 0xb9da */ { true, 0xb9da, 0xb9da }, /* 0xb9db */ { true, 0xb9db, 0xb9db }, /* 0xb9dc */ { true, 0xb9dc, 0xb9dc }, /* 0xb9dd */ { true, 0xb9dd, 0xb9dd }, /* 0xb9de */ { true, 0xb9de, 0xb9de }, /* 0xb9df */ { true, 0xb9df, 0xb9df }, /* 0xb9e0 */ { true, 0xb9e0, 0xb9e0 }, /* 0xb9e1 */ { true, 0xb9e1, 0xb9e1 }, /* 0xb9e2 */ { true, 0xb9e2, 0xb9e2 }, /* 0xb9e3 */ { true, 0xb9e3, 0xb9e3 }, /* 0xb9e4 */ { true, 0xb9e4, 0xb9e4 }, /* 0xb9e5 */ { true, 0xb9e5, 0xb9e5 }, /* 0xb9e6 */ { true, 0xb9e6, 0xb9e6 }, /* 0xb9e7 */ { true, 0xb9e7, 0xb9e7 }, /* 0xb9e8 */ { true, 0xb9e8, 0xb9e8 }, /* 0xb9e9 */ { true, 0xb9e9, 0xb9e9 }, /* 0xb9ea */ { true, 0xb9ea, 0xb9ea }, /* 0xb9eb */ { true, 0xb9eb, 0xb9eb }, /* 0xb9ec */ { true, 0xb9ec, 0xb9ec }, /* 0xb9ed */ { true, 0xb9ed, 0xb9ed }, /* 0xb9ee */ { true, 0xb9ee, 0xb9ee }, /* 0xb9ef */ { true, 0xb9ef, 0xb9ef }, /* 0xb9f0 */ { true, 0xb9f0, 0xb9f0 }, /* 0xb9f1 */ { true, 0xb9f1, 0xb9f1 }, /* 0xb9f2 */ { true, 0xb9f2, 0xb9f2 }, /* 0xb9f3 */ { true, 0xb9f3, 0xb9f3 }, /* 0xb9f4 */ { true, 0xb9f4, 0xb9f4 }, /* 0xb9f5 */ { true, 0xb9f5, 0xb9f5 }, /* 0xb9f6 */ { true, 0xb9f6, 0xb9f6 }, /* 0xb9f7 */ { true, 0xb9f7, 0xb9f7 }, /* 0xb9f8 */ { true, 0xb9f8, 0xb9f8 }, /* 0xb9f9 */ { true, 0xb9f9, 0xb9f9 }, /* 0xb9fa */ { true, 0xb9fa, 0xb9fa }, /* 0xb9fb */ { true, 0xb9fb, 0xb9fb }, /* 0xb9fc */ { true, 0xb9fc, 0xb9fc }, /* 0xb9fd */ { true, 0xb9fd, 0xb9fd }, /* 0xb9fe */ { true, 0xb9fe, 0xb9fe }, /* 0xb9ff */ { true, 0xb9ff, 0xb9ff }, /* 0xba00 */ { true, 0xba00, 0xba00 }, /* 0xba01 */ { true, 0xba01, 0xba01 }, /* 0xba02 */ { true, 0xba02, 0xba02 }, /* 0xba03 */ { true, 0xba03, 0xba03 }, /* 0xba04 */ { true, 0xba04, 0xba04 }, /* 0xba05 */ { true, 0xba05, 0xba05 }, /* 0xba06 */ { true, 0xba06, 0xba06 }, /* 0xba07 */ { true, 0xba07, 0xba07 }, /* 0xba08 */ { true, 0xba08, 0xba08 }, /* 0xba09 */ { true, 0xba09, 0xba09 }, /* 0xba0a */ { true, 0xba0a, 0xba0a }, /* 0xba0b */ { true, 0xba0b, 0xba0b }, /* 0xba0c */ { true, 0xba0c, 0xba0c }, /* 0xba0d */ { true, 0xba0d, 0xba0d }, /* 0xba0e */ { true, 0xba0e, 0xba0e }, /* 0xba0f */ { true, 0xba0f, 0xba0f }, /* 0xba10 */ { true, 0xba10, 0xba10 }, /* 0xba11 */ { true, 0xba11, 0xba11 }, /* 0xba12 */ { true, 0xba12, 0xba12 }, /* 0xba13 */ { true, 0xba13, 0xba13 }, /* 0xba14 */ { true, 0xba14, 0xba14 }, /* 0xba15 */ { true, 0xba15, 0xba15 }, /* 0xba16 */ { true, 0xba16, 0xba16 }, /* 0xba17 */ { true, 0xba17, 0xba17 }, /* 0xba18 */ { true, 0xba18, 0xba18 }, /* 0xba19 */ { true, 0xba19, 0xba19 }, /* 0xba1a */ { true, 0xba1a, 0xba1a }, /* 0xba1b */ { true, 0xba1b, 0xba1b }, /* 0xba1c */ { true, 0xba1c, 0xba1c }, /* 0xba1d */ { true, 0xba1d, 0xba1d }, /* 0xba1e */ { true, 0xba1e, 0xba1e }, /* 0xba1f */ { true, 0xba1f, 0xba1f }, /* 0xba20 */ { true, 0xba20, 0xba20 }, /* 0xba21 */ { true, 0xba21, 0xba21 }, /* 0xba22 */ { true, 0xba22, 0xba22 }, /* 0xba23 */ { true, 0xba23, 0xba23 }, /* 0xba24 */ { true, 0xba24, 0xba24 }, /* 0xba25 */ { true, 0xba25, 0xba25 }, /* 0xba26 */ { true, 0xba26, 0xba26 }, /* 0xba27 */ { true, 0xba27, 0xba27 }, /* 0xba28 */ { true, 0xba28, 0xba28 }, /* 0xba29 */ { true, 0xba29, 0xba29 }, /* 0xba2a */ { true, 0xba2a, 0xba2a }, /* 0xba2b */ { true, 0xba2b, 0xba2b }, /* 0xba2c */ { true, 0xba2c, 0xba2c }, /* 0xba2d */ { true, 0xba2d, 0xba2d }, /* 0xba2e */ { true, 0xba2e, 0xba2e }, /* 0xba2f */ { true, 0xba2f, 0xba2f }, /* 0xba30 */ { true, 0xba30, 0xba30 }, /* 0xba31 */ { true, 0xba31, 0xba31 }, /* 0xba32 */ { true, 0xba32, 0xba32 }, /* 0xba33 */ { true, 0xba33, 0xba33 }, /* 0xba34 */ { true, 0xba34, 0xba34 }, /* 0xba35 */ { true, 0xba35, 0xba35 }, /* 0xba36 */ { true, 0xba36, 0xba36 }, /* 0xba37 */ { true, 0xba37, 0xba37 }, /* 0xba38 */ { true, 0xba38, 0xba38 }, /* 0xba39 */ { true, 0xba39, 0xba39 }, /* 0xba3a */ { true, 0xba3a, 0xba3a }, /* 0xba3b */ { true, 0xba3b, 0xba3b }, /* 0xba3c */ { true, 0xba3c, 0xba3c }, /* 0xba3d */ { true, 0xba3d, 0xba3d }, /* 0xba3e */ { true, 0xba3e, 0xba3e }, /* 0xba3f */ { true, 0xba3f, 0xba3f }, /* 0xba40 */ { true, 0xba40, 0xba40 }, /* 0xba41 */ { true, 0xba41, 0xba41 }, /* 0xba42 */ { true, 0xba42, 0xba42 }, /* 0xba43 */ { true, 0xba43, 0xba43 }, /* 0xba44 */ { true, 0xba44, 0xba44 }, /* 0xba45 */ { true, 0xba45, 0xba45 }, /* 0xba46 */ { true, 0xba46, 0xba46 }, /* 0xba47 */ { true, 0xba47, 0xba47 }, /* 0xba48 */ { true, 0xba48, 0xba48 }, /* 0xba49 */ { true, 0xba49, 0xba49 }, /* 0xba4a */ { true, 0xba4a, 0xba4a }, /* 0xba4b */ { true, 0xba4b, 0xba4b }, /* 0xba4c */ { true, 0xba4c, 0xba4c }, /* 0xba4d */ { true, 0xba4d, 0xba4d }, /* 0xba4e */ { true, 0xba4e, 0xba4e }, /* 0xba4f */ { true, 0xba4f, 0xba4f }, /* 0xba50 */ { true, 0xba50, 0xba50 }, /* 0xba51 */ { true, 0xba51, 0xba51 }, /* 0xba52 */ { true, 0xba52, 0xba52 }, /* 0xba53 */ { true, 0xba53, 0xba53 }, /* 0xba54 */ { true, 0xba54, 0xba54 }, /* 0xba55 */ { true, 0xba55, 0xba55 }, /* 0xba56 */ { true, 0xba56, 0xba56 }, /* 0xba57 */ { true, 0xba57, 0xba57 }, /* 0xba58 */ { true, 0xba58, 0xba58 }, /* 0xba59 */ { true, 0xba59, 0xba59 }, /* 0xba5a */ { true, 0xba5a, 0xba5a }, /* 0xba5b */ { true, 0xba5b, 0xba5b }, /* 0xba5c */ { true, 0xba5c, 0xba5c }, /* 0xba5d */ { true, 0xba5d, 0xba5d }, /* 0xba5e */ { true, 0xba5e, 0xba5e }, /* 0xba5f */ { true, 0xba5f, 0xba5f }, /* 0xba60 */ { true, 0xba60, 0xba60 }, /* 0xba61 */ { true, 0xba61, 0xba61 }, /* 0xba62 */ { true, 0xba62, 0xba62 }, /* 0xba63 */ { true, 0xba63, 0xba63 }, /* 0xba64 */ { true, 0xba64, 0xba64 }, /* 0xba65 */ { true, 0xba65, 0xba65 }, /* 0xba66 */ { true, 0xba66, 0xba66 }, /* 0xba67 */ { true, 0xba67, 0xba67 }, /* 0xba68 */ { true, 0xba68, 0xba68 }, /* 0xba69 */ { true, 0xba69, 0xba69 }, /* 0xba6a */ { true, 0xba6a, 0xba6a }, /* 0xba6b */ { true, 0xba6b, 0xba6b }, /* 0xba6c */ { true, 0xba6c, 0xba6c }, /* 0xba6d */ { true, 0xba6d, 0xba6d }, /* 0xba6e */ { true, 0xba6e, 0xba6e }, /* 0xba6f */ { true, 0xba6f, 0xba6f }, /* 0xba70 */ { true, 0xba70, 0xba70 }, /* 0xba71 */ { true, 0xba71, 0xba71 }, /* 0xba72 */ { true, 0xba72, 0xba72 }, /* 0xba73 */ { true, 0xba73, 0xba73 }, /* 0xba74 */ { true, 0xba74, 0xba74 }, /* 0xba75 */ { true, 0xba75, 0xba75 }, /* 0xba76 */ { true, 0xba76, 0xba76 }, /* 0xba77 */ { true, 0xba77, 0xba77 }, /* 0xba78 */ { true, 0xba78, 0xba78 }, /* 0xba79 */ { true, 0xba79, 0xba79 }, /* 0xba7a */ { true, 0xba7a, 0xba7a }, /* 0xba7b */ { true, 0xba7b, 0xba7b }, /* 0xba7c */ { true, 0xba7c, 0xba7c }, /* 0xba7d */ { true, 0xba7d, 0xba7d }, /* 0xba7e */ { true, 0xba7e, 0xba7e }, /* 0xba7f */ { true, 0xba7f, 0xba7f }, /* 0xba80 */ { true, 0xba80, 0xba80 }, /* 0xba81 */ { true, 0xba81, 0xba81 }, /* 0xba82 */ { true, 0xba82, 0xba82 }, /* 0xba83 */ { true, 0xba83, 0xba83 }, /* 0xba84 */ { true, 0xba84, 0xba84 }, /* 0xba85 */ { true, 0xba85, 0xba85 }, /* 0xba86 */ { true, 0xba86, 0xba86 }, /* 0xba87 */ { true, 0xba87, 0xba87 }, /* 0xba88 */ { true, 0xba88, 0xba88 }, /* 0xba89 */ { true, 0xba89, 0xba89 }, /* 0xba8a */ { true, 0xba8a, 0xba8a }, /* 0xba8b */ { true, 0xba8b, 0xba8b }, /* 0xba8c */ { true, 0xba8c, 0xba8c }, /* 0xba8d */ { true, 0xba8d, 0xba8d }, /* 0xba8e */ { true, 0xba8e, 0xba8e }, /* 0xba8f */ { true, 0xba8f, 0xba8f }, /* 0xba90 */ { true, 0xba90, 0xba90 }, /* 0xba91 */ { true, 0xba91, 0xba91 }, /* 0xba92 */ { true, 0xba92, 0xba92 }, /* 0xba93 */ { true, 0xba93, 0xba93 }, /* 0xba94 */ { true, 0xba94, 0xba94 }, /* 0xba95 */ { true, 0xba95, 0xba95 }, /* 0xba96 */ { true, 0xba96, 0xba96 }, /* 0xba97 */ { true, 0xba97, 0xba97 }, /* 0xba98 */ { true, 0xba98, 0xba98 }, /* 0xba99 */ { true, 0xba99, 0xba99 }, /* 0xba9a */ { true, 0xba9a, 0xba9a }, /* 0xba9b */ { true, 0xba9b, 0xba9b }, /* 0xba9c */ { true, 0xba9c, 0xba9c }, /* 0xba9d */ { true, 0xba9d, 0xba9d }, /* 0xba9e */ { true, 0xba9e, 0xba9e }, /* 0xba9f */ { true, 0xba9f, 0xba9f }, /* 0xbaa0 */ { true, 0xbaa0, 0xbaa0 }, /* 0xbaa1 */ { true, 0xbaa1, 0xbaa1 }, /* 0xbaa2 */ { true, 0xbaa2, 0xbaa2 }, /* 0xbaa3 */ { true, 0xbaa3, 0xbaa3 }, /* 0xbaa4 */ { true, 0xbaa4, 0xbaa4 }, /* 0xbaa5 */ { true, 0xbaa5, 0xbaa5 }, /* 0xbaa6 */ { true, 0xbaa6, 0xbaa6 }, /* 0xbaa7 */ { true, 0xbaa7, 0xbaa7 }, /* 0xbaa8 */ { true, 0xbaa8, 0xbaa8 }, /* 0xbaa9 */ { true, 0xbaa9, 0xbaa9 }, /* 0xbaaa */ { true, 0xbaaa, 0xbaaa }, /* 0xbaab */ { true, 0xbaab, 0xbaab }, /* 0xbaac */ { true, 0xbaac, 0xbaac }, /* 0xbaad */ { true, 0xbaad, 0xbaad }, /* 0xbaae */ { true, 0xbaae, 0xbaae }, /* 0xbaaf */ { true, 0xbaaf, 0xbaaf }, /* 0xbab0 */ { true, 0xbab0, 0xbab0 }, /* 0xbab1 */ { true, 0xbab1, 0xbab1 }, /* 0xbab2 */ { true, 0xbab2, 0xbab2 }, /* 0xbab3 */ { true, 0xbab3, 0xbab3 }, /* 0xbab4 */ { true, 0xbab4, 0xbab4 }, /* 0xbab5 */ { true, 0xbab5, 0xbab5 }, /* 0xbab6 */ { true, 0xbab6, 0xbab6 }, /* 0xbab7 */ { true, 0xbab7, 0xbab7 }, /* 0xbab8 */ { true, 0xbab8, 0xbab8 }, /* 0xbab9 */ { true, 0xbab9, 0xbab9 }, /* 0xbaba */ { true, 0xbaba, 0xbaba }, /* 0xbabb */ { true, 0xbabb, 0xbabb }, /* 0xbabc */ { true, 0xbabc, 0xbabc }, /* 0xbabd */ { true, 0xbabd, 0xbabd }, /* 0xbabe */ { true, 0xbabe, 0xbabe }, /* 0xbabf */ { true, 0xbabf, 0xbabf }, /* 0xbac0 */ { true, 0xbac0, 0xbac0 }, /* 0xbac1 */ { true, 0xbac1, 0xbac1 }, /* 0xbac2 */ { true, 0xbac2, 0xbac2 }, /* 0xbac3 */ { true, 0xbac3, 0xbac3 }, /* 0xbac4 */ { true, 0xbac4, 0xbac4 }, /* 0xbac5 */ { true, 0xbac5, 0xbac5 }, /* 0xbac6 */ { true, 0xbac6, 0xbac6 }, /* 0xbac7 */ { true, 0xbac7, 0xbac7 }, /* 0xbac8 */ { true, 0xbac8, 0xbac8 }, /* 0xbac9 */ { true, 0xbac9, 0xbac9 }, /* 0xbaca */ { true, 0xbaca, 0xbaca }, /* 0xbacb */ { true, 0xbacb, 0xbacb }, /* 0xbacc */ { true, 0xbacc, 0xbacc }, /* 0xbacd */ { true, 0xbacd, 0xbacd }, /* 0xbace */ { true, 0xbace, 0xbace }, /* 0xbacf */ { true, 0xbacf, 0xbacf }, /* 0xbad0 */ { true, 0xbad0, 0xbad0 }, /* 0xbad1 */ { true, 0xbad1, 0xbad1 }, /* 0xbad2 */ { true, 0xbad2, 0xbad2 }, /* 0xbad3 */ { true, 0xbad3, 0xbad3 }, /* 0xbad4 */ { true, 0xbad4, 0xbad4 }, /* 0xbad5 */ { true, 0xbad5, 0xbad5 }, /* 0xbad6 */ { true, 0xbad6, 0xbad6 }, /* 0xbad7 */ { true, 0xbad7, 0xbad7 }, /* 0xbad8 */ { true, 0xbad8, 0xbad8 }, /* 0xbad9 */ { true, 0xbad9, 0xbad9 }, /* 0xbada */ { true, 0xbada, 0xbada }, /* 0xbadb */ { true, 0xbadb, 0xbadb }, /* 0xbadc */ { true, 0xbadc, 0xbadc }, /* 0xbadd */ { true, 0xbadd, 0xbadd }, /* 0xbade */ { true, 0xbade, 0xbade }, /* 0xbadf */ { true, 0xbadf, 0xbadf }, /* 0xbae0 */ { true, 0xbae0, 0xbae0 }, /* 0xbae1 */ { true, 0xbae1, 0xbae1 }, /* 0xbae2 */ { true, 0xbae2, 0xbae2 }, /* 0xbae3 */ { true, 0xbae3, 0xbae3 }, /* 0xbae4 */ { true, 0xbae4, 0xbae4 }, /* 0xbae5 */ { true, 0xbae5, 0xbae5 }, /* 0xbae6 */ { true, 0xbae6, 0xbae6 }, /* 0xbae7 */ { true, 0xbae7, 0xbae7 }, /* 0xbae8 */ { true, 0xbae8, 0xbae8 }, /* 0xbae9 */ { true, 0xbae9, 0xbae9 }, /* 0xbaea */ { true, 0xbaea, 0xbaea }, /* 0xbaeb */ { true, 0xbaeb, 0xbaeb }, /* 0xbaec */ { true, 0xbaec, 0xbaec }, /* 0xbaed */ { true, 0xbaed, 0xbaed }, /* 0xbaee */ { true, 0xbaee, 0xbaee }, /* 0xbaef */ { true, 0xbaef, 0xbaef }, /* 0xbaf0 */ { true, 0xbaf0, 0xbaf0 }, /* 0xbaf1 */ { true, 0xbaf1, 0xbaf1 }, /* 0xbaf2 */ { true, 0xbaf2, 0xbaf2 }, /* 0xbaf3 */ { true, 0xbaf3, 0xbaf3 }, /* 0xbaf4 */ { true, 0xbaf4, 0xbaf4 }, /* 0xbaf5 */ { true, 0xbaf5, 0xbaf5 }, /* 0xbaf6 */ { true, 0xbaf6, 0xbaf6 }, /* 0xbaf7 */ { true, 0xbaf7, 0xbaf7 }, /* 0xbaf8 */ { true, 0xbaf8, 0xbaf8 }, /* 0xbaf9 */ { true, 0xbaf9, 0xbaf9 }, /* 0xbafa */ { true, 0xbafa, 0xbafa }, /* 0xbafb */ { true, 0xbafb, 0xbafb }, /* 0xbafc */ { true, 0xbafc, 0xbafc }, /* 0xbafd */ { true, 0xbafd, 0xbafd }, /* 0xbafe */ { true, 0xbafe, 0xbafe }, /* 0xbaff */ { true, 0xbaff, 0xbaff }, /* 0xbb00 */ { true, 0xbb00, 0xbb00 }, /* 0xbb01 */ { true, 0xbb01, 0xbb01 }, /* 0xbb02 */ { true, 0xbb02, 0xbb02 }, /* 0xbb03 */ { true, 0xbb03, 0xbb03 }, /* 0xbb04 */ { true, 0xbb04, 0xbb04 }, /* 0xbb05 */ { true, 0xbb05, 0xbb05 }, /* 0xbb06 */ { true, 0xbb06, 0xbb06 }, /* 0xbb07 */ { true, 0xbb07, 0xbb07 }, /* 0xbb08 */ { true, 0xbb08, 0xbb08 }, /* 0xbb09 */ { true, 0xbb09, 0xbb09 }, /* 0xbb0a */ { true, 0xbb0a, 0xbb0a }, /* 0xbb0b */ { true, 0xbb0b, 0xbb0b }, /* 0xbb0c */ { true, 0xbb0c, 0xbb0c }, /* 0xbb0d */ { true, 0xbb0d, 0xbb0d }, /* 0xbb0e */ { true, 0xbb0e, 0xbb0e }, /* 0xbb0f */ { true, 0xbb0f, 0xbb0f }, /* 0xbb10 */ { true, 0xbb10, 0xbb10 }, /* 0xbb11 */ { true, 0xbb11, 0xbb11 }, /* 0xbb12 */ { true, 0xbb12, 0xbb12 }, /* 0xbb13 */ { true, 0xbb13, 0xbb13 }, /* 0xbb14 */ { true, 0xbb14, 0xbb14 }, /* 0xbb15 */ { true, 0xbb15, 0xbb15 }, /* 0xbb16 */ { true, 0xbb16, 0xbb16 }, /* 0xbb17 */ { true, 0xbb17, 0xbb17 }, /* 0xbb18 */ { true, 0xbb18, 0xbb18 }, /* 0xbb19 */ { true, 0xbb19, 0xbb19 }, /* 0xbb1a */ { true, 0xbb1a, 0xbb1a }, /* 0xbb1b */ { true, 0xbb1b, 0xbb1b }, /* 0xbb1c */ { true, 0xbb1c, 0xbb1c }, /* 0xbb1d */ { true, 0xbb1d, 0xbb1d }, /* 0xbb1e */ { true, 0xbb1e, 0xbb1e }, /* 0xbb1f */ { true, 0xbb1f, 0xbb1f }, /* 0xbb20 */ { true, 0xbb20, 0xbb20 }, /* 0xbb21 */ { true, 0xbb21, 0xbb21 }, /* 0xbb22 */ { true, 0xbb22, 0xbb22 }, /* 0xbb23 */ { true, 0xbb23, 0xbb23 }, /* 0xbb24 */ { true, 0xbb24, 0xbb24 }, /* 0xbb25 */ { true, 0xbb25, 0xbb25 }, /* 0xbb26 */ { true, 0xbb26, 0xbb26 }, /* 0xbb27 */ { true, 0xbb27, 0xbb27 }, /* 0xbb28 */ { true, 0xbb28, 0xbb28 }, /* 0xbb29 */ { true, 0xbb29, 0xbb29 }, /* 0xbb2a */ { true, 0xbb2a, 0xbb2a }, /* 0xbb2b */ { true, 0xbb2b, 0xbb2b }, /* 0xbb2c */ { true, 0xbb2c, 0xbb2c }, /* 0xbb2d */ { true, 0xbb2d, 0xbb2d }, /* 0xbb2e */ { true, 0xbb2e, 0xbb2e }, /* 0xbb2f */ { true, 0xbb2f, 0xbb2f }, /* 0xbb30 */ { true, 0xbb30, 0xbb30 }, /* 0xbb31 */ { true, 0xbb31, 0xbb31 }, /* 0xbb32 */ { true, 0xbb32, 0xbb32 }, /* 0xbb33 */ { true, 0xbb33, 0xbb33 }, /* 0xbb34 */ { true, 0xbb34, 0xbb34 }, /* 0xbb35 */ { true, 0xbb35, 0xbb35 }, /* 0xbb36 */ { true, 0xbb36, 0xbb36 }, /* 0xbb37 */ { true, 0xbb37, 0xbb37 }, /* 0xbb38 */ { true, 0xbb38, 0xbb38 }, /* 0xbb39 */ { true, 0xbb39, 0xbb39 }, /* 0xbb3a */ { true, 0xbb3a, 0xbb3a }, /* 0xbb3b */ { true, 0xbb3b, 0xbb3b }, /* 0xbb3c */ { true, 0xbb3c, 0xbb3c }, /* 0xbb3d */ { true, 0xbb3d, 0xbb3d }, /* 0xbb3e */ { true, 0xbb3e, 0xbb3e }, /* 0xbb3f */ { true, 0xbb3f, 0xbb3f }, /* 0xbb40 */ { true, 0xbb40, 0xbb40 }, /* 0xbb41 */ { true, 0xbb41, 0xbb41 }, /* 0xbb42 */ { true, 0xbb42, 0xbb42 }, /* 0xbb43 */ { true, 0xbb43, 0xbb43 }, /* 0xbb44 */ { true, 0xbb44, 0xbb44 }, /* 0xbb45 */ { true, 0xbb45, 0xbb45 }, /* 0xbb46 */ { true, 0xbb46, 0xbb46 }, /* 0xbb47 */ { true, 0xbb47, 0xbb47 }, /* 0xbb48 */ { true, 0xbb48, 0xbb48 }, /* 0xbb49 */ { true, 0xbb49, 0xbb49 }, /* 0xbb4a */ { true, 0xbb4a, 0xbb4a }, /* 0xbb4b */ { true, 0xbb4b, 0xbb4b }, /* 0xbb4c */ { true, 0xbb4c, 0xbb4c }, /* 0xbb4d */ { true, 0xbb4d, 0xbb4d }, /* 0xbb4e */ { true, 0xbb4e, 0xbb4e }, /* 0xbb4f */ { true, 0xbb4f, 0xbb4f }, /* 0xbb50 */ { true, 0xbb50, 0xbb50 }, /* 0xbb51 */ { true, 0xbb51, 0xbb51 }, /* 0xbb52 */ { true, 0xbb52, 0xbb52 }, /* 0xbb53 */ { true, 0xbb53, 0xbb53 }, /* 0xbb54 */ { true, 0xbb54, 0xbb54 }, /* 0xbb55 */ { true, 0xbb55, 0xbb55 }, /* 0xbb56 */ { true, 0xbb56, 0xbb56 }, /* 0xbb57 */ { true, 0xbb57, 0xbb57 }, /* 0xbb58 */ { true, 0xbb58, 0xbb58 }, /* 0xbb59 */ { true, 0xbb59, 0xbb59 }, /* 0xbb5a */ { true, 0xbb5a, 0xbb5a }, /* 0xbb5b */ { true, 0xbb5b, 0xbb5b }, /* 0xbb5c */ { true, 0xbb5c, 0xbb5c }, /* 0xbb5d */ { true, 0xbb5d, 0xbb5d }, /* 0xbb5e */ { true, 0xbb5e, 0xbb5e }, /* 0xbb5f */ { true, 0xbb5f, 0xbb5f }, /* 0xbb60 */ { true, 0xbb60, 0xbb60 }, /* 0xbb61 */ { true, 0xbb61, 0xbb61 }, /* 0xbb62 */ { true, 0xbb62, 0xbb62 }, /* 0xbb63 */ { true, 0xbb63, 0xbb63 }, /* 0xbb64 */ { true, 0xbb64, 0xbb64 }, /* 0xbb65 */ { true, 0xbb65, 0xbb65 }, /* 0xbb66 */ { true, 0xbb66, 0xbb66 }, /* 0xbb67 */ { true, 0xbb67, 0xbb67 }, /* 0xbb68 */ { true, 0xbb68, 0xbb68 }, /* 0xbb69 */ { true, 0xbb69, 0xbb69 }, /* 0xbb6a */ { true, 0xbb6a, 0xbb6a }, /* 0xbb6b */ { true, 0xbb6b, 0xbb6b }, /* 0xbb6c */ { true, 0xbb6c, 0xbb6c }, /* 0xbb6d */ { true, 0xbb6d, 0xbb6d }, /* 0xbb6e */ { true, 0xbb6e, 0xbb6e }, /* 0xbb6f */ { true, 0xbb6f, 0xbb6f }, /* 0xbb70 */ { true, 0xbb70, 0xbb70 }, /* 0xbb71 */ { true, 0xbb71, 0xbb71 }, /* 0xbb72 */ { true, 0xbb72, 0xbb72 }, /* 0xbb73 */ { true, 0xbb73, 0xbb73 }, /* 0xbb74 */ { true, 0xbb74, 0xbb74 }, /* 0xbb75 */ { true, 0xbb75, 0xbb75 }, /* 0xbb76 */ { true, 0xbb76, 0xbb76 }, /* 0xbb77 */ { true, 0xbb77, 0xbb77 }, /* 0xbb78 */ { true, 0xbb78, 0xbb78 }, /* 0xbb79 */ { true, 0xbb79, 0xbb79 }, /* 0xbb7a */ { true, 0xbb7a, 0xbb7a }, /* 0xbb7b */ { true, 0xbb7b, 0xbb7b }, /* 0xbb7c */ { true, 0xbb7c, 0xbb7c }, /* 0xbb7d */ { true, 0xbb7d, 0xbb7d }, /* 0xbb7e */ { true, 0xbb7e, 0xbb7e }, /* 0xbb7f */ { true, 0xbb7f, 0xbb7f }, /* 0xbb80 */ { true, 0xbb80, 0xbb80 }, /* 0xbb81 */ { true, 0xbb81, 0xbb81 }, /* 0xbb82 */ { true, 0xbb82, 0xbb82 }, /* 0xbb83 */ { true, 0xbb83, 0xbb83 }, /* 0xbb84 */ { true, 0xbb84, 0xbb84 }, /* 0xbb85 */ { true, 0xbb85, 0xbb85 }, /* 0xbb86 */ { true, 0xbb86, 0xbb86 }, /* 0xbb87 */ { true, 0xbb87, 0xbb87 }, /* 0xbb88 */ { true, 0xbb88, 0xbb88 }, /* 0xbb89 */ { true, 0xbb89, 0xbb89 }, /* 0xbb8a */ { true, 0xbb8a, 0xbb8a }, /* 0xbb8b */ { true, 0xbb8b, 0xbb8b }, /* 0xbb8c */ { true, 0xbb8c, 0xbb8c }, /* 0xbb8d */ { true, 0xbb8d, 0xbb8d }, /* 0xbb8e */ { true, 0xbb8e, 0xbb8e }, /* 0xbb8f */ { true, 0xbb8f, 0xbb8f }, /* 0xbb90 */ { true, 0xbb90, 0xbb90 }, /* 0xbb91 */ { true, 0xbb91, 0xbb91 }, /* 0xbb92 */ { true, 0xbb92, 0xbb92 }, /* 0xbb93 */ { true, 0xbb93, 0xbb93 }, /* 0xbb94 */ { true, 0xbb94, 0xbb94 }, /* 0xbb95 */ { true, 0xbb95, 0xbb95 }, /* 0xbb96 */ { true, 0xbb96, 0xbb96 }, /* 0xbb97 */ { true, 0xbb97, 0xbb97 }, /* 0xbb98 */ { true, 0xbb98, 0xbb98 }, /* 0xbb99 */ { true, 0xbb99, 0xbb99 }, /* 0xbb9a */ { true, 0xbb9a, 0xbb9a }, /* 0xbb9b */ { true, 0xbb9b, 0xbb9b }, /* 0xbb9c */ { true, 0xbb9c, 0xbb9c }, /* 0xbb9d */ { true, 0xbb9d, 0xbb9d }, /* 0xbb9e */ { true, 0xbb9e, 0xbb9e }, /* 0xbb9f */ { true, 0xbb9f, 0xbb9f }, /* 0xbba0 */ { true, 0xbba0, 0xbba0 }, /* 0xbba1 */ { true, 0xbba1, 0xbba1 }, /* 0xbba2 */ { true, 0xbba2, 0xbba2 }, /* 0xbba3 */ { true, 0xbba3, 0xbba3 }, /* 0xbba4 */ { true, 0xbba4, 0xbba4 }, /* 0xbba5 */ { true, 0xbba5, 0xbba5 }, /* 0xbba6 */ { true, 0xbba6, 0xbba6 }, /* 0xbba7 */ { true, 0xbba7, 0xbba7 }, /* 0xbba8 */ { true, 0xbba8, 0xbba8 }, /* 0xbba9 */ { true, 0xbba9, 0xbba9 }, /* 0xbbaa */ { true, 0xbbaa, 0xbbaa }, /* 0xbbab */ { true, 0xbbab, 0xbbab }, /* 0xbbac */ { true, 0xbbac, 0xbbac }, /* 0xbbad */ { true, 0xbbad, 0xbbad }, /* 0xbbae */ { true, 0xbbae, 0xbbae }, /* 0xbbaf */ { true, 0xbbaf, 0xbbaf }, /* 0xbbb0 */ { true, 0xbbb0, 0xbbb0 }, /* 0xbbb1 */ { true, 0xbbb1, 0xbbb1 }, /* 0xbbb2 */ { true, 0xbbb2, 0xbbb2 }, /* 0xbbb3 */ { true, 0xbbb3, 0xbbb3 }, /* 0xbbb4 */ { true, 0xbbb4, 0xbbb4 }, /* 0xbbb5 */ { true, 0xbbb5, 0xbbb5 }, /* 0xbbb6 */ { true, 0xbbb6, 0xbbb6 }, /* 0xbbb7 */ { true, 0xbbb7, 0xbbb7 }, /* 0xbbb8 */ { true, 0xbbb8, 0xbbb8 }, /* 0xbbb9 */ { true, 0xbbb9, 0xbbb9 }, /* 0xbbba */ { true, 0xbbba, 0xbbba }, /* 0xbbbb */ { true, 0xbbbb, 0xbbbb }, /* 0xbbbc */ { true, 0xbbbc, 0xbbbc }, /* 0xbbbd */ { true, 0xbbbd, 0xbbbd }, /* 0xbbbe */ { true, 0xbbbe, 0xbbbe }, /* 0xbbbf */ { true, 0xbbbf, 0xbbbf }, /* 0xbbc0 */ { true, 0xbbc0, 0xbbc0 }, /* 0xbbc1 */ { true, 0xbbc1, 0xbbc1 }, /* 0xbbc2 */ { true, 0xbbc2, 0xbbc2 }, /* 0xbbc3 */ { true, 0xbbc3, 0xbbc3 }, /* 0xbbc4 */ { true, 0xbbc4, 0xbbc4 }, /* 0xbbc5 */ { true, 0xbbc5, 0xbbc5 }, /* 0xbbc6 */ { true, 0xbbc6, 0xbbc6 }, /* 0xbbc7 */ { true, 0xbbc7, 0xbbc7 }, /* 0xbbc8 */ { true, 0xbbc8, 0xbbc8 }, /* 0xbbc9 */ { true, 0xbbc9, 0xbbc9 }, /* 0xbbca */ { true, 0xbbca, 0xbbca }, /* 0xbbcb */ { true, 0xbbcb, 0xbbcb }, /* 0xbbcc */ { true, 0xbbcc, 0xbbcc }, /* 0xbbcd */ { true, 0xbbcd, 0xbbcd }, /* 0xbbce */ { true, 0xbbce, 0xbbce }, /* 0xbbcf */ { true, 0xbbcf, 0xbbcf }, /* 0xbbd0 */ { true, 0xbbd0, 0xbbd0 }, /* 0xbbd1 */ { true, 0xbbd1, 0xbbd1 }, /* 0xbbd2 */ { true, 0xbbd2, 0xbbd2 }, /* 0xbbd3 */ { true, 0xbbd3, 0xbbd3 }, /* 0xbbd4 */ { true, 0xbbd4, 0xbbd4 }, /* 0xbbd5 */ { true, 0xbbd5, 0xbbd5 }, /* 0xbbd6 */ { true, 0xbbd6, 0xbbd6 }, /* 0xbbd7 */ { true, 0xbbd7, 0xbbd7 }, /* 0xbbd8 */ { true, 0xbbd8, 0xbbd8 }, /* 0xbbd9 */ { true, 0xbbd9, 0xbbd9 }, /* 0xbbda */ { true, 0xbbda, 0xbbda }, /* 0xbbdb */ { true, 0xbbdb, 0xbbdb }, /* 0xbbdc */ { true, 0xbbdc, 0xbbdc }, /* 0xbbdd */ { true, 0xbbdd, 0xbbdd }, /* 0xbbde */ { true, 0xbbde, 0xbbde }, /* 0xbbdf */ { true, 0xbbdf, 0xbbdf }, /* 0xbbe0 */ { true, 0xbbe0, 0xbbe0 }, /* 0xbbe1 */ { true, 0xbbe1, 0xbbe1 }, /* 0xbbe2 */ { true, 0xbbe2, 0xbbe2 }, /* 0xbbe3 */ { true, 0xbbe3, 0xbbe3 }, /* 0xbbe4 */ { true, 0xbbe4, 0xbbe4 }, /* 0xbbe5 */ { true, 0xbbe5, 0xbbe5 }, /* 0xbbe6 */ { true, 0xbbe6, 0xbbe6 }, /* 0xbbe7 */ { true, 0xbbe7, 0xbbe7 }, /* 0xbbe8 */ { true, 0xbbe8, 0xbbe8 }, /* 0xbbe9 */ { true, 0xbbe9, 0xbbe9 }, /* 0xbbea */ { true, 0xbbea, 0xbbea }, /* 0xbbeb */ { true, 0xbbeb, 0xbbeb }, /* 0xbbec */ { true, 0xbbec, 0xbbec }, /* 0xbbed */ { true, 0xbbed, 0xbbed }, /* 0xbbee */ { true, 0xbbee, 0xbbee }, /* 0xbbef */ { true, 0xbbef, 0xbbef }, /* 0xbbf0 */ { true, 0xbbf0, 0xbbf0 }, /* 0xbbf1 */ { true, 0xbbf1, 0xbbf1 }, /* 0xbbf2 */ { true, 0xbbf2, 0xbbf2 }, /* 0xbbf3 */ { true, 0xbbf3, 0xbbf3 }, /* 0xbbf4 */ { true, 0xbbf4, 0xbbf4 }, /* 0xbbf5 */ { true, 0xbbf5, 0xbbf5 }, /* 0xbbf6 */ { true, 0xbbf6, 0xbbf6 }, /* 0xbbf7 */ { true, 0xbbf7, 0xbbf7 }, /* 0xbbf8 */ { true, 0xbbf8, 0xbbf8 }, /* 0xbbf9 */ { true, 0xbbf9, 0xbbf9 }, /* 0xbbfa */ { true, 0xbbfa, 0xbbfa }, /* 0xbbfb */ { true, 0xbbfb, 0xbbfb }, /* 0xbbfc */ { true, 0xbbfc, 0xbbfc }, /* 0xbbfd */ { true, 0xbbfd, 0xbbfd }, /* 0xbbfe */ { true, 0xbbfe, 0xbbfe }, /* 0xbbff */ { true, 0xbbff, 0xbbff }, /* 0xbc00 */ { true, 0xbc00, 0xbc00 }, /* 0xbc01 */ { true, 0xbc01, 0xbc01 }, /* 0xbc02 */ { true, 0xbc02, 0xbc02 }, /* 0xbc03 */ { true, 0xbc03, 0xbc03 }, /* 0xbc04 */ { true, 0xbc04, 0xbc04 }, /* 0xbc05 */ { true, 0xbc05, 0xbc05 }, /* 0xbc06 */ { true, 0xbc06, 0xbc06 }, /* 0xbc07 */ { true, 0xbc07, 0xbc07 }, /* 0xbc08 */ { true, 0xbc08, 0xbc08 }, /* 0xbc09 */ { true, 0xbc09, 0xbc09 }, /* 0xbc0a */ { true, 0xbc0a, 0xbc0a }, /* 0xbc0b */ { true, 0xbc0b, 0xbc0b }, /* 0xbc0c */ { true, 0xbc0c, 0xbc0c }, /* 0xbc0d */ { true, 0xbc0d, 0xbc0d }, /* 0xbc0e */ { true, 0xbc0e, 0xbc0e }, /* 0xbc0f */ { true, 0xbc0f, 0xbc0f }, /* 0xbc10 */ { true, 0xbc10, 0xbc10 }, /* 0xbc11 */ { true, 0xbc11, 0xbc11 }, /* 0xbc12 */ { true, 0xbc12, 0xbc12 }, /* 0xbc13 */ { true, 0xbc13, 0xbc13 }, /* 0xbc14 */ { true, 0xbc14, 0xbc14 }, /* 0xbc15 */ { true, 0xbc15, 0xbc15 }, /* 0xbc16 */ { true, 0xbc16, 0xbc16 }, /* 0xbc17 */ { true, 0xbc17, 0xbc17 }, /* 0xbc18 */ { true, 0xbc18, 0xbc18 }, /* 0xbc19 */ { true, 0xbc19, 0xbc19 }, /* 0xbc1a */ { true, 0xbc1a, 0xbc1a }, /* 0xbc1b */ { true, 0xbc1b, 0xbc1b }, /* 0xbc1c */ { true, 0xbc1c, 0xbc1c }, /* 0xbc1d */ { true, 0xbc1d, 0xbc1d }, /* 0xbc1e */ { true, 0xbc1e, 0xbc1e }, /* 0xbc1f */ { true, 0xbc1f, 0xbc1f }, /* 0xbc20 */ { true, 0xbc20, 0xbc20 }, /* 0xbc21 */ { true, 0xbc21, 0xbc21 }, /* 0xbc22 */ { true, 0xbc22, 0xbc22 }, /* 0xbc23 */ { true, 0xbc23, 0xbc23 }, /* 0xbc24 */ { true, 0xbc24, 0xbc24 }, /* 0xbc25 */ { true, 0xbc25, 0xbc25 }, /* 0xbc26 */ { true, 0xbc26, 0xbc26 }, /* 0xbc27 */ { true, 0xbc27, 0xbc27 }, /* 0xbc28 */ { true, 0xbc28, 0xbc28 }, /* 0xbc29 */ { true, 0xbc29, 0xbc29 }, /* 0xbc2a */ { true, 0xbc2a, 0xbc2a }, /* 0xbc2b */ { true, 0xbc2b, 0xbc2b }, /* 0xbc2c */ { true, 0xbc2c, 0xbc2c }, /* 0xbc2d */ { true, 0xbc2d, 0xbc2d }, /* 0xbc2e */ { true, 0xbc2e, 0xbc2e }, /* 0xbc2f */ { true, 0xbc2f, 0xbc2f }, /* 0xbc30 */ { true, 0xbc30, 0xbc30 }, /* 0xbc31 */ { true, 0xbc31, 0xbc31 }, /* 0xbc32 */ { true, 0xbc32, 0xbc32 }, /* 0xbc33 */ { true, 0xbc33, 0xbc33 }, /* 0xbc34 */ { true, 0xbc34, 0xbc34 }, /* 0xbc35 */ { true, 0xbc35, 0xbc35 }, /* 0xbc36 */ { true, 0xbc36, 0xbc36 }, /* 0xbc37 */ { true, 0xbc37, 0xbc37 }, /* 0xbc38 */ { true, 0xbc38, 0xbc38 }, /* 0xbc39 */ { true, 0xbc39, 0xbc39 }, /* 0xbc3a */ { true, 0xbc3a, 0xbc3a }, /* 0xbc3b */ { true, 0xbc3b, 0xbc3b }, /* 0xbc3c */ { true, 0xbc3c, 0xbc3c }, /* 0xbc3d */ { true, 0xbc3d, 0xbc3d }, /* 0xbc3e */ { true, 0xbc3e, 0xbc3e }, /* 0xbc3f */ { true, 0xbc3f, 0xbc3f }, /* 0xbc40 */ { true, 0xbc40, 0xbc40 }, /* 0xbc41 */ { true, 0xbc41, 0xbc41 }, /* 0xbc42 */ { true, 0xbc42, 0xbc42 }, /* 0xbc43 */ { true, 0xbc43, 0xbc43 }, /* 0xbc44 */ { true, 0xbc44, 0xbc44 }, /* 0xbc45 */ { true, 0xbc45, 0xbc45 }, /* 0xbc46 */ { true, 0xbc46, 0xbc46 }, /* 0xbc47 */ { true, 0xbc47, 0xbc47 }, /* 0xbc48 */ { true, 0xbc48, 0xbc48 }, /* 0xbc49 */ { true, 0xbc49, 0xbc49 }, /* 0xbc4a */ { true, 0xbc4a, 0xbc4a }, /* 0xbc4b */ { true, 0xbc4b, 0xbc4b }, /* 0xbc4c */ { true, 0xbc4c, 0xbc4c }, /* 0xbc4d */ { true, 0xbc4d, 0xbc4d }, /* 0xbc4e */ { true, 0xbc4e, 0xbc4e }, /* 0xbc4f */ { true, 0xbc4f, 0xbc4f }, /* 0xbc50 */ { true, 0xbc50, 0xbc50 }, /* 0xbc51 */ { true, 0xbc51, 0xbc51 }, /* 0xbc52 */ { true, 0xbc52, 0xbc52 }, /* 0xbc53 */ { true, 0xbc53, 0xbc53 }, /* 0xbc54 */ { true, 0xbc54, 0xbc54 }, /* 0xbc55 */ { true, 0xbc55, 0xbc55 }, /* 0xbc56 */ { true, 0xbc56, 0xbc56 }, /* 0xbc57 */ { true, 0xbc57, 0xbc57 }, /* 0xbc58 */ { true, 0xbc58, 0xbc58 }, /* 0xbc59 */ { true, 0xbc59, 0xbc59 }, /* 0xbc5a */ { true, 0xbc5a, 0xbc5a }, /* 0xbc5b */ { true, 0xbc5b, 0xbc5b }, /* 0xbc5c */ { true, 0xbc5c, 0xbc5c }, /* 0xbc5d */ { true, 0xbc5d, 0xbc5d }, /* 0xbc5e */ { true, 0xbc5e, 0xbc5e }, /* 0xbc5f */ { true, 0xbc5f, 0xbc5f }, /* 0xbc60 */ { true, 0xbc60, 0xbc60 }, /* 0xbc61 */ { true, 0xbc61, 0xbc61 }, /* 0xbc62 */ { true, 0xbc62, 0xbc62 }, /* 0xbc63 */ { true, 0xbc63, 0xbc63 }, /* 0xbc64 */ { true, 0xbc64, 0xbc64 }, /* 0xbc65 */ { true, 0xbc65, 0xbc65 }, /* 0xbc66 */ { true, 0xbc66, 0xbc66 }, /* 0xbc67 */ { true, 0xbc67, 0xbc67 }, /* 0xbc68 */ { true, 0xbc68, 0xbc68 }, /* 0xbc69 */ { true, 0xbc69, 0xbc69 }, /* 0xbc6a */ { true, 0xbc6a, 0xbc6a }, /* 0xbc6b */ { true, 0xbc6b, 0xbc6b }, /* 0xbc6c */ { true, 0xbc6c, 0xbc6c }, /* 0xbc6d */ { true, 0xbc6d, 0xbc6d }, /* 0xbc6e */ { true, 0xbc6e, 0xbc6e }, /* 0xbc6f */ { true, 0xbc6f, 0xbc6f }, /* 0xbc70 */ { true, 0xbc70, 0xbc70 }, /* 0xbc71 */ { true, 0xbc71, 0xbc71 }, /* 0xbc72 */ { true, 0xbc72, 0xbc72 }, /* 0xbc73 */ { true, 0xbc73, 0xbc73 }, /* 0xbc74 */ { true, 0xbc74, 0xbc74 }, /* 0xbc75 */ { true, 0xbc75, 0xbc75 }, /* 0xbc76 */ { true, 0xbc76, 0xbc76 }, /* 0xbc77 */ { true, 0xbc77, 0xbc77 }, /* 0xbc78 */ { true, 0xbc78, 0xbc78 }, /* 0xbc79 */ { true, 0xbc79, 0xbc79 }, /* 0xbc7a */ { true, 0xbc7a, 0xbc7a }, /* 0xbc7b */ { true, 0xbc7b, 0xbc7b }, /* 0xbc7c */ { true, 0xbc7c, 0xbc7c }, /* 0xbc7d */ { true, 0xbc7d, 0xbc7d }, /* 0xbc7e */ { true, 0xbc7e, 0xbc7e }, /* 0xbc7f */ { true, 0xbc7f, 0xbc7f }, /* 0xbc80 */ { true, 0xbc80, 0xbc80 }, /* 0xbc81 */ { true, 0xbc81, 0xbc81 }, /* 0xbc82 */ { true, 0xbc82, 0xbc82 }, /* 0xbc83 */ { true, 0xbc83, 0xbc83 }, /* 0xbc84 */ { true, 0xbc84, 0xbc84 }, /* 0xbc85 */ { true, 0xbc85, 0xbc85 }, /* 0xbc86 */ { true, 0xbc86, 0xbc86 }, /* 0xbc87 */ { true, 0xbc87, 0xbc87 }, /* 0xbc88 */ { true, 0xbc88, 0xbc88 }, /* 0xbc89 */ { true, 0xbc89, 0xbc89 }, /* 0xbc8a */ { true, 0xbc8a, 0xbc8a }, /* 0xbc8b */ { true, 0xbc8b, 0xbc8b }, /* 0xbc8c */ { true, 0xbc8c, 0xbc8c }, /* 0xbc8d */ { true, 0xbc8d, 0xbc8d }, /* 0xbc8e */ { true, 0xbc8e, 0xbc8e }, /* 0xbc8f */ { true, 0xbc8f, 0xbc8f }, /* 0xbc90 */ { true, 0xbc90, 0xbc90 }, /* 0xbc91 */ { true, 0xbc91, 0xbc91 }, /* 0xbc92 */ { true, 0xbc92, 0xbc92 }, /* 0xbc93 */ { true, 0xbc93, 0xbc93 }, /* 0xbc94 */ { true, 0xbc94, 0xbc94 }, /* 0xbc95 */ { true, 0xbc95, 0xbc95 }, /* 0xbc96 */ { true, 0xbc96, 0xbc96 }, /* 0xbc97 */ { true, 0xbc97, 0xbc97 }, /* 0xbc98 */ { true, 0xbc98, 0xbc98 }, /* 0xbc99 */ { true, 0xbc99, 0xbc99 }, /* 0xbc9a */ { true, 0xbc9a, 0xbc9a }, /* 0xbc9b */ { true, 0xbc9b, 0xbc9b }, /* 0xbc9c */ { true, 0xbc9c, 0xbc9c }, /* 0xbc9d */ { true, 0xbc9d, 0xbc9d }, /* 0xbc9e */ { true, 0xbc9e, 0xbc9e }, /* 0xbc9f */ { true, 0xbc9f, 0xbc9f }, /* 0xbca0 */ { true, 0xbca0, 0xbca0 }, /* 0xbca1 */ { true, 0xbca1, 0xbca1 }, /* 0xbca2 */ { true, 0xbca2, 0xbca2 }, /* 0xbca3 */ { true, 0xbca3, 0xbca3 }, /* 0xbca4 */ { true, 0xbca4, 0xbca4 }, /* 0xbca5 */ { true, 0xbca5, 0xbca5 }, /* 0xbca6 */ { true, 0xbca6, 0xbca6 }, /* 0xbca7 */ { true, 0xbca7, 0xbca7 }, /* 0xbca8 */ { true, 0xbca8, 0xbca8 }, /* 0xbca9 */ { true, 0xbca9, 0xbca9 }, /* 0xbcaa */ { true, 0xbcaa, 0xbcaa }, /* 0xbcab */ { true, 0xbcab, 0xbcab }, /* 0xbcac */ { true, 0xbcac, 0xbcac }, /* 0xbcad */ { true, 0xbcad, 0xbcad }, /* 0xbcae */ { true, 0xbcae, 0xbcae }, /* 0xbcaf */ { true, 0xbcaf, 0xbcaf }, /* 0xbcb0 */ { true, 0xbcb0, 0xbcb0 }, /* 0xbcb1 */ { true, 0xbcb1, 0xbcb1 }, /* 0xbcb2 */ { true, 0xbcb2, 0xbcb2 }, /* 0xbcb3 */ { true, 0xbcb3, 0xbcb3 }, /* 0xbcb4 */ { true, 0xbcb4, 0xbcb4 }, /* 0xbcb5 */ { true, 0xbcb5, 0xbcb5 }, /* 0xbcb6 */ { true, 0xbcb6, 0xbcb6 }, /* 0xbcb7 */ { true, 0xbcb7, 0xbcb7 }, /* 0xbcb8 */ { true, 0xbcb8, 0xbcb8 }, /* 0xbcb9 */ { true, 0xbcb9, 0xbcb9 }, /* 0xbcba */ { true, 0xbcba, 0xbcba }, /* 0xbcbb */ { true, 0xbcbb, 0xbcbb }, /* 0xbcbc */ { true, 0xbcbc, 0xbcbc }, /* 0xbcbd */ { true, 0xbcbd, 0xbcbd }, /* 0xbcbe */ { true, 0xbcbe, 0xbcbe }, /* 0xbcbf */ { true, 0xbcbf, 0xbcbf }, /* 0xbcc0 */ { true, 0xbcc0, 0xbcc0 }, /* 0xbcc1 */ { true, 0xbcc1, 0xbcc1 }, /* 0xbcc2 */ { true, 0xbcc2, 0xbcc2 }, /* 0xbcc3 */ { true, 0xbcc3, 0xbcc3 }, /* 0xbcc4 */ { true, 0xbcc4, 0xbcc4 }, /* 0xbcc5 */ { true, 0xbcc5, 0xbcc5 }, /* 0xbcc6 */ { true, 0xbcc6, 0xbcc6 }, /* 0xbcc7 */ { true, 0xbcc7, 0xbcc7 }, /* 0xbcc8 */ { true, 0xbcc8, 0xbcc8 }, /* 0xbcc9 */ { true, 0xbcc9, 0xbcc9 }, /* 0xbcca */ { true, 0xbcca, 0xbcca }, /* 0xbccb */ { true, 0xbccb, 0xbccb }, /* 0xbccc */ { true, 0xbccc, 0xbccc }, /* 0xbccd */ { true, 0xbccd, 0xbccd }, /* 0xbcce */ { true, 0xbcce, 0xbcce }, /* 0xbccf */ { true, 0xbccf, 0xbccf }, /* 0xbcd0 */ { true, 0xbcd0, 0xbcd0 }, /* 0xbcd1 */ { true, 0xbcd1, 0xbcd1 }, /* 0xbcd2 */ { true, 0xbcd2, 0xbcd2 }, /* 0xbcd3 */ { true, 0xbcd3, 0xbcd3 }, /* 0xbcd4 */ { true, 0xbcd4, 0xbcd4 }, /* 0xbcd5 */ { true, 0xbcd5, 0xbcd5 }, /* 0xbcd6 */ { true, 0xbcd6, 0xbcd6 }, /* 0xbcd7 */ { true, 0xbcd7, 0xbcd7 }, /* 0xbcd8 */ { true, 0xbcd8, 0xbcd8 }, /* 0xbcd9 */ { true, 0xbcd9, 0xbcd9 }, /* 0xbcda */ { true, 0xbcda, 0xbcda }, /* 0xbcdb */ { true, 0xbcdb, 0xbcdb }, /* 0xbcdc */ { true, 0xbcdc, 0xbcdc }, /* 0xbcdd */ { true, 0xbcdd, 0xbcdd }, /* 0xbcde */ { true, 0xbcde, 0xbcde }, /* 0xbcdf */ { true, 0xbcdf, 0xbcdf }, /* 0xbce0 */ { true, 0xbce0, 0xbce0 }, /* 0xbce1 */ { true, 0xbce1, 0xbce1 }, /* 0xbce2 */ { true, 0xbce2, 0xbce2 }, /* 0xbce3 */ { true, 0xbce3, 0xbce3 }, /* 0xbce4 */ { true, 0xbce4, 0xbce4 }, /* 0xbce5 */ { true, 0xbce5, 0xbce5 }, /* 0xbce6 */ { true, 0xbce6, 0xbce6 }, /* 0xbce7 */ { true, 0xbce7, 0xbce7 }, /* 0xbce8 */ { true, 0xbce8, 0xbce8 }, /* 0xbce9 */ { true, 0xbce9, 0xbce9 }, /* 0xbcea */ { true, 0xbcea, 0xbcea }, /* 0xbceb */ { true, 0xbceb, 0xbceb }, /* 0xbcec */ { true, 0xbcec, 0xbcec }, /* 0xbced */ { true, 0xbced, 0xbced }, /* 0xbcee */ { true, 0xbcee, 0xbcee }, /* 0xbcef */ { true, 0xbcef, 0xbcef }, /* 0xbcf0 */ { true, 0xbcf0, 0xbcf0 }, /* 0xbcf1 */ { true, 0xbcf1, 0xbcf1 }, /* 0xbcf2 */ { true, 0xbcf2, 0xbcf2 }, /* 0xbcf3 */ { true, 0xbcf3, 0xbcf3 }, /* 0xbcf4 */ { true, 0xbcf4, 0xbcf4 }, /* 0xbcf5 */ { true, 0xbcf5, 0xbcf5 }, /* 0xbcf6 */ { true, 0xbcf6, 0xbcf6 }, /* 0xbcf7 */ { true, 0xbcf7, 0xbcf7 }, /* 0xbcf8 */ { true, 0xbcf8, 0xbcf8 }, /* 0xbcf9 */ { true, 0xbcf9, 0xbcf9 }, /* 0xbcfa */ { true, 0xbcfa, 0xbcfa }, /* 0xbcfb */ { true, 0xbcfb, 0xbcfb }, /* 0xbcfc */ { true, 0xbcfc, 0xbcfc }, /* 0xbcfd */ { true, 0xbcfd, 0xbcfd }, /* 0xbcfe */ { true, 0xbcfe, 0xbcfe }, /* 0xbcff */ { true, 0xbcff, 0xbcff }, /* 0xbd00 */ { true, 0xbd00, 0xbd00 }, /* 0xbd01 */ { true, 0xbd01, 0xbd01 }, /* 0xbd02 */ { true, 0xbd02, 0xbd02 }, /* 0xbd03 */ { true, 0xbd03, 0xbd03 }, /* 0xbd04 */ { true, 0xbd04, 0xbd04 }, /* 0xbd05 */ { true, 0xbd05, 0xbd05 }, /* 0xbd06 */ { true, 0xbd06, 0xbd06 }, /* 0xbd07 */ { true, 0xbd07, 0xbd07 }, /* 0xbd08 */ { true, 0xbd08, 0xbd08 }, /* 0xbd09 */ { true, 0xbd09, 0xbd09 }, /* 0xbd0a */ { true, 0xbd0a, 0xbd0a }, /* 0xbd0b */ { true, 0xbd0b, 0xbd0b }, /* 0xbd0c */ { true, 0xbd0c, 0xbd0c }, /* 0xbd0d */ { true, 0xbd0d, 0xbd0d }, /* 0xbd0e */ { true, 0xbd0e, 0xbd0e }, /* 0xbd0f */ { true, 0xbd0f, 0xbd0f }, /* 0xbd10 */ { true, 0xbd10, 0xbd10 }, /* 0xbd11 */ { true, 0xbd11, 0xbd11 }, /* 0xbd12 */ { true, 0xbd12, 0xbd12 }, /* 0xbd13 */ { true, 0xbd13, 0xbd13 }, /* 0xbd14 */ { true, 0xbd14, 0xbd14 }, /* 0xbd15 */ { true, 0xbd15, 0xbd15 }, /* 0xbd16 */ { true, 0xbd16, 0xbd16 }, /* 0xbd17 */ { true, 0xbd17, 0xbd17 }, /* 0xbd18 */ { true, 0xbd18, 0xbd18 }, /* 0xbd19 */ { true, 0xbd19, 0xbd19 }, /* 0xbd1a */ { true, 0xbd1a, 0xbd1a }, /* 0xbd1b */ { true, 0xbd1b, 0xbd1b }, /* 0xbd1c */ { true, 0xbd1c, 0xbd1c }, /* 0xbd1d */ { true, 0xbd1d, 0xbd1d }, /* 0xbd1e */ { true, 0xbd1e, 0xbd1e }, /* 0xbd1f */ { true, 0xbd1f, 0xbd1f }, /* 0xbd20 */ { true, 0xbd20, 0xbd20 }, /* 0xbd21 */ { true, 0xbd21, 0xbd21 }, /* 0xbd22 */ { true, 0xbd22, 0xbd22 }, /* 0xbd23 */ { true, 0xbd23, 0xbd23 }, /* 0xbd24 */ { true, 0xbd24, 0xbd24 }, /* 0xbd25 */ { true, 0xbd25, 0xbd25 }, /* 0xbd26 */ { true, 0xbd26, 0xbd26 }, /* 0xbd27 */ { true, 0xbd27, 0xbd27 }, /* 0xbd28 */ { true, 0xbd28, 0xbd28 }, /* 0xbd29 */ { true, 0xbd29, 0xbd29 }, /* 0xbd2a */ { true, 0xbd2a, 0xbd2a }, /* 0xbd2b */ { true, 0xbd2b, 0xbd2b }, /* 0xbd2c */ { true, 0xbd2c, 0xbd2c }, /* 0xbd2d */ { true, 0xbd2d, 0xbd2d }, /* 0xbd2e */ { true, 0xbd2e, 0xbd2e }, /* 0xbd2f */ { true, 0xbd2f, 0xbd2f }, /* 0xbd30 */ { true, 0xbd30, 0xbd30 }, /* 0xbd31 */ { true, 0xbd31, 0xbd31 }, /* 0xbd32 */ { true, 0xbd32, 0xbd32 }, /* 0xbd33 */ { true, 0xbd33, 0xbd33 }, /* 0xbd34 */ { true, 0xbd34, 0xbd34 }, /* 0xbd35 */ { true, 0xbd35, 0xbd35 }, /* 0xbd36 */ { true, 0xbd36, 0xbd36 }, /* 0xbd37 */ { true, 0xbd37, 0xbd37 }, /* 0xbd38 */ { true, 0xbd38, 0xbd38 }, /* 0xbd39 */ { true, 0xbd39, 0xbd39 }, /* 0xbd3a */ { true, 0xbd3a, 0xbd3a }, /* 0xbd3b */ { true, 0xbd3b, 0xbd3b }, /* 0xbd3c */ { true, 0xbd3c, 0xbd3c }, /* 0xbd3d */ { true, 0xbd3d, 0xbd3d }, /* 0xbd3e */ { true, 0xbd3e, 0xbd3e }, /* 0xbd3f */ { true, 0xbd3f, 0xbd3f }, /* 0xbd40 */ { true, 0xbd40, 0xbd40 }, /* 0xbd41 */ { true, 0xbd41, 0xbd41 }, /* 0xbd42 */ { true, 0xbd42, 0xbd42 }, /* 0xbd43 */ { true, 0xbd43, 0xbd43 }, /* 0xbd44 */ { true, 0xbd44, 0xbd44 }, /* 0xbd45 */ { true, 0xbd45, 0xbd45 }, /* 0xbd46 */ { true, 0xbd46, 0xbd46 }, /* 0xbd47 */ { true, 0xbd47, 0xbd47 }, /* 0xbd48 */ { true, 0xbd48, 0xbd48 }, /* 0xbd49 */ { true, 0xbd49, 0xbd49 }, /* 0xbd4a */ { true, 0xbd4a, 0xbd4a }, /* 0xbd4b */ { true, 0xbd4b, 0xbd4b }, /* 0xbd4c */ { true, 0xbd4c, 0xbd4c }, /* 0xbd4d */ { true, 0xbd4d, 0xbd4d }, /* 0xbd4e */ { true, 0xbd4e, 0xbd4e }, /* 0xbd4f */ { true, 0xbd4f, 0xbd4f }, /* 0xbd50 */ { true, 0xbd50, 0xbd50 }, /* 0xbd51 */ { true, 0xbd51, 0xbd51 }, /* 0xbd52 */ { true, 0xbd52, 0xbd52 }, /* 0xbd53 */ { true, 0xbd53, 0xbd53 }, /* 0xbd54 */ { true, 0xbd54, 0xbd54 }, /* 0xbd55 */ { true, 0xbd55, 0xbd55 }, /* 0xbd56 */ { true, 0xbd56, 0xbd56 }, /* 0xbd57 */ { true, 0xbd57, 0xbd57 }, /* 0xbd58 */ { true, 0xbd58, 0xbd58 }, /* 0xbd59 */ { true, 0xbd59, 0xbd59 }, /* 0xbd5a */ { true, 0xbd5a, 0xbd5a }, /* 0xbd5b */ { true, 0xbd5b, 0xbd5b }, /* 0xbd5c */ { true, 0xbd5c, 0xbd5c }, /* 0xbd5d */ { true, 0xbd5d, 0xbd5d }, /* 0xbd5e */ { true, 0xbd5e, 0xbd5e }, /* 0xbd5f */ { true, 0xbd5f, 0xbd5f }, /* 0xbd60 */ { true, 0xbd60, 0xbd60 }, /* 0xbd61 */ { true, 0xbd61, 0xbd61 }, /* 0xbd62 */ { true, 0xbd62, 0xbd62 }, /* 0xbd63 */ { true, 0xbd63, 0xbd63 }, /* 0xbd64 */ { true, 0xbd64, 0xbd64 }, /* 0xbd65 */ { true, 0xbd65, 0xbd65 }, /* 0xbd66 */ { true, 0xbd66, 0xbd66 }, /* 0xbd67 */ { true, 0xbd67, 0xbd67 }, /* 0xbd68 */ { true, 0xbd68, 0xbd68 }, /* 0xbd69 */ { true, 0xbd69, 0xbd69 }, /* 0xbd6a */ { true, 0xbd6a, 0xbd6a }, /* 0xbd6b */ { true, 0xbd6b, 0xbd6b }, /* 0xbd6c */ { true, 0xbd6c, 0xbd6c }, /* 0xbd6d */ { true, 0xbd6d, 0xbd6d }, /* 0xbd6e */ { true, 0xbd6e, 0xbd6e }, /* 0xbd6f */ { true, 0xbd6f, 0xbd6f }, /* 0xbd70 */ { true, 0xbd70, 0xbd70 }, /* 0xbd71 */ { true, 0xbd71, 0xbd71 }, /* 0xbd72 */ { true, 0xbd72, 0xbd72 }, /* 0xbd73 */ { true, 0xbd73, 0xbd73 }, /* 0xbd74 */ { true, 0xbd74, 0xbd74 }, /* 0xbd75 */ { true, 0xbd75, 0xbd75 }, /* 0xbd76 */ { true, 0xbd76, 0xbd76 }, /* 0xbd77 */ { true, 0xbd77, 0xbd77 }, /* 0xbd78 */ { true, 0xbd78, 0xbd78 }, /* 0xbd79 */ { true, 0xbd79, 0xbd79 }, /* 0xbd7a */ { true, 0xbd7a, 0xbd7a }, /* 0xbd7b */ { true, 0xbd7b, 0xbd7b }, /* 0xbd7c */ { true, 0xbd7c, 0xbd7c }, /* 0xbd7d */ { true, 0xbd7d, 0xbd7d }, /* 0xbd7e */ { true, 0xbd7e, 0xbd7e }, /* 0xbd7f */ { true, 0xbd7f, 0xbd7f }, /* 0xbd80 */ { true, 0xbd80, 0xbd80 }, /* 0xbd81 */ { true, 0xbd81, 0xbd81 }, /* 0xbd82 */ { true, 0xbd82, 0xbd82 }, /* 0xbd83 */ { true, 0xbd83, 0xbd83 }, /* 0xbd84 */ { true, 0xbd84, 0xbd84 }, /* 0xbd85 */ { true, 0xbd85, 0xbd85 }, /* 0xbd86 */ { true, 0xbd86, 0xbd86 }, /* 0xbd87 */ { true, 0xbd87, 0xbd87 }, /* 0xbd88 */ { true, 0xbd88, 0xbd88 }, /* 0xbd89 */ { true, 0xbd89, 0xbd89 }, /* 0xbd8a */ { true, 0xbd8a, 0xbd8a }, /* 0xbd8b */ { true, 0xbd8b, 0xbd8b }, /* 0xbd8c */ { true, 0xbd8c, 0xbd8c }, /* 0xbd8d */ { true, 0xbd8d, 0xbd8d }, /* 0xbd8e */ { true, 0xbd8e, 0xbd8e }, /* 0xbd8f */ { true, 0xbd8f, 0xbd8f }, /* 0xbd90 */ { true, 0xbd90, 0xbd90 }, /* 0xbd91 */ { true, 0xbd91, 0xbd91 }, /* 0xbd92 */ { true, 0xbd92, 0xbd92 }, /* 0xbd93 */ { true, 0xbd93, 0xbd93 }, /* 0xbd94 */ { true, 0xbd94, 0xbd94 }, /* 0xbd95 */ { true, 0xbd95, 0xbd95 }, /* 0xbd96 */ { true, 0xbd96, 0xbd96 }, /* 0xbd97 */ { true, 0xbd97, 0xbd97 }, /* 0xbd98 */ { true, 0xbd98, 0xbd98 }, /* 0xbd99 */ { true, 0xbd99, 0xbd99 }, /* 0xbd9a */ { true, 0xbd9a, 0xbd9a }, /* 0xbd9b */ { true, 0xbd9b, 0xbd9b }, /* 0xbd9c */ { true, 0xbd9c, 0xbd9c }, /* 0xbd9d */ { true, 0xbd9d, 0xbd9d }, /* 0xbd9e */ { true, 0xbd9e, 0xbd9e }, /* 0xbd9f */ { true, 0xbd9f, 0xbd9f }, /* 0xbda0 */ { true, 0xbda0, 0xbda0 }, /* 0xbda1 */ { true, 0xbda1, 0xbda1 }, /* 0xbda2 */ { true, 0xbda2, 0xbda2 }, /* 0xbda3 */ { true, 0xbda3, 0xbda3 }, /* 0xbda4 */ { true, 0xbda4, 0xbda4 }, /* 0xbda5 */ { true, 0xbda5, 0xbda5 }, /* 0xbda6 */ { true, 0xbda6, 0xbda6 }, /* 0xbda7 */ { true, 0xbda7, 0xbda7 }, /* 0xbda8 */ { true, 0xbda8, 0xbda8 }, /* 0xbda9 */ { true, 0xbda9, 0xbda9 }, /* 0xbdaa */ { true, 0xbdaa, 0xbdaa }, /* 0xbdab */ { true, 0xbdab, 0xbdab }, /* 0xbdac */ { true, 0xbdac, 0xbdac }, /* 0xbdad */ { true, 0xbdad, 0xbdad }, /* 0xbdae */ { true, 0xbdae, 0xbdae }, /* 0xbdaf */ { true, 0xbdaf, 0xbdaf }, /* 0xbdb0 */ { true, 0xbdb0, 0xbdb0 }, /* 0xbdb1 */ { true, 0xbdb1, 0xbdb1 }, /* 0xbdb2 */ { true, 0xbdb2, 0xbdb2 }, /* 0xbdb3 */ { true, 0xbdb3, 0xbdb3 }, /* 0xbdb4 */ { true, 0xbdb4, 0xbdb4 }, /* 0xbdb5 */ { true, 0xbdb5, 0xbdb5 }, /* 0xbdb6 */ { true, 0xbdb6, 0xbdb6 }, /* 0xbdb7 */ { true, 0xbdb7, 0xbdb7 }, /* 0xbdb8 */ { true, 0xbdb8, 0xbdb8 }, /* 0xbdb9 */ { true, 0xbdb9, 0xbdb9 }, /* 0xbdba */ { true, 0xbdba, 0xbdba }, /* 0xbdbb */ { true, 0xbdbb, 0xbdbb }, /* 0xbdbc */ { true, 0xbdbc, 0xbdbc }, /* 0xbdbd */ { true, 0xbdbd, 0xbdbd }, /* 0xbdbe */ { true, 0xbdbe, 0xbdbe }, /* 0xbdbf */ { true, 0xbdbf, 0xbdbf }, /* 0xbdc0 */ { true, 0xbdc0, 0xbdc0 }, /* 0xbdc1 */ { true, 0xbdc1, 0xbdc1 }, /* 0xbdc2 */ { true, 0xbdc2, 0xbdc2 }, /* 0xbdc3 */ { true, 0xbdc3, 0xbdc3 }, /* 0xbdc4 */ { true, 0xbdc4, 0xbdc4 }, /* 0xbdc5 */ { true, 0xbdc5, 0xbdc5 }, /* 0xbdc6 */ { true, 0xbdc6, 0xbdc6 }, /* 0xbdc7 */ { true, 0xbdc7, 0xbdc7 }, /* 0xbdc8 */ { true, 0xbdc8, 0xbdc8 }, /* 0xbdc9 */ { true, 0xbdc9, 0xbdc9 }, /* 0xbdca */ { true, 0xbdca, 0xbdca }, /* 0xbdcb */ { true, 0xbdcb, 0xbdcb }, /* 0xbdcc */ { true, 0xbdcc, 0xbdcc }, /* 0xbdcd */ { true, 0xbdcd, 0xbdcd }, /* 0xbdce */ { true, 0xbdce, 0xbdce }, /* 0xbdcf */ { true, 0xbdcf, 0xbdcf }, /* 0xbdd0 */ { true, 0xbdd0, 0xbdd0 }, /* 0xbdd1 */ { true, 0xbdd1, 0xbdd1 }, /* 0xbdd2 */ { true, 0xbdd2, 0xbdd2 }, /* 0xbdd3 */ { true, 0xbdd3, 0xbdd3 }, /* 0xbdd4 */ { true, 0xbdd4, 0xbdd4 }, /* 0xbdd5 */ { true, 0xbdd5, 0xbdd5 }, /* 0xbdd6 */ { true, 0xbdd6, 0xbdd6 }, /* 0xbdd7 */ { true, 0xbdd7, 0xbdd7 }, /* 0xbdd8 */ { true, 0xbdd8, 0xbdd8 }, /* 0xbdd9 */ { true, 0xbdd9, 0xbdd9 }, /* 0xbdda */ { true, 0xbdda, 0xbdda }, /* 0xbddb */ { true, 0xbddb, 0xbddb }, /* 0xbddc */ { true, 0xbddc, 0xbddc }, /* 0xbddd */ { true, 0xbddd, 0xbddd }, /* 0xbdde */ { true, 0xbdde, 0xbdde }, /* 0xbddf */ { true, 0xbddf, 0xbddf }, /* 0xbde0 */ { true, 0xbde0, 0xbde0 }, /* 0xbde1 */ { true, 0xbde1, 0xbde1 }, /* 0xbde2 */ { true, 0xbde2, 0xbde2 }, /* 0xbde3 */ { true, 0xbde3, 0xbde3 }, /* 0xbde4 */ { true, 0xbde4, 0xbde4 }, /* 0xbde5 */ { true, 0xbde5, 0xbde5 }, /* 0xbde6 */ { true, 0xbde6, 0xbde6 }, /* 0xbde7 */ { true, 0xbde7, 0xbde7 }, /* 0xbde8 */ { true, 0xbde8, 0xbde8 }, /* 0xbde9 */ { true, 0xbde9, 0xbde9 }, /* 0xbdea */ { true, 0xbdea, 0xbdea }, /* 0xbdeb */ { true, 0xbdeb, 0xbdeb }, /* 0xbdec */ { true, 0xbdec, 0xbdec }, /* 0xbded */ { true, 0xbded, 0xbded }, /* 0xbdee */ { true, 0xbdee, 0xbdee }, /* 0xbdef */ { true, 0xbdef, 0xbdef }, /* 0xbdf0 */ { true, 0xbdf0, 0xbdf0 }, /* 0xbdf1 */ { true, 0xbdf1, 0xbdf1 }, /* 0xbdf2 */ { true, 0xbdf2, 0xbdf2 }, /* 0xbdf3 */ { true, 0xbdf3, 0xbdf3 }, /* 0xbdf4 */ { true, 0xbdf4, 0xbdf4 }, /* 0xbdf5 */ { true, 0xbdf5, 0xbdf5 }, /* 0xbdf6 */ { true, 0xbdf6, 0xbdf6 }, /* 0xbdf7 */ { true, 0xbdf7, 0xbdf7 }, /* 0xbdf8 */ { true, 0xbdf8, 0xbdf8 }, /* 0xbdf9 */ { true, 0xbdf9, 0xbdf9 }, /* 0xbdfa */ { true, 0xbdfa, 0xbdfa }, /* 0xbdfb */ { true, 0xbdfb, 0xbdfb }, /* 0xbdfc */ { true, 0xbdfc, 0xbdfc }, /* 0xbdfd */ { true, 0xbdfd, 0xbdfd }, /* 0xbdfe */ { true, 0xbdfe, 0xbdfe }, /* 0xbdff */ { true, 0xbdff, 0xbdff }, /* 0xbe00 */ { true, 0xbe00, 0xbe00 }, /* 0xbe01 */ { true, 0xbe01, 0xbe01 }, /* 0xbe02 */ { true, 0xbe02, 0xbe02 }, /* 0xbe03 */ { true, 0xbe03, 0xbe03 }, /* 0xbe04 */ { true, 0xbe04, 0xbe04 }, /* 0xbe05 */ { true, 0xbe05, 0xbe05 }, /* 0xbe06 */ { true, 0xbe06, 0xbe06 }, /* 0xbe07 */ { true, 0xbe07, 0xbe07 }, /* 0xbe08 */ { true, 0xbe08, 0xbe08 }, /* 0xbe09 */ { true, 0xbe09, 0xbe09 }, /* 0xbe0a */ { true, 0xbe0a, 0xbe0a }, /* 0xbe0b */ { true, 0xbe0b, 0xbe0b }, /* 0xbe0c */ { true, 0xbe0c, 0xbe0c }, /* 0xbe0d */ { true, 0xbe0d, 0xbe0d }, /* 0xbe0e */ { true, 0xbe0e, 0xbe0e }, /* 0xbe0f */ { true, 0xbe0f, 0xbe0f }, /* 0xbe10 */ { true, 0xbe10, 0xbe10 }, /* 0xbe11 */ { true, 0xbe11, 0xbe11 }, /* 0xbe12 */ { true, 0xbe12, 0xbe12 }, /* 0xbe13 */ { true, 0xbe13, 0xbe13 }, /* 0xbe14 */ { true, 0xbe14, 0xbe14 }, /* 0xbe15 */ { true, 0xbe15, 0xbe15 }, /* 0xbe16 */ { true, 0xbe16, 0xbe16 }, /* 0xbe17 */ { true, 0xbe17, 0xbe17 }, /* 0xbe18 */ { true, 0xbe18, 0xbe18 }, /* 0xbe19 */ { true, 0xbe19, 0xbe19 }, /* 0xbe1a */ { true, 0xbe1a, 0xbe1a }, /* 0xbe1b */ { true, 0xbe1b, 0xbe1b }, /* 0xbe1c */ { true, 0xbe1c, 0xbe1c }, /* 0xbe1d */ { true, 0xbe1d, 0xbe1d }, /* 0xbe1e */ { true, 0xbe1e, 0xbe1e }, /* 0xbe1f */ { true, 0xbe1f, 0xbe1f }, /* 0xbe20 */ { true, 0xbe20, 0xbe20 }, /* 0xbe21 */ { true, 0xbe21, 0xbe21 }, /* 0xbe22 */ { true, 0xbe22, 0xbe22 }, /* 0xbe23 */ { true, 0xbe23, 0xbe23 }, /* 0xbe24 */ { true, 0xbe24, 0xbe24 }, /* 0xbe25 */ { true, 0xbe25, 0xbe25 }, /* 0xbe26 */ { true, 0xbe26, 0xbe26 }, /* 0xbe27 */ { true, 0xbe27, 0xbe27 }, /* 0xbe28 */ { true, 0xbe28, 0xbe28 }, /* 0xbe29 */ { true, 0xbe29, 0xbe29 }, /* 0xbe2a */ { true, 0xbe2a, 0xbe2a }, /* 0xbe2b */ { true, 0xbe2b, 0xbe2b }, /* 0xbe2c */ { true, 0xbe2c, 0xbe2c }, /* 0xbe2d */ { true, 0xbe2d, 0xbe2d }, /* 0xbe2e */ { true, 0xbe2e, 0xbe2e }, /* 0xbe2f */ { true, 0xbe2f, 0xbe2f }, /* 0xbe30 */ { true, 0xbe30, 0xbe30 }, /* 0xbe31 */ { true, 0xbe31, 0xbe31 }, /* 0xbe32 */ { true, 0xbe32, 0xbe32 }, /* 0xbe33 */ { true, 0xbe33, 0xbe33 }, /* 0xbe34 */ { true, 0xbe34, 0xbe34 }, /* 0xbe35 */ { true, 0xbe35, 0xbe35 }, /* 0xbe36 */ { true, 0xbe36, 0xbe36 }, /* 0xbe37 */ { true, 0xbe37, 0xbe37 }, /* 0xbe38 */ { true, 0xbe38, 0xbe38 }, /* 0xbe39 */ { true, 0xbe39, 0xbe39 }, /* 0xbe3a */ { true, 0xbe3a, 0xbe3a }, /* 0xbe3b */ { true, 0xbe3b, 0xbe3b }, /* 0xbe3c */ { true, 0xbe3c, 0xbe3c }, /* 0xbe3d */ { true, 0xbe3d, 0xbe3d }, /* 0xbe3e */ { true, 0xbe3e, 0xbe3e }, /* 0xbe3f */ { true, 0xbe3f, 0xbe3f }, /* 0xbe40 */ { true, 0xbe40, 0xbe40 }, /* 0xbe41 */ { true, 0xbe41, 0xbe41 }, /* 0xbe42 */ { true, 0xbe42, 0xbe42 }, /* 0xbe43 */ { true, 0xbe43, 0xbe43 }, /* 0xbe44 */ { true, 0xbe44, 0xbe44 }, /* 0xbe45 */ { true, 0xbe45, 0xbe45 }, /* 0xbe46 */ { true, 0xbe46, 0xbe46 }, /* 0xbe47 */ { true, 0xbe47, 0xbe47 }, /* 0xbe48 */ { true, 0xbe48, 0xbe48 }, /* 0xbe49 */ { true, 0xbe49, 0xbe49 }, /* 0xbe4a */ { true, 0xbe4a, 0xbe4a }, /* 0xbe4b */ { true, 0xbe4b, 0xbe4b }, /* 0xbe4c */ { true, 0xbe4c, 0xbe4c }, /* 0xbe4d */ { true, 0xbe4d, 0xbe4d }, /* 0xbe4e */ { true, 0xbe4e, 0xbe4e }, /* 0xbe4f */ { true, 0xbe4f, 0xbe4f }, /* 0xbe50 */ { true, 0xbe50, 0xbe50 }, /* 0xbe51 */ { true, 0xbe51, 0xbe51 }, /* 0xbe52 */ { true, 0xbe52, 0xbe52 }, /* 0xbe53 */ { true, 0xbe53, 0xbe53 }, /* 0xbe54 */ { true, 0xbe54, 0xbe54 }, /* 0xbe55 */ { true, 0xbe55, 0xbe55 }, /* 0xbe56 */ { true, 0xbe56, 0xbe56 }, /* 0xbe57 */ { true, 0xbe57, 0xbe57 }, /* 0xbe58 */ { true, 0xbe58, 0xbe58 }, /* 0xbe59 */ { true, 0xbe59, 0xbe59 }, /* 0xbe5a */ { true, 0xbe5a, 0xbe5a }, /* 0xbe5b */ { true, 0xbe5b, 0xbe5b }, /* 0xbe5c */ { true, 0xbe5c, 0xbe5c }, /* 0xbe5d */ { true, 0xbe5d, 0xbe5d }, /* 0xbe5e */ { true, 0xbe5e, 0xbe5e }, /* 0xbe5f */ { true, 0xbe5f, 0xbe5f }, /* 0xbe60 */ { true, 0xbe60, 0xbe60 }, /* 0xbe61 */ { true, 0xbe61, 0xbe61 }, /* 0xbe62 */ { true, 0xbe62, 0xbe62 }, /* 0xbe63 */ { true, 0xbe63, 0xbe63 }, /* 0xbe64 */ { true, 0xbe64, 0xbe64 }, /* 0xbe65 */ { true, 0xbe65, 0xbe65 }, /* 0xbe66 */ { true, 0xbe66, 0xbe66 }, /* 0xbe67 */ { true, 0xbe67, 0xbe67 }, /* 0xbe68 */ { true, 0xbe68, 0xbe68 }, /* 0xbe69 */ { true, 0xbe69, 0xbe69 }, /* 0xbe6a */ { true, 0xbe6a, 0xbe6a }, /* 0xbe6b */ { true, 0xbe6b, 0xbe6b }, /* 0xbe6c */ { true, 0xbe6c, 0xbe6c }, /* 0xbe6d */ { true, 0xbe6d, 0xbe6d }, /* 0xbe6e */ { true, 0xbe6e, 0xbe6e }, /* 0xbe6f */ { true, 0xbe6f, 0xbe6f }, /* 0xbe70 */ { true, 0xbe70, 0xbe70 }, /* 0xbe71 */ { true, 0xbe71, 0xbe71 }, /* 0xbe72 */ { true, 0xbe72, 0xbe72 }, /* 0xbe73 */ { true, 0xbe73, 0xbe73 }, /* 0xbe74 */ { true, 0xbe74, 0xbe74 }, /* 0xbe75 */ { true, 0xbe75, 0xbe75 }, /* 0xbe76 */ { true, 0xbe76, 0xbe76 }, /* 0xbe77 */ { true, 0xbe77, 0xbe77 }, /* 0xbe78 */ { true, 0xbe78, 0xbe78 }, /* 0xbe79 */ { true, 0xbe79, 0xbe79 }, /* 0xbe7a */ { true, 0xbe7a, 0xbe7a }, /* 0xbe7b */ { true, 0xbe7b, 0xbe7b }, /* 0xbe7c */ { true, 0xbe7c, 0xbe7c }, /* 0xbe7d */ { true, 0xbe7d, 0xbe7d }, /* 0xbe7e */ { true, 0xbe7e, 0xbe7e }, /* 0xbe7f */ { true, 0xbe7f, 0xbe7f }, /* 0xbe80 */ { true, 0xbe80, 0xbe80 }, /* 0xbe81 */ { true, 0xbe81, 0xbe81 }, /* 0xbe82 */ { true, 0xbe82, 0xbe82 }, /* 0xbe83 */ { true, 0xbe83, 0xbe83 }, /* 0xbe84 */ { true, 0xbe84, 0xbe84 }, /* 0xbe85 */ { true, 0xbe85, 0xbe85 }, /* 0xbe86 */ { true, 0xbe86, 0xbe86 }, /* 0xbe87 */ { true, 0xbe87, 0xbe87 }, /* 0xbe88 */ { true, 0xbe88, 0xbe88 }, /* 0xbe89 */ { true, 0xbe89, 0xbe89 }, /* 0xbe8a */ { true, 0xbe8a, 0xbe8a }, /* 0xbe8b */ { true, 0xbe8b, 0xbe8b }, /* 0xbe8c */ { true, 0xbe8c, 0xbe8c }, /* 0xbe8d */ { true, 0xbe8d, 0xbe8d }, /* 0xbe8e */ { true, 0xbe8e, 0xbe8e }, /* 0xbe8f */ { true, 0xbe8f, 0xbe8f }, /* 0xbe90 */ { true, 0xbe90, 0xbe90 }, /* 0xbe91 */ { true, 0xbe91, 0xbe91 }, /* 0xbe92 */ { true, 0xbe92, 0xbe92 }, /* 0xbe93 */ { true, 0xbe93, 0xbe93 }, /* 0xbe94 */ { true, 0xbe94, 0xbe94 }, /* 0xbe95 */ { true, 0xbe95, 0xbe95 }, /* 0xbe96 */ { true, 0xbe96, 0xbe96 }, /* 0xbe97 */ { true, 0xbe97, 0xbe97 }, /* 0xbe98 */ { true, 0xbe98, 0xbe98 }, /* 0xbe99 */ { true, 0xbe99, 0xbe99 }, /* 0xbe9a */ { true, 0xbe9a, 0xbe9a }, /* 0xbe9b */ { true, 0xbe9b, 0xbe9b }, /* 0xbe9c */ { true, 0xbe9c, 0xbe9c }, /* 0xbe9d */ { true, 0xbe9d, 0xbe9d }, /* 0xbe9e */ { true, 0xbe9e, 0xbe9e }, /* 0xbe9f */ { true, 0xbe9f, 0xbe9f }, /* 0xbea0 */ { true, 0xbea0, 0xbea0 }, /* 0xbea1 */ { true, 0xbea1, 0xbea1 }, /* 0xbea2 */ { true, 0xbea2, 0xbea2 }, /* 0xbea3 */ { true, 0xbea3, 0xbea3 }, /* 0xbea4 */ { true, 0xbea4, 0xbea4 }, /* 0xbea5 */ { true, 0xbea5, 0xbea5 }, /* 0xbea6 */ { true, 0xbea6, 0xbea6 }, /* 0xbea7 */ { true, 0xbea7, 0xbea7 }, /* 0xbea8 */ { true, 0xbea8, 0xbea8 }, /* 0xbea9 */ { true, 0xbea9, 0xbea9 }, /* 0xbeaa */ { true, 0xbeaa, 0xbeaa }, /* 0xbeab */ { true, 0xbeab, 0xbeab }, /* 0xbeac */ { true, 0xbeac, 0xbeac }, /* 0xbead */ { true, 0xbead, 0xbead }, /* 0xbeae */ { true, 0xbeae, 0xbeae }, /* 0xbeaf */ { true, 0xbeaf, 0xbeaf }, /* 0xbeb0 */ { true, 0xbeb0, 0xbeb0 }, /* 0xbeb1 */ { true, 0xbeb1, 0xbeb1 }, /* 0xbeb2 */ { true, 0xbeb2, 0xbeb2 }, /* 0xbeb3 */ { true, 0xbeb3, 0xbeb3 }, /* 0xbeb4 */ { true, 0xbeb4, 0xbeb4 }, /* 0xbeb5 */ { true, 0xbeb5, 0xbeb5 }, /* 0xbeb6 */ { true, 0xbeb6, 0xbeb6 }, /* 0xbeb7 */ { true, 0xbeb7, 0xbeb7 }, /* 0xbeb8 */ { true, 0xbeb8, 0xbeb8 }, /* 0xbeb9 */ { true, 0xbeb9, 0xbeb9 }, /* 0xbeba */ { true, 0xbeba, 0xbeba }, /* 0xbebb */ { true, 0xbebb, 0xbebb }, /* 0xbebc */ { true, 0xbebc, 0xbebc }, /* 0xbebd */ { true, 0xbebd, 0xbebd }, /* 0xbebe */ { true, 0xbebe, 0xbebe }, /* 0xbebf */ { true, 0xbebf, 0xbebf }, /* 0xbec0 */ { true, 0xbec0, 0xbec0 }, /* 0xbec1 */ { true, 0xbec1, 0xbec1 }, /* 0xbec2 */ { true, 0xbec2, 0xbec2 }, /* 0xbec3 */ { true, 0xbec3, 0xbec3 }, /* 0xbec4 */ { true, 0xbec4, 0xbec4 }, /* 0xbec5 */ { true, 0xbec5, 0xbec5 }, /* 0xbec6 */ { true, 0xbec6, 0xbec6 }, /* 0xbec7 */ { true, 0xbec7, 0xbec7 }, /* 0xbec8 */ { true, 0xbec8, 0xbec8 }, /* 0xbec9 */ { true, 0xbec9, 0xbec9 }, /* 0xbeca */ { true, 0xbeca, 0xbeca }, /* 0xbecb */ { true, 0xbecb, 0xbecb }, /* 0xbecc */ { true, 0xbecc, 0xbecc }, /* 0xbecd */ { true, 0xbecd, 0xbecd }, /* 0xbece */ { true, 0xbece, 0xbece }, /* 0xbecf */ { true, 0xbecf, 0xbecf }, /* 0xbed0 */ { true, 0xbed0, 0xbed0 }, /* 0xbed1 */ { true, 0xbed1, 0xbed1 }, /* 0xbed2 */ { true, 0xbed2, 0xbed2 }, /* 0xbed3 */ { true, 0xbed3, 0xbed3 }, /* 0xbed4 */ { true, 0xbed4, 0xbed4 }, /* 0xbed5 */ { true, 0xbed5, 0xbed5 }, /* 0xbed6 */ { true, 0xbed6, 0xbed6 }, /* 0xbed7 */ { true, 0xbed7, 0xbed7 }, /* 0xbed8 */ { true, 0xbed8, 0xbed8 }, /* 0xbed9 */ { true, 0xbed9, 0xbed9 }, /* 0xbeda */ { true, 0xbeda, 0xbeda }, /* 0xbedb */ { true, 0xbedb, 0xbedb }, /* 0xbedc */ { true, 0xbedc, 0xbedc }, /* 0xbedd */ { true, 0xbedd, 0xbedd }, /* 0xbede */ { true, 0xbede, 0xbede }, /* 0xbedf */ { true, 0xbedf, 0xbedf }, /* 0xbee0 */ { true, 0xbee0, 0xbee0 }, /* 0xbee1 */ { true, 0xbee1, 0xbee1 }, /* 0xbee2 */ { true, 0xbee2, 0xbee2 }, /* 0xbee3 */ { true, 0xbee3, 0xbee3 }, /* 0xbee4 */ { true, 0xbee4, 0xbee4 }, /* 0xbee5 */ { true, 0xbee5, 0xbee5 }, /* 0xbee6 */ { true, 0xbee6, 0xbee6 }, /* 0xbee7 */ { true, 0xbee7, 0xbee7 }, /* 0xbee8 */ { true, 0xbee8, 0xbee8 }, /* 0xbee9 */ { true, 0xbee9, 0xbee9 }, /* 0xbeea */ { true, 0xbeea, 0xbeea }, /* 0xbeeb */ { true, 0xbeeb, 0xbeeb }, /* 0xbeec */ { true, 0xbeec, 0xbeec }, /* 0xbeed */ { true, 0xbeed, 0xbeed }, /* 0xbeee */ { true, 0xbeee, 0xbeee }, /* 0xbeef */ { true, 0xbeef, 0xbeef }, /* 0xbef0 */ { true, 0xbef0, 0xbef0 }, /* 0xbef1 */ { true, 0xbef1, 0xbef1 }, /* 0xbef2 */ { true, 0xbef2, 0xbef2 }, /* 0xbef3 */ { true, 0xbef3, 0xbef3 }, /* 0xbef4 */ { true, 0xbef4, 0xbef4 }, /* 0xbef5 */ { true, 0xbef5, 0xbef5 }, /* 0xbef6 */ { true, 0xbef6, 0xbef6 }, /* 0xbef7 */ { true, 0xbef7, 0xbef7 }, /* 0xbef8 */ { true, 0xbef8, 0xbef8 }, /* 0xbef9 */ { true, 0xbef9, 0xbef9 }, /* 0xbefa */ { true, 0xbefa, 0xbefa }, /* 0xbefb */ { true, 0xbefb, 0xbefb }, /* 0xbefc */ { true, 0xbefc, 0xbefc }, /* 0xbefd */ { true, 0xbefd, 0xbefd }, /* 0xbefe */ { true, 0xbefe, 0xbefe }, /* 0xbeff */ { true, 0xbeff, 0xbeff }, /* 0xbf00 */ { true, 0xbf00, 0xbf00 }, /* 0xbf01 */ { true, 0xbf01, 0xbf01 }, /* 0xbf02 */ { true, 0xbf02, 0xbf02 }, /* 0xbf03 */ { true, 0xbf03, 0xbf03 }, /* 0xbf04 */ { true, 0xbf04, 0xbf04 }, /* 0xbf05 */ { true, 0xbf05, 0xbf05 }, /* 0xbf06 */ { true, 0xbf06, 0xbf06 }, /* 0xbf07 */ { true, 0xbf07, 0xbf07 }, /* 0xbf08 */ { true, 0xbf08, 0xbf08 }, /* 0xbf09 */ { true, 0xbf09, 0xbf09 }, /* 0xbf0a */ { true, 0xbf0a, 0xbf0a }, /* 0xbf0b */ { true, 0xbf0b, 0xbf0b }, /* 0xbf0c */ { true, 0xbf0c, 0xbf0c }, /* 0xbf0d */ { true, 0xbf0d, 0xbf0d }, /* 0xbf0e */ { true, 0xbf0e, 0xbf0e }, /* 0xbf0f */ { true, 0xbf0f, 0xbf0f }, /* 0xbf10 */ { true, 0xbf10, 0xbf10 }, /* 0xbf11 */ { true, 0xbf11, 0xbf11 }, /* 0xbf12 */ { true, 0xbf12, 0xbf12 }, /* 0xbf13 */ { true, 0xbf13, 0xbf13 }, /* 0xbf14 */ { true, 0xbf14, 0xbf14 }, /* 0xbf15 */ { true, 0xbf15, 0xbf15 }, /* 0xbf16 */ { true, 0xbf16, 0xbf16 }, /* 0xbf17 */ { true, 0xbf17, 0xbf17 }, /* 0xbf18 */ { true, 0xbf18, 0xbf18 }, /* 0xbf19 */ { true, 0xbf19, 0xbf19 }, /* 0xbf1a */ { true, 0xbf1a, 0xbf1a }, /* 0xbf1b */ { true, 0xbf1b, 0xbf1b }, /* 0xbf1c */ { true, 0xbf1c, 0xbf1c }, /* 0xbf1d */ { true, 0xbf1d, 0xbf1d }, /* 0xbf1e */ { true, 0xbf1e, 0xbf1e }, /* 0xbf1f */ { true, 0xbf1f, 0xbf1f }, /* 0xbf20 */ { true, 0xbf20, 0xbf20 }, /* 0xbf21 */ { true, 0xbf21, 0xbf21 }, /* 0xbf22 */ { true, 0xbf22, 0xbf22 }, /* 0xbf23 */ { true, 0xbf23, 0xbf23 }, /* 0xbf24 */ { true, 0xbf24, 0xbf24 }, /* 0xbf25 */ { true, 0xbf25, 0xbf25 }, /* 0xbf26 */ { true, 0xbf26, 0xbf26 }, /* 0xbf27 */ { true, 0xbf27, 0xbf27 }, /* 0xbf28 */ { true, 0xbf28, 0xbf28 }, /* 0xbf29 */ { true, 0xbf29, 0xbf29 }, /* 0xbf2a */ { true, 0xbf2a, 0xbf2a }, /* 0xbf2b */ { true, 0xbf2b, 0xbf2b }, /* 0xbf2c */ { true, 0xbf2c, 0xbf2c }, /* 0xbf2d */ { true, 0xbf2d, 0xbf2d }, /* 0xbf2e */ { true, 0xbf2e, 0xbf2e }, /* 0xbf2f */ { true, 0xbf2f, 0xbf2f }, /* 0xbf30 */ { true, 0xbf30, 0xbf30 }, /* 0xbf31 */ { true, 0xbf31, 0xbf31 }, /* 0xbf32 */ { true, 0xbf32, 0xbf32 }, /* 0xbf33 */ { true, 0xbf33, 0xbf33 }, /* 0xbf34 */ { true, 0xbf34, 0xbf34 }, /* 0xbf35 */ { true, 0xbf35, 0xbf35 }, /* 0xbf36 */ { true, 0xbf36, 0xbf36 }, /* 0xbf37 */ { true, 0xbf37, 0xbf37 }, /* 0xbf38 */ { true, 0xbf38, 0xbf38 }, /* 0xbf39 */ { true, 0xbf39, 0xbf39 }, /* 0xbf3a */ { true, 0xbf3a, 0xbf3a }, /* 0xbf3b */ { true, 0xbf3b, 0xbf3b }, /* 0xbf3c */ { true, 0xbf3c, 0xbf3c }, /* 0xbf3d */ { true, 0xbf3d, 0xbf3d }, /* 0xbf3e */ { true, 0xbf3e, 0xbf3e }, /* 0xbf3f */ { true, 0xbf3f, 0xbf3f }, /* 0xbf40 */ { true, 0xbf40, 0xbf40 }, /* 0xbf41 */ { true, 0xbf41, 0xbf41 }, /* 0xbf42 */ { true, 0xbf42, 0xbf42 }, /* 0xbf43 */ { true, 0xbf43, 0xbf43 }, /* 0xbf44 */ { true, 0xbf44, 0xbf44 }, /* 0xbf45 */ { true, 0xbf45, 0xbf45 }, /* 0xbf46 */ { true, 0xbf46, 0xbf46 }, /* 0xbf47 */ { true, 0xbf47, 0xbf47 }, /* 0xbf48 */ { true, 0xbf48, 0xbf48 }, /* 0xbf49 */ { true, 0xbf49, 0xbf49 }, /* 0xbf4a */ { true, 0xbf4a, 0xbf4a }, /* 0xbf4b */ { true, 0xbf4b, 0xbf4b }, /* 0xbf4c */ { true, 0xbf4c, 0xbf4c }, /* 0xbf4d */ { true, 0xbf4d, 0xbf4d }, /* 0xbf4e */ { true, 0xbf4e, 0xbf4e }, /* 0xbf4f */ { true, 0xbf4f, 0xbf4f }, /* 0xbf50 */ { true, 0xbf50, 0xbf50 }, /* 0xbf51 */ { true, 0xbf51, 0xbf51 }, /* 0xbf52 */ { true, 0xbf52, 0xbf52 }, /* 0xbf53 */ { true, 0xbf53, 0xbf53 }, /* 0xbf54 */ { true, 0xbf54, 0xbf54 }, /* 0xbf55 */ { true, 0xbf55, 0xbf55 }, /* 0xbf56 */ { true, 0xbf56, 0xbf56 }, /* 0xbf57 */ { true, 0xbf57, 0xbf57 }, /* 0xbf58 */ { true, 0xbf58, 0xbf58 }, /* 0xbf59 */ { true, 0xbf59, 0xbf59 }, /* 0xbf5a */ { true, 0xbf5a, 0xbf5a }, /* 0xbf5b */ { true, 0xbf5b, 0xbf5b }, /* 0xbf5c */ { true, 0xbf5c, 0xbf5c }, /* 0xbf5d */ { true, 0xbf5d, 0xbf5d }, /* 0xbf5e */ { true, 0xbf5e, 0xbf5e }, /* 0xbf5f */ { true, 0xbf5f, 0xbf5f }, /* 0xbf60 */ { true, 0xbf60, 0xbf60 }, /* 0xbf61 */ { true, 0xbf61, 0xbf61 }, /* 0xbf62 */ { true, 0xbf62, 0xbf62 }, /* 0xbf63 */ { true, 0xbf63, 0xbf63 }, /* 0xbf64 */ { true, 0xbf64, 0xbf64 }, /* 0xbf65 */ { true, 0xbf65, 0xbf65 }, /* 0xbf66 */ { true, 0xbf66, 0xbf66 }, /* 0xbf67 */ { true, 0xbf67, 0xbf67 }, /* 0xbf68 */ { true, 0xbf68, 0xbf68 }, /* 0xbf69 */ { true, 0xbf69, 0xbf69 }, /* 0xbf6a */ { true, 0xbf6a, 0xbf6a }, /* 0xbf6b */ { true, 0xbf6b, 0xbf6b }, /* 0xbf6c */ { true, 0xbf6c, 0xbf6c }, /* 0xbf6d */ { true, 0xbf6d, 0xbf6d }, /* 0xbf6e */ { true, 0xbf6e, 0xbf6e }, /* 0xbf6f */ { true, 0xbf6f, 0xbf6f }, /* 0xbf70 */ { true, 0xbf70, 0xbf70 }, /* 0xbf71 */ { true, 0xbf71, 0xbf71 }, /* 0xbf72 */ { true, 0xbf72, 0xbf72 }, /* 0xbf73 */ { true, 0xbf73, 0xbf73 }, /* 0xbf74 */ { true, 0xbf74, 0xbf74 }, /* 0xbf75 */ { true, 0xbf75, 0xbf75 }, /* 0xbf76 */ { true, 0xbf76, 0xbf76 }, /* 0xbf77 */ { true, 0xbf77, 0xbf77 }, /* 0xbf78 */ { true, 0xbf78, 0xbf78 }, /* 0xbf79 */ { true, 0xbf79, 0xbf79 }, /* 0xbf7a */ { true, 0xbf7a, 0xbf7a }, /* 0xbf7b */ { true, 0xbf7b, 0xbf7b }, /* 0xbf7c */ { true, 0xbf7c, 0xbf7c }, /* 0xbf7d */ { true, 0xbf7d, 0xbf7d }, /* 0xbf7e */ { true, 0xbf7e, 0xbf7e }, /* 0xbf7f */ { true, 0xbf7f, 0xbf7f }, /* 0xbf80 */ { true, 0xbf80, 0xbf80 }, /* 0xbf81 */ { true, 0xbf81, 0xbf81 }, /* 0xbf82 */ { true, 0xbf82, 0xbf82 }, /* 0xbf83 */ { true, 0xbf83, 0xbf83 }, /* 0xbf84 */ { true, 0xbf84, 0xbf84 }, /* 0xbf85 */ { true, 0xbf85, 0xbf85 }, /* 0xbf86 */ { true, 0xbf86, 0xbf86 }, /* 0xbf87 */ { true, 0xbf87, 0xbf87 }, /* 0xbf88 */ { true, 0xbf88, 0xbf88 }, /* 0xbf89 */ { true, 0xbf89, 0xbf89 }, /* 0xbf8a */ { true, 0xbf8a, 0xbf8a }, /* 0xbf8b */ { true, 0xbf8b, 0xbf8b }, /* 0xbf8c */ { true, 0xbf8c, 0xbf8c }, /* 0xbf8d */ { true, 0xbf8d, 0xbf8d }, /* 0xbf8e */ { true, 0xbf8e, 0xbf8e }, /* 0xbf8f */ { true, 0xbf8f, 0xbf8f }, /* 0xbf90 */ { true, 0xbf90, 0xbf90 }, /* 0xbf91 */ { true, 0xbf91, 0xbf91 }, /* 0xbf92 */ { true, 0xbf92, 0xbf92 }, /* 0xbf93 */ { true, 0xbf93, 0xbf93 }, /* 0xbf94 */ { true, 0xbf94, 0xbf94 }, /* 0xbf95 */ { true, 0xbf95, 0xbf95 }, /* 0xbf96 */ { true, 0xbf96, 0xbf96 }, /* 0xbf97 */ { true, 0xbf97, 0xbf97 }, /* 0xbf98 */ { true, 0xbf98, 0xbf98 }, /* 0xbf99 */ { true, 0xbf99, 0xbf99 }, /* 0xbf9a */ { true, 0xbf9a, 0xbf9a }, /* 0xbf9b */ { true, 0xbf9b, 0xbf9b }, /* 0xbf9c */ { true, 0xbf9c, 0xbf9c }, /* 0xbf9d */ { true, 0xbf9d, 0xbf9d }, /* 0xbf9e */ { true, 0xbf9e, 0xbf9e }, /* 0xbf9f */ { true, 0xbf9f, 0xbf9f }, /* 0xbfa0 */ { true, 0xbfa0, 0xbfa0 }, /* 0xbfa1 */ { true, 0xbfa1, 0xbfa1 }, /* 0xbfa2 */ { true, 0xbfa2, 0xbfa2 }, /* 0xbfa3 */ { true, 0xbfa3, 0xbfa3 }, /* 0xbfa4 */ { true, 0xbfa4, 0xbfa4 }, /* 0xbfa5 */ { true, 0xbfa5, 0xbfa5 }, /* 0xbfa6 */ { true, 0xbfa6, 0xbfa6 }, /* 0xbfa7 */ { true, 0xbfa7, 0xbfa7 }, /* 0xbfa8 */ { true, 0xbfa8, 0xbfa8 }, /* 0xbfa9 */ { true, 0xbfa9, 0xbfa9 }, /* 0xbfaa */ { true, 0xbfaa, 0xbfaa }, /* 0xbfab */ { true, 0xbfab, 0xbfab }, /* 0xbfac */ { true, 0xbfac, 0xbfac }, /* 0xbfad */ { true, 0xbfad, 0xbfad }, /* 0xbfae */ { true, 0xbfae, 0xbfae }, /* 0xbfaf */ { true, 0xbfaf, 0xbfaf }, /* 0xbfb0 */ { true, 0xbfb0, 0xbfb0 }, /* 0xbfb1 */ { true, 0xbfb1, 0xbfb1 }, /* 0xbfb2 */ { true, 0xbfb2, 0xbfb2 }, /* 0xbfb3 */ { true, 0xbfb3, 0xbfb3 }, /* 0xbfb4 */ { true, 0xbfb4, 0xbfb4 }, /* 0xbfb5 */ { true, 0xbfb5, 0xbfb5 }, /* 0xbfb6 */ { true, 0xbfb6, 0xbfb6 }, /* 0xbfb7 */ { true, 0xbfb7, 0xbfb7 }, /* 0xbfb8 */ { true, 0xbfb8, 0xbfb8 }, /* 0xbfb9 */ { true, 0xbfb9, 0xbfb9 }, /* 0xbfba */ { true, 0xbfba, 0xbfba }, /* 0xbfbb */ { true, 0xbfbb, 0xbfbb }, /* 0xbfbc */ { true, 0xbfbc, 0xbfbc }, /* 0xbfbd */ { true, 0xbfbd, 0xbfbd }, /* 0xbfbe */ { true, 0xbfbe, 0xbfbe }, /* 0xbfbf */ { true, 0xbfbf, 0xbfbf }, /* 0xbfc0 */ { true, 0xbfc0, 0xbfc0 }, /* 0xbfc1 */ { true, 0xbfc1, 0xbfc1 }, /* 0xbfc2 */ { true, 0xbfc2, 0xbfc2 }, /* 0xbfc3 */ { true, 0xbfc3, 0xbfc3 }, /* 0xbfc4 */ { true, 0xbfc4, 0xbfc4 }, /* 0xbfc5 */ { true, 0xbfc5, 0xbfc5 }, /* 0xbfc6 */ { true, 0xbfc6, 0xbfc6 }, /* 0xbfc7 */ { true, 0xbfc7, 0xbfc7 }, /* 0xbfc8 */ { true, 0xbfc8, 0xbfc8 }, /* 0xbfc9 */ { true, 0xbfc9, 0xbfc9 }, /* 0xbfca */ { true, 0xbfca, 0xbfca }, /* 0xbfcb */ { true, 0xbfcb, 0xbfcb }, /* 0xbfcc */ { true, 0xbfcc, 0xbfcc }, /* 0xbfcd */ { true, 0xbfcd, 0xbfcd }, /* 0xbfce */ { true, 0xbfce, 0xbfce }, /* 0xbfcf */ { true, 0xbfcf, 0xbfcf }, /* 0xbfd0 */ { true, 0xbfd0, 0xbfd0 }, /* 0xbfd1 */ { true, 0xbfd1, 0xbfd1 }, /* 0xbfd2 */ { true, 0xbfd2, 0xbfd2 }, /* 0xbfd3 */ { true, 0xbfd3, 0xbfd3 }, /* 0xbfd4 */ { true, 0xbfd4, 0xbfd4 }, /* 0xbfd5 */ { true, 0xbfd5, 0xbfd5 }, /* 0xbfd6 */ { true, 0xbfd6, 0xbfd6 }, /* 0xbfd7 */ { true, 0xbfd7, 0xbfd7 }, /* 0xbfd8 */ { true, 0xbfd8, 0xbfd8 }, /* 0xbfd9 */ { true, 0xbfd9, 0xbfd9 }, /* 0xbfda */ { true, 0xbfda, 0xbfda }, /* 0xbfdb */ { true, 0xbfdb, 0xbfdb }, /* 0xbfdc */ { true, 0xbfdc, 0xbfdc }, /* 0xbfdd */ { true, 0xbfdd, 0xbfdd }, /* 0xbfde */ { true, 0xbfde, 0xbfde }, /* 0xbfdf */ { true, 0xbfdf, 0xbfdf }, /* 0xbfe0 */ { true, 0xbfe0, 0xbfe0 }, /* 0xbfe1 */ { true, 0xbfe1, 0xbfe1 }, /* 0xbfe2 */ { true, 0xbfe2, 0xbfe2 }, /* 0xbfe3 */ { true, 0xbfe3, 0xbfe3 }, /* 0xbfe4 */ { true, 0xbfe4, 0xbfe4 }, /* 0xbfe5 */ { true, 0xbfe5, 0xbfe5 }, /* 0xbfe6 */ { true, 0xbfe6, 0xbfe6 }, /* 0xbfe7 */ { true, 0xbfe7, 0xbfe7 }, /* 0xbfe8 */ { true, 0xbfe8, 0xbfe8 }, /* 0xbfe9 */ { true, 0xbfe9, 0xbfe9 }, /* 0xbfea */ { true, 0xbfea, 0xbfea }, /* 0xbfeb */ { true, 0xbfeb, 0xbfeb }, /* 0xbfec */ { true, 0xbfec, 0xbfec }, /* 0xbfed */ { true, 0xbfed, 0xbfed }, /* 0xbfee */ { true, 0xbfee, 0xbfee }, /* 0xbfef */ { true, 0xbfef, 0xbfef }, /* 0xbff0 */ { true, 0xbff0, 0xbff0 }, /* 0xbff1 */ { true, 0xbff1, 0xbff1 }, /* 0xbff2 */ { true, 0xbff2, 0xbff2 }, /* 0xbff3 */ { true, 0xbff3, 0xbff3 }, /* 0xbff4 */ { true, 0xbff4, 0xbff4 }, /* 0xbff5 */ { true, 0xbff5, 0xbff5 }, /* 0xbff6 */ { true, 0xbff6, 0xbff6 }, /* 0xbff7 */ { true, 0xbff7, 0xbff7 }, /* 0xbff8 */ { true, 0xbff8, 0xbff8 }, /* 0xbff9 */ { true, 0xbff9, 0xbff9 }, /* 0xbffa */ { true, 0xbffa, 0xbffa }, /* 0xbffb */ { true, 0xbffb, 0xbffb }, /* 0xbffc */ { true, 0xbffc, 0xbffc }, /* 0xbffd */ { true, 0xbffd, 0xbffd }, /* 0xbffe */ { true, 0xbffe, 0xbffe }, /* 0xbfff */ { true, 0xbfff, 0xbfff }, /* 0xc000 */ { true, 0xc000, 0xc000 }, /* 0xc001 */ { true, 0xc001, 0xc001 }, /* 0xc002 */ { true, 0xc002, 0xc002 }, /* 0xc003 */ { true, 0xc003, 0xc003 }, /* 0xc004 */ { true, 0xc004, 0xc004 }, /* 0xc005 */ { true, 0xc005, 0xc005 }, /* 0xc006 */ { true, 0xc006, 0xc006 }, /* 0xc007 */ { true, 0xc007, 0xc007 }, /* 0xc008 */ { true, 0xc008, 0xc008 }, /* 0xc009 */ { true, 0xc009, 0xc009 }, /* 0xc00a */ { true, 0xc00a, 0xc00a }, /* 0xc00b */ { true, 0xc00b, 0xc00b }, /* 0xc00c */ { true, 0xc00c, 0xc00c }, /* 0xc00d */ { true, 0xc00d, 0xc00d }, /* 0xc00e */ { true, 0xc00e, 0xc00e }, /* 0xc00f */ { true, 0xc00f, 0xc00f }, /* 0xc010 */ { true, 0xc010, 0xc010 }, /* 0xc011 */ { true, 0xc011, 0xc011 }, /* 0xc012 */ { true, 0xc012, 0xc012 }, /* 0xc013 */ { true, 0xc013, 0xc013 }, /* 0xc014 */ { true, 0xc014, 0xc014 }, /* 0xc015 */ { true, 0xc015, 0xc015 }, /* 0xc016 */ { true, 0xc016, 0xc016 }, /* 0xc017 */ { true, 0xc017, 0xc017 }, /* 0xc018 */ { true, 0xc018, 0xc018 }, /* 0xc019 */ { true, 0xc019, 0xc019 }, /* 0xc01a */ { true, 0xc01a, 0xc01a }, /* 0xc01b */ { true, 0xc01b, 0xc01b }, /* 0xc01c */ { true, 0xc01c, 0xc01c }, /* 0xc01d */ { true, 0xc01d, 0xc01d }, /* 0xc01e */ { true, 0xc01e, 0xc01e }, /* 0xc01f */ { true, 0xc01f, 0xc01f }, /* 0xc020 */ { true, 0xc020, 0xc020 }, /* 0xc021 */ { true, 0xc021, 0xc021 }, /* 0xc022 */ { true, 0xc022, 0xc022 }, /* 0xc023 */ { true, 0xc023, 0xc023 }, /* 0xc024 */ { true, 0xc024, 0xc024 }, /* 0xc025 */ { true, 0xc025, 0xc025 }, /* 0xc026 */ { true, 0xc026, 0xc026 }, /* 0xc027 */ { true, 0xc027, 0xc027 }, /* 0xc028 */ { true, 0xc028, 0xc028 }, /* 0xc029 */ { true, 0xc029, 0xc029 }, /* 0xc02a */ { true, 0xc02a, 0xc02a }, /* 0xc02b */ { true, 0xc02b, 0xc02b }, /* 0xc02c */ { true, 0xc02c, 0xc02c }, /* 0xc02d */ { true, 0xc02d, 0xc02d }, /* 0xc02e */ { true, 0xc02e, 0xc02e }, /* 0xc02f */ { true, 0xc02f, 0xc02f }, /* 0xc030 */ { true, 0xc030, 0xc030 }, /* 0xc031 */ { true, 0xc031, 0xc031 }, /* 0xc032 */ { true, 0xc032, 0xc032 }, /* 0xc033 */ { true, 0xc033, 0xc033 }, /* 0xc034 */ { true, 0xc034, 0xc034 }, /* 0xc035 */ { true, 0xc035, 0xc035 }, /* 0xc036 */ { true, 0xc036, 0xc036 }, /* 0xc037 */ { true, 0xc037, 0xc037 }, /* 0xc038 */ { true, 0xc038, 0xc038 }, /* 0xc039 */ { true, 0xc039, 0xc039 }, /* 0xc03a */ { true, 0xc03a, 0xc03a }, /* 0xc03b */ { true, 0xc03b, 0xc03b }, /* 0xc03c */ { true, 0xc03c, 0xc03c }, /* 0xc03d */ { true, 0xc03d, 0xc03d }, /* 0xc03e */ { true, 0xc03e, 0xc03e }, /* 0xc03f */ { true, 0xc03f, 0xc03f }, /* 0xc040 */ { true, 0xc040, 0xc040 }, /* 0xc041 */ { true, 0xc041, 0xc041 }, /* 0xc042 */ { true, 0xc042, 0xc042 }, /* 0xc043 */ { true, 0xc043, 0xc043 }, /* 0xc044 */ { true, 0xc044, 0xc044 }, /* 0xc045 */ { true, 0xc045, 0xc045 }, /* 0xc046 */ { true, 0xc046, 0xc046 }, /* 0xc047 */ { true, 0xc047, 0xc047 }, /* 0xc048 */ { true, 0xc048, 0xc048 }, /* 0xc049 */ { true, 0xc049, 0xc049 }, /* 0xc04a */ { true, 0xc04a, 0xc04a }, /* 0xc04b */ { true, 0xc04b, 0xc04b }, /* 0xc04c */ { true, 0xc04c, 0xc04c }, /* 0xc04d */ { true, 0xc04d, 0xc04d }, /* 0xc04e */ { true, 0xc04e, 0xc04e }, /* 0xc04f */ { true, 0xc04f, 0xc04f }, /* 0xc050 */ { true, 0xc050, 0xc050 }, /* 0xc051 */ { true, 0xc051, 0xc051 }, /* 0xc052 */ { true, 0xc052, 0xc052 }, /* 0xc053 */ { true, 0xc053, 0xc053 }, /* 0xc054 */ { true, 0xc054, 0xc054 }, /* 0xc055 */ { true, 0xc055, 0xc055 }, /* 0xc056 */ { true, 0xc056, 0xc056 }, /* 0xc057 */ { true, 0xc057, 0xc057 }, /* 0xc058 */ { true, 0xc058, 0xc058 }, /* 0xc059 */ { true, 0xc059, 0xc059 }, /* 0xc05a */ { true, 0xc05a, 0xc05a }, /* 0xc05b */ { true, 0xc05b, 0xc05b }, /* 0xc05c */ { true, 0xc05c, 0xc05c }, /* 0xc05d */ { true, 0xc05d, 0xc05d }, /* 0xc05e */ { true, 0xc05e, 0xc05e }, /* 0xc05f */ { true, 0xc05f, 0xc05f }, /* 0xc060 */ { true, 0xc060, 0xc060 }, /* 0xc061 */ { true, 0xc061, 0xc061 }, /* 0xc062 */ { true, 0xc062, 0xc062 }, /* 0xc063 */ { true, 0xc063, 0xc063 }, /* 0xc064 */ { true, 0xc064, 0xc064 }, /* 0xc065 */ { true, 0xc065, 0xc065 }, /* 0xc066 */ { true, 0xc066, 0xc066 }, /* 0xc067 */ { true, 0xc067, 0xc067 }, /* 0xc068 */ { true, 0xc068, 0xc068 }, /* 0xc069 */ { true, 0xc069, 0xc069 }, /* 0xc06a */ { true, 0xc06a, 0xc06a }, /* 0xc06b */ { true, 0xc06b, 0xc06b }, /* 0xc06c */ { true, 0xc06c, 0xc06c }, /* 0xc06d */ { true, 0xc06d, 0xc06d }, /* 0xc06e */ { true, 0xc06e, 0xc06e }, /* 0xc06f */ { true, 0xc06f, 0xc06f }, /* 0xc070 */ { true, 0xc070, 0xc070 }, /* 0xc071 */ { true, 0xc071, 0xc071 }, /* 0xc072 */ { true, 0xc072, 0xc072 }, /* 0xc073 */ { true, 0xc073, 0xc073 }, /* 0xc074 */ { true, 0xc074, 0xc074 }, /* 0xc075 */ { true, 0xc075, 0xc075 }, /* 0xc076 */ { true, 0xc076, 0xc076 }, /* 0xc077 */ { true, 0xc077, 0xc077 }, /* 0xc078 */ { true, 0xc078, 0xc078 }, /* 0xc079 */ { true, 0xc079, 0xc079 }, /* 0xc07a */ { true, 0xc07a, 0xc07a }, /* 0xc07b */ { true, 0xc07b, 0xc07b }, /* 0xc07c */ { true, 0xc07c, 0xc07c }, /* 0xc07d */ { true, 0xc07d, 0xc07d }, /* 0xc07e */ { true, 0xc07e, 0xc07e }, /* 0xc07f */ { true, 0xc07f, 0xc07f }, /* 0xc080 */ { true, 0xc080, 0xc080 }, /* 0xc081 */ { true, 0xc081, 0xc081 }, /* 0xc082 */ { true, 0xc082, 0xc082 }, /* 0xc083 */ { true, 0xc083, 0xc083 }, /* 0xc084 */ { true, 0xc084, 0xc084 }, /* 0xc085 */ { true, 0xc085, 0xc085 }, /* 0xc086 */ { true, 0xc086, 0xc086 }, /* 0xc087 */ { true, 0xc087, 0xc087 }, /* 0xc088 */ { true, 0xc088, 0xc088 }, /* 0xc089 */ { true, 0xc089, 0xc089 }, /* 0xc08a */ { true, 0xc08a, 0xc08a }, /* 0xc08b */ { true, 0xc08b, 0xc08b }, /* 0xc08c */ { true, 0xc08c, 0xc08c }, /* 0xc08d */ { true, 0xc08d, 0xc08d }, /* 0xc08e */ { true, 0xc08e, 0xc08e }, /* 0xc08f */ { true, 0xc08f, 0xc08f }, /* 0xc090 */ { true, 0xc090, 0xc090 }, /* 0xc091 */ { true, 0xc091, 0xc091 }, /* 0xc092 */ { true, 0xc092, 0xc092 }, /* 0xc093 */ { true, 0xc093, 0xc093 }, /* 0xc094 */ { true, 0xc094, 0xc094 }, /* 0xc095 */ { true, 0xc095, 0xc095 }, /* 0xc096 */ { true, 0xc096, 0xc096 }, /* 0xc097 */ { true, 0xc097, 0xc097 }, /* 0xc098 */ { true, 0xc098, 0xc098 }, /* 0xc099 */ { true, 0xc099, 0xc099 }, /* 0xc09a */ { true, 0xc09a, 0xc09a }, /* 0xc09b */ { true, 0xc09b, 0xc09b }, /* 0xc09c */ { true, 0xc09c, 0xc09c }, /* 0xc09d */ { true, 0xc09d, 0xc09d }, /* 0xc09e */ { true, 0xc09e, 0xc09e }, /* 0xc09f */ { true, 0xc09f, 0xc09f }, /* 0xc0a0 */ { true, 0xc0a0, 0xc0a0 }, /* 0xc0a1 */ { true, 0xc0a1, 0xc0a1 }, /* 0xc0a2 */ { true, 0xc0a2, 0xc0a2 }, /* 0xc0a3 */ { true, 0xc0a3, 0xc0a3 }, /* 0xc0a4 */ { true, 0xc0a4, 0xc0a4 }, /* 0xc0a5 */ { true, 0xc0a5, 0xc0a5 }, /* 0xc0a6 */ { true, 0xc0a6, 0xc0a6 }, /* 0xc0a7 */ { true, 0xc0a7, 0xc0a7 }, /* 0xc0a8 */ { true, 0xc0a8, 0xc0a8 }, /* 0xc0a9 */ { true, 0xc0a9, 0xc0a9 }, /* 0xc0aa */ { true, 0xc0aa, 0xc0aa }, /* 0xc0ab */ { true, 0xc0ab, 0xc0ab }, /* 0xc0ac */ { true, 0xc0ac, 0xc0ac }, /* 0xc0ad */ { true, 0xc0ad, 0xc0ad }, /* 0xc0ae */ { true, 0xc0ae, 0xc0ae }, /* 0xc0af */ { true, 0xc0af, 0xc0af }, /* 0xc0b0 */ { true, 0xc0b0, 0xc0b0 }, /* 0xc0b1 */ { true, 0xc0b1, 0xc0b1 }, /* 0xc0b2 */ { true, 0xc0b2, 0xc0b2 }, /* 0xc0b3 */ { true, 0xc0b3, 0xc0b3 }, /* 0xc0b4 */ { true, 0xc0b4, 0xc0b4 }, /* 0xc0b5 */ { true, 0xc0b5, 0xc0b5 }, /* 0xc0b6 */ { true, 0xc0b6, 0xc0b6 }, /* 0xc0b7 */ { true, 0xc0b7, 0xc0b7 }, /* 0xc0b8 */ { true, 0xc0b8, 0xc0b8 }, /* 0xc0b9 */ { true, 0xc0b9, 0xc0b9 }, /* 0xc0ba */ { true, 0xc0ba, 0xc0ba }, /* 0xc0bb */ { true, 0xc0bb, 0xc0bb }, /* 0xc0bc */ { true, 0xc0bc, 0xc0bc }, /* 0xc0bd */ { true, 0xc0bd, 0xc0bd }, /* 0xc0be */ { true, 0xc0be, 0xc0be }, /* 0xc0bf */ { true, 0xc0bf, 0xc0bf }, /* 0xc0c0 */ { true, 0xc0c0, 0xc0c0 }, /* 0xc0c1 */ { true, 0xc0c1, 0xc0c1 }, /* 0xc0c2 */ { true, 0xc0c2, 0xc0c2 }, /* 0xc0c3 */ { true, 0xc0c3, 0xc0c3 }, /* 0xc0c4 */ { true, 0xc0c4, 0xc0c4 }, /* 0xc0c5 */ { true, 0xc0c5, 0xc0c5 }, /* 0xc0c6 */ { true, 0xc0c6, 0xc0c6 }, /* 0xc0c7 */ { true, 0xc0c7, 0xc0c7 }, /* 0xc0c8 */ { true, 0xc0c8, 0xc0c8 }, /* 0xc0c9 */ { true, 0xc0c9, 0xc0c9 }, /* 0xc0ca */ { true, 0xc0ca, 0xc0ca }, /* 0xc0cb */ { true, 0xc0cb, 0xc0cb }, /* 0xc0cc */ { true, 0xc0cc, 0xc0cc }, /* 0xc0cd */ { true, 0xc0cd, 0xc0cd }, /* 0xc0ce */ { true, 0xc0ce, 0xc0ce }, /* 0xc0cf */ { true, 0xc0cf, 0xc0cf }, /* 0xc0d0 */ { true, 0xc0d0, 0xc0d0 }, /* 0xc0d1 */ { true, 0xc0d1, 0xc0d1 }, /* 0xc0d2 */ { true, 0xc0d2, 0xc0d2 }, /* 0xc0d3 */ { true, 0xc0d3, 0xc0d3 }, /* 0xc0d4 */ { true, 0xc0d4, 0xc0d4 }, /* 0xc0d5 */ { true, 0xc0d5, 0xc0d5 }, /* 0xc0d6 */ { true, 0xc0d6, 0xc0d6 }, /* 0xc0d7 */ { true, 0xc0d7, 0xc0d7 }, /* 0xc0d8 */ { true, 0xc0d8, 0xc0d8 }, /* 0xc0d9 */ { true, 0xc0d9, 0xc0d9 }, /* 0xc0da */ { true, 0xc0da, 0xc0da }, /* 0xc0db */ { true, 0xc0db, 0xc0db }, /* 0xc0dc */ { true, 0xc0dc, 0xc0dc }, /* 0xc0dd */ { true, 0xc0dd, 0xc0dd }, /* 0xc0de */ { true, 0xc0de, 0xc0de }, /* 0xc0df */ { true, 0xc0df, 0xc0df }, /* 0xc0e0 */ { true, 0xc0e0, 0xc0e0 }, /* 0xc0e1 */ { true, 0xc0e1, 0xc0e1 }, /* 0xc0e2 */ { true, 0xc0e2, 0xc0e2 }, /* 0xc0e3 */ { true, 0xc0e3, 0xc0e3 }, /* 0xc0e4 */ { true, 0xc0e4, 0xc0e4 }, /* 0xc0e5 */ { true, 0xc0e5, 0xc0e5 }, /* 0xc0e6 */ { true, 0xc0e6, 0xc0e6 }, /* 0xc0e7 */ { true, 0xc0e7, 0xc0e7 }, /* 0xc0e8 */ { true, 0xc0e8, 0xc0e8 }, /* 0xc0e9 */ { true, 0xc0e9, 0xc0e9 }, /* 0xc0ea */ { true, 0xc0ea, 0xc0ea }, /* 0xc0eb */ { true, 0xc0eb, 0xc0eb }, /* 0xc0ec */ { true, 0xc0ec, 0xc0ec }, /* 0xc0ed */ { true, 0xc0ed, 0xc0ed }, /* 0xc0ee */ { true, 0xc0ee, 0xc0ee }, /* 0xc0ef */ { true, 0xc0ef, 0xc0ef }, /* 0xc0f0 */ { true, 0xc0f0, 0xc0f0 }, /* 0xc0f1 */ { true, 0xc0f1, 0xc0f1 }, /* 0xc0f2 */ { true, 0xc0f2, 0xc0f2 }, /* 0xc0f3 */ { true, 0xc0f3, 0xc0f3 }, /* 0xc0f4 */ { true, 0xc0f4, 0xc0f4 }, /* 0xc0f5 */ { true, 0xc0f5, 0xc0f5 }, /* 0xc0f6 */ { true, 0xc0f6, 0xc0f6 }, /* 0xc0f7 */ { true, 0xc0f7, 0xc0f7 }, /* 0xc0f8 */ { true, 0xc0f8, 0xc0f8 }, /* 0xc0f9 */ { true, 0xc0f9, 0xc0f9 }, /* 0xc0fa */ { true, 0xc0fa, 0xc0fa }, /* 0xc0fb */ { true, 0xc0fb, 0xc0fb }, /* 0xc0fc */ { true, 0xc0fc, 0xc0fc }, /* 0xc0fd */ { true, 0xc0fd, 0xc0fd }, /* 0xc0fe */ { true, 0xc0fe, 0xc0fe }, /* 0xc0ff */ { true, 0xc0ff, 0xc0ff }, /* 0xc100 */ { true, 0xc100, 0xc100 }, /* 0xc101 */ { true, 0xc101, 0xc101 }, /* 0xc102 */ { true, 0xc102, 0xc102 }, /* 0xc103 */ { true, 0xc103, 0xc103 }, /* 0xc104 */ { true, 0xc104, 0xc104 }, /* 0xc105 */ { true, 0xc105, 0xc105 }, /* 0xc106 */ { true, 0xc106, 0xc106 }, /* 0xc107 */ { true, 0xc107, 0xc107 }, /* 0xc108 */ { true, 0xc108, 0xc108 }, /* 0xc109 */ { true, 0xc109, 0xc109 }, /* 0xc10a */ { true, 0xc10a, 0xc10a }, /* 0xc10b */ { true, 0xc10b, 0xc10b }, /* 0xc10c */ { true, 0xc10c, 0xc10c }, /* 0xc10d */ { true, 0xc10d, 0xc10d }, /* 0xc10e */ { true, 0xc10e, 0xc10e }, /* 0xc10f */ { true, 0xc10f, 0xc10f }, /* 0xc110 */ { true, 0xc110, 0xc110 }, /* 0xc111 */ { true, 0xc111, 0xc111 }, /* 0xc112 */ { true, 0xc112, 0xc112 }, /* 0xc113 */ { true, 0xc113, 0xc113 }, /* 0xc114 */ { true, 0xc114, 0xc114 }, /* 0xc115 */ { true, 0xc115, 0xc115 }, /* 0xc116 */ { true, 0xc116, 0xc116 }, /* 0xc117 */ { true, 0xc117, 0xc117 }, /* 0xc118 */ { true, 0xc118, 0xc118 }, /* 0xc119 */ { true, 0xc119, 0xc119 }, /* 0xc11a */ { true, 0xc11a, 0xc11a }, /* 0xc11b */ { true, 0xc11b, 0xc11b }, /* 0xc11c */ { true, 0xc11c, 0xc11c }, /* 0xc11d */ { true, 0xc11d, 0xc11d }, /* 0xc11e */ { true, 0xc11e, 0xc11e }, /* 0xc11f */ { true, 0xc11f, 0xc11f }, /* 0xc120 */ { true, 0xc120, 0xc120 }, /* 0xc121 */ { true, 0xc121, 0xc121 }, /* 0xc122 */ { true, 0xc122, 0xc122 }, /* 0xc123 */ { true, 0xc123, 0xc123 }, /* 0xc124 */ { true, 0xc124, 0xc124 }, /* 0xc125 */ { true, 0xc125, 0xc125 }, /* 0xc126 */ { true, 0xc126, 0xc126 }, /* 0xc127 */ { true, 0xc127, 0xc127 }, /* 0xc128 */ { true, 0xc128, 0xc128 }, /* 0xc129 */ { true, 0xc129, 0xc129 }, /* 0xc12a */ { true, 0xc12a, 0xc12a }, /* 0xc12b */ { true, 0xc12b, 0xc12b }, /* 0xc12c */ { true, 0xc12c, 0xc12c }, /* 0xc12d */ { true, 0xc12d, 0xc12d }, /* 0xc12e */ { true, 0xc12e, 0xc12e }, /* 0xc12f */ { true, 0xc12f, 0xc12f }, /* 0xc130 */ { true, 0xc130, 0xc130 }, /* 0xc131 */ { true, 0xc131, 0xc131 }, /* 0xc132 */ { true, 0xc132, 0xc132 }, /* 0xc133 */ { true, 0xc133, 0xc133 }, /* 0xc134 */ { true, 0xc134, 0xc134 }, /* 0xc135 */ { true, 0xc135, 0xc135 }, /* 0xc136 */ { true, 0xc136, 0xc136 }, /* 0xc137 */ { true, 0xc137, 0xc137 }, /* 0xc138 */ { true, 0xc138, 0xc138 }, /* 0xc139 */ { true, 0xc139, 0xc139 }, /* 0xc13a */ { true, 0xc13a, 0xc13a }, /* 0xc13b */ { true, 0xc13b, 0xc13b }, /* 0xc13c */ { true, 0xc13c, 0xc13c }, /* 0xc13d */ { true, 0xc13d, 0xc13d }, /* 0xc13e */ { true, 0xc13e, 0xc13e }, /* 0xc13f */ { true, 0xc13f, 0xc13f }, /* 0xc140 */ { true, 0xc140, 0xc140 }, /* 0xc141 */ { true, 0xc141, 0xc141 }, /* 0xc142 */ { true, 0xc142, 0xc142 }, /* 0xc143 */ { true, 0xc143, 0xc143 }, /* 0xc144 */ { true, 0xc144, 0xc144 }, /* 0xc145 */ { true, 0xc145, 0xc145 }, /* 0xc146 */ { true, 0xc146, 0xc146 }, /* 0xc147 */ { true, 0xc147, 0xc147 }, /* 0xc148 */ { true, 0xc148, 0xc148 }, /* 0xc149 */ { true, 0xc149, 0xc149 }, /* 0xc14a */ { true, 0xc14a, 0xc14a }, /* 0xc14b */ { true, 0xc14b, 0xc14b }, /* 0xc14c */ { true, 0xc14c, 0xc14c }, /* 0xc14d */ { true, 0xc14d, 0xc14d }, /* 0xc14e */ { true, 0xc14e, 0xc14e }, /* 0xc14f */ { true, 0xc14f, 0xc14f }, /* 0xc150 */ { true, 0xc150, 0xc150 }, /* 0xc151 */ { true, 0xc151, 0xc151 }, /* 0xc152 */ { true, 0xc152, 0xc152 }, /* 0xc153 */ { true, 0xc153, 0xc153 }, /* 0xc154 */ { true, 0xc154, 0xc154 }, /* 0xc155 */ { true, 0xc155, 0xc155 }, /* 0xc156 */ { true, 0xc156, 0xc156 }, /* 0xc157 */ { true, 0xc157, 0xc157 }, /* 0xc158 */ { true, 0xc158, 0xc158 }, /* 0xc159 */ { true, 0xc159, 0xc159 }, /* 0xc15a */ { true, 0xc15a, 0xc15a }, /* 0xc15b */ { true, 0xc15b, 0xc15b }, /* 0xc15c */ { true, 0xc15c, 0xc15c }, /* 0xc15d */ { true, 0xc15d, 0xc15d }, /* 0xc15e */ { true, 0xc15e, 0xc15e }, /* 0xc15f */ { true, 0xc15f, 0xc15f }, /* 0xc160 */ { true, 0xc160, 0xc160 }, /* 0xc161 */ { true, 0xc161, 0xc161 }, /* 0xc162 */ { true, 0xc162, 0xc162 }, /* 0xc163 */ { true, 0xc163, 0xc163 }, /* 0xc164 */ { true, 0xc164, 0xc164 }, /* 0xc165 */ { true, 0xc165, 0xc165 }, /* 0xc166 */ { true, 0xc166, 0xc166 }, /* 0xc167 */ { true, 0xc167, 0xc167 }, /* 0xc168 */ { true, 0xc168, 0xc168 }, /* 0xc169 */ { true, 0xc169, 0xc169 }, /* 0xc16a */ { true, 0xc16a, 0xc16a }, /* 0xc16b */ { true, 0xc16b, 0xc16b }, /* 0xc16c */ { true, 0xc16c, 0xc16c }, /* 0xc16d */ { true, 0xc16d, 0xc16d }, /* 0xc16e */ { true, 0xc16e, 0xc16e }, /* 0xc16f */ { true, 0xc16f, 0xc16f }, /* 0xc170 */ { true, 0xc170, 0xc170 }, /* 0xc171 */ { true, 0xc171, 0xc171 }, /* 0xc172 */ { true, 0xc172, 0xc172 }, /* 0xc173 */ { true, 0xc173, 0xc173 }, /* 0xc174 */ { true, 0xc174, 0xc174 }, /* 0xc175 */ { true, 0xc175, 0xc175 }, /* 0xc176 */ { true, 0xc176, 0xc176 }, /* 0xc177 */ { true, 0xc177, 0xc177 }, /* 0xc178 */ { true, 0xc178, 0xc178 }, /* 0xc179 */ { true, 0xc179, 0xc179 }, /* 0xc17a */ { true, 0xc17a, 0xc17a }, /* 0xc17b */ { true, 0xc17b, 0xc17b }, /* 0xc17c */ { true, 0xc17c, 0xc17c }, /* 0xc17d */ { true, 0xc17d, 0xc17d }, /* 0xc17e */ { true, 0xc17e, 0xc17e }, /* 0xc17f */ { true, 0xc17f, 0xc17f }, /* 0xc180 */ { true, 0xc180, 0xc180 }, /* 0xc181 */ { true, 0xc181, 0xc181 }, /* 0xc182 */ { true, 0xc182, 0xc182 }, /* 0xc183 */ { true, 0xc183, 0xc183 }, /* 0xc184 */ { true, 0xc184, 0xc184 }, /* 0xc185 */ { true, 0xc185, 0xc185 }, /* 0xc186 */ { true, 0xc186, 0xc186 }, /* 0xc187 */ { true, 0xc187, 0xc187 }, /* 0xc188 */ { true, 0xc188, 0xc188 }, /* 0xc189 */ { true, 0xc189, 0xc189 }, /* 0xc18a */ { true, 0xc18a, 0xc18a }, /* 0xc18b */ { true, 0xc18b, 0xc18b }, /* 0xc18c */ { true, 0xc18c, 0xc18c }, /* 0xc18d */ { true, 0xc18d, 0xc18d }, /* 0xc18e */ { true, 0xc18e, 0xc18e }, /* 0xc18f */ { true, 0xc18f, 0xc18f }, /* 0xc190 */ { true, 0xc190, 0xc190 }, /* 0xc191 */ { true, 0xc191, 0xc191 }, /* 0xc192 */ { true, 0xc192, 0xc192 }, /* 0xc193 */ { true, 0xc193, 0xc193 }, /* 0xc194 */ { true, 0xc194, 0xc194 }, /* 0xc195 */ { true, 0xc195, 0xc195 }, /* 0xc196 */ { true, 0xc196, 0xc196 }, /* 0xc197 */ { true, 0xc197, 0xc197 }, /* 0xc198 */ { true, 0xc198, 0xc198 }, /* 0xc199 */ { true, 0xc199, 0xc199 }, /* 0xc19a */ { true, 0xc19a, 0xc19a }, /* 0xc19b */ { true, 0xc19b, 0xc19b }, /* 0xc19c */ { true, 0xc19c, 0xc19c }, /* 0xc19d */ { true, 0xc19d, 0xc19d }, /* 0xc19e */ { true, 0xc19e, 0xc19e }, /* 0xc19f */ { true, 0xc19f, 0xc19f }, /* 0xc1a0 */ { true, 0xc1a0, 0xc1a0 }, /* 0xc1a1 */ { true, 0xc1a1, 0xc1a1 }, /* 0xc1a2 */ { true, 0xc1a2, 0xc1a2 }, /* 0xc1a3 */ { true, 0xc1a3, 0xc1a3 }, /* 0xc1a4 */ { true, 0xc1a4, 0xc1a4 }, /* 0xc1a5 */ { true, 0xc1a5, 0xc1a5 }, /* 0xc1a6 */ { true, 0xc1a6, 0xc1a6 }, /* 0xc1a7 */ { true, 0xc1a7, 0xc1a7 }, /* 0xc1a8 */ { true, 0xc1a8, 0xc1a8 }, /* 0xc1a9 */ { true, 0xc1a9, 0xc1a9 }, /* 0xc1aa */ { true, 0xc1aa, 0xc1aa }, /* 0xc1ab */ { true, 0xc1ab, 0xc1ab }, /* 0xc1ac */ { true, 0xc1ac, 0xc1ac }, /* 0xc1ad */ { true, 0xc1ad, 0xc1ad }, /* 0xc1ae */ { true, 0xc1ae, 0xc1ae }, /* 0xc1af */ { true, 0xc1af, 0xc1af }, /* 0xc1b0 */ { true, 0xc1b0, 0xc1b0 }, /* 0xc1b1 */ { true, 0xc1b1, 0xc1b1 }, /* 0xc1b2 */ { true, 0xc1b2, 0xc1b2 }, /* 0xc1b3 */ { true, 0xc1b3, 0xc1b3 }, /* 0xc1b4 */ { true, 0xc1b4, 0xc1b4 }, /* 0xc1b5 */ { true, 0xc1b5, 0xc1b5 }, /* 0xc1b6 */ { true, 0xc1b6, 0xc1b6 }, /* 0xc1b7 */ { true, 0xc1b7, 0xc1b7 }, /* 0xc1b8 */ { true, 0xc1b8, 0xc1b8 }, /* 0xc1b9 */ { true, 0xc1b9, 0xc1b9 }, /* 0xc1ba */ { true, 0xc1ba, 0xc1ba }, /* 0xc1bb */ { true, 0xc1bb, 0xc1bb }, /* 0xc1bc */ { true, 0xc1bc, 0xc1bc }, /* 0xc1bd */ { true, 0xc1bd, 0xc1bd }, /* 0xc1be */ { true, 0xc1be, 0xc1be }, /* 0xc1bf */ { true, 0xc1bf, 0xc1bf }, /* 0xc1c0 */ { true, 0xc1c0, 0xc1c0 }, /* 0xc1c1 */ { true, 0xc1c1, 0xc1c1 }, /* 0xc1c2 */ { true, 0xc1c2, 0xc1c2 }, /* 0xc1c3 */ { true, 0xc1c3, 0xc1c3 }, /* 0xc1c4 */ { true, 0xc1c4, 0xc1c4 }, /* 0xc1c5 */ { true, 0xc1c5, 0xc1c5 }, /* 0xc1c6 */ { true, 0xc1c6, 0xc1c6 }, /* 0xc1c7 */ { true, 0xc1c7, 0xc1c7 }, /* 0xc1c8 */ { true, 0xc1c8, 0xc1c8 }, /* 0xc1c9 */ { true, 0xc1c9, 0xc1c9 }, /* 0xc1ca */ { true, 0xc1ca, 0xc1ca }, /* 0xc1cb */ { true, 0xc1cb, 0xc1cb }, /* 0xc1cc */ { true, 0xc1cc, 0xc1cc }, /* 0xc1cd */ { true, 0xc1cd, 0xc1cd }, /* 0xc1ce */ { true, 0xc1ce, 0xc1ce }, /* 0xc1cf */ { true, 0xc1cf, 0xc1cf }, /* 0xc1d0 */ { true, 0xc1d0, 0xc1d0 }, /* 0xc1d1 */ { true, 0xc1d1, 0xc1d1 }, /* 0xc1d2 */ { true, 0xc1d2, 0xc1d2 }, /* 0xc1d3 */ { true, 0xc1d3, 0xc1d3 }, /* 0xc1d4 */ { true, 0xc1d4, 0xc1d4 }, /* 0xc1d5 */ { true, 0xc1d5, 0xc1d5 }, /* 0xc1d6 */ { true, 0xc1d6, 0xc1d6 }, /* 0xc1d7 */ { true, 0xc1d7, 0xc1d7 }, /* 0xc1d8 */ { true, 0xc1d8, 0xc1d8 }, /* 0xc1d9 */ { true, 0xc1d9, 0xc1d9 }, /* 0xc1da */ { true, 0xc1da, 0xc1da }, /* 0xc1db */ { true, 0xc1db, 0xc1db }, /* 0xc1dc */ { true, 0xc1dc, 0xc1dc }, /* 0xc1dd */ { true, 0xc1dd, 0xc1dd }, /* 0xc1de */ { true, 0xc1de, 0xc1de }, /* 0xc1df */ { true, 0xc1df, 0xc1df }, /* 0xc1e0 */ { true, 0xc1e0, 0xc1e0 }, /* 0xc1e1 */ { true, 0xc1e1, 0xc1e1 }, /* 0xc1e2 */ { true, 0xc1e2, 0xc1e2 }, /* 0xc1e3 */ { true, 0xc1e3, 0xc1e3 }, /* 0xc1e4 */ { true, 0xc1e4, 0xc1e4 }, /* 0xc1e5 */ { true, 0xc1e5, 0xc1e5 }, /* 0xc1e6 */ { true, 0xc1e6, 0xc1e6 }, /* 0xc1e7 */ { true, 0xc1e7, 0xc1e7 }, /* 0xc1e8 */ { true, 0xc1e8, 0xc1e8 }, /* 0xc1e9 */ { true, 0xc1e9, 0xc1e9 }, /* 0xc1ea */ { true, 0xc1ea, 0xc1ea }, /* 0xc1eb */ { true, 0xc1eb, 0xc1eb }, /* 0xc1ec */ { true, 0xc1ec, 0xc1ec }, /* 0xc1ed */ { true, 0xc1ed, 0xc1ed }, /* 0xc1ee */ { true, 0xc1ee, 0xc1ee }, /* 0xc1ef */ { true, 0xc1ef, 0xc1ef }, /* 0xc1f0 */ { true, 0xc1f0, 0xc1f0 }, /* 0xc1f1 */ { true, 0xc1f1, 0xc1f1 }, /* 0xc1f2 */ { true, 0xc1f2, 0xc1f2 }, /* 0xc1f3 */ { true, 0xc1f3, 0xc1f3 }, /* 0xc1f4 */ { true, 0xc1f4, 0xc1f4 }, /* 0xc1f5 */ { true, 0xc1f5, 0xc1f5 }, /* 0xc1f6 */ { true, 0xc1f6, 0xc1f6 }, /* 0xc1f7 */ { true, 0xc1f7, 0xc1f7 }, /* 0xc1f8 */ { true, 0xc1f8, 0xc1f8 }, /* 0xc1f9 */ { true, 0xc1f9, 0xc1f9 }, /* 0xc1fa */ { true, 0xc1fa, 0xc1fa }, /* 0xc1fb */ { true, 0xc1fb, 0xc1fb }, /* 0xc1fc */ { true, 0xc1fc, 0xc1fc }, /* 0xc1fd */ { true, 0xc1fd, 0xc1fd }, /* 0xc1fe */ { true, 0xc1fe, 0xc1fe }, /* 0xc1ff */ { true, 0xc1ff, 0xc1ff }, /* 0xc200 */ { true, 0xc200, 0xc200 }, /* 0xc201 */ { true, 0xc201, 0xc201 }, /* 0xc202 */ { true, 0xc202, 0xc202 }, /* 0xc203 */ { true, 0xc203, 0xc203 }, /* 0xc204 */ { true, 0xc204, 0xc204 }, /* 0xc205 */ { true, 0xc205, 0xc205 }, /* 0xc206 */ { true, 0xc206, 0xc206 }, /* 0xc207 */ { true, 0xc207, 0xc207 }, /* 0xc208 */ { true, 0xc208, 0xc208 }, /* 0xc209 */ { true, 0xc209, 0xc209 }, /* 0xc20a */ { true, 0xc20a, 0xc20a }, /* 0xc20b */ { true, 0xc20b, 0xc20b }, /* 0xc20c */ { true, 0xc20c, 0xc20c }, /* 0xc20d */ { true, 0xc20d, 0xc20d }, /* 0xc20e */ { true, 0xc20e, 0xc20e }, /* 0xc20f */ { true, 0xc20f, 0xc20f }, /* 0xc210 */ { true, 0xc210, 0xc210 }, /* 0xc211 */ { true, 0xc211, 0xc211 }, /* 0xc212 */ { true, 0xc212, 0xc212 }, /* 0xc213 */ { true, 0xc213, 0xc213 }, /* 0xc214 */ { true, 0xc214, 0xc214 }, /* 0xc215 */ { true, 0xc215, 0xc215 }, /* 0xc216 */ { true, 0xc216, 0xc216 }, /* 0xc217 */ { true, 0xc217, 0xc217 }, /* 0xc218 */ { true, 0xc218, 0xc218 }, /* 0xc219 */ { true, 0xc219, 0xc219 }, /* 0xc21a */ { true, 0xc21a, 0xc21a }, /* 0xc21b */ { true, 0xc21b, 0xc21b }, /* 0xc21c */ { true, 0xc21c, 0xc21c }, /* 0xc21d */ { true, 0xc21d, 0xc21d }, /* 0xc21e */ { true, 0xc21e, 0xc21e }, /* 0xc21f */ { true, 0xc21f, 0xc21f }, /* 0xc220 */ { true, 0xc220, 0xc220 }, /* 0xc221 */ { true, 0xc221, 0xc221 }, /* 0xc222 */ { true, 0xc222, 0xc222 }, /* 0xc223 */ { true, 0xc223, 0xc223 }, /* 0xc224 */ { true, 0xc224, 0xc224 }, /* 0xc225 */ { true, 0xc225, 0xc225 }, /* 0xc226 */ { true, 0xc226, 0xc226 }, /* 0xc227 */ { true, 0xc227, 0xc227 }, /* 0xc228 */ { true, 0xc228, 0xc228 }, /* 0xc229 */ { true, 0xc229, 0xc229 }, /* 0xc22a */ { true, 0xc22a, 0xc22a }, /* 0xc22b */ { true, 0xc22b, 0xc22b }, /* 0xc22c */ { true, 0xc22c, 0xc22c }, /* 0xc22d */ { true, 0xc22d, 0xc22d }, /* 0xc22e */ { true, 0xc22e, 0xc22e }, /* 0xc22f */ { true, 0xc22f, 0xc22f }, /* 0xc230 */ { true, 0xc230, 0xc230 }, /* 0xc231 */ { true, 0xc231, 0xc231 }, /* 0xc232 */ { true, 0xc232, 0xc232 }, /* 0xc233 */ { true, 0xc233, 0xc233 }, /* 0xc234 */ { true, 0xc234, 0xc234 }, /* 0xc235 */ { true, 0xc235, 0xc235 }, /* 0xc236 */ { true, 0xc236, 0xc236 }, /* 0xc237 */ { true, 0xc237, 0xc237 }, /* 0xc238 */ { true, 0xc238, 0xc238 }, /* 0xc239 */ { true, 0xc239, 0xc239 }, /* 0xc23a */ { true, 0xc23a, 0xc23a }, /* 0xc23b */ { true, 0xc23b, 0xc23b }, /* 0xc23c */ { true, 0xc23c, 0xc23c }, /* 0xc23d */ { true, 0xc23d, 0xc23d }, /* 0xc23e */ { true, 0xc23e, 0xc23e }, /* 0xc23f */ { true, 0xc23f, 0xc23f }, /* 0xc240 */ { true, 0xc240, 0xc240 }, /* 0xc241 */ { true, 0xc241, 0xc241 }, /* 0xc242 */ { true, 0xc242, 0xc242 }, /* 0xc243 */ { true, 0xc243, 0xc243 }, /* 0xc244 */ { true, 0xc244, 0xc244 }, /* 0xc245 */ { true, 0xc245, 0xc245 }, /* 0xc246 */ { true, 0xc246, 0xc246 }, /* 0xc247 */ { true, 0xc247, 0xc247 }, /* 0xc248 */ { true, 0xc248, 0xc248 }, /* 0xc249 */ { true, 0xc249, 0xc249 }, /* 0xc24a */ { true, 0xc24a, 0xc24a }, /* 0xc24b */ { true, 0xc24b, 0xc24b }, /* 0xc24c */ { true, 0xc24c, 0xc24c }, /* 0xc24d */ { true, 0xc24d, 0xc24d }, /* 0xc24e */ { true, 0xc24e, 0xc24e }, /* 0xc24f */ { true, 0xc24f, 0xc24f }, /* 0xc250 */ { true, 0xc250, 0xc250 }, /* 0xc251 */ { true, 0xc251, 0xc251 }, /* 0xc252 */ { true, 0xc252, 0xc252 }, /* 0xc253 */ { true, 0xc253, 0xc253 }, /* 0xc254 */ { true, 0xc254, 0xc254 }, /* 0xc255 */ { true, 0xc255, 0xc255 }, /* 0xc256 */ { true, 0xc256, 0xc256 }, /* 0xc257 */ { true, 0xc257, 0xc257 }, /* 0xc258 */ { true, 0xc258, 0xc258 }, /* 0xc259 */ { true, 0xc259, 0xc259 }, /* 0xc25a */ { true, 0xc25a, 0xc25a }, /* 0xc25b */ { true, 0xc25b, 0xc25b }, /* 0xc25c */ { true, 0xc25c, 0xc25c }, /* 0xc25d */ { true, 0xc25d, 0xc25d }, /* 0xc25e */ { true, 0xc25e, 0xc25e }, /* 0xc25f */ { true, 0xc25f, 0xc25f }, /* 0xc260 */ { true, 0xc260, 0xc260 }, /* 0xc261 */ { true, 0xc261, 0xc261 }, /* 0xc262 */ { true, 0xc262, 0xc262 }, /* 0xc263 */ { true, 0xc263, 0xc263 }, /* 0xc264 */ { true, 0xc264, 0xc264 }, /* 0xc265 */ { true, 0xc265, 0xc265 }, /* 0xc266 */ { true, 0xc266, 0xc266 }, /* 0xc267 */ { true, 0xc267, 0xc267 }, /* 0xc268 */ { true, 0xc268, 0xc268 }, /* 0xc269 */ { true, 0xc269, 0xc269 }, /* 0xc26a */ { true, 0xc26a, 0xc26a }, /* 0xc26b */ { true, 0xc26b, 0xc26b }, /* 0xc26c */ { true, 0xc26c, 0xc26c }, /* 0xc26d */ { true, 0xc26d, 0xc26d }, /* 0xc26e */ { true, 0xc26e, 0xc26e }, /* 0xc26f */ { true, 0xc26f, 0xc26f }, /* 0xc270 */ { true, 0xc270, 0xc270 }, /* 0xc271 */ { true, 0xc271, 0xc271 }, /* 0xc272 */ { true, 0xc272, 0xc272 }, /* 0xc273 */ { true, 0xc273, 0xc273 }, /* 0xc274 */ { true, 0xc274, 0xc274 }, /* 0xc275 */ { true, 0xc275, 0xc275 }, /* 0xc276 */ { true, 0xc276, 0xc276 }, /* 0xc277 */ { true, 0xc277, 0xc277 }, /* 0xc278 */ { true, 0xc278, 0xc278 }, /* 0xc279 */ { true, 0xc279, 0xc279 }, /* 0xc27a */ { true, 0xc27a, 0xc27a }, /* 0xc27b */ { true, 0xc27b, 0xc27b }, /* 0xc27c */ { true, 0xc27c, 0xc27c }, /* 0xc27d */ { true, 0xc27d, 0xc27d }, /* 0xc27e */ { true, 0xc27e, 0xc27e }, /* 0xc27f */ { true, 0xc27f, 0xc27f }, /* 0xc280 */ { true, 0xc280, 0xc280 }, /* 0xc281 */ { true, 0xc281, 0xc281 }, /* 0xc282 */ { true, 0xc282, 0xc282 }, /* 0xc283 */ { true, 0xc283, 0xc283 }, /* 0xc284 */ { true, 0xc284, 0xc284 }, /* 0xc285 */ { true, 0xc285, 0xc285 }, /* 0xc286 */ { true, 0xc286, 0xc286 }, /* 0xc287 */ { true, 0xc287, 0xc287 }, /* 0xc288 */ { true, 0xc288, 0xc288 }, /* 0xc289 */ { true, 0xc289, 0xc289 }, /* 0xc28a */ { true, 0xc28a, 0xc28a }, /* 0xc28b */ { true, 0xc28b, 0xc28b }, /* 0xc28c */ { true, 0xc28c, 0xc28c }, /* 0xc28d */ { true, 0xc28d, 0xc28d }, /* 0xc28e */ { true, 0xc28e, 0xc28e }, /* 0xc28f */ { true, 0xc28f, 0xc28f }, /* 0xc290 */ { true, 0xc290, 0xc290 }, /* 0xc291 */ { true, 0xc291, 0xc291 }, /* 0xc292 */ { true, 0xc292, 0xc292 }, /* 0xc293 */ { true, 0xc293, 0xc293 }, /* 0xc294 */ { true, 0xc294, 0xc294 }, /* 0xc295 */ { true, 0xc295, 0xc295 }, /* 0xc296 */ { true, 0xc296, 0xc296 }, /* 0xc297 */ { true, 0xc297, 0xc297 }, /* 0xc298 */ { true, 0xc298, 0xc298 }, /* 0xc299 */ { true, 0xc299, 0xc299 }, /* 0xc29a */ { true, 0xc29a, 0xc29a }, /* 0xc29b */ { true, 0xc29b, 0xc29b }, /* 0xc29c */ { true, 0xc29c, 0xc29c }, /* 0xc29d */ { true, 0xc29d, 0xc29d }, /* 0xc29e */ { true, 0xc29e, 0xc29e }, /* 0xc29f */ { true, 0xc29f, 0xc29f }, /* 0xc2a0 */ { true, 0xc2a0, 0xc2a0 }, /* 0xc2a1 */ { true, 0xc2a1, 0xc2a1 }, /* 0xc2a2 */ { true, 0xc2a2, 0xc2a2 }, /* 0xc2a3 */ { true, 0xc2a3, 0xc2a3 }, /* 0xc2a4 */ { true, 0xc2a4, 0xc2a4 }, /* 0xc2a5 */ { true, 0xc2a5, 0xc2a5 }, /* 0xc2a6 */ { true, 0xc2a6, 0xc2a6 }, /* 0xc2a7 */ { true, 0xc2a7, 0xc2a7 }, /* 0xc2a8 */ { true, 0xc2a8, 0xc2a8 }, /* 0xc2a9 */ { true, 0xc2a9, 0xc2a9 }, /* 0xc2aa */ { true, 0xc2aa, 0xc2aa }, /* 0xc2ab */ { true, 0xc2ab, 0xc2ab }, /* 0xc2ac */ { true, 0xc2ac, 0xc2ac }, /* 0xc2ad */ { true, 0xc2ad, 0xc2ad }, /* 0xc2ae */ { true, 0xc2ae, 0xc2ae }, /* 0xc2af */ { true, 0xc2af, 0xc2af }, /* 0xc2b0 */ { true, 0xc2b0, 0xc2b0 }, /* 0xc2b1 */ { true, 0xc2b1, 0xc2b1 }, /* 0xc2b2 */ { true, 0xc2b2, 0xc2b2 }, /* 0xc2b3 */ { true, 0xc2b3, 0xc2b3 }, /* 0xc2b4 */ { true, 0xc2b4, 0xc2b4 }, /* 0xc2b5 */ { true, 0xc2b5, 0xc2b5 }, /* 0xc2b6 */ { true, 0xc2b6, 0xc2b6 }, /* 0xc2b7 */ { true, 0xc2b7, 0xc2b7 }, /* 0xc2b8 */ { true, 0xc2b8, 0xc2b8 }, /* 0xc2b9 */ { true, 0xc2b9, 0xc2b9 }, /* 0xc2ba */ { true, 0xc2ba, 0xc2ba }, /* 0xc2bb */ { true, 0xc2bb, 0xc2bb }, /* 0xc2bc */ { true, 0xc2bc, 0xc2bc }, /* 0xc2bd */ { true, 0xc2bd, 0xc2bd }, /* 0xc2be */ { true, 0xc2be, 0xc2be }, /* 0xc2bf */ { true, 0xc2bf, 0xc2bf }, /* 0xc2c0 */ { true, 0xc2c0, 0xc2c0 }, /* 0xc2c1 */ { true, 0xc2c1, 0xc2c1 }, /* 0xc2c2 */ { true, 0xc2c2, 0xc2c2 }, /* 0xc2c3 */ { true, 0xc2c3, 0xc2c3 }, /* 0xc2c4 */ { true, 0xc2c4, 0xc2c4 }, /* 0xc2c5 */ { true, 0xc2c5, 0xc2c5 }, /* 0xc2c6 */ { true, 0xc2c6, 0xc2c6 }, /* 0xc2c7 */ { true, 0xc2c7, 0xc2c7 }, /* 0xc2c8 */ { true, 0xc2c8, 0xc2c8 }, /* 0xc2c9 */ { true, 0xc2c9, 0xc2c9 }, /* 0xc2ca */ { true, 0xc2ca, 0xc2ca }, /* 0xc2cb */ { true, 0xc2cb, 0xc2cb }, /* 0xc2cc */ { true, 0xc2cc, 0xc2cc }, /* 0xc2cd */ { true, 0xc2cd, 0xc2cd }, /* 0xc2ce */ { true, 0xc2ce, 0xc2ce }, /* 0xc2cf */ { true, 0xc2cf, 0xc2cf }, /* 0xc2d0 */ { true, 0xc2d0, 0xc2d0 }, /* 0xc2d1 */ { true, 0xc2d1, 0xc2d1 }, /* 0xc2d2 */ { true, 0xc2d2, 0xc2d2 }, /* 0xc2d3 */ { true, 0xc2d3, 0xc2d3 }, /* 0xc2d4 */ { true, 0xc2d4, 0xc2d4 }, /* 0xc2d5 */ { true, 0xc2d5, 0xc2d5 }, /* 0xc2d6 */ { true, 0xc2d6, 0xc2d6 }, /* 0xc2d7 */ { true, 0xc2d7, 0xc2d7 }, /* 0xc2d8 */ { true, 0xc2d8, 0xc2d8 }, /* 0xc2d9 */ { true, 0xc2d9, 0xc2d9 }, /* 0xc2da */ { true, 0xc2da, 0xc2da }, /* 0xc2db */ { true, 0xc2db, 0xc2db }, /* 0xc2dc */ { true, 0xc2dc, 0xc2dc }, /* 0xc2dd */ { true, 0xc2dd, 0xc2dd }, /* 0xc2de */ { true, 0xc2de, 0xc2de }, /* 0xc2df */ { true, 0xc2df, 0xc2df }, /* 0xc2e0 */ { true, 0xc2e0, 0xc2e0 }, /* 0xc2e1 */ { true, 0xc2e1, 0xc2e1 }, /* 0xc2e2 */ { true, 0xc2e2, 0xc2e2 }, /* 0xc2e3 */ { true, 0xc2e3, 0xc2e3 }, /* 0xc2e4 */ { true, 0xc2e4, 0xc2e4 }, /* 0xc2e5 */ { true, 0xc2e5, 0xc2e5 }, /* 0xc2e6 */ { true, 0xc2e6, 0xc2e6 }, /* 0xc2e7 */ { true, 0xc2e7, 0xc2e7 }, /* 0xc2e8 */ { true, 0xc2e8, 0xc2e8 }, /* 0xc2e9 */ { true, 0xc2e9, 0xc2e9 }, /* 0xc2ea */ { true, 0xc2ea, 0xc2ea }, /* 0xc2eb */ { true, 0xc2eb, 0xc2eb }, /* 0xc2ec */ { true, 0xc2ec, 0xc2ec }, /* 0xc2ed */ { true, 0xc2ed, 0xc2ed }, /* 0xc2ee */ { true, 0xc2ee, 0xc2ee }, /* 0xc2ef */ { true, 0xc2ef, 0xc2ef }, /* 0xc2f0 */ { true, 0xc2f0, 0xc2f0 }, /* 0xc2f1 */ { true, 0xc2f1, 0xc2f1 }, /* 0xc2f2 */ { true, 0xc2f2, 0xc2f2 }, /* 0xc2f3 */ { true, 0xc2f3, 0xc2f3 }, /* 0xc2f4 */ { true, 0xc2f4, 0xc2f4 }, /* 0xc2f5 */ { true, 0xc2f5, 0xc2f5 }, /* 0xc2f6 */ { true, 0xc2f6, 0xc2f6 }, /* 0xc2f7 */ { true, 0xc2f7, 0xc2f7 }, /* 0xc2f8 */ { true, 0xc2f8, 0xc2f8 }, /* 0xc2f9 */ { true, 0xc2f9, 0xc2f9 }, /* 0xc2fa */ { true, 0xc2fa, 0xc2fa }, /* 0xc2fb */ { true, 0xc2fb, 0xc2fb }, /* 0xc2fc */ { true, 0xc2fc, 0xc2fc }, /* 0xc2fd */ { true, 0xc2fd, 0xc2fd }, /* 0xc2fe */ { true, 0xc2fe, 0xc2fe }, /* 0xc2ff */ { true, 0xc2ff, 0xc2ff }, /* 0xc300 */ { true, 0xc300, 0xc300 }, /* 0xc301 */ { true, 0xc301, 0xc301 }, /* 0xc302 */ { true, 0xc302, 0xc302 }, /* 0xc303 */ { true, 0xc303, 0xc303 }, /* 0xc304 */ { true, 0xc304, 0xc304 }, /* 0xc305 */ { true, 0xc305, 0xc305 }, /* 0xc306 */ { true, 0xc306, 0xc306 }, /* 0xc307 */ { true, 0xc307, 0xc307 }, /* 0xc308 */ { true, 0xc308, 0xc308 }, /* 0xc309 */ { true, 0xc309, 0xc309 }, /* 0xc30a */ { true, 0xc30a, 0xc30a }, /* 0xc30b */ { true, 0xc30b, 0xc30b }, /* 0xc30c */ { true, 0xc30c, 0xc30c }, /* 0xc30d */ { true, 0xc30d, 0xc30d }, /* 0xc30e */ { true, 0xc30e, 0xc30e }, /* 0xc30f */ { true, 0xc30f, 0xc30f }, /* 0xc310 */ { true, 0xc310, 0xc310 }, /* 0xc311 */ { true, 0xc311, 0xc311 }, /* 0xc312 */ { true, 0xc312, 0xc312 }, /* 0xc313 */ { true, 0xc313, 0xc313 }, /* 0xc314 */ { true, 0xc314, 0xc314 }, /* 0xc315 */ { true, 0xc315, 0xc315 }, /* 0xc316 */ { true, 0xc316, 0xc316 }, /* 0xc317 */ { true, 0xc317, 0xc317 }, /* 0xc318 */ { true, 0xc318, 0xc318 }, /* 0xc319 */ { true, 0xc319, 0xc319 }, /* 0xc31a */ { true, 0xc31a, 0xc31a }, /* 0xc31b */ { true, 0xc31b, 0xc31b }, /* 0xc31c */ { true, 0xc31c, 0xc31c }, /* 0xc31d */ { true, 0xc31d, 0xc31d }, /* 0xc31e */ { true, 0xc31e, 0xc31e }, /* 0xc31f */ { true, 0xc31f, 0xc31f }, /* 0xc320 */ { true, 0xc320, 0xc320 }, /* 0xc321 */ { true, 0xc321, 0xc321 }, /* 0xc322 */ { true, 0xc322, 0xc322 }, /* 0xc323 */ { true, 0xc323, 0xc323 }, /* 0xc324 */ { true, 0xc324, 0xc324 }, /* 0xc325 */ { true, 0xc325, 0xc325 }, /* 0xc326 */ { true, 0xc326, 0xc326 }, /* 0xc327 */ { true, 0xc327, 0xc327 }, /* 0xc328 */ { true, 0xc328, 0xc328 }, /* 0xc329 */ { true, 0xc329, 0xc329 }, /* 0xc32a */ { true, 0xc32a, 0xc32a }, /* 0xc32b */ { true, 0xc32b, 0xc32b }, /* 0xc32c */ { true, 0xc32c, 0xc32c }, /* 0xc32d */ { true, 0xc32d, 0xc32d }, /* 0xc32e */ { true, 0xc32e, 0xc32e }, /* 0xc32f */ { true, 0xc32f, 0xc32f }, /* 0xc330 */ { true, 0xc330, 0xc330 }, /* 0xc331 */ { true, 0xc331, 0xc331 }, /* 0xc332 */ { true, 0xc332, 0xc332 }, /* 0xc333 */ { true, 0xc333, 0xc333 }, /* 0xc334 */ { true, 0xc334, 0xc334 }, /* 0xc335 */ { true, 0xc335, 0xc335 }, /* 0xc336 */ { true, 0xc336, 0xc336 }, /* 0xc337 */ { true, 0xc337, 0xc337 }, /* 0xc338 */ { true, 0xc338, 0xc338 }, /* 0xc339 */ { true, 0xc339, 0xc339 }, /* 0xc33a */ { true, 0xc33a, 0xc33a }, /* 0xc33b */ { true, 0xc33b, 0xc33b }, /* 0xc33c */ { true, 0xc33c, 0xc33c }, /* 0xc33d */ { true, 0xc33d, 0xc33d }, /* 0xc33e */ { true, 0xc33e, 0xc33e }, /* 0xc33f */ { true, 0xc33f, 0xc33f }, /* 0xc340 */ { true, 0xc340, 0xc340 }, /* 0xc341 */ { true, 0xc341, 0xc341 }, /* 0xc342 */ { true, 0xc342, 0xc342 }, /* 0xc343 */ { true, 0xc343, 0xc343 }, /* 0xc344 */ { true, 0xc344, 0xc344 }, /* 0xc345 */ { true, 0xc345, 0xc345 }, /* 0xc346 */ { true, 0xc346, 0xc346 }, /* 0xc347 */ { true, 0xc347, 0xc347 }, /* 0xc348 */ { true, 0xc348, 0xc348 }, /* 0xc349 */ { true, 0xc349, 0xc349 }, /* 0xc34a */ { true, 0xc34a, 0xc34a }, /* 0xc34b */ { true, 0xc34b, 0xc34b }, /* 0xc34c */ { true, 0xc34c, 0xc34c }, /* 0xc34d */ { true, 0xc34d, 0xc34d }, /* 0xc34e */ { true, 0xc34e, 0xc34e }, /* 0xc34f */ { true, 0xc34f, 0xc34f }, /* 0xc350 */ { true, 0xc350, 0xc350 }, /* 0xc351 */ { true, 0xc351, 0xc351 }, /* 0xc352 */ { true, 0xc352, 0xc352 }, /* 0xc353 */ { true, 0xc353, 0xc353 }, /* 0xc354 */ { true, 0xc354, 0xc354 }, /* 0xc355 */ { true, 0xc355, 0xc355 }, /* 0xc356 */ { true, 0xc356, 0xc356 }, /* 0xc357 */ { true, 0xc357, 0xc357 }, /* 0xc358 */ { true, 0xc358, 0xc358 }, /* 0xc359 */ { true, 0xc359, 0xc359 }, /* 0xc35a */ { true, 0xc35a, 0xc35a }, /* 0xc35b */ { true, 0xc35b, 0xc35b }, /* 0xc35c */ { true, 0xc35c, 0xc35c }, /* 0xc35d */ { true, 0xc35d, 0xc35d }, /* 0xc35e */ { true, 0xc35e, 0xc35e }, /* 0xc35f */ { true, 0xc35f, 0xc35f }, /* 0xc360 */ { true, 0xc360, 0xc360 }, /* 0xc361 */ { true, 0xc361, 0xc361 }, /* 0xc362 */ { true, 0xc362, 0xc362 }, /* 0xc363 */ { true, 0xc363, 0xc363 }, /* 0xc364 */ { true, 0xc364, 0xc364 }, /* 0xc365 */ { true, 0xc365, 0xc365 }, /* 0xc366 */ { true, 0xc366, 0xc366 }, /* 0xc367 */ { true, 0xc367, 0xc367 }, /* 0xc368 */ { true, 0xc368, 0xc368 }, /* 0xc369 */ { true, 0xc369, 0xc369 }, /* 0xc36a */ { true, 0xc36a, 0xc36a }, /* 0xc36b */ { true, 0xc36b, 0xc36b }, /* 0xc36c */ { true, 0xc36c, 0xc36c }, /* 0xc36d */ { true, 0xc36d, 0xc36d }, /* 0xc36e */ { true, 0xc36e, 0xc36e }, /* 0xc36f */ { true, 0xc36f, 0xc36f }, /* 0xc370 */ { true, 0xc370, 0xc370 }, /* 0xc371 */ { true, 0xc371, 0xc371 }, /* 0xc372 */ { true, 0xc372, 0xc372 }, /* 0xc373 */ { true, 0xc373, 0xc373 }, /* 0xc374 */ { true, 0xc374, 0xc374 }, /* 0xc375 */ { true, 0xc375, 0xc375 }, /* 0xc376 */ { true, 0xc376, 0xc376 }, /* 0xc377 */ { true, 0xc377, 0xc377 }, /* 0xc378 */ { true, 0xc378, 0xc378 }, /* 0xc379 */ { true, 0xc379, 0xc379 }, /* 0xc37a */ { true, 0xc37a, 0xc37a }, /* 0xc37b */ { true, 0xc37b, 0xc37b }, /* 0xc37c */ { true, 0xc37c, 0xc37c }, /* 0xc37d */ { true, 0xc37d, 0xc37d }, /* 0xc37e */ { true, 0xc37e, 0xc37e }, /* 0xc37f */ { true, 0xc37f, 0xc37f }, /* 0xc380 */ { true, 0xc380, 0xc380 }, /* 0xc381 */ { true, 0xc381, 0xc381 }, /* 0xc382 */ { true, 0xc382, 0xc382 }, /* 0xc383 */ { true, 0xc383, 0xc383 }, /* 0xc384 */ { true, 0xc384, 0xc384 }, /* 0xc385 */ { true, 0xc385, 0xc385 }, /* 0xc386 */ { true, 0xc386, 0xc386 }, /* 0xc387 */ { true, 0xc387, 0xc387 }, /* 0xc388 */ { true, 0xc388, 0xc388 }, /* 0xc389 */ { true, 0xc389, 0xc389 }, /* 0xc38a */ { true, 0xc38a, 0xc38a }, /* 0xc38b */ { true, 0xc38b, 0xc38b }, /* 0xc38c */ { true, 0xc38c, 0xc38c }, /* 0xc38d */ { true, 0xc38d, 0xc38d }, /* 0xc38e */ { true, 0xc38e, 0xc38e }, /* 0xc38f */ { true, 0xc38f, 0xc38f }, /* 0xc390 */ { true, 0xc390, 0xc390 }, /* 0xc391 */ { true, 0xc391, 0xc391 }, /* 0xc392 */ { true, 0xc392, 0xc392 }, /* 0xc393 */ { true, 0xc393, 0xc393 }, /* 0xc394 */ { true, 0xc394, 0xc394 }, /* 0xc395 */ { true, 0xc395, 0xc395 }, /* 0xc396 */ { true, 0xc396, 0xc396 }, /* 0xc397 */ { true, 0xc397, 0xc397 }, /* 0xc398 */ { true, 0xc398, 0xc398 }, /* 0xc399 */ { true, 0xc399, 0xc399 }, /* 0xc39a */ { true, 0xc39a, 0xc39a }, /* 0xc39b */ { true, 0xc39b, 0xc39b }, /* 0xc39c */ { true, 0xc39c, 0xc39c }, /* 0xc39d */ { true, 0xc39d, 0xc39d }, /* 0xc39e */ { true, 0xc39e, 0xc39e }, /* 0xc39f */ { true, 0xc39f, 0xc39f }, /* 0xc3a0 */ { true, 0xc3a0, 0xc3a0 }, /* 0xc3a1 */ { true, 0xc3a1, 0xc3a1 }, /* 0xc3a2 */ { true, 0xc3a2, 0xc3a2 }, /* 0xc3a3 */ { true, 0xc3a3, 0xc3a3 }, /* 0xc3a4 */ { true, 0xc3a4, 0xc3a4 }, /* 0xc3a5 */ { true, 0xc3a5, 0xc3a5 }, /* 0xc3a6 */ { true, 0xc3a6, 0xc3a6 }, /* 0xc3a7 */ { true, 0xc3a7, 0xc3a7 }, /* 0xc3a8 */ { true, 0xc3a8, 0xc3a8 }, /* 0xc3a9 */ { true, 0xc3a9, 0xc3a9 }, /* 0xc3aa */ { true, 0xc3aa, 0xc3aa }, /* 0xc3ab */ { true, 0xc3ab, 0xc3ab }, /* 0xc3ac */ { true, 0xc3ac, 0xc3ac }, /* 0xc3ad */ { true, 0xc3ad, 0xc3ad }, /* 0xc3ae */ { true, 0xc3ae, 0xc3ae }, /* 0xc3af */ { true, 0xc3af, 0xc3af }, /* 0xc3b0 */ { true, 0xc3b0, 0xc3b0 }, /* 0xc3b1 */ { true, 0xc3b1, 0xc3b1 }, /* 0xc3b2 */ { true, 0xc3b2, 0xc3b2 }, /* 0xc3b3 */ { true, 0xc3b3, 0xc3b3 }, /* 0xc3b4 */ { true, 0xc3b4, 0xc3b4 }, /* 0xc3b5 */ { true, 0xc3b5, 0xc3b5 }, /* 0xc3b6 */ { true, 0xc3b6, 0xc3b6 }, /* 0xc3b7 */ { true, 0xc3b7, 0xc3b7 }, /* 0xc3b8 */ { true, 0xc3b8, 0xc3b8 }, /* 0xc3b9 */ { true, 0xc3b9, 0xc3b9 }, /* 0xc3ba */ { true, 0xc3ba, 0xc3ba }, /* 0xc3bb */ { true, 0xc3bb, 0xc3bb }, /* 0xc3bc */ { true, 0xc3bc, 0xc3bc }, /* 0xc3bd */ { true, 0xc3bd, 0xc3bd }, /* 0xc3be */ { true, 0xc3be, 0xc3be }, /* 0xc3bf */ { true, 0xc3bf, 0xc3bf }, /* 0xc3c0 */ { true, 0xc3c0, 0xc3c0 }, /* 0xc3c1 */ { true, 0xc3c1, 0xc3c1 }, /* 0xc3c2 */ { true, 0xc3c2, 0xc3c2 }, /* 0xc3c3 */ { true, 0xc3c3, 0xc3c3 }, /* 0xc3c4 */ { true, 0xc3c4, 0xc3c4 }, /* 0xc3c5 */ { true, 0xc3c5, 0xc3c5 }, /* 0xc3c6 */ { true, 0xc3c6, 0xc3c6 }, /* 0xc3c7 */ { true, 0xc3c7, 0xc3c7 }, /* 0xc3c8 */ { true, 0xc3c8, 0xc3c8 }, /* 0xc3c9 */ { true, 0xc3c9, 0xc3c9 }, /* 0xc3ca */ { true, 0xc3ca, 0xc3ca }, /* 0xc3cb */ { true, 0xc3cb, 0xc3cb }, /* 0xc3cc */ { true, 0xc3cc, 0xc3cc }, /* 0xc3cd */ { true, 0xc3cd, 0xc3cd }, /* 0xc3ce */ { true, 0xc3ce, 0xc3ce }, /* 0xc3cf */ { true, 0xc3cf, 0xc3cf }, /* 0xc3d0 */ { true, 0xc3d0, 0xc3d0 }, /* 0xc3d1 */ { true, 0xc3d1, 0xc3d1 }, /* 0xc3d2 */ { true, 0xc3d2, 0xc3d2 }, /* 0xc3d3 */ { true, 0xc3d3, 0xc3d3 }, /* 0xc3d4 */ { true, 0xc3d4, 0xc3d4 }, /* 0xc3d5 */ { true, 0xc3d5, 0xc3d5 }, /* 0xc3d6 */ { true, 0xc3d6, 0xc3d6 }, /* 0xc3d7 */ { true, 0xc3d7, 0xc3d7 }, /* 0xc3d8 */ { true, 0xc3d8, 0xc3d8 }, /* 0xc3d9 */ { true, 0xc3d9, 0xc3d9 }, /* 0xc3da */ { true, 0xc3da, 0xc3da }, /* 0xc3db */ { true, 0xc3db, 0xc3db }, /* 0xc3dc */ { true, 0xc3dc, 0xc3dc }, /* 0xc3dd */ { true, 0xc3dd, 0xc3dd }, /* 0xc3de */ { true, 0xc3de, 0xc3de }, /* 0xc3df */ { true, 0xc3df, 0xc3df }, /* 0xc3e0 */ { true, 0xc3e0, 0xc3e0 }, /* 0xc3e1 */ { true, 0xc3e1, 0xc3e1 }, /* 0xc3e2 */ { true, 0xc3e2, 0xc3e2 }, /* 0xc3e3 */ { true, 0xc3e3, 0xc3e3 }, /* 0xc3e4 */ { true, 0xc3e4, 0xc3e4 }, /* 0xc3e5 */ { true, 0xc3e5, 0xc3e5 }, /* 0xc3e6 */ { true, 0xc3e6, 0xc3e6 }, /* 0xc3e7 */ { true, 0xc3e7, 0xc3e7 }, /* 0xc3e8 */ { true, 0xc3e8, 0xc3e8 }, /* 0xc3e9 */ { true, 0xc3e9, 0xc3e9 }, /* 0xc3ea */ { true, 0xc3ea, 0xc3ea }, /* 0xc3eb */ { true, 0xc3eb, 0xc3eb }, /* 0xc3ec */ { true, 0xc3ec, 0xc3ec }, /* 0xc3ed */ { true, 0xc3ed, 0xc3ed }, /* 0xc3ee */ { true, 0xc3ee, 0xc3ee }, /* 0xc3ef */ { true, 0xc3ef, 0xc3ef }, /* 0xc3f0 */ { true, 0xc3f0, 0xc3f0 }, /* 0xc3f1 */ { true, 0xc3f1, 0xc3f1 }, /* 0xc3f2 */ { true, 0xc3f2, 0xc3f2 }, /* 0xc3f3 */ { true, 0xc3f3, 0xc3f3 }, /* 0xc3f4 */ { true, 0xc3f4, 0xc3f4 }, /* 0xc3f5 */ { true, 0xc3f5, 0xc3f5 }, /* 0xc3f6 */ { true, 0xc3f6, 0xc3f6 }, /* 0xc3f7 */ { true, 0xc3f7, 0xc3f7 }, /* 0xc3f8 */ { true, 0xc3f8, 0xc3f8 }, /* 0xc3f9 */ { true, 0xc3f9, 0xc3f9 }, /* 0xc3fa */ { true, 0xc3fa, 0xc3fa }, /* 0xc3fb */ { true, 0xc3fb, 0xc3fb }, /* 0xc3fc */ { true, 0xc3fc, 0xc3fc }, /* 0xc3fd */ { true, 0xc3fd, 0xc3fd }, /* 0xc3fe */ { true, 0xc3fe, 0xc3fe }, /* 0xc3ff */ { true, 0xc3ff, 0xc3ff }, /* 0xc400 */ { true, 0xc400, 0xc400 }, /* 0xc401 */ { true, 0xc401, 0xc401 }, /* 0xc402 */ { true, 0xc402, 0xc402 }, /* 0xc403 */ { true, 0xc403, 0xc403 }, /* 0xc404 */ { true, 0xc404, 0xc404 }, /* 0xc405 */ { true, 0xc405, 0xc405 }, /* 0xc406 */ { true, 0xc406, 0xc406 }, /* 0xc407 */ { true, 0xc407, 0xc407 }, /* 0xc408 */ { true, 0xc408, 0xc408 }, /* 0xc409 */ { true, 0xc409, 0xc409 }, /* 0xc40a */ { true, 0xc40a, 0xc40a }, /* 0xc40b */ { true, 0xc40b, 0xc40b }, /* 0xc40c */ { true, 0xc40c, 0xc40c }, /* 0xc40d */ { true, 0xc40d, 0xc40d }, /* 0xc40e */ { true, 0xc40e, 0xc40e }, /* 0xc40f */ { true, 0xc40f, 0xc40f }, /* 0xc410 */ { true, 0xc410, 0xc410 }, /* 0xc411 */ { true, 0xc411, 0xc411 }, /* 0xc412 */ { true, 0xc412, 0xc412 }, /* 0xc413 */ { true, 0xc413, 0xc413 }, /* 0xc414 */ { true, 0xc414, 0xc414 }, /* 0xc415 */ { true, 0xc415, 0xc415 }, /* 0xc416 */ { true, 0xc416, 0xc416 }, /* 0xc417 */ { true, 0xc417, 0xc417 }, /* 0xc418 */ { true, 0xc418, 0xc418 }, /* 0xc419 */ { true, 0xc419, 0xc419 }, /* 0xc41a */ { true, 0xc41a, 0xc41a }, /* 0xc41b */ { true, 0xc41b, 0xc41b }, /* 0xc41c */ { true, 0xc41c, 0xc41c }, /* 0xc41d */ { true, 0xc41d, 0xc41d }, /* 0xc41e */ { true, 0xc41e, 0xc41e }, /* 0xc41f */ { true, 0xc41f, 0xc41f }, /* 0xc420 */ { true, 0xc420, 0xc420 }, /* 0xc421 */ { true, 0xc421, 0xc421 }, /* 0xc422 */ { true, 0xc422, 0xc422 }, /* 0xc423 */ { true, 0xc423, 0xc423 }, /* 0xc424 */ { true, 0xc424, 0xc424 }, /* 0xc425 */ { true, 0xc425, 0xc425 }, /* 0xc426 */ { true, 0xc426, 0xc426 }, /* 0xc427 */ { true, 0xc427, 0xc427 }, /* 0xc428 */ { true, 0xc428, 0xc428 }, /* 0xc429 */ { true, 0xc429, 0xc429 }, /* 0xc42a */ { true, 0xc42a, 0xc42a }, /* 0xc42b */ { true, 0xc42b, 0xc42b }, /* 0xc42c */ { true, 0xc42c, 0xc42c }, /* 0xc42d */ { true, 0xc42d, 0xc42d }, /* 0xc42e */ { true, 0xc42e, 0xc42e }, /* 0xc42f */ { true, 0xc42f, 0xc42f }, /* 0xc430 */ { true, 0xc430, 0xc430 }, /* 0xc431 */ { true, 0xc431, 0xc431 }, /* 0xc432 */ { true, 0xc432, 0xc432 }, /* 0xc433 */ { true, 0xc433, 0xc433 }, /* 0xc434 */ { true, 0xc434, 0xc434 }, /* 0xc435 */ { true, 0xc435, 0xc435 }, /* 0xc436 */ { true, 0xc436, 0xc436 }, /* 0xc437 */ { true, 0xc437, 0xc437 }, /* 0xc438 */ { true, 0xc438, 0xc438 }, /* 0xc439 */ { true, 0xc439, 0xc439 }, /* 0xc43a */ { true, 0xc43a, 0xc43a }, /* 0xc43b */ { true, 0xc43b, 0xc43b }, /* 0xc43c */ { true, 0xc43c, 0xc43c }, /* 0xc43d */ { true, 0xc43d, 0xc43d }, /* 0xc43e */ { true, 0xc43e, 0xc43e }, /* 0xc43f */ { true, 0xc43f, 0xc43f }, /* 0xc440 */ { true, 0xc440, 0xc440 }, /* 0xc441 */ { true, 0xc441, 0xc441 }, /* 0xc442 */ { true, 0xc442, 0xc442 }, /* 0xc443 */ { true, 0xc443, 0xc443 }, /* 0xc444 */ { true, 0xc444, 0xc444 }, /* 0xc445 */ { true, 0xc445, 0xc445 }, /* 0xc446 */ { true, 0xc446, 0xc446 }, /* 0xc447 */ { true, 0xc447, 0xc447 }, /* 0xc448 */ { true, 0xc448, 0xc448 }, /* 0xc449 */ { true, 0xc449, 0xc449 }, /* 0xc44a */ { true, 0xc44a, 0xc44a }, /* 0xc44b */ { true, 0xc44b, 0xc44b }, /* 0xc44c */ { true, 0xc44c, 0xc44c }, /* 0xc44d */ { true, 0xc44d, 0xc44d }, /* 0xc44e */ { true, 0xc44e, 0xc44e }, /* 0xc44f */ { true, 0xc44f, 0xc44f }, /* 0xc450 */ { true, 0xc450, 0xc450 }, /* 0xc451 */ { true, 0xc451, 0xc451 }, /* 0xc452 */ { true, 0xc452, 0xc452 }, /* 0xc453 */ { true, 0xc453, 0xc453 }, /* 0xc454 */ { true, 0xc454, 0xc454 }, /* 0xc455 */ { true, 0xc455, 0xc455 }, /* 0xc456 */ { true, 0xc456, 0xc456 }, /* 0xc457 */ { true, 0xc457, 0xc457 }, /* 0xc458 */ { true, 0xc458, 0xc458 }, /* 0xc459 */ { true, 0xc459, 0xc459 }, /* 0xc45a */ { true, 0xc45a, 0xc45a }, /* 0xc45b */ { true, 0xc45b, 0xc45b }, /* 0xc45c */ { true, 0xc45c, 0xc45c }, /* 0xc45d */ { true, 0xc45d, 0xc45d }, /* 0xc45e */ { true, 0xc45e, 0xc45e }, /* 0xc45f */ { true, 0xc45f, 0xc45f }, /* 0xc460 */ { true, 0xc460, 0xc460 }, /* 0xc461 */ { true, 0xc461, 0xc461 }, /* 0xc462 */ { true, 0xc462, 0xc462 }, /* 0xc463 */ { true, 0xc463, 0xc463 }, /* 0xc464 */ { true, 0xc464, 0xc464 }, /* 0xc465 */ { true, 0xc465, 0xc465 }, /* 0xc466 */ { true, 0xc466, 0xc466 }, /* 0xc467 */ { true, 0xc467, 0xc467 }, /* 0xc468 */ { true, 0xc468, 0xc468 }, /* 0xc469 */ { true, 0xc469, 0xc469 }, /* 0xc46a */ { true, 0xc46a, 0xc46a }, /* 0xc46b */ { true, 0xc46b, 0xc46b }, /* 0xc46c */ { true, 0xc46c, 0xc46c }, /* 0xc46d */ { true, 0xc46d, 0xc46d }, /* 0xc46e */ { true, 0xc46e, 0xc46e }, /* 0xc46f */ { true, 0xc46f, 0xc46f }, /* 0xc470 */ { true, 0xc470, 0xc470 }, /* 0xc471 */ { true, 0xc471, 0xc471 }, /* 0xc472 */ { true, 0xc472, 0xc472 }, /* 0xc473 */ { true, 0xc473, 0xc473 }, /* 0xc474 */ { true, 0xc474, 0xc474 }, /* 0xc475 */ { true, 0xc475, 0xc475 }, /* 0xc476 */ { true, 0xc476, 0xc476 }, /* 0xc477 */ { true, 0xc477, 0xc477 }, /* 0xc478 */ { true, 0xc478, 0xc478 }, /* 0xc479 */ { true, 0xc479, 0xc479 }, /* 0xc47a */ { true, 0xc47a, 0xc47a }, /* 0xc47b */ { true, 0xc47b, 0xc47b }, /* 0xc47c */ { true, 0xc47c, 0xc47c }, /* 0xc47d */ { true, 0xc47d, 0xc47d }, /* 0xc47e */ { true, 0xc47e, 0xc47e }, /* 0xc47f */ { true, 0xc47f, 0xc47f }, /* 0xc480 */ { true, 0xc480, 0xc480 }, /* 0xc481 */ { true, 0xc481, 0xc481 }, /* 0xc482 */ { true, 0xc482, 0xc482 }, /* 0xc483 */ { true, 0xc483, 0xc483 }, /* 0xc484 */ { true, 0xc484, 0xc484 }, /* 0xc485 */ { true, 0xc485, 0xc485 }, /* 0xc486 */ { true, 0xc486, 0xc486 }, /* 0xc487 */ { true, 0xc487, 0xc487 }, /* 0xc488 */ { true, 0xc488, 0xc488 }, /* 0xc489 */ { true, 0xc489, 0xc489 }, /* 0xc48a */ { true, 0xc48a, 0xc48a }, /* 0xc48b */ { true, 0xc48b, 0xc48b }, /* 0xc48c */ { true, 0xc48c, 0xc48c }, /* 0xc48d */ { true, 0xc48d, 0xc48d }, /* 0xc48e */ { true, 0xc48e, 0xc48e }, /* 0xc48f */ { true, 0xc48f, 0xc48f }, /* 0xc490 */ { true, 0xc490, 0xc490 }, /* 0xc491 */ { true, 0xc491, 0xc491 }, /* 0xc492 */ { true, 0xc492, 0xc492 }, /* 0xc493 */ { true, 0xc493, 0xc493 }, /* 0xc494 */ { true, 0xc494, 0xc494 }, /* 0xc495 */ { true, 0xc495, 0xc495 }, /* 0xc496 */ { true, 0xc496, 0xc496 }, /* 0xc497 */ { true, 0xc497, 0xc497 }, /* 0xc498 */ { true, 0xc498, 0xc498 }, /* 0xc499 */ { true, 0xc499, 0xc499 }, /* 0xc49a */ { true, 0xc49a, 0xc49a }, /* 0xc49b */ { true, 0xc49b, 0xc49b }, /* 0xc49c */ { true, 0xc49c, 0xc49c }, /* 0xc49d */ { true, 0xc49d, 0xc49d }, /* 0xc49e */ { true, 0xc49e, 0xc49e }, /* 0xc49f */ { true, 0xc49f, 0xc49f }, /* 0xc4a0 */ { true, 0xc4a0, 0xc4a0 }, /* 0xc4a1 */ { true, 0xc4a1, 0xc4a1 }, /* 0xc4a2 */ { true, 0xc4a2, 0xc4a2 }, /* 0xc4a3 */ { true, 0xc4a3, 0xc4a3 }, /* 0xc4a4 */ { true, 0xc4a4, 0xc4a4 }, /* 0xc4a5 */ { true, 0xc4a5, 0xc4a5 }, /* 0xc4a6 */ { true, 0xc4a6, 0xc4a6 }, /* 0xc4a7 */ { true, 0xc4a7, 0xc4a7 }, /* 0xc4a8 */ { true, 0xc4a8, 0xc4a8 }, /* 0xc4a9 */ { true, 0xc4a9, 0xc4a9 }, /* 0xc4aa */ { true, 0xc4aa, 0xc4aa }, /* 0xc4ab */ { true, 0xc4ab, 0xc4ab }, /* 0xc4ac */ { true, 0xc4ac, 0xc4ac }, /* 0xc4ad */ { true, 0xc4ad, 0xc4ad }, /* 0xc4ae */ { true, 0xc4ae, 0xc4ae }, /* 0xc4af */ { true, 0xc4af, 0xc4af }, /* 0xc4b0 */ { true, 0xc4b0, 0xc4b0 }, /* 0xc4b1 */ { true, 0xc4b1, 0xc4b1 }, /* 0xc4b2 */ { true, 0xc4b2, 0xc4b2 }, /* 0xc4b3 */ { true, 0xc4b3, 0xc4b3 }, /* 0xc4b4 */ { true, 0xc4b4, 0xc4b4 }, /* 0xc4b5 */ { true, 0xc4b5, 0xc4b5 }, /* 0xc4b6 */ { true, 0xc4b6, 0xc4b6 }, /* 0xc4b7 */ { true, 0xc4b7, 0xc4b7 }, /* 0xc4b8 */ { true, 0xc4b8, 0xc4b8 }, /* 0xc4b9 */ { true, 0xc4b9, 0xc4b9 }, /* 0xc4ba */ { true, 0xc4ba, 0xc4ba }, /* 0xc4bb */ { true, 0xc4bb, 0xc4bb }, /* 0xc4bc */ { true, 0xc4bc, 0xc4bc }, /* 0xc4bd */ { true, 0xc4bd, 0xc4bd }, /* 0xc4be */ { true, 0xc4be, 0xc4be }, /* 0xc4bf */ { true, 0xc4bf, 0xc4bf }, /* 0xc4c0 */ { true, 0xc4c0, 0xc4c0 }, /* 0xc4c1 */ { true, 0xc4c1, 0xc4c1 }, /* 0xc4c2 */ { true, 0xc4c2, 0xc4c2 }, /* 0xc4c3 */ { true, 0xc4c3, 0xc4c3 }, /* 0xc4c4 */ { true, 0xc4c4, 0xc4c4 }, /* 0xc4c5 */ { true, 0xc4c5, 0xc4c5 }, /* 0xc4c6 */ { true, 0xc4c6, 0xc4c6 }, /* 0xc4c7 */ { true, 0xc4c7, 0xc4c7 }, /* 0xc4c8 */ { true, 0xc4c8, 0xc4c8 }, /* 0xc4c9 */ { true, 0xc4c9, 0xc4c9 }, /* 0xc4ca */ { true, 0xc4ca, 0xc4ca }, /* 0xc4cb */ { true, 0xc4cb, 0xc4cb }, /* 0xc4cc */ { true, 0xc4cc, 0xc4cc }, /* 0xc4cd */ { true, 0xc4cd, 0xc4cd }, /* 0xc4ce */ { true, 0xc4ce, 0xc4ce }, /* 0xc4cf */ { true, 0xc4cf, 0xc4cf }, /* 0xc4d0 */ { true, 0xc4d0, 0xc4d0 }, /* 0xc4d1 */ { true, 0xc4d1, 0xc4d1 }, /* 0xc4d2 */ { true, 0xc4d2, 0xc4d2 }, /* 0xc4d3 */ { true, 0xc4d3, 0xc4d3 }, /* 0xc4d4 */ { true, 0xc4d4, 0xc4d4 }, /* 0xc4d5 */ { true, 0xc4d5, 0xc4d5 }, /* 0xc4d6 */ { true, 0xc4d6, 0xc4d6 }, /* 0xc4d7 */ { true, 0xc4d7, 0xc4d7 }, /* 0xc4d8 */ { true, 0xc4d8, 0xc4d8 }, /* 0xc4d9 */ { true, 0xc4d9, 0xc4d9 }, /* 0xc4da */ { true, 0xc4da, 0xc4da }, /* 0xc4db */ { true, 0xc4db, 0xc4db }, /* 0xc4dc */ { true, 0xc4dc, 0xc4dc }, /* 0xc4dd */ { true, 0xc4dd, 0xc4dd }, /* 0xc4de */ { true, 0xc4de, 0xc4de }, /* 0xc4df */ { true, 0xc4df, 0xc4df }, /* 0xc4e0 */ { true, 0xc4e0, 0xc4e0 }, /* 0xc4e1 */ { true, 0xc4e1, 0xc4e1 }, /* 0xc4e2 */ { true, 0xc4e2, 0xc4e2 }, /* 0xc4e3 */ { true, 0xc4e3, 0xc4e3 }, /* 0xc4e4 */ { true, 0xc4e4, 0xc4e4 }, /* 0xc4e5 */ { true, 0xc4e5, 0xc4e5 }, /* 0xc4e6 */ { true, 0xc4e6, 0xc4e6 }, /* 0xc4e7 */ { true, 0xc4e7, 0xc4e7 }, /* 0xc4e8 */ { true, 0xc4e8, 0xc4e8 }, /* 0xc4e9 */ { true, 0xc4e9, 0xc4e9 }, /* 0xc4ea */ { true, 0xc4ea, 0xc4ea }, /* 0xc4eb */ { true, 0xc4eb, 0xc4eb }, /* 0xc4ec */ { true, 0xc4ec, 0xc4ec }, /* 0xc4ed */ { true, 0xc4ed, 0xc4ed }, /* 0xc4ee */ { true, 0xc4ee, 0xc4ee }, /* 0xc4ef */ { true, 0xc4ef, 0xc4ef }, /* 0xc4f0 */ { true, 0xc4f0, 0xc4f0 }, /* 0xc4f1 */ { true, 0xc4f1, 0xc4f1 }, /* 0xc4f2 */ { true, 0xc4f2, 0xc4f2 }, /* 0xc4f3 */ { true, 0xc4f3, 0xc4f3 }, /* 0xc4f4 */ { true, 0xc4f4, 0xc4f4 }, /* 0xc4f5 */ { true, 0xc4f5, 0xc4f5 }, /* 0xc4f6 */ { true, 0xc4f6, 0xc4f6 }, /* 0xc4f7 */ { true, 0xc4f7, 0xc4f7 }, /* 0xc4f8 */ { true, 0xc4f8, 0xc4f8 }, /* 0xc4f9 */ { true, 0xc4f9, 0xc4f9 }, /* 0xc4fa */ { true, 0xc4fa, 0xc4fa }, /* 0xc4fb */ { true, 0xc4fb, 0xc4fb }, /* 0xc4fc */ { true, 0xc4fc, 0xc4fc }, /* 0xc4fd */ { true, 0xc4fd, 0xc4fd }, /* 0xc4fe */ { true, 0xc4fe, 0xc4fe }, /* 0xc4ff */ { true, 0xc4ff, 0xc4ff }, /* 0xc500 */ { true, 0xc500, 0xc500 }, /* 0xc501 */ { true, 0xc501, 0xc501 }, /* 0xc502 */ { true, 0xc502, 0xc502 }, /* 0xc503 */ { true, 0xc503, 0xc503 }, /* 0xc504 */ { true, 0xc504, 0xc504 }, /* 0xc505 */ { true, 0xc505, 0xc505 }, /* 0xc506 */ { true, 0xc506, 0xc506 }, /* 0xc507 */ { true, 0xc507, 0xc507 }, /* 0xc508 */ { true, 0xc508, 0xc508 }, /* 0xc509 */ { true, 0xc509, 0xc509 }, /* 0xc50a */ { true, 0xc50a, 0xc50a }, /* 0xc50b */ { true, 0xc50b, 0xc50b }, /* 0xc50c */ { true, 0xc50c, 0xc50c }, /* 0xc50d */ { true, 0xc50d, 0xc50d }, /* 0xc50e */ { true, 0xc50e, 0xc50e }, /* 0xc50f */ { true, 0xc50f, 0xc50f }, /* 0xc510 */ { true, 0xc510, 0xc510 }, /* 0xc511 */ { true, 0xc511, 0xc511 }, /* 0xc512 */ { true, 0xc512, 0xc512 }, /* 0xc513 */ { true, 0xc513, 0xc513 }, /* 0xc514 */ { true, 0xc514, 0xc514 }, /* 0xc515 */ { true, 0xc515, 0xc515 }, /* 0xc516 */ { true, 0xc516, 0xc516 }, /* 0xc517 */ { true, 0xc517, 0xc517 }, /* 0xc518 */ { true, 0xc518, 0xc518 }, /* 0xc519 */ { true, 0xc519, 0xc519 }, /* 0xc51a */ { true, 0xc51a, 0xc51a }, /* 0xc51b */ { true, 0xc51b, 0xc51b }, /* 0xc51c */ { true, 0xc51c, 0xc51c }, /* 0xc51d */ { true, 0xc51d, 0xc51d }, /* 0xc51e */ { true, 0xc51e, 0xc51e }, /* 0xc51f */ { true, 0xc51f, 0xc51f }, /* 0xc520 */ { true, 0xc520, 0xc520 }, /* 0xc521 */ { true, 0xc521, 0xc521 }, /* 0xc522 */ { true, 0xc522, 0xc522 }, /* 0xc523 */ { true, 0xc523, 0xc523 }, /* 0xc524 */ { true, 0xc524, 0xc524 }, /* 0xc525 */ { true, 0xc525, 0xc525 }, /* 0xc526 */ { true, 0xc526, 0xc526 }, /* 0xc527 */ { true, 0xc527, 0xc527 }, /* 0xc528 */ { true, 0xc528, 0xc528 }, /* 0xc529 */ { true, 0xc529, 0xc529 }, /* 0xc52a */ { true, 0xc52a, 0xc52a }, /* 0xc52b */ { true, 0xc52b, 0xc52b }, /* 0xc52c */ { true, 0xc52c, 0xc52c }, /* 0xc52d */ { true, 0xc52d, 0xc52d }, /* 0xc52e */ { true, 0xc52e, 0xc52e }, /* 0xc52f */ { true, 0xc52f, 0xc52f }, /* 0xc530 */ { true, 0xc530, 0xc530 }, /* 0xc531 */ { true, 0xc531, 0xc531 }, /* 0xc532 */ { true, 0xc532, 0xc532 }, /* 0xc533 */ { true, 0xc533, 0xc533 }, /* 0xc534 */ { true, 0xc534, 0xc534 }, /* 0xc535 */ { true, 0xc535, 0xc535 }, /* 0xc536 */ { true, 0xc536, 0xc536 }, /* 0xc537 */ { true, 0xc537, 0xc537 }, /* 0xc538 */ { true, 0xc538, 0xc538 }, /* 0xc539 */ { true, 0xc539, 0xc539 }, /* 0xc53a */ { true, 0xc53a, 0xc53a }, /* 0xc53b */ { true, 0xc53b, 0xc53b }, /* 0xc53c */ { true, 0xc53c, 0xc53c }, /* 0xc53d */ { true, 0xc53d, 0xc53d }, /* 0xc53e */ { true, 0xc53e, 0xc53e }, /* 0xc53f */ { true, 0xc53f, 0xc53f }, /* 0xc540 */ { true, 0xc540, 0xc540 }, /* 0xc541 */ { true, 0xc541, 0xc541 }, /* 0xc542 */ { true, 0xc542, 0xc542 }, /* 0xc543 */ { true, 0xc543, 0xc543 }, /* 0xc544 */ { true, 0xc544, 0xc544 }, /* 0xc545 */ { true, 0xc545, 0xc545 }, /* 0xc546 */ { true, 0xc546, 0xc546 }, /* 0xc547 */ { true, 0xc547, 0xc547 }, /* 0xc548 */ { true, 0xc548, 0xc548 }, /* 0xc549 */ { true, 0xc549, 0xc549 }, /* 0xc54a */ { true, 0xc54a, 0xc54a }, /* 0xc54b */ { true, 0xc54b, 0xc54b }, /* 0xc54c */ { true, 0xc54c, 0xc54c }, /* 0xc54d */ { true, 0xc54d, 0xc54d }, /* 0xc54e */ { true, 0xc54e, 0xc54e }, /* 0xc54f */ { true, 0xc54f, 0xc54f }, /* 0xc550 */ { true, 0xc550, 0xc550 }, /* 0xc551 */ { true, 0xc551, 0xc551 }, /* 0xc552 */ { true, 0xc552, 0xc552 }, /* 0xc553 */ { true, 0xc553, 0xc553 }, /* 0xc554 */ { true, 0xc554, 0xc554 }, /* 0xc555 */ { true, 0xc555, 0xc555 }, /* 0xc556 */ { true, 0xc556, 0xc556 }, /* 0xc557 */ { true, 0xc557, 0xc557 }, /* 0xc558 */ { true, 0xc558, 0xc558 }, /* 0xc559 */ { true, 0xc559, 0xc559 }, /* 0xc55a */ { true, 0xc55a, 0xc55a }, /* 0xc55b */ { true, 0xc55b, 0xc55b }, /* 0xc55c */ { true, 0xc55c, 0xc55c }, /* 0xc55d */ { true, 0xc55d, 0xc55d }, /* 0xc55e */ { true, 0xc55e, 0xc55e }, /* 0xc55f */ { true, 0xc55f, 0xc55f }, /* 0xc560 */ { true, 0xc560, 0xc560 }, /* 0xc561 */ { true, 0xc561, 0xc561 }, /* 0xc562 */ { true, 0xc562, 0xc562 }, /* 0xc563 */ { true, 0xc563, 0xc563 }, /* 0xc564 */ { true, 0xc564, 0xc564 }, /* 0xc565 */ { true, 0xc565, 0xc565 }, /* 0xc566 */ { true, 0xc566, 0xc566 }, /* 0xc567 */ { true, 0xc567, 0xc567 }, /* 0xc568 */ { true, 0xc568, 0xc568 }, /* 0xc569 */ { true, 0xc569, 0xc569 }, /* 0xc56a */ { true, 0xc56a, 0xc56a }, /* 0xc56b */ { true, 0xc56b, 0xc56b }, /* 0xc56c */ { true, 0xc56c, 0xc56c }, /* 0xc56d */ { true, 0xc56d, 0xc56d }, /* 0xc56e */ { true, 0xc56e, 0xc56e }, /* 0xc56f */ { true, 0xc56f, 0xc56f }, /* 0xc570 */ { true, 0xc570, 0xc570 }, /* 0xc571 */ { true, 0xc571, 0xc571 }, /* 0xc572 */ { true, 0xc572, 0xc572 }, /* 0xc573 */ { true, 0xc573, 0xc573 }, /* 0xc574 */ { true, 0xc574, 0xc574 }, /* 0xc575 */ { true, 0xc575, 0xc575 }, /* 0xc576 */ { true, 0xc576, 0xc576 }, /* 0xc577 */ { true, 0xc577, 0xc577 }, /* 0xc578 */ { true, 0xc578, 0xc578 }, /* 0xc579 */ { true, 0xc579, 0xc579 }, /* 0xc57a */ { true, 0xc57a, 0xc57a }, /* 0xc57b */ { true, 0xc57b, 0xc57b }, /* 0xc57c */ { true, 0xc57c, 0xc57c }, /* 0xc57d */ { true, 0xc57d, 0xc57d }, /* 0xc57e */ { true, 0xc57e, 0xc57e }, /* 0xc57f */ { true, 0xc57f, 0xc57f }, /* 0xc580 */ { true, 0xc580, 0xc580 }, /* 0xc581 */ { true, 0xc581, 0xc581 }, /* 0xc582 */ { true, 0xc582, 0xc582 }, /* 0xc583 */ { true, 0xc583, 0xc583 }, /* 0xc584 */ { true, 0xc584, 0xc584 }, /* 0xc585 */ { true, 0xc585, 0xc585 }, /* 0xc586 */ { true, 0xc586, 0xc586 }, /* 0xc587 */ { true, 0xc587, 0xc587 }, /* 0xc588 */ { true, 0xc588, 0xc588 }, /* 0xc589 */ { true, 0xc589, 0xc589 }, /* 0xc58a */ { true, 0xc58a, 0xc58a }, /* 0xc58b */ { true, 0xc58b, 0xc58b }, /* 0xc58c */ { true, 0xc58c, 0xc58c }, /* 0xc58d */ { true, 0xc58d, 0xc58d }, /* 0xc58e */ { true, 0xc58e, 0xc58e }, /* 0xc58f */ { true, 0xc58f, 0xc58f }, /* 0xc590 */ { true, 0xc590, 0xc590 }, /* 0xc591 */ { true, 0xc591, 0xc591 }, /* 0xc592 */ { true, 0xc592, 0xc592 }, /* 0xc593 */ { true, 0xc593, 0xc593 }, /* 0xc594 */ { true, 0xc594, 0xc594 }, /* 0xc595 */ { true, 0xc595, 0xc595 }, /* 0xc596 */ { true, 0xc596, 0xc596 }, /* 0xc597 */ { true, 0xc597, 0xc597 }, /* 0xc598 */ { true, 0xc598, 0xc598 }, /* 0xc599 */ { true, 0xc599, 0xc599 }, /* 0xc59a */ { true, 0xc59a, 0xc59a }, /* 0xc59b */ { true, 0xc59b, 0xc59b }, /* 0xc59c */ { true, 0xc59c, 0xc59c }, /* 0xc59d */ { true, 0xc59d, 0xc59d }, /* 0xc59e */ { true, 0xc59e, 0xc59e }, /* 0xc59f */ { true, 0xc59f, 0xc59f }, /* 0xc5a0 */ { true, 0xc5a0, 0xc5a0 }, /* 0xc5a1 */ { true, 0xc5a1, 0xc5a1 }, /* 0xc5a2 */ { true, 0xc5a2, 0xc5a2 }, /* 0xc5a3 */ { true, 0xc5a3, 0xc5a3 }, /* 0xc5a4 */ { true, 0xc5a4, 0xc5a4 }, /* 0xc5a5 */ { true, 0xc5a5, 0xc5a5 }, /* 0xc5a6 */ { true, 0xc5a6, 0xc5a6 }, /* 0xc5a7 */ { true, 0xc5a7, 0xc5a7 }, /* 0xc5a8 */ { true, 0xc5a8, 0xc5a8 }, /* 0xc5a9 */ { true, 0xc5a9, 0xc5a9 }, /* 0xc5aa */ { true, 0xc5aa, 0xc5aa }, /* 0xc5ab */ { true, 0xc5ab, 0xc5ab }, /* 0xc5ac */ { true, 0xc5ac, 0xc5ac }, /* 0xc5ad */ { true, 0xc5ad, 0xc5ad }, /* 0xc5ae */ { true, 0xc5ae, 0xc5ae }, /* 0xc5af */ { true, 0xc5af, 0xc5af }, /* 0xc5b0 */ { true, 0xc5b0, 0xc5b0 }, /* 0xc5b1 */ { true, 0xc5b1, 0xc5b1 }, /* 0xc5b2 */ { true, 0xc5b2, 0xc5b2 }, /* 0xc5b3 */ { true, 0xc5b3, 0xc5b3 }, /* 0xc5b4 */ { true, 0xc5b4, 0xc5b4 }, /* 0xc5b5 */ { true, 0xc5b5, 0xc5b5 }, /* 0xc5b6 */ { true, 0xc5b6, 0xc5b6 }, /* 0xc5b7 */ { true, 0xc5b7, 0xc5b7 }, /* 0xc5b8 */ { true, 0xc5b8, 0xc5b8 }, /* 0xc5b9 */ { true, 0xc5b9, 0xc5b9 }, /* 0xc5ba */ { true, 0xc5ba, 0xc5ba }, /* 0xc5bb */ { true, 0xc5bb, 0xc5bb }, /* 0xc5bc */ { true, 0xc5bc, 0xc5bc }, /* 0xc5bd */ { true, 0xc5bd, 0xc5bd }, /* 0xc5be */ { true, 0xc5be, 0xc5be }, /* 0xc5bf */ { true, 0xc5bf, 0xc5bf }, /* 0xc5c0 */ { true, 0xc5c0, 0xc5c0 }, /* 0xc5c1 */ { true, 0xc5c1, 0xc5c1 }, /* 0xc5c2 */ { true, 0xc5c2, 0xc5c2 }, /* 0xc5c3 */ { true, 0xc5c3, 0xc5c3 }, /* 0xc5c4 */ { true, 0xc5c4, 0xc5c4 }, /* 0xc5c5 */ { true, 0xc5c5, 0xc5c5 }, /* 0xc5c6 */ { true, 0xc5c6, 0xc5c6 }, /* 0xc5c7 */ { true, 0xc5c7, 0xc5c7 }, /* 0xc5c8 */ { true, 0xc5c8, 0xc5c8 }, /* 0xc5c9 */ { true, 0xc5c9, 0xc5c9 }, /* 0xc5ca */ { true, 0xc5ca, 0xc5ca }, /* 0xc5cb */ { true, 0xc5cb, 0xc5cb }, /* 0xc5cc */ { true, 0xc5cc, 0xc5cc }, /* 0xc5cd */ { true, 0xc5cd, 0xc5cd }, /* 0xc5ce */ { true, 0xc5ce, 0xc5ce }, /* 0xc5cf */ { true, 0xc5cf, 0xc5cf }, /* 0xc5d0 */ { true, 0xc5d0, 0xc5d0 }, /* 0xc5d1 */ { true, 0xc5d1, 0xc5d1 }, /* 0xc5d2 */ { true, 0xc5d2, 0xc5d2 }, /* 0xc5d3 */ { true, 0xc5d3, 0xc5d3 }, /* 0xc5d4 */ { true, 0xc5d4, 0xc5d4 }, /* 0xc5d5 */ { true, 0xc5d5, 0xc5d5 }, /* 0xc5d6 */ { true, 0xc5d6, 0xc5d6 }, /* 0xc5d7 */ { true, 0xc5d7, 0xc5d7 }, /* 0xc5d8 */ { true, 0xc5d8, 0xc5d8 }, /* 0xc5d9 */ { true, 0xc5d9, 0xc5d9 }, /* 0xc5da */ { true, 0xc5da, 0xc5da }, /* 0xc5db */ { true, 0xc5db, 0xc5db }, /* 0xc5dc */ { true, 0xc5dc, 0xc5dc }, /* 0xc5dd */ { true, 0xc5dd, 0xc5dd }, /* 0xc5de */ { true, 0xc5de, 0xc5de }, /* 0xc5df */ { true, 0xc5df, 0xc5df }, /* 0xc5e0 */ { true, 0xc5e0, 0xc5e0 }, /* 0xc5e1 */ { true, 0xc5e1, 0xc5e1 }, /* 0xc5e2 */ { true, 0xc5e2, 0xc5e2 }, /* 0xc5e3 */ { true, 0xc5e3, 0xc5e3 }, /* 0xc5e4 */ { true, 0xc5e4, 0xc5e4 }, /* 0xc5e5 */ { true, 0xc5e5, 0xc5e5 }, /* 0xc5e6 */ { true, 0xc5e6, 0xc5e6 }, /* 0xc5e7 */ { true, 0xc5e7, 0xc5e7 }, /* 0xc5e8 */ { true, 0xc5e8, 0xc5e8 }, /* 0xc5e9 */ { true, 0xc5e9, 0xc5e9 }, /* 0xc5ea */ { true, 0xc5ea, 0xc5ea }, /* 0xc5eb */ { true, 0xc5eb, 0xc5eb }, /* 0xc5ec */ { true, 0xc5ec, 0xc5ec }, /* 0xc5ed */ { true, 0xc5ed, 0xc5ed }, /* 0xc5ee */ { true, 0xc5ee, 0xc5ee }, /* 0xc5ef */ { true, 0xc5ef, 0xc5ef }, /* 0xc5f0 */ { true, 0xc5f0, 0xc5f0 }, /* 0xc5f1 */ { true, 0xc5f1, 0xc5f1 }, /* 0xc5f2 */ { true, 0xc5f2, 0xc5f2 }, /* 0xc5f3 */ { true, 0xc5f3, 0xc5f3 }, /* 0xc5f4 */ { true, 0xc5f4, 0xc5f4 }, /* 0xc5f5 */ { true, 0xc5f5, 0xc5f5 }, /* 0xc5f6 */ { true, 0xc5f6, 0xc5f6 }, /* 0xc5f7 */ { true, 0xc5f7, 0xc5f7 }, /* 0xc5f8 */ { true, 0xc5f8, 0xc5f8 }, /* 0xc5f9 */ { true, 0xc5f9, 0xc5f9 }, /* 0xc5fa */ { true, 0xc5fa, 0xc5fa }, /* 0xc5fb */ { true, 0xc5fb, 0xc5fb }, /* 0xc5fc */ { true, 0xc5fc, 0xc5fc }, /* 0xc5fd */ { true, 0xc5fd, 0xc5fd }, /* 0xc5fe */ { true, 0xc5fe, 0xc5fe }, /* 0xc5ff */ { true, 0xc5ff, 0xc5ff }, /* 0xc600 */ { true, 0xc600, 0xc600 }, /* 0xc601 */ { true, 0xc601, 0xc601 }, /* 0xc602 */ { true, 0xc602, 0xc602 }, /* 0xc603 */ { true, 0xc603, 0xc603 }, /* 0xc604 */ { true, 0xc604, 0xc604 }, /* 0xc605 */ { true, 0xc605, 0xc605 }, /* 0xc606 */ { true, 0xc606, 0xc606 }, /* 0xc607 */ { true, 0xc607, 0xc607 }, /* 0xc608 */ { true, 0xc608, 0xc608 }, /* 0xc609 */ { true, 0xc609, 0xc609 }, /* 0xc60a */ { true, 0xc60a, 0xc60a }, /* 0xc60b */ { true, 0xc60b, 0xc60b }, /* 0xc60c */ { true, 0xc60c, 0xc60c }, /* 0xc60d */ { true, 0xc60d, 0xc60d }, /* 0xc60e */ { true, 0xc60e, 0xc60e }, /* 0xc60f */ { true, 0xc60f, 0xc60f }, /* 0xc610 */ { true, 0xc610, 0xc610 }, /* 0xc611 */ { true, 0xc611, 0xc611 }, /* 0xc612 */ { true, 0xc612, 0xc612 }, /* 0xc613 */ { true, 0xc613, 0xc613 }, /* 0xc614 */ { true, 0xc614, 0xc614 }, /* 0xc615 */ { true, 0xc615, 0xc615 }, /* 0xc616 */ { true, 0xc616, 0xc616 }, /* 0xc617 */ { true, 0xc617, 0xc617 }, /* 0xc618 */ { true, 0xc618, 0xc618 }, /* 0xc619 */ { true, 0xc619, 0xc619 }, /* 0xc61a */ { true, 0xc61a, 0xc61a }, /* 0xc61b */ { true, 0xc61b, 0xc61b }, /* 0xc61c */ { true, 0xc61c, 0xc61c }, /* 0xc61d */ { true, 0xc61d, 0xc61d }, /* 0xc61e */ { true, 0xc61e, 0xc61e }, /* 0xc61f */ { true, 0xc61f, 0xc61f }, /* 0xc620 */ { true, 0xc620, 0xc620 }, /* 0xc621 */ { true, 0xc621, 0xc621 }, /* 0xc622 */ { true, 0xc622, 0xc622 }, /* 0xc623 */ { true, 0xc623, 0xc623 }, /* 0xc624 */ { true, 0xc624, 0xc624 }, /* 0xc625 */ { true, 0xc625, 0xc625 }, /* 0xc626 */ { true, 0xc626, 0xc626 }, /* 0xc627 */ { true, 0xc627, 0xc627 }, /* 0xc628 */ { true, 0xc628, 0xc628 }, /* 0xc629 */ { true, 0xc629, 0xc629 }, /* 0xc62a */ { true, 0xc62a, 0xc62a }, /* 0xc62b */ { true, 0xc62b, 0xc62b }, /* 0xc62c */ { true, 0xc62c, 0xc62c }, /* 0xc62d */ { true, 0xc62d, 0xc62d }, /* 0xc62e */ { true, 0xc62e, 0xc62e }, /* 0xc62f */ { true, 0xc62f, 0xc62f }, /* 0xc630 */ { true, 0xc630, 0xc630 }, /* 0xc631 */ { true, 0xc631, 0xc631 }, /* 0xc632 */ { true, 0xc632, 0xc632 }, /* 0xc633 */ { true, 0xc633, 0xc633 }, /* 0xc634 */ { true, 0xc634, 0xc634 }, /* 0xc635 */ { true, 0xc635, 0xc635 }, /* 0xc636 */ { true, 0xc636, 0xc636 }, /* 0xc637 */ { true, 0xc637, 0xc637 }, /* 0xc638 */ { true, 0xc638, 0xc638 }, /* 0xc639 */ { true, 0xc639, 0xc639 }, /* 0xc63a */ { true, 0xc63a, 0xc63a }, /* 0xc63b */ { true, 0xc63b, 0xc63b }, /* 0xc63c */ { true, 0xc63c, 0xc63c }, /* 0xc63d */ { true, 0xc63d, 0xc63d }, /* 0xc63e */ { true, 0xc63e, 0xc63e }, /* 0xc63f */ { true, 0xc63f, 0xc63f }, /* 0xc640 */ { true, 0xc640, 0xc640 }, /* 0xc641 */ { true, 0xc641, 0xc641 }, /* 0xc642 */ { true, 0xc642, 0xc642 }, /* 0xc643 */ { true, 0xc643, 0xc643 }, /* 0xc644 */ { true, 0xc644, 0xc644 }, /* 0xc645 */ { true, 0xc645, 0xc645 }, /* 0xc646 */ { true, 0xc646, 0xc646 }, /* 0xc647 */ { true, 0xc647, 0xc647 }, /* 0xc648 */ { true, 0xc648, 0xc648 }, /* 0xc649 */ { true, 0xc649, 0xc649 }, /* 0xc64a */ { true, 0xc64a, 0xc64a }, /* 0xc64b */ { true, 0xc64b, 0xc64b }, /* 0xc64c */ { true, 0xc64c, 0xc64c }, /* 0xc64d */ { true, 0xc64d, 0xc64d }, /* 0xc64e */ { true, 0xc64e, 0xc64e }, /* 0xc64f */ { true, 0xc64f, 0xc64f }, /* 0xc650 */ { true, 0xc650, 0xc650 }, /* 0xc651 */ { true, 0xc651, 0xc651 }, /* 0xc652 */ { true, 0xc652, 0xc652 }, /* 0xc653 */ { true, 0xc653, 0xc653 }, /* 0xc654 */ { true, 0xc654, 0xc654 }, /* 0xc655 */ { true, 0xc655, 0xc655 }, /* 0xc656 */ { true, 0xc656, 0xc656 }, /* 0xc657 */ { true, 0xc657, 0xc657 }, /* 0xc658 */ { true, 0xc658, 0xc658 }, /* 0xc659 */ { true, 0xc659, 0xc659 }, /* 0xc65a */ { true, 0xc65a, 0xc65a }, /* 0xc65b */ { true, 0xc65b, 0xc65b }, /* 0xc65c */ { true, 0xc65c, 0xc65c }, /* 0xc65d */ { true, 0xc65d, 0xc65d }, /* 0xc65e */ { true, 0xc65e, 0xc65e }, /* 0xc65f */ { true, 0xc65f, 0xc65f }, /* 0xc660 */ { true, 0xc660, 0xc660 }, /* 0xc661 */ { true, 0xc661, 0xc661 }, /* 0xc662 */ { true, 0xc662, 0xc662 }, /* 0xc663 */ { true, 0xc663, 0xc663 }, /* 0xc664 */ { true, 0xc664, 0xc664 }, /* 0xc665 */ { true, 0xc665, 0xc665 }, /* 0xc666 */ { true, 0xc666, 0xc666 }, /* 0xc667 */ { true, 0xc667, 0xc667 }, /* 0xc668 */ { true, 0xc668, 0xc668 }, /* 0xc669 */ { true, 0xc669, 0xc669 }, /* 0xc66a */ { true, 0xc66a, 0xc66a }, /* 0xc66b */ { true, 0xc66b, 0xc66b }, /* 0xc66c */ { true, 0xc66c, 0xc66c }, /* 0xc66d */ { true, 0xc66d, 0xc66d }, /* 0xc66e */ { true, 0xc66e, 0xc66e }, /* 0xc66f */ { true, 0xc66f, 0xc66f }, /* 0xc670 */ { true, 0xc670, 0xc670 }, /* 0xc671 */ { true, 0xc671, 0xc671 }, /* 0xc672 */ { true, 0xc672, 0xc672 }, /* 0xc673 */ { true, 0xc673, 0xc673 }, /* 0xc674 */ { true, 0xc674, 0xc674 }, /* 0xc675 */ { true, 0xc675, 0xc675 }, /* 0xc676 */ { true, 0xc676, 0xc676 }, /* 0xc677 */ { true, 0xc677, 0xc677 }, /* 0xc678 */ { true, 0xc678, 0xc678 }, /* 0xc679 */ { true, 0xc679, 0xc679 }, /* 0xc67a */ { true, 0xc67a, 0xc67a }, /* 0xc67b */ { true, 0xc67b, 0xc67b }, /* 0xc67c */ { true, 0xc67c, 0xc67c }, /* 0xc67d */ { true, 0xc67d, 0xc67d }, /* 0xc67e */ { true, 0xc67e, 0xc67e }, /* 0xc67f */ { true, 0xc67f, 0xc67f }, /* 0xc680 */ { true, 0xc680, 0xc680 }, /* 0xc681 */ { true, 0xc681, 0xc681 }, /* 0xc682 */ { true, 0xc682, 0xc682 }, /* 0xc683 */ { true, 0xc683, 0xc683 }, /* 0xc684 */ { true, 0xc684, 0xc684 }, /* 0xc685 */ { true, 0xc685, 0xc685 }, /* 0xc686 */ { true, 0xc686, 0xc686 }, /* 0xc687 */ { true, 0xc687, 0xc687 }, /* 0xc688 */ { true, 0xc688, 0xc688 }, /* 0xc689 */ { true, 0xc689, 0xc689 }, /* 0xc68a */ { true, 0xc68a, 0xc68a }, /* 0xc68b */ { true, 0xc68b, 0xc68b }, /* 0xc68c */ { true, 0xc68c, 0xc68c }, /* 0xc68d */ { true, 0xc68d, 0xc68d }, /* 0xc68e */ { true, 0xc68e, 0xc68e }, /* 0xc68f */ { true, 0xc68f, 0xc68f }, /* 0xc690 */ { true, 0xc690, 0xc690 }, /* 0xc691 */ { true, 0xc691, 0xc691 }, /* 0xc692 */ { true, 0xc692, 0xc692 }, /* 0xc693 */ { true, 0xc693, 0xc693 }, /* 0xc694 */ { true, 0xc694, 0xc694 }, /* 0xc695 */ { true, 0xc695, 0xc695 }, /* 0xc696 */ { true, 0xc696, 0xc696 }, /* 0xc697 */ { true, 0xc697, 0xc697 }, /* 0xc698 */ { true, 0xc698, 0xc698 }, /* 0xc699 */ { true, 0xc699, 0xc699 }, /* 0xc69a */ { true, 0xc69a, 0xc69a }, /* 0xc69b */ { true, 0xc69b, 0xc69b }, /* 0xc69c */ { true, 0xc69c, 0xc69c }, /* 0xc69d */ { true, 0xc69d, 0xc69d }, /* 0xc69e */ { true, 0xc69e, 0xc69e }, /* 0xc69f */ { true, 0xc69f, 0xc69f }, /* 0xc6a0 */ { true, 0xc6a0, 0xc6a0 }, /* 0xc6a1 */ { true, 0xc6a1, 0xc6a1 }, /* 0xc6a2 */ { true, 0xc6a2, 0xc6a2 }, /* 0xc6a3 */ { true, 0xc6a3, 0xc6a3 }, /* 0xc6a4 */ { true, 0xc6a4, 0xc6a4 }, /* 0xc6a5 */ { true, 0xc6a5, 0xc6a5 }, /* 0xc6a6 */ { true, 0xc6a6, 0xc6a6 }, /* 0xc6a7 */ { true, 0xc6a7, 0xc6a7 }, /* 0xc6a8 */ { true, 0xc6a8, 0xc6a8 }, /* 0xc6a9 */ { true, 0xc6a9, 0xc6a9 }, /* 0xc6aa */ { true, 0xc6aa, 0xc6aa }, /* 0xc6ab */ { true, 0xc6ab, 0xc6ab }, /* 0xc6ac */ { true, 0xc6ac, 0xc6ac }, /* 0xc6ad */ { true, 0xc6ad, 0xc6ad }, /* 0xc6ae */ { true, 0xc6ae, 0xc6ae }, /* 0xc6af */ { true, 0xc6af, 0xc6af }, /* 0xc6b0 */ { true, 0xc6b0, 0xc6b0 }, /* 0xc6b1 */ { true, 0xc6b1, 0xc6b1 }, /* 0xc6b2 */ { true, 0xc6b2, 0xc6b2 }, /* 0xc6b3 */ { true, 0xc6b3, 0xc6b3 }, /* 0xc6b4 */ { true, 0xc6b4, 0xc6b4 }, /* 0xc6b5 */ { true, 0xc6b5, 0xc6b5 }, /* 0xc6b6 */ { true, 0xc6b6, 0xc6b6 }, /* 0xc6b7 */ { true, 0xc6b7, 0xc6b7 }, /* 0xc6b8 */ { true, 0xc6b8, 0xc6b8 }, /* 0xc6b9 */ { true, 0xc6b9, 0xc6b9 }, /* 0xc6ba */ { true, 0xc6ba, 0xc6ba }, /* 0xc6bb */ { true, 0xc6bb, 0xc6bb }, /* 0xc6bc */ { true, 0xc6bc, 0xc6bc }, /* 0xc6bd */ { true, 0xc6bd, 0xc6bd }, /* 0xc6be */ { true, 0xc6be, 0xc6be }, /* 0xc6bf */ { true, 0xc6bf, 0xc6bf }, /* 0xc6c0 */ { true, 0xc6c0, 0xc6c0 }, /* 0xc6c1 */ { true, 0xc6c1, 0xc6c1 }, /* 0xc6c2 */ { true, 0xc6c2, 0xc6c2 }, /* 0xc6c3 */ { true, 0xc6c3, 0xc6c3 }, /* 0xc6c4 */ { true, 0xc6c4, 0xc6c4 }, /* 0xc6c5 */ { true, 0xc6c5, 0xc6c5 }, /* 0xc6c6 */ { true, 0xc6c6, 0xc6c6 }, /* 0xc6c7 */ { true, 0xc6c7, 0xc6c7 }, /* 0xc6c8 */ { true, 0xc6c8, 0xc6c8 }, /* 0xc6c9 */ { true, 0xc6c9, 0xc6c9 }, /* 0xc6ca */ { true, 0xc6ca, 0xc6ca }, /* 0xc6cb */ { true, 0xc6cb, 0xc6cb }, /* 0xc6cc */ { true, 0xc6cc, 0xc6cc }, /* 0xc6cd */ { true, 0xc6cd, 0xc6cd }, /* 0xc6ce */ { true, 0xc6ce, 0xc6ce }, /* 0xc6cf */ { true, 0xc6cf, 0xc6cf }, /* 0xc6d0 */ { true, 0xc6d0, 0xc6d0 }, /* 0xc6d1 */ { true, 0xc6d1, 0xc6d1 }, /* 0xc6d2 */ { true, 0xc6d2, 0xc6d2 }, /* 0xc6d3 */ { true, 0xc6d3, 0xc6d3 }, /* 0xc6d4 */ { true, 0xc6d4, 0xc6d4 }, /* 0xc6d5 */ { true, 0xc6d5, 0xc6d5 }, /* 0xc6d6 */ { true, 0xc6d6, 0xc6d6 }, /* 0xc6d7 */ { true, 0xc6d7, 0xc6d7 }, /* 0xc6d8 */ { true, 0xc6d8, 0xc6d8 }, /* 0xc6d9 */ { true, 0xc6d9, 0xc6d9 }, /* 0xc6da */ { true, 0xc6da, 0xc6da }, /* 0xc6db */ { true, 0xc6db, 0xc6db }, /* 0xc6dc */ { true, 0xc6dc, 0xc6dc }, /* 0xc6dd */ { true, 0xc6dd, 0xc6dd }, /* 0xc6de */ { true, 0xc6de, 0xc6de }, /* 0xc6df */ { true, 0xc6df, 0xc6df }, /* 0xc6e0 */ { true, 0xc6e0, 0xc6e0 }, /* 0xc6e1 */ { true, 0xc6e1, 0xc6e1 }, /* 0xc6e2 */ { true, 0xc6e2, 0xc6e2 }, /* 0xc6e3 */ { true, 0xc6e3, 0xc6e3 }, /* 0xc6e4 */ { true, 0xc6e4, 0xc6e4 }, /* 0xc6e5 */ { true, 0xc6e5, 0xc6e5 }, /* 0xc6e6 */ { true, 0xc6e6, 0xc6e6 }, /* 0xc6e7 */ { true, 0xc6e7, 0xc6e7 }, /* 0xc6e8 */ { true, 0xc6e8, 0xc6e8 }, /* 0xc6e9 */ { true, 0xc6e9, 0xc6e9 }, /* 0xc6ea */ { true, 0xc6ea, 0xc6ea }, /* 0xc6eb */ { true, 0xc6eb, 0xc6eb }, /* 0xc6ec */ { true, 0xc6ec, 0xc6ec }, /* 0xc6ed */ { true, 0xc6ed, 0xc6ed }, /* 0xc6ee */ { true, 0xc6ee, 0xc6ee }, /* 0xc6ef */ { true, 0xc6ef, 0xc6ef }, /* 0xc6f0 */ { true, 0xc6f0, 0xc6f0 }, /* 0xc6f1 */ { true, 0xc6f1, 0xc6f1 }, /* 0xc6f2 */ { true, 0xc6f2, 0xc6f2 }, /* 0xc6f3 */ { true, 0xc6f3, 0xc6f3 }, /* 0xc6f4 */ { true, 0xc6f4, 0xc6f4 }, /* 0xc6f5 */ { true, 0xc6f5, 0xc6f5 }, /* 0xc6f6 */ { true, 0xc6f6, 0xc6f6 }, /* 0xc6f7 */ { true, 0xc6f7, 0xc6f7 }, /* 0xc6f8 */ { true, 0xc6f8, 0xc6f8 }, /* 0xc6f9 */ { true, 0xc6f9, 0xc6f9 }, /* 0xc6fa */ { true, 0xc6fa, 0xc6fa }, /* 0xc6fb */ { true, 0xc6fb, 0xc6fb }, /* 0xc6fc */ { true, 0xc6fc, 0xc6fc }, /* 0xc6fd */ { true, 0xc6fd, 0xc6fd }, /* 0xc6fe */ { true, 0xc6fe, 0xc6fe }, /* 0xc6ff */ { true, 0xc6ff, 0xc6ff }, /* 0xc700 */ { true, 0xc700, 0xc700 }, /* 0xc701 */ { true, 0xc701, 0xc701 }, /* 0xc702 */ { true, 0xc702, 0xc702 }, /* 0xc703 */ { true, 0xc703, 0xc703 }, /* 0xc704 */ { true, 0xc704, 0xc704 }, /* 0xc705 */ { true, 0xc705, 0xc705 }, /* 0xc706 */ { true, 0xc706, 0xc706 }, /* 0xc707 */ { true, 0xc707, 0xc707 }, /* 0xc708 */ { true, 0xc708, 0xc708 }, /* 0xc709 */ { true, 0xc709, 0xc709 }, /* 0xc70a */ { true, 0xc70a, 0xc70a }, /* 0xc70b */ { true, 0xc70b, 0xc70b }, /* 0xc70c */ { true, 0xc70c, 0xc70c }, /* 0xc70d */ { true, 0xc70d, 0xc70d }, /* 0xc70e */ { true, 0xc70e, 0xc70e }, /* 0xc70f */ { true, 0xc70f, 0xc70f }, /* 0xc710 */ { true, 0xc710, 0xc710 }, /* 0xc711 */ { true, 0xc711, 0xc711 }, /* 0xc712 */ { true, 0xc712, 0xc712 }, /* 0xc713 */ { true, 0xc713, 0xc713 }, /* 0xc714 */ { true, 0xc714, 0xc714 }, /* 0xc715 */ { true, 0xc715, 0xc715 }, /* 0xc716 */ { true, 0xc716, 0xc716 }, /* 0xc717 */ { true, 0xc717, 0xc717 }, /* 0xc718 */ { true, 0xc718, 0xc718 }, /* 0xc719 */ { true, 0xc719, 0xc719 }, /* 0xc71a */ { true, 0xc71a, 0xc71a }, /* 0xc71b */ { true, 0xc71b, 0xc71b }, /* 0xc71c */ { true, 0xc71c, 0xc71c }, /* 0xc71d */ { true, 0xc71d, 0xc71d }, /* 0xc71e */ { true, 0xc71e, 0xc71e }, /* 0xc71f */ { true, 0xc71f, 0xc71f }, /* 0xc720 */ { true, 0xc720, 0xc720 }, /* 0xc721 */ { true, 0xc721, 0xc721 }, /* 0xc722 */ { true, 0xc722, 0xc722 }, /* 0xc723 */ { true, 0xc723, 0xc723 }, /* 0xc724 */ { true, 0xc724, 0xc724 }, /* 0xc725 */ { true, 0xc725, 0xc725 }, /* 0xc726 */ { true, 0xc726, 0xc726 }, /* 0xc727 */ { true, 0xc727, 0xc727 }, /* 0xc728 */ { true, 0xc728, 0xc728 }, /* 0xc729 */ { true, 0xc729, 0xc729 }, /* 0xc72a */ { true, 0xc72a, 0xc72a }, /* 0xc72b */ { true, 0xc72b, 0xc72b }, /* 0xc72c */ { true, 0xc72c, 0xc72c }, /* 0xc72d */ { true, 0xc72d, 0xc72d }, /* 0xc72e */ { true, 0xc72e, 0xc72e }, /* 0xc72f */ { true, 0xc72f, 0xc72f }, /* 0xc730 */ { true, 0xc730, 0xc730 }, /* 0xc731 */ { true, 0xc731, 0xc731 }, /* 0xc732 */ { true, 0xc732, 0xc732 }, /* 0xc733 */ { true, 0xc733, 0xc733 }, /* 0xc734 */ { true, 0xc734, 0xc734 }, /* 0xc735 */ { true, 0xc735, 0xc735 }, /* 0xc736 */ { true, 0xc736, 0xc736 }, /* 0xc737 */ { true, 0xc737, 0xc737 }, /* 0xc738 */ { true, 0xc738, 0xc738 }, /* 0xc739 */ { true, 0xc739, 0xc739 }, /* 0xc73a */ { true, 0xc73a, 0xc73a }, /* 0xc73b */ { true, 0xc73b, 0xc73b }, /* 0xc73c */ { true, 0xc73c, 0xc73c }, /* 0xc73d */ { true, 0xc73d, 0xc73d }, /* 0xc73e */ { true, 0xc73e, 0xc73e }, /* 0xc73f */ { true, 0xc73f, 0xc73f }, /* 0xc740 */ { true, 0xc740, 0xc740 }, /* 0xc741 */ { true, 0xc741, 0xc741 }, /* 0xc742 */ { true, 0xc742, 0xc742 }, /* 0xc743 */ { true, 0xc743, 0xc743 }, /* 0xc744 */ { true, 0xc744, 0xc744 }, /* 0xc745 */ { true, 0xc745, 0xc745 }, /* 0xc746 */ { true, 0xc746, 0xc746 }, /* 0xc747 */ { true, 0xc747, 0xc747 }, /* 0xc748 */ { true, 0xc748, 0xc748 }, /* 0xc749 */ { true, 0xc749, 0xc749 }, /* 0xc74a */ { true, 0xc74a, 0xc74a }, /* 0xc74b */ { true, 0xc74b, 0xc74b }, /* 0xc74c */ { true, 0xc74c, 0xc74c }, /* 0xc74d */ { true, 0xc74d, 0xc74d }, /* 0xc74e */ { true, 0xc74e, 0xc74e }, /* 0xc74f */ { true, 0xc74f, 0xc74f }, /* 0xc750 */ { true, 0xc750, 0xc750 }, /* 0xc751 */ { true, 0xc751, 0xc751 }, /* 0xc752 */ { true, 0xc752, 0xc752 }, /* 0xc753 */ { true, 0xc753, 0xc753 }, /* 0xc754 */ { true, 0xc754, 0xc754 }, /* 0xc755 */ { true, 0xc755, 0xc755 }, /* 0xc756 */ { true, 0xc756, 0xc756 }, /* 0xc757 */ { true, 0xc757, 0xc757 }, /* 0xc758 */ { true, 0xc758, 0xc758 }, /* 0xc759 */ { true, 0xc759, 0xc759 }, /* 0xc75a */ { true, 0xc75a, 0xc75a }, /* 0xc75b */ { true, 0xc75b, 0xc75b }, /* 0xc75c */ { true, 0xc75c, 0xc75c }, /* 0xc75d */ { true, 0xc75d, 0xc75d }, /* 0xc75e */ { true, 0xc75e, 0xc75e }, /* 0xc75f */ { true, 0xc75f, 0xc75f }, /* 0xc760 */ { true, 0xc760, 0xc760 }, /* 0xc761 */ { true, 0xc761, 0xc761 }, /* 0xc762 */ { true, 0xc762, 0xc762 }, /* 0xc763 */ { true, 0xc763, 0xc763 }, /* 0xc764 */ { true, 0xc764, 0xc764 }, /* 0xc765 */ { true, 0xc765, 0xc765 }, /* 0xc766 */ { true, 0xc766, 0xc766 }, /* 0xc767 */ { true, 0xc767, 0xc767 }, /* 0xc768 */ { true, 0xc768, 0xc768 }, /* 0xc769 */ { true, 0xc769, 0xc769 }, /* 0xc76a */ { true, 0xc76a, 0xc76a }, /* 0xc76b */ { true, 0xc76b, 0xc76b }, /* 0xc76c */ { true, 0xc76c, 0xc76c }, /* 0xc76d */ { true, 0xc76d, 0xc76d }, /* 0xc76e */ { true, 0xc76e, 0xc76e }, /* 0xc76f */ { true, 0xc76f, 0xc76f }, /* 0xc770 */ { true, 0xc770, 0xc770 }, /* 0xc771 */ { true, 0xc771, 0xc771 }, /* 0xc772 */ { true, 0xc772, 0xc772 }, /* 0xc773 */ { true, 0xc773, 0xc773 }, /* 0xc774 */ { true, 0xc774, 0xc774 }, /* 0xc775 */ { true, 0xc775, 0xc775 }, /* 0xc776 */ { true, 0xc776, 0xc776 }, /* 0xc777 */ { true, 0xc777, 0xc777 }, /* 0xc778 */ { true, 0xc778, 0xc778 }, /* 0xc779 */ { true, 0xc779, 0xc779 }, /* 0xc77a */ { true, 0xc77a, 0xc77a }, /* 0xc77b */ { true, 0xc77b, 0xc77b }, /* 0xc77c */ { true, 0xc77c, 0xc77c }, /* 0xc77d */ { true, 0xc77d, 0xc77d }, /* 0xc77e */ { true, 0xc77e, 0xc77e }, /* 0xc77f */ { true, 0xc77f, 0xc77f }, /* 0xc780 */ { true, 0xc780, 0xc780 }, /* 0xc781 */ { true, 0xc781, 0xc781 }, /* 0xc782 */ { true, 0xc782, 0xc782 }, /* 0xc783 */ { true, 0xc783, 0xc783 }, /* 0xc784 */ { true, 0xc784, 0xc784 }, /* 0xc785 */ { true, 0xc785, 0xc785 }, /* 0xc786 */ { true, 0xc786, 0xc786 }, /* 0xc787 */ { true, 0xc787, 0xc787 }, /* 0xc788 */ { true, 0xc788, 0xc788 }, /* 0xc789 */ { true, 0xc789, 0xc789 }, /* 0xc78a */ { true, 0xc78a, 0xc78a }, /* 0xc78b */ { true, 0xc78b, 0xc78b }, /* 0xc78c */ { true, 0xc78c, 0xc78c }, /* 0xc78d */ { true, 0xc78d, 0xc78d }, /* 0xc78e */ { true, 0xc78e, 0xc78e }, /* 0xc78f */ { true, 0xc78f, 0xc78f }, /* 0xc790 */ { true, 0xc790, 0xc790 }, /* 0xc791 */ { true, 0xc791, 0xc791 }, /* 0xc792 */ { true, 0xc792, 0xc792 }, /* 0xc793 */ { true, 0xc793, 0xc793 }, /* 0xc794 */ { true, 0xc794, 0xc794 }, /* 0xc795 */ { true, 0xc795, 0xc795 }, /* 0xc796 */ { true, 0xc796, 0xc796 }, /* 0xc797 */ { true, 0xc797, 0xc797 }, /* 0xc798 */ { true, 0xc798, 0xc798 }, /* 0xc799 */ { true, 0xc799, 0xc799 }, /* 0xc79a */ { true, 0xc79a, 0xc79a }, /* 0xc79b */ { true, 0xc79b, 0xc79b }, /* 0xc79c */ { true, 0xc79c, 0xc79c }, /* 0xc79d */ { true, 0xc79d, 0xc79d }, /* 0xc79e */ { true, 0xc79e, 0xc79e }, /* 0xc79f */ { true, 0xc79f, 0xc79f }, /* 0xc7a0 */ { true, 0xc7a0, 0xc7a0 }, /* 0xc7a1 */ { true, 0xc7a1, 0xc7a1 }, /* 0xc7a2 */ { true, 0xc7a2, 0xc7a2 }, /* 0xc7a3 */ { true, 0xc7a3, 0xc7a3 }, /* 0xc7a4 */ { true, 0xc7a4, 0xc7a4 }, /* 0xc7a5 */ { true, 0xc7a5, 0xc7a5 }, /* 0xc7a6 */ { true, 0xc7a6, 0xc7a6 }, /* 0xc7a7 */ { true, 0xc7a7, 0xc7a7 }, /* 0xc7a8 */ { true, 0xc7a8, 0xc7a8 }, /* 0xc7a9 */ { true, 0xc7a9, 0xc7a9 }, /* 0xc7aa */ { true, 0xc7aa, 0xc7aa }, /* 0xc7ab */ { true, 0xc7ab, 0xc7ab }, /* 0xc7ac */ { true, 0xc7ac, 0xc7ac }, /* 0xc7ad */ { true, 0xc7ad, 0xc7ad }, /* 0xc7ae */ { true, 0xc7ae, 0xc7ae }, /* 0xc7af */ { true, 0xc7af, 0xc7af }, /* 0xc7b0 */ { true, 0xc7b0, 0xc7b0 }, /* 0xc7b1 */ { true, 0xc7b1, 0xc7b1 }, /* 0xc7b2 */ { true, 0xc7b2, 0xc7b2 }, /* 0xc7b3 */ { true, 0xc7b3, 0xc7b3 }, /* 0xc7b4 */ { true, 0xc7b4, 0xc7b4 }, /* 0xc7b5 */ { true, 0xc7b5, 0xc7b5 }, /* 0xc7b6 */ { true, 0xc7b6, 0xc7b6 }, /* 0xc7b7 */ { true, 0xc7b7, 0xc7b7 }, /* 0xc7b8 */ { true, 0xc7b8, 0xc7b8 }, /* 0xc7b9 */ { true, 0xc7b9, 0xc7b9 }, /* 0xc7ba */ { true, 0xc7ba, 0xc7ba }, /* 0xc7bb */ { true, 0xc7bb, 0xc7bb }, /* 0xc7bc */ { true, 0xc7bc, 0xc7bc }, /* 0xc7bd */ { true, 0xc7bd, 0xc7bd }, /* 0xc7be */ { true, 0xc7be, 0xc7be }, /* 0xc7bf */ { true, 0xc7bf, 0xc7bf }, /* 0xc7c0 */ { true, 0xc7c0, 0xc7c0 }, /* 0xc7c1 */ { true, 0xc7c1, 0xc7c1 }, /* 0xc7c2 */ { true, 0xc7c2, 0xc7c2 }, /* 0xc7c3 */ { true, 0xc7c3, 0xc7c3 }, /* 0xc7c4 */ { true, 0xc7c4, 0xc7c4 }, /* 0xc7c5 */ { true, 0xc7c5, 0xc7c5 }, /* 0xc7c6 */ { true, 0xc7c6, 0xc7c6 }, /* 0xc7c7 */ { true, 0xc7c7, 0xc7c7 }, /* 0xc7c8 */ { true, 0xc7c8, 0xc7c8 }, /* 0xc7c9 */ { true, 0xc7c9, 0xc7c9 }, /* 0xc7ca */ { true, 0xc7ca, 0xc7ca }, /* 0xc7cb */ { true, 0xc7cb, 0xc7cb }, /* 0xc7cc */ { true, 0xc7cc, 0xc7cc }, /* 0xc7cd */ { true, 0xc7cd, 0xc7cd }, /* 0xc7ce */ { true, 0xc7ce, 0xc7ce }, /* 0xc7cf */ { true, 0xc7cf, 0xc7cf }, /* 0xc7d0 */ { true, 0xc7d0, 0xc7d0 }, /* 0xc7d1 */ { true, 0xc7d1, 0xc7d1 }, /* 0xc7d2 */ { true, 0xc7d2, 0xc7d2 }, /* 0xc7d3 */ { true, 0xc7d3, 0xc7d3 }, /* 0xc7d4 */ { true, 0xc7d4, 0xc7d4 }, /* 0xc7d5 */ { true, 0xc7d5, 0xc7d5 }, /* 0xc7d6 */ { true, 0xc7d6, 0xc7d6 }, /* 0xc7d7 */ { true, 0xc7d7, 0xc7d7 }, /* 0xc7d8 */ { true, 0xc7d8, 0xc7d8 }, /* 0xc7d9 */ { true, 0xc7d9, 0xc7d9 }, /* 0xc7da */ { true, 0xc7da, 0xc7da }, /* 0xc7db */ { true, 0xc7db, 0xc7db }, /* 0xc7dc */ { true, 0xc7dc, 0xc7dc }, /* 0xc7dd */ { true, 0xc7dd, 0xc7dd }, /* 0xc7de */ { true, 0xc7de, 0xc7de }, /* 0xc7df */ { true, 0xc7df, 0xc7df }, /* 0xc7e0 */ { true, 0xc7e0, 0xc7e0 }, /* 0xc7e1 */ { true, 0xc7e1, 0xc7e1 }, /* 0xc7e2 */ { true, 0xc7e2, 0xc7e2 }, /* 0xc7e3 */ { true, 0xc7e3, 0xc7e3 }, /* 0xc7e4 */ { true, 0xc7e4, 0xc7e4 }, /* 0xc7e5 */ { true, 0xc7e5, 0xc7e5 }, /* 0xc7e6 */ { true, 0xc7e6, 0xc7e6 }, /* 0xc7e7 */ { true, 0xc7e7, 0xc7e7 }, /* 0xc7e8 */ { true, 0xc7e8, 0xc7e8 }, /* 0xc7e9 */ { true, 0xc7e9, 0xc7e9 }, /* 0xc7ea */ { true, 0xc7ea, 0xc7ea }, /* 0xc7eb */ { true, 0xc7eb, 0xc7eb }, /* 0xc7ec */ { true, 0xc7ec, 0xc7ec }, /* 0xc7ed */ { true, 0xc7ed, 0xc7ed }, /* 0xc7ee */ { true, 0xc7ee, 0xc7ee }, /* 0xc7ef */ { true, 0xc7ef, 0xc7ef }, /* 0xc7f0 */ { true, 0xc7f0, 0xc7f0 }, /* 0xc7f1 */ { true, 0xc7f1, 0xc7f1 }, /* 0xc7f2 */ { true, 0xc7f2, 0xc7f2 }, /* 0xc7f3 */ { true, 0xc7f3, 0xc7f3 }, /* 0xc7f4 */ { true, 0xc7f4, 0xc7f4 }, /* 0xc7f5 */ { true, 0xc7f5, 0xc7f5 }, /* 0xc7f6 */ { true, 0xc7f6, 0xc7f6 }, /* 0xc7f7 */ { true, 0xc7f7, 0xc7f7 }, /* 0xc7f8 */ { true, 0xc7f8, 0xc7f8 }, /* 0xc7f9 */ { true, 0xc7f9, 0xc7f9 }, /* 0xc7fa */ { true, 0xc7fa, 0xc7fa }, /* 0xc7fb */ { true, 0xc7fb, 0xc7fb }, /* 0xc7fc */ { true, 0xc7fc, 0xc7fc }, /* 0xc7fd */ { true, 0xc7fd, 0xc7fd }, /* 0xc7fe */ { true, 0xc7fe, 0xc7fe }, /* 0xc7ff */ { true, 0xc7ff, 0xc7ff }, /* 0xc800 */ { true, 0xc800, 0xc800 }, /* 0xc801 */ { true, 0xc801, 0xc801 }, /* 0xc802 */ { true, 0xc802, 0xc802 }, /* 0xc803 */ { true, 0xc803, 0xc803 }, /* 0xc804 */ { true, 0xc804, 0xc804 }, /* 0xc805 */ { true, 0xc805, 0xc805 }, /* 0xc806 */ { true, 0xc806, 0xc806 }, /* 0xc807 */ { true, 0xc807, 0xc807 }, /* 0xc808 */ { true, 0xc808, 0xc808 }, /* 0xc809 */ { true, 0xc809, 0xc809 }, /* 0xc80a */ { true, 0xc80a, 0xc80a }, /* 0xc80b */ { true, 0xc80b, 0xc80b }, /* 0xc80c */ { true, 0xc80c, 0xc80c }, /* 0xc80d */ { true, 0xc80d, 0xc80d }, /* 0xc80e */ { true, 0xc80e, 0xc80e }, /* 0xc80f */ { true, 0xc80f, 0xc80f }, /* 0xc810 */ { true, 0xc810, 0xc810 }, /* 0xc811 */ { true, 0xc811, 0xc811 }, /* 0xc812 */ { true, 0xc812, 0xc812 }, /* 0xc813 */ { true, 0xc813, 0xc813 }, /* 0xc814 */ { true, 0xc814, 0xc814 }, /* 0xc815 */ { true, 0xc815, 0xc815 }, /* 0xc816 */ { true, 0xc816, 0xc816 }, /* 0xc817 */ { true, 0xc817, 0xc817 }, /* 0xc818 */ { true, 0xc818, 0xc818 }, /* 0xc819 */ { true, 0xc819, 0xc819 }, /* 0xc81a */ { true, 0xc81a, 0xc81a }, /* 0xc81b */ { true, 0xc81b, 0xc81b }, /* 0xc81c */ { true, 0xc81c, 0xc81c }, /* 0xc81d */ { true, 0xc81d, 0xc81d }, /* 0xc81e */ { true, 0xc81e, 0xc81e }, /* 0xc81f */ { true, 0xc81f, 0xc81f }, /* 0xc820 */ { true, 0xc820, 0xc820 }, /* 0xc821 */ { true, 0xc821, 0xc821 }, /* 0xc822 */ { true, 0xc822, 0xc822 }, /* 0xc823 */ { true, 0xc823, 0xc823 }, /* 0xc824 */ { true, 0xc824, 0xc824 }, /* 0xc825 */ { true, 0xc825, 0xc825 }, /* 0xc826 */ { true, 0xc826, 0xc826 }, /* 0xc827 */ { true, 0xc827, 0xc827 }, /* 0xc828 */ { true, 0xc828, 0xc828 }, /* 0xc829 */ { true, 0xc829, 0xc829 }, /* 0xc82a */ { true, 0xc82a, 0xc82a }, /* 0xc82b */ { true, 0xc82b, 0xc82b }, /* 0xc82c */ { true, 0xc82c, 0xc82c }, /* 0xc82d */ { true, 0xc82d, 0xc82d }, /* 0xc82e */ { true, 0xc82e, 0xc82e }, /* 0xc82f */ { true, 0xc82f, 0xc82f }, /* 0xc830 */ { true, 0xc830, 0xc830 }, /* 0xc831 */ { true, 0xc831, 0xc831 }, /* 0xc832 */ { true, 0xc832, 0xc832 }, /* 0xc833 */ { true, 0xc833, 0xc833 }, /* 0xc834 */ { true, 0xc834, 0xc834 }, /* 0xc835 */ { true, 0xc835, 0xc835 }, /* 0xc836 */ { true, 0xc836, 0xc836 }, /* 0xc837 */ { true, 0xc837, 0xc837 }, /* 0xc838 */ { true, 0xc838, 0xc838 }, /* 0xc839 */ { true, 0xc839, 0xc839 }, /* 0xc83a */ { true, 0xc83a, 0xc83a }, /* 0xc83b */ { true, 0xc83b, 0xc83b }, /* 0xc83c */ { true, 0xc83c, 0xc83c }, /* 0xc83d */ { true, 0xc83d, 0xc83d }, /* 0xc83e */ { true, 0xc83e, 0xc83e }, /* 0xc83f */ { true, 0xc83f, 0xc83f }, /* 0xc840 */ { true, 0xc840, 0xc840 }, /* 0xc841 */ { true, 0xc841, 0xc841 }, /* 0xc842 */ { true, 0xc842, 0xc842 }, /* 0xc843 */ { true, 0xc843, 0xc843 }, /* 0xc844 */ { true, 0xc844, 0xc844 }, /* 0xc845 */ { true, 0xc845, 0xc845 }, /* 0xc846 */ { true, 0xc846, 0xc846 }, /* 0xc847 */ { true, 0xc847, 0xc847 }, /* 0xc848 */ { true, 0xc848, 0xc848 }, /* 0xc849 */ { true, 0xc849, 0xc849 }, /* 0xc84a */ { true, 0xc84a, 0xc84a }, /* 0xc84b */ { true, 0xc84b, 0xc84b }, /* 0xc84c */ { true, 0xc84c, 0xc84c }, /* 0xc84d */ { true, 0xc84d, 0xc84d }, /* 0xc84e */ { true, 0xc84e, 0xc84e }, /* 0xc84f */ { true, 0xc84f, 0xc84f }, /* 0xc850 */ { true, 0xc850, 0xc850 }, /* 0xc851 */ { true, 0xc851, 0xc851 }, /* 0xc852 */ { true, 0xc852, 0xc852 }, /* 0xc853 */ { true, 0xc853, 0xc853 }, /* 0xc854 */ { true, 0xc854, 0xc854 }, /* 0xc855 */ { true, 0xc855, 0xc855 }, /* 0xc856 */ { true, 0xc856, 0xc856 }, /* 0xc857 */ { true, 0xc857, 0xc857 }, /* 0xc858 */ { true, 0xc858, 0xc858 }, /* 0xc859 */ { true, 0xc859, 0xc859 }, /* 0xc85a */ { true, 0xc85a, 0xc85a }, /* 0xc85b */ { true, 0xc85b, 0xc85b }, /* 0xc85c */ { true, 0xc85c, 0xc85c }, /* 0xc85d */ { true, 0xc85d, 0xc85d }, /* 0xc85e */ { true, 0xc85e, 0xc85e }, /* 0xc85f */ { true, 0xc85f, 0xc85f }, /* 0xc860 */ { true, 0xc860, 0xc860 }, /* 0xc861 */ { true, 0xc861, 0xc861 }, /* 0xc862 */ { true, 0xc862, 0xc862 }, /* 0xc863 */ { true, 0xc863, 0xc863 }, /* 0xc864 */ { true, 0xc864, 0xc864 }, /* 0xc865 */ { true, 0xc865, 0xc865 }, /* 0xc866 */ { true, 0xc866, 0xc866 }, /* 0xc867 */ { true, 0xc867, 0xc867 }, /* 0xc868 */ { true, 0xc868, 0xc868 }, /* 0xc869 */ { true, 0xc869, 0xc869 }, /* 0xc86a */ { true, 0xc86a, 0xc86a }, /* 0xc86b */ { true, 0xc86b, 0xc86b }, /* 0xc86c */ { true, 0xc86c, 0xc86c }, /* 0xc86d */ { true, 0xc86d, 0xc86d }, /* 0xc86e */ { true, 0xc86e, 0xc86e }, /* 0xc86f */ { true, 0xc86f, 0xc86f }, /* 0xc870 */ { true, 0xc870, 0xc870 }, /* 0xc871 */ { true, 0xc871, 0xc871 }, /* 0xc872 */ { true, 0xc872, 0xc872 }, /* 0xc873 */ { true, 0xc873, 0xc873 }, /* 0xc874 */ { true, 0xc874, 0xc874 }, /* 0xc875 */ { true, 0xc875, 0xc875 }, /* 0xc876 */ { true, 0xc876, 0xc876 }, /* 0xc877 */ { true, 0xc877, 0xc877 }, /* 0xc878 */ { true, 0xc878, 0xc878 }, /* 0xc879 */ { true, 0xc879, 0xc879 }, /* 0xc87a */ { true, 0xc87a, 0xc87a }, /* 0xc87b */ { true, 0xc87b, 0xc87b }, /* 0xc87c */ { true, 0xc87c, 0xc87c }, /* 0xc87d */ { true, 0xc87d, 0xc87d }, /* 0xc87e */ { true, 0xc87e, 0xc87e }, /* 0xc87f */ { true, 0xc87f, 0xc87f }, /* 0xc880 */ { true, 0xc880, 0xc880 }, /* 0xc881 */ { true, 0xc881, 0xc881 }, /* 0xc882 */ { true, 0xc882, 0xc882 }, /* 0xc883 */ { true, 0xc883, 0xc883 }, /* 0xc884 */ { true, 0xc884, 0xc884 }, /* 0xc885 */ { true, 0xc885, 0xc885 }, /* 0xc886 */ { true, 0xc886, 0xc886 }, /* 0xc887 */ { true, 0xc887, 0xc887 }, /* 0xc888 */ { true, 0xc888, 0xc888 }, /* 0xc889 */ { true, 0xc889, 0xc889 }, /* 0xc88a */ { true, 0xc88a, 0xc88a }, /* 0xc88b */ { true, 0xc88b, 0xc88b }, /* 0xc88c */ { true, 0xc88c, 0xc88c }, /* 0xc88d */ { true, 0xc88d, 0xc88d }, /* 0xc88e */ { true, 0xc88e, 0xc88e }, /* 0xc88f */ { true, 0xc88f, 0xc88f }, /* 0xc890 */ { true, 0xc890, 0xc890 }, /* 0xc891 */ { true, 0xc891, 0xc891 }, /* 0xc892 */ { true, 0xc892, 0xc892 }, /* 0xc893 */ { true, 0xc893, 0xc893 }, /* 0xc894 */ { true, 0xc894, 0xc894 }, /* 0xc895 */ { true, 0xc895, 0xc895 }, /* 0xc896 */ { true, 0xc896, 0xc896 }, /* 0xc897 */ { true, 0xc897, 0xc897 }, /* 0xc898 */ { true, 0xc898, 0xc898 }, /* 0xc899 */ { true, 0xc899, 0xc899 }, /* 0xc89a */ { true, 0xc89a, 0xc89a }, /* 0xc89b */ { true, 0xc89b, 0xc89b }, /* 0xc89c */ { true, 0xc89c, 0xc89c }, /* 0xc89d */ { true, 0xc89d, 0xc89d }, /* 0xc89e */ { true, 0xc89e, 0xc89e }, /* 0xc89f */ { true, 0xc89f, 0xc89f }, /* 0xc8a0 */ { true, 0xc8a0, 0xc8a0 }, /* 0xc8a1 */ { true, 0xc8a1, 0xc8a1 }, /* 0xc8a2 */ { true, 0xc8a2, 0xc8a2 }, /* 0xc8a3 */ { true, 0xc8a3, 0xc8a3 }, /* 0xc8a4 */ { true, 0xc8a4, 0xc8a4 }, /* 0xc8a5 */ { true, 0xc8a5, 0xc8a5 }, /* 0xc8a6 */ { true, 0xc8a6, 0xc8a6 }, /* 0xc8a7 */ { true, 0xc8a7, 0xc8a7 }, /* 0xc8a8 */ { true, 0xc8a8, 0xc8a8 }, /* 0xc8a9 */ { true, 0xc8a9, 0xc8a9 }, /* 0xc8aa */ { true, 0xc8aa, 0xc8aa }, /* 0xc8ab */ { true, 0xc8ab, 0xc8ab }, /* 0xc8ac */ { true, 0xc8ac, 0xc8ac }, /* 0xc8ad */ { true, 0xc8ad, 0xc8ad }, /* 0xc8ae */ { true, 0xc8ae, 0xc8ae }, /* 0xc8af */ { true, 0xc8af, 0xc8af }, /* 0xc8b0 */ { true, 0xc8b0, 0xc8b0 }, /* 0xc8b1 */ { true, 0xc8b1, 0xc8b1 }, /* 0xc8b2 */ { true, 0xc8b2, 0xc8b2 }, /* 0xc8b3 */ { true, 0xc8b3, 0xc8b3 }, /* 0xc8b4 */ { true, 0xc8b4, 0xc8b4 }, /* 0xc8b5 */ { true, 0xc8b5, 0xc8b5 }, /* 0xc8b6 */ { true, 0xc8b6, 0xc8b6 }, /* 0xc8b7 */ { true, 0xc8b7, 0xc8b7 }, /* 0xc8b8 */ { true, 0xc8b8, 0xc8b8 }, /* 0xc8b9 */ { true, 0xc8b9, 0xc8b9 }, /* 0xc8ba */ { true, 0xc8ba, 0xc8ba }, /* 0xc8bb */ { true, 0xc8bb, 0xc8bb }, /* 0xc8bc */ { true, 0xc8bc, 0xc8bc }, /* 0xc8bd */ { true, 0xc8bd, 0xc8bd }, /* 0xc8be */ { true, 0xc8be, 0xc8be }, /* 0xc8bf */ { true, 0xc8bf, 0xc8bf }, /* 0xc8c0 */ { true, 0xc8c0, 0xc8c0 }, /* 0xc8c1 */ { true, 0xc8c1, 0xc8c1 }, /* 0xc8c2 */ { true, 0xc8c2, 0xc8c2 }, /* 0xc8c3 */ { true, 0xc8c3, 0xc8c3 }, /* 0xc8c4 */ { true, 0xc8c4, 0xc8c4 }, /* 0xc8c5 */ { true, 0xc8c5, 0xc8c5 }, /* 0xc8c6 */ { true, 0xc8c6, 0xc8c6 }, /* 0xc8c7 */ { true, 0xc8c7, 0xc8c7 }, /* 0xc8c8 */ { true, 0xc8c8, 0xc8c8 }, /* 0xc8c9 */ { true, 0xc8c9, 0xc8c9 }, /* 0xc8ca */ { true, 0xc8ca, 0xc8ca }, /* 0xc8cb */ { true, 0xc8cb, 0xc8cb }, /* 0xc8cc */ { true, 0xc8cc, 0xc8cc }, /* 0xc8cd */ { true, 0xc8cd, 0xc8cd }, /* 0xc8ce */ { true, 0xc8ce, 0xc8ce }, /* 0xc8cf */ { true, 0xc8cf, 0xc8cf }, /* 0xc8d0 */ { true, 0xc8d0, 0xc8d0 }, /* 0xc8d1 */ { true, 0xc8d1, 0xc8d1 }, /* 0xc8d2 */ { true, 0xc8d2, 0xc8d2 }, /* 0xc8d3 */ { true, 0xc8d3, 0xc8d3 }, /* 0xc8d4 */ { true, 0xc8d4, 0xc8d4 }, /* 0xc8d5 */ { true, 0xc8d5, 0xc8d5 }, /* 0xc8d6 */ { true, 0xc8d6, 0xc8d6 }, /* 0xc8d7 */ { true, 0xc8d7, 0xc8d7 }, /* 0xc8d8 */ { true, 0xc8d8, 0xc8d8 }, /* 0xc8d9 */ { true, 0xc8d9, 0xc8d9 }, /* 0xc8da */ { true, 0xc8da, 0xc8da }, /* 0xc8db */ { true, 0xc8db, 0xc8db }, /* 0xc8dc */ { true, 0xc8dc, 0xc8dc }, /* 0xc8dd */ { true, 0xc8dd, 0xc8dd }, /* 0xc8de */ { true, 0xc8de, 0xc8de }, /* 0xc8df */ { true, 0xc8df, 0xc8df }, /* 0xc8e0 */ { true, 0xc8e0, 0xc8e0 }, /* 0xc8e1 */ { true, 0xc8e1, 0xc8e1 }, /* 0xc8e2 */ { true, 0xc8e2, 0xc8e2 }, /* 0xc8e3 */ { true, 0xc8e3, 0xc8e3 }, /* 0xc8e4 */ { true, 0xc8e4, 0xc8e4 }, /* 0xc8e5 */ { true, 0xc8e5, 0xc8e5 }, /* 0xc8e6 */ { true, 0xc8e6, 0xc8e6 }, /* 0xc8e7 */ { true, 0xc8e7, 0xc8e7 }, /* 0xc8e8 */ { true, 0xc8e8, 0xc8e8 }, /* 0xc8e9 */ { true, 0xc8e9, 0xc8e9 }, /* 0xc8ea */ { true, 0xc8ea, 0xc8ea }, /* 0xc8eb */ { true, 0xc8eb, 0xc8eb }, /* 0xc8ec */ { true, 0xc8ec, 0xc8ec }, /* 0xc8ed */ { true, 0xc8ed, 0xc8ed }, /* 0xc8ee */ { true, 0xc8ee, 0xc8ee }, /* 0xc8ef */ { true, 0xc8ef, 0xc8ef }, /* 0xc8f0 */ { true, 0xc8f0, 0xc8f0 }, /* 0xc8f1 */ { true, 0xc8f1, 0xc8f1 }, /* 0xc8f2 */ { true, 0xc8f2, 0xc8f2 }, /* 0xc8f3 */ { true, 0xc8f3, 0xc8f3 }, /* 0xc8f4 */ { true, 0xc8f4, 0xc8f4 }, /* 0xc8f5 */ { true, 0xc8f5, 0xc8f5 }, /* 0xc8f6 */ { true, 0xc8f6, 0xc8f6 }, /* 0xc8f7 */ { true, 0xc8f7, 0xc8f7 }, /* 0xc8f8 */ { true, 0xc8f8, 0xc8f8 }, /* 0xc8f9 */ { true, 0xc8f9, 0xc8f9 }, /* 0xc8fa */ { true, 0xc8fa, 0xc8fa }, /* 0xc8fb */ { true, 0xc8fb, 0xc8fb }, /* 0xc8fc */ { true, 0xc8fc, 0xc8fc }, /* 0xc8fd */ { true, 0xc8fd, 0xc8fd }, /* 0xc8fe */ { true, 0xc8fe, 0xc8fe }, /* 0xc8ff */ { true, 0xc8ff, 0xc8ff }, /* 0xc900 */ { true, 0xc900, 0xc900 }, /* 0xc901 */ { true, 0xc901, 0xc901 }, /* 0xc902 */ { true, 0xc902, 0xc902 }, /* 0xc903 */ { true, 0xc903, 0xc903 }, /* 0xc904 */ { true, 0xc904, 0xc904 }, /* 0xc905 */ { true, 0xc905, 0xc905 }, /* 0xc906 */ { true, 0xc906, 0xc906 }, /* 0xc907 */ { true, 0xc907, 0xc907 }, /* 0xc908 */ { true, 0xc908, 0xc908 }, /* 0xc909 */ { true, 0xc909, 0xc909 }, /* 0xc90a */ { true, 0xc90a, 0xc90a }, /* 0xc90b */ { true, 0xc90b, 0xc90b }, /* 0xc90c */ { true, 0xc90c, 0xc90c }, /* 0xc90d */ { true, 0xc90d, 0xc90d }, /* 0xc90e */ { true, 0xc90e, 0xc90e }, /* 0xc90f */ { true, 0xc90f, 0xc90f }, /* 0xc910 */ { true, 0xc910, 0xc910 }, /* 0xc911 */ { true, 0xc911, 0xc911 }, /* 0xc912 */ { true, 0xc912, 0xc912 }, /* 0xc913 */ { true, 0xc913, 0xc913 }, /* 0xc914 */ { true, 0xc914, 0xc914 }, /* 0xc915 */ { true, 0xc915, 0xc915 }, /* 0xc916 */ { true, 0xc916, 0xc916 }, /* 0xc917 */ { true, 0xc917, 0xc917 }, /* 0xc918 */ { true, 0xc918, 0xc918 }, /* 0xc919 */ { true, 0xc919, 0xc919 }, /* 0xc91a */ { true, 0xc91a, 0xc91a }, /* 0xc91b */ { true, 0xc91b, 0xc91b }, /* 0xc91c */ { true, 0xc91c, 0xc91c }, /* 0xc91d */ { true, 0xc91d, 0xc91d }, /* 0xc91e */ { true, 0xc91e, 0xc91e }, /* 0xc91f */ { true, 0xc91f, 0xc91f }, /* 0xc920 */ { true, 0xc920, 0xc920 }, /* 0xc921 */ { true, 0xc921, 0xc921 }, /* 0xc922 */ { true, 0xc922, 0xc922 }, /* 0xc923 */ { true, 0xc923, 0xc923 }, /* 0xc924 */ { true, 0xc924, 0xc924 }, /* 0xc925 */ { true, 0xc925, 0xc925 }, /* 0xc926 */ { true, 0xc926, 0xc926 }, /* 0xc927 */ { true, 0xc927, 0xc927 }, /* 0xc928 */ { true, 0xc928, 0xc928 }, /* 0xc929 */ { true, 0xc929, 0xc929 }, /* 0xc92a */ { true, 0xc92a, 0xc92a }, /* 0xc92b */ { true, 0xc92b, 0xc92b }, /* 0xc92c */ { true, 0xc92c, 0xc92c }, /* 0xc92d */ { true, 0xc92d, 0xc92d }, /* 0xc92e */ { true, 0xc92e, 0xc92e }, /* 0xc92f */ { true, 0xc92f, 0xc92f }, /* 0xc930 */ { true, 0xc930, 0xc930 }, /* 0xc931 */ { true, 0xc931, 0xc931 }, /* 0xc932 */ { true, 0xc932, 0xc932 }, /* 0xc933 */ { true, 0xc933, 0xc933 }, /* 0xc934 */ { true, 0xc934, 0xc934 }, /* 0xc935 */ { true, 0xc935, 0xc935 }, /* 0xc936 */ { true, 0xc936, 0xc936 }, /* 0xc937 */ { true, 0xc937, 0xc937 }, /* 0xc938 */ { true, 0xc938, 0xc938 }, /* 0xc939 */ { true, 0xc939, 0xc939 }, /* 0xc93a */ { true, 0xc93a, 0xc93a }, /* 0xc93b */ { true, 0xc93b, 0xc93b }, /* 0xc93c */ { true, 0xc93c, 0xc93c }, /* 0xc93d */ { true, 0xc93d, 0xc93d }, /* 0xc93e */ { true, 0xc93e, 0xc93e }, /* 0xc93f */ { true, 0xc93f, 0xc93f }, /* 0xc940 */ { true, 0xc940, 0xc940 }, /* 0xc941 */ { true, 0xc941, 0xc941 }, /* 0xc942 */ { true, 0xc942, 0xc942 }, /* 0xc943 */ { true, 0xc943, 0xc943 }, /* 0xc944 */ { true, 0xc944, 0xc944 }, /* 0xc945 */ { true, 0xc945, 0xc945 }, /* 0xc946 */ { true, 0xc946, 0xc946 }, /* 0xc947 */ { true, 0xc947, 0xc947 }, /* 0xc948 */ { true, 0xc948, 0xc948 }, /* 0xc949 */ { true, 0xc949, 0xc949 }, /* 0xc94a */ { true, 0xc94a, 0xc94a }, /* 0xc94b */ { true, 0xc94b, 0xc94b }, /* 0xc94c */ { true, 0xc94c, 0xc94c }, /* 0xc94d */ { true, 0xc94d, 0xc94d }, /* 0xc94e */ { true, 0xc94e, 0xc94e }, /* 0xc94f */ { true, 0xc94f, 0xc94f }, /* 0xc950 */ { true, 0xc950, 0xc950 }, /* 0xc951 */ { true, 0xc951, 0xc951 }, /* 0xc952 */ { true, 0xc952, 0xc952 }, /* 0xc953 */ { true, 0xc953, 0xc953 }, /* 0xc954 */ { true, 0xc954, 0xc954 }, /* 0xc955 */ { true, 0xc955, 0xc955 }, /* 0xc956 */ { true, 0xc956, 0xc956 }, /* 0xc957 */ { true, 0xc957, 0xc957 }, /* 0xc958 */ { true, 0xc958, 0xc958 }, /* 0xc959 */ { true, 0xc959, 0xc959 }, /* 0xc95a */ { true, 0xc95a, 0xc95a }, /* 0xc95b */ { true, 0xc95b, 0xc95b }, /* 0xc95c */ { true, 0xc95c, 0xc95c }, /* 0xc95d */ { true, 0xc95d, 0xc95d }, /* 0xc95e */ { true, 0xc95e, 0xc95e }, /* 0xc95f */ { true, 0xc95f, 0xc95f }, /* 0xc960 */ { true, 0xc960, 0xc960 }, /* 0xc961 */ { true, 0xc961, 0xc961 }, /* 0xc962 */ { true, 0xc962, 0xc962 }, /* 0xc963 */ { true, 0xc963, 0xc963 }, /* 0xc964 */ { true, 0xc964, 0xc964 }, /* 0xc965 */ { true, 0xc965, 0xc965 }, /* 0xc966 */ { true, 0xc966, 0xc966 }, /* 0xc967 */ { true, 0xc967, 0xc967 }, /* 0xc968 */ { true, 0xc968, 0xc968 }, /* 0xc969 */ { true, 0xc969, 0xc969 }, /* 0xc96a */ { true, 0xc96a, 0xc96a }, /* 0xc96b */ { true, 0xc96b, 0xc96b }, /* 0xc96c */ { true, 0xc96c, 0xc96c }, /* 0xc96d */ { true, 0xc96d, 0xc96d }, /* 0xc96e */ { true, 0xc96e, 0xc96e }, /* 0xc96f */ { true, 0xc96f, 0xc96f }, /* 0xc970 */ { true, 0xc970, 0xc970 }, /* 0xc971 */ { true, 0xc971, 0xc971 }, /* 0xc972 */ { true, 0xc972, 0xc972 }, /* 0xc973 */ { true, 0xc973, 0xc973 }, /* 0xc974 */ { true, 0xc974, 0xc974 }, /* 0xc975 */ { true, 0xc975, 0xc975 }, /* 0xc976 */ { true, 0xc976, 0xc976 }, /* 0xc977 */ { true, 0xc977, 0xc977 }, /* 0xc978 */ { true, 0xc978, 0xc978 }, /* 0xc979 */ { true, 0xc979, 0xc979 }, /* 0xc97a */ { true, 0xc97a, 0xc97a }, /* 0xc97b */ { true, 0xc97b, 0xc97b }, /* 0xc97c */ { true, 0xc97c, 0xc97c }, /* 0xc97d */ { true, 0xc97d, 0xc97d }, /* 0xc97e */ { true, 0xc97e, 0xc97e }, /* 0xc97f */ { true, 0xc97f, 0xc97f }, /* 0xc980 */ { true, 0xc980, 0xc980 }, /* 0xc981 */ { true, 0xc981, 0xc981 }, /* 0xc982 */ { true, 0xc982, 0xc982 }, /* 0xc983 */ { true, 0xc983, 0xc983 }, /* 0xc984 */ { true, 0xc984, 0xc984 }, /* 0xc985 */ { true, 0xc985, 0xc985 }, /* 0xc986 */ { true, 0xc986, 0xc986 }, /* 0xc987 */ { true, 0xc987, 0xc987 }, /* 0xc988 */ { true, 0xc988, 0xc988 }, /* 0xc989 */ { true, 0xc989, 0xc989 }, /* 0xc98a */ { true, 0xc98a, 0xc98a }, /* 0xc98b */ { true, 0xc98b, 0xc98b }, /* 0xc98c */ { true, 0xc98c, 0xc98c }, /* 0xc98d */ { true, 0xc98d, 0xc98d }, /* 0xc98e */ { true, 0xc98e, 0xc98e }, /* 0xc98f */ { true, 0xc98f, 0xc98f }, /* 0xc990 */ { true, 0xc990, 0xc990 }, /* 0xc991 */ { true, 0xc991, 0xc991 }, /* 0xc992 */ { true, 0xc992, 0xc992 }, /* 0xc993 */ { true, 0xc993, 0xc993 }, /* 0xc994 */ { true, 0xc994, 0xc994 }, /* 0xc995 */ { true, 0xc995, 0xc995 }, /* 0xc996 */ { true, 0xc996, 0xc996 }, /* 0xc997 */ { true, 0xc997, 0xc997 }, /* 0xc998 */ { true, 0xc998, 0xc998 }, /* 0xc999 */ { true, 0xc999, 0xc999 }, /* 0xc99a */ { true, 0xc99a, 0xc99a }, /* 0xc99b */ { true, 0xc99b, 0xc99b }, /* 0xc99c */ { true, 0xc99c, 0xc99c }, /* 0xc99d */ { true, 0xc99d, 0xc99d }, /* 0xc99e */ { true, 0xc99e, 0xc99e }, /* 0xc99f */ { true, 0xc99f, 0xc99f }, /* 0xc9a0 */ { true, 0xc9a0, 0xc9a0 }, /* 0xc9a1 */ { true, 0xc9a1, 0xc9a1 }, /* 0xc9a2 */ { true, 0xc9a2, 0xc9a2 }, /* 0xc9a3 */ { true, 0xc9a3, 0xc9a3 }, /* 0xc9a4 */ { true, 0xc9a4, 0xc9a4 }, /* 0xc9a5 */ { true, 0xc9a5, 0xc9a5 }, /* 0xc9a6 */ { true, 0xc9a6, 0xc9a6 }, /* 0xc9a7 */ { true, 0xc9a7, 0xc9a7 }, /* 0xc9a8 */ { true, 0xc9a8, 0xc9a8 }, /* 0xc9a9 */ { true, 0xc9a9, 0xc9a9 }, /* 0xc9aa */ { true, 0xc9aa, 0xc9aa }, /* 0xc9ab */ { true, 0xc9ab, 0xc9ab }, /* 0xc9ac */ { true, 0xc9ac, 0xc9ac }, /* 0xc9ad */ { true, 0xc9ad, 0xc9ad }, /* 0xc9ae */ { true, 0xc9ae, 0xc9ae }, /* 0xc9af */ { true, 0xc9af, 0xc9af }, /* 0xc9b0 */ { true, 0xc9b0, 0xc9b0 }, /* 0xc9b1 */ { true, 0xc9b1, 0xc9b1 }, /* 0xc9b2 */ { true, 0xc9b2, 0xc9b2 }, /* 0xc9b3 */ { true, 0xc9b3, 0xc9b3 }, /* 0xc9b4 */ { true, 0xc9b4, 0xc9b4 }, /* 0xc9b5 */ { true, 0xc9b5, 0xc9b5 }, /* 0xc9b6 */ { true, 0xc9b6, 0xc9b6 }, /* 0xc9b7 */ { true, 0xc9b7, 0xc9b7 }, /* 0xc9b8 */ { true, 0xc9b8, 0xc9b8 }, /* 0xc9b9 */ { true, 0xc9b9, 0xc9b9 }, /* 0xc9ba */ { true, 0xc9ba, 0xc9ba }, /* 0xc9bb */ { true, 0xc9bb, 0xc9bb }, /* 0xc9bc */ { true, 0xc9bc, 0xc9bc }, /* 0xc9bd */ { true, 0xc9bd, 0xc9bd }, /* 0xc9be */ { true, 0xc9be, 0xc9be }, /* 0xc9bf */ { true, 0xc9bf, 0xc9bf }, /* 0xc9c0 */ { true, 0xc9c0, 0xc9c0 }, /* 0xc9c1 */ { true, 0xc9c1, 0xc9c1 }, /* 0xc9c2 */ { true, 0xc9c2, 0xc9c2 }, /* 0xc9c3 */ { true, 0xc9c3, 0xc9c3 }, /* 0xc9c4 */ { true, 0xc9c4, 0xc9c4 }, /* 0xc9c5 */ { true, 0xc9c5, 0xc9c5 }, /* 0xc9c6 */ { true, 0xc9c6, 0xc9c6 }, /* 0xc9c7 */ { true, 0xc9c7, 0xc9c7 }, /* 0xc9c8 */ { true, 0xc9c8, 0xc9c8 }, /* 0xc9c9 */ { true, 0xc9c9, 0xc9c9 }, /* 0xc9ca */ { true, 0xc9ca, 0xc9ca }, /* 0xc9cb */ { true, 0xc9cb, 0xc9cb }, /* 0xc9cc */ { true, 0xc9cc, 0xc9cc }, /* 0xc9cd */ { true, 0xc9cd, 0xc9cd }, /* 0xc9ce */ { true, 0xc9ce, 0xc9ce }, /* 0xc9cf */ { true, 0xc9cf, 0xc9cf }, /* 0xc9d0 */ { true, 0xc9d0, 0xc9d0 }, /* 0xc9d1 */ { true, 0xc9d1, 0xc9d1 }, /* 0xc9d2 */ { true, 0xc9d2, 0xc9d2 }, /* 0xc9d3 */ { true, 0xc9d3, 0xc9d3 }, /* 0xc9d4 */ { true, 0xc9d4, 0xc9d4 }, /* 0xc9d5 */ { true, 0xc9d5, 0xc9d5 }, /* 0xc9d6 */ { true, 0xc9d6, 0xc9d6 }, /* 0xc9d7 */ { true, 0xc9d7, 0xc9d7 }, /* 0xc9d8 */ { true, 0xc9d8, 0xc9d8 }, /* 0xc9d9 */ { true, 0xc9d9, 0xc9d9 }, /* 0xc9da */ { true, 0xc9da, 0xc9da }, /* 0xc9db */ { true, 0xc9db, 0xc9db }, /* 0xc9dc */ { true, 0xc9dc, 0xc9dc }, /* 0xc9dd */ { true, 0xc9dd, 0xc9dd }, /* 0xc9de */ { true, 0xc9de, 0xc9de }, /* 0xc9df */ { true, 0xc9df, 0xc9df }, /* 0xc9e0 */ { true, 0xc9e0, 0xc9e0 }, /* 0xc9e1 */ { true, 0xc9e1, 0xc9e1 }, /* 0xc9e2 */ { true, 0xc9e2, 0xc9e2 }, /* 0xc9e3 */ { true, 0xc9e3, 0xc9e3 }, /* 0xc9e4 */ { true, 0xc9e4, 0xc9e4 }, /* 0xc9e5 */ { true, 0xc9e5, 0xc9e5 }, /* 0xc9e6 */ { true, 0xc9e6, 0xc9e6 }, /* 0xc9e7 */ { true, 0xc9e7, 0xc9e7 }, /* 0xc9e8 */ { true, 0xc9e8, 0xc9e8 }, /* 0xc9e9 */ { true, 0xc9e9, 0xc9e9 }, /* 0xc9ea */ { true, 0xc9ea, 0xc9ea }, /* 0xc9eb */ { true, 0xc9eb, 0xc9eb }, /* 0xc9ec */ { true, 0xc9ec, 0xc9ec }, /* 0xc9ed */ { true, 0xc9ed, 0xc9ed }, /* 0xc9ee */ { true, 0xc9ee, 0xc9ee }, /* 0xc9ef */ { true, 0xc9ef, 0xc9ef }, /* 0xc9f0 */ { true, 0xc9f0, 0xc9f0 }, /* 0xc9f1 */ { true, 0xc9f1, 0xc9f1 }, /* 0xc9f2 */ { true, 0xc9f2, 0xc9f2 }, /* 0xc9f3 */ { true, 0xc9f3, 0xc9f3 }, /* 0xc9f4 */ { true, 0xc9f4, 0xc9f4 }, /* 0xc9f5 */ { true, 0xc9f5, 0xc9f5 }, /* 0xc9f6 */ { true, 0xc9f6, 0xc9f6 }, /* 0xc9f7 */ { true, 0xc9f7, 0xc9f7 }, /* 0xc9f8 */ { true, 0xc9f8, 0xc9f8 }, /* 0xc9f9 */ { true, 0xc9f9, 0xc9f9 }, /* 0xc9fa */ { true, 0xc9fa, 0xc9fa }, /* 0xc9fb */ { true, 0xc9fb, 0xc9fb }, /* 0xc9fc */ { true, 0xc9fc, 0xc9fc }, /* 0xc9fd */ { true, 0xc9fd, 0xc9fd }, /* 0xc9fe */ { true, 0xc9fe, 0xc9fe }, /* 0xc9ff */ { true, 0xc9ff, 0xc9ff }, /* 0xca00 */ { true, 0xca00, 0xca00 }, /* 0xca01 */ { true, 0xca01, 0xca01 }, /* 0xca02 */ { true, 0xca02, 0xca02 }, /* 0xca03 */ { true, 0xca03, 0xca03 }, /* 0xca04 */ { true, 0xca04, 0xca04 }, /* 0xca05 */ { true, 0xca05, 0xca05 }, /* 0xca06 */ { true, 0xca06, 0xca06 }, /* 0xca07 */ { true, 0xca07, 0xca07 }, /* 0xca08 */ { true, 0xca08, 0xca08 }, /* 0xca09 */ { true, 0xca09, 0xca09 }, /* 0xca0a */ { true, 0xca0a, 0xca0a }, /* 0xca0b */ { true, 0xca0b, 0xca0b }, /* 0xca0c */ { true, 0xca0c, 0xca0c }, /* 0xca0d */ { true, 0xca0d, 0xca0d }, /* 0xca0e */ { true, 0xca0e, 0xca0e }, /* 0xca0f */ { true, 0xca0f, 0xca0f }, /* 0xca10 */ { true, 0xca10, 0xca10 }, /* 0xca11 */ { true, 0xca11, 0xca11 }, /* 0xca12 */ { true, 0xca12, 0xca12 }, /* 0xca13 */ { true, 0xca13, 0xca13 }, /* 0xca14 */ { true, 0xca14, 0xca14 }, /* 0xca15 */ { true, 0xca15, 0xca15 }, /* 0xca16 */ { true, 0xca16, 0xca16 }, /* 0xca17 */ { true, 0xca17, 0xca17 }, /* 0xca18 */ { true, 0xca18, 0xca18 }, /* 0xca19 */ { true, 0xca19, 0xca19 }, /* 0xca1a */ { true, 0xca1a, 0xca1a }, /* 0xca1b */ { true, 0xca1b, 0xca1b }, /* 0xca1c */ { true, 0xca1c, 0xca1c }, /* 0xca1d */ { true, 0xca1d, 0xca1d }, /* 0xca1e */ { true, 0xca1e, 0xca1e }, /* 0xca1f */ { true, 0xca1f, 0xca1f }, /* 0xca20 */ { true, 0xca20, 0xca20 }, /* 0xca21 */ { true, 0xca21, 0xca21 }, /* 0xca22 */ { true, 0xca22, 0xca22 }, /* 0xca23 */ { true, 0xca23, 0xca23 }, /* 0xca24 */ { true, 0xca24, 0xca24 }, /* 0xca25 */ { true, 0xca25, 0xca25 }, /* 0xca26 */ { true, 0xca26, 0xca26 }, /* 0xca27 */ { true, 0xca27, 0xca27 }, /* 0xca28 */ { true, 0xca28, 0xca28 }, /* 0xca29 */ { true, 0xca29, 0xca29 }, /* 0xca2a */ { true, 0xca2a, 0xca2a }, /* 0xca2b */ { true, 0xca2b, 0xca2b }, /* 0xca2c */ { true, 0xca2c, 0xca2c }, /* 0xca2d */ { true, 0xca2d, 0xca2d }, /* 0xca2e */ { true, 0xca2e, 0xca2e }, /* 0xca2f */ { true, 0xca2f, 0xca2f }, /* 0xca30 */ { true, 0xca30, 0xca30 }, /* 0xca31 */ { true, 0xca31, 0xca31 }, /* 0xca32 */ { true, 0xca32, 0xca32 }, /* 0xca33 */ { true, 0xca33, 0xca33 }, /* 0xca34 */ { true, 0xca34, 0xca34 }, /* 0xca35 */ { true, 0xca35, 0xca35 }, /* 0xca36 */ { true, 0xca36, 0xca36 }, /* 0xca37 */ { true, 0xca37, 0xca37 }, /* 0xca38 */ { true, 0xca38, 0xca38 }, /* 0xca39 */ { true, 0xca39, 0xca39 }, /* 0xca3a */ { true, 0xca3a, 0xca3a }, /* 0xca3b */ { true, 0xca3b, 0xca3b }, /* 0xca3c */ { true, 0xca3c, 0xca3c }, /* 0xca3d */ { true, 0xca3d, 0xca3d }, /* 0xca3e */ { true, 0xca3e, 0xca3e }, /* 0xca3f */ { true, 0xca3f, 0xca3f }, /* 0xca40 */ { true, 0xca40, 0xca40 }, /* 0xca41 */ { true, 0xca41, 0xca41 }, /* 0xca42 */ { true, 0xca42, 0xca42 }, /* 0xca43 */ { true, 0xca43, 0xca43 }, /* 0xca44 */ { true, 0xca44, 0xca44 }, /* 0xca45 */ { true, 0xca45, 0xca45 }, /* 0xca46 */ { true, 0xca46, 0xca46 }, /* 0xca47 */ { true, 0xca47, 0xca47 }, /* 0xca48 */ { true, 0xca48, 0xca48 }, /* 0xca49 */ { true, 0xca49, 0xca49 }, /* 0xca4a */ { true, 0xca4a, 0xca4a }, /* 0xca4b */ { true, 0xca4b, 0xca4b }, /* 0xca4c */ { true, 0xca4c, 0xca4c }, /* 0xca4d */ { true, 0xca4d, 0xca4d }, /* 0xca4e */ { true, 0xca4e, 0xca4e }, /* 0xca4f */ { true, 0xca4f, 0xca4f }, /* 0xca50 */ { true, 0xca50, 0xca50 }, /* 0xca51 */ { true, 0xca51, 0xca51 }, /* 0xca52 */ { true, 0xca52, 0xca52 }, /* 0xca53 */ { true, 0xca53, 0xca53 }, /* 0xca54 */ { true, 0xca54, 0xca54 }, /* 0xca55 */ { true, 0xca55, 0xca55 }, /* 0xca56 */ { true, 0xca56, 0xca56 }, /* 0xca57 */ { true, 0xca57, 0xca57 }, /* 0xca58 */ { true, 0xca58, 0xca58 }, /* 0xca59 */ { true, 0xca59, 0xca59 }, /* 0xca5a */ { true, 0xca5a, 0xca5a }, /* 0xca5b */ { true, 0xca5b, 0xca5b }, /* 0xca5c */ { true, 0xca5c, 0xca5c }, /* 0xca5d */ { true, 0xca5d, 0xca5d }, /* 0xca5e */ { true, 0xca5e, 0xca5e }, /* 0xca5f */ { true, 0xca5f, 0xca5f }, /* 0xca60 */ { true, 0xca60, 0xca60 }, /* 0xca61 */ { true, 0xca61, 0xca61 }, /* 0xca62 */ { true, 0xca62, 0xca62 }, /* 0xca63 */ { true, 0xca63, 0xca63 }, /* 0xca64 */ { true, 0xca64, 0xca64 }, /* 0xca65 */ { true, 0xca65, 0xca65 }, /* 0xca66 */ { true, 0xca66, 0xca66 }, /* 0xca67 */ { true, 0xca67, 0xca67 }, /* 0xca68 */ { true, 0xca68, 0xca68 }, /* 0xca69 */ { true, 0xca69, 0xca69 }, /* 0xca6a */ { true, 0xca6a, 0xca6a }, /* 0xca6b */ { true, 0xca6b, 0xca6b }, /* 0xca6c */ { true, 0xca6c, 0xca6c }, /* 0xca6d */ { true, 0xca6d, 0xca6d }, /* 0xca6e */ { true, 0xca6e, 0xca6e }, /* 0xca6f */ { true, 0xca6f, 0xca6f }, /* 0xca70 */ { true, 0xca70, 0xca70 }, /* 0xca71 */ { true, 0xca71, 0xca71 }, /* 0xca72 */ { true, 0xca72, 0xca72 }, /* 0xca73 */ { true, 0xca73, 0xca73 }, /* 0xca74 */ { true, 0xca74, 0xca74 }, /* 0xca75 */ { true, 0xca75, 0xca75 }, /* 0xca76 */ { true, 0xca76, 0xca76 }, /* 0xca77 */ { true, 0xca77, 0xca77 }, /* 0xca78 */ { true, 0xca78, 0xca78 }, /* 0xca79 */ { true, 0xca79, 0xca79 }, /* 0xca7a */ { true, 0xca7a, 0xca7a }, /* 0xca7b */ { true, 0xca7b, 0xca7b }, /* 0xca7c */ { true, 0xca7c, 0xca7c }, /* 0xca7d */ { true, 0xca7d, 0xca7d }, /* 0xca7e */ { true, 0xca7e, 0xca7e }, /* 0xca7f */ { true, 0xca7f, 0xca7f }, /* 0xca80 */ { true, 0xca80, 0xca80 }, /* 0xca81 */ { true, 0xca81, 0xca81 }, /* 0xca82 */ { true, 0xca82, 0xca82 }, /* 0xca83 */ { true, 0xca83, 0xca83 }, /* 0xca84 */ { true, 0xca84, 0xca84 }, /* 0xca85 */ { true, 0xca85, 0xca85 }, /* 0xca86 */ { true, 0xca86, 0xca86 }, /* 0xca87 */ { true, 0xca87, 0xca87 }, /* 0xca88 */ { true, 0xca88, 0xca88 }, /* 0xca89 */ { true, 0xca89, 0xca89 }, /* 0xca8a */ { true, 0xca8a, 0xca8a }, /* 0xca8b */ { true, 0xca8b, 0xca8b }, /* 0xca8c */ { true, 0xca8c, 0xca8c }, /* 0xca8d */ { true, 0xca8d, 0xca8d }, /* 0xca8e */ { true, 0xca8e, 0xca8e }, /* 0xca8f */ { true, 0xca8f, 0xca8f }, /* 0xca90 */ { true, 0xca90, 0xca90 }, /* 0xca91 */ { true, 0xca91, 0xca91 }, /* 0xca92 */ { true, 0xca92, 0xca92 }, /* 0xca93 */ { true, 0xca93, 0xca93 }, /* 0xca94 */ { true, 0xca94, 0xca94 }, /* 0xca95 */ { true, 0xca95, 0xca95 }, /* 0xca96 */ { true, 0xca96, 0xca96 }, /* 0xca97 */ { true, 0xca97, 0xca97 }, /* 0xca98 */ { true, 0xca98, 0xca98 }, /* 0xca99 */ { true, 0xca99, 0xca99 }, /* 0xca9a */ { true, 0xca9a, 0xca9a }, /* 0xca9b */ { true, 0xca9b, 0xca9b }, /* 0xca9c */ { true, 0xca9c, 0xca9c }, /* 0xca9d */ { true, 0xca9d, 0xca9d }, /* 0xca9e */ { true, 0xca9e, 0xca9e }, /* 0xca9f */ { true, 0xca9f, 0xca9f }, /* 0xcaa0 */ { true, 0xcaa0, 0xcaa0 }, /* 0xcaa1 */ { true, 0xcaa1, 0xcaa1 }, /* 0xcaa2 */ { true, 0xcaa2, 0xcaa2 }, /* 0xcaa3 */ { true, 0xcaa3, 0xcaa3 }, /* 0xcaa4 */ { true, 0xcaa4, 0xcaa4 }, /* 0xcaa5 */ { true, 0xcaa5, 0xcaa5 }, /* 0xcaa6 */ { true, 0xcaa6, 0xcaa6 }, /* 0xcaa7 */ { true, 0xcaa7, 0xcaa7 }, /* 0xcaa8 */ { true, 0xcaa8, 0xcaa8 }, /* 0xcaa9 */ { true, 0xcaa9, 0xcaa9 }, /* 0xcaaa */ { true, 0xcaaa, 0xcaaa }, /* 0xcaab */ { true, 0xcaab, 0xcaab }, /* 0xcaac */ { true, 0xcaac, 0xcaac }, /* 0xcaad */ { true, 0xcaad, 0xcaad }, /* 0xcaae */ { true, 0xcaae, 0xcaae }, /* 0xcaaf */ { true, 0xcaaf, 0xcaaf }, /* 0xcab0 */ { true, 0xcab0, 0xcab0 }, /* 0xcab1 */ { true, 0xcab1, 0xcab1 }, /* 0xcab2 */ { true, 0xcab2, 0xcab2 }, /* 0xcab3 */ { true, 0xcab3, 0xcab3 }, /* 0xcab4 */ { true, 0xcab4, 0xcab4 }, /* 0xcab5 */ { true, 0xcab5, 0xcab5 }, /* 0xcab6 */ { true, 0xcab6, 0xcab6 }, /* 0xcab7 */ { true, 0xcab7, 0xcab7 }, /* 0xcab8 */ { true, 0xcab8, 0xcab8 }, /* 0xcab9 */ { true, 0xcab9, 0xcab9 }, /* 0xcaba */ { true, 0xcaba, 0xcaba }, /* 0xcabb */ { true, 0xcabb, 0xcabb }, /* 0xcabc */ { true, 0xcabc, 0xcabc }, /* 0xcabd */ { true, 0xcabd, 0xcabd }, /* 0xcabe */ { true, 0xcabe, 0xcabe }, /* 0xcabf */ { true, 0xcabf, 0xcabf }, /* 0xcac0 */ { true, 0xcac0, 0xcac0 }, /* 0xcac1 */ { true, 0xcac1, 0xcac1 }, /* 0xcac2 */ { true, 0xcac2, 0xcac2 }, /* 0xcac3 */ { true, 0xcac3, 0xcac3 }, /* 0xcac4 */ { true, 0xcac4, 0xcac4 }, /* 0xcac5 */ { true, 0xcac5, 0xcac5 }, /* 0xcac6 */ { true, 0xcac6, 0xcac6 }, /* 0xcac7 */ { true, 0xcac7, 0xcac7 }, /* 0xcac8 */ { true, 0xcac8, 0xcac8 }, /* 0xcac9 */ { true, 0xcac9, 0xcac9 }, /* 0xcaca */ { true, 0xcaca, 0xcaca }, /* 0xcacb */ { true, 0xcacb, 0xcacb }, /* 0xcacc */ { true, 0xcacc, 0xcacc }, /* 0xcacd */ { true, 0xcacd, 0xcacd }, /* 0xcace */ { true, 0xcace, 0xcace }, /* 0xcacf */ { true, 0xcacf, 0xcacf }, /* 0xcad0 */ { true, 0xcad0, 0xcad0 }, /* 0xcad1 */ { true, 0xcad1, 0xcad1 }, /* 0xcad2 */ { true, 0xcad2, 0xcad2 }, /* 0xcad3 */ { true, 0xcad3, 0xcad3 }, /* 0xcad4 */ { true, 0xcad4, 0xcad4 }, /* 0xcad5 */ { true, 0xcad5, 0xcad5 }, /* 0xcad6 */ { true, 0xcad6, 0xcad6 }, /* 0xcad7 */ { true, 0xcad7, 0xcad7 }, /* 0xcad8 */ { true, 0xcad8, 0xcad8 }, /* 0xcad9 */ { true, 0xcad9, 0xcad9 }, /* 0xcada */ { true, 0xcada, 0xcada }, /* 0xcadb */ { true, 0xcadb, 0xcadb }, /* 0xcadc */ { true, 0xcadc, 0xcadc }, /* 0xcadd */ { true, 0xcadd, 0xcadd }, /* 0xcade */ { true, 0xcade, 0xcade }, /* 0xcadf */ { true, 0xcadf, 0xcadf }, /* 0xcae0 */ { true, 0xcae0, 0xcae0 }, /* 0xcae1 */ { true, 0xcae1, 0xcae1 }, /* 0xcae2 */ { true, 0xcae2, 0xcae2 }, /* 0xcae3 */ { true, 0xcae3, 0xcae3 }, /* 0xcae4 */ { true, 0xcae4, 0xcae4 }, /* 0xcae5 */ { true, 0xcae5, 0xcae5 }, /* 0xcae6 */ { true, 0xcae6, 0xcae6 }, /* 0xcae7 */ { true, 0xcae7, 0xcae7 }, /* 0xcae8 */ { true, 0xcae8, 0xcae8 }, /* 0xcae9 */ { true, 0xcae9, 0xcae9 }, /* 0xcaea */ { true, 0xcaea, 0xcaea }, /* 0xcaeb */ { true, 0xcaeb, 0xcaeb }, /* 0xcaec */ { true, 0xcaec, 0xcaec }, /* 0xcaed */ { true, 0xcaed, 0xcaed }, /* 0xcaee */ { true, 0xcaee, 0xcaee }, /* 0xcaef */ { true, 0xcaef, 0xcaef }, /* 0xcaf0 */ { true, 0xcaf0, 0xcaf0 }, /* 0xcaf1 */ { true, 0xcaf1, 0xcaf1 }, /* 0xcaf2 */ { true, 0xcaf2, 0xcaf2 }, /* 0xcaf3 */ { true, 0xcaf3, 0xcaf3 }, /* 0xcaf4 */ { true, 0xcaf4, 0xcaf4 }, /* 0xcaf5 */ { true, 0xcaf5, 0xcaf5 }, /* 0xcaf6 */ { true, 0xcaf6, 0xcaf6 }, /* 0xcaf7 */ { true, 0xcaf7, 0xcaf7 }, /* 0xcaf8 */ { true, 0xcaf8, 0xcaf8 }, /* 0xcaf9 */ { true, 0xcaf9, 0xcaf9 }, /* 0xcafa */ { true, 0xcafa, 0xcafa }, /* 0xcafb */ { true, 0xcafb, 0xcafb }, /* 0xcafc */ { true, 0xcafc, 0xcafc }, /* 0xcafd */ { true, 0xcafd, 0xcafd }, /* 0xcafe */ { true, 0xcafe, 0xcafe }, /* 0xcaff */ { true, 0xcaff, 0xcaff }, /* 0xcb00 */ { true, 0xcb00, 0xcb00 }, /* 0xcb01 */ { true, 0xcb01, 0xcb01 }, /* 0xcb02 */ { true, 0xcb02, 0xcb02 }, /* 0xcb03 */ { true, 0xcb03, 0xcb03 }, /* 0xcb04 */ { true, 0xcb04, 0xcb04 }, /* 0xcb05 */ { true, 0xcb05, 0xcb05 }, /* 0xcb06 */ { true, 0xcb06, 0xcb06 }, /* 0xcb07 */ { true, 0xcb07, 0xcb07 }, /* 0xcb08 */ { true, 0xcb08, 0xcb08 }, /* 0xcb09 */ { true, 0xcb09, 0xcb09 }, /* 0xcb0a */ { true, 0xcb0a, 0xcb0a }, /* 0xcb0b */ { true, 0xcb0b, 0xcb0b }, /* 0xcb0c */ { true, 0xcb0c, 0xcb0c }, /* 0xcb0d */ { true, 0xcb0d, 0xcb0d }, /* 0xcb0e */ { true, 0xcb0e, 0xcb0e }, /* 0xcb0f */ { true, 0xcb0f, 0xcb0f }, /* 0xcb10 */ { true, 0xcb10, 0xcb10 }, /* 0xcb11 */ { true, 0xcb11, 0xcb11 }, /* 0xcb12 */ { true, 0xcb12, 0xcb12 }, /* 0xcb13 */ { true, 0xcb13, 0xcb13 }, /* 0xcb14 */ { true, 0xcb14, 0xcb14 }, /* 0xcb15 */ { true, 0xcb15, 0xcb15 }, /* 0xcb16 */ { true, 0xcb16, 0xcb16 }, /* 0xcb17 */ { true, 0xcb17, 0xcb17 }, /* 0xcb18 */ { true, 0xcb18, 0xcb18 }, /* 0xcb19 */ { true, 0xcb19, 0xcb19 }, /* 0xcb1a */ { true, 0xcb1a, 0xcb1a }, /* 0xcb1b */ { true, 0xcb1b, 0xcb1b }, /* 0xcb1c */ { true, 0xcb1c, 0xcb1c }, /* 0xcb1d */ { true, 0xcb1d, 0xcb1d }, /* 0xcb1e */ { true, 0xcb1e, 0xcb1e }, /* 0xcb1f */ { true, 0xcb1f, 0xcb1f }, /* 0xcb20 */ { true, 0xcb20, 0xcb20 }, /* 0xcb21 */ { true, 0xcb21, 0xcb21 }, /* 0xcb22 */ { true, 0xcb22, 0xcb22 }, /* 0xcb23 */ { true, 0xcb23, 0xcb23 }, /* 0xcb24 */ { true, 0xcb24, 0xcb24 }, /* 0xcb25 */ { true, 0xcb25, 0xcb25 }, /* 0xcb26 */ { true, 0xcb26, 0xcb26 }, /* 0xcb27 */ { true, 0xcb27, 0xcb27 }, /* 0xcb28 */ { true, 0xcb28, 0xcb28 }, /* 0xcb29 */ { true, 0xcb29, 0xcb29 }, /* 0xcb2a */ { true, 0xcb2a, 0xcb2a }, /* 0xcb2b */ { true, 0xcb2b, 0xcb2b }, /* 0xcb2c */ { true, 0xcb2c, 0xcb2c }, /* 0xcb2d */ { true, 0xcb2d, 0xcb2d }, /* 0xcb2e */ { true, 0xcb2e, 0xcb2e }, /* 0xcb2f */ { true, 0xcb2f, 0xcb2f }, /* 0xcb30 */ { true, 0xcb30, 0xcb30 }, /* 0xcb31 */ { true, 0xcb31, 0xcb31 }, /* 0xcb32 */ { true, 0xcb32, 0xcb32 }, /* 0xcb33 */ { true, 0xcb33, 0xcb33 }, /* 0xcb34 */ { true, 0xcb34, 0xcb34 }, /* 0xcb35 */ { true, 0xcb35, 0xcb35 }, /* 0xcb36 */ { true, 0xcb36, 0xcb36 }, /* 0xcb37 */ { true, 0xcb37, 0xcb37 }, /* 0xcb38 */ { true, 0xcb38, 0xcb38 }, /* 0xcb39 */ { true, 0xcb39, 0xcb39 }, /* 0xcb3a */ { true, 0xcb3a, 0xcb3a }, /* 0xcb3b */ { true, 0xcb3b, 0xcb3b }, /* 0xcb3c */ { true, 0xcb3c, 0xcb3c }, /* 0xcb3d */ { true, 0xcb3d, 0xcb3d }, /* 0xcb3e */ { true, 0xcb3e, 0xcb3e }, /* 0xcb3f */ { true, 0xcb3f, 0xcb3f }, /* 0xcb40 */ { true, 0xcb40, 0xcb40 }, /* 0xcb41 */ { true, 0xcb41, 0xcb41 }, /* 0xcb42 */ { true, 0xcb42, 0xcb42 }, /* 0xcb43 */ { true, 0xcb43, 0xcb43 }, /* 0xcb44 */ { true, 0xcb44, 0xcb44 }, /* 0xcb45 */ { true, 0xcb45, 0xcb45 }, /* 0xcb46 */ { true, 0xcb46, 0xcb46 }, /* 0xcb47 */ { true, 0xcb47, 0xcb47 }, /* 0xcb48 */ { true, 0xcb48, 0xcb48 }, /* 0xcb49 */ { true, 0xcb49, 0xcb49 }, /* 0xcb4a */ { true, 0xcb4a, 0xcb4a }, /* 0xcb4b */ { true, 0xcb4b, 0xcb4b }, /* 0xcb4c */ { true, 0xcb4c, 0xcb4c }, /* 0xcb4d */ { true, 0xcb4d, 0xcb4d }, /* 0xcb4e */ { true, 0xcb4e, 0xcb4e }, /* 0xcb4f */ { true, 0xcb4f, 0xcb4f }, /* 0xcb50 */ { true, 0xcb50, 0xcb50 }, /* 0xcb51 */ { true, 0xcb51, 0xcb51 }, /* 0xcb52 */ { true, 0xcb52, 0xcb52 }, /* 0xcb53 */ { true, 0xcb53, 0xcb53 }, /* 0xcb54 */ { true, 0xcb54, 0xcb54 }, /* 0xcb55 */ { true, 0xcb55, 0xcb55 }, /* 0xcb56 */ { true, 0xcb56, 0xcb56 }, /* 0xcb57 */ { true, 0xcb57, 0xcb57 }, /* 0xcb58 */ { true, 0xcb58, 0xcb58 }, /* 0xcb59 */ { true, 0xcb59, 0xcb59 }, /* 0xcb5a */ { true, 0xcb5a, 0xcb5a }, /* 0xcb5b */ { true, 0xcb5b, 0xcb5b }, /* 0xcb5c */ { true, 0xcb5c, 0xcb5c }, /* 0xcb5d */ { true, 0xcb5d, 0xcb5d }, /* 0xcb5e */ { true, 0xcb5e, 0xcb5e }, /* 0xcb5f */ { true, 0xcb5f, 0xcb5f }, /* 0xcb60 */ { true, 0xcb60, 0xcb60 }, /* 0xcb61 */ { true, 0xcb61, 0xcb61 }, /* 0xcb62 */ { true, 0xcb62, 0xcb62 }, /* 0xcb63 */ { true, 0xcb63, 0xcb63 }, /* 0xcb64 */ { true, 0xcb64, 0xcb64 }, /* 0xcb65 */ { true, 0xcb65, 0xcb65 }, /* 0xcb66 */ { true, 0xcb66, 0xcb66 }, /* 0xcb67 */ { true, 0xcb67, 0xcb67 }, /* 0xcb68 */ { true, 0xcb68, 0xcb68 }, /* 0xcb69 */ { true, 0xcb69, 0xcb69 }, /* 0xcb6a */ { true, 0xcb6a, 0xcb6a }, /* 0xcb6b */ { true, 0xcb6b, 0xcb6b }, /* 0xcb6c */ { true, 0xcb6c, 0xcb6c }, /* 0xcb6d */ { true, 0xcb6d, 0xcb6d }, /* 0xcb6e */ { true, 0xcb6e, 0xcb6e }, /* 0xcb6f */ { true, 0xcb6f, 0xcb6f }, /* 0xcb70 */ { true, 0xcb70, 0xcb70 }, /* 0xcb71 */ { true, 0xcb71, 0xcb71 }, /* 0xcb72 */ { true, 0xcb72, 0xcb72 }, /* 0xcb73 */ { true, 0xcb73, 0xcb73 }, /* 0xcb74 */ { true, 0xcb74, 0xcb74 }, /* 0xcb75 */ { true, 0xcb75, 0xcb75 }, /* 0xcb76 */ { true, 0xcb76, 0xcb76 }, /* 0xcb77 */ { true, 0xcb77, 0xcb77 }, /* 0xcb78 */ { true, 0xcb78, 0xcb78 }, /* 0xcb79 */ { true, 0xcb79, 0xcb79 }, /* 0xcb7a */ { true, 0xcb7a, 0xcb7a }, /* 0xcb7b */ { true, 0xcb7b, 0xcb7b }, /* 0xcb7c */ { true, 0xcb7c, 0xcb7c }, /* 0xcb7d */ { true, 0xcb7d, 0xcb7d }, /* 0xcb7e */ { true, 0xcb7e, 0xcb7e }, /* 0xcb7f */ { true, 0xcb7f, 0xcb7f }, /* 0xcb80 */ { true, 0xcb80, 0xcb80 }, /* 0xcb81 */ { true, 0xcb81, 0xcb81 }, /* 0xcb82 */ { true, 0xcb82, 0xcb82 }, /* 0xcb83 */ { true, 0xcb83, 0xcb83 }, /* 0xcb84 */ { true, 0xcb84, 0xcb84 }, /* 0xcb85 */ { true, 0xcb85, 0xcb85 }, /* 0xcb86 */ { true, 0xcb86, 0xcb86 }, /* 0xcb87 */ { true, 0xcb87, 0xcb87 }, /* 0xcb88 */ { true, 0xcb88, 0xcb88 }, /* 0xcb89 */ { true, 0xcb89, 0xcb89 }, /* 0xcb8a */ { true, 0xcb8a, 0xcb8a }, /* 0xcb8b */ { true, 0xcb8b, 0xcb8b }, /* 0xcb8c */ { true, 0xcb8c, 0xcb8c }, /* 0xcb8d */ { true, 0xcb8d, 0xcb8d }, /* 0xcb8e */ { true, 0xcb8e, 0xcb8e }, /* 0xcb8f */ { true, 0xcb8f, 0xcb8f }, /* 0xcb90 */ { true, 0xcb90, 0xcb90 }, /* 0xcb91 */ { true, 0xcb91, 0xcb91 }, /* 0xcb92 */ { true, 0xcb92, 0xcb92 }, /* 0xcb93 */ { true, 0xcb93, 0xcb93 }, /* 0xcb94 */ { true, 0xcb94, 0xcb94 }, /* 0xcb95 */ { true, 0xcb95, 0xcb95 }, /* 0xcb96 */ { true, 0xcb96, 0xcb96 }, /* 0xcb97 */ { true, 0xcb97, 0xcb97 }, /* 0xcb98 */ { true, 0xcb98, 0xcb98 }, /* 0xcb99 */ { true, 0xcb99, 0xcb99 }, /* 0xcb9a */ { true, 0xcb9a, 0xcb9a }, /* 0xcb9b */ { true, 0xcb9b, 0xcb9b }, /* 0xcb9c */ { true, 0xcb9c, 0xcb9c }, /* 0xcb9d */ { true, 0xcb9d, 0xcb9d }, /* 0xcb9e */ { true, 0xcb9e, 0xcb9e }, /* 0xcb9f */ { true, 0xcb9f, 0xcb9f }, /* 0xcba0 */ { true, 0xcba0, 0xcba0 }, /* 0xcba1 */ { true, 0xcba1, 0xcba1 }, /* 0xcba2 */ { true, 0xcba2, 0xcba2 }, /* 0xcba3 */ { true, 0xcba3, 0xcba3 }, /* 0xcba4 */ { true, 0xcba4, 0xcba4 }, /* 0xcba5 */ { true, 0xcba5, 0xcba5 }, /* 0xcba6 */ { true, 0xcba6, 0xcba6 }, /* 0xcba7 */ { true, 0xcba7, 0xcba7 }, /* 0xcba8 */ { true, 0xcba8, 0xcba8 }, /* 0xcba9 */ { true, 0xcba9, 0xcba9 }, /* 0xcbaa */ { true, 0xcbaa, 0xcbaa }, /* 0xcbab */ { true, 0xcbab, 0xcbab }, /* 0xcbac */ { true, 0xcbac, 0xcbac }, /* 0xcbad */ { true, 0xcbad, 0xcbad }, /* 0xcbae */ { true, 0xcbae, 0xcbae }, /* 0xcbaf */ { true, 0xcbaf, 0xcbaf }, /* 0xcbb0 */ { true, 0xcbb0, 0xcbb0 }, /* 0xcbb1 */ { true, 0xcbb1, 0xcbb1 }, /* 0xcbb2 */ { true, 0xcbb2, 0xcbb2 }, /* 0xcbb3 */ { true, 0xcbb3, 0xcbb3 }, /* 0xcbb4 */ { true, 0xcbb4, 0xcbb4 }, /* 0xcbb5 */ { true, 0xcbb5, 0xcbb5 }, /* 0xcbb6 */ { true, 0xcbb6, 0xcbb6 }, /* 0xcbb7 */ { true, 0xcbb7, 0xcbb7 }, /* 0xcbb8 */ { true, 0xcbb8, 0xcbb8 }, /* 0xcbb9 */ { true, 0xcbb9, 0xcbb9 }, /* 0xcbba */ { true, 0xcbba, 0xcbba }, /* 0xcbbb */ { true, 0xcbbb, 0xcbbb }, /* 0xcbbc */ { true, 0xcbbc, 0xcbbc }, /* 0xcbbd */ { true, 0xcbbd, 0xcbbd }, /* 0xcbbe */ { true, 0xcbbe, 0xcbbe }, /* 0xcbbf */ { true, 0xcbbf, 0xcbbf }, /* 0xcbc0 */ { true, 0xcbc0, 0xcbc0 }, /* 0xcbc1 */ { true, 0xcbc1, 0xcbc1 }, /* 0xcbc2 */ { true, 0xcbc2, 0xcbc2 }, /* 0xcbc3 */ { true, 0xcbc3, 0xcbc3 }, /* 0xcbc4 */ { true, 0xcbc4, 0xcbc4 }, /* 0xcbc5 */ { true, 0xcbc5, 0xcbc5 }, /* 0xcbc6 */ { true, 0xcbc6, 0xcbc6 }, /* 0xcbc7 */ { true, 0xcbc7, 0xcbc7 }, /* 0xcbc8 */ { true, 0xcbc8, 0xcbc8 }, /* 0xcbc9 */ { true, 0xcbc9, 0xcbc9 }, /* 0xcbca */ { true, 0xcbca, 0xcbca }, /* 0xcbcb */ { true, 0xcbcb, 0xcbcb }, /* 0xcbcc */ { true, 0xcbcc, 0xcbcc }, /* 0xcbcd */ { true, 0xcbcd, 0xcbcd }, /* 0xcbce */ { true, 0xcbce, 0xcbce }, /* 0xcbcf */ { true, 0xcbcf, 0xcbcf }, /* 0xcbd0 */ { true, 0xcbd0, 0xcbd0 }, /* 0xcbd1 */ { true, 0xcbd1, 0xcbd1 }, /* 0xcbd2 */ { true, 0xcbd2, 0xcbd2 }, /* 0xcbd3 */ { true, 0xcbd3, 0xcbd3 }, /* 0xcbd4 */ { true, 0xcbd4, 0xcbd4 }, /* 0xcbd5 */ { true, 0xcbd5, 0xcbd5 }, /* 0xcbd6 */ { true, 0xcbd6, 0xcbd6 }, /* 0xcbd7 */ { true, 0xcbd7, 0xcbd7 }, /* 0xcbd8 */ { true, 0xcbd8, 0xcbd8 }, /* 0xcbd9 */ { true, 0xcbd9, 0xcbd9 }, /* 0xcbda */ { true, 0xcbda, 0xcbda }, /* 0xcbdb */ { true, 0xcbdb, 0xcbdb }, /* 0xcbdc */ { true, 0xcbdc, 0xcbdc }, /* 0xcbdd */ { true, 0xcbdd, 0xcbdd }, /* 0xcbde */ { true, 0xcbde, 0xcbde }, /* 0xcbdf */ { true, 0xcbdf, 0xcbdf }, /* 0xcbe0 */ { true, 0xcbe0, 0xcbe0 }, /* 0xcbe1 */ { true, 0xcbe1, 0xcbe1 }, /* 0xcbe2 */ { true, 0xcbe2, 0xcbe2 }, /* 0xcbe3 */ { true, 0xcbe3, 0xcbe3 }, /* 0xcbe4 */ { true, 0xcbe4, 0xcbe4 }, /* 0xcbe5 */ { true, 0xcbe5, 0xcbe5 }, /* 0xcbe6 */ { true, 0xcbe6, 0xcbe6 }, /* 0xcbe7 */ { true, 0xcbe7, 0xcbe7 }, /* 0xcbe8 */ { true, 0xcbe8, 0xcbe8 }, /* 0xcbe9 */ { true, 0xcbe9, 0xcbe9 }, /* 0xcbea */ { true, 0xcbea, 0xcbea }, /* 0xcbeb */ { true, 0xcbeb, 0xcbeb }, /* 0xcbec */ { true, 0xcbec, 0xcbec }, /* 0xcbed */ { true, 0xcbed, 0xcbed }, /* 0xcbee */ { true, 0xcbee, 0xcbee }, /* 0xcbef */ { true, 0xcbef, 0xcbef }, /* 0xcbf0 */ { true, 0xcbf0, 0xcbf0 }, /* 0xcbf1 */ { true, 0xcbf1, 0xcbf1 }, /* 0xcbf2 */ { true, 0xcbf2, 0xcbf2 }, /* 0xcbf3 */ { true, 0xcbf3, 0xcbf3 }, /* 0xcbf4 */ { true, 0xcbf4, 0xcbf4 }, /* 0xcbf5 */ { true, 0xcbf5, 0xcbf5 }, /* 0xcbf6 */ { true, 0xcbf6, 0xcbf6 }, /* 0xcbf7 */ { true, 0xcbf7, 0xcbf7 }, /* 0xcbf8 */ { true, 0xcbf8, 0xcbf8 }, /* 0xcbf9 */ { true, 0xcbf9, 0xcbf9 }, /* 0xcbfa */ { true, 0xcbfa, 0xcbfa }, /* 0xcbfb */ { true, 0xcbfb, 0xcbfb }, /* 0xcbfc */ { true, 0xcbfc, 0xcbfc }, /* 0xcbfd */ { true, 0xcbfd, 0xcbfd }, /* 0xcbfe */ { true, 0xcbfe, 0xcbfe }, /* 0xcbff */ { true, 0xcbff, 0xcbff }, /* 0xcc00 */ { true, 0xcc00, 0xcc00 }, /* 0xcc01 */ { true, 0xcc01, 0xcc01 }, /* 0xcc02 */ { true, 0xcc02, 0xcc02 }, /* 0xcc03 */ { true, 0xcc03, 0xcc03 }, /* 0xcc04 */ { true, 0xcc04, 0xcc04 }, /* 0xcc05 */ { true, 0xcc05, 0xcc05 }, /* 0xcc06 */ { true, 0xcc06, 0xcc06 }, /* 0xcc07 */ { true, 0xcc07, 0xcc07 }, /* 0xcc08 */ { true, 0xcc08, 0xcc08 }, /* 0xcc09 */ { true, 0xcc09, 0xcc09 }, /* 0xcc0a */ { true, 0xcc0a, 0xcc0a }, /* 0xcc0b */ { true, 0xcc0b, 0xcc0b }, /* 0xcc0c */ { true, 0xcc0c, 0xcc0c }, /* 0xcc0d */ { true, 0xcc0d, 0xcc0d }, /* 0xcc0e */ { true, 0xcc0e, 0xcc0e }, /* 0xcc0f */ { true, 0xcc0f, 0xcc0f }, /* 0xcc10 */ { true, 0xcc10, 0xcc10 }, /* 0xcc11 */ { true, 0xcc11, 0xcc11 }, /* 0xcc12 */ { true, 0xcc12, 0xcc12 }, /* 0xcc13 */ { true, 0xcc13, 0xcc13 }, /* 0xcc14 */ { true, 0xcc14, 0xcc14 }, /* 0xcc15 */ { true, 0xcc15, 0xcc15 }, /* 0xcc16 */ { true, 0xcc16, 0xcc16 }, /* 0xcc17 */ { true, 0xcc17, 0xcc17 }, /* 0xcc18 */ { true, 0xcc18, 0xcc18 }, /* 0xcc19 */ { true, 0xcc19, 0xcc19 }, /* 0xcc1a */ { true, 0xcc1a, 0xcc1a }, /* 0xcc1b */ { true, 0xcc1b, 0xcc1b }, /* 0xcc1c */ { true, 0xcc1c, 0xcc1c }, /* 0xcc1d */ { true, 0xcc1d, 0xcc1d }, /* 0xcc1e */ { true, 0xcc1e, 0xcc1e }, /* 0xcc1f */ { true, 0xcc1f, 0xcc1f }, /* 0xcc20 */ { true, 0xcc20, 0xcc20 }, /* 0xcc21 */ { true, 0xcc21, 0xcc21 }, /* 0xcc22 */ { true, 0xcc22, 0xcc22 }, /* 0xcc23 */ { true, 0xcc23, 0xcc23 }, /* 0xcc24 */ { true, 0xcc24, 0xcc24 }, /* 0xcc25 */ { true, 0xcc25, 0xcc25 }, /* 0xcc26 */ { true, 0xcc26, 0xcc26 }, /* 0xcc27 */ { true, 0xcc27, 0xcc27 }, /* 0xcc28 */ { true, 0xcc28, 0xcc28 }, /* 0xcc29 */ { true, 0xcc29, 0xcc29 }, /* 0xcc2a */ { true, 0xcc2a, 0xcc2a }, /* 0xcc2b */ { true, 0xcc2b, 0xcc2b }, /* 0xcc2c */ { true, 0xcc2c, 0xcc2c }, /* 0xcc2d */ { true, 0xcc2d, 0xcc2d }, /* 0xcc2e */ { true, 0xcc2e, 0xcc2e }, /* 0xcc2f */ { true, 0xcc2f, 0xcc2f }, /* 0xcc30 */ { true, 0xcc30, 0xcc30 }, /* 0xcc31 */ { true, 0xcc31, 0xcc31 }, /* 0xcc32 */ { true, 0xcc32, 0xcc32 }, /* 0xcc33 */ { true, 0xcc33, 0xcc33 }, /* 0xcc34 */ { true, 0xcc34, 0xcc34 }, /* 0xcc35 */ { true, 0xcc35, 0xcc35 }, /* 0xcc36 */ { true, 0xcc36, 0xcc36 }, /* 0xcc37 */ { true, 0xcc37, 0xcc37 }, /* 0xcc38 */ { true, 0xcc38, 0xcc38 }, /* 0xcc39 */ { true, 0xcc39, 0xcc39 }, /* 0xcc3a */ { true, 0xcc3a, 0xcc3a }, /* 0xcc3b */ { true, 0xcc3b, 0xcc3b }, /* 0xcc3c */ { true, 0xcc3c, 0xcc3c }, /* 0xcc3d */ { true, 0xcc3d, 0xcc3d }, /* 0xcc3e */ { true, 0xcc3e, 0xcc3e }, /* 0xcc3f */ { true, 0xcc3f, 0xcc3f }, /* 0xcc40 */ { true, 0xcc40, 0xcc40 }, /* 0xcc41 */ { true, 0xcc41, 0xcc41 }, /* 0xcc42 */ { true, 0xcc42, 0xcc42 }, /* 0xcc43 */ { true, 0xcc43, 0xcc43 }, /* 0xcc44 */ { true, 0xcc44, 0xcc44 }, /* 0xcc45 */ { true, 0xcc45, 0xcc45 }, /* 0xcc46 */ { true, 0xcc46, 0xcc46 }, /* 0xcc47 */ { true, 0xcc47, 0xcc47 }, /* 0xcc48 */ { true, 0xcc48, 0xcc48 }, /* 0xcc49 */ { true, 0xcc49, 0xcc49 }, /* 0xcc4a */ { true, 0xcc4a, 0xcc4a }, /* 0xcc4b */ { true, 0xcc4b, 0xcc4b }, /* 0xcc4c */ { true, 0xcc4c, 0xcc4c }, /* 0xcc4d */ { true, 0xcc4d, 0xcc4d }, /* 0xcc4e */ { true, 0xcc4e, 0xcc4e }, /* 0xcc4f */ { true, 0xcc4f, 0xcc4f }, /* 0xcc50 */ { true, 0xcc50, 0xcc50 }, /* 0xcc51 */ { true, 0xcc51, 0xcc51 }, /* 0xcc52 */ { true, 0xcc52, 0xcc52 }, /* 0xcc53 */ { true, 0xcc53, 0xcc53 }, /* 0xcc54 */ { true, 0xcc54, 0xcc54 }, /* 0xcc55 */ { true, 0xcc55, 0xcc55 }, /* 0xcc56 */ { true, 0xcc56, 0xcc56 }, /* 0xcc57 */ { true, 0xcc57, 0xcc57 }, /* 0xcc58 */ { true, 0xcc58, 0xcc58 }, /* 0xcc59 */ { true, 0xcc59, 0xcc59 }, /* 0xcc5a */ { true, 0xcc5a, 0xcc5a }, /* 0xcc5b */ { true, 0xcc5b, 0xcc5b }, /* 0xcc5c */ { true, 0xcc5c, 0xcc5c }, /* 0xcc5d */ { true, 0xcc5d, 0xcc5d }, /* 0xcc5e */ { true, 0xcc5e, 0xcc5e }, /* 0xcc5f */ { true, 0xcc5f, 0xcc5f }, /* 0xcc60 */ { true, 0xcc60, 0xcc60 }, /* 0xcc61 */ { true, 0xcc61, 0xcc61 }, /* 0xcc62 */ { true, 0xcc62, 0xcc62 }, /* 0xcc63 */ { true, 0xcc63, 0xcc63 }, /* 0xcc64 */ { true, 0xcc64, 0xcc64 }, /* 0xcc65 */ { true, 0xcc65, 0xcc65 }, /* 0xcc66 */ { true, 0xcc66, 0xcc66 }, /* 0xcc67 */ { true, 0xcc67, 0xcc67 }, /* 0xcc68 */ { true, 0xcc68, 0xcc68 }, /* 0xcc69 */ { true, 0xcc69, 0xcc69 }, /* 0xcc6a */ { true, 0xcc6a, 0xcc6a }, /* 0xcc6b */ { true, 0xcc6b, 0xcc6b }, /* 0xcc6c */ { true, 0xcc6c, 0xcc6c }, /* 0xcc6d */ { true, 0xcc6d, 0xcc6d }, /* 0xcc6e */ { true, 0xcc6e, 0xcc6e }, /* 0xcc6f */ { true, 0xcc6f, 0xcc6f }, /* 0xcc70 */ { true, 0xcc70, 0xcc70 }, /* 0xcc71 */ { true, 0xcc71, 0xcc71 }, /* 0xcc72 */ { true, 0xcc72, 0xcc72 }, /* 0xcc73 */ { true, 0xcc73, 0xcc73 }, /* 0xcc74 */ { true, 0xcc74, 0xcc74 }, /* 0xcc75 */ { true, 0xcc75, 0xcc75 }, /* 0xcc76 */ { true, 0xcc76, 0xcc76 }, /* 0xcc77 */ { true, 0xcc77, 0xcc77 }, /* 0xcc78 */ { true, 0xcc78, 0xcc78 }, /* 0xcc79 */ { true, 0xcc79, 0xcc79 }, /* 0xcc7a */ { true, 0xcc7a, 0xcc7a }, /* 0xcc7b */ { true, 0xcc7b, 0xcc7b }, /* 0xcc7c */ { true, 0xcc7c, 0xcc7c }, /* 0xcc7d */ { true, 0xcc7d, 0xcc7d }, /* 0xcc7e */ { true, 0xcc7e, 0xcc7e }, /* 0xcc7f */ { true, 0xcc7f, 0xcc7f }, /* 0xcc80 */ { true, 0xcc80, 0xcc80 }, /* 0xcc81 */ { true, 0xcc81, 0xcc81 }, /* 0xcc82 */ { true, 0xcc82, 0xcc82 }, /* 0xcc83 */ { true, 0xcc83, 0xcc83 }, /* 0xcc84 */ { true, 0xcc84, 0xcc84 }, /* 0xcc85 */ { true, 0xcc85, 0xcc85 }, /* 0xcc86 */ { true, 0xcc86, 0xcc86 }, /* 0xcc87 */ { true, 0xcc87, 0xcc87 }, /* 0xcc88 */ { true, 0xcc88, 0xcc88 }, /* 0xcc89 */ { true, 0xcc89, 0xcc89 }, /* 0xcc8a */ { true, 0xcc8a, 0xcc8a }, /* 0xcc8b */ { true, 0xcc8b, 0xcc8b }, /* 0xcc8c */ { true, 0xcc8c, 0xcc8c }, /* 0xcc8d */ { true, 0xcc8d, 0xcc8d }, /* 0xcc8e */ { true, 0xcc8e, 0xcc8e }, /* 0xcc8f */ { true, 0xcc8f, 0xcc8f }, /* 0xcc90 */ { true, 0xcc90, 0xcc90 }, /* 0xcc91 */ { true, 0xcc91, 0xcc91 }, /* 0xcc92 */ { true, 0xcc92, 0xcc92 }, /* 0xcc93 */ { true, 0xcc93, 0xcc93 }, /* 0xcc94 */ { true, 0xcc94, 0xcc94 }, /* 0xcc95 */ { true, 0xcc95, 0xcc95 }, /* 0xcc96 */ { true, 0xcc96, 0xcc96 }, /* 0xcc97 */ { true, 0xcc97, 0xcc97 }, /* 0xcc98 */ { true, 0xcc98, 0xcc98 }, /* 0xcc99 */ { true, 0xcc99, 0xcc99 }, /* 0xcc9a */ { true, 0xcc9a, 0xcc9a }, /* 0xcc9b */ { true, 0xcc9b, 0xcc9b }, /* 0xcc9c */ { true, 0xcc9c, 0xcc9c }, /* 0xcc9d */ { true, 0xcc9d, 0xcc9d }, /* 0xcc9e */ { true, 0xcc9e, 0xcc9e }, /* 0xcc9f */ { true, 0xcc9f, 0xcc9f }, /* 0xcca0 */ { true, 0xcca0, 0xcca0 }, /* 0xcca1 */ { true, 0xcca1, 0xcca1 }, /* 0xcca2 */ { true, 0xcca2, 0xcca2 }, /* 0xcca3 */ { true, 0xcca3, 0xcca3 }, /* 0xcca4 */ { true, 0xcca4, 0xcca4 }, /* 0xcca5 */ { true, 0xcca5, 0xcca5 }, /* 0xcca6 */ { true, 0xcca6, 0xcca6 }, /* 0xcca7 */ { true, 0xcca7, 0xcca7 }, /* 0xcca8 */ { true, 0xcca8, 0xcca8 }, /* 0xcca9 */ { true, 0xcca9, 0xcca9 }, /* 0xccaa */ { true, 0xccaa, 0xccaa }, /* 0xccab */ { true, 0xccab, 0xccab }, /* 0xccac */ { true, 0xccac, 0xccac }, /* 0xccad */ { true, 0xccad, 0xccad }, /* 0xccae */ { true, 0xccae, 0xccae }, /* 0xccaf */ { true, 0xccaf, 0xccaf }, /* 0xccb0 */ { true, 0xccb0, 0xccb0 }, /* 0xccb1 */ { true, 0xccb1, 0xccb1 }, /* 0xccb2 */ { true, 0xccb2, 0xccb2 }, /* 0xccb3 */ { true, 0xccb3, 0xccb3 }, /* 0xccb4 */ { true, 0xccb4, 0xccb4 }, /* 0xccb5 */ { true, 0xccb5, 0xccb5 }, /* 0xccb6 */ { true, 0xccb6, 0xccb6 }, /* 0xccb7 */ { true, 0xccb7, 0xccb7 }, /* 0xccb8 */ { true, 0xccb8, 0xccb8 }, /* 0xccb9 */ { true, 0xccb9, 0xccb9 }, /* 0xccba */ { true, 0xccba, 0xccba }, /* 0xccbb */ { true, 0xccbb, 0xccbb }, /* 0xccbc */ { true, 0xccbc, 0xccbc }, /* 0xccbd */ { true, 0xccbd, 0xccbd }, /* 0xccbe */ { true, 0xccbe, 0xccbe }, /* 0xccbf */ { true, 0xccbf, 0xccbf }, /* 0xccc0 */ { true, 0xccc0, 0xccc0 }, /* 0xccc1 */ { true, 0xccc1, 0xccc1 }, /* 0xccc2 */ { true, 0xccc2, 0xccc2 }, /* 0xccc3 */ { true, 0xccc3, 0xccc3 }, /* 0xccc4 */ { true, 0xccc4, 0xccc4 }, /* 0xccc5 */ { true, 0xccc5, 0xccc5 }, /* 0xccc6 */ { true, 0xccc6, 0xccc6 }, /* 0xccc7 */ { true, 0xccc7, 0xccc7 }, /* 0xccc8 */ { true, 0xccc8, 0xccc8 }, /* 0xccc9 */ { true, 0xccc9, 0xccc9 }, /* 0xccca */ { true, 0xccca, 0xccca }, /* 0xcccb */ { true, 0xcccb, 0xcccb }, /* 0xcccc */ { true, 0xcccc, 0xcccc }, /* 0xcccd */ { true, 0xcccd, 0xcccd }, /* 0xccce */ { true, 0xccce, 0xccce }, /* 0xcccf */ { true, 0xcccf, 0xcccf }, /* 0xccd0 */ { true, 0xccd0, 0xccd0 }, /* 0xccd1 */ { true, 0xccd1, 0xccd1 }, /* 0xccd2 */ { true, 0xccd2, 0xccd2 }, /* 0xccd3 */ { true, 0xccd3, 0xccd3 }, /* 0xccd4 */ { true, 0xccd4, 0xccd4 }, /* 0xccd5 */ { true, 0xccd5, 0xccd5 }, /* 0xccd6 */ { true, 0xccd6, 0xccd6 }, /* 0xccd7 */ { true, 0xccd7, 0xccd7 }, /* 0xccd8 */ { true, 0xccd8, 0xccd8 }, /* 0xccd9 */ { true, 0xccd9, 0xccd9 }, /* 0xccda */ { true, 0xccda, 0xccda }, /* 0xccdb */ { true, 0xccdb, 0xccdb }, /* 0xccdc */ { true, 0xccdc, 0xccdc }, /* 0xccdd */ { true, 0xccdd, 0xccdd }, /* 0xccde */ { true, 0xccde, 0xccde }, /* 0xccdf */ { true, 0xccdf, 0xccdf }, /* 0xcce0 */ { true, 0xcce0, 0xcce0 }, /* 0xcce1 */ { true, 0xcce1, 0xcce1 }, /* 0xcce2 */ { true, 0xcce2, 0xcce2 }, /* 0xcce3 */ { true, 0xcce3, 0xcce3 }, /* 0xcce4 */ { true, 0xcce4, 0xcce4 }, /* 0xcce5 */ { true, 0xcce5, 0xcce5 }, /* 0xcce6 */ { true, 0xcce6, 0xcce6 }, /* 0xcce7 */ { true, 0xcce7, 0xcce7 }, /* 0xcce8 */ { true, 0xcce8, 0xcce8 }, /* 0xcce9 */ { true, 0xcce9, 0xcce9 }, /* 0xccea */ { true, 0xccea, 0xccea }, /* 0xcceb */ { true, 0xcceb, 0xcceb }, /* 0xccec */ { true, 0xccec, 0xccec }, /* 0xcced */ { true, 0xcced, 0xcced }, /* 0xccee */ { true, 0xccee, 0xccee }, /* 0xccef */ { true, 0xccef, 0xccef }, /* 0xccf0 */ { true, 0xccf0, 0xccf0 }, /* 0xccf1 */ { true, 0xccf1, 0xccf1 }, /* 0xccf2 */ { true, 0xccf2, 0xccf2 }, /* 0xccf3 */ { true, 0xccf3, 0xccf3 }, /* 0xccf4 */ { true, 0xccf4, 0xccf4 }, /* 0xccf5 */ { true, 0xccf5, 0xccf5 }, /* 0xccf6 */ { true, 0xccf6, 0xccf6 }, /* 0xccf7 */ { true, 0xccf7, 0xccf7 }, /* 0xccf8 */ { true, 0xccf8, 0xccf8 }, /* 0xccf9 */ { true, 0xccf9, 0xccf9 }, /* 0xccfa */ { true, 0xccfa, 0xccfa }, /* 0xccfb */ { true, 0xccfb, 0xccfb }, /* 0xccfc */ { true, 0xccfc, 0xccfc }, /* 0xccfd */ { true, 0xccfd, 0xccfd }, /* 0xccfe */ { true, 0xccfe, 0xccfe }, /* 0xccff */ { true, 0xccff, 0xccff }, /* 0xcd00 */ { true, 0xcd00, 0xcd00 }, /* 0xcd01 */ { true, 0xcd01, 0xcd01 }, /* 0xcd02 */ { true, 0xcd02, 0xcd02 }, /* 0xcd03 */ { true, 0xcd03, 0xcd03 }, /* 0xcd04 */ { true, 0xcd04, 0xcd04 }, /* 0xcd05 */ { true, 0xcd05, 0xcd05 }, /* 0xcd06 */ { true, 0xcd06, 0xcd06 }, /* 0xcd07 */ { true, 0xcd07, 0xcd07 }, /* 0xcd08 */ { true, 0xcd08, 0xcd08 }, /* 0xcd09 */ { true, 0xcd09, 0xcd09 }, /* 0xcd0a */ { true, 0xcd0a, 0xcd0a }, /* 0xcd0b */ { true, 0xcd0b, 0xcd0b }, /* 0xcd0c */ { true, 0xcd0c, 0xcd0c }, /* 0xcd0d */ { true, 0xcd0d, 0xcd0d }, /* 0xcd0e */ { true, 0xcd0e, 0xcd0e }, /* 0xcd0f */ { true, 0xcd0f, 0xcd0f }, /* 0xcd10 */ { true, 0xcd10, 0xcd10 }, /* 0xcd11 */ { true, 0xcd11, 0xcd11 }, /* 0xcd12 */ { true, 0xcd12, 0xcd12 }, /* 0xcd13 */ { true, 0xcd13, 0xcd13 }, /* 0xcd14 */ { true, 0xcd14, 0xcd14 }, /* 0xcd15 */ { true, 0xcd15, 0xcd15 }, /* 0xcd16 */ { true, 0xcd16, 0xcd16 }, /* 0xcd17 */ { true, 0xcd17, 0xcd17 }, /* 0xcd18 */ { true, 0xcd18, 0xcd18 }, /* 0xcd19 */ { true, 0xcd19, 0xcd19 }, /* 0xcd1a */ { true, 0xcd1a, 0xcd1a }, /* 0xcd1b */ { true, 0xcd1b, 0xcd1b }, /* 0xcd1c */ { true, 0xcd1c, 0xcd1c }, /* 0xcd1d */ { true, 0xcd1d, 0xcd1d }, /* 0xcd1e */ { true, 0xcd1e, 0xcd1e }, /* 0xcd1f */ { true, 0xcd1f, 0xcd1f }, /* 0xcd20 */ { true, 0xcd20, 0xcd20 }, /* 0xcd21 */ { true, 0xcd21, 0xcd21 }, /* 0xcd22 */ { true, 0xcd22, 0xcd22 }, /* 0xcd23 */ { true, 0xcd23, 0xcd23 }, /* 0xcd24 */ { true, 0xcd24, 0xcd24 }, /* 0xcd25 */ { true, 0xcd25, 0xcd25 }, /* 0xcd26 */ { true, 0xcd26, 0xcd26 }, /* 0xcd27 */ { true, 0xcd27, 0xcd27 }, /* 0xcd28 */ { true, 0xcd28, 0xcd28 }, /* 0xcd29 */ { true, 0xcd29, 0xcd29 }, /* 0xcd2a */ { true, 0xcd2a, 0xcd2a }, /* 0xcd2b */ { true, 0xcd2b, 0xcd2b }, /* 0xcd2c */ { true, 0xcd2c, 0xcd2c }, /* 0xcd2d */ { true, 0xcd2d, 0xcd2d }, /* 0xcd2e */ { true, 0xcd2e, 0xcd2e }, /* 0xcd2f */ { true, 0xcd2f, 0xcd2f }, /* 0xcd30 */ { true, 0xcd30, 0xcd30 }, /* 0xcd31 */ { true, 0xcd31, 0xcd31 }, /* 0xcd32 */ { true, 0xcd32, 0xcd32 }, /* 0xcd33 */ { true, 0xcd33, 0xcd33 }, /* 0xcd34 */ { true, 0xcd34, 0xcd34 }, /* 0xcd35 */ { true, 0xcd35, 0xcd35 }, /* 0xcd36 */ { true, 0xcd36, 0xcd36 }, /* 0xcd37 */ { true, 0xcd37, 0xcd37 }, /* 0xcd38 */ { true, 0xcd38, 0xcd38 }, /* 0xcd39 */ { true, 0xcd39, 0xcd39 }, /* 0xcd3a */ { true, 0xcd3a, 0xcd3a }, /* 0xcd3b */ { true, 0xcd3b, 0xcd3b }, /* 0xcd3c */ { true, 0xcd3c, 0xcd3c }, /* 0xcd3d */ { true, 0xcd3d, 0xcd3d }, /* 0xcd3e */ { true, 0xcd3e, 0xcd3e }, /* 0xcd3f */ { true, 0xcd3f, 0xcd3f }, /* 0xcd40 */ { true, 0xcd40, 0xcd40 }, /* 0xcd41 */ { true, 0xcd41, 0xcd41 }, /* 0xcd42 */ { true, 0xcd42, 0xcd42 }, /* 0xcd43 */ { true, 0xcd43, 0xcd43 }, /* 0xcd44 */ { true, 0xcd44, 0xcd44 }, /* 0xcd45 */ { true, 0xcd45, 0xcd45 }, /* 0xcd46 */ { true, 0xcd46, 0xcd46 }, /* 0xcd47 */ { true, 0xcd47, 0xcd47 }, /* 0xcd48 */ { true, 0xcd48, 0xcd48 }, /* 0xcd49 */ { true, 0xcd49, 0xcd49 }, /* 0xcd4a */ { true, 0xcd4a, 0xcd4a }, /* 0xcd4b */ { true, 0xcd4b, 0xcd4b }, /* 0xcd4c */ { true, 0xcd4c, 0xcd4c }, /* 0xcd4d */ { true, 0xcd4d, 0xcd4d }, /* 0xcd4e */ { true, 0xcd4e, 0xcd4e }, /* 0xcd4f */ { true, 0xcd4f, 0xcd4f }, /* 0xcd50 */ { true, 0xcd50, 0xcd50 }, /* 0xcd51 */ { true, 0xcd51, 0xcd51 }, /* 0xcd52 */ { true, 0xcd52, 0xcd52 }, /* 0xcd53 */ { true, 0xcd53, 0xcd53 }, /* 0xcd54 */ { true, 0xcd54, 0xcd54 }, /* 0xcd55 */ { true, 0xcd55, 0xcd55 }, /* 0xcd56 */ { true, 0xcd56, 0xcd56 }, /* 0xcd57 */ { true, 0xcd57, 0xcd57 }, /* 0xcd58 */ { true, 0xcd58, 0xcd58 }, /* 0xcd59 */ { true, 0xcd59, 0xcd59 }, /* 0xcd5a */ { true, 0xcd5a, 0xcd5a }, /* 0xcd5b */ { true, 0xcd5b, 0xcd5b }, /* 0xcd5c */ { true, 0xcd5c, 0xcd5c }, /* 0xcd5d */ { true, 0xcd5d, 0xcd5d }, /* 0xcd5e */ { true, 0xcd5e, 0xcd5e }, /* 0xcd5f */ { true, 0xcd5f, 0xcd5f }, /* 0xcd60 */ { true, 0xcd60, 0xcd60 }, /* 0xcd61 */ { true, 0xcd61, 0xcd61 }, /* 0xcd62 */ { true, 0xcd62, 0xcd62 }, /* 0xcd63 */ { true, 0xcd63, 0xcd63 }, /* 0xcd64 */ { true, 0xcd64, 0xcd64 }, /* 0xcd65 */ { true, 0xcd65, 0xcd65 }, /* 0xcd66 */ { true, 0xcd66, 0xcd66 }, /* 0xcd67 */ { true, 0xcd67, 0xcd67 }, /* 0xcd68 */ { true, 0xcd68, 0xcd68 }, /* 0xcd69 */ { true, 0xcd69, 0xcd69 }, /* 0xcd6a */ { true, 0xcd6a, 0xcd6a }, /* 0xcd6b */ { true, 0xcd6b, 0xcd6b }, /* 0xcd6c */ { true, 0xcd6c, 0xcd6c }, /* 0xcd6d */ { true, 0xcd6d, 0xcd6d }, /* 0xcd6e */ { true, 0xcd6e, 0xcd6e }, /* 0xcd6f */ { true, 0xcd6f, 0xcd6f }, /* 0xcd70 */ { true, 0xcd70, 0xcd70 }, /* 0xcd71 */ { true, 0xcd71, 0xcd71 }, /* 0xcd72 */ { true, 0xcd72, 0xcd72 }, /* 0xcd73 */ { true, 0xcd73, 0xcd73 }, /* 0xcd74 */ { true, 0xcd74, 0xcd74 }, /* 0xcd75 */ { true, 0xcd75, 0xcd75 }, /* 0xcd76 */ { true, 0xcd76, 0xcd76 }, /* 0xcd77 */ { true, 0xcd77, 0xcd77 }, /* 0xcd78 */ { true, 0xcd78, 0xcd78 }, /* 0xcd79 */ { true, 0xcd79, 0xcd79 }, /* 0xcd7a */ { true, 0xcd7a, 0xcd7a }, /* 0xcd7b */ { true, 0xcd7b, 0xcd7b }, /* 0xcd7c */ { true, 0xcd7c, 0xcd7c }, /* 0xcd7d */ { true, 0xcd7d, 0xcd7d }, /* 0xcd7e */ { true, 0xcd7e, 0xcd7e }, /* 0xcd7f */ { true, 0xcd7f, 0xcd7f }, /* 0xcd80 */ { true, 0xcd80, 0xcd80 }, /* 0xcd81 */ { true, 0xcd81, 0xcd81 }, /* 0xcd82 */ { true, 0xcd82, 0xcd82 }, /* 0xcd83 */ { true, 0xcd83, 0xcd83 }, /* 0xcd84 */ { true, 0xcd84, 0xcd84 }, /* 0xcd85 */ { true, 0xcd85, 0xcd85 }, /* 0xcd86 */ { true, 0xcd86, 0xcd86 }, /* 0xcd87 */ { true, 0xcd87, 0xcd87 }, /* 0xcd88 */ { true, 0xcd88, 0xcd88 }, /* 0xcd89 */ { true, 0xcd89, 0xcd89 }, /* 0xcd8a */ { true, 0xcd8a, 0xcd8a }, /* 0xcd8b */ { true, 0xcd8b, 0xcd8b }, /* 0xcd8c */ { true, 0xcd8c, 0xcd8c }, /* 0xcd8d */ { true, 0xcd8d, 0xcd8d }, /* 0xcd8e */ { true, 0xcd8e, 0xcd8e }, /* 0xcd8f */ { true, 0xcd8f, 0xcd8f }, /* 0xcd90 */ { true, 0xcd90, 0xcd90 }, /* 0xcd91 */ { true, 0xcd91, 0xcd91 }, /* 0xcd92 */ { true, 0xcd92, 0xcd92 }, /* 0xcd93 */ { true, 0xcd93, 0xcd93 }, /* 0xcd94 */ { true, 0xcd94, 0xcd94 }, /* 0xcd95 */ { true, 0xcd95, 0xcd95 }, /* 0xcd96 */ { true, 0xcd96, 0xcd96 }, /* 0xcd97 */ { true, 0xcd97, 0xcd97 }, /* 0xcd98 */ { true, 0xcd98, 0xcd98 }, /* 0xcd99 */ { true, 0xcd99, 0xcd99 }, /* 0xcd9a */ { true, 0xcd9a, 0xcd9a }, /* 0xcd9b */ { true, 0xcd9b, 0xcd9b }, /* 0xcd9c */ { true, 0xcd9c, 0xcd9c }, /* 0xcd9d */ { true, 0xcd9d, 0xcd9d }, /* 0xcd9e */ { true, 0xcd9e, 0xcd9e }, /* 0xcd9f */ { true, 0xcd9f, 0xcd9f }, /* 0xcda0 */ { true, 0xcda0, 0xcda0 }, /* 0xcda1 */ { true, 0xcda1, 0xcda1 }, /* 0xcda2 */ { true, 0xcda2, 0xcda2 }, /* 0xcda3 */ { true, 0xcda3, 0xcda3 }, /* 0xcda4 */ { true, 0xcda4, 0xcda4 }, /* 0xcda5 */ { true, 0xcda5, 0xcda5 }, /* 0xcda6 */ { true, 0xcda6, 0xcda6 }, /* 0xcda7 */ { true, 0xcda7, 0xcda7 }, /* 0xcda8 */ { true, 0xcda8, 0xcda8 }, /* 0xcda9 */ { true, 0xcda9, 0xcda9 }, /* 0xcdaa */ { true, 0xcdaa, 0xcdaa }, /* 0xcdab */ { true, 0xcdab, 0xcdab }, /* 0xcdac */ { true, 0xcdac, 0xcdac }, /* 0xcdad */ { true, 0xcdad, 0xcdad }, /* 0xcdae */ { true, 0xcdae, 0xcdae }, /* 0xcdaf */ { true, 0xcdaf, 0xcdaf }, /* 0xcdb0 */ { true, 0xcdb0, 0xcdb0 }, /* 0xcdb1 */ { true, 0xcdb1, 0xcdb1 }, /* 0xcdb2 */ { true, 0xcdb2, 0xcdb2 }, /* 0xcdb3 */ { true, 0xcdb3, 0xcdb3 }, /* 0xcdb4 */ { true, 0xcdb4, 0xcdb4 }, /* 0xcdb5 */ { true, 0xcdb5, 0xcdb5 }, /* 0xcdb6 */ { true, 0xcdb6, 0xcdb6 }, /* 0xcdb7 */ { true, 0xcdb7, 0xcdb7 }, /* 0xcdb8 */ { true, 0xcdb8, 0xcdb8 }, /* 0xcdb9 */ { true, 0xcdb9, 0xcdb9 }, /* 0xcdba */ { true, 0xcdba, 0xcdba }, /* 0xcdbb */ { true, 0xcdbb, 0xcdbb }, /* 0xcdbc */ { true, 0xcdbc, 0xcdbc }, /* 0xcdbd */ { true, 0xcdbd, 0xcdbd }, /* 0xcdbe */ { true, 0xcdbe, 0xcdbe }, /* 0xcdbf */ { true, 0xcdbf, 0xcdbf }, /* 0xcdc0 */ { true, 0xcdc0, 0xcdc0 }, /* 0xcdc1 */ { true, 0xcdc1, 0xcdc1 }, /* 0xcdc2 */ { true, 0xcdc2, 0xcdc2 }, /* 0xcdc3 */ { true, 0xcdc3, 0xcdc3 }, /* 0xcdc4 */ { true, 0xcdc4, 0xcdc4 }, /* 0xcdc5 */ { true, 0xcdc5, 0xcdc5 }, /* 0xcdc6 */ { true, 0xcdc6, 0xcdc6 }, /* 0xcdc7 */ { true, 0xcdc7, 0xcdc7 }, /* 0xcdc8 */ { true, 0xcdc8, 0xcdc8 }, /* 0xcdc9 */ { true, 0xcdc9, 0xcdc9 }, /* 0xcdca */ { true, 0xcdca, 0xcdca }, /* 0xcdcb */ { true, 0xcdcb, 0xcdcb }, /* 0xcdcc */ { true, 0xcdcc, 0xcdcc }, /* 0xcdcd */ { true, 0xcdcd, 0xcdcd }, /* 0xcdce */ { true, 0xcdce, 0xcdce }, /* 0xcdcf */ { true, 0xcdcf, 0xcdcf }, /* 0xcdd0 */ { true, 0xcdd0, 0xcdd0 }, /* 0xcdd1 */ { true, 0xcdd1, 0xcdd1 }, /* 0xcdd2 */ { true, 0xcdd2, 0xcdd2 }, /* 0xcdd3 */ { true, 0xcdd3, 0xcdd3 }, /* 0xcdd4 */ { true, 0xcdd4, 0xcdd4 }, /* 0xcdd5 */ { true, 0xcdd5, 0xcdd5 }, /* 0xcdd6 */ { true, 0xcdd6, 0xcdd6 }, /* 0xcdd7 */ { true, 0xcdd7, 0xcdd7 }, /* 0xcdd8 */ { true, 0xcdd8, 0xcdd8 }, /* 0xcdd9 */ { true, 0xcdd9, 0xcdd9 }, /* 0xcdda */ { true, 0xcdda, 0xcdda }, /* 0xcddb */ { true, 0xcddb, 0xcddb }, /* 0xcddc */ { true, 0xcddc, 0xcddc }, /* 0xcddd */ { true, 0xcddd, 0xcddd }, /* 0xcdde */ { true, 0xcdde, 0xcdde }, /* 0xcddf */ { true, 0xcddf, 0xcddf }, /* 0xcde0 */ { true, 0xcde0, 0xcde0 }, /* 0xcde1 */ { true, 0xcde1, 0xcde1 }, /* 0xcde2 */ { true, 0xcde2, 0xcde2 }, /* 0xcde3 */ { true, 0xcde3, 0xcde3 }, /* 0xcde4 */ { true, 0xcde4, 0xcde4 }, /* 0xcde5 */ { true, 0xcde5, 0xcde5 }, /* 0xcde6 */ { true, 0xcde6, 0xcde6 }, /* 0xcde7 */ { true, 0xcde7, 0xcde7 }, /* 0xcde8 */ { true, 0xcde8, 0xcde8 }, /* 0xcde9 */ { true, 0xcde9, 0xcde9 }, /* 0xcdea */ { true, 0xcdea, 0xcdea }, /* 0xcdeb */ { true, 0xcdeb, 0xcdeb }, /* 0xcdec */ { true, 0xcdec, 0xcdec }, /* 0xcded */ { true, 0xcded, 0xcded }, /* 0xcdee */ { true, 0xcdee, 0xcdee }, /* 0xcdef */ { true, 0xcdef, 0xcdef }, /* 0xcdf0 */ { true, 0xcdf0, 0xcdf0 }, /* 0xcdf1 */ { true, 0xcdf1, 0xcdf1 }, /* 0xcdf2 */ { true, 0xcdf2, 0xcdf2 }, /* 0xcdf3 */ { true, 0xcdf3, 0xcdf3 }, /* 0xcdf4 */ { true, 0xcdf4, 0xcdf4 }, /* 0xcdf5 */ { true, 0xcdf5, 0xcdf5 }, /* 0xcdf6 */ { true, 0xcdf6, 0xcdf6 }, /* 0xcdf7 */ { true, 0xcdf7, 0xcdf7 }, /* 0xcdf8 */ { true, 0xcdf8, 0xcdf8 }, /* 0xcdf9 */ { true, 0xcdf9, 0xcdf9 }, /* 0xcdfa */ { true, 0xcdfa, 0xcdfa }, /* 0xcdfb */ { true, 0xcdfb, 0xcdfb }, /* 0xcdfc */ { true, 0xcdfc, 0xcdfc }, /* 0xcdfd */ { true, 0xcdfd, 0xcdfd }, /* 0xcdfe */ { true, 0xcdfe, 0xcdfe }, /* 0xcdff */ { true, 0xcdff, 0xcdff }, /* 0xce00 */ { true, 0xce00, 0xce00 }, /* 0xce01 */ { true, 0xce01, 0xce01 }, /* 0xce02 */ { true, 0xce02, 0xce02 }, /* 0xce03 */ { true, 0xce03, 0xce03 }, /* 0xce04 */ { true, 0xce04, 0xce04 }, /* 0xce05 */ { true, 0xce05, 0xce05 }, /* 0xce06 */ { true, 0xce06, 0xce06 }, /* 0xce07 */ { true, 0xce07, 0xce07 }, /* 0xce08 */ { true, 0xce08, 0xce08 }, /* 0xce09 */ { true, 0xce09, 0xce09 }, /* 0xce0a */ { true, 0xce0a, 0xce0a }, /* 0xce0b */ { true, 0xce0b, 0xce0b }, /* 0xce0c */ { true, 0xce0c, 0xce0c }, /* 0xce0d */ { true, 0xce0d, 0xce0d }, /* 0xce0e */ { true, 0xce0e, 0xce0e }, /* 0xce0f */ { true, 0xce0f, 0xce0f }, /* 0xce10 */ { true, 0xce10, 0xce10 }, /* 0xce11 */ { true, 0xce11, 0xce11 }, /* 0xce12 */ { true, 0xce12, 0xce12 }, /* 0xce13 */ { true, 0xce13, 0xce13 }, /* 0xce14 */ { true, 0xce14, 0xce14 }, /* 0xce15 */ { true, 0xce15, 0xce15 }, /* 0xce16 */ { true, 0xce16, 0xce16 }, /* 0xce17 */ { true, 0xce17, 0xce17 }, /* 0xce18 */ { true, 0xce18, 0xce18 }, /* 0xce19 */ { true, 0xce19, 0xce19 }, /* 0xce1a */ { true, 0xce1a, 0xce1a }, /* 0xce1b */ { true, 0xce1b, 0xce1b }, /* 0xce1c */ { true, 0xce1c, 0xce1c }, /* 0xce1d */ { true, 0xce1d, 0xce1d }, /* 0xce1e */ { true, 0xce1e, 0xce1e }, /* 0xce1f */ { true, 0xce1f, 0xce1f }, /* 0xce20 */ { true, 0xce20, 0xce20 }, /* 0xce21 */ { true, 0xce21, 0xce21 }, /* 0xce22 */ { true, 0xce22, 0xce22 }, /* 0xce23 */ { true, 0xce23, 0xce23 }, /* 0xce24 */ { true, 0xce24, 0xce24 }, /* 0xce25 */ { true, 0xce25, 0xce25 }, /* 0xce26 */ { true, 0xce26, 0xce26 }, /* 0xce27 */ { true, 0xce27, 0xce27 }, /* 0xce28 */ { true, 0xce28, 0xce28 }, /* 0xce29 */ { true, 0xce29, 0xce29 }, /* 0xce2a */ { true, 0xce2a, 0xce2a }, /* 0xce2b */ { true, 0xce2b, 0xce2b }, /* 0xce2c */ { true, 0xce2c, 0xce2c }, /* 0xce2d */ { true, 0xce2d, 0xce2d }, /* 0xce2e */ { true, 0xce2e, 0xce2e }, /* 0xce2f */ { true, 0xce2f, 0xce2f }, /* 0xce30 */ { true, 0xce30, 0xce30 }, /* 0xce31 */ { true, 0xce31, 0xce31 }, /* 0xce32 */ { true, 0xce32, 0xce32 }, /* 0xce33 */ { true, 0xce33, 0xce33 }, /* 0xce34 */ { true, 0xce34, 0xce34 }, /* 0xce35 */ { true, 0xce35, 0xce35 }, /* 0xce36 */ { true, 0xce36, 0xce36 }, /* 0xce37 */ { true, 0xce37, 0xce37 }, /* 0xce38 */ { true, 0xce38, 0xce38 }, /* 0xce39 */ { true, 0xce39, 0xce39 }, /* 0xce3a */ { true, 0xce3a, 0xce3a }, /* 0xce3b */ { true, 0xce3b, 0xce3b }, /* 0xce3c */ { true, 0xce3c, 0xce3c }, /* 0xce3d */ { true, 0xce3d, 0xce3d }, /* 0xce3e */ { true, 0xce3e, 0xce3e }, /* 0xce3f */ { true, 0xce3f, 0xce3f }, /* 0xce40 */ { true, 0xce40, 0xce40 }, /* 0xce41 */ { true, 0xce41, 0xce41 }, /* 0xce42 */ { true, 0xce42, 0xce42 }, /* 0xce43 */ { true, 0xce43, 0xce43 }, /* 0xce44 */ { true, 0xce44, 0xce44 }, /* 0xce45 */ { true, 0xce45, 0xce45 }, /* 0xce46 */ { true, 0xce46, 0xce46 }, /* 0xce47 */ { true, 0xce47, 0xce47 }, /* 0xce48 */ { true, 0xce48, 0xce48 }, /* 0xce49 */ { true, 0xce49, 0xce49 }, /* 0xce4a */ { true, 0xce4a, 0xce4a }, /* 0xce4b */ { true, 0xce4b, 0xce4b }, /* 0xce4c */ { true, 0xce4c, 0xce4c }, /* 0xce4d */ { true, 0xce4d, 0xce4d }, /* 0xce4e */ { true, 0xce4e, 0xce4e }, /* 0xce4f */ { true, 0xce4f, 0xce4f }, /* 0xce50 */ { true, 0xce50, 0xce50 }, /* 0xce51 */ { true, 0xce51, 0xce51 }, /* 0xce52 */ { true, 0xce52, 0xce52 }, /* 0xce53 */ { true, 0xce53, 0xce53 }, /* 0xce54 */ { true, 0xce54, 0xce54 }, /* 0xce55 */ { true, 0xce55, 0xce55 }, /* 0xce56 */ { true, 0xce56, 0xce56 }, /* 0xce57 */ { true, 0xce57, 0xce57 }, /* 0xce58 */ { true, 0xce58, 0xce58 }, /* 0xce59 */ { true, 0xce59, 0xce59 }, /* 0xce5a */ { true, 0xce5a, 0xce5a }, /* 0xce5b */ { true, 0xce5b, 0xce5b }, /* 0xce5c */ { true, 0xce5c, 0xce5c }, /* 0xce5d */ { true, 0xce5d, 0xce5d }, /* 0xce5e */ { true, 0xce5e, 0xce5e }, /* 0xce5f */ { true, 0xce5f, 0xce5f }, /* 0xce60 */ { true, 0xce60, 0xce60 }, /* 0xce61 */ { true, 0xce61, 0xce61 }, /* 0xce62 */ { true, 0xce62, 0xce62 }, /* 0xce63 */ { true, 0xce63, 0xce63 }, /* 0xce64 */ { true, 0xce64, 0xce64 }, /* 0xce65 */ { true, 0xce65, 0xce65 }, /* 0xce66 */ { true, 0xce66, 0xce66 }, /* 0xce67 */ { true, 0xce67, 0xce67 }, /* 0xce68 */ { true, 0xce68, 0xce68 }, /* 0xce69 */ { true, 0xce69, 0xce69 }, /* 0xce6a */ { true, 0xce6a, 0xce6a }, /* 0xce6b */ { true, 0xce6b, 0xce6b }, /* 0xce6c */ { true, 0xce6c, 0xce6c }, /* 0xce6d */ { true, 0xce6d, 0xce6d }, /* 0xce6e */ { true, 0xce6e, 0xce6e }, /* 0xce6f */ { true, 0xce6f, 0xce6f }, /* 0xce70 */ { true, 0xce70, 0xce70 }, /* 0xce71 */ { true, 0xce71, 0xce71 }, /* 0xce72 */ { true, 0xce72, 0xce72 }, /* 0xce73 */ { true, 0xce73, 0xce73 }, /* 0xce74 */ { true, 0xce74, 0xce74 }, /* 0xce75 */ { true, 0xce75, 0xce75 }, /* 0xce76 */ { true, 0xce76, 0xce76 }, /* 0xce77 */ { true, 0xce77, 0xce77 }, /* 0xce78 */ { true, 0xce78, 0xce78 }, /* 0xce79 */ { true, 0xce79, 0xce79 }, /* 0xce7a */ { true, 0xce7a, 0xce7a }, /* 0xce7b */ { true, 0xce7b, 0xce7b }, /* 0xce7c */ { true, 0xce7c, 0xce7c }, /* 0xce7d */ { true, 0xce7d, 0xce7d }, /* 0xce7e */ { true, 0xce7e, 0xce7e }, /* 0xce7f */ { true, 0xce7f, 0xce7f }, /* 0xce80 */ { true, 0xce80, 0xce80 }, /* 0xce81 */ { true, 0xce81, 0xce81 }, /* 0xce82 */ { true, 0xce82, 0xce82 }, /* 0xce83 */ { true, 0xce83, 0xce83 }, /* 0xce84 */ { true, 0xce84, 0xce84 }, /* 0xce85 */ { true, 0xce85, 0xce85 }, /* 0xce86 */ { true, 0xce86, 0xce86 }, /* 0xce87 */ { true, 0xce87, 0xce87 }, /* 0xce88 */ { true, 0xce88, 0xce88 }, /* 0xce89 */ { true, 0xce89, 0xce89 }, /* 0xce8a */ { true, 0xce8a, 0xce8a }, /* 0xce8b */ { true, 0xce8b, 0xce8b }, /* 0xce8c */ { true, 0xce8c, 0xce8c }, /* 0xce8d */ { true, 0xce8d, 0xce8d }, /* 0xce8e */ { true, 0xce8e, 0xce8e }, /* 0xce8f */ { true, 0xce8f, 0xce8f }, /* 0xce90 */ { true, 0xce90, 0xce90 }, /* 0xce91 */ { true, 0xce91, 0xce91 }, /* 0xce92 */ { true, 0xce92, 0xce92 }, /* 0xce93 */ { true, 0xce93, 0xce93 }, /* 0xce94 */ { true, 0xce94, 0xce94 }, /* 0xce95 */ { true, 0xce95, 0xce95 }, /* 0xce96 */ { true, 0xce96, 0xce96 }, /* 0xce97 */ { true, 0xce97, 0xce97 }, /* 0xce98 */ { true, 0xce98, 0xce98 }, /* 0xce99 */ { true, 0xce99, 0xce99 }, /* 0xce9a */ { true, 0xce9a, 0xce9a }, /* 0xce9b */ { true, 0xce9b, 0xce9b }, /* 0xce9c */ { true, 0xce9c, 0xce9c }, /* 0xce9d */ { true, 0xce9d, 0xce9d }, /* 0xce9e */ { true, 0xce9e, 0xce9e }, /* 0xce9f */ { true, 0xce9f, 0xce9f }, /* 0xcea0 */ { true, 0xcea0, 0xcea0 }, /* 0xcea1 */ { true, 0xcea1, 0xcea1 }, /* 0xcea2 */ { true, 0xcea2, 0xcea2 }, /* 0xcea3 */ { true, 0xcea3, 0xcea3 }, /* 0xcea4 */ { true, 0xcea4, 0xcea4 }, /* 0xcea5 */ { true, 0xcea5, 0xcea5 }, /* 0xcea6 */ { true, 0xcea6, 0xcea6 }, /* 0xcea7 */ { true, 0xcea7, 0xcea7 }, /* 0xcea8 */ { true, 0xcea8, 0xcea8 }, /* 0xcea9 */ { true, 0xcea9, 0xcea9 }, /* 0xceaa */ { true, 0xceaa, 0xceaa }, /* 0xceab */ { true, 0xceab, 0xceab }, /* 0xceac */ { true, 0xceac, 0xceac }, /* 0xcead */ { true, 0xcead, 0xcead }, /* 0xceae */ { true, 0xceae, 0xceae }, /* 0xceaf */ { true, 0xceaf, 0xceaf }, /* 0xceb0 */ { true, 0xceb0, 0xceb0 }, /* 0xceb1 */ { true, 0xceb1, 0xceb1 }, /* 0xceb2 */ { true, 0xceb2, 0xceb2 }, /* 0xceb3 */ { true, 0xceb3, 0xceb3 }, /* 0xceb4 */ { true, 0xceb4, 0xceb4 }, /* 0xceb5 */ { true, 0xceb5, 0xceb5 }, /* 0xceb6 */ { true, 0xceb6, 0xceb6 }, /* 0xceb7 */ { true, 0xceb7, 0xceb7 }, /* 0xceb8 */ { true, 0xceb8, 0xceb8 }, /* 0xceb9 */ { true, 0xceb9, 0xceb9 }, /* 0xceba */ { true, 0xceba, 0xceba }, /* 0xcebb */ { true, 0xcebb, 0xcebb }, /* 0xcebc */ { true, 0xcebc, 0xcebc }, /* 0xcebd */ { true, 0xcebd, 0xcebd }, /* 0xcebe */ { true, 0xcebe, 0xcebe }, /* 0xcebf */ { true, 0xcebf, 0xcebf }, /* 0xcec0 */ { true, 0xcec0, 0xcec0 }, /* 0xcec1 */ { true, 0xcec1, 0xcec1 }, /* 0xcec2 */ { true, 0xcec2, 0xcec2 }, /* 0xcec3 */ { true, 0xcec3, 0xcec3 }, /* 0xcec4 */ { true, 0xcec4, 0xcec4 }, /* 0xcec5 */ { true, 0xcec5, 0xcec5 }, /* 0xcec6 */ { true, 0xcec6, 0xcec6 }, /* 0xcec7 */ { true, 0xcec7, 0xcec7 }, /* 0xcec8 */ { true, 0xcec8, 0xcec8 }, /* 0xcec9 */ { true, 0xcec9, 0xcec9 }, /* 0xceca */ { true, 0xceca, 0xceca }, /* 0xcecb */ { true, 0xcecb, 0xcecb }, /* 0xcecc */ { true, 0xcecc, 0xcecc }, /* 0xcecd */ { true, 0xcecd, 0xcecd }, /* 0xcece */ { true, 0xcece, 0xcece }, /* 0xcecf */ { true, 0xcecf, 0xcecf }, /* 0xced0 */ { true, 0xced0, 0xced0 }, /* 0xced1 */ { true, 0xced1, 0xced1 }, /* 0xced2 */ { true, 0xced2, 0xced2 }, /* 0xced3 */ { true, 0xced3, 0xced3 }, /* 0xced4 */ { true, 0xced4, 0xced4 }, /* 0xced5 */ { true, 0xced5, 0xced5 }, /* 0xced6 */ { true, 0xced6, 0xced6 }, /* 0xced7 */ { true, 0xced7, 0xced7 }, /* 0xced8 */ { true, 0xced8, 0xced8 }, /* 0xced9 */ { true, 0xced9, 0xced9 }, /* 0xceda */ { true, 0xceda, 0xceda }, /* 0xcedb */ { true, 0xcedb, 0xcedb }, /* 0xcedc */ { true, 0xcedc, 0xcedc }, /* 0xcedd */ { true, 0xcedd, 0xcedd }, /* 0xcede */ { true, 0xcede, 0xcede }, /* 0xcedf */ { true, 0xcedf, 0xcedf }, /* 0xcee0 */ { true, 0xcee0, 0xcee0 }, /* 0xcee1 */ { true, 0xcee1, 0xcee1 }, /* 0xcee2 */ { true, 0xcee2, 0xcee2 }, /* 0xcee3 */ { true, 0xcee3, 0xcee3 }, /* 0xcee4 */ { true, 0xcee4, 0xcee4 }, /* 0xcee5 */ { true, 0xcee5, 0xcee5 }, /* 0xcee6 */ { true, 0xcee6, 0xcee6 }, /* 0xcee7 */ { true, 0xcee7, 0xcee7 }, /* 0xcee8 */ { true, 0xcee8, 0xcee8 }, /* 0xcee9 */ { true, 0xcee9, 0xcee9 }, /* 0xceea */ { true, 0xceea, 0xceea }, /* 0xceeb */ { true, 0xceeb, 0xceeb }, /* 0xceec */ { true, 0xceec, 0xceec }, /* 0xceed */ { true, 0xceed, 0xceed }, /* 0xceee */ { true, 0xceee, 0xceee }, /* 0xceef */ { true, 0xceef, 0xceef }, /* 0xcef0 */ { true, 0xcef0, 0xcef0 }, /* 0xcef1 */ { true, 0xcef1, 0xcef1 }, /* 0xcef2 */ { true, 0xcef2, 0xcef2 }, /* 0xcef3 */ { true, 0xcef3, 0xcef3 }, /* 0xcef4 */ { true, 0xcef4, 0xcef4 }, /* 0xcef5 */ { true, 0xcef5, 0xcef5 }, /* 0xcef6 */ { true, 0xcef6, 0xcef6 }, /* 0xcef7 */ { true, 0xcef7, 0xcef7 }, /* 0xcef8 */ { true, 0xcef8, 0xcef8 }, /* 0xcef9 */ { true, 0xcef9, 0xcef9 }, /* 0xcefa */ { true, 0xcefa, 0xcefa }, /* 0xcefb */ { true, 0xcefb, 0xcefb }, /* 0xcefc */ { true, 0xcefc, 0xcefc }, /* 0xcefd */ { true, 0xcefd, 0xcefd }, /* 0xcefe */ { true, 0xcefe, 0xcefe }, /* 0xceff */ { true, 0xceff, 0xceff }, /* 0xcf00 */ { true, 0xcf00, 0xcf00 }, /* 0xcf01 */ { true, 0xcf01, 0xcf01 }, /* 0xcf02 */ { true, 0xcf02, 0xcf02 }, /* 0xcf03 */ { true, 0xcf03, 0xcf03 }, /* 0xcf04 */ { true, 0xcf04, 0xcf04 }, /* 0xcf05 */ { true, 0xcf05, 0xcf05 }, /* 0xcf06 */ { true, 0xcf06, 0xcf06 }, /* 0xcf07 */ { true, 0xcf07, 0xcf07 }, /* 0xcf08 */ { true, 0xcf08, 0xcf08 }, /* 0xcf09 */ { true, 0xcf09, 0xcf09 }, /* 0xcf0a */ { true, 0xcf0a, 0xcf0a }, /* 0xcf0b */ { true, 0xcf0b, 0xcf0b }, /* 0xcf0c */ { true, 0xcf0c, 0xcf0c }, /* 0xcf0d */ { true, 0xcf0d, 0xcf0d }, /* 0xcf0e */ { true, 0xcf0e, 0xcf0e }, /* 0xcf0f */ { true, 0xcf0f, 0xcf0f }, /* 0xcf10 */ { true, 0xcf10, 0xcf10 }, /* 0xcf11 */ { true, 0xcf11, 0xcf11 }, /* 0xcf12 */ { true, 0xcf12, 0xcf12 }, /* 0xcf13 */ { true, 0xcf13, 0xcf13 }, /* 0xcf14 */ { true, 0xcf14, 0xcf14 }, /* 0xcf15 */ { true, 0xcf15, 0xcf15 }, /* 0xcf16 */ { true, 0xcf16, 0xcf16 }, /* 0xcf17 */ { true, 0xcf17, 0xcf17 }, /* 0xcf18 */ { true, 0xcf18, 0xcf18 }, /* 0xcf19 */ { true, 0xcf19, 0xcf19 }, /* 0xcf1a */ { true, 0xcf1a, 0xcf1a }, /* 0xcf1b */ { true, 0xcf1b, 0xcf1b }, /* 0xcf1c */ { true, 0xcf1c, 0xcf1c }, /* 0xcf1d */ { true, 0xcf1d, 0xcf1d }, /* 0xcf1e */ { true, 0xcf1e, 0xcf1e }, /* 0xcf1f */ { true, 0xcf1f, 0xcf1f }, /* 0xcf20 */ { true, 0xcf20, 0xcf20 }, /* 0xcf21 */ { true, 0xcf21, 0xcf21 }, /* 0xcf22 */ { true, 0xcf22, 0xcf22 }, /* 0xcf23 */ { true, 0xcf23, 0xcf23 }, /* 0xcf24 */ { true, 0xcf24, 0xcf24 }, /* 0xcf25 */ { true, 0xcf25, 0xcf25 }, /* 0xcf26 */ { true, 0xcf26, 0xcf26 }, /* 0xcf27 */ { true, 0xcf27, 0xcf27 }, /* 0xcf28 */ { true, 0xcf28, 0xcf28 }, /* 0xcf29 */ { true, 0xcf29, 0xcf29 }, /* 0xcf2a */ { true, 0xcf2a, 0xcf2a }, /* 0xcf2b */ { true, 0xcf2b, 0xcf2b }, /* 0xcf2c */ { true, 0xcf2c, 0xcf2c }, /* 0xcf2d */ { true, 0xcf2d, 0xcf2d }, /* 0xcf2e */ { true, 0xcf2e, 0xcf2e }, /* 0xcf2f */ { true, 0xcf2f, 0xcf2f }, /* 0xcf30 */ { true, 0xcf30, 0xcf30 }, /* 0xcf31 */ { true, 0xcf31, 0xcf31 }, /* 0xcf32 */ { true, 0xcf32, 0xcf32 }, /* 0xcf33 */ { true, 0xcf33, 0xcf33 }, /* 0xcf34 */ { true, 0xcf34, 0xcf34 }, /* 0xcf35 */ { true, 0xcf35, 0xcf35 }, /* 0xcf36 */ { true, 0xcf36, 0xcf36 }, /* 0xcf37 */ { true, 0xcf37, 0xcf37 }, /* 0xcf38 */ { true, 0xcf38, 0xcf38 }, /* 0xcf39 */ { true, 0xcf39, 0xcf39 }, /* 0xcf3a */ { true, 0xcf3a, 0xcf3a }, /* 0xcf3b */ { true, 0xcf3b, 0xcf3b }, /* 0xcf3c */ { true, 0xcf3c, 0xcf3c }, /* 0xcf3d */ { true, 0xcf3d, 0xcf3d }, /* 0xcf3e */ { true, 0xcf3e, 0xcf3e }, /* 0xcf3f */ { true, 0xcf3f, 0xcf3f }, /* 0xcf40 */ { true, 0xcf40, 0xcf40 }, /* 0xcf41 */ { true, 0xcf41, 0xcf41 }, /* 0xcf42 */ { true, 0xcf42, 0xcf42 }, /* 0xcf43 */ { true, 0xcf43, 0xcf43 }, /* 0xcf44 */ { true, 0xcf44, 0xcf44 }, /* 0xcf45 */ { true, 0xcf45, 0xcf45 }, /* 0xcf46 */ { true, 0xcf46, 0xcf46 }, /* 0xcf47 */ { true, 0xcf47, 0xcf47 }, /* 0xcf48 */ { true, 0xcf48, 0xcf48 }, /* 0xcf49 */ { true, 0xcf49, 0xcf49 }, /* 0xcf4a */ { true, 0xcf4a, 0xcf4a }, /* 0xcf4b */ { true, 0xcf4b, 0xcf4b }, /* 0xcf4c */ { true, 0xcf4c, 0xcf4c }, /* 0xcf4d */ { true, 0xcf4d, 0xcf4d }, /* 0xcf4e */ { true, 0xcf4e, 0xcf4e }, /* 0xcf4f */ { true, 0xcf4f, 0xcf4f }, /* 0xcf50 */ { true, 0xcf50, 0xcf50 }, /* 0xcf51 */ { true, 0xcf51, 0xcf51 }, /* 0xcf52 */ { true, 0xcf52, 0xcf52 }, /* 0xcf53 */ { true, 0xcf53, 0xcf53 }, /* 0xcf54 */ { true, 0xcf54, 0xcf54 }, /* 0xcf55 */ { true, 0xcf55, 0xcf55 }, /* 0xcf56 */ { true, 0xcf56, 0xcf56 }, /* 0xcf57 */ { true, 0xcf57, 0xcf57 }, /* 0xcf58 */ { true, 0xcf58, 0xcf58 }, /* 0xcf59 */ { true, 0xcf59, 0xcf59 }, /* 0xcf5a */ { true, 0xcf5a, 0xcf5a }, /* 0xcf5b */ { true, 0xcf5b, 0xcf5b }, /* 0xcf5c */ { true, 0xcf5c, 0xcf5c }, /* 0xcf5d */ { true, 0xcf5d, 0xcf5d }, /* 0xcf5e */ { true, 0xcf5e, 0xcf5e }, /* 0xcf5f */ { true, 0xcf5f, 0xcf5f }, /* 0xcf60 */ { true, 0xcf60, 0xcf60 }, /* 0xcf61 */ { true, 0xcf61, 0xcf61 }, /* 0xcf62 */ { true, 0xcf62, 0xcf62 }, /* 0xcf63 */ { true, 0xcf63, 0xcf63 }, /* 0xcf64 */ { true, 0xcf64, 0xcf64 }, /* 0xcf65 */ { true, 0xcf65, 0xcf65 }, /* 0xcf66 */ { true, 0xcf66, 0xcf66 }, /* 0xcf67 */ { true, 0xcf67, 0xcf67 }, /* 0xcf68 */ { true, 0xcf68, 0xcf68 }, /* 0xcf69 */ { true, 0xcf69, 0xcf69 }, /* 0xcf6a */ { true, 0xcf6a, 0xcf6a }, /* 0xcf6b */ { true, 0xcf6b, 0xcf6b }, /* 0xcf6c */ { true, 0xcf6c, 0xcf6c }, /* 0xcf6d */ { true, 0xcf6d, 0xcf6d }, /* 0xcf6e */ { true, 0xcf6e, 0xcf6e }, /* 0xcf6f */ { true, 0xcf6f, 0xcf6f }, /* 0xcf70 */ { true, 0xcf70, 0xcf70 }, /* 0xcf71 */ { true, 0xcf71, 0xcf71 }, /* 0xcf72 */ { true, 0xcf72, 0xcf72 }, /* 0xcf73 */ { true, 0xcf73, 0xcf73 }, /* 0xcf74 */ { true, 0xcf74, 0xcf74 }, /* 0xcf75 */ { true, 0xcf75, 0xcf75 }, /* 0xcf76 */ { true, 0xcf76, 0xcf76 }, /* 0xcf77 */ { true, 0xcf77, 0xcf77 }, /* 0xcf78 */ { true, 0xcf78, 0xcf78 }, /* 0xcf79 */ { true, 0xcf79, 0xcf79 }, /* 0xcf7a */ { true, 0xcf7a, 0xcf7a }, /* 0xcf7b */ { true, 0xcf7b, 0xcf7b }, /* 0xcf7c */ { true, 0xcf7c, 0xcf7c }, /* 0xcf7d */ { true, 0xcf7d, 0xcf7d }, /* 0xcf7e */ { true, 0xcf7e, 0xcf7e }, /* 0xcf7f */ { true, 0xcf7f, 0xcf7f }, /* 0xcf80 */ { true, 0xcf80, 0xcf80 }, /* 0xcf81 */ { true, 0xcf81, 0xcf81 }, /* 0xcf82 */ { true, 0xcf82, 0xcf82 }, /* 0xcf83 */ { true, 0xcf83, 0xcf83 }, /* 0xcf84 */ { true, 0xcf84, 0xcf84 }, /* 0xcf85 */ { true, 0xcf85, 0xcf85 }, /* 0xcf86 */ { true, 0xcf86, 0xcf86 }, /* 0xcf87 */ { true, 0xcf87, 0xcf87 }, /* 0xcf88 */ { true, 0xcf88, 0xcf88 }, /* 0xcf89 */ { true, 0xcf89, 0xcf89 }, /* 0xcf8a */ { true, 0xcf8a, 0xcf8a }, /* 0xcf8b */ { true, 0xcf8b, 0xcf8b }, /* 0xcf8c */ { true, 0xcf8c, 0xcf8c }, /* 0xcf8d */ { true, 0xcf8d, 0xcf8d }, /* 0xcf8e */ { true, 0xcf8e, 0xcf8e }, /* 0xcf8f */ { true, 0xcf8f, 0xcf8f }, /* 0xcf90 */ { true, 0xcf90, 0xcf90 }, /* 0xcf91 */ { true, 0xcf91, 0xcf91 }, /* 0xcf92 */ { true, 0xcf92, 0xcf92 }, /* 0xcf93 */ { true, 0xcf93, 0xcf93 }, /* 0xcf94 */ { true, 0xcf94, 0xcf94 }, /* 0xcf95 */ { true, 0xcf95, 0xcf95 }, /* 0xcf96 */ { true, 0xcf96, 0xcf96 }, /* 0xcf97 */ { true, 0xcf97, 0xcf97 }, /* 0xcf98 */ { true, 0xcf98, 0xcf98 }, /* 0xcf99 */ { true, 0xcf99, 0xcf99 }, /* 0xcf9a */ { true, 0xcf9a, 0xcf9a }, /* 0xcf9b */ { true, 0xcf9b, 0xcf9b }, /* 0xcf9c */ { true, 0xcf9c, 0xcf9c }, /* 0xcf9d */ { true, 0xcf9d, 0xcf9d }, /* 0xcf9e */ { true, 0xcf9e, 0xcf9e }, /* 0xcf9f */ { true, 0xcf9f, 0xcf9f }, /* 0xcfa0 */ { true, 0xcfa0, 0xcfa0 }, /* 0xcfa1 */ { true, 0xcfa1, 0xcfa1 }, /* 0xcfa2 */ { true, 0xcfa2, 0xcfa2 }, /* 0xcfa3 */ { true, 0xcfa3, 0xcfa3 }, /* 0xcfa4 */ { true, 0xcfa4, 0xcfa4 }, /* 0xcfa5 */ { true, 0xcfa5, 0xcfa5 }, /* 0xcfa6 */ { true, 0xcfa6, 0xcfa6 }, /* 0xcfa7 */ { true, 0xcfa7, 0xcfa7 }, /* 0xcfa8 */ { true, 0xcfa8, 0xcfa8 }, /* 0xcfa9 */ { true, 0xcfa9, 0xcfa9 }, /* 0xcfaa */ { true, 0xcfaa, 0xcfaa }, /* 0xcfab */ { true, 0xcfab, 0xcfab }, /* 0xcfac */ { true, 0xcfac, 0xcfac }, /* 0xcfad */ { true, 0xcfad, 0xcfad }, /* 0xcfae */ { true, 0xcfae, 0xcfae }, /* 0xcfaf */ { true, 0xcfaf, 0xcfaf }, /* 0xcfb0 */ { true, 0xcfb0, 0xcfb0 }, /* 0xcfb1 */ { true, 0xcfb1, 0xcfb1 }, /* 0xcfb2 */ { true, 0xcfb2, 0xcfb2 }, /* 0xcfb3 */ { true, 0xcfb3, 0xcfb3 }, /* 0xcfb4 */ { true, 0xcfb4, 0xcfb4 }, /* 0xcfb5 */ { true, 0xcfb5, 0xcfb5 }, /* 0xcfb6 */ { true, 0xcfb6, 0xcfb6 }, /* 0xcfb7 */ { true, 0xcfb7, 0xcfb7 }, /* 0xcfb8 */ { true, 0xcfb8, 0xcfb8 }, /* 0xcfb9 */ { true, 0xcfb9, 0xcfb9 }, /* 0xcfba */ { true, 0xcfba, 0xcfba }, /* 0xcfbb */ { true, 0xcfbb, 0xcfbb }, /* 0xcfbc */ { true, 0xcfbc, 0xcfbc }, /* 0xcfbd */ { true, 0xcfbd, 0xcfbd }, /* 0xcfbe */ { true, 0xcfbe, 0xcfbe }, /* 0xcfbf */ { true, 0xcfbf, 0xcfbf }, /* 0xcfc0 */ { true, 0xcfc0, 0xcfc0 }, /* 0xcfc1 */ { true, 0xcfc1, 0xcfc1 }, /* 0xcfc2 */ { true, 0xcfc2, 0xcfc2 }, /* 0xcfc3 */ { true, 0xcfc3, 0xcfc3 }, /* 0xcfc4 */ { true, 0xcfc4, 0xcfc4 }, /* 0xcfc5 */ { true, 0xcfc5, 0xcfc5 }, /* 0xcfc6 */ { true, 0xcfc6, 0xcfc6 }, /* 0xcfc7 */ { true, 0xcfc7, 0xcfc7 }, /* 0xcfc8 */ { true, 0xcfc8, 0xcfc8 }, /* 0xcfc9 */ { true, 0xcfc9, 0xcfc9 }, /* 0xcfca */ { true, 0xcfca, 0xcfca }, /* 0xcfcb */ { true, 0xcfcb, 0xcfcb }, /* 0xcfcc */ { true, 0xcfcc, 0xcfcc }, /* 0xcfcd */ { true, 0xcfcd, 0xcfcd }, /* 0xcfce */ { true, 0xcfce, 0xcfce }, /* 0xcfcf */ { true, 0xcfcf, 0xcfcf }, /* 0xcfd0 */ { true, 0xcfd0, 0xcfd0 }, /* 0xcfd1 */ { true, 0xcfd1, 0xcfd1 }, /* 0xcfd2 */ { true, 0xcfd2, 0xcfd2 }, /* 0xcfd3 */ { true, 0xcfd3, 0xcfd3 }, /* 0xcfd4 */ { true, 0xcfd4, 0xcfd4 }, /* 0xcfd5 */ { true, 0xcfd5, 0xcfd5 }, /* 0xcfd6 */ { true, 0xcfd6, 0xcfd6 }, /* 0xcfd7 */ { true, 0xcfd7, 0xcfd7 }, /* 0xcfd8 */ { true, 0xcfd8, 0xcfd8 }, /* 0xcfd9 */ { true, 0xcfd9, 0xcfd9 }, /* 0xcfda */ { true, 0xcfda, 0xcfda }, /* 0xcfdb */ { true, 0xcfdb, 0xcfdb }, /* 0xcfdc */ { true, 0xcfdc, 0xcfdc }, /* 0xcfdd */ { true, 0xcfdd, 0xcfdd }, /* 0xcfde */ { true, 0xcfde, 0xcfde }, /* 0xcfdf */ { true, 0xcfdf, 0xcfdf }, /* 0xcfe0 */ { true, 0xcfe0, 0xcfe0 }, /* 0xcfe1 */ { true, 0xcfe1, 0xcfe1 }, /* 0xcfe2 */ { true, 0xcfe2, 0xcfe2 }, /* 0xcfe3 */ { true, 0xcfe3, 0xcfe3 }, /* 0xcfe4 */ { true, 0xcfe4, 0xcfe4 }, /* 0xcfe5 */ { true, 0xcfe5, 0xcfe5 }, /* 0xcfe6 */ { true, 0xcfe6, 0xcfe6 }, /* 0xcfe7 */ { true, 0xcfe7, 0xcfe7 }, /* 0xcfe8 */ { true, 0xcfe8, 0xcfe8 }, /* 0xcfe9 */ { true, 0xcfe9, 0xcfe9 }, /* 0xcfea */ { true, 0xcfea, 0xcfea }, /* 0xcfeb */ { true, 0xcfeb, 0xcfeb }, /* 0xcfec */ { true, 0xcfec, 0xcfec }, /* 0xcfed */ { true, 0xcfed, 0xcfed }, /* 0xcfee */ { true, 0xcfee, 0xcfee }, /* 0xcfef */ { true, 0xcfef, 0xcfef }, /* 0xcff0 */ { true, 0xcff0, 0xcff0 }, /* 0xcff1 */ { true, 0xcff1, 0xcff1 }, /* 0xcff2 */ { true, 0xcff2, 0xcff2 }, /* 0xcff3 */ { true, 0xcff3, 0xcff3 }, /* 0xcff4 */ { true, 0xcff4, 0xcff4 }, /* 0xcff5 */ { true, 0xcff5, 0xcff5 }, /* 0xcff6 */ { true, 0xcff6, 0xcff6 }, /* 0xcff7 */ { true, 0xcff7, 0xcff7 }, /* 0xcff8 */ { true, 0xcff8, 0xcff8 }, /* 0xcff9 */ { true, 0xcff9, 0xcff9 }, /* 0xcffa */ { true, 0xcffa, 0xcffa }, /* 0xcffb */ { true, 0xcffb, 0xcffb }, /* 0xcffc */ { true, 0xcffc, 0xcffc }, /* 0xcffd */ { true, 0xcffd, 0xcffd }, /* 0xcffe */ { true, 0xcffe, 0xcffe }, /* 0xcfff */ { true, 0xcfff, 0xcfff }, /* 0xd000 */ { true, 0xd000, 0xd000 }, /* 0xd001 */ { true, 0xd001, 0xd001 }, /* 0xd002 */ { true, 0xd002, 0xd002 }, /* 0xd003 */ { true, 0xd003, 0xd003 }, /* 0xd004 */ { true, 0xd004, 0xd004 }, /* 0xd005 */ { true, 0xd005, 0xd005 }, /* 0xd006 */ { true, 0xd006, 0xd006 }, /* 0xd007 */ { true, 0xd007, 0xd007 }, /* 0xd008 */ { true, 0xd008, 0xd008 }, /* 0xd009 */ { true, 0xd009, 0xd009 }, /* 0xd00a */ { true, 0xd00a, 0xd00a }, /* 0xd00b */ { true, 0xd00b, 0xd00b }, /* 0xd00c */ { true, 0xd00c, 0xd00c }, /* 0xd00d */ { true, 0xd00d, 0xd00d }, /* 0xd00e */ { true, 0xd00e, 0xd00e }, /* 0xd00f */ { true, 0xd00f, 0xd00f }, /* 0xd010 */ { true, 0xd010, 0xd010 }, /* 0xd011 */ { true, 0xd011, 0xd011 }, /* 0xd012 */ { true, 0xd012, 0xd012 }, /* 0xd013 */ { true, 0xd013, 0xd013 }, /* 0xd014 */ { true, 0xd014, 0xd014 }, /* 0xd015 */ { true, 0xd015, 0xd015 }, /* 0xd016 */ { true, 0xd016, 0xd016 }, /* 0xd017 */ { true, 0xd017, 0xd017 }, /* 0xd018 */ { true, 0xd018, 0xd018 }, /* 0xd019 */ { true, 0xd019, 0xd019 }, /* 0xd01a */ { true, 0xd01a, 0xd01a }, /* 0xd01b */ { true, 0xd01b, 0xd01b }, /* 0xd01c */ { true, 0xd01c, 0xd01c }, /* 0xd01d */ { true, 0xd01d, 0xd01d }, /* 0xd01e */ { true, 0xd01e, 0xd01e }, /* 0xd01f */ { true, 0xd01f, 0xd01f }, /* 0xd020 */ { true, 0xd020, 0xd020 }, /* 0xd021 */ { true, 0xd021, 0xd021 }, /* 0xd022 */ { true, 0xd022, 0xd022 }, /* 0xd023 */ { true, 0xd023, 0xd023 }, /* 0xd024 */ { true, 0xd024, 0xd024 }, /* 0xd025 */ { true, 0xd025, 0xd025 }, /* 0xd026 */ { true, 0xd026, 0xd026 }, /* 0xd027 */ { true, 0xd027, 0xd027 }, /* 0xd028 */ { true, 0xd028, 0xd028 }, /* 0xd029 */ { true, 0xd029, 0xd029 }, /* 0xd02a */ { true, 0xd02a, 0xd02a }, /* 0xd02b */ { true, 0xd02b, 0xd02b }, /* 0xd02c */ { true, 0xd02c, 0xd02c }, /* 0xd02d */ { true, 0xd02d, 0xd02d }, /* 0xd02e */ { true, 0xd02e, 0xd02e }, /* 0xd02f */ { true, 0xd02f, 0xd02f }, /* 0xd030 */ { true, 0xd030, 0xd030 }, /* 0xd031 */ { true, 0xd031, 0xd031 }, /* 0xd032 */ { true, 0xd032, 0xd032 }, /* 0xd033 */ { true, 0xd033, 0xd033 }, /* 0xd034 */ { true, 0xd034, 0xd034 }, /* 0xd035 */ { true, 0xd035, 0xd035 }, /* 0xd036 */ { true, 0xd036, 0xd036 }, /* 0xd037 */ { true, 0xd037, 0xd037 }, /* 0xd038 */ { true, 0xd038, 0xd038 }, /* 0xd039 */ { true, 0xd039, 0xd039 }, /* 0xd03a */ { true, 0xd03a, 0xd03a }, /* 0xd03b */ { true, 0xd03b, 0xd03b }, /* 0xd03c */ { true, 0xd03c, 0xd03c }, /* 0xd03d */ { true, 0xd03d, 0xd03d }, /* 0xd03e */ { true, 0xd03e, 0xd03e }, /* 0xd03f */ { true, 0xd03f, 0xd03f }, /* 0xd040 */ { true, 0xd040, 0xd040 }, /* 0xd041 */ { true, 0xd041, 0xd041 }, /* 0xd042 */ { true, 0xd042, 0xd042 }, /* 0xd043 */ { true, 0xd043, 0xd043 }, /* 0xd044 */ { true, 0xd044, 0xd044 }, /* 0xd045 */ { true, 0xd045, 0xd045 }, /* 0xd046 */ { true, 0xd046, 0xd046 }, /* 0xd047 */ { true, 0xd047, 0xd047 }, /* 0xd048 */ { true, 0xd048, 0xd048 }, /* 0xd049 */ { true, 0xd049, 0xd049 }, /* 0xd04a */ { true, 0xd04a, 0xd04a }, /* 0xd04b */ { true, 0xd04b, 0xd04b }, /* 0xd04c */ { true, 0xd04c, 0xd04c }, /* 0xd04d */ { true, 0xd04d, 0xd04d }, /* 0xd04e */ { true, 0xd04e, 0xd04e }, /* 0xd04f */ { true, 0xd04f, 0xd04f }, /* 0xd050 */ { true, 0xd050, 0xd050 }, /* 0xd051 */ { true, 0xd051, 0xd051 }, /* 0xd052 */ { true, 0xd052, 0xd052 }, /* 0xd053 */ { true, 0xd053, 0xd053 }, /* 0xd054 */ { true, 0xd054, 0xd054 }, /* 0xd055 */ { true, 0xd055, 0xd055 }, /* 0xd056 */ { true, 0xd056, 0xd056 }, /* 0xd057 */ { true, 0xd057, 0xd057 }, /* 0xd058 */ { true, 0xd058, 0xd058 }, /* 0xd059 */ { true, 0xd059, 0xd059 }, /* 0xd05a */ { true, 0xd05a, 0xd05a }, /* 0xd05b */ { true, 0xd05b, 0xd05b }, /* 0xd05c */ { true, 0xd05c, 0xd05c }, /* 0xd05d */ { true, 0xd05d, 0xd05d }, /* 0xd05e */ { true, 0xd05e, 0xd05e }, /* 0xd05f */ { true, 0xd05f, 0xd05f }, /* 0xd060 */ { true, 0xd060, 0xd060 }, /* 0xd061 */ { true, 0xd061, 0xd061 }, /* 0xd062 */ { true, 0xd062, 0xd062 }, /* 0xd063 */ { true, 0xd063, 0xd063 }, /* 0xd064 */ { true, 0xd064, 0xd064 }, /* 0xd065 */ { true, 0xd065, 0xd065 }, /* 0xd066 */ { true, 0xd066, 0xd066 }, /* 0xd067 */ { true, 0xd067, 0xd067 }, /* 0xd068 */ { true, 0xd068, 0xd068 }, /* 0xd069 */ { true, 0xd069, 0xd069 }, /* 0xd06a */ { true, 0xd06a, 0xd06a }, /* 0xd06b */ { true, 0xd06b, 0xd06b }, /* 0xd06c */ { true, 0xd06c, 0xd06c }, /* 0xd06d */ { true, 0xd06d, 0xd06d }, /* 0xd06e */ { true, 0xd06e, 0xd06e }, /* 0xd06f */ { true, 0xd06f, 0xd06f }, /* 0xd070 */ { true, 0xd070, 0xd070 }, /* 0xd071 */ { true, 0xd071, 0xd071 }, /* 0xd072 */ { true, 0xd072, 0xd072 }, /* 0xd073 */ { true, 0xd073, 0xd073 }, /* 0xd074 */ { true, 0xd074, 0xd074 }, /* 0xd075 */ { true, 0xd075, 0xd075 }, /* 0xd076 */ { true, 0xd076, 0xd076 }, /* 0xd077 */ { true, 0xd077, 0xd077 }, /* 0xd078 */ { true, 0xd078, 0xd078 }, /* 0xd079 */ { true, 0xd079, 0xd079 }, /* 0xd07a */ { true, 0xd07a, 0xd07a }, /* 0xd07b */ { true, 0xd07b, 0xd07b }, /* 0xd07c */ { true, 0xd07c, 0xd07c }, /* 0xd07d */ { true, 0xd07d, 0xd07d }, /* 0xd07e */ { true, 0xd07e, 0xd07e }, /* 0xd07f */ { true, 0xd07f, 0xd07f }, /* 0xd080 */ { true, 0xd080, 0xd080 }, /* 0xd081 */ { true, 0xd081, 0xd081 }, /* 0xd082 */ { true, 0xd082, 0xd082 }, /* 0xd083 */ { true, 0xd083, 0xd083 }, /* 0xd084 */ { true, 0xd084, 0xd084 }, /* 0xd085 */ { true, 0xd085, 0xd085 }, /* 0xd086 */ { true, 0xd086, 0xd086 }, /* 0xd087 */ { true, 0xd087, 0xd087 }, /* 0xd088 */ { true, 0xd088, 0xd088 }, /* 0xd089 */ { true, 0xd089, 0xd089 }, /* 0xd08a */ { true, 0xd08a, 0xd08a }, /* 0xd08b */ { true, 0xd08b, 0xd08b }, /* 0xd08c */ { true, 0xd08c, 0xd08c }, /* 0xd08d */ { true, 0xd08d, 0xd08d }, /* 0xd08e */ { true, 0xd08e, 0xd08e }, /* 0xd08f */ { true, 0xd08f, 0xd08f }, /* 0xd090 */ { true, 0xd090, 0xd090 }, /* 0xd091 */ { true, 0xd091, 0xd091 }, /* 0xd092 */ { true, 0xd092, 0xd092 }, /* 0xd093 */ { true, 0xd093, 0xd093 }, /* 0xd094 */ { true, 0xd094, 0xd094 }, /* 0xd095 */ { true, 0xd095, 0xd095 }, /* 0xd096 */ { true, 0xd096, 0xd096 }, /* 0xd097 */ { true, 0xd097, 0xd097 }, /* 0xd098 */ { true, 0xd098, 0xd098 }, /* 0xd099 */ { true, 0xd099, 0xd099 }, /* 0xd09a */ { true, 0xd09a, 0xd09a }, /* 0xd09b */ { true, 0xd09b, 0xd09b }, /* 0xd09c */ { true, 0xd09c, 0xd09c }, /* 0xd09d */ { true, 0xd09d, 0xd09d }, /* 0xd09e */ { true, 0xd09e, 0xd09e }, /* 0xd09f */ { true, 0xd09f, 0xd09f }, /* 0xd0a0 */ { true, 0xd0a0, 0xd0a0 }, /* 0xd0a1 */ { true, 0xd0a1, 0xd0a1 }, /* 0xd0a2 */ { true, 0xd0a2, 0xd0a2 }, /* 0xd0a3 */ { true, 0xd0a3, 0xd0a3 }, /* 0xd0a4 */ { true, 0xd0a4, 0xd0a4 }, /* 0xd0a5 */ { true, 0xd0a5, 0xd0a5 }, /* 0xd0a6 */ { true, 0xd0a6, 0xd0a6 }, /* 0xd0a7 */ { true, 0xd0a7, 0xd0a7 }, /* 0xd0a8 */ { true, 0xd0a8, 0xd0a8 }, /* 0xd0a9 */ { true, 0xd0a9, 0xd0a9 }, /* 0xd0aa */ { true, 0xd0aa, 0xd0aa }, /* 0xd0ab */ { true, 0xd0ab, 0xd0ab }, /* 0xd0ac */ { true, 0xd0ac, 0xd0ac }, /* 0xd0ad */ { true, 0xd0ad, 0xd0ad }, /* 0xd0ae */ { true, 0xd0ae, 0xd0ae }, /* 0xd0af */ { true, 0xd0af, 0xd0af }, /* 0xd0b0 */ { true, 0xd0b0, 0xd0b0 }, /* 0xd0b1 */ { true, 0xd0b1, 0xd0b1 }, /* 0xd0b2 */ { true, 0xd0b2, 0xd0b2 }, /* 0xd0b3 */ { true, 0xd0b3, 0xd0b3 }, /* 0xd0b4 */ { true, 0xd0b4, 0xd0b4 }, /* 0xd0b5 */ { true, 0xd0b5, 0xd0b5 }, /* 0xd0b6 */ { true, 0xd0b6, 0xd0b6 }, /* 0xd0b7 */ { true, 0xd0b7, 0xd0b7 }, /* 0xd0b8 */ { true, 0xd0b8, 0xd0b8 }, /* 0xd0b9 */ { true, 0xd0b9, 0xd0b9 }, /* 0xd0ba */ { true, 0xd0ba, 0xd0ba }, /* 0xd0bb */ { true, 0xd0bb, 0xd0bb }, /* 0xd0bc */ { true, 0xd0bc, 0xd0bc }, /* 0xd0bd */ { true, 0xd0bd, 0xd0bd }, /* 0xd0be */ { true, 0xd0be, 0xd0be }, /* 0xd0bf */ { true, 0xd0bf, 0xd0bf }, /* 0xd0c0 */ { true, 0xd0c0, 0xd0c0 }, /* 0xd0c1 */ { true, 0xd0c1, 0xd0c1 }, /* 0xd0c2 */ { true, 0xd0c2, 0xd0c2 }, /* 0xd0c3 */ { true, 0xd0c3, 0xd0c3 }, /* 0xd0c4 */ { true, 0xd0c4, 0xd0c4 }, /* 0xd0c5 */ { true, 0xd0c5, 0xd0c5 }, /* 0xd0c6 */ { true, 0xd0c6, 0xd0c6 }, /* 0xd0c7 */ { true, 0xd0c7, 0xd0c7 }, /* 0xd0c8 */ { true, 0xd0c8, 0xd0c8 }, /* 0xd0c9 */ { true, 0xd0c9, 0xd0c9 }, /* 0xd0ca */ { true, 0xd0ca, 0xd0ca }, /* 0xd0cb */ { true, 0xd0cb, 0xd0cb }, /* 0xd0cc */ { true, 0xd0cc, 0xd0cc }, /* 0xd0cd */ { true, 0xd0cd, 0xd0cd }, /* 0xd0ce */ { true, 0xd0ce, 0xd0ce }, /* 0xd0cf */ { true, 0xd0cf, 0xd0cf }, /* 0xd0d0 */ { true, 0xd0d0, 0xd0d0 }, /* 0xd0d1 */ { true, 0xd0d1, 0xd0d1 }, /* 0xd0d2 */ { true, 0xd0d2, 0xd0d2 }, /* 0xd0d3 */ { true, 0xd0d3, 0xd0d3 }, /* 0xd0d4 */ { true, 0xd0d4, 0xd0d4 }, /* 0xd0d5 */ { true, 0xd0d5, 0xd0d5 }, /* 0xd0d6 */ { true, 0xd0d6, 0xd0d6 }, /* 0xd0d7 */ { true, 0xd0d7, 0xd0d7 }, /* 0xd0d8 */ { true, 0xd0d8, 0xd0d8 }, /* 0xd0d9 */ { true, 0xd0d9, 0xd0d9 }, /* 0xd0da */ { true, 0xd0da, 0xd0da }, /* 0xd0db */ { true, 0xd0db, 0xd0db }, /* 0xd0dc */ { true, 0xd0dc, 0xd0dc }, /* 0xd0dd */ { true, 0xd0dd, 0xd0dd }, /* 0xd0de */ { true, 0xd0de, 0xd0de }, /* 0xd0df */ { true, 0xd0df, 0xd0df }, /* 0xd0e0 */ { true, 0xd0e0, 0xd0e0 }, /* 0xd0e1 */ { true, 0xd0e1, 0xd0e1 }, /* 0xd0e2 */ { true, 0xd0e2, 0xd0e2 }, /* 0xd0e3 */ { true, 0xd0e3, 0xd0e3 }, /* 0xd0e4 */ { true, 0xd0e4, 0xd0e4 }, /* 0xd0e5 */ { true, 0xd0e5, 0xd0e5 }, /* 0xd0e6 */ { true, 0xd0e6, 0xd0e6 }, /* 0xd0e7 */ { true, 0xd0e7, 0xd0e7 }, /* 0xd0e8 */ { true, 0xd0e8, 0xd0e8 }, /* 0xd0e9 */ { true, 0xd0e9, 0xd0e9 }, /* 0xd0ea */ { true, 0xd0ea, 0xd0ea }, /* 0xd0eb */ { true, 0xd0eb, 0xd0eb }, /* 0xd0ec */ { true, 0xd0ec, 0xd0ec }, /* 0xd0ed */ { true, 0xd0ed, 0xd0ed }, /* 0xd0ee */ { true, 0xd0ee, 0xd0ee }, /* 0xd0ef */ { true, 0xd0ef, 0xd0ef }, /* 0xd0f0 */ { true, 0xd0f0, 0xd0f0 }, /* 0xd0f1 */ { true, 0xd0f1, 0xd0f1 }, /* 0xd0f2 */ { true, 0xd0f2, 0xd0f2 }, /* 0xd0f3 */ { true, 0xd0f3, 0xd0f3 }, /* 0xd0f4 */ { true, 0xd0f4, 0xd0f4 }, /* 0xd0f5 */ { true, 0xd0f5, 0xd0f5 }, /* 0xd0f6 */ { true, 0xd0f6, 0xd0f6 }, /* 0xd0f7 */ { true, 0xd0f7, 0xd0f7 }, /* 0xd0f8 */ { true, 0xd0f8, 0xd0f8 }, /* 0xd0f9 */ { true, 0xd0f9, 0xd0f9 }, /* 0xd0fa */ { true, 0xd0fa, 0xd0fa }, /* 0xd0fb */ { true, 0xd0fb, 0xd0fb }, /* 0xd0fc */ { true, 0xd0fc, 0xd0fc }, /* 0xd0fd */ { true, 0xd0fd, 0xd0fd }, /* 0xd0fe */ { true, 0xd0fe, 0xd0fe }, /* 0xd0ff */ { true, 0xd0ff, 0xd0ff }, /* 0xd100 */ { true, 0xd100, 0xd100 }, /* 0xd101 */ { true, 0xd101, 0xd101 }, /* 0xd102 */ { true, 0xd102, 0xd102 }, /* 0xd103 */ { true, 0xd103, 0xd103 }, /* 0xd104 */ { true, 0xd104, 0xd104 }, /* 0xd105 */ { true, 0xd105, 0xd105 }, /* 0xd106 */ { true, 0xd106, 0xd106 }, /* 0xd107 */ { true, 0xd107, 0xd107 }, /* 0xd108 */ { true, 0xd108, 0xd108 }, /* 0xd109 */ { true, 0xd109, 0xd109 }, /* 0xd10a */ { true, 0xd10a, 0xd10a }, /* 0xd10b */ { true, 0xd10b, 0xd10b }, /* 0xd10c */ { true, 0xd10c, 0xd10c }, /* 0xd10d */ { true, 0xd10d, 0xd10d }, /* 0xd10e */ { true, 0xd10e, 0xd10e }, /* 0xd10f */ { true, 0xd10f, 0xd10f }, /* 0xd110 */ { true, 0xd110, 0xd110 }, /* 0xd111 */ { true, 0xd111, 0xd111 }, /* 0xd112 */ { true, 0xd112, 0xd112 }, /* 0xd113 */ { true, 0xd113, 0xd113 }, /* 0xd114 */ { true, 0xd114, 0xd114 }, /* 0xd115 */ { true, 0xd115, 0xd115 }, /* 0xd116 */ { true, 0xd116, 0xd116 }, /* 0xd117 */ { true, 0xd117, 0xd117 }, /* 0xd118 */ { true, 0xd118, 0xd118 }, /* 0xd119 */ { true, 0xd119, 0xd119 }, /* 0xd11a */ { true, 0xd11a, 0xd11a }, /* 0xd11b */ { true, 0xd11b, 0xd11b }, /* 0xd11c */ { true, 0xd11c, 0xd11c }, /* 0xd11d */ { true, 0xd11d, 0xd11d }, /* 0xd11e */ { true, 0xd11e, 0xd11e }, /* 0xd11f */ { true, 0xd11f, 0xd11f }, /* 0xd120 */ { true, 0xd120, 0xd120 }, /* 0xd121 */ { true, 0xd121, 0xd121 }, /* 0xd122 */ { true, 0xd122, 0xd122 }, /* 0xd123 */ { true, 0xd123, 0xd123 }, /* 0xd124 */ { true, 0xd124, 0xd124 }, /* 0xd125 */ { true, 0xd125, 0xd125 }, /* 0xd126 */ { true, 0xd126, 0xd126 }, /* 0xd127 */ { true, 0xd127, 0xd127 }, /* 0xd128 */ { true, 0xd128, 0xd128 }, /* 0xd129 */ { true, 0xd129, 0xd129 }, /* 0xd12a */ { true, 0xd12a, 0xd12a }, /* 0xd12b */ { true, 0xd12b, 0xd12b }, /* 0xd12c */ { true, 0xd12c, 0xd12c }, /* 0xd12d */ { true, 0xd12d, 0xd12d }, /* 0xd12e */ { true, 0xd12e, 0xd12e }, /* 0xd12f */ { true, 0xd12f, 0xd12f }, /* 0xd130 */ { true, 0xd130, 0xd130 }, /* 0xd131 */ { true, 0xd131, 0xd131 }, /* 0xd132 */ { true, 0xd132, 0xd132 }, /* 0xd133 */ { true, 0xd133, 0xd133 }, /* 0xd134 */ { true, 0xd134, 0xd134 }, /* 0xd135 */ { true, 0xd135, 0xd135 }, /* 0xd136 */ { true, 0xd136, 0xd136 }, /* 0xd137 */ { true, 0xd137, 0xd137 }, /* 0xd138 */ { true, 0xd138, 0xd138 }, /* 0xd139 */ { true, 0xd139, 0xd139 }, /* 0xd13a */ { true, 0xd13a, 0xd13a }, /* 0xd13b */ { true, 0xd13b, 0xd13b }, /* 0xd13c */ { true, 0xd13c, 0xd13c }, /* 0xd13d */ { true, 0xd13d, 0xd13d }, /* 0xd13e */ { true, 0xd13e, 0xd13e }, /* 0xd13f */ { true, 0xd13f, 0xd13f }, /* 0xd140 */ { true, 0xd140, 0xd140 }, /* 0xd141 */ { true, 0xd141, 0xd141 }, /* 0xd142 */ { true, 0xd142, 0xd142 }, /* 0xd143 */ { true, 0xd143, 0xd143 }, /* 0xd144 */ { true, 0xd144, 0xd144 }, /* 0xd145 */ { true, 0xd145, 0xd145 }, /* 0xd146 */ { true, 0xd146, 0xd146 }, /* 0xd147 */ { true, 0xd147, 0xd147 }, /* 0xd148 */ { true, 0xd148, 0xd148 }, /* 0xd149 */ { true, 0xd149, 0xd149 }, /* 0xd14a */ { true, 0xd14a, 0xd14a }, /* 0xd14b */ { true, 0xd14b, 0xd14b }, /* 0xd14c */ { true, 0xd14c, 0xd14c }, /* 0xd14d */ { true, 0xd14d, 0xd14d }, /* 0xd14e */ { true, 0xd14e, 0xd14e }, /* 0xd14f */ { true, 0xd14f, 0xd14f }, /* 0xd150 */ { true, 0xd150, 0xd150 }, /* 0xd151 */ { true, 0xd151, 0xd151 }, /* 0xd152 */ { true, 0xd152, 0xd152 }, /* 0xd153 */ { true, 0xd153, 0xd153 }, /* 0xd154 */ { true, 0xd154, 0xd154 }, /* 0xd155 */ { true, 0xd155, 0xd155 }, /* 0xd156 */ { true, 0xd156, 0xd156 }, /* 0xd157 */ { true, 0xd157, 0xd157 }, /* 0xd158 */ { true, 0xd158, 0xd158 }, /* 0xd159 */ { true, 0xd159, 0xd159 }, /* 0xd15a */ { true, 0xd15a, 0xd15a }, /* 0xd15b */ { true, 0xd15b, 0xd15b }, /* 0xd15c */ { true, 0xd15c, 0xd15c }, /* 0xd15d */ { true, 0xd15d, 0xd15d }, /* 0xd15e */ { true, 0xd15e, 0xd15e }, /* 0xd15f */ { true, 0xd15f, 0xd15f }, /* 0xd160 */ { true, 0xd160, 0xd160 }, /* 0xd161 */ { true, 0xd161, 0xd161 }, /* 0xd162 */ { true, 0xd162, 0xd162 }, /* 0xd163 */ { true, 0xd163, 0xd163 }, /* 0xd164 */ { true, 0xd164, 0xd164 }, /* 0xd165 */ { true, 0xd165, 0xd165 }, /* 0xd166 */ { true, 0xd166, 0xd166 }, /* 0xd167 */ { true, 0xd167, 0xd167 }, /* 0xd168 */ { true, 0xd168, 0xd168 }, /* 0xd169 */ { true, 0xd169, 0xd169 }, /* 0xd16a */ { true, 0xd16a, 0xd16a }, /* 0xd16b */ { true, 0xd16b, 0xd16b }, /* 0xd16c */ { true, 0xd16c, 0xd16c }, /* 0xd16d */ { true, 0xd16d, 0xd16d }, /* 0xd16e */ { true, 0xd16e, 0xd16e }, /* 0xd16f */ { true, 0xd16f, 0xd16f }, /* 0xd170 */ { true, 0xd170, 0xd170 }, /* 0xd171 */ { true, 0xd171, 0xd171 }, /* 0xd172 */ { true, 0xd172, 0xd172 }, /* 0xd173 */ { true, 0xd173, 0xd173 }, /* 0xd174 */ { true, 0xd174, 0xd174 }, /* 0xd175 */ { true, 0xd175, 0xd175 }, /* 0xd176 */ { true, 0xd176, 0xd176 }, /* 0xd177 */ { true, 0xd177, 0xd177 }, /* 0xd178 */ { true, 0xd178, 0xd178 }, /* 0xd179 */ { true, 0xd179, 0xd179 }, /* 0xd17a */ { true, 0xd17a, 0xd17a }, /* 0xd17b */ { true, 0xd17b, 0xd17b }, /* 0xd17c */ { true, 0xd17c, 0xd17c }, /* 0xd17d */ { true, 0xd17d, 0xd17d }, /* 0xd17e */ { true, 0xd17e, 0xd17e }, /* 0xd17f */ { true, 0xd17f, 0xd17f }, /* 0xd180 */ { true, 0xd180, 0xd180 }, /* 0xd181 */ { true, 0xd181, 0xd181 }, /* 0xd182 */ { true, 0xd182, 0xd182 }, /* 0xd183 */ { true, 0xd183, 0xd183 }, /* 0xd184 */ { true, 0xd184, 0xd184 }, /* 0xd185 */ { true, 0xd185, 0xd185 }, /* 0xd186 */ { true, 0xd186, 0xd186 }, /* 0xd187 */ { true, 0xd187, 0xd187 }, /* 0xd188 */ { true, 0xd188, 0xd188 }, /* 0xd189 */ { true, 0xd189, 0xd189 }, /* 0xd18a */ { true, 0xd18a, 0xd18a }, /* 0xd18b */ { true, 0xd18b, 0xd18b }, /* 0xd18c */ { true, 0xd18c, 0xd18c }, /* 0xd18d */ { true, 0xd18d, 0xd18d }, /* 0xd18e */ { true, 0xd18e, 0xd18e }, /* 0xd18f */ { true, 0xd18f, 0xd18f }, /* 0xd190 */ { true, 0xd190, 0xd190 }, /* 0xd191 */ { true, 0xd191, 0xd191 }, /* 0xd192 */ { true, 0xd192, 0xd192 }, /* 0xd193 */ { true, 0xd193, 0xd193 }, /* 0xd194 */ { true, 0xd194, 0xd194 }, /* 0xd195 */ { true, 0xd195, 0xd195 }, /* 0xd196 */ { true, 0xd196, 0xd196 }, /* 0xd197 */ { true, 0xd197, 0xd197 }, /* 0xd198 */ { true, 0xd198, 0xd198 }, /* 0xd199 */ { true, 0xd199, 0xd199 }, /* 0xd19a */ { true, 0xd19a, 0xd19a }, /* 0xd19b */ { true, 0xd19b, 0xd19b }, /* 0xd19c */ { true, 0xd19c, 0xd19c }, /* 0xd19d */ { true, 0xd19d, 0xd19d }, /* 0xd19e */ { true, 0xd19e, 0xd19e }, /* 0xd19f */ { true, 0xd19f, 0xd19f }, /* 0xd1a0 */ { true, 0xd1a0, 0xd1a0 }, /* 0xd1a1 */ { true, 0xd1a1, 0xd1a1 }, /* 0xd1a2 */ { true, 0xd1a2, 0xd1a2 }, /* 0xd1a3 */ { true, 0xd1a3, 0xd1a3 }, /* 0xd1a4 */ { true, 0xd1a4, 0xd1a4 }, /* 0xd1a5 */ { true, 0xd1a5, 0xd1a5 }, /* 0xd1a6 */ { true, 0xd1a6, 0xd1a6 }, /* 0xd1a7 */ { true, 0xd1a7, 0xd1a7 }, /* 0xd1a8 */ { true, 0xd1a8, 0xd1a8 }, /* 0xd1a9 */ { true, 0xd1a9, 0xd1a9 }, /* 0xd1aa */ { true, 0xd1aa, 0xd1aa }, /* 0xd1ab */ { true, 0xd1ab, 0xd1ab }, /* 0xd1ac */ { true, 0xd1ac, 0xd1ac }, /* 0xd1ad */ { true, 0xd1ad, 0xd1ad }, /* 0xd1ae */ { true, 0xd1ae, 0xd1ae }, /* 0xd1af */ { true, 0xd1af, 0xd1af }, /* 0xd1b0 */ { true, 0xd1b0, 0xd1b0 }, /* 0xd1b1 */ { true, 0xd1b1, 0xd1b1 }, /* 0xd1b2 */ { true, 0xd1b2, 0xd1b2 }, /* 0xd1b3 */ { true, 0xd1b3, 0xd1b3 }, /* 0xd1b4 */ { true, 0xd1b4, 0xd1b4 }, /* 0xd1b5 */ { true, 0xd1b5, 0xd1b5 }, /* 0xd1b6 */ { true, 0xd1b6, 0xd1b6 }, /* 0xd1b7 */ { true, 0xd1b7, 0xd1b7 }, /* 0xd1b8 */ { true, 0xd1b8, 0xd1b8 }, /* 0xd1b9 */ { true, 0xd1b9, 0xd1b9 }, /* 0xd1ba */ { true, 0xd1ba, 0xd1ba }, /* 0xd1bb */ { true, 0xd1bb, 0xd1bb }, /* 0xd1bc */ { true, 0xd1bc, 0xd1bc }, /* 0xd1bd */ { true, 0xd1bd, 0xd1bd }, /* 0xd1be */ { true, 0xd1be, 0xd1be }, /* 0xd1bf */ { true, 0xd1bf, 0xd1bf }, /* 0xd1c0 */ { true, 0xd1c0, 0xd1c0 }, /* 0xd1c1 */ { true, 0xd1c1, 0xd1c1 }, /* 0xd1c2 */ { true, 0xd1c2, 0xd1c2 }, /* 0xd1c3 */ { true, 0xd1c3, 0xd1c3 }, /* 0xd1c4 */ { true, 0xd1c4, 0xd1c4 }, /* 0xd1c5 */ { true, 0xd1c5, 0xd1c5 }, /* 0xd1c6 */ { true, 0xd1c6, 0xd1c6 }, /* 0xd1c7 */ { true, 0xd1c7, 0xd1c7 }, /* 0xd1c8 */ { true, 0xd1c8, 0xd1c8 }, /* 0xd1c9 */ { true, 0xd1c9, 0xd1c9 }, /* 0xd1ca */ { true, 0xd1ca, 0xd1ca }, /* 0xd1cb */ { true, 0xd1cb, 0xd1cb }, /* 0xd1cc */ { true, 0xd1cc, 0xd1cc }, /* 0xd1cd */ { true, 0xd1cd, 0xd1cd }, /* 0xd1ce */ { true, 0xd1ce, 0xd1ce }, /* 0xd1cf */ { true, 0xd1cf, 0xd1cf }, /* 0xd1d0 */ { true, 0xd1d0, 0xd1d0 }, /* 0xd1d1 */ { true, 0xd1d1, 0xd1d1 }, /* 0xd1d2 */ { true, 0xd1d2, 0xd1d2 }, /* 0xd1d3 */ { true, 0xd1d3, 0xd1d3 }, /* 0xd1d4 */ { true, 0xd1d4, 0xd1d4 }, /* 0xd1d5 */ { true, 0xd1d5, 0xd1d5 }, /* 0xd1d6 */ { true, 0xd1d6, 0xd1d6 }, /* 0xd1d7 */ { true, 0xd1d7, 0xd1d7 }, /* 0xd1d8 */ { true, 0xd1d8, 0xd1d8 }, /* 0xd1d9 */ { true, 0xd1d9, 0xd1d9 }, /* 0xd1da */ { true, 0xd1da, 0xd1da }, /* 0xd1db */ { true, 0xd1db, 0xd1db }, /* 0xd1dc */ { true, 0xd1dc, 0xd1dc }, /* 0xd1dd */ { true, 0xd1dd, 0xd1dd }, /* 0xd1de */ { true, 0xd1de, 0xd1de }, /* 0xd1df */ { true, 0xd1df, 0xd1df }, /* 0xd1e0 */ { true, 0xd1e0, 0xd1e0 }, /* 0xd1e1 */ { true, 0xd1e1, 0xd1e1 }, /* 0xd1e2 */ { true, 0xd1e2, 0xd1e2 }, /* 0xd1e3 */ { true, 0xd1e3, 0xd1e3 }, /* 0xd1e4 */ { true, 0xd1e4, 0xd1e4 }, /* 0xd1e5 */ { true, 0xd1e5, 0xd1e5 }, /* 0xd1e6 */ { true, 0xd1e6, 0xd1e6 }, /* 0xd1e7 */ { true, 0xd1e7, 0xd1e7 }, /* 0xd1e8 */ { true, 0xd1e8, 0xd1e8 }, /* 0xd1e9 */ { true, 0xd1e9, 0xd1e9 }, /* 0xd1ea */ { true, 0xd1ea, 0xd1ea }, /* 0xd1eb */ { true, 0xd1eb, 0xd1eb }, /* 0xd1ec */ { true, 0xd1ec, 0xd1ec }, /* 0xd1ed */ { true, 0xd1ed, 0xd1ed }, /* 0xd1ee */ { true, 0xd1ee, 0xd1ee }, /* 0xd1ef */ { true, 0xd1ef, 0xd1ef }, /* 0xd1f0 */ { true, 0xd1f0, 0xd1f0 }, /* 0xd1f1 */ { true, 0xd1f1, 0xd1f1 }, /* 0xd1f2 */ { true, 0xd1f2, 0xd1f2 }, /* 0xd1f3 */ { true, 0xd1f3, 0xd1f3 }, /* 0xd1f4 */ { true, 0xd1f4, 0xd1f4 }, /* 0xd1f5 */ { true, 0xd1f5, 0xd1f5 }, /* 0xd1f6 */ { true, 0xd1f6, 0xd1f6 }, /* 0xd1f7 */ { true, 0xd1f7, 0xd1f7 }, /* 0xd1f8 */ { true, 0xd1f8, 0xd1f8 }, /* 0xd1f9 */ { true, 0xd1f9, 0xd1f9 }, /* 0xd1fa */ { true, 0xd1fa, 0xd1fa }, /* 0xd1fb */ { true, 0xd1fb, 0xd1fb }, /* 0xd1fc */ { true, 0xd1fc, 0xd1fc }, /* 0xd1fd */ { true, 0xd1fd, 0xd1fd }, /* 0xd1fe */ { true, 0xd1fe, 0xd1fe }, /* 0xd1ff */ { true, 0xd1ff, 0xd1ff }, /* 0xd200 */ { true, 0xd200, 0xd200 }, /* 0xd201 */ { true, 0xd201, 0xd201 }, /* 0xd202 */ { true, 0xd202, 0xd202 }, /* 0xd203 */ { true, 0xd203, 0xd203 }, /* 0xd204 */ { true, 0xd204, 0xd204 }, /* 0xd205 */ { true, 0xd205, 0xd205 }, /* 0xd206 */ { true, 0xd206, 0xd206 }, /* 0xd207 */ { true, 0xd207, 0xd207 }, /* 0xd208 */ { true, 0xd208, 0xd208 }, /* 0xd209 */ { true, 0xd209, 0xd209 }, /* 0xd20a */ { true, 0xd20a, 0xd20a }, /* 0xd20b */ { true, 0xd20b, 0xd20b }, /* 0xd20c */ { true, 0xd20c, 0xd20c }, /* 0xd20d */ { true, 0xd20d, 0xd20d }, /* 0xd20e */ { true, 0xd20e, 0xd20e }, /* 0xd20f */ { true, 0xd20f, 0xd20f }, /* 0xd210 */ { true, 0xd210, 0xd210 }, /* 0xd211 */ { true, 0xd211, 0xd211 }, /* 0xd212 */ { true, 0xd212, 0xd212 }, /* 0xd213 */ { true, 0xd213, 0xd213 }, /* 0xd214 */ { true, 0xd214, 0xd214 }, /* 0xd215 */ { true, 0xd215, 0xd215 }, /* 0xd216 */ { true, 0xd216, 0xd216 }, /* 0xd217 */ { true, 0xd217, 0xd217 }, /* 0xd218 */ { true, 0xd218, 0xd218 }, /* 0xd219 */ { true, 0xd219, 0xd219 }, /* 0xd21a */ { true, 0xd21a, 0xd21a }, /* 0xd21b */ { true, 0xd21b, 0xd21b }, /* 0xd21c */ { true, 0xd21c, 0xd21c }, /* 0xd21d */ { true, 0xd21d, 0xd21d }, /* 0xd21e */ { true, 0xd21e, 0xd21e }, /* 0xd21f */ { true, 0xd21f, 0xd21f }, /* 0xd220 */ { true, 0xd220, 0xd220 }, /* 0xd221 */ { true, 0xd221, 0xd221 }, /* 0xd222 */ { true, 0xd222, 0xd222 }, /* 0xd223 */ { true, 0xd223, 0xd223 }, /* 0xd224 */ { true, 0xd224, 0xd224 }, /* 0xd225 */ { true, 0xd225, 0xd225 }, /* 0xd226 */ { true, 0xd226, 0xd226 }, /* 0xd227 */ { true, 0xd227, 0xd227 }, /* 0xd228 */ { true, 0xd228, 0xd228 }, /* 0xd229 */ { true, 0xd229, 0xd229 }, /* 0xd22a */ { true, 0xd22a, 0xd22a }, /* 0xd22b */ { true, 0xd22b, 0xd22b }, /* 0xd22c */ { true, 0xd22c, 0xd22c }, /* 0xd22d */ { true, 0xd22d, 0xd22d }, /* 0xd22e */ { true, 0xd22e, 0xd22e }, /* 0xd22f */ { true, 0xd22f, 0xd22f }, /* 0xd230 */ { true, 0xd230, 0xd230 }, /* 0xd231 */ { true, 0xd231, 0xd231 }, /* 0xd232 */ { true, 0xd232, 0xd232 }, /* 0xd233 */ { true, 0xd233, 0xd233 }, /* 0xd234 */ { true, 0xd234, 0xd234 }, /* 0xd235 */ { true, 0xd235, 0xd235 }, /* 0xd236 */ { true, 0xd236, 0xd236 }, /* 0xd237 */ { true, 0xd237, 0xd237 }, /* 0xd238 */ { true, 0xd238, 0xd238 }, /* 0xd239 */ { true, 0xd239, 0xd239 }, /* 0xd23a */ { true, 0xd23a, 0xd23a }, /* 0xd23b */ { true, 0xd23b, 0xd23b }, /* 0xd23c */ { true, 0xd23c, 0xd23c }, /* 0xd23d */ { true, 0xd23d, 0xd23d }, /* 0xd23e */ { true, 0xd23e, 0xd23e }, /* 0xd23f */ { true, 0xd23f, 0xd23f }, /* 0xd240 */ { true, 0xd240, 0xd240 }, /* 0xd241 */ { true, 0xd241, 0xd241 }, /* 0xd242 */ { true, 0xd242, 0xd242 }, /* 0xd243 */ { true, 0xd243, 0xd243 }, /* 0xd244 */ { true, 0xd244, 0xd244 }, /* 0xd245 */ { true, 0xd245, 0xd245 }, /* 0xd246 */ { true, 0xd246, 0xd246 }, /* 0xd247 */ { true, 0xd247, 0xd247 }, /* 0xd248 */ { true, 0xd248, 0xd248 }, /* 0xd249 */ { true, 0xd249, 0xd249 }, /* 0xd24a */ { true, 0xd24a, 0xd24a }, /* 0xd24b */ { true, 0xd24b, 0xd24b }, /* 0xd24c */ { true, 0xd24c, 0xd24c }, /* 0xd24d */ { true, 0xd24d, 0xd24d }, /* 0xd24e */ { true, 0xd24e, 0xd24e }, /* 0xd24f */ { true, 0xd24f, 0xd24f }, /* 0xd250 */ { true, 0xd250, 0xd250 }, /* 0xd251 */ { true, 0xd251, 0xd251 }, /* 0xd252 */ { true, 0xd252, 0xd252 }, /* 0xd253 */ { true, 0xd253, 0xd253 }, /* 0xd254 */ { true, 0xd254, 0xd254 }, /* 0xd255 */ { true, 0xd255, 0xd255 }, /* 0xd256 */ { true, 0xd256, 0xd256 }, /* 0xd257 */ { true, 0xd257, 0xd257 }, /* 0xd258 */ { true, 0xd258, 0xd258 }, /* 0xd259 */ { true, 0xd259, 0xd259 }, /* 0xd25a */ { true, 0xd25a, 0xd25a }, /* 0xd25b */ { true, 0xd25b, 0xd25b }, /* 0xd25c */ { true, 0xd25c, 0xd25c }, /* 0xd25d */ { true, 0xd25d, 0xd25d }, /* 0xd25e */ { true, 0xd25e, 0xd25e }, /* 0xd25f */ { true, 0xd25f, 0xd25f }, /* 0xd260 */ { true, 0xd260, 0xd260 }, /* 0xd261 */ { true, 0xd261, 0xd261 }, /* 0xd262 */ { true, 0xd262, 0xd262 }, /* 0xd263 */ { true, 0xd263, 0xd263 }, /* 0xd264 */ { true, 0xd264, 0xd264 }, /* 0xd265 */ { true, 0xd265, 0xd265 }, /* 0xd266 */ { true, 0xd266, 0xd266 }, /* 0xd267 */ { true, 0xd267, 0xd267 }, /* 0xd268 */ { true, 0xd268, 0xd268 }, /* 0xd269 */ { true, 0xd269, 0xd269 }, /* 0xd26a */ { true, 0xd26a, 0xd26a }, /* 0xd26b */ { true, 0xd26b, 0xd26b }, /* 0xd26c */ { true, 0xd26c, 0xd26c }, /* 0xd26d */ { true, 0xd26d, 0xd26d }, /* 0xd26e */ { true, 0xd26e, 0xd26e }, /* 0xd26f */ { true, 0xd26f, 0xd26f }, /* 0xd270 */ { true, 0xd270, 0xd270 }, /* 0xd271 */ { true, 0xd271, 0xd271 }, /* 0xd272 */ { true, 0xd272, 0xd272 }, /* 0xd273 */ { true, 0xd273, 0xd273 }, /* 0xd274 */ { true, 0xd274, 0xd274 }, /* 0xd275 */ { true, 0xd275, 0xd275 }, /* 0xd276 */ { true, 0xd276, 0xd276 }, /* 0xd277 */ { true, 0xd277, 0xd277 }, /* 0xd278 */ { true, 0xd278, 0xd278 }, /* 0xd279 */ { true, 0xd279, 0xd279 }, /* 0xd27a */ { true, 0xd27a, 0xd27a }, /* 0xd27b */ { true, 0xd27b, 0xd27b }, /* 0xd27c */ { true, 0xd27c, 0xd27c }, /* 0xd27d */ { true, 0xd27d, 0xd27d }, /* 0xd27e */ { true, 0xd27e, 0xd27e }, /* 0xd27f */ { true, 0xd27f, 0xd27f }, /* 0xd280 */ { true, 0xd280, 0xd280 }, /* 0xd281 */ { true, 0xd281, 0xd281 }, /* 0xd282 */ { true, 0xd282, 0xd282 }, /* 0xd283 */ { true, 0xd283, 0xd283 }, /* 0xd284 */ { true, 0xd284, 0xd284 }, /* 0xd285 */ { true, 0xd285, 0xd285 }, /* 0xd286 */ { true, 0xd286, 0xd286 }, /* 0xd287 */ { true, 0xd287, 0xd287 }, /* 0xd288 */ { true, 0xd288, 0xd288 }, /* 0xd289 */ { true, 0xd289, 0xd289 }, /* 0xd28a */ { true, 0xd28a, 0xd28a }, /* 0xd28b */ { true, 0xd28b, 0xd28b }, /* 0xd28c */ { true, 0xd28c, 0xd28c }, /* 0xd28d */ { true, 0xd28d, 0xd28d }, /* 0xd28e */ { true, 0xd28e, 0xd28e }, /* 0xd28f */ { true, 0xd28f, 0xd28f }, /* 0xd290 */ { true, 0xd290, 0xd290 }, /* 0xd291 */ { true, 0xd291, 0xd291 }, /* 0xd292 */ { true, 0xd292, 0xd292 }, /* 0xd293 */ { true, 0xd293, 0xd293 }, /* 0xd294 */ { true, 0xd294, 0xd294 }, /* 0xd295 */ { true, 0xd295, 0xd295 }, /* 0xd296 */ { true, 0xd296, 0xd296 }, /* 0xd297 */ { true, 0xd297, 0xd297 }, /* 0xd298 */ { true, 0xd298, 0xd298 }, /* 0xd299 */ { true, 0xd299, 0xd299 }, /* 0xd29a */ { true, 0xd29a, 0xd29a }, /* 0xd29b */ { true, 0xd29b, 0xd29b }, /* 0xd29c */ { true, 0xd29c, 0xd29c }, /* 0xd29d */ { true, 0xd29d, 0xd29d }, /* 0xd29e */ { true, 0xd29e, 0xd29e }, /* 0xd29f */ { true, 0xd29f, 0xd29f }, /* 0xd2a0 */ { true, 0xd2a0, 0xd2a0 }, /* 0xd2a1 */ { true, 0xd2a1, 0xd2a1 }, /* 0xd2a2 */ { true, 0xd2a2, 0xd2a2 }, /* 0xd2a3 */ { true, 0xd2a3, 0xd2a3 }, /* 0xd2a4 */ { true, 0xd2a4, 0xd2a4 }, /* 0xd2a5 */ { true, 0xd2a5, 0xd2a5 }, /* 0xd2a6 */ { true, 0xd2a6, 0xd2a6 }, /* 0xd2a7 */ { true, 0xd2a7, 0xd2a7 }, /* 0xd2a8 */ { true, 0xd2a8, 0xd2a8 }, /* 0xd2a9 */ { true, 0xd2a9, 0xd2a9 }, /* 0xd2aa */ { true, 0xd2aa, 0xd2aa }, /* 0xd2ab */ { true, 0xd2ab, 0xd2ab }, /* 0xd2ac */ { true, 0xd2ac, 0xd2ac }, /* 0xd2ad */ { true, 0xd2ad, 0xd2ad }, /* 0xd2ae */ { true, 0xd2ae, 0xd2ae }, /* 0xd2af */ { true, 0xd2af, 0xd2af }, /* 0xd2b0 */ { true, 0xd2b0, 0xd2b0 }, /* 0xd2b1 */ { true, 0xd2b1, 0xd2b1 }, /* 0xd2b2 */ { true, 0xd2b2, 0xd2b2 }, /* 0xd2b3 */ { true, 0xd2b3, 0xd2b3 }, /* 0xd2b4 */ { true, 0xd2b4, 0xd2b4 }, /* 0xd2b5 */ { true, 0xd2b5, 0xd2b5 }, /* 0xd2b6 */ { true, 0xd2b6, 0xd2b6 }, /* 0xd2b7 */ { true, 0xd2b7, 0xd2b7 }, /* 0xd2b8 */ { true, 0xd2b8, 0xd2b8 }, /* 0xd2b9 */ { true, 0xd2b9, 0xd2b9 }, /* 0xd2ba */ { true, 0xd2ba, 0xd2ba }, /* 0xd2bb */ { true, 0xd2bb, 0xd2bb }, /* 0xd2bc */ { true, 0xd2bc, 0xd2bc }, /* 0xd2bd */ { true, 0xd2bd, 0xd2bd }, /* 0xd2be */ { true, 0xd2be, 0xd2be }, /* 0xd2bf */ { true, 0xd2bf, 0xd2bf }, /* 0xd2c0 */ { true, 0xd2c0, 0xd2c0 }, /* 0xd2c1 */ { true, 0xd2c1, 0xd2c1 }, /* 0xd2c2 */ { true, 0xd2c2, 0xd2c2 }, /* 0xd2c3 */ { true, 0xd2c3, 0xd2c3 }, /* 0xd2c4 */ { true, 0xd2c4, 0xd2c4 }, /* 0xd2c5 */ { true, 0xd2c5, 0xd2c5 }, /* 0xd2c6 */ { true, 0xd2c6, 0xd2c6 }, /* 0xd2c7 */ { true, 0xd2c7, 0xd2c7 }, /* 0xd2c8 */ { true, 0xd2c8, 0xd2c8 }, /* 0xd2c9 */ { true, 0xd2c9, 0xd2c9 }, /* 0xd2ca */ { true, 0xd2ca, 0xd2ca }, /* 0xd2cb */ { true, 0xd2cb, 0xd2cb }, /* 0xd2cc */ { true, 0xd2cc, 0xd2cc }, /* 0xd2cd */ { true, 0xd2cd, 0xd2cd }, /* 0xd2ce */ { true, 0xd2ce, 0xd2ce }, /* 0xd2cf */ { true, 0xd2cf, 0xd2cf }, /* 0xd2d0 */ { true, 0xd2d0, 0xd2d0 }, /* 0xd2d1 */ { true, 0xd2d1, 0xd2d1 }, /* 0xd2d2 */ { true, 0xd2d2, 0xd2d2 }, /* 0xd2d3 */ { true, 0xd2d3, 0xd2d3 }, /* 0xd2d4 */ { true, 0xd2d4, 0xd2d4 }, /* 0xd2d5 */ { true, 0xd2d5, 0xd2d5 }, /* 0xd2d6 */ { true, 0xd2d6, 0xd2d6 }, /* 0xd2d7 */ { true, 0xd2d7, 0xd2d7 }, /* 0xd2d8 */ { true, 0xd2d8, 0xd2d8 }, /* 0xd2d9 */ { true, 0xd2d9, 0xd2d9 }, /* 0xd2da */ { true, 0xd2da, 0xd2da }, /* 0xd2db */ { true, 0xd2db, 0xd2db }, /* 0xd2dc */ { true, 0xd2dc, 0xd2dc }, /* 0xd2dd */ { true, 0xd2dd, 0xd2dd }, /* 0xd2de */ { true, 0xd2de, 0xd2de }, /* 0xd2df */ { true, 0xd2df, 0xd2df }, /* 0xd2e0 */ { true, 0xd2e0, 0xd2e0 }, /* 0xd2e1 */ { true, 0xd2e1, 0xd2e1 }, /* 0xd2e2 */ { true, 0xd2e2, 0xd2e2 }, /* 0xd2e3 */ { true, 0xd2e3, 0xd2e3 }, /* 0xd2e4 */ { true, 0xd2e4, 0xd2e4 }, /* 0xd2e5 */ { true, 0xd2e5, 0xd2e5 }, /* 0xd2e6 */ { true, 0xd2e6, 0xd2e6 }, /* 0xd2e7 */ { true, 0xd2e7, 0xd2e7 }, /* 0xd2e8 */ { true, 0xd2e8, 0xd2e8 }, /* 0xd2e9 */ { true, 0xd2e9, 0xd2e9 }, /* 0xd2ea */ { true, 0xd2ea, 0xd2ea }, /* 0xd2eb */ { true, 0xd2eb, 0xd2eb }, /* 0xd2ec */ { true, 0xd2ec, 0xd2ec }, /* 0xd2ed */ { true, 0xd2ed, 0xd2ed }, /* 0xd2ee */ { true, 0xd2ee, 0xd2ee }, /* 0xd2ef */ { true, 0xd2ef, 0xd2ef }, /* 0xd2f0 */ { true, 0xd2f0, 0xd2f0 }, /* 0xd2f1 */ { true, 0xd2f1, 0xd2f1 }, /* 0xd2f2 */ { true, 0xd2f2, 0xd2f2 }, /* 0xd2f3 */ { true, 0xd2f3, 0xd2f3 }, /* 0xd2f4 */ { true, 0xd2f4, 0xd2f4 }, /* 0xd2f5 */ { true, 0xd2f5, 0xd2f5 }, /* 0xd2f6 */ { true, 0xd2f6, 0xd2f6 }, /* 0xd2f7 */ { true, 0xd2f7, 0xd2f7 }, /* 0xd2f8 */ { true, 0xd2f8, 0xd2f8 }, /* 0xd2f9 */ { true, 0xd2f9, 0xd2f9 }, /* 0xd2fa */ { true, 0xd2fa, 0xd2fa }, /* 0xd2fb */ { true, 0xd2fb, 0xd2fb }, /* 0xd2fc */ { true, 0xd2fc, 0xd2fc }, /* 0xd2fd */ { true, 0xd2fd, 0xd2fd }, /* 0xd2fe */ { true, 0xd2fe, 0xd2fe }, /* 0xd2ff */ { true, 0xd2ff, 0xd2ff }, /* 0xd300 */ { true, 0xd300, 0xd300 }, /* 0xd301 */ { true, 0xd301, 0xd301 }, /* 0xd302 */ { true, 0xd302, 0xd302 }, /* 0xd303 */ { true, 0xd303, 0xd303 }, /* 0xd304 */ { true, 0xd304, 0xd304 }, /* 0xd305 */ { true, 0xd305, 0xd305 }, /* 0xd306 */ { true, 0xd306, 0xd306 }, /* 0xd307 */ { true, 0xd307, 0xd307 }, /* 0xd308 */ { true, 0xd308, 0xd308 }, /* 0xd309 */ { true, 0xd309, 0xd309 }, /* 0xd30a */ { true, 0xd30a, 0xd30a }, /* 0xd30b */ { true, 0xd30b, 0xd30b }, /* 0xd30c */ { true, 0xd30c, 0xd30c }, /* 0xd30d */ { true, 0xd30d, 0xd30d }, /* 0xd30e */ { true, 0xd30e, 0xd30e }, /* 0xd30f */ { true, 0xd30f, 0xd30f }, /* 0xd310 */ { true, 0xd310, 0xd310 }, /* 0xd311 */ { true, 0xd311, 0xd311 }, /* 0xd312 */ { true, 0xd312, 0xd312 }, /* 0xd313 */ { true, 0xd313, 0xd313 }, /* 0xd314 */ { true, 0xd314, 0xd314 }, /* 0xd315 */ { true, 0xd315, 0xd315 }, /* 0xd316 */ { true, 0xd316, 0xd316 }, /* 0xd317 */ { true, 0xd317, 0xd317 }, /* 0xd318 */ { true, 0xd318, 0xd318 }, /* 0xd319 */ { true, 0xd319, 0xd319 }, /* 0xd31a */ { true, 0xd31a, 0xd31a }, /* 0xd31b */ { true, 0xd31b, 0xd31b }, /* 0xd31c */ { true, 0xd31c, 0xd31c }, /* 0xd31d */ { true, 0xd31d, 0xd31d }, /* 0xd31e */ { true, 0xd31e, 0xd31e }, /* 0xd31f */ { true, 0xd31f, 0xd31f }, /* 0xd320 */ { true, 0xd320, 0xd320 }, /* 0xd321 */ { true, 0xd321, 0xd321 }, /* 0xd322 */ { true, 0xd322, 0xd322 }, /* 0xd323 */ { true, 0xd323, 0xd323 }, /* 0xd324 */ { true, 0xd324, 0xd324 }, /* 0xd325 */ { true, 0xd325, 0xd325 }, /* 0xd326 */ { true, 0xd326, 0xd326 }, /* 0xd327 */ { true, 0xd327, 0xd327 }, /* 0xd328 */ { true, 0xd328, 0xd328 }, /* 0xd329 */ { true, 0xd329, 0xd329 }, /* 0xd32a */ { true, 0xd32a, 0xd32a }, /* 0xd32b */ { true, 0xd32b, 0xd32b }, /* 0xd32c */ { true, 0xd32c, 0xd32c }, /* 0xd32d */ { true, 0xd32d, 0xd32d }, /* 0xd32e */ { true, 0xd32e, 0xd32e }, /* 0xd32f */ { true, 0xd32f, 0xd32f }, /* 0xd330 */ { true, 0xd330, 0xd330 }, /* 0xd331 */ { true, 0xd331, 0xd331 }, /* 0xd332 */ { true, 0xd332, 0xd332 }, /* 0xd333 */ { true, 0xd333, 0xd333 }, /* 0xd334 */ { true, 0xd334, 0xd334 }, /* 0xd335 */ { true, 0xd335, 0xd335 }, /* 0xd336 */ { true, 0xd336, 0xd336 }, /* 0xd337 */ { true, 0xd337, 0xd337 }, /* 0xd338 */ { true, 0xd338, 0xd338 }, /* 0xd339 */ { true, 0xd339, 0xd339 }, /* 0xd33a */ { true, 0xd33a, 0xd33a }, /* 0xd33b */ { true, 0xd33b, 0xd33b }, /* 0xd33c */ { true, 0xd33c, 0xd33c }, /* 0xd33d */ { true, 0xd33d, 0xd33d }, /* 0xd33e */ { true, 0xd33e, 0xd33e }, /* 0xd33f */ { true, 0xd33f, 0xd33f }, /* 0xd340 */ { true, 0xd340, 0xd340 }, /* 0xd341 */ { true, 0xd341, 0xd341 }, /* 0xd342 */ { true, 0xd342, 0xd342 }, /* 0xd343 */ { true, 0xd343, 0xd343 }, /* 0xd344 */ { true, 0xd344, 0xd344 }, /* 0xd345 */ { true, 0xd345, 0xd345 }, /* 0xd346 */ { true, 0xd346, 0xd346 }, /* 0xd347 */ { true, 0xd347, 0xd347 }, /* 0xd348 */ { true, 0xd348, 0xd348 }, /* 0xd349 */ { true, 0xd349, 0xd349 }, /* 0xd34a */ { true, 0xd34a, 0xd34a }, /* 0xd34b */ { true, 0xd34b, 0xd34b }, /* 0xd34c */ { true, 0xd34c, 0xd34c }, /* 0xd34d */ { true, 0xd34d, 0xd34d }, /* 0xd34e */ { true, 0xd34e, 0xd34e }, /* 0xd34f */ { true, 0xd34f, 0xd34f }, /* 0xd350 */ { true, 0xd350, 0xd350 }, /* 0xd351 */ { true, 0xd351, 0xd351 }, /* 0xd352 */ { true, 0xd352, 0xd352 }, /* 0xd353 */ { true, 0xd353, 0xd353 }, /* 0xd354 */ { true, 0xd354, 0xd354 }, /* 0xd355 */ { true, 0xd355, 0xd355 }, /* 0xd356 */ { true, 0xd356, 0xd356 }, /* 0xd357 */ { true, 0xd357, 0xd357 }, /* 0xd358 */ { true, 0xd358, 0xd358 }, /* 0xd359 */ { true, 0xd359, 0xd359 }, /* 0xd35a */ { true, 0xd35a, 0xd35a }, /* 0xd35b */ { true, 0xd35b, 0xd35b }, /* 0xd35c */ { true, 0xd35c, 0xd35c }, /* 0xd35d */ { true, 0xd35d, 0xd35d }, /* 0xd35e */ { true, 0xd35e, 0xd35e }, /* 0xd35f */ { true, 0xd35f, 0xd35f }, /* 0xd360 */ { true, 0xd360, 0xd360 }, /* 0xd361 */ { true, 0xd361, 0xd361 }, /* 0xd362 */ { true, 0xd362, 0xd362 }, /* 0xd363 */ { true, 0xd363, 0xd363 }, /* 0xd364 */ { true, 0xd364, 0xd364 }, /* 0xd365 */ { true, 0xd365, 0xd365 }, /* 0xd366 */ { true, 0xd366, 0xd366 }, /* 0xd367 */ { true, 0xd367, 0xd367 }, /* 0xd368 */ { true, 0xd368, 0xd368 }, /* 0xd369 */ { true, 0xd369, 0xd369 }, /* 0xd36a */ { true, 0xd36a, 0xd36a }, /* 0xd36b */ { true, 0xd36b, 0xd36b }, /* 0xd36c */ { true, 0xd36c, 0xd36c }, /* 0xd36d */ { true, 0xd36d, 0xd36d }, /* 0xd36e */ { true, 0xd36e, 0xd36e }, /* 0xd36f */ { true, 0xd36f, 0xd36f }, /* 0xd370 */ { true, 0xd370, 0xd370 }, /* 0xd371 */ { true, 0xd371, 0xd371 }, /* 0xd372 */ { true, 0xd372, 0xd372 }, /* 0xd373 */ { true, 0xd373, 0xd373 }, /* 0xd374 */ { true, 0xd374, 0xd374 }, /* 0xd375 */ { true, 0xd375, 0xd375 }, /* 0xd376 */ { true, 0xd376, 0xd376 }, /* 0xd377 */ { true, 0xd377, 0xd377 }, /* 0xd378 */ { true, 0xd378, 0xd378 }, /* 0xd379 */ { true, 0xd379, 0xd379 }, /* 0xd37a */ { true, 0xd37a, 0xd37a }, /* 0xd37b */ { true, 0xd37b, 0xd37b }, /* 0xd37c */ { true, 0xd37c, 0xd37c }, /* 0xd37d */ { true, 0xd37d, 0xd37d }, /* 0xd37e */ { true, 0xd37e, 0xd37e }, /* 0xd37f */ { true, 0xd37f, 0xd37f }, /* 0xd380 */ { true, 0xd380, 0xd380 }, /* 0xd381 */ { true, 0xd381, 0xd381 }, /* 0xd382 */ { true, 0xd382, 0xd382 }, /* 0xd383 */ { true, 0xd383, 0xd383 }, /* 0xd384 */ { true, 0xd384, 0xd384 }, /* 0xd385 */ { true, 0xd385, 0xd385 }, /* 0xd386 */ { true, 0xd386, 0xd386 }, /* 0xd387 */ { true, 0xd387, 0xd387 }, /* 0xd388 */ { true, 0xd388, 0xd388 }, /* 0xd389 */ { true, 0xd389, 0xd389 }, /* 0xd38a */ { true, 0xd38a, 0xd38a }, /* 0xd38b */ { true, 0xd38b, 0xd38b }, /* 0xd38c */ { true, 0xd38c, 0xd38c }, /* 0xd38d */ { true, 0xd38d, 0xd38d }, /* 0xd38e */ { true, 0xd38e, 0xd38e }, /* 0xd38f */ { true, 0xd38f, 0xd38f }, /* 0xd390 */ { true, 0xd390, 0xd390 }, /* 0xd391 */ { true, 0xd391, 0xd391 }, /* 0xd392 */ { true, 0xd392, 0xd392 }, /* 0xd393 */ { true, 0xd393, 0xd393 }, /* 0xd394 */ { true, 0xd394, 0xd394 }, /* 0xd395 */ { true, 0xd395, 0xd395 }, /* 0xd396 */ { true, 0xd396, 0xd396 }, /* 0xd397 */ { true, 0xd397, 0xd397 }, /* 0xd398 */ { true, 0xd398, 0xd398 }, /* 0xd399 */ { true, 0xd399, 0xd399 }, /* 0xd39a */ { true, 0xd39a, 0xd39a }, /* 0xd39b */ { true, 0xd39b, 0xd39b }, /* 0xd39c */ { true, 0xd39c, 0xd39c }, /* 0xd39d */ { true, 0xd39d, 0xd39d }, /* 0xd39e */ { true, 0xd39e, 0xd39e }, /* 0xd39f */ { true, 0xd39f, 0xd39f }, /* 0xd3a0 */ { true, 0xd3a0, 0xd3a0 }, /* 0xd3a1 */ { true, 0xd3a1, 0xd3a1 }, /* 0xd3a2 */ { true, 0xd3a2, 0xd3a2 }, /* 0xd3a3 */ { true, 0xd3a3, 0xd3a3 }, /* 0xd3a4 */ { true, 0xd3a4, 0xd3a4 }, /* 0xd3a5 */ { true, 0xd3a5, 0xd3a5 }, /* 0xd3a6 */ { true, 0xd3a6, 0xd3a6 }, /* 0xd3a7 */ { true, 0xd3a7, 0xd3a7 }, /* 0xd3a8 */ { true, 0xd3a8, 0xd3a8 }, /* 0xd3a9 */ { true, 0xd3a9, 0xd3a9 }, /* 0xd3aa */ { true, 0xd3aa, 0xd3aa }, /* 0xd3ab */ { true, 0xd3ab, 0xd3ab }, /* 0xd3ac */ { true, 0xd3ac, 0xd3ac }, /* 0xd3ad */ { true, 0xd3ad, 0xd3ad }, /* 0xd3ae */ { true, 0xd3ae, 0xd3ae }, /* 0xd3af */ { true, 0xd3af, 0xd3af }, /* 0xd3b0 */ { true, 0xd3b0, 0xd3b0 }, /* 0xd3b1 */ { true, 0xd3b1, 0xd3b1 }, /* 0xd3b2 */ { true, 0xd3b2, 0xd3b2 }, /* 0xd3b3 */ { true, 0xd3b3, 0xd3b3 }, /* 0xd3b4 */ { true, 0xd3b4, 0xd3b4 }, /* 0xd3b5 */ { true, 0xd3b5, 0xd3b5 }, /* 0xd3b6 */ { true, 0xd3b6, 0xd3b6 }, /* 0xd3b7 */ { true, 0xd3b7, 0xd3b7 }, /* 0xd3b8 */ { true, 0xd3b8, 0xd3b8 }, /* 0xd3b9 */ { true, 0xd3b9, 0xd3b9 }, /* 0xd3ba */ { true, 0xd3ba, 0xd3ba }, /* 0xd3bb */ { true, 0xd3bb, 0xd3bb }, /* 0xd3bc */ { true, 0xd3bc, 0xd3bc }, /* 0xd3bd */ { true, 0xd3bd, 0xd3bd }, /* 0xd3be */ { true, 0xd3be, 0xd3be }, /* 0xd3bf */ { true, 0xd3bf, 0xd3bf }, /* 0xd3c0 */ { true, 0xd3c0, 0xd3c0 }, /* 0xd3c1 */ { true, 0xd3c1, 0xd3c1 }, /* 0xd3c2 */ { true, 0xd3c2, 0xd3c2 }, /* 0xd3c3 */ { true, 0xd3c3, 0xd3c3 }, /* 0xd3c4 */ { true, 0xd3c4, 0xd3c4 }, /* 0xd3c5 */ { true, 0xd3c5, 0xd3c5 }, /* 0xd3c6 */ { true, 0xd3c6, 0xd3c6 }, /* 0xd3c7 */ { true, 0xd3c7, 0xd3c7 }, /* 0xd3c8 */ { true, 0xd3c8, 0xd3c8 }, /* 0xd3c9 */ { true, 0xd3c9, 0xd3c9 }, /* 0xd3ca */ { true, 0xd3ca, 0xd3ca }, /* 0xd3cb */ { true, 0xd3cb, 0xd3cb }, /* 0xd3cc */ { true, 0xd3cc, 0xd3cc }, /* 0xd3cd */ { true, 0xd3cd, 0xd3cd }, /* 0xd3ce */ { true, 0xd3ce, 0xd3ce }, /* 0xd3cf */ { true, 0xd3cf, 0xd3cf }, /* 0xd3d0 */ { true, 0xd3d0, 0xd3d0 }, /* 0xd3d1 */ { true, 0xd3d1, 0xd3d1 }, /* 0xd3d2 */ { true, 0xd3d2, 0xd3d2 }, /* 0xd3d3 */ { true, 0xd3d3, 0xd3d3 }, /* 0xd3d4 */ { true, 0xd3d4, 0xd3d4 }, /* 0xd3d5 */ { true, 0xd3d5, 0xd3d5 }, /* 0xd3d6 */ { true, 0xd3d6, 0xd3d6 }, /* 0xd3d7 */ { true, 0xd3d7, 0xd3d7 }, /* 0xd3d8 */ { true, 0xd3d8, 0xd3d8 }, /* 0xd3d9 */ { true, 0xd3d9, 0xd3d9 }, /* 0xd3da */ { true, 0xd3da, 0xd3da }, /* 0xd3db */ { true, 0xd3db, 0xd3db }, /* 0xd3dc */ { true, 0xd3dc, 0xd3dc }, /* 0xd3dd */ { true, 0xd3dd, 0xd3dd }, /* 0xd3de */ { true, 0xd3de, 0xd3de }, /* 0xd3df */ { true, 0xd3df, 0xd3df }, /* 0xd3e0 */ { true, 0xd3e0, 0xd3e0 }, /* 0xd3e1 */ { true, 0xd3e1, 0xd3e1 }, /* 0xd3e2 */ { true, 0xd3e2, 0xd3e2 }, /* 0xd3e3 */ { true, 0xd3e3, 0xd3e3 }, /* 0xd3e4 */ { true, 0xd3e4, 0xd3e4 }, /* 0xd3e5 */ { true, 0xd3e5, 0xd3e5 }, /* 0xd3e6 */ { true, 0xd3e6, 0xd3e6 }, /* 0xd3e7 */ { true, 0xd3e7, 0xd3e7 }, /* 0xd3e8 */ { true, 0xd3e8, 0xd3e8 }, /* 0xd3e9 */ { true, 0xd3e9, 0xd3e9 }, /* 0xd3ea */ { true, 0xd3ea, 0xd3ea }, /* 0xd3eb */ { true, 0xd3eb, 0xd3eb }, /* 0xd3ec */ { true, 0xd3ec, 0xd3ec }, /* 0xd3ed */ { true, 0xd3ed, 0xd3ed }, /* 0xd3ee */ { true, 0xd3ee, 0xd3ee }, /* 0xd3ef */ { true, 0xd3ef, 0xd3ef }, /* 0xd3f0 */ { true, 0xd3f0, 0xd3f0 }, /* 0xd3f1 */ { true, 0xd3f1, 0xd3f1 }, /* 0xd3f2 */ { true, 0xd3f2, 0xd3f2 }, /* 0xd3f3 */ { true, 0xd3f3, 0xd3f3 }, /* 0xd3f4 */ { true, 0xd3f4, 0xd3f4 }, /* 0xd3f5 */ { true, 0xd3f5, 0xd3f5 }, /* 0xd3f6 */ { true, 0xd3f6, 0xd3f6 }, /* 0xd3f7 */ { true, 0xd3f7, 0xd3f7 }, /* 0xd3f8 */ { true, 0xd3f8, 0xd3f8 }, /* 0xd3f9 */ { true, 0xd3f9, 0xd3f9 }, /* 0xd3fa */ { true, 0xd3fa, 0xd3fa }, /* 0xd3fb */ { true, 0xd3fb, 0xd3fb }, /* 0xd3fc */ { true, 0xd3fc, 0xd3fc }, /* 0xd3fd */ { true, 0xd3fd, 0xd3fd }, /* 0xd3fe */ { true, 0xd3fe, 0xd3fe }, /* 0xd3ff */ { true, 0xd3ff, 0xd3ff }, /* 0xd400 */ { true, 0xd400, 0xd400 }, /* 0xd401 */ { true, 0xd401, 0xd401 }, /* 0xd402 */ { true, 0xd402, 0xd402 }, /* 0xd403 */ { true, 0xd403, 0xd403 }, /* 0xd404 */ { true, 0xd404, 0xd404 }, /* 0xd405 */ { true, 0xd405, 0xd405 }, /* 0xd406 */ { true, 0xd406, 0xd406 }, /* 0xd407 */ { true, 0xd407, 0xd407 }, /* 0xd408 */ { true, 0xd408, 0xd408 }, /* 0xd409 */ { true, 0xd409, 0xd409 }, /* 0xd40a */ { true, 0xd40a, 0xd40a }, /* 0xd40b */ { true, 0xd40b, 0xd40b }, /* 0xd40c */ { true, 0xd40c, 0xd40c }, /* 0xd40d */ { true, 0xd40d, 0xd40d }, /* 0xd40e */ { true, 0xd40e, 0xd40e }, /* 0xd40f */ { true, 0xd40f, 0xd40f }, /* 0xd410 */ { true, 0xd410, 0xd410 }, /* 0xd411 */ { true, 0xd411, 0xd411 }, /* 0xd412 */ { true, 0xd412, 0xd412 }, /* 0xd413 */ { true, 0xd413, 0xd413 }, /* 0xd414 */ { true, 0xd414, 0xd414 }, /* 0xd415 */ { true, 0xd415, 0xd415 }, /* 0xd416 */ { true, 0xd416, 0xd416 }, /* 0xd417 */ { true, 0xd417, 0xd417 }, /* 0xd418 */ { true, 0xd418, 0xd418 }, /* 0xd419 */ { true, 0xd419, 0xd419 }, /* 0xd41a */ { true, 0xd41a, 0xd41a }, /* 0xd41b */ { true, 0xd41b, 0xd41b }, /* 0xd41c */ { true, 0xd41c, 0xd41c }, /* 0xd41d */ { true, 0xd41d, 0xd41d }, /* 0xd41e */ { true, 0xd41e, 0xd41e }, /* 0xd41f */ { true, 0xd41f, 0xd41f }, /* 0xd420 */ { true, 0xd420, 0xd420 }, /* 0xd421 */ { true, 0xd421, 0xd421 }, /* 0xd422 */ { true, 0xd422, 0xd422 }, /* 0xd423 */ { true, 0xd423, 0xd423 }, /* 0xd424 */ { true, 0xd424, 0xd424 }, /* 0xd425 */ { true, 0xd425, 0xd425 }, /* 0xd426 */ { true, 0xd426, 0xd426 }, /* 0xd427 */ { true, 0xd427, 0xd427 }, /* 0xd428 */ { true, 0xd428, 0xd428 }, /* 0xd429 */ { true, 0xd429, 0xd429 }, /* 0xd42a */ { true, 0xd42a, 0xd42a }, /* 0xd42b */ { true, 0xd42b, 0xd42b }, /* 0xd42c */ { true, 0xd42c, 0xd42c }, /* 0xd42d */ { true, 0xd42d, 0xd42d }, /* 0xd42e */ { true, 0xd42e, 0xd42e }, /* 0xd42f */ { true, 0xd42f, 0xd42f }, /* 0xd430 */ { true, 0xd430, 0xd430 }, /* 0xd431 */ { true, 0xd431, 0xd431 }, /* 0xd432 */ { true, 0xd432, 0xd432 }, /* 0xd433 */ { true, 0xd433, 0xd433 }, /* 0xd434 */ { true, 0xd434, 0xd434 }, /* 0xd435 */ { true, 0xd435, 0xd435 }, /* 0xd436 */ { true, 0xd436, 0xd436 }, /* 0xd437 */ { true, 0xd437, 0xd437 }, /* 0xd438 */ { true, 0xd438, 0xd438 }, /* 0xd439 */ { true, 0xd439, 0xd439 }, /* 0xd43a */ { true, 0xd43a, 0xd43a }, /* 0xd43b */ { true, 0xd43b, 0xd43b }, /* 0xd43c */ { true, 0xd43c, 0xd43c }, /* 0xd43d */ { true, 0xd43d, 0xd43d }, /* 0xd43e */ { true, 0xd43e, 0xd43e }, /* 0xd43f */ { true, 0xd43f, 0xd43f }, /* 0xd440 */ { true, 0xd440, 0xd440 }, /* 0xd441 */ { true, 0xd441, 0xd441 }, /* 0xd442 */ { true, 0xd442, 0xd442 }, /* 0xd443 */ { true, 0xd443, 0xd443 }, /* 0xd444 */ { true, 0xd444, 0xd444 }, /* 0xd445 */ { true, 0xd445, 0xd445 }, /* 0xd446 */ { true, 0xd446, 0xd446 }, /* 0xd447 */ { true, 0xd447, 0xd447 }, /* 0xd448 */ { true, 0xd448, 0xd448 }, /* 0xd449 */ { true, 0xd449, 0xd449 }, /* 0xd44a */ { true, 0xd44a, 0xd44a }, /* 0xd44b */ { true, 0xd44b, 0xd44b }, /* 0xd44c */ { true, 0xd44c, 0xd44c }, /* 0xd44d */ { true, 0xd44d, 0xd44d }, /* 0xd44e */ { true, 0xd44e, 0xd44e }, /* 0xd44f */ { true, 0xd44f, 0xd44f }, /* 0xd450 */ { true, 0xd450, 0xd450 }, /* 0xd451 */ { true, 0xd451, 0xd451 }, /* 0xd452 */ { true, 0xd452, 0xd452 }, /* 0xd453 */ { true, 0xd453, 0xd453 }, /* 0xd454 */ { true, 0xd454, 0xd454 }, /* 0xd455 */ { true, 0xd455, 0xd455 }, /* 0xd456 */ { true, 0xd456, 0xd456 }, /* 0xd457 */ { true, 0xd457, 0xd457 }, /* 0xd458 */ { true, 0xd458, 0xd458 }, /* 0xd459 */ { true, 0xd459, 0xd459 }, /* 0xd45a */ { true, 0xd45a, 0xd45a }, /* 0xd45b */ { true, 0xd45b, 0xd45b }, /* 0xd45c */ { true, 0xd45c, 0xd45c }, /* 0xd45d */ { true, 0xd45d, 0xd45d }, /* 0xd45e */ { true, 0xd45e, 0xd45e }, /* 0xd45f */ { true, 0xd45f, 0xd45f }, /* 0xd460 */ { true, 0xd460, 0xd460 }, /* 0xd461 */ { true, 0xd461, 0xd461 }, /* 0xd462 */ { true, 0xd462, 0xd462 }, /* 0xd463 */ { true, 0xd463, 0xd463 }, /* 0xd464 */ { true, 0xd464, 0xd464 }, /* 0xd465 */ { true, 0xd465, 0xd465 }, /* 0xd466 */ { true, 0xd466, 0xd466 }, /* 0xd467 */ { true, 0xd467, 0xd467 }, /* 0xd468 */ { true, 0xd468, 0xd468 }, /* 0xd469 */ { true, 0xd469, 0xd469 }, /* 0xd46a */ { true, 0xd46a, 0xd46a }, /* 0xd46b */ { true, 0xd46b, 0xd46b }, /* 0xd46c */ { true, 0xd46c, 0xd46c }, /* 0xd46d */ { true, 0xd46d, 0xd46d }, /* 0xd46e */ { true, 0xd46e, 0xd46e }, /* 0xd46f */ { true, 0xd46f, 0xd46f }, /* 0xd470 */ { true, 0xd470, 0xd470 }, /* 0xd471 */ { true, 0xd471, 0xd471 }, /* 0xd472 */ { true, 0xd472, 0xd472 }, /* 0xd473 */ { true, 0xd473, 0xd473 }, /* 0xd474 */ { true, 0xd474, 0xd474 }, /* 0xd475 */ { true, 0xd475, 0xd475 }, /* 0xd476 */ { true, 0xd476, 0xd476 }, /* 0xd477 */ { true, 0xd477, 0xd477 }, /* 0xd478 */ { true, 0xd478, 0xd478 }, /* 0xd479 */ { true, 0xd479, 0xd479 }, /* 0xd47a */ { true, 0xd47a, 0xd47a }, /* 0xd47b */ { true, 0xd47b, 0xd47b }, /* 0xd47c */ { true, 0xd47c, 0xd47c }, /* 0xd47d */ { true, 0xd47d, 0xd47d }, /* 0xd47e */ { true, 0xd47e, 0xd47e }, /* 0xd47f */ { true, 0xd47f, 0xd47f }, /* 0xd480 */ { true, 0xd480, 0xd480 }, /* 0xd481 */ { true, 0xd481, 0xd481 }, /* 0xd482 */ { true, 0xd482, 0xd482 }, /* 0xd483 */ { true, 0xd483, 0xd483 }, /* 0xd484 */ { true, 0xd484, 0xd484 }, /* 0xd485 */ { true, 0xd485, 0xd485 }, /* 0xd486 */ { true, 0xd486, 0xd486 }, /* 0xd487 */ { true, 0xd487, 0xd487 }, /* 0xd488 */ { true, 0xd488, 0xd488 }, /* 0xd489 */ { true, 0xd489, 0xd489 }, /* 0xd48a */ { true, 0xd48a, 0xd48a }, /* 0xd48b */ { true, 0xd48b, 0xd48b }, /* 0xd48c */ { true, 0xd48c, 0xd48c }, /* 0xd48d */ { true, 0xd48d, 0xd48d }, /* 0xd48e */ { true, 0xd48e, 0xd48e }, /* 0xd48f */ { true, 0xd48f, 0xd48f }, /* 0xd490 */ { true, 0xd490, 0xd490 }, /* 0xd491 */ { true, 0xd491, 0xd491 }, /* 0xd492 */ { true, 0xd492, 0xd492 }, /* 0xd493 */ { true, 0xd493, 0xd493 }, /* 0xd494 */ { true, 0xd494, 0xd494 }, /* 0xd495 */ { true, 0xd495, 0xd495 }, /* 0xd496 */ { true, 0xd496, 0xd496 }, /* 0xd497 */ { true, 0xd497, 0xd497 }, /* 0xd498 */ { true, 0xd498, 0xd498 }, /* 0xd499 */ { true, 0xd499, 0xd499 }, /* 0xd49a */ { true, 0xd49a, 0xd49a }, /* 0xd49b */ { true, 0xd49b, 0xd49b }, /* 0xd49c */ { true, 0xd49c, 0xd49c }, /* 0xd49d */ { true, 0xd49d, 0xd49d }, /* 0xd49e */ { true, 0xd49e, 0xd49e }, /* 0xd49f */ { true, 0xd49f, 0xd49f }, /* 0xd4a0 */ { true, 0xd4a0, 0xd4a0 }, /* 0xd4a1 */ { true, 0xd4a1, 0xd4a1 }, /* 0xd4a2 */ { true, 0xd4a2, 0xd4a2 }, /* 0xd4a3 */ { true, 0xd4a3, 0xd4a3 }, /* 0xd4a4 */ { true, 0xd4a4, 0xd4a4 }, /* 0xd4a5 */ { true, 0xd4a5, 0xd4a5 }, /* 0xd4a6 */ { true, 0xd4a6, 0xd4a6 }, /* 0xd4a7 */ { true, 0xd4a7, 0xd4a7 }, /* 0xd4a8 */ { true, 0xd4a8, 0xd4a8 }, /* 0xd4a9 */ { true, 0xd4a9, 0xd4a9 }, /* 0xd4aa */ { true, 0xd4aa, 0xd4aa }, /* 0xd4ab */ { true, 0xd4ab, 0xd4ab }, /* 0xd4ac */ { true, 0xd4ac, 0xd4ac }, /* 0xd4ad */ { true, 0xd4ad, 0xd4ad }, /* 0xd4ae */ { true, 0xd4ae, 0xd4ae }, /* 0xd4af */ { true, 0xd4af, 0xd4af }, /* 0xd4b0 */ { true, 0xd4b0, 0xd4b0 }, /* 0xd4b1 */ { true, 0xd4b1, 0xd4b1 }, /* 0xd4b2 */ { true, 0xd4b2, 0xd4b2 }, /* 0xd4b3 */ { true, 0xd4b3, 0xd4b3 }, /* 0xd4b4 */ { true, 0xd4b4, 0xd4b4 }, /* 0xd4b5 */ { true, 0xd4b5, 0xd4b5 }, /* 0xd4b6 */ { true, 0xd4b6, 0xd4b6 }, /* 0xd4b7 */ { true, 0xd4b7, 0xd4b7 }, /* 0xd4b8 */ { true, 0xd4b8, 0xd4b8 }, /* 0xd4b9 */ { true, 0xd4b9, 0xd4b9 }, /* 0xd4ba */ { true, 0xd4ba, 0xd4ba }, /* 0xd4bb */ { true, 0xd4bb, 0xd4bb }, /* 0xd4bc */ { true, 0xd4bc, 0xd4bc }, /* 0xd4bd */ { true, 0xd4bd, 0xd4bd }, /* 0xd4be */ { true, 0xd4be, 0xd4be }, /* 0xd4bf */ { true, 0xd4bf, 0xd4bf }, /* 0xd4c0 */ { true, 0xd4c0, 0xd4c0 }, /* 0xd4c1 */ { true, 0xd4c1, 0xd4c1 }, /* 0xd4c2 */ { true, 0xd4c2, 0xd4c2 }, /* 0xd4c3 */ { true, 0xd4c3, 0xd4c3 }, /* 0xd4c4 */ { true, 0xd4c4, 0xd4c4 }, /* 0xd4c5 */ { true, 0xd4c5, 0xd4c5 }, /* 0xd4c6 */ { true, 0xd4c6, 0xd4c6 }, /* 0xd4c7 */ { true, 0xd4c7, 0xd4c7 }, /* 0xd4c8 */ { true, 0xd4c8, 0xd4c8 }, /* 0xd4c9 */ { true, 0xd4c9, 0xd4c9 }, /* 0xd4ca */ { true, 0xd4ca, 0xd4ca }, /* 0xd4cb */ { true, 0xd4cb, 0xd4cb }, /* 0xd4cc */ { true, 0xd4cc, 0xd4cc }, /* 0xd4cd */ { true, 0xd4cd, 0xd4cd }, /* 0xd4ce */ { true, 0xd4ce, 0xd4ce }, /* 0xd4cf */ { true, 0xd4cf, 0xd4cf }, /* 0xd4d0 */ { true, 0xd4d0, 0xd4d0 }, /* 0xd4d1 */ { true, 0xd4d1, 0xd4d1 }, /* 0xd4d2 */ { true, 0xd4d2, 0xd4d2 }, /* 0xd4d3 */ { true, 0xd4d3, 0xd4d3 }, /* 0xd4d4 */ { true, 0xd4d4, 0xd4d4 }, /* 0xd4d5 */ { true, 0xd4d5, 0xd4d5 }, /* 0xd4d6 */ { true, 0xd4d6, 0xd4d6 }, /* 0xd4d7 */ { true, 0xd4d7, 0xd4d7 }, /* 0xd4d8 */ { true, 0xd4d8, 0xd4d8 }, /* 0xd4d9 */ { true, 0xd4d9, 0xd4d9 }, /* 0xd4da */ { true, 0xd4da, 0xd4da }, /* 0xd4db */ { true, 0xd4db, 0xd4db }, /* 0xd4dc */ { true, 0xd4dc, 0xd4dc }, /* 0xd4dd */ { true, 0xd4dd, 0xd4dd }, /* 0xd4de */ { true, 0xd4de, 0xd4de }, /* 0xd4df */ { true, 0xd4df, 0xd4df }, /* 0xd4e0 */ { true, 0xd4e0, 0xd4e0 }, /* 0xd4e1 */ { true, 0xd4e1, 0xd4e1 }, /* 0xd4e2 */ { true, 0xd4e2, 0xd4e2 }, /* 0xd4e3 */ { true, 0xd4e3, 0xd4e3 }, /* 0xd4e4 */ { true, 0xd4e4, 0xd4e4 }, /* 0xd4e5 */ { true, 0xd4e5, 0xd4e5 }, /* 0xd4e6 */ { true, 0xd4e6, 0xd4e6 }, /* 0xd4e7 */ { true, 0xd4e7, 0xd4e7 }, /* 0xd4e8 */ { true, 0xd4e8, 0xd4e8 }, /* 0xd4e9 */ { true, 0xd4e9, 0xd4e9 }, /* 0xd4ea */ { true, 0xd4ea, 0xd4ea }, /* 0xd4eb */ { true, 0xd4eb, 0xd4eb }, /* 0xd4ec */ { true, 0xd4ec, 0xd4ec }, /* 0xd4ed */ { true, 0xd4ed, 0xd4ed }, /* 0xd4ee */ { true, 0xd4ee, 0xd4ee }, /* 0xd4ef */ { true, 0xd4ef, 0xd4ef }, /* 0xd4f0 */ { true, 0xd4f0, 0xd4f0 }, /* 0xd4f1 */ { true, 0xd4f1, 0xd4f1 }, /* 0xd4f2 */ { true, 0xd4f2, 0xd4f2 }, /* 0xd4f3 */ { true, 0xd4f3, 0xd4f3 }, /* 0xd4f4 */ { true, 0xd4f4, 0xd4f4 }, /* 0xd4f5 */ { true, 0xd4f5, 0xd4f5 }, /* 0xd4f6 */ { true, 0xd4f6, 0xd4f6 }, /* 0xd4f7 */ { true, 0xd4f7, 0xd4f7 }, /* 0xd4f8 */ { true, 0xd4f8, 0xd4f8 }, /* 0xd4f9 */ { true, 0xd4f9, 0xd4f9 }, /* 0xd4fa */ { true, 0xd4fa, 0xd4fa }, /* 0xd4fb */ { true, 0xd4fb, 0xd4fb }, /* 0xd4fc */ { true, 0xd4fc, 0xd4fc }, /* 0xd4fd */ { true, 0xd4fd, 0xd4fd }, /* 0xd4fe */ { true, 0xd4fe, 0xd4fe }, /* 0xd4ff */ { true, 0xd4ff, 0xd4ff }, /* 0xd500 */ { true, 0xd500, 0xd500 }, /* 0xd501 */ { true, 0xd501, 0xd501 }, /* 0xd502 */ { true, 0xd502, 0xd502 }, /* 0xd503 */ { true, 0xd503, 0xd503 }, /* 0xd504 */ { true, 0xd504, 0xd504 }, /* 0xd505 */ { true, 0xd505, 0xd505 }, /* 0xd506 */ { true, 0xd506, 0xd506 }, /* 0xd507 */ { true, 0xd507, 0xd507 }, /* 0xd508 */ { true, 0xd508, 0xd508 }, /* 0xd509 */ { true, 0xd509, 0xd509 }, /* 0xd50a */ { true, 0xd50a, 0xd50a }, /* 0xd50b */ { true, 0xd50b, 0xd50b }, /* 0xd50c */ { true, 0xd50c, 0xd50c }, /* 0xd50d */ { true, 0xd50d, 0xd50d }, /* 0xd50e */ { true, 0xd50e, 0xd50e }, /* 0xd50f */ { true, 0xd50f, 0xd50f }, /* 0xd510 */ { true, 0xd510, 0xd510 }, /* 0xd511 */ { true, 0xd511, 0xd511 }, /* 0xd512 */ { true, 0xd512, 0xd512 }, /* 0xd513 */ { true, 0xd513, 0xd513 }, /* 0xd514 */ { true, 0xd514, 0xd514 }, /* 0xd515 */ { true, 0xd515, 0xd515 }, /* 0xd516 */ { true, 0xd516, 0xd516 }, /* 0xd517 */ { true, 0xd517, 0xd517 }, /* 0xd518 */ { true, 0xd518, 0xd518 }, /* 0xd519 */ { true, 0xd519, 0xd519 }, /* 0xd51a */ { true, 0xd51a, 0xd51a }, /* 0xd51b */ { true, 0xd51b, 0xd51b }, /* 0xd51c */ { true, 0xd51c, 0xd51c }, /* 0xd51d */ { true, 0xd51d, 0xd51d }, /* 0xd51e */ { true, 0xd51e, 0xd51e }, /* 0xd51f */ { true, 0xd51f, 0xd51f }, /* 0xd520 */ { true, 0xd520, 0xd520 }, /* 0xd521 */ { true, 0xd521, 0xd521 }, /* 0xd522 */ { true, 0xd522, 0xd522 }, /* 0xd523 */ { true, 0xd523, 0xd523 }, /* 0xd524 */ { true, 0xd524, 0xd524 }, /* 0xd525 */ { true, 0xd525, 0xd525 }, /* 0xd526 */ { true, 0xd526, 0xd526 }, /* 0xd527 */ { true, 0xd527, 0xd527 }, /* 0xd528 */ { true, 0xd528, 0xd528 }, /* 0xd529 */ { true, 0xd529, 0xd529 }, /* 0xd52a */ { true, 0xd52a, 0xd52a }, /* 0xd52b */ { true, 0xd52b, 0xd52b }, /* 0xd52c */ { true, 0xd52c, 0xd52c }, /* 0xd52d */ { true, 0xd52d, 0xd52d }, /* 0xd52e */ { true, 0xd52e, 0xd52e }, /* 0xd52f */ { true, 0xd52f, 0xd52f }, /* 0xd530 */ { true, 0xd530, 0xd530 }, /* 0xd531 */ { true, 0xd531, 0xd531 }, /* 0xd532 */ { true, 0xd532, 0xd532 }, /* 0xd533 */ { true, 0xd533, 0xd533 }, /* 0xd534 */ { true, 0xd534, 0xd534 }, /* 0xd535 */ { true, 0xd535, 0xd535 }, /* 0xd536 */ { true, 0xd536, 0xd536 }, /* 0xd537 */ { true, 0xd537, 0xd537 }, /* 0xd538 */ { true, 0xd538, 0xd538 }, /* 0xd539 */ { true, 0xd539, 0xd539 }, /* 0xd53a */ { true, 0xd53a, 0xd53a }, /* 0xd53b */ { true, 0xd53b, 0xd53b }, /* 0xd53c */ { true, 0xd53c, 0xd53c }, /* 0xd53d */ { true, 0xd53d, 0xd53d }, /* 0xd53e */ { true, 0xd53e, 0xd53e }, /* 0xd53f */ { true, 0xd53f, 0xd53f }, /* 0xd540 */ { true, 0xd540, 0xd540 }, /* 0xd541 */ { true, 0xd541, 0xd541 }, /* 0xd542 */ { true, 0xd542, 0xd542 }, /* 0xd543 */ { true, 0xd543, 0xd543 }, /* 0xd544 */ { true, 0xd544, 0xd544 }, /* 0xd545 */ { true, 0xd545, 0xd545 }, /* 0xd546 */ { true, 0xd546, 0xd546 }, /* 0xd547 */ { true, 0xd547, 0xd547 }, /* 0xd548 */ { true, 0xd548, 0xd548 }, /* 0xd549 */ { true, 0xd549, 0xd549 }, /* 0xd54a */ { true, 0xd54a, 0xd54a }, /* 0xd54b */ { true, 0xd54b, 0xd54b }, /* 0xd54c */ { true, 0xd54c, 0xd54c }, /* 0xd54d */ { true, 0xd54d, 0xd54d }, /* 0xd54e */ { true, 0xd54e, 0xd54e }, /* 0xd54f */ { true, 0xd54f, 0xd54f }, /* 0xd550 */ { true, 0xd550, 0xd550 }, /* 0xd551 */ { true, 0xd551, 0xd551 }, /* 0xd552 */ { true, 0xd552, 0xd552 }, /* 0xd553 */ { true, 0xd553, 0xd553 }, /* 0xd554 */ { true, 0xd554, 0xd554 }, /* 0xd555 */ { true, 0xd555, 0xd555 }, /* 0xd556 */ { true, 0xd556, 0xd556 }, /* 0xd557 */ { true, 0xd557, 0xd557 }, /* 0xd558 */ { true, 0xd558, 0xd558 }, /* 0xd559 */ { true, 0xd559, 0xd559 }, /* 0xd55a */ { true, 0xd55a, 0xd55a }, /* 0xd55b */ { true, 0xd55b, 0xd55b }, /* 0xd55c */ { true, 0xd55c, 0xd55c }, /* 0xd55d */ { true, 0xd55d, 0xd55d }, /* 0xd55e */ { true, 0xd55e, 0xd55e }, /* 0xd55f */ { true, 0xd55f, 0xd55f }, /* 0xd560 */ { true, 0xd560, 0xd560 }, /* 0xd561 */ { true, 0xd561, 0xd561 }, /* 0xd562 */ { true, 0xd562, 0xd562 }, /* 0xd563 */ { true, 0xd563, 0xd563 }, /* 0xd564 */ { true, 0xd564, 0xd564 }, /* 0xd565 */ { true, 0xd565, 0xd565 }, /* 0xd566 */ { true, 0xd566, 0xd566 }, /* 0xd567 */ { true, 0xd567, 0xd567 }, /* 0xd568 */ { true, 0xd568, 0xd568 }, /* 0xd569 */ { true, 0xd569, 0xd569 }, /* 0xd56a */ { true, 0xd56a, 0xd56a }, /* 0xd56b */ { true, 0xd56b, 0xd56b }, /* 0xd56c */ { true, 0xd56c, 0xd56c }, /* 0xd56d */ { true, 0xd56d, 0xd56d }, /* 0xd56e */ { true, 0xd56e, 0xd56e }, /* 0xd56f */ { true, 0xd56f, 0xd56f }, /* 0xd570 */ { true, 0xd570, 0xd570 }, /* 0xd571 */ { true, 0xd571, 0xd571 }, /* 0xd572 */ { true, 0xd572, 0xd572 }, /* 0xd573 */ { true, 0xd573, 0xd573 }, /* 0xd574 */ { true, 0xd574, 0xd574 }, /* 0xd575 */ { true, 0xd575, 0xd575 }, /* 0xd576 */ { true, 0xd576, 0xd576 }, /* 0xd577 */ { true, 0xd577, 0xd577 }, /* 0xd578 */ { true, 0xd578, 0xd578 }, /* 0xd579 */ { true, 0xd579, 0xd579 }, /* 0xd57a */ { true, 0xd57a, 0xd57a }, /* 0xd57b */ { true, 0xd57b, 0xd57b }, /* 0xd57c */ { true, 0xd57c, 0xd57c }, /* 0xd57d */ { true, 0xd57d, 0xd57d }, /* 0xd57e */ { true, 0xd57e, 0xd57e }, /* 0xd57f */ { true, 0xd57f, 0xd57f }, /* 0xd580 */ { true, 0xd580, 0xd580 }, /* 0xd581 */ { true, 0xd581, 0xd581 }, /* 0xd582 */ { true, 0xd582, 0xd582 }, /* 0xd583 */ { true, 0xd583, 0xd583 }, /* 0xd584 */ { true, 0xd584, 0xd584 }, /* 0xd585 */ { true, 0xd585, 0xd585 }, /* 0xd586 */ { true, 0xd586, 0xd586 }, /* 0xd587 */ { true, 0xd587, 0xd587 }, /* 0xd588 */ { true, 0xd588, 0xd588 }, /* 0xd589 */ { true, 0xd589, 0xd589 }, /* 0xd58a */ { true, 0xd58a, 0xd58a }, /* 0xd58b */ { true, 0xd58b, 0xd58b }, /* 0xd58c */ { true, 0xd58c, 0xd58c }, /* 0xd58d */ { true, 0xd58d, 0xd58d }, /* 0xd58e */ { true, 0xd58e, 0xd58e }, /* 0xd58f */ { true, 0xd58f, 0xd58f }, /* 0xd590 */ { true, 0xd590, 0xd590 }, /* 0xd591 */ { true, 0xd591, 0xd591 }, /* 0xd592 */ { true, 0xd592, 0xd592 }, /* 0xd593 */ { true, 0xd593, 0xd593 }, /* 0xd594 */ { true, 0xd594, 0xd594 }, /* 0xd595 */ { true, 0xd595, 0xd595 }, /* 0xd596 */ { true, 0xd596, 0xd596 }, /* 0xd597 */ { true, 0xd597, 0xd597 }, /* 0xd598 */ { true, 0xd598, 0xd598 }, /* 0xd599 */ { true, 0xd599, 0xd599 }, /* 0xd59a */ { true, 0xd59a, 0xd59a }, /* 0xd59b */ { true, 0xd59b, 0xd59b }, /* 0xd59c */ { true, 0xd59c, 0xd59c }, /* 0xd59d */ { true, 0xd59d, 0xd59d }, /* 0xd59e */ { true, 0xd59e, 0xd59e }, /* 0xd59f */ { true, 0xd59f, 0xd59f }, /* 0xd5a0 */ { true, 0xd5a0, 0xd5a0 }, /* 0xd5a1 */ { true, 0xd5a1, 0xd5a1 }, /* 0xd5a2 */ { true, 0xd5a2, 0xd5a2 }, /* 0xd5a3 */ { true, 0xd5a3, 0xd5a3 }, /* 0xd5a4 */ { true, 0xd5a4, 0xd5a4 }, /* 0xd5a5 */ { true, 0xd5a5, 0xd5a5 }, /* 0xd5a6 */ { true, 0xd5a6, 0xd5a6 }, /* 0xd5a7 */ { true, 0xd5a7, 0xd5a7 }, /* 0xd5a8 */ { true, 0xd5a8, 0xd5a8 }, /* 0xd5a9 */ { true, 0xd5a9, 0xd5a9 }, /* 0xd5aa */ { true, 0xd5aa, 0xd5aa }, /* 0xd5ab */ { true, 0xd5ab, 0xd5ab }, /* 0xd5ac */ { true, 0xd5ac, 0xd5ac }, /* 0xd5ad */ { true, 0xd5ad, 0xd5ad }, /* 0xd5ae */ { true, 0xd5ae, 0xd5ae }, /* 0xd5af */ { true, 0xd5af, 0xd5af }, /* 0xd5b0 */ { true, 0xd5b0, 0xd5b0 }, /* 0xd5b1 */ { true, 0xd5b1, 0xd5b1 }, /* 0xd5b2 */ { true, 0xd5b2, 0xd5b2 }, /* 0xd5b3 */ { true, 0xd5b3, 0xd5b3 }, /* 0xd5b4 */ { true, 0xd5b4, 0xd5b4 }, /* 0xd5b5 */ { true, 0xd5b5, 0xd5b5 }, /* 0xd5b6 */ { true, 0xd5b6, 0xd5b6 }, /* 0xd5b7 */ { true, 0xd5b7, 0xd5b7 }, /* 0xd5b8 */ { true, 0xd5b8, 0xd5b8 }, /* 0xd5b9 */ { true, 0xd5b9, 0xd5b9 }, /* 0xd5ba */ { true, 0xd5ba, 0xd5ba }, /* 0xd5bb */ { true, 0xd5bb, 0xd5bb }, /* 0xd5bc */ { true, 0xd5bc, 0xd5bc }, /* 0xd5bd */ { true, 0xd5bd, 0xd5bd }, /* 0xd5be */ { true, 0xd5be, 0xd5be }, /* 0xd5bf */ { true, 0xd5bf, 0xd5bf }, /* 0xd5c0 */ { true, 0xd5c0, 0xd5c0 }, /* 0xd5c1 */ { true, 0xd5c1, 0xd5c1 }, /* 0xd5c2 */ { true, 0xd5c2, 0xd5c2 }, /* 0xd5c3 */ { true, 0xd5c3, 0xd5c3 }, /* 0xd5c4 */ { true, 0xd5c4, 0xd5c4 }, /* 0xd5c5 */ { true, 0xd5c5, 0xd5c5 }, /* 0xd5c6 */ { true, 0xd5c6, 0xd5c6 }, /* 0xd5c7 */ { true, 0xd5c7, 0xd5c7 }, /* 0xd5c8 */ { true, 0xd5c8, 0xd5c8 }, /* 0xd5c9 */ { true, 0xd5c9, 0xd5c9 }, /* 0xd5ca */ { true, 0xd5ca, 0xd5ca }, /* 0xd5cb */ { true, 0xd5cb, 0xd5cb }, /* 0xd5cc */ { true, 0xd5cc, 0xd5cc }, /* 0xd5cd */ { true, 0xd5cd, 0xd5cd }, /* 0xd5ce */ { true, 0xd5ce, 0xd5ce }, /* 0xd5cf */ { true, 0xd5cf, 0xd5cf }, /* 0xd5d0 */ { true, 0xd5d0, 0xd5d0 }, /* 0xd5d1 */ { true, 0xd5d1, 0xd5d1 }, /* 0xd5d2 */ { true, 0xd5d2, 0xd5d2 }, /* 0xd5d3 */ { true, 0xd5d3, 0xd5d3 }, /* 0xd5d4 */ { true, 0xd5d4, 0xd5d4 }, /* 0xd5d5 */ { true, 0xd5d5, 0xd5d5 }, /* 0xd5d6 */ { true, 0xd5d6, 0xd5d6 }, /* 0xd5d7 */ { true, 0xd5d7, 0xd5d7 }, /* 0xd5d8 */ { true, 0xd5d8, 0xd5d8 }, /* 0xd5d9 */ { true, 0xd5d9, 0xd5d9 }, /* 0xd5da */ { true, 0xd5da, 0xd5da }, /* 0xd5db */ { true, 0xd5db, 0xd5db }, /* 0xd5dc */ { true, 0xd5dc, 0xd5dc }, /* 0xd5dd */ { true, 0xd5dd, 0xd5dd }, /* 0xd5de */ { true, 0xd5de, 0xd5de }, /* 0xd5df */ { true, 0xd5df, 0xd5df }, /* 0xd5e0 */ { true, 0xd5e0, 0xd5e0 }, /* 0xd5e1 */ { true, 0xd5e1, 0xd5e1 }, /* 0xd5e2 */ { true, 0xd5e2, 0xd5e2 }, /* 0xd5e3 */ { true, 0xd5e3, 0xd5e3 }, /* 0xd5e4 */ { true, 0xd5e4, 0xd5e4 }, /* 0xd5e5 */ { true, 0xd5e5, 0xd5e5 }, /* 0xd5e6 */ { true, 0xd5e6, 0xd5e6 }, /* 0xd5e7 */ { true, 0xd5e7, 0xd5e7 }, /* 0xd5e8 */ { true, 0xd5e8, 0xd5e8 }, /* 0xd5e9 */ { true, 0xd5e9, 0xd5e9 }, /* 0xd5ea */ { true, 0xd5ea, 0xd5ea }, /* 0xd5eb */ { true, 0xd5eb, 0xd5eb }, /* 0xd5ec */ { true, 0xd5ec, 0xd5ec }, /* 0xd5ed */ { true, 0xd5ed, 0xd5ed }, /* 0xd5ee */ { true, 0xd5ee, 0xd5ee }, /* 0xd5ef */ { true, 0xd5ef, 0xd5ef }, /* 0xd5f0 */ { true, 0xd5f0, 0xd5f0 }, /* 0xd5f1 */ { true, 0xd5f1, 0xd5f1 }, /* 0xd5f2 */ { true, 0xd5f2, 0xd5f2 }, /* 0xd5f3 */ { true, 0xd5f3, 0xd5f3 }, /* 0xd5f4 */ { true, 0xd5f4, 0xd5f4 }, /* 0xd5f5 */ { true, 0xd5f5, 0xd5f5 }, /* 0xd5f6 */ { true, 0xd5f6, 0xd5f6 }, /* 0xd5f7 */ { true, 0xd5f7, 0xd5f7 }, /* 0xd5f8 */ { true, 0xd5f8, 0xd5f8 }, /* 0xd5f9 */ { true, 0xd5f9, 0xd5f9 }, /* 0xd5fa */ { true, 0xd5fa, 0xd5fa }, /* 0xd5fb */ { true, 0xd5fb, 0xd5fb }, /* 0xd5fc */ { true, 0xd5fc, 0xd5fc }, /* 0xd5fd */ { true, 0xd5fd, 0xd5fd }, /* 0xd5fe */ { true, 0xd5fe, 0xd5fe }, /* 0xd5ff */ { true, 0xd5ff, 0xd5ff }, /* 0xd600 */ { true, 0xd600, 0xd600 }, /* 0xd601 */ { true, 0xd601, 0xd601 }, /* 0xd602 */ { true, 0xd602, 0xd602 }, /* 0xd603 */ { true, 0xd603, 0xd603 }, /* 0xd604 */ { true, 0xd604, 0xd604 }, /* 0xd605 */ { true, 0xd605, 0xd605 }, /* 0xd606 */ { true, 0xd606, 0xd606 }, /* 0xd607 */ { true, 0xd607, 0xd607 }, /* 0xd608 */ { true, 0xd608, 0xd608 }, /* 0xd609 */ { true, 0xd609, 0xd609 }, /* 0xd60a */ { true, 0xd60a, 0xd60a }, /* 0xd60b */ { true, 0xd60b, 0xd60b }, /* 0xd60c */ { true, 0xd60c, 0xd60c }, /* 0xd60d */ { true, 0xd60d, 0xd60d }, /* 0xd60e */ { true, 0xd60e, 0xd60e }, /* 0xd60f */ { true, 0xd60f, 0xd60f }, /* 0xd610 */ { true, 0xd610, 0xd610 }, /* 0xd611 */ { true, 0xd611, 0xd611 }, /* 0xd612 */ { true, 0xd612, 0xd612 }, /* 0xd613 */ { true, 0xd613, 0xd613 }, /* 0xd614 */ { true, 0xd614, 0xd614 }, /* 0xd615 */ { true, 0xd615, 0xd615 }, /* 0xd616 */ { true, 0xd616, 0xd616 }, /* 0xd617 */ { true, 0xd617, 0xd617 }, /* 0xd618 */ { true, 0xd618, 0xd618 }, /* 0xd619 */ { true, 0xd619, 0xd619 }, /* 0xd61a */ { true, 0xd61a, 0xd61a }, /* 0xd61b */ { true, 0xd61b, 0xd61b }, /* 0xd61c */ { true, 0xd61c, 0xd61c }, /* 0xd61d */ { true, 0xd61d, 0xd61d }, /* 0xd61e */ { true, 0xd61e, 0xd61e }, /* 0xd61f */ { true, 0xd61f, 0xd61f }, /* 0xd620 */ { true, 0xd620, 0xd620 }, /* 0xd621 */ { true, 0xd621, 0xd621 }, /* 0xd622 */ { true, 0xd622, 0xd622 }, /* 0xd623 */ { true, 0xd623, 0xd623 }, /* 0xd624 */ { true, 0xd624, 0xd624 }, /* 0xd625 */ { true, 0xd625, 0xd625 }, /* 0xd626 */ { true, 0xd626, 0xd626 }, /* 0xd627 */ { true, 0xd627, 0xd627 }, /* 0xd628 */ { true, 0xd628, 0xd628 }, /* 0xd629 */ { true, 0xd629, 0xd629 }, /* 0xd62a */ { true, 0xd62a, 0xd62a }, /* 0xd62b */ { true, 0xd62b, 0xd62b }, /* 0xd62c */ { true, 0xd62c, 0xd62c }, /* 0xd62d */ { true, 0xd62d, 0xd62d }, /* 0xd62e */ { true, 0xd62e, 0xd62e }, /* 0xd62f */ { true, 0xd62f, 0xd62f }, /* 0xd630 */ { true, 0xd630, 0xd630 }, /* 0xd631 */ { true, 0xd631, 0xd631 }, /* 0xd632 */ { true, 0xd632, 0xd632 }, /* 0xd633 */ { true, 0xd633, 0xd633 }, /* 0xd634 */ { true, 0xd634, 0xd634 }, /* 0xd635 */ { true, 0xd635, 0xd635 }, /* 0xd636 */ { true, 0xd636, 0xd636 }, /* 0xd637 */ { true, 0xd637, 0xd637 }, /* 0xd638 */ { true, 0xd638, 0xd638 }, /* 0xd639 */ { true, 0xd639, 0xd639 }, /* 0xd63a */ { true, 0xd63a, 0xd63a }, /* 0xd63b */ { true, 0xd63b, 0xd63b }, /* 0xd63c */ { true, 0xd63c, 0xd63c }, /* 0xd63d */ { true, 0xd63d, 0xd63d }, /* 0xd63e */ { true, 0xd63e, 0xd63e }, /* 0xd63f */ { true, 0xd63f, 0xd63f }, /* 0xd640 */ { true, 0xd640, 0xd640 }, /* 0xd641 */ { true, 0xd641, 0xd641 }, /* 0xd642 */ { true, 0xd642, 0xd642 }, /* 0xd643 */ { true, 0xd643, 0xd643 }, /* 0xd644 */ { true, 0xd644, 0xd644 }, /* 0xd645 */ { true, 0xd645, 0xd645 }, /* 0xd646 */ { true, 0xd646, 0xd646 }, /* 0xd647 */ { true, 0xd647, 0xd647 }, /* 0xd648 */ { true, 0xd648, 0xd648 }, /* 0xd649 */ { true, 0xd649, 0xd649 }, /* 0xd64a */ { true, 0xd64a, 0xd64a }, /* 0xd64b */ { true, 0xd64b, 0xd64b }, /* 0xd64c */ { true, 0xd64c, 0xd64c }, /* 0xd64d */ { true, 0xd64d, 0xd64d }, /* 0xd64e */ { true, 0xd64e, 0xd64e }, /* 0xd64f */ { true, 0xd64f, 0xd64f }, /* 0xd650 */ { true, 0xd650, 0xd650 }, /* 0xd651 */ { true, 0xd651, 0xd651 }, /* 0xd652 */ { true, 0xd652, 0xd652 }, /* 0xd653 */ { true, 0xd653, 0xd653 }, /* 0xd654 */ { true, 0xd654, 0xd654 }, /* 0xd655 */ { true, 0xd655, 0xd655 }, /* 0xd656 */ { true, 0xd656, 0xd656 }, /* 0xd657 */ { true, 0xd657, 0xd657 }, /* 0xd658 */ { true, 0xd658, 0xd658 }, /* 0xd659 */ { true, 0xd659, 0xd659 }, /* 0xd65a */ { true, 0xd65a, 0xd65a }, /* 0xd65b */ { true, 0xd65b, 0xd65b }, /* 0xd65c */ { true, 0xd65c, 0xd65c }, /* 0xd65d */ { true, 0xd65d, 0xd65d }, /* 0xd65e */ { true, 0xd65e, 0xd65e }, /* 0xd65f */ { true, 0xd65f, 0xd65f }, /* 0xd660 */ { true, 0xd660, 0xd660 }, /* 0xd661 */ { true, 0xd661, 0xd661 }, /* 0xd662 */ { true, 0xd662, 0xd662 }, /* 0xd663 */ { true, 0xd663, 0xd663 }, /* 0xd664 */ { true, 0xd664, 0xd664 }, /* 0xd665 */ { true, 0xd665, 0xd665 }, /* 0xd666 */ { true, 0xd666, 0xd666 }, /* 0xd667 */ { true, 0xd667, 0xd667 }, /* 0xd668 */ { true, 0xd668, 0xd668 }, /* 0xd669 */ { true, 0xd669, 0xd669 }, /* 0xd66a */ { true, 0xd66a, 0xd66a }, /* 0xd66b */ { true, 0xd66b, 0xd66b }, /* 0xd66c */ { true, 0xd66c, 0xd66c }, /* 0xd66d */ { true, 0xd66d, 0xd66d }, /* 0xd66e */ { true, 0xd66e, 0xd66e }, /* 0xd66f */ { true, 0xd66f, 0xd66f }, /* 0xd670 */ { true, 0xd670, 0xd670 }, /* 0xd671 */ { true, 0xd671, 0xd671 }, /* 0xd672 */ { true, 0xd672, 0xd672 }, /* 0xd673 */ { true, 0xd673, 0xd673 }, /* 0xd674 */ { true, 0xd674, 0xd674 }, /* 0xd675 */ { true, 0xd675, 0xd675 }, /* 0xd676 */ { true, 0xd676, 0xd676 }, /* 0xd677 */ { true, 0xd677, 0xd677 }, /* 0xd678 */ { true, 0xd678, 0xd678 }, /* 0xd679 */ { true, 0xd679, 0xd679 }, /* 0xd67a */ { true, 0xd67a, 0xd67a }, /* 0xd67b */ { true, 0xd67b, 0xd67b }, /* 0xd67c */ { true, 0xd67c, 0xd67c }, /* 0xd67d */ { true, 0xd67d, 0xd67d }, /* 0xd67e */ { true, 0xd67e, 0xd67e }, /* 0xd67f */ { true, 0xd67f, 0xd67f }, /* 0xd680 */ { true, 0xd680, 0xd680 }, /* 0xd681 */ { true, 0xd681, 0xd681 }, /* 0xd682 */ { true, 0xd682, 0xd682 }, /* 0xd683 */ { true, 0xd683, 0xd683 }, /* 0xd684 */ { true, 0xd684, 0xd684 }, /* 0xd685 */ { true, 0xd685, 0xd685 }, /* 0xd686 */ { true, 0xd686, 0xd686 }, /* 0xd687 */ { true, 0xd687, 0xd687 }, /* 0xd688 */ { true, 0xd688, 0xd688 }, /* 0xd689 */ { true, 0xd689, 0xd689 }, /* 0xd68a */ { true, 0xd68a, 0xd68a }, /* 0xd68b */ { true, 0xd68b, 0xd68b }, /* 0xd68c */ { true, 0xd68c, 0xd68c }, /* 0xd68d */ { true, 0xd68d, 0xd68d }, /* 0xd68e */ { true, 0xd68e, 0xd68e }, /* 0xd68f */ { true, 0xd68f, 0xd68f }, /* 0xd690 */ { true, 0xd690, 0xd690 }, /* 0xd691 */ { true, 0xd691, 0xd691 }, /* 0xd692 */ { true, 0xd692, 0xd692 }, /* 0xd693 */ { true, 0xd693, 0xd693 }, /* 0xd694 */ { true, 0xd694, 0xd694 }, /* 0xd695 */ { true, 0xd695, 0xd695 }, /* 0xd696 */ { true, 0xd696, 0xd696 }, /* 0xd697 */ { true, 0xd697, 0xd697 }, /* 0xd698 */ { true, 0xd698, 0xd698 }, /* 0xd699 */ { true, 0xd699, 0xd699 }, /* 0xd69a */ { true, 0xd69a, 0xd69a }, /* 0xd69b */ { true, 0xd69b, 0xd69b }, /* 0xd69c */ { true, 0xd69c, 0xd69c }, /* 0xd69d */ { true, 0xd69d, 0xd69d }, /* 0xd69e */ { true, 0xd69e, 0xd69e }, /* 0xd69f */ { true, 0xd69f, 0xd69f }, /* 0xd6a0 */ { true, 0xd6a0, 0xd6a0 }, /* 0xd6a1 */ { true, 0xd6a1, 0xd6a1 }, /* 0xd6a2 */ { true, 0xd6a2, 0xd6a2 }, /* 0xd6a3 */ { true, 0xd6a3, 0xd6a3 }, /* 0xd6a4 */ { true, 0xd6a4, 0xd6a4 }, /* 0xd6a5 */ { true, 0xd6a5, 0xd6a5 }, /* 0xd6a6 */ { true, 0xd6a6, 0xd6a6 }, /* 0xd6a7 */ { true, 0xd6a7, 0xd6a7 }, /* 0xd6a8 */ { true, 0xd6a8, 0xd6a8 }, /* 0xd6a9 */ { true, 0xd6a9, 0xd6a9 }, /* 0xd6aa */ { true, 0xd6aa, 0xd6aa }, /* 0xd6ab */ { true, 0xd6ab, 0xd6ab }, /* 0xd6ac */ { true, 0xd6ac, 0xd6ac }, /* 0xd6ad */ { true, 0xd6ad, 0xd6ad }, /* 0xd6ae */ { true, 0xd6ae, 0xd6ae }, /* 0xd6af */ { true, 0xd6af, 0xd6af }, /* 0xd6b0 */ { true, 0xd6b0, 0xd6b0 }, /* 0xd6b1 */ { true, 0xd6b1, 0xd6b1 }, /* 0xd6b2 */ { true, 0xd6b2, 0xd6b2 }, /* 0xd6b3 */ { true, 0xd6b3, 0xd6b3 }, /* 0xd6b4 */ { true, 0xd6b4, 0xd6b4 }, /* 0xd6b5 */ { true, 0xd6b5, 0xd6b5 }, /* 0xd6b6 */ { true, 0xd6b6, 0xd6b6 }, /* 0xd6b7 */ { true, 0xd6b7, 0xd6b7 }, /* 0xd6b8 */ { true, 0xd6b8, 0xd6b8 }, /* 0xd6b9 */ { true, 0xd6b9, 0xd6b9 }, /* 0xd6ba */ { true, 0xd6ba, 0xd6ba }, /* 0xd6bb */ { true, 0xd6bb, 0xd6bb }, /* 0xd6bc */ { true, 0xd6bc, 0xd6bc }, /* 0xd6bd */ { true, 0xd6bd, 0xd6bd }, /* 0xd6be */ { true, 0xd6be, 0xd6be }, /* 0xd6bf */ { true, 0xd6bf, 0xd6bf }, /* 0xd6c0 */ { true, 0xd6c0, 0xd6c0 }, /* 0xd6c1 */ { true, 0xd6c1, 0xd6c1 }, /* 0xd6c2 */ { true, 0xd6c2, 0xd6c2 }, /* 0xd6c3 */ { true, 0xd6c3, 0xd6c3 }, /* 0xd6c4 */ { true, 0xd6c4, 0xd6c4 }, /* 0xd6c5 */ { true, 0xd6c5, 0xd6c5 }, /* 0xd6c6 */ { true, 0xd6c6, 0xd6c6 }, /* 0xd6c7 */ { true, 0xd6c7, 0xd6c7 }, /* 0xd6c8 */ { true, 0xd6c8, 0xd6c8 }, /* 0xd6c9 */ { true, 0xd6c9, 0xd6c9 }, /* 0xd6ca */ { true, 0xd6ca, 0xd6ca }, /* 0xd6cb */ { true, 0xd6cb, 0xd6cb }, /* 0xd6cc */ { true, 0xd6cc, 0xd6cc }, /* 0xd6cd */ { true, 0xd6cd, 0xd6cd }, /* 0xd6ce */ { true, 0xd6ce, 0xd6ce }, /* 0xd6cf */ { true, 0xd6cf, 0xd6cf }, /* 0xd6d0 */ { true, 0xd6d0, 0xd6d0 }, /* 0xd6d1 */ { true, 0xd6d1, 0xd6d1 }, /* 0xd6d2 */ { true, 0xd6d2, 0xd6d2 }, /* 0xd6d3 */ { true, 0xd6d3, 0xd6d3 }, /* 0xd6d4 */ { true, 0xd6d4, 0xd6d4 }, /* 0xd6d5 */ { true, 0xd6d5, 0xd6d5 }, /* 0xd6d6 */ { true, 0xd6d6, 0xd6d6 }, /* 0xd6d7 */ { true, 0xd6d7, 0xd6d7 }, /* 0xd6d8 */ { true, 0xd6d8, 0xd6d8 }, /* 0xd6d9 */ { true, 0xd6d9, 0xd6d9 }, /* 0xd6da */ { true, 0xd6da, 0xd6da }, /* 0xd6db */ { true, 0xd6db, 0xd6db }, /* 0xd6dc */ { true, 0xd6dc, 0xd6dc }, /* 0xd6dd */ { true, 0xd6dd, 0xd6dd }, /* 0xd6de */ { true, 0xd6de, 0xd6de }, /* 0xd6df */ { true, 0xd6df, 0xd6df }, /* 0xd6e0 */ { true, 0xd6e0, 0xd6e0 }, /* 0xd6e1 */ { true, 0xd6e1, 0xd6e1 }, /* 0xd6e2 */ { true, 0xd6e2, 0xd6e2 }, /* 0xd6e3 */ { true, 0xd6e3, 0xd6e3 }, /* 0xd6e4 */ { true, 0xd6e4, 0xd6e4 }, /* 0xd6e5 */ { true, 0xd6e5, 0xd6e5 }, /* 0xd6e6 */ { true, 0xd6e6, 0xd6e6 }, /* 0xd6e7 */ { true, 0xd6e7, 0xd6e7 }, /* 0xd6e8 */ { true, 0xd6e8, 0xd6e8 }, /* 0xd6e9 */ { true, 0xd6e9, 0xd6e9 }, /* 0xd6ea */ { true, 0xd6ea, 0xd6ea }, /* 0xd6eb */ { true, 0xd6eb, 0xd6eb }, /* 0xd6ec */ { true, 0xd6ec, 0xd6ec }, /* 0xd6ed */ { true, 0xd6ed, 0xd6ed }, /* 0xd6ee */ { true, 0xd6ee, 0xd6ee }, /* 0xd6ef */ { true, 0xd6ef, 0xd6ef }, /* 0xd6f0 */ { true, 0xd6f0, 0xd6f0 }, /* 0xd6f1 */ { true, 0xd6f1, 0xd6f1 }, /* 0xd6f2 */ { true, 0xd6f2, 0xd6f2 }, /* 0xd6f3 */ { true, 0xd6f3, 0xd6f3 }, /* 0xd6f4 */ { true, 0xd6f4, 0xd6f4 }, /* 0xd6f5 */ { true, 0xd6f5, 0xd6f5 }, /* 0xd6f6 */ { true, 0xd6f6, 0xd6f6 }, /* 0xd6f7 */ { true, 0xd6f7, 0xd6f7 }, /* 0xd6f8 */ { true, 0xd6f8, 0xd6f8 }, /* 0xd6f9 */ { true, 0xd6f9, 0xd6f9 }, /* 0xd6fa */ { true, 0xd6fa, 0xd6fa }, /* 0xd6fb */ { true, 0xd6fb, 0xd6fb }, /* 0xd6fc */ { true, 0xd6fc, 0xd6fc }, /* 0xd6fd */ { true, 0xd6fd, 0xd6fd }, /* 0xd6fe */ { true, 0xd6fe, 0xd6fe }, /* 0xd6ff */ { true, 0xd6ff, 0xd6ff }, /* 0xd700 */ { true, 0xd700, 0xd700 }, /* 0xd701 */ { true, 0xd701, 0xd701 }, /* 0xd702 */ { true, 0xd702, 0xd702 }, /* 0xd703 */ { true, 0xd703, 0xd703 }, /* 0xd704 */ { true, 0xd704, 0xd704 }, /* 0xd705 */ { true, 0xd705, 0xd705 }, /* 0xd706 */ { true, 0xd706, 0xd706 }, /* 0xd707 */ { true, 0xd707, 0xd707 }, /* 0xd708 */ { true, 0xd708, 0xd708 }, /* 0xd709 */ { true, 0xd709, 0xd709 }, /* 0xd70a */ { true, 0xd70a, 0xd70a }, /* 0xd70b */ { true, 0xd70b, 0xd70b }, /* 0xd70c */ { true, 0xd70c, 0xd70c }, /* 0xd70d */ { true, 0xd70d, 0xd70d }, /* 0xd70e */ { true, 0xd70e, 0xd70e }, /* 0xd70f */ { true, 0xd70f, 0xd70f }, /* 0xd710 */ { true, 0xd710, 0xd710 }, /* 0xd711 */ { true, 0xd711, 0xd711 }, /* 0xd712 */ { true, 0xd712, 0xd712 }, /* 0xd713 */ { true, 0xd713, 0xd713 }, /* 0xd714 */ { true, 0xd714, 0xd714 }, /* 0xd715 */ { true, 0xd715, 0xd715 }, /* 0xd716 */ { true, 0xd716, 0xd716 }, /* 0xd717 */ { true, 0xd717, 0xd717 }, /* 0xd718 */ { true, 0xd718, 0xd718 }, /* 0xd719 */ { true, 0xd719, 0xd719 }, /* 0xd71a */ { true, 0xd71a, 0xd71a }, /* 0xd71b */ { true, 0xd71b, 0xd71b }, /* 0xd71c */ { true, 0xd71c, 0xd71c }, /* 0xd71d */ { true, 0xd71d, 0xd71d }, /* 0xd71e */ { true, 0xd71e, 0xd71e }, /* 0xd71f */ { true, 0xd71f, 0xd71f }, /* 0xd720 */ { true, 0xd720, 0xd720 }, /* 0xd721 */ { true, 0xd721, 0xd721 }, /* 0xd722 */ { true, 0xd722, 0xd722 }, /* 0xd723 */ { true, 0xd723, 0xd723 }, /* 0xd724 */ { true, 0xd724, 0xd724 }, /* 0xd725 */ { true, 0xd725, 0xd725 }, /* 0xd726 */ { true, 0xd726, 0xd726 }, /* 0xd727 */ { true, 0xd727, 0xd727 }, /* 0xd728 */ { true, 0xd728, 0xd728 }, /* 0xd729 */ { true, 0xd729, 0xd729 }, /* 0xd72a */ { true, 0xd72a, 0xd72a }, /* 0xd72b */ { true, 0xd72b, 0xd72b }, /* 0xd72c */ { true, 0xd72c, 0xd72c }, /* 0xd72d */ { true, 0xd72d, 0xd72d }, /* 0xd72e */ { true, 0xd72e, 0xd72e }, /* 0xd72f */ { true, 0xd72f, 0xd72f }, /* 0xd730 */ { true, 0xd730, 0xd730 }, /* 0xd731 */ { true, 0xd731, 0xd731 }, /* 0xd732 */ { true, 0xd732, 0xd732 }, /* 0xd733 */ { true, 0xd733, 0xd733 }, /* 0xd734 */ { true, 0xd734, 0xd734 }, /* 0xd735 */ { true, 0xd735, 0xd735 }, /* 0xd736 */ { true, 0xd736, 0xd736 }, /* 0xd737 */ { true, 0xd737, 0xd737 }, /* 0xd738 */ { true, 0xd738, 0xd738 }, /* 0xd739 */ { true, 0xd739, 0xd739 }, /* 0xd73a */ { true, 0xd73a, 0xd73a }, /* 0xd73b */ { true, 0xd73b, 0xd73b }, /* 0xd73c */ { true, 0xd73c, 0xd73c }, /* 0xd73d */ { true, 0xd73d, 0xd73d }, /* 0xd73e */ { true, 0xd73e, 0xd73e }, /* 0xd73f */ { true, 0xd73f, 0xd73f }, /* 0xd740 */ { true, 0xd740, 0xd740 }, /* 0xd741 */ { true, 0xd741, 0xd741 }, /* 0xd742 */ { true, 0xd742, 0xd742 }, /* 0xd743 */ { true, 0xd743, 0xd743 }, /* 0xd744 */ { true, 0xd744, 0xd744 }, /* 0xd745 */ { true, 0xd745, 0xd745 }, /* 0xd746 */ { true, 0xd746, 0xd746 }, /* 0xd747 */ { true, 0xd747, 0xd747 }, /* 0xd748 */ { true, 0xd748, 0xd748 }, /* 0xd749 */ { true, 0xd749, 0xd749 }, /* 0xd74a */ { true, 0xd74a, 0xd74a }, /* 0xd74b */ { true, 0xd74b, 0xd74b }, /* 0xd74c */ { true, 0xd74c, 0xd74c }, /* 0xd74d */ { true, 0xd74d, 0xd74d }, /* 0xd74e */ { true, 0xd74e, 0xd74e }, /* 0xd74f */ { true, 0xd74f, 0xd74f }, /* 0xd750 */ { true, 0xd750, 0xd750 }, /* 0xd751 */ { true, 0xd751, 0xd751 }, /* 0xd752 */ { true, 0xd752, 0xd752 }, /* 0xd753 */ { true, 0xd753, 0xd753 }, /* 0xd754 */ { true, 0xd754, 0xd754 }, /* 0xd755 */ { true, 0xd755, 0xd755 }, /* 0xd756 */ { true, 0xd756, 0xd756 }, /* 0xd757 */ { true, 0xd757, 0xd757 }, /* 0xd758 */ { true, 0xd758, 0xd758 }, /* 0xd759 */ { true, 0xd759, 0xd759 }, /* 0xd75a */ { true, 0xd75a, 0xd75a }, /* 0xd75b */ { true, 0xd75b, 0xd75b }, /* 0xd75c */ { true, 0xd75c, 0xd75c }, /* 0xd75d */ { true, 0xd75d, 0xd75d }, /* 0xd75e */ { true, 0xd75e, 0xd75e }, /* 0xd75f */ { true, 0xd75f, 0xd75f }, /* 0xd760 */ { true, 0xd760, 0xd760 }, /* 0xd761 */ { true, 0xd761, 0xd761 }, /* 0xd762 */ { true, 0xd762, 0xd762 }, /* 0xd763 */ { true, 0xd763, 0xd763 }, /* 0xd764 */ { true, 0xd764, 0xd764 }, /* 0xd765 */ { true, 0xd765, 0xd765 }, /* 0xd766 */ { true, 0xd766, 0xd766 }, /* 0xd767 */ { true, 0xd767, 0xd767 }, /* 0xd768 */ { true, 0xd768, 0xd768 }, /* 0xd769 */ { true, 0xd769, 0xd769 }, /* 0xd76a */ { true, 0xd76a, 0xd76a }, /* 0xd76b */ { true, 0xd76b, 0xd76b }, /* 0xd76c */ { true, 0xd76c, 0xd76c }, /* 0xd76d */ { true, 0xd76d, 0xd76d }, /* 0xd76e */ { true, 0xd76e, 0xd76e }, /* 0xd76f */ { true, 0xd76f, 0xd76f }, /* 0xd770 */ { true, 0xd770, 0xd770 }, /* 0xd771 */ { true, 0xd771, 0xd771 }, /* 0xd772 */ { true, 0xd772, 0xd772 }, /* 0xd773 */ { true, 0xd773, 0xd773 }, /* 0xd774 */ { true, 0xd774, 0xd774 }, /* 0xd775 */ { true, 0xd775, 0xd775 }, /* 0xd776 */ { true, 0xd776, 0xd776 }, /* 0xd777 */ { true, 0xd777, 0xd777 }, /* 0xd778 */ { true, 0xd778, 0xd778 }, /* 0xd779 */ { true, 0xd779, 0xd779 }, /* 0xd77a */ { true, 0xd77a, 0xd77a }, /* 0xd77b */ { true, 0xd77b, 0xd77b }, /* 0xd77c */ { true, 0xd77c, 0xd77c }, /* 0xd77d */ { true, 0xd77d, 0xd77d }, /* 0xd77e */ { true, 0xd77e, 0xd77e }, /* 0xd77f */ { true, 0xd77f, 0xd77f }, /* 0xd780 */ { true, 0xd780, 0xd780 }, /* 0xd781 */ { true, 0xd781, 0xd781 }, /* 0xd782 */ { true, 0xd782, 0xd782 }, /* 0xd783 */ { true, 0xd783, 0xd783 }, /* 0xd784 */ { true, 0xd784, 0xd784 }, /* 0xd785 */ { true, 0xd785, 0xd785 }, /* 0xd786 */ { true, 0xd786, 0xd786 }, /* 0xd787 */ { true, 0xd787, 0xd787 }, /* 0xd788 */ { true, 0xd788, 0xd788 }, /* 0xd789 */ { true, 0xd789, 0xd789 }, /* 0xd78a */ { true, 0xd78a, 0xd78a }, /* 0xd78b */ { true, 0xd78b, 0xd78b }, /* 0xd78c */ { true, 0xd78c, 0xd78c }, /* 0xd78d */ { true, 0xd78d, 0xd78d }, /* 0xd78e */ { true, 0xd78e, 0xd78e }, /* 0xd78f */ { true, 0xd78f, 0xd78f }, /* 0xd790 */ { true, 0xd790, 0xd790 }, /* 0xd791 */ { true, 0xd791, 0xd791 }, /* 0xd792 */ { true, 0xd792, 0xd792 }, /* 0xd793 */ { true, 0xd793, 0xd793 }, /* 0xd794 */ { true, 0xd794, 0xd794 }, /* 0xd795 */ { true, 0xd795, 0xd795 }, /* 0xd796 */ { true, 0xd796, 0xd796 }, /* 0xd797 */ { true, 0xd797, 0xd797 }, /* 0xd798 */ { true, 0xd798, 0xd798 }, /* 0xd799 */ { true, 0xd799, 0xd799 }, /* 0xd79a */ { true, 0xd79a, 0xd79a }, /* 0xd79b */ { true, 0xd79b, 0xd79b }, /* 0xd79c */ { true, 0xd79c, 0xd79c }, /* 0xd79d */ { true, 0xd79d, 0xd79d }, /* 0xd79e */ { true, 0xd79e, 0xd79e }, /* 0xd79f */ { true, 0xd79f, 0xd79f }, /* 0xd7a0 */ { true, 0xd7a0, 0xd7a0 }, /* 0xd7a1 */ { true, 0xd7a1, 0xd7a1 }, /* 0xd7a2 */ { true, 0xd7a2, 0xd7a2 }, /* 0xd7a3 */ { true, 0xd7a3, 0xd7a3 }, /* 0xd7a4 */ { false, 0xd7a4, 0xd7a4 }, /* 0xd7a5 */ { false, 0xd7a5, 0xd7a5 }, /* 0xd7a6 */ { false, 0xd7a6, 0xd7a6 }, /* 0xd7a7 */ { false, 0xd7a7, 0xd7a7 }, /* 0xd7a8 */ { false, 0xd7a8, 0xd7a8 }, /* 0xd7a9 */ { false, 0xd7a9, 0xd7a9 }, /* 0xd7aa */ { false, 0xd7aa, 0xd7aa }, /* 0xd7ab */ { false, 0xd7ab, 0xd7ab }, /* 0xd7ac */ { false, 0xd7ac, 0xd7ac }, /* 0xd7ad */ { false, 0xd7ad, 0xd7ad }, /* 0xd7ae */ { false, 0xd7ae, 0xd7ae }, /* 0xd7af */ { false, 0xd7af, 0xd7af }, /* 0xd7b0 */ { false, 0xd7b0, 0xd7b0 }, /* 0xd7b1 */ { false, 0xd7b1, 0xd7b1 }, /* 0xd7b2 */ { false, 0xd7b2, 0xd7b2 }, /* 0xd7b3 */ { false, 0xd7b3, 0xd7b3 }, /* 0xd7b4 */ { false, 0xd7b4, 0xd7b4 }, /* 0xd7b5 */ { false, 0xd7b5, 0xd7b5 }, /* 0xd7b6 */ { false, 0xd7b6, 0xd7b6 }, /* 0xd7b7 */ { false, 0xd7b7, 0xd7b7 }, /* 0xd7b8 */ { false, 0xd7b8, 0xd7b8 }, /* 0xd7b9 */ { false, 0xd7b9, 0xd7b9 }, /* 0xd7ba */ { false, 0xd7ba, 0xd7ba }, /* 0xd7bb */ { false, 0xd7bb, 0xd7bb }, /* 0xd7bc */ { false, 0xd7bc, 0xd7bc }, /* 0xd7bd */ { false, 0xd7bd, 0xd7bd }, /* 0xd7be */ { false, 0xd7be, 0xd7be }, /* 0xd7bf */ { false, 0xd7bf, 0xd7bf }, /* 0xd7c0 */ { false, 0xd7c0, 0xd7c0 }, /* 0xd7c1 */ { false, 0xd7c1, 0xd7c1 }, /* 0xd7c2 */ { false, 0xd7c2, 0xd7c2 }, /* 0xd7c3 */ { false, 0xd7c3, 0xd7c3 }, /* 0xd7c4 */ { false, 0xd7c4, 0xd7c4 }, /* 0xd7c5 */ { false, 0xd7c5, 0xd7c5 }, /* 0xd7c6 */ { false, 0xd7c6, 0xd7c6 }, /* 0xd7c7 */ { false, 0xd7c7, 0xd7c7 }, /* 0xd7c8 */ { false, 0xd7c8, 0xd7c8 }, /* 0xd7c9 */ { false, 0xd7c9, 0xd7c9 }, /* 0xd7ca */ { false, 0xd7ca, 0xd7ca }, /* 0xd7cb */ { false, 0xd7cb, 0xd7cb }, /* 0xd7cc */ { false, 0xd7cc, 0xd7cc }, /* 0xd7cd */ { false, 0xd7cd, 0xd7cd }, /* 0xd7ce */ { false, 0xd7ce, 0xd7ce }, /* 0xd7cf */ { false, 0xd7cf, 0xd7cf }, /* 0xd7d0 */ { false, 0xd7d0, 0xd7d0 }, /* 0xd7d1 */ { false, 0xd7d1, 0xd7d1 }, /* 0xd7d2 */ { false, 0xd7d2, 0xd7d2 }, /* 0xd7d3 */ { false, 0xd7d3, 0xd7d3 }, /* 0xd7d4 */ { false, 0xd7d4, 0xd7d4 }, /* 0xd7d5 */ { false, 0xd7d5, 0xd7d5 }, /* 0xd7d6 */ { false, 0xd7d6, 0xd7d6 }, /* 0xd7d7 */ { false, 0xd7d7, 0xd7d7 }, /* 0xd7d8 */ { false, 0xd7d8, 0xd7d8 }, /* 0xd7d9 */ { false, 0xd7d9, 0xd7d9 }, /* 0xd7da */ { false, 0xd7da, 0xd7da }, /* 0xd7db */ { false, 0xd7db, 0xd7db }, /* 0xd7dc */ { false, 0xd7dc, 0xd7dc }, /* 0xd7dd */ { false, 0xd7dd, 0xd7dd }, /* 0xd7de */ { false, 0xd7de, 0xd7de }, /* 0xd7df */ { false, 0xd7df, 0xd7df }, /* 0xd7e0 */ { false, 0xd7e0, 0xd7e0 }, /* 0xd7e1 */ { false, 0xd7e1, 0xd7e1 }, /* 0xd7e2 */ { false, 0xd7e2, 0xd7e2 }, /* 0xd7e3 */ { false, 0xd7e3, 0xd7e3 }, /* 0xd7e4 */ { false, 0xd7e4, 0xd7e4 }, /* 0xd7e5 */ { false, 0xd7e5, 0xd7e5 }, /* 0xd7e6 */ { false, 0xd7e6, 0xd7e6 }, /* 0xd7e7 */ { false, 0xd7e7, 0xd7e7 }, /* 0xd7e8 */ { false, 0xd7e8, 0xd7e8 }, /* 0xd7e9 */ { false, 0xd7e9, 0xd7e9 }, /* 0xd7ea */ { false, 0xd7ea, 0xd7ea }, /* 0xd7eb */ { false, 0xd7eb, 0xd7eb }, /* 0xd7ec */ { false, 0xd7ec, 0xd7ec }, /* 0xd7ed */ { false, 0xd7ed, 0xd7ed }, /* 0xd7ee */ { false, 0xd7ee, 0xd7ee }, /* 0xd7ef */ { false, 0xd7ef, 0xd7ef }, /* 0xd7f0 */ { false, 0xd7f0, 0xd7f0 }, /* 0xd7f1 */ { false, 0xd7f1, 0xd7f1 }, /* 0xd7f2 */ { false, 0xd7f2, 0xd7f2 }, /* 0xd7f3 */ { false, 0xd7f3, 0xd7f3 }, /* 0xd7f4 */ { false, 0xd7f4, 0xd7f4 }, /* 0xd7f5 */ { false, 0xd7f5, 0xd7f5 }, /* 0xd7f6 */ { false, 0xd7f6, 0xd7f6 }, /* 0xd7f7 */ { false, 0xd7f7, 0xd7f7 }, /* 0xd7f8 */ { false, 0xd7f8, 0xd7f8 }, /* 0xd7f9 */ { false, 0xd7f9, 0xd7f9 }, /* 0xd7fa */ { false, 0xd7fa, 0xd7fa }, /* 0xd7fb */ { false, 0xd7fb, 0xd7fb }, /* 0xd7fc */ { false, 0xd7fc, 0xd7fc }, /* 0xd7fd */ { false, 0xd7fd, 0xd7fd }, /* 0xd7fe */ { false, 0xd7fe, 0xd7fe }, /* 0xd7ff */ { false, 0xd7ff, 0xd7ff }, /* 0xd800 */ { false, 0xd800, 0xd800 }, /* 0xd801 */ { false, 0xd801, 0xd801 }, /* 0xd802 */ { false, 0xd802, 0xd802 }, /* 0xd803 */ { false, 0xd803, 0xd803 }, /* 0xd804 */ { false, 0xd804, 0xd804 }, /* 0xd805 */ { false, 0xd805, 0xd805 }, /* 0xd806 */ { false, 0xd806, 0xd806 }, /* 0xd807 */ { false, 0xd807, 0xd807 }, /* 0xd808 */ { false, 0xd808, 0xd808 }, /* 0xd809 */ { false, 0xd809, 0xd809 }, /* 0xd80a */ { false, 0xd80a, 0xd80a }, /* 0xd80b */ { false, 0xd80b, 0xd80b }, /* 0xd80c */ { false, 0xd80c, 0xd80c }, /* 0xd80d */ { false, 0xd80d, 0xd80d }, /* 0xd80e */ { false, 0xd80e, 0xd80e }, /* 0xd80f */ { false, 0xd80f, 0xd80f }, /* 0xd810 */ { false, 0xd810, 0xd810 }, /* 0xd811 */ { false, 0xd811, 0xd811 }, /* 0xd812 */ { false, 0xd812, 0xd812 }, /* 0xd813 */ { false, 0xd813, 0xd813 }, /* 0xd814 */ { false, 0xd814, 0xd814 }, /* 0xd815 */ { false, 0xd815, 0xd815 }, /* 0xd816 */ { false, 0xd816, 0xd816 }, /* 0xd817 */ { false, 0xd817, 0xd817 }, /* 0xd818 */ { false, 0xd818, 0xd818 }, /* 0xd819 */ { false, 0xd819, 0xd819 }, /* 0xd81a */ { false, 0xd81a, 0xd81a }, /* 0xd81b */ { false, 0xd81b, 0xd81b }, /* 0xd81c */ { false, 0xd81c, 0xd81c }, /* 0xd81d */ { false, 0xd81d, 0xd81d }, /* 0xd81e */ { false, 0xd81e, 0xd81e }, /* 0xd81f */ { false, 0xd81f, 0xd81f }, /* 0xd820 */ { false, 0xd820, 0xd820 }, /* 0xd821 */ { false, 0xd821, 0xd821 }, /* 0xd822 */ { false, 0xd822, 0xd822 }, /* 0xd823 */ { false, 0xd823, 0xd823 }, /* 0xd824 */ { false, 0xd824, 0xd824 }, /* 0xd825 */ { false, 0xd825, 0xd825 }, /* 0xd826 */ { false, 0xd826, 0xd826 }, /* 0xd827 */ { false, 0xd827, 0xd827 }, /* 0xd828 */ { false, 0xd828, 0xd828 }, /* 0xd829 */ { false, 0xd829, 0xd829 }, /* 0xd82a */ { false, 0xd82a, 0xd82a }, /* 0xd82b */ { false, 0xd82b, 0xd82b }, /* 0xd82c */ { false, 0xd82c, 0xd82c }, /* 0xd82d */ { false, 0xd82d, 0xd82d }, /* 0xd82e */ { false, 0xd82e, 0xd82e }, /* 0xd82f */ { false, 0xd82f, 0xd82f }, /* 0xd830 */ { false, 0xd830, 0xd830 }, /* 0xd831 */ { false, 0xd831, 0xd831 }, /* 0xd832 */ { false, 0xd832, 0xd832 }, /* 0xd833 */ { false, 0xd833, 0xd833 }, /* 0xd834 */ { false, 0xd834, 0xd834 }, /* 0xd835 */ { false, 0xd835, 0xd835 }, /* 0xd836 */ { false, 0xd836, 0xd836 }, /* 0xd837 */ { false, 0xd837, 0xd837 }, /* 0xd838 */ { false, 0xd838, 0xd838 }, /* 0xd839 */ { false, 0xd839, 0xd839 }, /* 0xd83a */ { false, 0xd83a, 0xd83a }, /* 0xd83b */ { false, 0xd83b, 0xd83b }, /* 0xd83c */ { false, 0xd83c, 0xd83c }, /* 0xd83d */ { false, 0xd83d, 0xd83d }, /* 0xd83e */ { false, 0xd83e, 0xd83e }, /* 0xd83f */ { false, 0xd83f, 0xd83f }, /* 0xd840 */ { false, 0xd840, 0xd840 }, /* 0xd841 */ { false, 0xd841, 0xd841 }, /* 0xd842 */ { false, 0xd842, 0xd842 }, /* 0xd843 */ { false, 0xd843, 0xd843 }, /* 0xd844 */ { false, 0xd844, 0xd844 }, /* 0xd845 */ { false, 0xd845, 0xd845 }, /* 0xd846 */ { false, 0xd846, 0xd846 }, /* 0xd847 */ { false, 0xd847, 0xd847 }, /* 0xd848 */ { false, 0xd848, 0xd848 }, /* 0xd849 */ { false, 0xd849, 0xd849 }, /* 0xd84a */ { false, 0xd84a, 0xd84a }, /* 0xd84b */ { false, 0xd84b, 0xd84b }, /* 0xd84c */ { false, 0xd84c, 0xd84c }, /* 0xd84d */ { false, 0xd84d, 0xd84d }, /* 0xd84e */ { false, 0xd84e, 0xd84e }, /* 0xd84f */ { false, 0xd84f, 0xd84f }, /* 0xd850 */ { false, 0xd850, 0xd850 }, /* 0xd851 */ { false, 0xd851, 0xd851 }, /* 0xd852 */ { false, 0xd852, 0xd852 }, /* 0xd853 */ { false, 0xd853, 0xd853 }, /* 0xd854 */ { false, 0xd854, 0xd854 }, /* 0xd855 */ { false, 0xd855, 0xd855 }, /* 0xd856 */ { false, 0xd856, 0xd856 }, /* 0xd857 */ { false, 0xd857, 0xd857 }, /* 0xd858 */ { false, 0xd858, 0xd858 }, /* 0xd859 */ { false, 0xd859, 0xd859 }, /* 0xd85a */ { false, 0xd85a, 0xd85a }, /* 0xd85b */ { false, 0xd85b, 0xd85b }, /* 0xd85c */ { false, 0xd85c, 0xd85c }, /* 0xd85d */ { false, 0xd85d, 0xd85d }, /* 0xd85e */ { false, 0xd85e, 0xd85e }, /* 0xd85f */ { false, 0xd85f, 0xd85f }, /* 0xd860 */ { false, 0xd860, 0xd860 }, /* 0xd861 */ { false, 0xd861, 0xd861 }, /* 0xd862 */ { false, 0xd862, 0xd862 }, /* 0xd863 */ { false, 0xd863, 0xd863 }, /* 0xd864 */ { false, 0xd864, 0xd864 }, /* 0xd865 */ { false, 0xd865, 0xd865 }, /* 0xd866 */ { false, 0xd866, 0xd866 }, /* 0xd867 */ { false, 0xd867, 0xd867 }, /* 0xd868 */ { false, 0xd868, 0xd868 }, /* 0xd869 */ { false, 0xd869, 0xd869 }, /* 0xd86a */ { false, 0xd86a, 0xd86a }, /* 0xd86b */ { false, 0xd86b, 0xd86b }, /* 0xd86c */ { false, 0xd86c, 0xd86c }, /* 0xd86d */ { false, 0xd86d, 0xd86d }, /* 0xd86e */ { false, 0xd86e, 0xd86e }, /* 0xd86f */ { false, 0xd86f, 0xd86f }, /* 0xd870 */ { false, 0xd870, 0xd870 }, /* 0xd871 */ { false, 0xd871, 0xd871 }, /* 0xd872 */ { false, 0xd872, 0xd872 }, /* 0xd873 */ { false, 0xd873, 0xd873 }, /* 0xd874 */ { false, 0xd874, 0xd874 }, /* 0xd875 */ { false, 0xd875, 0xd875 }, /* 0xd876 */ { false, 0xd876, 0xd876 }, /* 0xd877 */ { false, 0xd877, 0xd877 }, /* 0xd878 */ { false, 0xd878, 0xd878 }, /* 0xd879 */ { false, 0xd879, 0xd879 }, /* 0xd87a */ { false, 0xd87a, 0xd87a }, /* 0xd87b */ { false, 0xd87b, 0xd87b }, /* 0xd87c */ { false, 0xd87c, 0xd87c }, /* 0xd87d */ { false, 0xd87d, 0xd87d }, /* 0xd87e */ { false, 0xd87e, 0xd87e }, /* 0xd87f */ { false, 0xd87f, 0xd87f }, /* 0xd880 */ { false, 0xd880, 0xd880 }, /* 0xd881 */ { false, 0xd881, 0xd881 }, /* 0xd882 */ { false, 0xd882, 0xd882 }, /* 0xd883 */ { false, 0xd883, 0xd883 }, /* 0xd884 */ { false, 0xd884, 0xd884 }, /* 0xd885 */ { false, 0xd885, 0xd885 }, /* 0xd886 */ { false, 0xd886, 0xd886 }, /* 0xd887 */ { false, 0xd887, 0xd887 }, /* 0xd888 */ { false, 0xd888, 0xd888 }, /* 0xd889 */ { false, 0xd889, 0xd889 }, /* 0xd88a */ { false, 0xd88a, 0xd88a }, /* 0xd88b */ { false, 0xd88b, 0xd88b }, /* 0xd88c */ { false, 0xd88c, 0xd88c }, /* 0xd88d */ { false, 0xd88d, 0xd88d }, /* 0xd88e */ { false, 0xd88e, 0xd88e }, /* 0xd88f */ { false, 0xd88f, 0xd88f }, /* 0xd890 */ { false, 0xd890, 0xd890 }, /* 0xd891 */ { false, 0xd891, 0xd891 }, /* 0xd892 */ { false, 0xd892, 0xd892 }, /* 0xd893 */ { false, 0xd893, 0xd893 }, /* 0xd894 */ { false, 0xd894, 0xd894 }, /* 0xd895 */ { false, 0xd895, 0xd895 }, /* 0xd896 */ { false, 0xd896, 0xd896 }, /* 0xd897 */ { false, 0xd897, 0xd897 }, /* 0xd898 */ { false, 0xd898, 0xd898 }, /* 0xd899 */ { false, 0xd899, 0xd899 }, /* 0xd89a */ { false, 0xd89a, 0xd89a }, /* 0xd89b */ { false, 0xd89b, 0xd89b }, /* 0xd89c */ { false, 0xd89c, 0xd89c }, /* 0xd89d */ { false, 0xd89d, 0xd89d }, /* 0xd89e */ { false, 0xd89e, 0xd89e }, /* 0xd89f */ { false, 0xd89f, 0xd89f }, /* 0xd8a0 */ { false, 0xd8a0, 0xd8a0 }, /* 0xd8a1 */ { false, 0xd8a1, 0xd8a1 }, /* 0xd8a2 */ { false, 0xd8a2, 0xd8a2 }, /* 0xd8a3 */ { false, 0xd8a3, 0xd8a3 }, /* 0xd8a4 */ { false, 0xd8a4, 0xd8a4 }, /* 0xd8a5 */ { false, 0xd8a5, 0xd8a5 }, /* 0xd8a6 */ { false, 0xd8a6, 0xd8a6 }, /* 0xd8a7 */ { false, 0xd8a7, 0xd8a7 }, /* 0xd8a8 */ { false, 0xd8a8, 0xd8a8 }, /* 0xd8a9 */ { false, 0xd8a9, 0xd8a9 }, /* 0xd8aa */ { false, 0xd8aa, 0xd8aa }, /* 0xd8ab */ { false, 0xd8ab, 0xd8ab }, /* 0xd8ac */ { false, 0xd8ac, 0xd8ac }, /* 0xd8ad */ { false, 0xd8ad, 0xd8ad }, /* 0xd8ae */ { false, 0xd8ae, 0xd8ae }, /* 0xd8af */ { false, 0xd8af, 0xd8af }, /* 0xd8b0 */ { false, 0xd8b0, 0xd8b0 }, /* 0xd8b1 */ { false, 0xd8b1, 0xd8b1 }, /* 0xd8b2 */ { false, 0xd8b2, 0xd8b2 }, /* 0xd8b3 */ { false, 0xd8b3, 0xd8b3 }, /* 0xd8b4 */ { false, 0xd8b4, 0xd8b4 }, /* 0xd8b5 */ { false, 0xd8b5, 0xd8b5 }, /* 0xd8b6 */ { false, 0xd8b6, 0xd8b6 }, /* 0xd8b7 */ { false, 0xd8b7, 0xd8b7 }, /* 0xd8b8 */ { false, 0xd8b8, 0xd8b8 }, /* 0xd8b9 */ { false, 0xd8b9, 0xd8b9 }, /* 0xd8ba */ { false, 0xd8ba, 0xd8ba }, /* 0xd8bb */ { false, 0xd8bb, 0xd8bb }, /* 0xd8bc */ { false, 0xd8bc, 0xd8bc }, /* 0xd8bd */ { false, 0xd8bd, 0xd8bd }, /* 0xd8be */ { false, 0xd8be, 0xd8be }, /* 0xd8bf */ { false, 0xd8bf, 0xd8bf }, /* 0xd8c0 */ { false, 0xd8c0, 0xd8c0 }, /* 0xd8c1 */ { false, 0xd8c1, 0xd8c1 }, /* 0xd8c2 */ { false, 0xd8c2, 0xd8c2 }, /* 0xd8c3 */ { false, 0xd8c3, 0xd8c3 }, /* 0xd8c4 */ { false, 0xd8c4, 0xd8c4 }, /* 0xd8c5 */ { false, 0xd8c5, 0xd8c5 }, /* 0xd8c6 */ { false, 0xd8c6, 0xd8c6 }, /* 0xd8c7 */ { false, 0xd8c7, 0xd8c7 }, /* 0xd8c8 */ { false, 0xd8c8, 0xd8c8 }, /* 0xd8c9 */ { false, 0xd8c9, 0xd8c9 }, /* 0xd8ca */ { false, 0xd8ca, 0xd8ca }, /* 0xd8cb */ { false, 0xd8cb, 0xd8cb }, /* 0xd8cc */ { false, 0xd8cc, 0xd8cc }, /* 0xd8cd */ { false, 0xd8cd, 0xd8cd }, /* 0xd8ce */ { false, 0xd8ce, 0xd8ce }, /* 0xd8cf */ { false, 0xd8cf, 0xd8cf }, /* 0xd8d0 */ { false, 0xd8d0, 0xd8d0 }, /* 0xd8d1 */ { false, 0xd8d1, 0xd8d1 }, /* 0xd8d2 */ { false, 0xd8d2, 0xd8d2 }, /* 0xd8d3 */ { false, 0xd8d3, 0xd8d3 }, /* 0xd8d4 */ { false, 0xd8d4, 0xd8d4 }, /* 0xd8d5 */ { false, 0xd8d5, 0xd8d5 }, /* 0xd8d6 */ { false, 0xd8d6, 0xd8d6 }, /* 0xd8d7 */ { false, 0xd8d7, 0xd8d7 }, /* 0xd8d8 */ { false, 0xd8d8, 0xd8d8 }, /* 0xd8d9 */ { false, 0xd8d9, 0xd8d9 }, /* 0xd8da */ { false, 0xd8da, 0xd8da }, /* 0xd8db */ { false, 0xd8db, 0xd8db }, /* 0xd8dc */ { false, 0xd8dc, 0xd8dc }, /* 0xd8dd */ { false, 0xd8dd, 0xd8dd }, /* 0xd8de */ { false, 0xd8de, 0xd8de }, /* 0xd8df */ { false, 0xd8df, 0xd8df }, /* 0xd8e0 */ { false, 0xd8e0, 0xd8e0 }, /* 0xd8e1 */ { false, 0xd8e1, 0xd8e1 }, /* 0xd8e2 */ { false, 0xd8e2, 0xd8e2 }, /* 0xd8e3 */ { false, 0xd8e3, 0xd8e3 }, /* 0xd8e4 */ { false, 0xd8e4, 0xd8e4 }, /* 0xd8e5 */ { false, 0xd8e5, 0xd8e5 }, /* 0xd8e6 */ { false, 0xd8e6, 0xd8e6 }, /* 0xd8e7 */ { false, 0xd8e7, 0xd8e7 }, /* 0xd8e8 */ { false, 0xd8e8, 0xd8e8 }, /* 0xd8e9 */ { false, 0xd8e9, 0xd8e9 }, /* 0xd8ea */ { false, 0xd8ea, 0xd8ea }, /* 0xd8eb */ { false, 0xd8eb, 0xd8eb }, /* 0xd8ec */ { false, 0xd8ec, 0xd8ec }, /* 0xd8ed */ { false, 0xd8ed, 0xd8ed }, /* 0xd8ee */ { false, 0xd8ee, 0xd8ee }, /* 0xd8ef */ { false, 0xd8ef, 0xd8ef }, /* 0xd8f0 */ { false, 0xd8f0, 0xd8f0 }, /* 0xd8f1 */ { false, 0xd8f1, 0xd8f1 }, /* 0xd8f2 */ { false, 0xd8f2, 0xd8f2 }, /* 0xd8f3 */ { false, 0xd8f3, 0xd8f3 }, /* 0xd8f4 */ { false, 0xd8f4, 0xd8f4 }, /* 0xd8f5 */ { false, 0xd8f5, 0xd8f5 }, /* 0xd8f6 */ { false, 0xd8f6, 0xd8f6 }, /* 0xd8f7 */ { false, 0xd8f7, 0xd8f7 }, /* 0xd8f8 */ { false, 0xd8f8, 0xd8f8 }, /* 0xd8f9 */ { false, 0xd8f9, 0xd8f9 }, /* 0xd8fa */ { false, 0xd8fa, 0xd8fa }, /* 0xd8fb */ { false, 0xd8fb, 0xd8fb }, /* 0xd8fc */ { false, 0xd8fc, 0xd8fc }, /* 0xd8fd */ { false, 0xd8fd, 0xd8fd }, /* 0xd8fe */ { false, 0xd8fe, 0xd8fe }, /* 0xd8ff */ { false, 0xd8ff, 0xd8ff }, /* 0xd900 */ { false, 0xd900, 0xd900 }, /* 0xd901 */ { false, 0xd901, 0xd901 }, /* 0xd902 */ { false, 0xd902, 0xd902 }, /* 0xd903 */ { false, 0xd903, 0xd903 }, /* 0xd904 */ { false, 0xd904, 0xd904 }, /* 0xd905 */ { false, 0xd905, 0xd905 }, /* 0xd906 */ { false, 0xd906, 0xd906 }, /* 0xd907 */ { false, 0xd907, 0xd907 }, /* 0xd908 */ { false, 0xd908, 0xd908 }, /* 0xd909 */ { false, 0xd909, 0xd909 }, /* 0xd90a */ { false, 0xd90a, 0xd90a }, /* 0xd90b */ { false, 0xd90b, 0xd90b }, /* 0xd90c */ { false, 0xd90c, 0xd90c }, /* 0xd90d */ { false, 0xd90d, 0xd90d }, /* 0xd90e */ { false, 0xd90e, 0xd90e }, /* 0xd90f */ { false, 0xd90f, 0xd90f }, /* 0xd910 */ { false, 0xd910, 0xd910 }, /* 0xd911 */ { false, 0xd911, 0xd911 }, /* 0xd912 */ { false, 0xd912, 0xd912 }, /* 0xd913 */ { false, 0xd913, 0xd913 }, /* 0xd914 */ { false, 0xd914, 0xd914 }, /* 0xd915 */ { false, 0xd915, 0xd915 }, /* 0xd916 */ { false, 0xd916, 0xd916 }, /* 0xd917 */ { false, 0xd917, 0xd917 }, /* 0xd918 */ { false, 0xd918, 0xd918 }, /* 0xd919 */ { false, 0xd919, 0xd919 }, /* 0xd91a */ { false, 0xd91a, 0xd91a }, /* 0xd91b */ { false, 0xd91b, 0xd91b }, /* 0xd91c */ { false, 0xd91c, 0xd91c }, /* 0xd91d */ { false, 0xd91d, 0xd91d }, /* 0xd91e */ { false, 0xd91e, 0xd91e }, /* 0xd91f */ { false, 0xd91f, 0xd91f }, /* 0xd920 */ { false, 0xd920, 0xd920 }, /* 0xd921 */ { false, 0xd921, 0xd921 }, /* 0xd922 */ { false, 0xd922, 0xd922 }, /* 0xd923 */ { false, 0xd923, 0xd923 }, /* 0xd924 */ { false, 0xd924, 0xd924 }, /* 0xd925 */ { false, 0xd925, 0xd925 }, /* 0xd926 */ { false, 0xd926, 0xd926 }, /* 0xd927 */ { false, 0xd927, 0xd927 }, /* 0xd928 */ { false, 0xd928, 0xd928 }, /* 0xd929 */ { false, 0xd929, 0xd929 }, /* 0xd92a */ { false, 0xd92a, 0xd92a }, /* 0xd92b */ { false, 0xd92b, 0xd92b }, /* 0xd92c */ { false, 0xd92c, 0xd92c }, /* 0xd92d */ { false, 0xd92d, 0xd92d }, /* 0xd92e */ { false, 0xd92e, 0xd92e }, /* 0xd92f */ { false, 0xd92f, 0xd92f }, /* 0xd930 */ { false, 0xd930, 0xd930 }, /* 0xd931 */ { false, 0xd931, 0xd931 }, /* 0xd932 */ { false, 0xd932, 0xd932 }, /* 0xd933 */ { false, 0xd933, 0xd933 }, /* 0xd934 */ { false, 0xd934, 0xd934 }, /* 0xd935 */ { false, 0xd935, 0xd935 }, /* 0xd936 */ { false, 0xd936, 0xd936 }, /* 0xd937 */ { false, 0xd937, 0xd937 }, /* 0xd938 */ { false, 0xd938, 0xd938 }, /* 0xd939 */ { false, 0xd939, 0xd939 }, /* 0xd93a */ { false, 0xd93a, 0xd93a }, /* 0xd93b */ { false, 0xd93b, 0xd93b }, /* 0xd93c */ { false, 0xd93c, 0xd93c }, /* 0xd93d */ { false, 0xd93d, 0xd93d }, /* 0xd93e */ { false, 0xd93e, 0xd93e }, /* 0xd93f */ { false, 0xd93f, 0xd93f }, /* 0xd940 */ { false, 0xd940, 0xd940 }, /* 0xd941 */ { false, 0xd941, 0xd941 }, /* 0xd942 */ { false, 0xd942, 0xd942 }, /* 0xd943 */ { false, 0xd943, 0xd943 }, /* 0xd944 */ { false, 0xd944, 0xd944 }, /* 0xd945 */ { false, 0xd945, 0xd945 }, /* 0xd946 */ { false, 0xd946, 0xd946 }, /* 0xd947 */ { false, 0xd947, 0xd947 }, /* 0xd948 */ { false, 0xd948, 0xd948 }, /* 0xd949 */ { false, 0xd949, 0xd949 }, /* 0xd94a */ { false, 0xd94a, 0xd94a }, /* 0xd94b */ { false, 0xd94b, 0xd94b }, /* 0xd94c */ { false, 0xd94c, 0xd94c }, /* 0xd94d */ { false, 0xd94d, 0xd94d }, /* 0xd94e */ { false, 0xd94e, 0xd94e }, /* 0xd94f */ { false, 0xd94f, 0xd94f }, /* 0xd950 */ { false, 0xd950, 0xd950 }, /* 0xd951 */ { false, 0xd951, 0xd951 }, /* 0xd952 */ { false, 0xd952, 0xd952 }, /* 0xd953 */ { false, 0xd953, 0xd953 }, /* 0xd954 */ { false, 0xd954, 0xd954 }, /* 0xd955 */ { false, 0xd955, 0xd955 }, /* 0xd956 */ { false, 0xd956, 0xd956 }, /* 0xd957 */ { false, 0xd957, 0xd957 }, /* 0xd958 */ { false, 0xd958, 0xd958 }, /* 0xd959 */ { false, 0xd959, 0xd959 }, /* 0xd95a */ { false, 0xd95a, 0xd95a }, /* 0xd95b */ { false, 0xd95b, 0xd95b }, /* 0xd95c */ { false, 0xd95c, 0xd95c }, /* 0xd95d */ { false, 0xd95d, 0xd95d }, /* 0xd95e */ { false, 0xd95e, 0xd95e }, /* 0xd95f */ { false, 0xd95f, 0xd95f }, /* 0xd960 */ { false, 0xd960, 0xd960 }, /* 0xd961 */ { false, 0xd961, 0xd961 }, /* 0xd962 */ { false, 0xd962, 0xd962 }, /* 0xd963 */ { false, 0xd963, 0xd963 }, /* 0xd964 */ { false, 0xd964, 0xd964 }, /* 0xd965 */ { false, 0xd965, 0xd965 }, /* 0xd966 */ { false, 0xd966, 0xd966 }, /* 0xd967 */ { false, 0xd967, 0xd967 }, /* 0xd968 */ { false, 0xd968, 0xd968 }, /* 0xd969 */ { false, 0xd969, 0xd969 }, /* 0xd96a */ { false, 0xd96a, 0xd96a }, /* 0xd96b */ { false, 0xd96b, 0xd96b }, /* 0xd96c */ { false, 0xd96c, 0xd96c }, /* 0xd96d */ { false, 0xd96d, 0xd96d }, /* 0xd96e */ { false, 0xd96e, 0xd96e }, /* 0xd96f */ { false, 0xd96f, 0xd96f }, /* 0xd970 */ { false, 0xd970, 0xd970 }, /* 0xd971 */ { false, 0xd971, 0xd971 }, /* 0xd972 */ { false, 0xd972, 0xd972 }, /* 0xd973 */ { false, 0xd973, 0xd973 }, /* 0xd974 */ { false, 0xd974, 0xd974 }, /* 0xd975 */ { false, 0xd975, 0xd975 }, /* 0xd976 */ { false, 0xd976, 0xd976 }, /* 0xd977 */ { false, 0xd977, 0xd977 }, /* 0xd978 */ { false, 0xd978, 0xd978 }, /* 0xd979 */ { false, 0xd979, 0xd979 }, /* 0xd97a */ { false, 0xd97a, 0xd97a }, /* 0xd97b */ { false, 0xd97b, 0xd97b }, /* 0xd97c */ { false, 0xd97c, 0xd97c }, /* 0xd97d */ { false, 0xd97d, 0xd97d }, /* 0xd97e */ { false, 0xd97e, 0xd97e }, /* 0xd97f */ { false, 0xd97f, 0xd97f }, /* 0xd980 */ { false, 0xd980, 0xd980 }, /* 0xd981 */ { false, 0xd981, 0xd981 }, /* 0xd982 */ { false, 0xd982, 0xd982 }, /* 0xd983 */ { false, 0xd983, 0xd983 }, /* 0xd984 */ { false, 0xd984, 0xd984 }, /* 0xd985 */ { false, 0xd985, 0xd985 }, /* 0xd986 */ { false, 0xd986, 0xd986 }, /* 0xd987 */ { false, 0xd987, 0xd987 }, /* 0xd988 */ { false, 0xd988, 0xd988 }, /* 0xd989 */ { false, 0xd989, 0xd989 }, /* 0xd98a */ { false, 0xd98a, 0xd98a }, /* 0xd98b */ { false, 0xd98b, 0xd98b }, /* 0xd98c */ { false, 0xd98c, 0xd98c }, /* 0xd98d */ { false, 0xd98d, 0xd98d }, /* 0xd98e */ { false, 0xd98e, 0xd98e }, /* 0xd98f */ { false, 0xd98f, 0xd98f }, /* 0xd990 */ { false, 0xd990, 0xd990 }, /* 0xd991 */ { false, 0xd991, 0xd991 }, /* 0xd992 */ { false, 0xd992, 0xd992 }, /* 0xd993 */ { false, 0xd993, 0xd993 }, /* 0xd994 */ { false, 0xd994, 0xd994 }, /* 0xd995 */ { false, 0xd995, 0xd995 }, /* 0xd996 */ { false, 0xd996, 0xd996 }, /* 0xd997 */ { false, 0xd997, 0xd997 }, /* 0xd998 */ { false, 0xd998, 0xd998 }, /* 0xd999 */ { false, 0xd999, 0xd999 }, /* 0xd99a */ { false, 0xd99a, 0xd99a }, /* 0xd99b */ { false, 0xd99b, 0xd99b }, /* 0xd99c */ { false, 0xd99c, 0xd99c }, /* 0xd99d */ { false, 0xd99d, 0xd99d }, /* 0xd99e */ { false, 0xd99e, 0xd99e }, /* 0xd99f */ { false, 0xd99f, 0xd99f }, /* 0xd9a0 */ { false, 0xd9a0, 0xd9a0 }, /* 0xd9a1 */ { false, 0xd9a1, 0xd9a1 }, /* 0xd9a2 */ { false, 0xd9a2, 0xd9a2 }, /* 0xd9a3 */ { false, 0xd9a3, 0xd9a3 }, /* 0xd9a4 */ { false, 0xd9a4, 0xd9a4 }, /* 0xd9a5 */ { false, 0xd9a5, 0xd9a5 }, /* 0xd9a6 */ { false, 0xd9a6, 0xd9a6 }, /* 0xd9a7 */ { false, 0xd9a7, 0xd9a7 }, /* 0xd9a8 */ { false, 0xd9a8, 0xd9a8 }, /* 0xd9a9 */ { false, 0xd9a9, 0xd9a9 }, /* 0xd9aa */ { false, 0xd9aa, 0xd9aa }, /* 0xd9ab */ { false, 0xd9ab, 0xd9ab }, /* 0xd9ac */ { false, 0xd9ac, 0xd9ac }, /* 0xd9ad */ { false, 0xd9ad, 0xd9ad }, /* 0xd9ae */ { false, 0xd9ae, 0xd9ae }, /* 0xd9af */ { false, 0xd9af, 0xd9af }, /* 0xd9b0 */ { false, 0xd9b0, 0xd9b0 }, /* 0xd9b1 */ { false, 0xd9b1, 0xd9b1 }, /* 0xd9b2 */ { false, 0xd9b2, 0xd9b2 }, /* 0xd9b3 */ { false, 0xd9b3, 0xd9b3 }, /* 0xd9b4 */ { false, 0xd9b4, 0xd9b4 }, /* 0xd9b5 */ { false, 0xd9b5, 0xd9b5 }, /* 0xd9b6 */ { false, 0xd9b6, 0xd9b6 }, /* 0xd9b7 */ { false, 0xd9b7, 0xd9b7 }, /* 0xd9b8 */ { false, 0xd9b8, 0xd9b8 }, /* 0xd9b9 */ { false, 0xd9b9, 0xd9b9 }, /* 0xd9ba */ { false, 0xd9ba, 0xd9ba }, /* 0xd9bb */ { false, 0xd9bb, 0xd9bb }, /* 0xd9bc */ { false, 0xd9bc, 0xd9bc }, /* 0xd9bd */ { false, 0xd9bd, 0xd9bd }, /* 0xd9be */ { false, 0xd9be, 0xd9be }, /* 0xd9bf */ { false, 0xd9bf, 0xd9bf }, /* 0xd9c0 */ { false, 0xd9c0, 0xd9c0 }, /* 0xd9c1 */ { false, 0xd9c1, 0xd9c1 }, /* 0xd9c2 */ { false, 0xd9c2, 0xd9c2 }, /* 0xd9c3 */ { false, 0xd9c3, 0xd9c3 }, /* 0xd9c4 */ { false, 0xd9c4, 0xd9c4 }, /* 0xd9c5 */ { false, 0xd9c5, 0xd9c5 }, /* 0xd9c6 */ { false, 0xd9c6, 0xd9c6 }, /* 0xd9c7 */ { false, 0xd9c7, 0xd9c7 }, /* 0xd9c8 */ { false, 0xd9c8, 0xd9c8 }, /* 0xd9c9 */ { false, 0xd9c9, 0xd9c9 }, /* 0xd9ca */ { false, 0xd9ca, 0xd9ca }, /* 0xd9cb */ { false, 0xd9cb, 0xd9cb }, /* 0xd9cc */ { false, 0xd9cc, 0xd9cc }, /* 0xd9cd */ { false, 0xd9cd, 0xd9cd }, /* 0xd9ce */ { false, 0xd9ce, 0xd9ce }, /* 0xd9cf */ { false, 0xd9cf, 0xd9cf }, /* 0xd9d0 */ { false, 0xd9d0, 0xd9d0 }, /* 0xd9d1 */ { false, 0xd9d1, 0xd9d1 }, /* 0xd9d2 */ { false, 0xd9d2, 0xd9d2 }, /* 0xd9d3 */ { false, 0xd9d3, 0xd9d3 }, /* 0xd9d4 */ { false, 0xd9d4, 0xd9d4 }, /* 0xd9d5 */ { false, 0xd9d5, 0xd9d5 }, /* 0xd9d6 */ { false, 0xd9d6, 0xd9d6 }, /* 0xd9d7 */ { false, 0xd9d7, 0xd9d7 }, /* 0xd9d8 */ { false, 0xd9d8, 0xd9d8 }, /* 0xd9d9 */ { false, 0xd9d9, 0xd9d9 }, /* 0xd9da */ { false, 0xd9da, 0xd9da }, /* 0xd9db */ { false, 0xd9db, 0xd9db }, /* 0xd9dc */ { false, 0xd9dc, 0xd9dc }, /* 0xd9dd */ { false, 0xd9dd, 0xd9dd }, /* 0xd9de */ { false, 0xd9de, 0xd9de }, /* 0xd9df */ { false, 0xd9df, 0xd9df }, /* 0xd9e0 */ { false, 0xd9e0, 0xd9e0 }, /* 0xd9e1 */ { false, 0xd9e1, 0xd9e1 }, /* 0xd9e2 */ { false, 0xd9e2, 0xd9e2 }, /* 0xd9e3 */ { false, 0xd9e3, 0xd9e3 }, /* 0xd9e4 */ { false, 0xd9e4, 0xd9e4 }, /* 0xd9e5 */ { false, 0xd9e5, 0xd9e5 }, /* 0xd9e6 */ { false, 0xd9e6, 0xd9e6 }, /* 0xd9e7 */ { false, 0xd9e7, 0xd9e7 }, /* 0xd9e8 */ { false, 0xd9e8, 0xd9e8 }, /* 0xd9e9 */ { false, 0xd9e9, 0xd9e9 }, /* 0xd9ea */ { false, 0xd9ea, 0xd9ea }, /* 0xd9eb */ { false, 0xd9eb, 0xd9eb }, /* 0xd9ec */ { false, 0xd9ec, 0xd9ec }, /* 0xd9ed */ { false, 0xd9ed, 0xd9ed }, /* 0xd9ee */ { false, 0xd9ee, 0xd9ee }, /* 0xd9ef */ { false, 0xd9ef, 0xd9ef }, /* 0xd9f0 */ { false, 0xd9f0, 0xd9f0 }, /* 0xd9f1 */ { false, 0xd9f1, 0xd9f1 }, /* 0xd9f2 */ { false, 0xd9f2, 0xd9f2 }, /* 0xd9f3 */ { false, 0xd9f3, 0xd9f3 }, /* 0xd9f4 */ { false, 0xd9f4, 0xd9f4 }, /* 0xd9f5 */ { false, 0xd9f5, 0xd9f5 }, /* 0xd9f6 */ { false, 0xd9f6, 0xd9f6 }, /* 0xd9f7 */ { false, 0xd9f7, 0xd9f7 }, /* 0xd9f8 */ { false, 0xd9f8, 0xd9f8 }, /* 0xd9f9 */ { false, 0xd9f9, 0xd9f9 }, /* 0xd9fa */ { false, 0xd9fa, 0xd9fa }, /* 0xd9fb */ { false, 0xd9fb, 0xd9fb }, /* 0xd9fc */ { false, 0xd9fc, 0xd9fc }, /* 0xd9fd */ { false, 0xd9fd, 0xd9fd }, /* 0xd9fe */ { false, 0xd9fe, 0xd9fe }, /* 0xd9ff */ { false, 0xd9ff, 0xd9ff }, /* 0xda00 */ { false, 0xda00, 0xda00 }, /* 0xda01 */ { false, 0xda01, 0xda01 }, /* 0xda02 */ { false, 0xda02, 0xda02 }, /* 0xda03 */ { false, 0xda03, 0xda03 }, /* 0xda04 */ { false, 0xda04, 0xda04 }, /* 0xda05 */ { false, 0xda05, 0xda05 }, /* 0xda06 */ { false, 0xda06, 0xda06 }, /* 0xda07 */ { false, 0xda07, 0xda07 }, /* 0xda08 */ { false, 0xda08, 0xda08 }, /* 0xda09 */ { false, 0xda09, 0xda09 }, /* 0xda0a */ { false, 0xda0a, 0xda0a }, /* 0xda0b */ { false, 0xda0b, 0xda0b }, /* 0xda0c */ { false, 0xda0c, 0xda0c }, /* 0xda0d */ { false, 0xda0d, 0xda0d }, /* 0xda0e */ { false, 0xda0e, 0xda0e }, /* 0xda0f */ { false, 0xda0f, 0xda0f }, /* 0xda10 */ { false, 0xda10, 0xda10 }, /* 0xda11 */ { false, 0xda11, 0xda11 }, /* 0xda12 */ { false, 0xda12, 0xda12 }, /* 0xda13 */ { false, 0xda13, 0xda13 }, /* 0xda14 */ { false, 0xda14, 0xda14 }, /* 0xda15 */ { false, 0xda15, 0xda15 }, /* 0xda16 */ { false, 0xda16, 0xda16 }, /* 0xda17 */ { false, 0xda17, 0xda17 }, /* 0xda18 */ { false, 0xda18, 0xda18 }, /* 0xda19 */ { false, 0xda19, 0xda19 }, /* 0xda1a */ { false, 0xda1a, 0xda1a }, /* 0xda1b */ { false, 0xda1b, 0xda1b }, /* 0xda1c */ { false, 0xda1c, 0xda1c }, /* 0xda1d */ { false, 0xda1d, 0xda1d }, /* 0xda1e */ { false, 0xda1e, 0xda1e }, /* 0xda1f */ { false, 0xda1f, 0xda1f }, /* 0xda20 */ { false, 0xda20, 0xda20 }, /* 0xda21 */ { false, 0xda21, 0xda21 }, /* 0xda22 */ { false, 0xda22, 0xda22 }, /* 0xda23 */ { false, 0xda23, 0xda23 }, /* 0xda24 */ { false, 0xda24, 0xda24 }, /* 0xda25 */ { false, 0xda25, 0xda25 }, /* 0xda26 */ { false, 0xda26, 0xda26 }, /* 0xda27 */ { false, 0xda27, 0xda27 }, /* 0xda28 */ { false, 0xda28, 0xda28 }, /* 0xda29 */ { false, 0xda29, 0xda29 }, /* 0xda2a */ { false, 0xda2a, 0xda2a }, /* 0xda2b */ { false, 0xda2b, 0xda2b }, /* 0xda2c */ { false, 0xda2c, 0xda2c }, /* 0xda2d */ { false, 0xda2d, 0xda2d }, /* 0xda2e */ { false, 0xda2e, 0xda2e }, /* 0xda2f */ { false, 0xda2f, 0xda2f }, /* 0xda30 */ { false, 0xda30, 0xda30 }, /* 0xda31 */ { false, 0xda31, 0xda31 }, /* 0xda32 */ { false, 0xda32, 0xda32 }, /* 0xda33 */ { false, 0xda33, 0xda33 }, /* 0xda34 */ { false, 0xda34, 0xda34 }, /* 0xda35 */ { false, 0xda35, 0xda35 }, /* 0xda36 */ { false, 0xda36, 0xda36 }, /* 0xda37 */ { false, 0xda37, 0xda37 }, /* 0xda38 */ { false, 0xda38, 0xda38 }, /* 0xda39 */ { false, 0xda39, 0xda39 }, /* 0xda3a */ { false, 0xda3a, 0xda3a }, /* 0xda3b */ { false, 0xda3b, 0xda3b }, /* 0xda3c */ { false, 0xda3c, 0xda3c }, /* 0xda3d */ { false, 0xda3d, 0xda3d }, /* 0xda3e */ { false, 0xda3e, 0xda3e }, /* 0xda3f */ { false, 0xda3f, 0xda3f }, /* 0xda40 */ { false, 0xda40, 0xda40 }, /* 0xda41 */ { false, 0xda41, 0xda41 }, /* 0xda42 */ { false, 0xda42, 0xda42 }, /* 0xda43 */ { false, 0xda43, 0xda43 }, /* 0xda44 */ { false, 0xda44, 0xda44 }, /* 0xda45 */ { false, 0xda45, 0xda45 }, /* 0xda46 */ { false, 0xda46, 0xda46 }, /* 0xda47 */ { false, 0xda47, 0xda47 }, /* 0xda48 */ { false, 0xda48, 0xda48 }, /* 0xda49 */ { false, 0xda49, 0xda49 }, /* 0xda4a */ { false, 0xda4a, 0xda4a }, /* 0xda4b */ { false, 0xda4b, 0xda4b }, /* 0xda4c */ { false, 0xda4c, 0xda4c }, /* 0xda4d */ { false, 0xda4d, 0xda4d }, /* 0xda4e */ { false, 0xda4e, 0xda4e }, /* 0xda4f */ { false, 0xda4f, 0xda4f }, /* 0xda50 */ { false, 0xda50, 0xda50 }, /* 0xda51 */ { false, 0xda51, 0xda51 }, /* 0xda52 */ { false, 0xda52, 0xda52 }, /* 0xda53 */ { false, 0xda53, 0xda53 }, /* 0xda54 */ { false, 0xda54, 0xda54 }, /* 0xda55 */ { false, 0xda55, 0xda55 }, /* 0xda56 */ { false, 0xda56, 0xda56 }, /* 0xda57 */ { false, 0xda57, 0xda57 }, /* 0xda58 */ { false, 0xda58, 0xda58 }, /* 0xda59 */ { false, 0xda59, 0xda59 }, /* 0xda5a */ { false, 0xda5a, 0xda5a }, /* 0xda5b */ { false, 0xda5b, 0xda5b }, /* 0xda5c */ { false, 0xda5c, 0xda5c }, /* 0xda5d */ { false, 0xda5d, 0xda5d }, /* 0xda5e */ { false, 0xda5e, 0xda5e }, /* 0xda5f */ { false, 0xda5f, 0xda5f }, /* 0xda60 */ { false, 0xda60, 0xda60 }, /* 0xda61 */ { false, 0xda61, 0xda61 }, /* 0xda62 */ { false, 0xda62, 0xda62 }, /* 0xda63 */ { false, 0xda63, 0xda63 }, /* 0xda64 */ { false, 0xda64, 0xda64 }, /* 0xda65 */ { false, 0xda65, 0xda65 }, /* 0xda66 */ { false, 0xda66, 0xda66 }, /* 0xda67 */ { false, 0xda67, 0xda67 }, /* 0xda68 */ { false, 0xda68, 0xda68 }, /* 0xda69 */ { false, 0xda69, 0xda69 }, /* 0xda6a */ { false, 0xda6a, 0xda6a }, /* 0xda6b */ { false, 0xda6b, 0xda6b }, /* 0xda6c */ { false, 0xda6c, 0xda6c }, /* 0xda6d */ { false, 0xda6d, 0xda6d }, /* 0xda6e */ { false, 0xda6e, 0xda6e }, /* 0xda6f */ { false, 0xda6f, 0xda6f }, /* 0xda70 */ { false, 0xda70, 0xda70 }, /* 0xda71 */ { false, 0xda71, 0xda71 }, /* 0xda72 */ { false, 0xda72, 0xda72 }, /* 0xda73 */ { false, 0xda73, 0xda73 }, /* 0xda74 */ { false, 0xda74, 0xda74 }, /* 0xda75 */ { false, 0xda75, 0xda75 }, /* 0xda76 */ { false, 0xda76, 0xda76 }, /* 0xda77 */ { false, 0xda77, 0xda77 }, /* 0xda78 */ { false, 0xda78, 0xda78 }, /* 0xda79 */ { false, 0xda79, 0xda79 }, /* 0xda7a */ { false, 0xda7a, 0xda7a }, /* 0xda7b */ { false, 0xda7b, 0xda7b }, /* 0xda7c */ { false, 0xda7c, 0xda7c }, /* 0xda7d */ { false, 0xda7d, 0xda7d }, /* 0xda7e */ { false, 0xda7e, 0xda7e }, /* 0xda7f */ { false, 0xda7f, 0xda7f }, /* 0xda80 */ { false, 0xda80, 0xda80 }, /* 0xda81 */ { false, 0xda81, 0xda81 }, /* 0xda82 */ { false, 0xda82, 0xda82 }, /* 0xda83 */ { false, 0xda83, 0xda83 }, /* 0xda84 */ { false, 0xda84, 0xda84 }, /* 0xda85 */ { false, 0xda85, 0xda85 }, /* 0xda86 */ { false, 0xda86, 0xda86 }, /* 0xda87 */ { false, 0xda87, 0xda87 }, /* 0xda88 */ { false, 0xda88, 0xda88 }, /* 0xda89 */ { false, 0xda89, 0xda89 }, /* 0xda8a */ { false, 0xda8a, 0xda8a }, /* 0xda8b */ { false, 0xda8b, 0xda8b }, /* 0xda8c */ { false, 0xda8c, 0xda8c }, /* 0xda8d */ { false, 0xda8d, 0xda8d }, /* 0xda8e */ { false, 0xda8e, 0xda8e }, /* 0xda8f */ { false, 0xda8f, 0xda8f }, /* 0xda90 */ { false, 0xda90, 0xda90 }, /* 0xda91 */ { false, 0xda91, 0xda91 }, /* 0xda92 */ { false, 0xda92, 0xda92 }, /* 0xda93 */ { false, 0xda93, 0xda93 }, /* 0xda94 */ { false, 0xda94, 0xda94 }, /* 0xda95 */ { false, 0xda95, 0xda95 }, /* 0xda96 */ { false, 0xda96, 0xda96 }, /* 0xda97 */ { false, 0xda97, 0xda97 }, /* 0xda98 */ { false, 0xda98, 0xda98 }, /* 0xda99 */ { false, 0xda99, 0xda99 }, /* 0xda9a */ { false, 0xda9a, 0xda9a }, /* 0xda9b */ { false, 0xda9b, 0xda9b }, /* 0xda9c */ { false, 0xda9c, 0xda9c }, /* 0xda9d */ { false, 0xda9d, 0xda9d }, /* 0xda9e */ { false, 0xda9e, 0xda9e }, /* 0xda9f */ { false, 0xda9f, 0xda9f }, /* 0xdaa0 */ { false, 0xdaa0, 0xdaa0 }, /* 0xdaa1 */ { false, 0xdaa1, 0xdaa1 }, /* 0xdaa2 */ { false, 0xdaa2, 0xdaa2 }, /* 0xdaa3 */ { false, 0xdaa3, 0xdaa3 }, /* 0xdaa4 */ { false, 0xdaa4, 0xdaa4 }, /* 0xdaa5 */ { false, 0xdaa5, 0xdaa5 }, /* 0xdaa6 */ { false, 0xdaa6, 0xdaa6 }, /* 0xdaa7 */ { false, 0xdaa7, 0xdaa7 }, /* 0xdaa8 */ { false, 0xdaa8, 0xdaa8 }, /* 0xdaa9 */ { false, 0xdaa9, 0xdaa9 }, /* 0xdaaa */ { false, 0xdaaa, 0xdaaa }, /* 0xdaab */ { false, 0xdaab, 0xdaab }, /* 0xdaac */ { false, 0xdaac, 0xdaac }, /* 0xdaad */ { false, 0xdaad, 0xdaad }, /* 0xdaae */ { false, 0xdaae, 0xdaae }, /* 0xdaaf */ { false, 0xdaaf, 0xdaaf }, /* 0xdab0 */ { false, 0xdab0, 0xdab0 }, /* 0xdab1 */ { false, 0xdab1, 0xdab1 }, /* 0xdab2 */ { false, 0xdab2, 0xdab2 }, /* 0xdab3 */ { false, 0xdab3, 0xdab3 }, /* 0xdab4 */ { false, 0xdab4, 0xdab4 }, /* 0xdab5 */ { false, 0xdab5, 0xdab5 }, /* 0xdab6 */ { false, 0xdab6, 0xdab6 }, /* 0xdab7 */ { false, 0xdab7, 0xdab7 }, /* 0xdab8 */ { false, 0xdab8, 0xdab8 }, /* 0xdab9 */ { false, 0xdab9, 0xdab9 }, /* 0xdaba */ { false, 0xdaba, 0xdaba }, /* 0xdabb */ { false, 0xdabb, 0xdabb }, /* 0xdabc */ { false, 0xdabc, 0xdabc }, /* 0xdabd */ { false, 0xdabd, 0xdabd }, /* 0xdabe */ { false, 0xdabe, 0xdabe }, /* 0xdabf */ { false, 0xdabf, 0xdabf }, /* 0xdac0 */ { false, 0xdac0, 0xdac0 }, /* 0xdac1 */ { false, 0xdac1, 0xdac1 }, /* 0xdac2 */ { false, 0xdac2, 0xdac2 }, /* 0xdac3 */ { false, 0xdac3, 0xdac3 }, /* 0xdac4 */ { false, 0xdac4, 0xdac4 }, /* 0xdac5 */ { false, 0xdac5, 0xdac5 }, /* 0xdac6 */ { false, 0xdac6, 0xdac6 }, /* 0xdac7 */ { false, 0xdac7, 0xdac7 }, /* 0xdac8 */ { false, 0xdac8, 0xdac8 }, /* 0xdac9 */ { false, 0xdac9, 0xdac9 }, /* 0xdaca */ { false, 0xdaca, 0xdaca }, /* 0xdacb */ { false, 0xdacb, 0xdacb }, /* 0xdacc */ { false, 0xdacc, 0xdacc }, /* 0xdacd */ { false, 0xdacd, 0xdacd }, /* 0xdace */ { false, 0xdace, 0xdace }, /* 0xdacf */ { false, 0xdacf, 0xdacf }, /* 0xdad0 */ { false, 0xdad0, 0xdad0 }, /* 0xdad1 */ { false, 0xdad1, 0xdad1 }, /* 0xdad2 */ { false, 0xdad2, 0xdad2 }, /* 0xdad3 */ { false, 0xdad3, 0xdad3 }, /* 0xdad4 */ { false, 0xdad4, 0xdad4 }, /* 0xdad5 */ { false, 0xdad5, 0xdad5 }, /* 0xdad6 */ { false, 0xdad6, 0xdad6 }, /* 0xdad7 */ { false, 0xdad7, 0xdad7 }, /* 0xdad8 */ { false, 0xdad8, 0xdad8 }, /* 0xdad9 */ { false, 0xdad9, 0xdad9 }, /* 0xdada */ { false, 0xdada, 0xdada }, /* 0xdadb */ { false, 0xdadb, 0xdadb }, /* 0xdadc */ { false, 0xdadc, 0xdadc }, /* 0xdadd */ { false, 0xdadd, 0xdadd }, /* 0xdade */ { false, 0xdade, 0xdade }, /* 0xdadf */ { false, 0xdadf, 0xdadf }, /* 0xdae0 */ { false, 0xdae0, 0xdae0 }, /* 0xdae1 */ { false, 0xdae1, 0xdae1 }, /* 0xdae2 */ { false, 0xdae2, 0xdae2 }, /* 0xdae3 */ { false, 0xdae3, 0xdae3 }, /* 0xdae4 */ { false, 0xdae4, 0xdae4 }, /* 0xdae5 */ { false, 0xdae5, 0xdae5 }, /* 0xdae6 */ { false, 0xdae6, 0xdae6 }, /* 0xdae7 */ { false, 0xdae7, 0xdae7 }, /* 0xdae8 */ { false, 0xdae8, 0xdae8 }, /* 0xdae9 */ { false, 0xdae9, 0xdae9 }, /* 0xdaea */ { false, 0xdaea, 0xdaea }, /* 0xdaeb */ { false, 0xdaeb, 0xdaeb }, /* 0xdaec */ { false, 0xdaec, 0xdaec }, /* 0xdaed */ { false, 0xdaed, 0xdaed }, /* 0xdaee */ { false, 0xdaee, 0xdaee }, /* 0xdaef */ { false, 0xdaef, 0xdaef }, /* 0xdaf0 */ { false, 0xdaf0, 0xdaf0 }, /* 0xdaf1 */ { false, 0xdaf1, 0xdaf1 }, /* 0xdaf2 */ { false, 0xdaf2, 0xdaf2 }, /* 0xdaf3 */ { false, 0xdaf3, 0xdaf3 }, /* 0xdaf4 */ { false, 0xdaf4, 0xdaf4 }, /* 0xdaf5 */ { false, 0xdaf5, 0xdaf5 }, /* 0xdaf6 */ { false, 0xdaf6, 0xdaf6 }, /* 0xdaf7 */ { false, 0xdaf7, 0xdaf7 }, /* 0xdaf8 */ { false, 0xdaf8, 0xdaf8 }, /* 0xdaf9 */ { false, 0xdaf9, 0xdaf9 }, /* 0xdafa */ { false, 0xdafa, 0xdafa }, /* 0xdafb */ { false, 0xdafb, 0xdafb }, /* 0xdafc */ { false, 0xdafc, 0xdafc }, /* 0xdafd */ { false, 0xdafd, 0xdafd }, /* 0xdafe */ { false, 0xdafe, 0xdafe }, /* 0xdaff */ { false, 0xdaff, 0xdaff }, /* 0xdb00 */ { false, 0xdb00, 0xdb00 }, /* 0xdb01 */ { false, 0xdb01, 0xdb01 }, /* 0xdb02 */ { false, 0xdb02, 0xdb02 }, /* 0xdb03 */ { false, 0xdb03, 0xdb03 }, /* 0xdb04 */ { false, 0xdb04, 0xdb04 }, /* 0xdb05 */ { false, 0xdb05, 0xdb05 }, /* 0xdb06 */ { false, 0xdb06, 0xdb06 }, /* 0xdb07 */ { false, 0xdb07, 0xdb07 }, /* 0xdb08 */ { false, 0xdb08, 0xdb08 }, /* 0xdb09 */ { false, 0xdb09, 0xdb09 }, /* 0xdb0a */ { false, 0xdb0a, 0xdb0a }, /* 0xdb0b */ { false, 0xdb0b, 0xdb0b }, /* 0xdb0c */ { false, 0xdb0c, 0xdb0c }, /* 0xdb0d */ { false, 0xdb0d, 0xdb0d }, /* 0xdb0e */ { false, 0xdb0e, 0xdb0e }, /* 0xdb0f */ { false, 0xdb0f, 0xdb0f }, /* 0xdb10 */ { false, 0xdb10, 0xdb10 }, /* 0xdb11 */ { false, 0xdb11, 0xdb11 }, /* 0xdb12 */ { false, 0xdb12, 0xdb12 }, /* 0xdb13 */ { false, 0xdb13, 0xdb13 }, /* 0xdb14 */ { false, 0xdb14, 0xdb14 }, /* 0xdb15 */ { false, 0xdb15, 0xdb15 }, /* 0xdb16 */ { false, 0xdb16, 0xdb16 }, /* 0xdb17 */ { false, 0xdb17, 0xdb17 }, /* 0xdb18 */ { false, 0xdb18, 0xdb18 }, /* 0xdb19 */ { false, 0xdb19, 0xdb19 }, /* 0xdb1a */ { false, 0xdb1a, 0xdb1a }, /* 0xdb1b */ { false, 0xdb1b, 0xdb1b }, /* 0xdb1c */ { false, 0xdb1c, 0xdb1c }, /* 0xdb1d */ { false, 0xdb1d, 0xdb1d }, /* 0xdb1e */ { false, 0xdb1e, 0xdb1e }, /* 0xdb1f */ { false, 0xdb1f, 0xdb1f }, /* 0xdb20 */ { false, 0xdb20, 0xdb20 }, /* 0xdb21 */ { false, 0xdb21, 0xdb21 }, /* 0xdb22 */ { false, 0xdb22, 0xdb22 }, /* 0xdb23 */ { false, 0xdb23, 0xdb23 }, /* 0xdb24 */ { false, 0xdb24, 0xdb24 }, /* 0xdb25 */ { false, 0xdb25, 0xdb25 }, /* 0xdb26 */ { false, 0xdb26, 0xdb26 }, /* 0xdb27 */ { false, 0xdb27, 0xdb27 }, /* 0xdb28 */ { false, 0xdb28, 0xdb28 }, /* 0xdb29 */ { false, 0xdb29, 0xdb29 }, /* 0xdb2a */ { false, 0xdb2a, 0xdb2a }, /* 0xdb2b */ { false, 0xdb2b, 0xdb2b }, /* 0xdb2c */ { false, 0xdb2c, 0xdb2c }, /* 0xdb2d */ { false, 0xdb2d, 0xdb2d }, /* 0xdb2e */ { false, 0xdb2e, 0xdb2e }, /* 0xdb2f */ { false, 0xdb2f, 0xdb2f }, /* 0xdb30 */ { false, 0xdb30, 0xdb30 }, /* 0xdb31 */ { false, 0xdb31, 0xdb31 }, /* 0xdb32 */ { false, 0xdb32, 0xdb32 }, /* 0xdb33 */ { false, 0xdb33, 0xdb33 }, /* 0xdb34 */ { false, 0xdb34, 0xdb34 }, /* 0xdb35 */ { false, 0xdb35, 0xdb35 }, /* 0xdb36 */ { false, 0xdb36, 0xdb36 }, /* 0xdb37 */ { false, 0xdb37, 0xdb37 }, /* 0xdb38 */ { false, 0xdb38, 0xdb38 }, /* 0xdb39 */ { false, 0xdb39, 0xdb39 }, /* 0xdb3a */ { false, 0xdb3a, 0xdb3a }, /* 0xdb3b */ { false, 0xdb3b, 0xdb3b }, /* 0xdb3c */ { false, 0xdb3c, 0xdb3c }, /* 0xdb3d */ { false, 0xdb3d, 0xdb3d }, /* 0xdb3e */ { false, 0xdb3e, 0xdb3e }, /* 0xdb3f */ { false, 0xdb3f, 0xdb3f }, /* 0xdb40 */ { false, 0xdb40, 0xdb40 }, /* 0xdb41 */ { false, 0xdb41, 0xdb41 }, /* 0xdb42 */ { false, 0xdb42, 0xdb42 }, /* 0xdb43 */ { false, 0xdb43, 0xdb43 }, /* 0xdb44 */ { false, 0xdb44, 0xdb44 }, /* 0xdb45 */ { false, 0xdb45, 0xdb45 }, /* 0xdb46 */ { false, 0xdb46, 0xdb46 }, /* 0xdb47 */ { false, 0xdb47, 0xdb47 }, /* 0xdb48 */ { false, 0xdb48, 0xdb48 }, /* 0xdb49 */ { false, 0xdb49, 0xdb49 }, /* 0xdb4a */ { false, 0xdb4a, 0xdb4a }, /* 0xdb4b */ { false, 0xdb4b, 0xdb4b }, /* 0xdb4c */ { false, 0xdb4c, 0xdb4c }, /* 0xdb4d */ { false, 0xdb4d, 0xdb4d }, /* 0xdb4e */ { false, 0xdb4e, 0xdb4e }, /* 0xdb4f */ { false, 0xdb4f, 0xdb4f }, /* 0xdb50 */ { false, 0xdb50, 0xdb50 }, /* 0xdb51 */ { false, 0xdb51, 0xdb51 }, /* 0xdb52 */ { false, 0xdb52, 0xdb52 }, /* 0xdb53 */ { false, 0xdb53, 0xdb53 }, /* 0xdb54 */ { false, 0xdb54, 0xdb54 }, /* 0xdb55 */ { false, 0xdb55, 0xdb55 }, /* 0xdb56 */ { false, 0xdb56, 0xdb56 }, /* 0xdb57 */ { false, 0xdb57, 0xdb57 }, /* 0xdb58 */ { false, 0xdb58, 0xdb58 }, /* 0xdb59 */ { false, 0xdb59, 0xdb59 }, /* 0xdb5a */ { false, 0xdb5a, 0xdb5a }, /* 0xdb5b */ { false, 0xdb5b, 0xdb5b }, /* 0xdb5c */ { false, 0xdb5c, 0xdb5c }, /* 0xdb5d */ { false, 0xdb5d, 0xdb5d }, /* 0xdb5e */ { false, 0xdb5e, 0xdb5e }, /* 0xdb5f */ { false, 0xdb5f, 0xdb5f }, /* 0xdb60 */ { false, 0xdb60, 0xdb60 }, /* 0xdb61 */ { false, 0xdb61, 0xdb61 }, /* 0xdb62 */ { false, 0xdb62, 0xdb62 }, /* 0xdb63 */ { false, 0xdb63, 0xdb63 }, /* 0xdb64 */ { false, 0xdb64, 0xdb64 }, /* 0xdb65 */ { false, 0xdb65, 0xdb65 }, /* 0xdb66 */ { false, 0xdb66, 0xdb66 }, /* 0xdb67 */ { false, 0xdb67, 0xdb67 }, /* 0xdb68 */ { false, 0xdb68, 0xdb68 }, /* 0xdb69 */ { false, 0xdb69, 0xdb69 }, /* 0xdb6a */ { false, 0xdb6a, 0xdb6a }, /* 0xdb6b */ { false, 0xdb6b, 0xdb6b }, /* 0xdb6c */ { false, 0xdb6c, 0xdb6c }, /* 0xdb6d */ { false, 0xdb6d, 0xdb6d }, /* 0xdb6e */ { false, 0xdb6e, 0xdb6e }, /* 0xdb6f */ { false, 0xdb6f, 0xdb6f }, /* 0xdb70 */ { false, 0xdb70, 0xdb70 }, /* 0xdb71 */ { false, 0xdb71, 0xdb71 }, /* 0xdb72 */ { false, 0xdb72, 0xdb72 }, /* 0xdb73 */ { false, 0xdb73, 0xdb73 }, /* 0xdb74 */ { false, 0xdb74, 0xdb74 }, /* 0xdb75 */ { false, 0xdb75, 0xdb75 }, /* 0xdb76 */ { false, 0xdb76, 0xdb76 }, /* 0xdb77 */ { false, 0xdb77, 0xdb77 }, /* 0xdb78 */ { false, 0xdb78, 0xdb78 }, /* 0xdb79 */ { false, 0xdb79, 0xdb79 }, /* 0xdb7a */ { false, 0xdb7a, 0xdb7a }, /* 0xdb7b */ { false, 0xdb7b, 0xdb7b }, /* 0xdb7c */ { false, 0xdb7c, 0xdb7c }, /* 0xdb7d */ { false, 0xdb7d, 0xdb7d }, /* 0xdb7e */ { false, 0xdb7e, 0xdb7e }, /* 0xdb7f */ { false, 0xdb7f, 0xdb7f }, /* 0xdb80 */ { false, 0xdb80, 0xdb80 }, /* 0xdb81 */ { false, 0xdb81, 0xdb81 }, /* 0xdb82 */ { false, 0xdb82, 0xdb82 }, /* 0xdb83 */ { false, 0xdb83, 0xdb83 }, /* 0xdb84 */ { false, 0xdb84, 0xdb84 }, /* 0xdb85 */ { false, 0xdb85, 0xdb85 }, /* 0xdb86 */ { false, 0xdb86, 0xdb86 }, /* 0xdb87 */ { false, 0xdb87, 0xdb87 }, /* 0xdb88 */ { false, 0xdb88, 0xdb88 }, /* 0xdb89 */ { false, 0xdb89, 0xdb89 }, /* 0xdb8a */ { false, 0xdb8a, 0xdb8a }, /* 0xdb8b */ { false, 0xdb8b, 0xdb8b }, /* 0xdb8c */ { false, 0xdb8c, 0xdb8c }, /* 0xdb8d */ { false, 0xdb8d, 0xdb8d }, /* 0xdb8e */ { false, 0xdb8e, 0xdb8e }, /* 0xdb8f */ { false, 0xdb8f, 0xdb8f }, /* 0xdb90 */ { false, 0xdb90, 0xdb90 }, /* 0xdb91 */ { false, 0xdb91, 0xdb91 }, /* 0xdb92 */ { false, 0xdb92, 0xdb92 }, /* 0xdb93 */ { false, 0xdb93, 0xdb93 }, /* 0xdb94 */ { false, 0xdb94, 0xdb94 }, /* 0xdb95 */ { false, 0xdb95, 0xdb95 }, /* 0xdb96 */ { false, 0xdb96, 0xdb96 }, /* 0xdb97 */ { false, 0xdb97, 0xdb97 }, /* 0xdb98 */ { false, 0xdb98, 0xdb98 }, /* 0xdb99 */ { false, 0xdb99, 0xdb99 }, /* 0xdb9a */ { false, 0xdb9a, 0xdb9a }, /* 0xdb9b */ { false, 0xdb9b, 0xdb9b }, /* 0xdb9c */ { false, 0xdb9c, 0xdb9c }, /* 0xdb9d */ { false, 0xdb9d, 0xdb9d }, /* 0xdb9e */ { false, 0xdb9e, 0xdb9e }, /* 0xdb9f */ { false, 0xdb9f, 0xdb9f }, /* 0xdba0 */ { false, 0xdba0, 0xdba0 }, /* 0xdba1 */ { false, 0xdba1, 0xdba1 }, /* 0xdba2 */ { false, 0xdba2, 0xdba2 }, /* 0xdba3 */ { false, 0xdba3, 0xdba3 }, /* 0xdba4 */ { false, 0xdba4, 0xdba4 }, /* 0xdba5 */ { false, 0xdba5, 0xdba5 }, /* 0xdba6 */ { false, 0xdba6, 0xdba6 }, /* 0xdba7 */ { false, 0xdba7, 0xdba7 }, /* 0xdba8 */ { false, 0xdba8, 0xdba8 }, /* 0xdba9 */ { false, 0xdba9, 0xdba9 }, /* 0xdbaa */ { false, 0xdbaa, 0xdbaa }, /* 0xdbab */ { false, 0xdbab, 0xdbab }, /* 0xdbac */ { false, 0xdbac, 0xdbac }, /* 0xdbad */ { false, 0xdbad, 0xdbad }, /* 0xdbae */ { false, 0xdbae, 0xdbae }, /* 0xdbaf */ { false, 0xdbaf, 0xdbaf }, /* 0xdbb0 */ { false, 0xdbb0, 0xdbb0 }, /* 0xdbb1 */ { false, 0xdbb1, 0xdbb1 }, /* 0xdbb2 */ { false, 0xdbb2, 0xdbb2 }, /* 0xdbb3 */ { false, 0xdbb3, 0xdbb3 }, /* 0xdbb4 */ { false, 0xdbb4, 0xdbb4 }, /* 0xdbb5 */ { false, 0xdbb5, 0xdbb5 }, /* 0xdbb6 */ { false, 0xdbb6, 0xdbb6 }, /* 0xdbb7 */ { false, 0xdbb7, 0xdbb7 }, /* 0xdbb8 */ { false, 0xdbb8, 0xdbb8 }, /* 0xdbb9 */ { false, 0xdbb9, 0xdbb9 }, /* 0xdbba */ { false, 0xdbba, 0xdbba }, /* 0xdbbb */ { false, 0xdbbb, 0xdbbb }, /* 0xdbbc */ { false, 0xdbbc, 0xdbbc }, /* 0xdbbd */ { false, 0xdbbd, 0xdbbd }, /* 0xdbbe */ { false, 0xdbbe, 0xdbbe }, /* 0xdbbf */ { false, 0xdbbf, 0xdbbf }, /* 0xdbc0 */ { false, 0xdbc0, 0xdbc0 }, /* 0xdbc1 */ { false, 0xdbc1, 0xdbc1 }, /* 0xdbc2 */ { false, 0xdbc2, 0xdbc2 }, /* 0xdbc3 */ { false, 0xdbc3, 0xdbc3 }, /* 0xdbc4 */ { false, 0xdbc4, 0xdbc4 }, /* 0xdbc5 */ { false, 0xdbc5, 0xdbc5 }, /* 0xdbc6 */ { false, 0xdbc6, 0xdbc6 }, /* 0xdbc7 */ { false, 0xdbc7, 0xdbc7 }, /* 0xdbc8 */ { false, 0xdbc8, 0xdbc8 }, /* 0xdbc9 */ { false, 0xdbc9, 0xdbc9 }, /* 0xdbca */ { false, 0xdbca, 0xdbca }, /* 0xdbcb */ { false, 0xdbcb, 0xdbcb }, /* 0xdbcc */ { false, 0xdbcc, 0xdbcc }, /* 0xdbcd */ { false, 0xdbcd, 0xdbcd }, /* 0xdbce */ { false, 0xdbce, 0xdbce }, /* 0xdbcf */ { false, 0xdbcf, 0xdbcf }, /* 0xdbd0 */ { false, 0xdbd0, 0xdbd0 }, /* 0xdbd1 */ { false, 0xdbd1, 0xdbd1 }, /* 0xdbd2 */ { false, 0xdbd2, 0xdbd2 }, /* 0xdbd3 */ { false, 0xdbd3, 0xdbd3 }, /* 0xdbd4 */ { false, 0xdbd4, 0xdbd4 }, /* 0xdbd5 */ { false, 0xdbd5, 0xdbd5 }, /* 0xdbd6 */ { false, 0xdbd6, 0xdbd6 }, /* 0xdbd7 */ { false, 0xdbd7, 0xdbd7 }, /* 0xdbd8 */ { false, 0xdbd8, 0xdbd8 }, /* 0xdbd9 */ { false, 0xdbd9, 0xdbd9 }, /* 0xdbda */ { false, 0xdbda, 0xdbda }, /* 0xdbdb */ { false, 0xdbdb, 0xdbdb }, /* 0xdbdc */ { false, 0xdbdc, 0xdbdc }, /* 0xdbdd */ { false, 0xdbdd, 0xdbdd }, /* 0xdbde */ { false, 0xdbde, 0xdbde }, /* 0xdbdf */ { false, 0xdbdf, 0xdbdf }, /* 0xdbe0 */ { false, 0xdbe0, 0xdbe0 }, /* 0xdbe1 */ { false, 0xdbe1, 0xdbe1 }, /* 0xdbe2 */ { false, 0xdbe2, 0xdbe2 }, /* 0xdbe3 */ { false, 0xdbe3, 0xdbe3 }, /* 0xdbe4 */ { false, 0xdbe4, 0xdbe4 }, /* 0xdbe5 */ { false, 0xdbe5, 0xdbe5 }, /* 0xdbe6 */ { false, 0xdbe6, 0xdbe6 }, /* 0xdbe7 */ { false, 0xdbe7, 0xdbe7 }, /* 0xdbe8 */ { false, 0xdbe8, 0xdbe8 }, /* 0xdbe9 */ { false, 0xdbe9, 0xdbe9 }, /* 0xdbea */ { false, 0xdbea, 0xdbea }, /* 0xdbeb */ { false, 0xdbeb, 0xdbeb }, /* 0xdbec */ { false, 0xdbec, 0xdbec }, /* 0xdbed */ { false, 0xdbed, 0xdbed }, /* 0xdbee */ { false, 0xdbee, 0xdbee }, /* 0xdbef */ { false, 0xdbef, 0xdbef }, /* 0xdbf0 */ { false, 0xdbf0, 0xdbf0 }, /* 0xdbf1 */ { false, 0xdbf1, 0xdbf1 }, /* 0xdbf2 */ { false, 0xdbf2, 0xdbf2 }, /* 0xdbf3 */ { false, 0xdbf3, 0xdbf3 }, /* 0xdbf4 */ { false, 0xdbf4, 0xdbf4 }, /* 0xdbf5 */ { false, 0xdbf5, 0xdbf5 }, /* 0xdbf6 */ { false, 0xdbf6, 0xdbf6 }, /* 0xdbf7 */ { false, 0xdbf7, 0xdbf7 }, /* 0xdbf8 */ { false, 0xdbf8, 0xdbf8 }, /* 0xdbf9 */ { false, 0xdbf9, 0xdbf9 }, /* 0xdbfa */ { false, 0xdbfa, 0xdbfa }, /* 0xdbfb */ { false, 0xdbfb, 0xdbfb }, /* 0xdbfc */ { false, 0xdbfc, 0xdbfc }, /* 0xdbfd */ { false, 0xdbfd, 0xdbfd }, /* 0xdbfe */ { false, 0xdbfe, 0xdbfe }, /* 0xdbff */ { false, 0xdbff, 0xdbff }, /* 0xdc00 */ { false, 0xdc00, 0xdc00 }, /* 0xdc01 */ { false, 0xdc01, 0xdc01 }, /* 0xdc02 */ { false, 0xdc02, 0xdc02 }, /* 0xdc03 */ { false, 0xdc03, 0xdc03 }, /* 0xdc04 */ { false, 0xdc04, 0xdc04 }, /* 0xdc05 */ { false, 0xdc05, 0xdc05 }, /* 0xdc06 */ { false, 0xdc06, 0xdc06 }, /* 0xdc07 */ { false, 0xdc07, 0xdc07 }, /* 0xdc08 */ { false, 0xdc08, 0xdc08 }, /* 0xdc09 */ { false, 0xdc09, 0xdc09 }, /* 0xdc0a */ { false, 0xdc0a, 0xdc0a }, /* 0xdc0b */ { false, 0xdc0b, 0xdc0b }, /* 0xdc0c */ { false, 0xdc0c, 0xdc0c }, /* 0xdc0d */ { false, 0xdc0d, 0xdc0d }, /* 0xdc0e */ { false, 0xdc0e, 0xdc0e }, /* 0xdc0f */ { false, 0xdc0f, 0xdc0f }, /* 0xdc10 */ { false, 0xdc10, 0xdc10 }, /* 0xdc11 */ { false, 0xdc11, 0xdc11 }, /* 0xdc12 */ { false, 0xdc12, 0xdc12 }, /* 0xdc13 */ { false, 0xdc13, 0xdc13 }, /* 0xdc14 */ { false, 0xdc14, 0xdc14 }, /* 0xdc15 */ { false, 0xdc15, 0xdc15 }, /* 0xdc16 */ { false, 0xdc16, 0xdc16 }, /* 0xdc17 */ { false, 0xdc17, 0xdc17 }, /* 0xdc18 */ { false, 0xdc18, 0xdc18 }, /* 0xdc19 */ { false, 0xdc19, 0xdc19 }, /* 0xdc1a */ { false, 0xdc1a, 0xdc1a }, /* 0xdc1b */ { false, 0xdc1b, 0xdc1b }, /* 0xdc1c */ { false, 0xdc1c, 0xdc1c }, /* 0xdc1d */ { false, 0xdc1d, 0xdc1d }, /* 0xdc1e */ { false, 0xdc1e, 0xdc1e }, /* 0xdc1f */ { false, 0xdc1f, 0xdc1f }, /* 0xdc20 */ { false, 0xdc20, 0xdc20 }, /* 0xdc21 */ { false, 0xdc21, 0xdc21 }, /* 0xdc22 */ { false, 0xdc22, 0xdc22 }, /* 0xdc23 */ { false, 0xdc23, 0xdc23 }, /* 0xdc24 */ { false, 0xdc24, 0xdc24 }, /* 0xdc25 */ { false, 0xdc25, 0xdc25 }, /* 0xdc26 */ { false, 0xdc26, 0xdc26 }, /* 0xdc27 */ { false, 0xdc27, 0xdc27 }, /* 0xdc28 */ { false, 0xdc28, 0xdc28 }, /* 0xdc29 */ { false, 0xdc29, 0xdc29 }, /* 0xdc2a */ { false, 0xdc2a, 0xdc2a }, /* 0xdc2b */ { false, 0xdc2b, 0xdc2b }, /* 0xdc2c */ { false, 0xdc2c, 0xdc2c }, /* 0xdc2d */ { false, 0xdc2d, 0xdc2d }, /* 0xdc2e */ { false, 0xdc2e, 0xdc2e }, /* 0xdc2f */ { false, 0xdc2f, 0xdc2f }, /* 0xdc30 */ { false, 0xdc30, 0xdc30 }, /* 0xdc31 */ { false, 0xdc31, 0xdc31 }, /* 0xdc32 */ { false, 0xdc32, 0xdc32 }, /* 0xdc33 */ { false, 0xdc33, 0xdc33 }, /* 0xdc34 */ { false, 0xdc34, 0xdc34 }, /* 0xdc35 */ { false, 0xdc35, 0xdc35 }, /* 0xdc36 */ { false, 0xdc36, 0xdc36 }, /* 0xdc37 */ { false, 0xdc37, 0xdc37 }, /* 0xdc38 */ { false, 0xdc38, 0xdc38 }, /* 0xdc39 */ { false, 0xdc39, 0xdc39 }, /* 0xdc3a */ { false, 0xdc3a, 0xdc3a }, /* 0xdc3b */ { false, 0xdc3b, 0xdc3b }, /* 0xdc3c */ { false, 0xdc3c, 0xdc3c }, /* 0xdc3d */ { false, 0xdc3d, 0xdc3d }, /* 0xdc3e */ { false, 0xdc3e, 0xdc3e }, /* 0xdc3f */ { false, 0xdc3f, 0xdc3f }, /* 0xdc40 */ { false, 0xdc40, 0xdc40 }, /* 0xdc41 */ { false, 0xdc41, 0xdc41 }, /* 0xdc42 */ { false, 0xdc42, 0xdc42 }, /* 0xdc43 */ { false, 0xdc43, 0xdc43 }, /* 0xdc44 */ { false, 0xdc44, 0xdc44 }, /* 0xdc45 */ { false, 0xdc45, 0xdc45 }, /* 0xdc46 */ { false, 0xdc46, 0xdc46 }, /* 0xdc47 */ { false, 0xdc47, 0xdc47 }, /* 0xdc48 */ { false, 0xdc48, 0xdc48 }, /* 0xdc49 */ { false, 0xdc49, 0xdc49 }, /* 0xdc4a */ { false, 0xdc4a, 0xdc4a }, /* 0xdc4b */ { false, 0xdc4b, 0xdc4b }, /* 0xdc4c */ { false, 0xdc4c, 0xdc4c }, /* 0xdc4d */ { false, 0xdc4d, 0xdc4d }, /* 0xdc4e */ { false, 0xdc4e, 0xdc4e }, /* 0xdc4f */ { false, 0xdc4f, 0xdc4f }, /* 0xdc50 */ { false, 0xdc50, 0xdc50 }, /* 0xdc51 */ { false, 0xdc51, 0xdc51 }, /* 0xdc52 */ { false, 0xdc52, 0xdc52 }, /* 0xdc53 */ { false, 0xdc53, 0xdc53 }, /* 0xdc54 */ { false, 0xdc54, 0xdc54 }, /* 0xdc55 */ { false, 0xdc55, 0xdc55 }, /* 0xdc56 */ { false, 0xdc56, 0xdc56 }, /* 0xdc57 */ { false, 0xdc57, 0xdc57 }, /* 0xdc58 */ { false, 0xdc58, 0xdc58 }, /* 0xdc59 */ { false, 0xdc59, 0xdc59 }, /* 0xdc5a */ { false, 0xdc5a, 0xdc5a }, /* 0xdc5b */ { false, 0xdc5b, 0xdc5b }, /* 0xdc5c */ { false, 0xdc5c, 0xdc5c }, /* 0xdc5d */ { false, 0xdc5d, 0xdc5d }, /* 0xdc5e */ { false, 0xdc5e, 0xdc5e }, /* 0xdc5f */ { false, 0xdc5f, 0xdc5f }, /* 0xdc60 */ { false, 0xdc60, 0xdc60 }, /* 0xdc61 */ { false, 0xdc61, 0xdc61 }, /* 0xdc62 */ { false, 0xdc62, 0xdc62 }, /* 0xdc63 */ { false, 0xdc63, 0xdc63 }, /* 0xdc64 */ { false, 0xdc64, 0xdc64 }, /* 0xdc65 */ { false, 0xdc65, 0xdc65 }, /* 0xdc66 */ { false, 0xdc66, 0xdc66 }, /* 0xdc67 */ { false, 0xdc67, 0xdc67 }, /* 0xdc68 */ { false, 0xdc68, 0xdc68 }, /* 0xdc69 */ { false, 0xdc69, 0xdc69 }, /* 0xdc6a */ { false, 0xdc6a, 0xdc6a }, /* 0xdc6b */ { false, 0xdc6b, 0xdc6b }, /* 0xdc6c */ { false, 0xdc6c, 0xdc6c }, /* 0xdc6d */ { false, 0xdc6d, 0xdc6d }, /* 0xdc6e */ { false, 0xdc6e, 0xdc6e }, /* 0xdc6f */ { false, 0xdc6f, 0xdc6f }, /* 0xdc70 */ { false, 0xdc70, 0xdc70 }, /* 0xdc71 */ { false, 0xdc71, 0xdc71 }, /* 0xdc72 */ { false, 0xdc72, 0xdc72 }, /* 0xdc73 */ { false, 0xdc73, 0xdc73 }, /* 0xdc74 */ { false, 0xdc74, 0xdc74 }, /* 0xdc75 */ { false, 0xdc75, 0xdc75 }, /* 0xdc76 */ { false, 0xdc76, 0xdc76 }, /* 0xdc77 */ { false, 0xdc77, 0xdc77 }, /* 0xdc78 */ { false, 0xdc78, 0xdc78 }, /* 0xdc79 */ { false, 0xdc79, 0xdc79 }, /* 0xdc7a */ { false, 0xdc7a, 0xdc7a }, /* 0xdc7b */ { false, 0xdc7b, 0xdc7b }, /* 0xdc7c */ { false, 0xdc7c, 0xdc7c }, /* 0xdc7d */ { false, 0xdc7d, 0xdc7d }, /* 0xdc7e */ { false, 0xdc7e, 0xdc7e }, /* 0xdc7f */ { false, 0xdc7f, 0xdc7f }, /* 0xdc80 */ { false, 0xdc80, 0xdc80 }, /* 0xdc81 */ { false, 0xdc81, 0xdc81 }, /* 0xdc82 */ { false, 0xdc82, 0xdc82 }, /* 0xdc83 */ { false, 0xdc83, 0xdc83 }, /* 0xdc84 */ { false, 0xdc84, 0xdc84 }, /* 0xdc85 */ { false, 0xdc85, 0xdc85 }, /* 0xdc86 */ { false, 0xdc86, 0xdc86 }, /* 0xdc87 */ { false, 0xdc87, 0xdc87 }, /* 0xdc88 */ { false, 0xdc88, 0xdc88 }, /* 0xdc89 */ { false, 0xdc89, 0xdc89 }, /* 0xdc8a */ { false, 0xdc8a, 0xdc8a }, /* 0xdc8b */ { false, 0xdc8b, 0xdc8b }, /* 0xdc8c */ { false, 0xdc8c, 0xdc8c }, /* 0xdc8d */ { false, 0xdc8d, 0xdc8d }, /* 0xdc8e */ { false, 0xdc8e, 0xdc8e }, /* 0xdc8f */ { false, 0xdc8f, 0xdc8f }, /* 0xdc90 */ { false, 0xdc90, 0xdc90 }, /* 0xdc91 */ { false, 0xdc91, 0xdc91 }, /* 0xdc92 */ { false, 0xdc92, 0xdc92 }, /* 0xdc93 */ { false, 0xdc93, 0xdc93 }, /* 0xdc94 */ { false, 0xdc94, 0xdc94 }, /* 0xdc95 */ { false, 0xdc95, 0xdc95 }, /* 0xdc96 */ { false, 0xdc96, 0xdc96 }, /* 0xdc97 */ { false, 0xdc97, 0xdc97 }, /* 0xdc98 */ { false, 0xdc98, 0xdc98 }, /* 0xdc99 */ { false, 0xdc99, 0xdc99 }, /* 0xdc9a */ { false, 0xdc9a, 0xdc9a }, /* 0xdc9b */ { false, 0xdc9b, 0xdc9b }, /* 0xdc9c */ { false, 0xdc9c, 0xdc9c }, /* 0xdc9d */ { false, 0xdc9d, 0xdc9d }, /* 0xdc9e */ { false, 0xdc9e, 0xdc9e }, /* 0xdc9f */ { false, 0xdc9f, 0xdc9f }, /* 0xdca0 */ { false, 0xdca0, 0xdca0 }, /* 0xdca1 */ { false, 0xdca1, 0xdca1 }, /* 0xdca2 */ { false, 0xdca2, 0xdca2 }, /* 0xdca3 */ { false, 0xdca3, 0xdca3 }, /* 0xdca4 */ { false, 0xdca4, 0xdca4 }, /* 0xdca5 */ { false, 0xdca5, 0xdca5 }, /* 0xdca6 */ { false, 0xdca6, 0xdca6 }, /* 0xdca7 */ { false, 0xdca7, 0xdca7 }, /* 0xdca8 */ { false, 0xdca8, 0xdca8 }, /* 0xdca9 */ { false, 0xdca9, 0xdca9 }, /* 0xdcaa */ { false, 0xdcaa, 0xdcaa }, /* 0xdcab */ { false, 0xdcab, 0xdcab }, /* 0xdcac */ { false, 0xdcac, 0xdcac }, /* 0xdcad */ { false, 0xdcad, 0xdcad }, /* 0xdcae */ { false, 0xdcae, 0xdcae }, /* 0xdcaf */ { false, 0xdcaf, 0xdcaf }, /* 0xdcb0 */ { false, 0xdcb0, 0xdcb0 }, /* 0xdcb1 */ { false, 0xdcb1, 0xdcb1 }, /* 0xdcb2 */ { false, 0xdcb2, 0xdcb2 }, /* 0xdcb3 */ { false, 0xdcb3, 0xdcb3 }, /* 0xdcb4 */ { false, 0xdcb4, 0xdcb4 }, /* 0xdcb5 */ { false, 0xdcb5, 0xdcb5 }, /* 0xdcb6 */ { false, 0xdcb6, 0xdcb6 }, /* 0xdcb7 */ { false, 0xdcb7, 0xdcb7 }, /* 0xdcb8 */ { false, 0xdcb8, 0xdcb8 }, /* 0xdcb9 */ { false, 0xdcb9, 0xdcb9 }, /* 0xdcba */ { false, 0xdcba, 0xdcba }, /* 0xdcbb */ { false, 0xdcbb, 0xdcbb }, /* 0xdcbc */ { false, 0xdcbc, 0xdcbc }, /* 0xdcbd */ { false, 0xdcbd, 0xdcbd }, /* 0xdcbe */ { false, 0xdcbe, 0xdcbe }, /* 0xdcbf */ { false, 0xdcbf, 0xdcbf }, /* 0xdcc0 */ { false, 0xdcc0, 0xdcc0 }, /* 0xdcc1 */ { false, 0xdcc1, 0xdcc1 }, /* 0xdcc2 */ { false, 0xdcc2, 0xdcc2 }, /* 0xdcc3 */ { false, 0xdcc3, 0xdcc3 }, /* 0xdcc4 */ { false, 0xdcc4, 0xdcc4 }, /* 0xdcc5 */ { false, 0xdcc5, 0xdcc5 }, /* 0xdcc6 */ { false, 0xdcc6, 0xdcc6 }, /* 0xdcc7 */ { false, 0xdcc7, 0xdcc7 }, /* 0xdcc8 */ { false, 0xdcc8, 0xdcc8 }, /* 0xdcc9 */ { false, 0xdcc9, 0xdcc9 }, /* 0xdcca */ { false, 0xdcca, 0xdcca }, /* 0xdccb */ { false, 0xdccb, 0xdccb }, /* 0xdccc */ { false, 0xdccc, 0xdccc }, /* 0xdccd */ { false, 0xdccd, 0xdccd }, /* 0xdcce */ { false, 0xdcce, 0xdcce }, /* 0xdccf */ { false, 0xdccf, 0xdccf }, /* 0xdcd0 */ { false, 0xdcd0, 0xdcd0 }, /* 0xdcd1 */ { false, 0xdcd1, 0xdcd1 }, /* 0xdcd2 */ { false, 0xdcd2, 0xdcd2 }, /* 0xdcd3 */ { false, 0xdcd3, 0xdcd3 }, /* 0xdcd4 */ { false, 0xdcd4, 0xdcd4 }, /* 0xdcd5 */ { false, 0xdcd5, 0xdcd5 }, /* 0xdcd6 */ { false, 0xdcd6, 0xdcd6 }, /* 0xdcd7 */ { false, 0xdcd7, 0xdcd7 }, /* 0xdcd8 */ { false, 0xdcd8, 0xdcd8 }, /* 0xdcd9 */ { false, 0xdcd9, 0xdcd9 }, /* 0xdcda */ { false, 0xdcda, 0xdcda }, /* 0xdcdb */ { false, 0xdcdb, 0xdcdb }, /* 0xdcdc */ { false, 0xdcdc, 0xdcdc }, /* 0xdcdd */ { false, 0xdcdd, 0xdcdd }, /* 0xdcde */ { false, 0xdcde, 0xdcde }, /* 0xdcdf */ { false, 0xdcdf, 0xdcdf }, /* 0xdce0 */ { false, 0xdce0, 0xdce0 }, /* 0xdce1 */ { false, 0xdce1, 0xdce1 }, /* 0xdce2 */ { false, 0xdce2, 0xdce2 }, /* 0xdce3 */ { false, 0xdce3, 0xdce3 }, /* 0xdce4 */ { false, 0xdce4, 0xdce4 }, /* 0xdce5 */ { false, 0xdce5, 0xdce5 }, /* 0xdce6 */ { false, 0xdce6, 0xdce6 }, /* 0xdce7 */ { false, 0xdce7, 0xdce7 }, /* 0xdce8 */ { false, 0xdce8, 0xdce8 }, /* 0xdce9 */ { false, 0xdce9, 0xdce9 }, /* 0xdcea */ { false, 0xdcea, 0xdcea }, /* 0xdceb */ { false, 0xdceb, 0xdceb }, /* 0xdcec */ { false, 0xdcec, 0xdcec }, /* 0xdced */ { false, 0xdced, 0xdced }, /* 0xdcee */ { false, 0xdcee, 0xdcee }, /* 0xdcef */ { false, 0xdcef, 0xdcef }, /* 0xdcf0 */ { false, 0xdcf0, 0xdcf0 }, /* 0xdcf1 */ { false, 0xdcf1, 0xdcf1 }, /* 0xdcf2 */ { false, 0xdcf2, 0xdcf2 }, /* 0xdcf3 */ { false, 0xdcf3, 0xdcf3 }, /* 0xdcf4 */ { false, 0xdcf4, 0xdcf4 }, /* 0xdcf5 */ { false, 0xdcf5, 0xdcf5 }, /* 0xdcf6 */ { false, 0xdcf6, 0xdcf6 }, /* 0xdcf7 */ { false, 0xdcf7, 0xdcf7 }, /* 0xdcf8 */ { false, 0xdcf8, 0xdcf8 }, /* 0xdcf9 */ { false, 0xdcf9, 0xdcf9 }, /* 0xdcfa */ { false, 0xdcfa, 0xdcfa }, /* 0xdcfb */ { false, 0xdcfb, 0xdcfb }, /* 0xdcfc */ { false, 0xdcfc, 0xdcfc }, /* 0xdcfd */ { false, 0xdcfd, 0xdcfd }, /* 0xdcfe */ { false, 0xdcfe, 0xdcfe }, /* 0xdcff */ { false, 0xdcff, 0xdcff }, /* 0xdd00 */ { false, 0xdd00, 0xdd00 }, /* 0xdd01 */ { false, 0xdd01, 0xdd01 }, /* 0xdd02 */ { false, 0xdd02, 0xdd02 }, /* 0xdd03 */ { false, 0xdd03, 0xdd03 }, /* 0xdd04 */ { false, 0xdd04, 0xdd04 }, /* 0xdd05 */ { false, 0xdd05, 0xdd05 }, /* 0xdd06 */ { false, 0xdd06, 0xdd06 }, /* 0xdd07 */ { false, 0xdd07, 0xdd07 }, /* 0xdd08 */ { false, 0xdd08, 0xdd08 }, /* 0xdd09 */ { false, 0xdd09, 0xdd09 }, /* 0xdd0a */ { false, 0xdd0a, 0xdd0a }, /* 0xdd0b */ { false, 0xdd0b, 0xdd0b }, /* 0xdd0c */ { false, 0xdd0c, 0xdd0c }, /* 0xdd0d */ { false, 0xdd0d, 0xdd0d }, /* 0xdd0e */ { false, 0xdd0e, 0xdd0e }, /* 0xdd0f */ { false, 0xdd0f, 0xdd0f }, /* 0xdd10 */ { false, 0xdd10, 0xdd10 }, /* 0xdd11 */ { false, 0xdd11, 0xdd11 }, /* 0xdd12 */ { false, 0xdd12, 0xdd12 }, /* 0xdd13 */ { false, 0xdd13, 0xdd13 }, /* 0xdd14 */ { false, 0xdd14, 0xdd14 }, /* 0xdd15 */ { false, 0xdd15, 0xdd15 }, /* 0xdd16 */ { false, 0xdd16, 0xdd16 }, /* 0xdd17 */ { false, 0xdd17, 0xdd17 }, /* 0xdd18 */ { false, 0xdd18, 0xdd18 }, /* 0xdd19 */ { false, 0xdd19, 0xdd19 }, /* 0xdd1a */ { false, 0xdd1a, 0xdd1a }, /* 0xdd1b */ { false, 0xdd1b, 0xdd1b }, /* 0xdd1c */ { false, 0xdd1c, 0xdd1c }, /* 0xdd1d */ { false, 0xdd1d, 0xdd1d }, /* 0xdd1e */ { false, 0xdd1e, 0xdd1e }, /* 0xdd1f */ { false, 0xdd1f, 0xdd1f }, /* 0xdd20 */ { false, 0xdd20, 0xdd20 }, /* 0xdd21 */ { false, 0xdd21, 0xdd21 }, /* 0xdd22 */ { false, 0xdd22, 0xdd22 }, /* 0xdd23 */ { false, 0xdd23, 0xdd23 }, /* 0xdd24 */ { false, 0xdd24, 0xdd24 }, /* 0xdd25 */ { false, 0xdd25, 0xdd25 }, /* 0xdd26 */ { false, 0xdd26, 0xdd26 }, /* 0xdd27 */ { false, 0xdd27, 0xdd27 }, /* 0xdd28 */ { false, 0xdd28, 0xdd28 }, /* 0xdd29 */ { false, 0xdd29, 0xdd29 }, /* 0xdd2a */ { false, 0xdd2a, 0xdd2a }, /* 0xdd2b */ { false, 0xdd2b, 0xdd2b }, /* 0xdd2c */ { false, 0xdd2c, 0xdd2c }, /* 0xdd2d */ { false, 0xdd2d, 0xdd2d }, /* 0xdd2e */ { false, 0xdd2e, 0xdd2e }, /* 0xdd2f */ { false, 0xdd2f, 0xdd2f }, /* 0xdd30 */ { false, 0xdd30, 0xdd30 }, /* 0xdd31 */ { false, 0xdd31, 0xdd31 }, /* 0xdd32 */ { false, 0xdd32, 0xdd32 }, /* 0xdd33 */ { false, 0xdd33, 0xdd33 }, /* 0xdd34 */ { false, 0xdd34, 0xdd34 }, /* 0xdd35 */ { false, 0xdd35, 0xdd35 }, /* 0xdd36 */ { false, 0xdd36, 0xdd36 }, /* 0xdd37 */ { false, 0xdd37, 0xdd37 }, /* 0xdd38 */ { false, 0xdd38, 0xdd38 }, /* 0xdd39 */ { false, 0xdd39, 0xdd39 }, /* 0xdd3a */ { false, 0xdd3a, 0xdd3a }, /* 0xdd3b */ { false, 0xdd3b, 0xdd3b }, /* 0xdd3c */ { false, 0xdd3c, 0xdd3c }, /* 0xdd3d */ { false, 0xdd3d, 0xdd3d }, /* 0xdd3e */ { false, 0xdd3e, 0xdd3e }, /* 0xdd3f */ { false, 0xdd3f, 0xdd3f }, /* 0xdd40 */ { false, 0xdd40, 0xdd40 }, /* 0xdd41 */ { false, 0xdd41, 0xdd41 }, /* 0xdd42 */ { false, 0xdd42, 0xdd42 }, /* 0xdd43 */ { false, 0xdd43, 0xdd43 }, /* 0xdd44 */ { false, 0xdd44, 0xdd44 }, /* 0xdd45 */ { false, 0xdd45, 0xdd45 }, /* 0xdd46 */ { false, 0xdd46, 0xdd46 }, /* 0xdd47 */ { false, 0xdd47, 0xdd47 }, /* 0xdd48 */ { false, 0xdd48, 0xdd48 }, /* 0xdd49 */ { false, 0xdd49, 0xdd49 }, /* 0xdd4a */ { false, 0xdd4a, 0xdd4a }, /* 0xdd4b */ { false, 0xdd4b, 0xdd4b }, /* 0xdd4c */ { false, 0xdd4c, 0xdd4c }, /* 0xdd4d */ { false, 0xdd4d, 0xdd4d }, /* 0xdd4e */ { false, 0xdd4e, 0xdd4e }, /* 0xdd4f */ { false, 0xdd4f, 0xdd4f }, /* 0xdd50 */ { false, 0xdd50, 0xdd50 }, /* 0xdd51 */ { false, 0xdd51, 0xdd51 }, /* 0xdd52 */ { false, 0xdd52, 0xdd52 }, /* 0xdd53 */ { false, 0xdd53, 0xdd53 }, /* 0xdd54 */ { false, 0xdd54, 0xdd54 }, /* 0xdd55 */ { false, 0xdd55, 0xdd55 }, /* 0xdd56 */ { false, 0xdd56, 0xdd56 }, /* 0xdd57 */ { false, 0xdd57, 0xdd57 }, /* 0xdd58 */ { false, 0xdd58, 0xdd58 }, /* 0xdd59 */ { false, 0xdd59, 0xdd59 }, /* 0xdd5a */ { false, 0xdd5a, 0xdd5a }, /* 0xdd5b */ { false, 0xdd5b, 0xdd5b }, /* 0xdd5c */ { false, 0xdd5c, 0xdd5c }, /* 0xdd5d */ { false, 0xdd5d, 0xdd5d }, /* 0xdd5e */ { false, 0xdd5e, 0xdd5e }, /* 0xdd5f */ { false, 0xdd5f, 0xdd5f }, /* 0xdd60 */ { false, 0xdd60, 0xdd60 }, /* 0xdd61 */ { false, 0xdd61, 0xdd61 }, /* 0xdd62 */ { false, 0xdd62, 0xdd62 }, /* 0xdd63 */ { false, 0xdd63, 0xdd63 }, /* 0xdd64 */ { false, 0xdd64, 0xdd64 }, /* 0xdd65 */ { false, 0xdd65, 0xdd65 }, /* 0xdd66 */ { false, 0xdd66, 0xdd66 }, /* 0xdd67 */ { false, 0xdd67, 0xdd67 }, /* 0xdd68 */ { false, 0xdd68, 0xdd68 }, /* 0xdd69 */ { false, 0xdd69, 0xdd69 }, /* 0xdd6a */ { false, 0xdd6a, 0xdd6a }, /* 0xdd6b */ { false, 0xdd6b, 0xdd6b }, /* 0xdd6c */ { false, 0xdd6c, 0xdd6c }, /* 0xdd6d */ { false, 0xdd6d, 0xdd6d }, /* 0xdd6e */ { false, 0xdd6e, 0xdd6e }, /* 0xdd6f */ { false, 0xdd6f, 0xdd6f }, /* 0xdd70 */ { false, 0xdd70, 0xdd70 }, /* 0xdd71 */ { false, 0xdd71, 0xdd71 }, /* 0xdd72 */ { false, 0xdd72, 0xdd72 }, /* 0xdd73 */ { false, 0xdd73, 0xdd73 }, /* 0xdd74 */ { false, 0xdd74, 0xdd74 }, /* 0xdd75 */ { false, 0xdd75, 0xdd75 }, /* 0xdd76 */ { false, 0xdd76, 0xdd76 }, /* 0xdd77 */ { false, 0xdd77, 0xdd77 }, /* 0xdd78 */ { false, 0xdd78, 0xdd78 }, /* 0xdd79 */ { false, 0xdd79, 0xdd79 }, /* 0xdd7a */ { false, 0xdd7a, 0xdd7a }, /* 0xdd7b */ { false, 0xdd7b, 0xdd7b }, /* 0xdd7c */ { false, 0xdd7c, 0xdd7c }, /* 0xdd7d */ { false, 0xdd7d, 0xdd7d }, /* 0xdd7e */ { false, 0xdd7e, 0xdd7e }, /* 0xdd7f */ { false, 0xdd7f, 0xdd7f }, /* 0xdd80 */ { false, 0xdd80, 0xdd80 }, /* 0xdd81 */ { false, 0xdd81, 0xdd81 }, /* 0xdd82 */ { false, 0xdd82, 0xdd82 }, /* 0xdd83 */ { false, 0xdd83, 0xdd83 }, /* 0xdd84 */ { false, 0xdd84, 0xdd84 }, /* 0xdd85 */ { false, 0xdd85, 0xdd85 }, /* 0xdd86 */ { false, 0xdd86, 0xdd86 }, /* 0xdd87 */ { false, 0xdd87, 0xdd87 }, /* 0xdd88 */ { false, 0xdd88, 0xdd88 }, /* 0xdd89 */ { false, 0xdd89, 0xdd89 }, /* 0xdd8a */ { false, 0xdd8a, 0xdd8a }, /* 0xdd8b */ { false, 0xdd8b, 0xdd8b }, /* 0xdd8c */ { false, 0xdd8c, 0xdd8c }, /* 0xdd8d */ { false, 0xdd8d, 0xdd8d }, /* 0xdd8e */ { false, 0xdd8e, 0xdd8e }, /* 0xdd8f */ { false, 0xdd8f, 0xdd8f }, /* 0xdd90 */ { false, 0xdd90, 0xdd90 }, /* 0xdd91 */ { false, 0xdd91, 0xdd91 }, /* 0xdd92 */ { false, 0xdd92, 0xdd92 }, /* 0xdd93 */ { false, 0xdd93, 0xdd93 }, /* 0xdd94 */ { false, 0xdd94, 0xdd94 }, /* 0xdd95 */ { false, 0xdd95, 0xdd95 }, /* 0xdd96 */ { false, 0xdd96, 0xdd96 }, /* 0xdd97 */ { false, 0xdd97, 0xdd97 }, /* 0xdd98 */ { false, 0xdd98, 0xdd98 }, /* 0xdd99 */ { false, 0xdd99, 0xdd99 }, /* 0xdd9a */ { false, 0xdd9a, 0xdd9a }, /* 0xdd9b */ { false, 0xdd9b, 0xdd9b }, /* 0xdd9c */ { false, 0xdd9c, 0xdd9c }, /* 0xdd9d */ { false, 0xdd9d, 0xdd9d }, /* 0xdd9e */ { false, 0xdd9e, 0xdd9e }, /* 0xdd9f */ { false, 0xdd9f, 0xdd9f }, /* 0xdda0 */ { false, 0xdda0, 0xdda0 }, /* 0xdda1 */ { false, 0xdda1, 0xdda1 }, /* 0xdda2 */ { false, 0xdda2, 0xdda2 }, /* 0xdda3 */ { false, 0xdda3, 0xdda3 }, /* 0xdda4 */ { false, 0xdda4, 0xdda4 }, /* 0xdda5 */ { false, 0xdda5, 0xdda5 }, /* 0xdda6 */ { false, 0xdda6, 0xdda6 }, /* 0xdda7 */ { false, 0xdda7, 0xdda7 }, /* 0xdda8 */ { false, 0xdda8, 0xdda8 }, /* 0xdda9 */ { false, 0xdda9, 0xdda9 }, /* 0xddaa */ { false, 0xddaa, 0xddaa }, /* 0xddab */ { false, 0xddab, 0xddab }, /* 0xddac */ { false, 0xddac, 0xddac }, /* 0xddad */ { false, 0xddad, 0xddad }, /* 0xddae */ { false, 0xddae, 0xddae }, /* 0xddaf */ { false, 0xddaf, 0xddaf }, /* 0xddb0 */ { false, 0xddb0, 0xddb0 }, /* 0xddb1 */ { false, 0xddb1, 0xddb1 }, /* 0xddb2 */ { false, 0xddb2, 0xddb2 }, /* 0xddb3 */ { false, 0xddb3, 0xddb3 }, /* 0xddb4 */ { false, 0xddb4, 0xddb4 }, /* 0xddb5 */ { false, 0xddb5, 0xddb5 }, /* 0xddb6 */ { false, 0xddb6, 0xddb6 }, /* 0xddb7 */ { false, 0xddb7, 0xddb7 }, /* 0xddb8 */ { false, 0xddb8, 0xddb8 }, /* 0xddb9 */ { false, 0xddb9, 0xddb9 }, /* 0xddba */ { false, 0xddba, 0xddba }, /* 0xddbb */ { false, 0xddbb, 0xddbb }, /* 0xddbc */ { false, 0xddbc, 0xddbc }, /* 0xddbd */ { false, 0xddbd, 0xddbd }, /* 0xddbe */ { false, 0xddbe, 0xddbe }, /* 0xddbf */ { false, 0xddbf, 0xddbf }, /* 0xddc0 */ { false, 0xddc0, 0xddc0 }, /* 0xddc1 */ { false, 0xddc1, 0xddc1 }, /* 0xddc2 */ { false, 0xddc2, 0xddc2 }, /* 0xddc3 */ { false, 0xddc3, 0xddc3 }, /* 0xddc4 */ { false, 0xddc4, 0xddc4 }, /* 0xddc5 */ { false, 0xddc5, 0xddc5 }, /* 0xddc6 */ { false, 0xddc6, 0xddc6 }, /* 0xddc7 */ { false, 0xddc7, 0xddc7 }, /* 0xddc8 */ { false, 0xddc8, 0xddc8 }, /* 0xddc9 */ { false, 0xddc9, 0xddc9 }, /* 0xddca */ { false, 0xddca, 0xddca }, /* 0xddcb */ { false, 0xddcb, 0xddcb }, /* 0xddcc */ { false, 0xddcc, 0xddcc }, /* 0xddcd */ { false, 0xddcd, 0xddcd }, /* 0xddce */ { false, 0xddce, 0xddce }, /* 0xddcf */ { false, 0xddcf, 0xddcf }, /* 0xddd0 */ { false, 0xddd0, 0xddd0 }, /* 0xddd1 */ { false, 0xddd1, 0xddd1 }, /* 0xddd2 */ { false, 0xddd2, 0xddd2 }, /* 0xddd3 */ { false, 0xddd3, 0xddd3 }, /* 0xddd4 */ { false, 0xddd4, 0xddd4 }, /* 0xddd5 */ { false, 0xddd5, 0xddd5 }, /* 0xddd6 */ { false, 0xddd6, 0xddd6 }, /* 0xddd7 */ { false, 0xddd7, 0xddd7 }, /* 0xddd8 */ { false, 0xddd8, 0xddd8 }, /* 0xddd9 */ { false, 0xddd9, 0xddd9 }, /* 0xddda */ { false, 0xddda, 0xddda }, /* 0xdddb */ { false, 0xdddb, 0xdddb }, /* 0xdddc */ { false, 0xdddc, 0xdddc }, /* 0xdddd */ { false, 0xdddd, 0xdddd }, /* 0xddde */ { false, 0xddde, 0xddde }, /* 0xdddf */ { false, 0xdddf, 0xdddf }, /* 0xdde0 */ { false, 0xdde0, 0xdde0 }, /* 0xdde1 */ { false, 0xdde1, 0xdde1 }, /* 0xdde2 */ { false, 0xdde2, 0xdde2 }, /* 0xdde3 */ { false, 0xdde3, 0xdde3 }, /* 0xdde4 */ { false, 0xdde4, 0xdde4 }, /* 0xdde5 */ { false, 0xdde5, 0xdde5 }, /* 0xdde6 */ { false, 0xdde6, 0xdde6 }, /* 0xdde7 */ { false, 0xdde7, 0xdde7 }, /* 0xdde8 */ { false, 0xdde8, 0xdde8 }, /* 0xdde9 */ { false, 0xdde9, 0xdde9 }, /* 0xddea */ { false, 0xddea, 0xddea }, /* 0xddeb */ { false, 0xddeb, 0xddeb }, /* 0xddec */ { false, 0xddec, 0xddec }, /* 0xdded */ { false, 0xdded, 0xdded }, /* 0xddee */ { false, 0xddee, 0xddee }, /* 0xddef */ { false, 0xddef, 0xddef }, /* 0xddf0 */ { false, 0xddf0, 0xddf0 }, /* 0xddf1 */ { false, 0xddf1, 0xddf1 }, /* 0xddf2 */ { false, 0xddf2, 0xddf2 }, /* 0xddf3 */ { false, 0xddf3, 0xddf3 }, /* 0xddf4 */ { false, 0xddf4, 0xddf4 }, /* 0xddf5 */ { false, 0xddf5, 0xddf5 }, /* 0xddf6 */ { false, 0xddf6, 0xddf6 }, /* 0xddf7 */ { false, 0xddf7, 0xddf7 }, /* 0xddf8 */ { false, 0xddf8, 0xddf8 }, /* 0xddf9 */ { false, 0xddf9, 0xddf9 }, /* 0xddfa */ { false, 0xddfa, 0xddfa }, /* 0xddfb */ { false, 0xddfb, 0xddfb }, /* 0xddfc */ { false, 0xddfc, 0xddfc }, /* 0xddfd */ { false, 0xddfd, 0xddfd }, /* 0xddfe */ { false, 0xddfe, 0xddfe }, /* 0xddff */ { false, 0xddff, 0xddff }, /* 0xde00 */ { false, 0xde00, 0xde00 }, /* 0xde01 */ { false, 0xde01, 0xde01 }, /* 0xde02 */ { false, 0xde02, 0xde02 }, /* 0xde03 */ { false, 0xde03, 0xde03 }, /* 0xde04 */ { false, 0xde04, 0xde04 }, /* 0xde05 */ { false, 0xde05, 0xde05 }, /* 0xde06 */ { false, 0xde06, 0xde06 }, /* 0xde07 */ { false, 0xde07, 0xde07 }, /* 0xde08 */ { false, 0xde08, 0xde08 }, /* 0xde09 */ { false, 0xde09, 0xde09 }, /* 0xde0a */ { false, 0xde0a, 0xde0a }, /* 0xde0b */ { false, 0xde0b, 0xde0b }, /* 0xde0c */ { false, 0xde0c, 0xde0c }, /* 0xde0d */ { false, 0xde0d, 0xde0d }, /* 0xde0e */ { false, 0xde0e, 0xde0e }, /* 0xde0f */ { false, 0xde0f, 0xde0f }, /* 0xde10 */ { false, 0xde10, 0xde10 }, /* 0xde11 */ { false, 0xde11, 0xde11 }, /* 0xde12 */ { false, 0xde12, 0xde12 }, /* 0xde13 */ { false, 0xde13, 0xde13 }, /* 0xde14 */ { false, 0xde14, 0xde14 }, /* 0xde15 */ { false, 0xde15, 0xde15 }, /* 0xde16 */ { false, 0xde16, 0xde16 }, /* 0xde17 */ { false, 0xde17, 0xde17 }, /* 0xde18 */ { false, 0xde18, 0xde18 }, /* 0xde19 */ { false, 0xde19, 0xde19 }, /* 0xde1a */ { false, 0xde1a, 0xde1a }, /* 0xde1b */ { false, 0xde1b, 0xde1b }, /* 0xde1c */ { false, 0xde1c, 0xde1c }, /* 0xde1d */ { false, 0xde1d, 0xde1d }, /* 0xde1e */ { false, 0xde1e, 0xde1e }, /* 0xde1f */ { false, 0xde1f, 0xde1f }, /* 0xde20 */ { false, 0xde20, 0xde20 }, /* 0xde21 */ { false, 0xde21, 0xde21 }, /* 0xde22 */ { false, 0xde22, 0xde22 }, /* 0xde23 */ { false, 0xde23, 0xde23 }, /* 0xde24 */ { false, 0xde24, 0xde24 }, /* 0xde25 */ { false, 0xde25, 0xde25 }, /* 0xde26 */ { false, 0xde26, 0xde26 }, /* 0xde27 */ { false, 0xde27, 0xde27 }, /* 0xde28 */ { false, 0xde28, 0xde28 }, /* 0xde29 */ { false, 0xde29, 0xde29 }, /* 0xde2a */ { false, 0xde2a, 0xde2a }, /* 0xde2b */ { false, 0xde2b, 0xde2b }, /* 0xde2c */ { false, 0xde2c, 0xde2c }, /* 0xde2d */ { false, 0xde2d, 0xde2d }, /* 0xde2e */ { false, 0xde2e, 0xde2e }, /* 0xde2f */ { false, 0xde2f, 0xde2f }, /* 0xde30 */ { false, 0xde30, 0xde30 }, /* 0xde31 */ { false, 0xde31, 0xde31 }, /* 0xde32 */ { false, 0xde32, 0xde32 }, /* 0xde33 */ { false, 0xde33, 0xde33 }, /* 0xde34 */ { false, 0xde34, 0xde34 }, /* 0xde35 */ { false, 0xde35, 0xde35 }, /* 0xde36 */ { false, 0xde36, 0xde36 }, /* 0xde37 */ { false, 0xde37, 0xde37 }, /* 0xde38 */ { false, 0xde38, 0xde38 }, /* 0xde39 */ { false, 0xde39, 0xde39 }, /* 0xde3a */ { false, 0xde3a, 0xde3a }, /* 0xde3b */ { false, 0xde3b, 0xde3b }, /* 0xde3c */ { false, 0xde3c, 0xde3c }, /* 0xde3d */ { false, 0xde3d, 0xde3d }, /* 0xde3e */ { false, 0xde3e, 0xde3e }, /* 0xde3f */ { false, 0xde3f, 0xde3f }, /* 0xde40 */ { false, 0xde40, 0xde40 }, /* 0xde41 */ { false, 0xde41, 0xde41 }, /* 0xde42 */ { false, 0xde42, 0xde42 }, /* 0xde43 */ { false, 0xde43, 0xde43 }, /* 0xde44 */ { false, 0xde44, 0xde44 }, /* 0xde45 */ { false, 0xde45, 0xde45 }, /* 0xde46 */ { false, 0xde46, 0xde46 }, /* 0xde47 */ { false, 0xde47, 0xde47 }, /* 0xde48 */ { false, 0xde48, 0xde48 }, /* 0xde49 */ { false, 0xde49, 0xde49 }, /* 0xde4a */ { false, 0xde4a, 0xde4a }, /* 0xde4b */ { false, 0xde4b, 0xde4b }, /* 0xde4c */ { false, 0xde4c, 0xde4c }, /* 0xde4d */ { false, 0xde4d, 0xde4d }, /* 0xde4e */ { false, 0xde4e, 0xde4e }, /* 0xde4f */ { false, 0xde4f, 0xde4f }, /* 0xde50 */ { false, 0xde50, 0xde50 }, /* 0xde51 */ { false, 0xde51, 0xde51 }, /* 0xde52 */ { false, 0xde52, 0xde52 }, /* 0xde53 */ { false, 0xde53, 0xde53 }, /* 0xde54 */ { false, 0xde54, 0xde54 }, /* 0xde55 */ { false, 0xde55, 0xde55 }, /* 0xde56 */ { false, 0xde56, 0xde56 }, /* 0xde57 */ { false, 0xde57, 0xde57 }, /* 0xde58 */ { false, 0xde58, 0xde58 }, /* 0xde59 */ { false, 0xde59, 0xde59 }, /* 0xde5a */ { false, 0xde5a, 0xde5a }, /* 0xde5b */ { false, 0xde5b, 0xde5b }, /* 0xde5c */ { false, 0xde5c, 0xde5c }, /* 0xde5d */ { false, 0xde5d, 0xde5d }, /* 0xde5e */ { false, 0xde5e, 0xde5e }, /* 0xde5f */ { false, 0xde5f, 0xde5f }, /* 0xde60 */ { false, 0xde60, 0xde60 }, /* 0xde61 */ { false, 0xde61, 0xde61 }, /* 0xde62 */ { false, 0xde62, 0xde62 }, /* 0xde63 */ { false, 0xde63, 0xde63 }, /* 0xde64 */ { false, 0xde64, 0xde64 }, /* 0xde65 */ { false, 0xde65, 0xde65 }, /* 0xde66 */ { false, 0xde66, 0xde66 }, /* 0xde67 */ { false, 0xde67, 0xde67 }, /* 0xde68 */ { false, 0xde68, 0xde68 }, /* 0xde69 */ { false, 0xde69, 0xde69 }, /* 0xde6a */ { false, 0xde6a, 0xde6a }, /* 0xde6b */ { false, 0xde6b, 0xde6b }, /* 0xde6c */ { false, 0xde6c, 0xde6c }, /* 0xde6d */ { false, 0xde6d, 0xde6d }, /* 0xde6e */ { false, 0xde6e, 0xde6e }, /* 0xde6f */ { false, 0xde6f, 0xde6f }, /* 0xde70 */ { false, 0xde70, 0xde70 }, /* 0xde71 */ { false, 0xde71, 0xde71 }, /* 0xde72 */ { false, 0xde72, 0xde72 }, /* 0xde73 */ { false, 0xde73, 0xde73 }, /* 0xde74 */ { false, 0xde74, 0xde74 }, /* 0xde75 */ { false, 0xde75, 0xde75 }, /* 0xde76 */ { false, 0xde76, 0xde76 }, /* 0xde77 */ { false, 0xde77, 0xde77 }, /* 0xde78 */ { false, 0xde78, 0xde78 }, /* 0xde79 */ { false, 0xde79, 0xde79 }, /* 0xde7a */ { false, 0xde7a, 0xde7a }, /* 0xde7b */ { false, 0xde7b, 0xde7b }, /* 0xde7c */ { false, 0xde7c, 0xde7c }, /* 0xde7d */ { false, 0xde7d, 0xde7d }, /* 0xde7e */ { false, 0xde7e, 0xde7e }, /* 0xde7f */ { false, 0xde7f, 0xde7f }, /* 0xde80 */ { false, 0xde80, 0xde80 }, /* 0xde81 */ { false, 0xde81, 0xde81 }, /* 0xde82 */ { false, 0xde82, 0xde82 }, /* 0xde83 */ { false, 0xde83, 0xde83 }, /* 0xde84 */ { false, 0xde84, 0xde84 }, /* 0xde85 */ { false, 0xde85, 0xde85 }, /* 0xde86 */ { false, 0xde86, 0xde86 }, /* 0xde87 */ { false, 0xde87, 0xde87 }, /* 0xde88 */ { false, 0xde88, 0xde88 }, /* 0xde89 */ { false, 0xde89, 0xde89 }, /* 0xde8a */ { false, 0xde8a, 0xde8a }, /* 0xde8b */ { false, 0xde8b, 0xde8b }, /* 0xde8c */ { false, 0xde8c, 0xde8c }, /* 0xde8d */ { false, 0xde8d, 0xde8d }, /* 0xde8e */ { false, 0xde8e, 0xde8e }, /* 0xde8f */ { false, 0xde8f, 0xde8f }, /* 0xde90 */ { false, 0xde90, 0xde90 }, /* 0xde91 */ { false, 0xde91, 0xde91 }, /* 0xde92 */ { false, 0xde92, 0xde92 }, /* 0xde93 */ { false, 0xde93, 0xde93 }, /* 0xde94 */ { false, 0xde94, 0xde94 }, /* 0xde95 */ { false, 0xde95, 0xde95 }, /* 0xde96 */ { false, 0xde96, 0xde96 }, /* 0xde97 */ { false, 0xde97, 0xde97 }, /* 0xde98 */ { false, 0xde98, 0xde98 }, /* 0xde99 */ { false, 0xde99, 0xde99 }, /* 0xde9a */ { false, 0xde9a, 0xde9a }, /* 0xde9b */ { false, 0xde9b, 0xde9b }, /* 0xde9c */ { false, 0xde9c, 0xde9c }, /* 0xde9d */ { false, 0xde9d, 0xde9d }, /* 0xde9e */ { false, 0xde9e, 0xde9e }, /* 0xde9f */ { false, 0xde9f, 0xde9f }, /* 0xdea0 */ { false, 0xdea0, 0xdea0 }, /* 0xdea1 */ { false, 0xdea1, 0xdea1 }, /* 0xdea2 */ { false, 0xdea2, 0xdea2 }, /* 0xdea3 */ { false, 0xdea3, 0xdea3 }, /* 0xdea4 */ { false, 0xdea4, 0xdea4 }, /* 0xdea5 */ { false, 0xdea5, 0xdea5 }, /* 0xdea6 */ { false, 0xdea6, 0xdea6 }, /* 0xdea7 */ { false, 0xdea7, 0xdea7 }, /* 0xdea8 */ { false, 0xdea8, 0xdea8 }, /* 0xdea9 */ { false, 0xdea9, 0xdea9 }, /* 0xdeaa */ { false, 0xdeaa, 0xdeaa }, /* 0xdeab */ { false, 0xdeab, 0xdeab }, /* 0xdeac */ { false, 0xdeac, 0xdeac }, /* 0xdead */ { false, 0xdead, 0xdead }, /* 0xdeae */ { false, 0xdeae, 0xdeae }, /* 0xdeaf */ { false, 0xdeaf, 0xdeaf }, /* 0xdeb0 */ { false, 0xdeb0, 0xdeb0 }, /* 0xdeb1 */ { false, 0xdeb1, 0xdeb1 }, /* 0xdeb2 */ { false, 0xdeb2, 0xdeb2 }, /* 0xdeb3 */ { false, 0xdeb3, 0xdeb3 }, /* 0xdeb4 */ { false, 0xdeb4, 0xdeb4 }, /* 0xdeb5 */ { false, 0xdeb5, 0xdeb5 }, /* 0xdeb6 */ { false, 0xdeb6, 0xdeb6 }, /* 0xdeb7 */ { false, 0xdeb7, 0xdeb7 }, /* 0xdeb8 */ { false, 0xdeb8, 0xdeb8 }, /* 0xdeb9 */ { false, 0xdeb9, 0xdeb9 }, /* 0xdeba */ { false, 0xdeba, 0xdeba }, /* 0xdebb */ { false, 0xdebb, 0xdebb }, /* 0xdebc */ { false, 0xdebc, 0xdebc }, /* 0xdebd */ { false, 0xdebd, 0xdebd }, /* 0xdebe */ { false, 0xdebe, 0xdebe }, /* 0xdebf */ { false, 0xdebf, 0xdebf }, /* 0xdec0 */ { false, 0xdec0, 0xdec0 }, /* 0xdec1 */ { false, 0xdec1, 0xdec1 }, /* 0xdec2 */ { false, 0xdec2, 0xdec2 }, /* 0xdec3 */ { false, 0xdec3, 0xdec3 }, /* 0xdec4 */ { false, 0xdec4, 0xdec4 }, /* 0xdec5 */ { false, 0xdec5, 0xdec5 }, /* 0xdec6 */ { false, 0xdec6, 0xdec6 }, /* 0xdec7 */ { false, 0xdec7, 0xdec7 }, /* 0xdec8 */ { false, 0xdec8, 0xdec8 }, /* 0xdec9 */ { false, 0xdec9, 0xdec9 }, /* 0xdeca */ { false, 0xdeca, 0xdeca }, /* 0xdecb */ { false, 0xdecb, 0xdecb }, /* 0xdecc */ { false, 0xdecc, 0xdecc }, /* 0xdecd */ { false, 0xdecd, 0xdecd }, /* 0xdece */ { false, 0xdece, 0xdece }, /* 0xdecf */ { false, 0xdecf, 0xdecf }, /* 0xded0 */ { false, 0xded0, 0xded0 }, /* 0xded1 */ { false, 0xded1, 0xded1 }, /* 0xded2 */ { false, 0xded2, 0xded2 }, /* 0xded3 */ { false, 0xded3, 0xded3 }, /* 0xded4 */ { false, 0xded4, 0xded4 }, /* 0xded5 */ { false, 0xded5, 0xded5 }, /* 0xded6 */ { false, 0xded6, 0xded6 }, /* 0xded7 */ { false, 0xded7, 0xded7 }, /* 0xded8 */ { false, 0xded8, 0xded8 }, /* 0xded9 */ { false, 0xded9, 0xded9 }, /* 0xdeda */ { false, 0xdeda, 0xdeda }, /* 0xdedb */ { false, 0xdedb, 0xdedb }, /* 0xdedc */ { false, 0xdedc, 0xdedc }, /* 0xdedd */ { false, 0xdedd, 0xdedd }, /* 0xdede */ { false, 0xdede, 0xdede }, /* 0xdedf */ { false, 0xdedf, 0xdedf }, /* 0xdee0 */ { false, 0xdee0, 0xdee0 }, /* 0xdee1 */ { false, 0xdee1, 0xdee1 }, /* 0xdee2 */ { false, 0xdee2, 0xdee2 }, /* 0xdee3 */ { false, 0xdee3, 0xdee3 }, /* 0xdee4 */ { false, 0xdee4, 0xdee4 }, /* 0xdee5 */ { false, 0xdee5, 0xdee5 }, /* 0xdee6 */ { false, 0xdee6, 0xdee6 }, /* 0xdee7 */ { false, 0xdee7, 0xdee7 }, /* 0xdee8 */ { false, 0xdee8, 0xdee8 }, /* 0xdee9 */ { false, 0xdee9, 0xdee9 }, /* 0xdeea */ { false, 0xdeea, 0xdeea }, /* 0xdeeb */ { false, 0xdeeb, 0xdeeb }, /* 0xdeec */ { false, 0xdeec, 0xdeec }, /* 0xdeed */ { false, 0xdeed, 0xdeed }, /* 0xdeee */ { false, 0xdeee, 0xdeee }, /* 0xdeef */ { false, 0xdeef, 0xdeef }, /* 0xdef0 */ { false, 0xdef0, 0xdef0 }, /* 0xdef1 */ { false, 0xdef1, 0xdef1 }, /* 0xdef2 */ { false, 0xdef2, 0xdef2 }, /* 0xdef3 */ { false, 0xdef3, 0xdef3 }, /* 0xdef4 */ { false, 0xdef4, 0xdef4 }, /* 0xdef5 */ { false, 0xdef5, 0xdef5 }, /* 0xdef6 */ { false, 0xdef6, 0xdef6 }, /* 0xdef7 */ { false, 0xdef7, 0xdef7 }, /* 0xdef8 */ { false, 0xdef8, 0xdef8 }, /* 0xdef9 */ { false, 0xdef9, 0xdef9 }, /* 0xdefa */ { false, 0xdefa, 0xdefa }, /* 0xdefb */ { false, 0xdefb, 0xdefb }, /* 0xdefc */ { false, 0xdefc, 0xdefc }, /* 0xdefd */ { false, 0xdefd, 0xdefd }, /* 0xdefe */ { false, 0xdefe, 0xdefe }, /* 0xdeff */ { false, 0xdeff, 0xdeff }, /* 0xdf00 */ { false, 0xdf00, 0xdf00 }, /* 0xdf01 */ { false, 0xdf01, 0xdf01 }, /* 0xdf02 */ { false, 0xdf02, 0xdf02 }, /* 0xdf03 */ { false, 0xdf03, 0xdf03 }, /* 0xdf04 */ { false, 0xdf04, 0xdf04 }, /* 0xdf05 */ { false, 0xdf05, 0xdf05 }, /* 0xdf06 */ { false, 0xdf06, 0xdf06 }, /* 0xdf07 */ { false, 0xdf07, 0xdf07 }, /* 0xdf08 */ { false, 0xdf08, 0xdf08 }, /* 0xdf09 */ { false, 0xdf09, 0xdf09 }, /* 0xdf0a */ { false, 0xdf0a, 0xdf0a }, /* 0xdf0b */ { false, 0xdf0b, 0xdf0b }, /* 0xdf0c */ { false, 0xdf0c, 0xdf0c }, /* 0xdf0d */ { false, 0xdf0d, 0xdf0d }, /* 0xdf0e */ { false, 0xdf0e, 0xdf0e }, /* 0xdf0f */ { false, 0xdf0f, 0xdf0f }, /* 0xdf10 */ { false, 0xdf10, 0xdf10 }, /* 0xdf11 */ { false, 0xdf11, 0xdf11 }, /* 0xdf12 */ { false, 0xdf12, 0xdf12 }, /* 0xdf13 */ { false, 0xdf13, 0xdf13 }, /* 0xdf14 */ { false, 0xdf14, 0xdf14 }, /* 0xdf15 */ { false, 0xdf15, 0xdf15 }, /* 0xdf16 */ { false, 0xdf16, 0xdf16 }, /* 0xdf17 */ { false, 0xdf17, 0xdf17 }, /* 0xdf18 */ { false, 0xdf18, 0xdf18 }, /* 0xdf19 */ { false, 0xdf19, 0xdf19 }, /* 0xdf1a */ { false, 0xdf1a, 0xdf1a }, /* 0xdf1b */ { false, 0xdf1b, 0xdf1b }, /* 0xdf1c */ { false, 0xdf1c, 0xdf1c }, /* 0xdf1d */ { false, 0xdf1d, 0xdf1d }, /* 0xdf1e */ { false, 0xdf1e, 0xdf1e }, /* 0xdf1f */ { false, 0xdf1f, 0xdf1f }, /* 0xdf20 */ { false, 0xdf20, 0xdf20 }, /* 0xdf21 */ { false, 0xdf21, 0xdf21 }, /* 0xdf22 */ { false, 0xdf22, 0xdf22 }, /* 0xdf23 */ { false, 0xdf23, 0xdf23 }, /* 0xdf24 */ { false, 0xdf24, 0xdf24 }, /* 0xdf25 */ { false, 0xdf25, 0xdf25 }, /* 0xdf26 */ { false, 0xdf26, 0xdf26 }, /* 0xdf27 */ { false, 0xdf27, 0xdf27 }, /* 0xdf28 */ { false, 0xdf28, 0xdf28 }, /* 0xdf29 */ { false, 0xdf29, 0xdf29 }, /* 0xdf2a */ { false, 0xdf2a, 0xdf2a }, /* 0xdf2b */ { false, 0xdf2b, 0xdf2b }, /* 0xdf2c */ { false, 0xdf2c, 0xdf2c }, /* 0xdf2d */ { false, 0xdf2d, 0xdf2d }, /* 0xdf2e */ { false, 0xdf2e, 0xdf2e }, /* 0xdf2f */ { false, 0xdf2f, 0xdf2f }, /* 0xdf30 */ { false, 0xdf30, 0xdf30 }, /* 0xdf31 */ { false, 0xdf31, 0xdf31 }, /* 0xdf32 */ { false, 0xdf32, 0xdf32 }, /* 0xdf33 */ { false, 0xdf33, 0xdf33 }, /* 0xdf34 */ { false, 0xdf34, 0xdf34 }, /* 0xdf35 */ { false, 0xdf35, 0xdf35 }, /* 0xdf36 */ { false, 0xdf36, 0xdf36 }, /* 0xdf37 */ { false, 0xdf37, 0xdf37 }, /* 0xdf38 */ { false, 0xdf38, 0xdf38 }, /* 0xdf39 */ { false, 0xdf39, 0xdf39 }, /* 0xdf3a */ { false, 0xdf3a, 0xdf3a }, /* 0xdf3b */ { false, 0xdf3b, 0xdf3b }, /* 0xdf3c */ { false, 0xdf3c, 0xdf3c }, /* 0xdf3d */ { false, 0xdf3d, 0xdf3d }, /* 0xdf3e */ { false, 0xdf3e, 0xdf3e }, /* 0xdf3f */ { false, 0xdf3f, 0xdf3f }, /* 0xdf40 */ { false, 0xdf40, 0xdf40 }, /* 0xdf41 */ { false, 0xdf41, 0xdf41 }, /* 0xdf42 */ { false, 0xdf42, 0xdf42 }, /* 0xdf43 */ { false, 0xdf43, 0xdf43 }, /* 0xdf44 */ { false, 0xdf44, 0xdf44 }, /* 0xdf45 */ { false, 0xdf45, 0xdf45 }, /* 0xdf46 */ { false, 0xdf46, 0xdf46 }, /* 0xdf47 */ { false, 0xdf47, 0xdf47 }, /* 0xdf48 */ { false, 0xdf48, 0xdf48 }, /* 0xdf49 */ { false, 0xdf49, 0xdf49 }, /* 0xdf4a */ { false, 0xdf4a, 0xdf4a }, /* 0xdf4b */ { false, 0xdf4b, 0xdf4b }, /* 0xdf4c */ { false, 0xdf4c, 0xdf4c }, /* 0xdf4d */ { false, 0xdf4d, 0xdf4d }, /* 0xdf4e */ { false, 0xdf4e, 0xdf4e }, /* 0xdf4f */ { false, 0xdf4f, 0xdf4f }, /* 0xdf50 */ { false, 0xdf50, 0xdf50 }, /* 0xdf51 */ { false, 0xdf51, 0xdf51 }, /* 0xdf52 */ { false, 0xdf52, 0xdf52 }, /* 0xdf53 */ { false, 0xdf53, 0xdf53 }, /* 0xdf54 */ { false, 0xdf54, 0xdf54 }, /* 0xdf55 */ { false, 0xdf55, 0xdf55 }, /* 0xdf56 */ { false, 0xdf56, 0xdf56 }, /* 0xdf57 */ { false, 0xdf57, 0xdf57 }, /* 0xdf58 */ { false, 0xdf58, 0xdf58 }, /* 0xdf59 */ { false, 0xdf59, 0xdf59 }, /* 0xdf5a */ { false, 0xdf5a, 0xdf5a }, /* 0xdf5b */ { false, 0xdf5b, 0xdf5b }, /* 0xdf5c */ { false, 0xdf5c, 0xdf5c }, /* 0xdf5d */ { false, 0xdf5d, 0xdf5d }, /* 0xdf5e */ { false, 0xdf5e, 0xdf5e }, /* 0xdf5f */ { false, 0xdf5f, 0xdf5f }, /* 0xdf60 */ { false, 0xdf60, 0xdf60 }, /* 0xdf61 */ { false, 0xdf61, 0xdf61 }, /* 0xdf62 */ { false, 0xdf62, 0xdf62 }, /* 0xdf63 */ { false, 0xdf63, 0xdf63 }, /* 0xdf64 */ { false, 0xdf64, 0xdf64 }, /* 0xdf65 */ { false, 0xdf65, 0xdf65 }, /* 0xdf66 */ { false, 0xdf66, 0xdf66 }, /* 0xdf67 */ { false, 0xdf67, 0xdf67 }, /* 0xdf68 */ { false, 0xdf68, 0xdf68 }, /* 0xdf69 */ { false, 0xdf69, 0xdf69 }, /* 0xdf6a */ { false, 0xdf6a, 0xdf6a }, /* 0xdf6b */ { false, 0xdf6b, 0xdf6b }, /* 0xdf6c */ { false, 0xdf6c, 0xdf6c }, /* 0xdf6d */ { false, 0xdf6d, 0xdf6d }, /* 0xdf6e */ { false, 0xdf6e, 0xdf6e }, /* 0xdf6f */ { false, 0xdf6f, 0xdf6f }, /* 0xdf70 */ { false, 0xdf70, 0xdf70 }, /* 0xdf71 */ { false, 0xdf71, 0xdf71 }, /* 0xdf72 */ { false, 0xdf72, 0xdf72 }, /* 0xdf73 */ { false, 0xdf73, 0xdf73 }, /* 0xdf74 */ { false, 0xdf74, 0xdf74 }, /* 0xdf75 */ { false, 0xdf75, 0xdf75 }, /* 0xdf76 */ { false, 0xdf76, 0xdf76 }, /* 0xdf77 */ { false, 0xdf77, 0xdf77 }, /* 0xdf78 */ { false, 0xdf78, 0xdf78 }, /* 0xdf79 */ { false, 0xdf79, 0xdf79 }, /* 0xdf7a */ { false, 0xdf7a, 0xdf7a }, /* 0xdf7b */ { false, 0xdf7b, 0xdf7b }, /* 0xdf7c */ { false, 0xdf7c, 0xdf7c }, /* 0xdf7d */ { false, 0xdf7d, 0xdf7d }, /* 0xdf7e */ { false, 0xdf7e, 0xdf7e }, /* 0xdf7f */ { false, 0xdf7f, 0xdf7f }, /* 0xdf80 */ { false, 0xdf80, 0xdf80 }, /* 0xdf81 */ { false, 0xdf81, 0xdf81 }, /* 0xdf82 */ { false, 0xdf82, 0xdf82 }, /* 0xdf83 */ { false, 0xdf83, 0xdf83 }, /* 0xdf84 */ { false, 0xdf84, 0xdf84 }, /* 0xdf85 */ { false, 0xdf85, 0xdf85 }, /* 0xdf86 */ { false, 0xdf86, 0xdf86 }, /* 0xdf87 */ { false, 0xdf87, 0xdf87 }, /* 0xdf88 */ { false, 0xdf88, 0xdf88 }, /* 0xdf89 */ { false, 0xdf89, 0xdf89 }, /* 0xdf8a */ { false, 0xdf8a, 0xdf8a }, /* 0xdf8b */ { false, 0xdf8b, 0xdf8b }, /* 0xdf8c */ { false, 0xdf8c, 0xdf8c }, /* 0xdf8d */ { false, 0xdf8d, 0xdf8d }, /* 0xdf8e */ { false, 0xdf8e, 0xdf8e }, /* 0xdf8f */ { false, 0xdf8f, 0xdf8f }, /* 0xdf90 */ { false, 0xdf90, 0xdf90 }, /* 0xdf91 */ { false, 0xdf91, 0xdf91 }, /* 0xdf92 */ { false, 0xdf92, 0xdf92 }, /* 0xdf93 */ { false, 0xdf93, 0xdf93 }, /* 0xdf94 */ { false, 0xdf94, 0xdf94 }, /* 0xdf95 */ { false, 0xdf95, 0xdf95 }, /* 0xdf96 */ { false, 0xdf96, 0xdf96 }, /* 0xdf97 */ { false, 0xdf97, 0xdf97 }, /* 0xdf98 */ { false, 0xdf98, 0xdf98 }, /* 0xdf99 */ { false, 0xdf99, 0xdf99 }, /* 0xdf9a */ { false, 0xdf9a, 0xdf9a }, /* 0xdf9b */ { false, 0xdf9b, 0xdf9b }, /* 0xdf9c */ { false, 0xdf9c, 0xdf9c }, /* 0xdf9d */ { false, 0xdf9d, 0xdf9d }, /* 0xdf9e */ { false, 0xdf9e, 0xdf9e }, /* 0xdf9f */ { false, 0xdf9f, 0xdf9f }, /* 0xdfa0 */ { false, 0xdfa0, 0xdfa0 }, /* 0xdfa1 */ { false, 0xdfa1, 0xdfa1 }, /* 0xdfa2 */ { false, 0xdfa2, 0xdfa2 }, /* 0xdfa3 */ { false, 0xdfa3, 0xdfa3 }, /* 0xdfa4 */ { false, 0xdfa4, 0xdfa4 }, /* 0xdfa5 */ { false, 0xdfa5, 0xdfa5 }, /* 0xdfa6 */ { false, 0xdfa6, 0xdfa6 }, /* 0xdfa7 */ { false, 0xdfa7, 0xdfa7 }, /* 0xdfa8 */ { false, 0xdfa8, 0xdfa8 }, /* 0xdfa9 */ { false, 0xdfa9, 0xdfa9 }, /* 0xdfaa */ { false, 0xdfaa, 0xdfaa }, /* 0xdfab */ { false, 0xdfab, 0xdfab }, /* 0xdfac */ { false, 0xdfac, 0xdfac }, /* 0xdfad */ { false, 0xdfad, 0xdfad }, /* 0xdfae */ { false, 0xdfae, 0xdfae }, /* 0xdfaf */ { false, 0xdfaf, 0xdfaf }, /* 0xdfb0 */ { false, 0xdfb0, 0xdfb0 }, /* 0xdfb1 */ { false, 0xdfb1, 0xdfb1 }, /* 0xdfb2 */ { false, 0xdfb2, 0xdfb2 }, /* 0xdfb3 */ { false, 0xdfb3, 0xdfb3 }, /* 0xdfb4 */ { false, 0xdfb4, 0xdfb4 }, /* 0xdfb5 */ { false, 0xdfb5, 0xdfb5 }, /* 0xdfb6 */ { false, 0xdfb6, 0xdfb6 }, /* 0xdfb7 */ { false, 0xdfb7, 0xdfb7 }, /* 0xdfb8 */ { false, 0xdfb8, 0xdfb8 }, /* 0xdfb9 */ { false, 0xdfb9, 0xdfb9 }, /* 0xdfba */ { false, 0xdfba, 0xdfba }, /* 0xdfbb */ { false, 0xdfbb, 0xdfbb }, /* 0xdfbc */ { false, 0xdfbc, 0xdfbc }, /* 0xdfbd */ { false, 0xdfbd, 0xdfbd }, /* 0xdfbe */ { false, 0xdfbe, 0xdfbe }, /* 0xdfbf */ { false, 0xdfbf, 0xdfbf }, /* 0xdfc0 */ { false, 0xdfc0, 0xdfc0 }, /* 0xdfc1 */ { false, 0xdfc1, 0xdfc1 }, /* 0xdfc2 */ { false, 0xdfc2, 0xdfc2 }, /* 0xdfc3 */ { false, 0xdfc3, 0xdfc3 }, /* 0xdfc4 */ { false, 0xdfc4, 0xdfc4 }, /* 0xdfc5 */ { false, 0xdfc5, 0xdfc5 }, /* 0xdfc6 */ { false, 0xdfc6, 0xdfc6 }, /* 0xdfc7 */ { false, 0xdfc7, 0xdfc7 }, /* 0xdfc8 */ { false, 0xdfc8, 0xdfc8 }, /* 0xdfc9 */ { false, 0xdfc9, 0xdfc9 }, /* 0xdfca */ { false, 0xdfca, 0xdfca }, /* 0xdfcb */ { false, 0xdfcb, 0xdfcb }, /* 0xdfcc */ { false, 0xdfcc, 0xdfcc }, /* 0xdfcd */ { false, 0xdfcd, 0xdfcd }, /* 0xdfce */ { false, 0xdfce, 0xdfce }, /* 0xdfcf */ { false, 0xdfcf, 0xdfcf }, /* 0xdfd0 */ { false, 0xdfd0, 0xdfd0 }, /* 0xdfd1 */ { false, 0xdfd1, 0xdfd1 }, /* 0xdfd2 */ { false, 0xdfd2, 0xdfd2 }, /* 0xdfd3 */ { false, 0xdfd3, 0xdfd3 }, /* 0xdfd4 */ { false, 0xdfd4, 0xdfd4 }, /* 0xdfd5 */ { false, 0xdfd5, 0xdfd5 }, /* 0xdfd6 */ { false, 0xdfd6, 0xdfd6 }, /* 0xdfd7 */ { false, 0xdfd7, 0xdfd7 }, /* 0xdfd8 */ { false, 0xdfd8, 0xdfd8 }, /* 0xdfd9 */ { false, 0xdfd9, 0xdfd9 }, /* 0xdfda */ { false, 0xdfda, 0xdfda }, /* 0xdfdb */ { false, 0xdfdb, 0xdfdb }, /* 0xdfdc */ { false, 0xdfdc, 0xdfdc }, /* 0xdfdd */ { false, 0xdfdd, 0xdfdd }, /* 0xdfde */ { false, 0xdfde, 0xdfde }, /* 0xdfdf */ { false, 0xdfdf, 0xdfdf }, /* 0xdfe0 */ { false, 0xdfe0, 0xdfe0 }, /* 0xdfe1 */ { false, 0xdfe1, 0xdfe1 }, /* 0xdfe2 */ { false, 0xdfe2, 0xdfe2 }, /* 0xdfe3 */ { false, 0xdfe3, 0xdfe3 }, /* 0xdfe4 */ { false, 0xdfe4, 0xdfe4 }, /* 0xdfe5 */ { false, 0xdfe5, 0xdfe5 }, /* 0xdfe6 */ { false, 0xdfe6, 0xdfe6 }, /* 0xdfe7 */ { false, 0xdfe7, 0xdfe7 }, /* 0xdfe8 */ { false, 0xdfe8, 0xdfe8 }, /* 0xdfe9 */ { false, 0xdfe9, 0xdfe9 }, /* 0xdfea */ { false, 0xdfea, 0xdfea }, /* 0xdfeb */ { false, 0xdfeb, 0xdfeb }, /* 0xdfec */ { false, 0xdfec, 0xdfec }, /* 0xdfed */ { false, 0xdfed, 0xdfed }, /* 0xdfee */ { false, 0xdfee, 0xdfee }, /* 0xdfef */ { false, 0xdfef, 0xdfef }, /* 0xdff0 */ { false, 0xdff0, 0xdff0 }, /* 0xdff1 */ { false, 0xdff1, 0xdff1 }, /* 0xdff2 */ { false, 0xdff2, 0xdff2 }, /* 0xdff3 */ { false, 0xdff3, 0xdff3 }, /* 0xdff4 */ { false, 0xdff4, 0xdff4 }, /* 0xdff5 */ { false, 0xdff5, 0xdff5 }, /* 0xdff6 */ { false, 0xdff6, 0xdff6 }, /* 0xdff7 */ { false, 0xdff7, 0xdff7 }, /* 0xdff8 */ { false, 0xdff8, 0xdff8 }, /* 0xdff9 */ { false, 0xdff9, 0xdff9 }, /* 0xdffa */ { false, 0xdffa, 0xdffa }, /* 0xdffb */ { false, 0xdffb, 0xdffb }, /* 0xdffc */ { false, 0xdffc, 0xdffc }, /* 0xdffd */ { false, 0xdffd, 0xdffd }, /* 0xdffe */ { false, 0xdffe, 0xdffe }, /* 0xdfff */ { false, 0xdfff, 0xdfff }, /* 0xe000 */ { false, 0xe000, 0xe000 }, /* 0xe001 */ { false, 0xe001, 0xe001 }, /* 0xe002 */ { false, 0xe002, 0xe002 }, /* 0xe003 */ { false, 0xe003, 0xe003 }, /* 0xe004 */ { false, 0xe004, 0xe004 }, /* 0xe005 */ { false, 0xe005, 0xe005 }, /* 0xe006 */ { false, 0xe006, 0xe006 }, /* 0xe007 */ { false, 0xe007, 0xe007 }, /* 0xe008 */ { false, 0xe008, 0xe008 }, /* 0xe009 */ { false, 0xe009, 0xe009 }, /* 0xe00a */ { false, 0xe00a, 0xe00a }, /* 0xe00b */ { false, 0xe00b, 0xe00b }, /* 0xe00c */ { false, 0xe00c, 0xe00c }, /* 0xe00d */ { false, 0xe00d, 0xe00d }, /* 0xe00e */ { false, 0xe00e, 0xe00e }, /* 0xe00f */ { false, 0xe00f, 0xe00f }, /* 0xe010 */ { false, 0xe010, 0xe010 }, /* 0xe011 */ { false, 0xe011, 0xe011 }, /* 0xe012 */ { false, 0xe012, 0xe012 }, /* 0xe013 */ { false, 0xe013, 0xe013 }, /* 0xe014 */ { false, 0xe014, 0xe014 }, /* 0xe015 */ { false, 0xe015, 0xe015 }, /* 0xe016 */ { false, 0xe016, 0xe016 }, /* 0xe017 */ { false, 0xe017, 0xe017 }, /* 0xe018 */ { false, 0xe018, 0xe018 }, /* 0xe019 */ { false, 0xe019, 0xe019 }, /* 0xe01a */ { false, 0xe01a, 0xe01a }, /* 0xe01b */ { false, 0xe01b, 0xe01b }, /* 0xe01c */ { false, 0xe01c, 0xe01c }, /* 0xe01d */ { false, 0xe01d, 0xe01d }, /* 0xe01e */ { false, 0xe01e, 0xe01e }, /* 0xe01f */ { false, 0xe01f, 0xe01f }, /* 0xe020 */ { false, 0xe020, 0xe020 }, /* 0xe021 */ { false, 0xe021, 0xe021 }, /* 0xe022 */ { false, 0xe022, 0xe022 }, /* 0xe023 */ { false, 0xe023, 0xe023 }, /* 0xe024 */ { false, 0xe024, 0xe024 }, /* 0xe025 */ { false, 0xe025, 0xe025 }, /* 0xe026 */ { false, 0xe026, 0xe026 }, /* 0xe027 */ { false, 0xe027, 0xe027 }, /* 0xe028 */ { false, 0xe028, 0xe028 }, /* 0xe029 */ { false, 0xe029, 0xe029 }, /* 0xe02a */ { false, 0xe02a, 0xe02a }, /* 0xe02b */ { false, 0xe02b, 0xe02b }, /* 0xe02c */ { false, 0xe02c, 0xe02c }, /* 0xe02d */ { false, 0xe02d, 0xe02d }, /* 0xe02e */ { false, 0xe02e, 0xe02e }, /* 0xe02f */ { false, 0xe02f, 0xe02f }, /* 0xe030 */ { false, 0xe030, 0xe030 }, /* 0xe031 */ { false, 0xe031, 0xe031 }, /* 0xe032 */ { false, 0xe032, 0xe032 }, /* 0xe033 */ { false, 0xe033, 0xe033 }, /* 0xe034 */ { false, 0xe034, 0xe034 }, /* 0xe035 */ { false, 0xe035, 0xe035 }, /* 0xe036 */ { false, 0xe036, 0xe036 }, /* 0xe037 */ { false, 0xe037, 0xe037 }, /* 0xe038 */ { false, 0xe038, 0xe038 }, /* 0xe039 */ { false, 0xe039, 0xe039 }, /* 0xe03a */ { false, 0xe03a, 0xe03a }, /* 0xe03b */ { false, 0xe03b, 0xe03b }, /* 0xe03c */ { false, 0xe03c, 0xe03c }, /* 0xe03d */ { false, 0xe03d, 0xe03d }, /* 0xe03e */ { false, 0xe03e, 0xe03e }, /* 0xe03f */ { false, 0xe03f, 0xe03f }, /* 0xe040 */ { false, 0xe040, 0xe040 }, /* 0xe041 */ { false, 0xe041, 0xe041 }, /* 0xe042 */ { false, 0xe042, 0xe042 }, /* 0xe043 */ { false, 0xe043, 0xe043 }, /* 0xe044 */ { false, 0xe044, 0xe044 }, /* 0xe045 */ { false, 0xe045, 0xe045 }, /* 0xe046 */ { false, 0xe046, 0xe046 }, /* 0xe047 */ { false, 0xe047, 0xe047 }, /* 0xe048 */ { false, 0xe048, 0xe048 }, /* 0xe049 */ { false, 0xe049, 0xe049 }, /* 0xe04a */ { false, 0xe04a, 0xe04a }, /* 0xe04b */ { false, 0xe04b, 0xe04b }, /* 0xe04c */ { false, 0xe04c, 0xe04c }, /* 0xe04d */ { false, 0xe04d, 0xe04d }, /* 0xe04e */ { false, 0xe04e, 0xe04e }, /* 0xe04f */ { false, 0xe04f, 0xe04f }, /* 0xe050 */ { false, 0xe050, 0xe050 }, /* 0xe051 */ { false, 0xe051, 0xe051 }, /* 0xe052 */ { false, 0xe052, 0xe052 }, /* 0xe053 */ { false, 0xe053, 0xe053 }, /* 0xe054 */ { false, 0xe054, 0xe054 }, /* 0xe055 */ { false, 0xe055, 0xe055 }, /* 0xe056 */ { false, 0xe056, 0xe056 }, /* 0xe057 */ { false, 0xe057, 0xe057 }, /* 0xe058 */ { false, 0xe058, 0xe058 }, /* 0xe059 */ { false, 0xe059, 0xe059 }, /* 0xe05a */ { false, 0xe05a, 0xe05a }, /* 0xe05b */ { false, 0xe05b, 0xe05b }, /* 0xe05c */ { false, 0xe05c, 0xe05c }, /* 0xe05d */ { false, 0xe05d, 0xe05d }, /* 0xe05e */ { false, 0xe05e, 0xe05e }, /* 0xe05f */ { false, 0xe05f, 0xe05f }, /* 0xe060 */ { false, 0xe060, 0xe060 }, /* 0xe061 */ { false, 0xe061, 0xe061 }, /* 0xe062 */ { false, 0xe062, 0xe062 }, /* 0xe063 */ { false, 0xe063, 0xe063 }, /* 0xe064 */ { false, 0xe064, 0xe064 }, /* 0xe065 */ { false, 0xe065, 0xe065 }, /* 0xe066 */ { false, 0xe066, 0xe066 }, /* 0xe067 */ { false, 0xe067, 0xe067 }, /* 0xe068 */ { false, 0xe068, 0xe068 }, /* 0xe069 */ { false, 0xe069, 0xe069 }, /* 0xe06a */ { false, 0xe06a, 0xe06a }, /* 0xe06b */ { false, 0xe06b, 0xe06b }, /* 0xe06c */ { false, 0xe06c, 0xe06c }, /* 0xe06d */ { false, 0xe06d, 0xe06d }, /* 0xe06e */ { false, 0xe06e, 0xe06e }, /* 0xe06f */ { false, 0xe06f, 0xe06f }, /* 0xe070 */ { false, 0xe070, 0xe070 }, /* 0xe071 */ { false, 0xe071, 0xe071 }, /* 0xe072 */ { false, 0xe072, 0xe072 }, /* 0xe073 */ { false, 0xe073, 0xe073 }, /* 0xe074 */ { false, 0xe074, 0xe074 }, /* 0xe075 */ { false, 0xe075, 0xe075 }, /* 0xe076 */ { false, 0xe076, 0xe076 }, /* 0xe077 */ { false, 0xe077, 0xe077 }, /* 0xe078 */ { false, 0xe078, 0xe078 }, /* 0xe079 */ { false, 0xe079, 0xe079 }, /* 0xe07a */ { false, 0xe07a, 0xe07a }, /* 0xe07b */ { false, 0xe07b, 0xe07b }, /* 0xe07c */ { false, 0xe07c, 0xe07c }, /* 0xe07d */ { false, 0xe07d, 0xe07d }, /* 0xe07e */ { false, 0xe07e, 0xe07e }, /* 0xe07f */ { false, 0xe07f, 0xe07f }, /* 0xe080 */ { false, 0xe080, 0xe080 }, /* 0xe081 */ { false, 0xe081, 0xe081 }, /* 0xe082 */ { false, 0xe082, 0xe082 }, /* 0xe083 */ { false, 0xe083, 0xe083 }, /* 0xe084 */ { false, 0xe084, 0xe084 }, /* 0xe085 */ { false, 0xe085, 0xe085 }, /* 0xe086 */ { false, 0xe086, 0xe086 }, /* 0xe087 */ { false, 0xe087, 0xe087 }, /* 0xe088 */ { false, 0xe088, 0xe088 }, /* 0xe089 */ { false, 0xe089, 0xe089 }, /* 0xe08a */ { false, 0xe08a, 0xe08a }, /* 0xe08b */ { false, 0xe08b, 0xe08b }, /* 0xe08c */ { false, 0xe08c, 0xe08c }, /* 0xe08d */ { false, 0xe08d, 0xe08d }, /* 0xe08e */ { false, 0xe08e, 0xe08e }, /* 0xe08f */ { false, 0xe08f, 0xe08f }, /* 0xe090 */ { false, 0xe090, 0xe090 }, /* 0xe091 */ { false, 0xe091, 0xe091 }, /* 0xe092 */ { false, 0xe092, 0xe092 }, /* 0xe093 */ { false, 0xe093, 0xe093 }, /* 0xe094 */ { false, 0xe094, 0xe094 }, /* 0xe095 */ { false, 0xe095, 0xe095 }, /* 0xe096 */ { false, 0xe096, 0xe096 }, /* 0xe097 */ { false, 0xe097, 0xe097 }, /* 0xe098 */ { false, 0xe098, 0xe098 }, /* 0xe099 */ { false, 0xe099, 0xe099 }, /* 0xe09a */ { false, 0xe09a, 0xe09a }, /* 0xe09b */ { false, 0xe09b, 0xe09b }, /* 0xe09c */ { false, 0xe09c, 0xe09c }, /* 0xe09d */ { false, 0xe09d, 0xe09d }, /* 0xe09e */ { false, 0xe09e, 0xe09e }, /* 0xe09f */ { false, 0xe09f, 0xe09f }, /* 0xe0a0 */ { false, 0xe0a0, 0xe0a0 }, /* 0xe0a1 */ { false, 0xe0a1, 0xe0a1 }, /* 0xe0a2 */ { false, 0xe0a2, 0xe0a2 }, /* 0xe0a3 */ { false, 0xe0a3, 0xe0a3 }, /* 0xe0a4 */ { false, 0xe0a4, 0xe0a4 }, /* 0xe0a5 */ { false, 0xe0a5, 0xe0a5 }, /* 0xe0a6 */ { false, 0xe0a6, 0xe0a6 }, /* 0xe0a7 */ { false, 0xe0a7, 0xe0a7 }, /* 0xe0a8 */ { false, 0xe0a8, 0xe0a8 }, /* 0xe0a9 */ { false, 0xe0a9, 0xe0a9 }, /* 0xe0aa */ { false, 0xe0aa, 0xe0aa }, /* 0xe0ab */ { false, 0xe0ab, 0xe0ab }, /* 0xe0ac */ { false, 0xe0ac, 0xe0ac }, /* 0xe0ad */ { false, 0xe0ad, 0xe0ad }, /* 0xe0ae */ { false, 0xe0ae, 0xe0ae }, /* 0xe0af */ { false, 0xe0af, 0xe0af }, /* 0xe0b0 */ { false, 0xe0b0, 0xe0b0 }, /* 0xe0b1 */ { false, 0xe0b1, 0xe0b1 }, /* 0xe0b2 */ { false, 0xe0b2, 0xe0b2 }, /* 0xe0b3 */ { false, 0xe0b3, 0xe0b3 }, /* 0xe0b4 */ { false, 0xe0b4, 0xe0b4 }, /* 0xe0b5 */ { false, 0xe0b5, 0xe0b5 }, /* 0xe0b6 */ { false, 0xe0b6, 0xe0b6 }, /* 0xe0b7 */ { false, 0xe0b7, 0xe0b7 }, /* 0xe0b8 */ { false, 0xe0b8, 0xe0b8 }, /* 0xe0b9 */ { false, 0xe0b9, 0xe0b9 }, /* 0xe0ba */ { false, 0xe0ba, 0xe0ba }, /* 0xe0bb */ { false, 0xe0bb, 0xe0bb }, /* 0xe0bc */ { false, 0xe0bc, 0xe0bc }, /* 0xe0bd */ { false, 0xe0bd, 0xe0bd }, /* 0xe0be */ { false, 0xe0be, 0xe0be }, /* 0xe0bf */ { false, 0xe0bf, 0xe0bf }, /* 0xe0c0 */ { false, 0xe0c0, 0xe0c0 }, /* 0xe0c1 */ { false, 0xe0c1, 0xe0c1 }, /* 0xe0c2 */ { false, 0xe0c2, 0xe0c2 }, /* 0xe0c3 */ { false, 0xe0c3, 0xe0c3 }, /* 0xe0c4 */ { false, 0xe0c4, 0xe0c4 }, /* 0xe0c5 */ { false, 0xe0c5, 0xe0c5 }, /* 0xe0c6 */ { false, 0xe0c6, 0xe0c6 }, /* 0xe0c7 */ { false, 0xe0c7, 0xe0c7 }, /* 0xe0c8 */ { false, 0xe0c8, 0xe0c8 }, /* 0xe0c9 */ { false, 0xe0c9, 0xe0c9 }, /* 0xe0ca */ { false, 0xe0ca, 0xe0ca }, /* 0xe0cb */ { false, 0xe0cb, 0xe0cb }, /* 0xe0cc */ { false, 0xe0cc, 0xe0cc }, /* 0xe0cd */ { false, 0xe0cd, 0xe0cd }, /* 0xe0ce */ { false, 0xe0ce, 0xe0ce }, /* 0xe0cf */ { false, 0xe0cf, 0xe0cf }, /* 0xe0d0 */ { false, 0xe0d0, 0xe0d0 }, /* 0xe0d1 */ { false, 0xe0d1, 0xe0d1 }, /* 0xe0d2 */ { false, 0xe0d2, 0xe0d2 }, /* 0xe0d3 */ { false, 0xe0d3, 0xe0d3 }, /* 0xe0d4 */ { false, 0xe0d4, 0xe0d4 }, /* 0xe0d5 */ { false, 0xe0d5, 0xe0d5 }, /* 0xe0d6 */ { false, 0xe0d6, 0xe0d6 }, /* 0xe0d7 */ { false, 0xe0d7, 0xe0d7 }, /* 0xe0d8 */ { false, 0xe0d8, 0xe0d8 }, /* 0xe0d9 */ { false, 0xe0d9, 0xe0d9 }, /* 0xe0da */ { false, 0xe0da, 0xe0da }, /* 0xe0db */ { false, 0xe0db, 0xe0db }, /* 0xe0dc */ { false, 0xe0dc, 0xe0dc }, /* 0xe0dd */ { false, 0xe0dd, 0xe0dd }, /* 0xe0de */ { false, 0xe0de, 0xe0de }, /* 0xe0df */ { false, 0xe0df, 0xe0df }, /* 0xe0e0 */ { false, 0xe0e0, 0xe0e0 }, /* 0xe0e1 */ { false, 0xe0e1, 0xe0e1 }, /* 0xe0e2 */ { false, 0xe0e2, 0xe0e2 }, /* 0xe0e3 */ { false, 0xe0e3, 0xe0e3 }, /* 0xe0e4 */ { false, 0xe0e4, 0xe0e4 }, /* 0xe0e5 */ { false, 0xe0e5, 0xe0e5 }, /* 0xe0e6 */ { false, 0xe0e6, 0xe0e6 }, /* 0xe0e7 */ { false, 0xe0e7, 0xe0e7 }, /* 0xe0e8 */ { false, 0xe0e8, 0xe0e8 }, /* 0xe0e9 */ { false, 0xe0e9, 0xe0e9 }, /* 0xe0ea */ { false, 0xe0ea, 0xe0ea }, /* 0xe0eb */ { false, 0xe0eb, 0xe0eb }, /* 0xe0ec */ { false, 0xe0ec, 0xe0ec }, /* 0xe0ed */ { false, 0xe0ed, 0xe0ed }, /* 0xe0ee */ { false, 0xe0ee, 0xe0ee }, /* 0xe0ef */ { false, 0xe0ef, 0xe0ef }, /* 0xe0f0 */ { false, 0xe0f0, 0xe0f0 }, /* 0xe0f1 */ { false, 0xe0f1, 0xe0f1 }, /* 0xe0f2 */ { false, 0xe0f2, 0xe0f2 }, /* 0xe0f3 */ { false, 0xe0f3, 0xe0f3 }, /* 0xe0f4 */ { false, 0xe0f4, 0xe0f4 }, /* 0xe0f5 */ { false, 0xe0f5, 0xe0f5 }, /* 0xe0f6 */ { false, 0xe0f6, 0xe0f6 }, /* 0xe0f7 */ { false, 0xe0f7, 0xe0f7 }, /* 0xe0f8 */ { false, 0xe0f8, 0xe0f8 }, /* 0xe0f9 */ { false, 0xe0f9, 0xe0f9 }, /* 0xe0fa */ { false, 0xe0fa, 0xe0fa }, /* 0xe0fb */ { false, 0xe0fb, 0xe0fb }, /* 0xe0fc */ { false, 0xe0fc, 0xe0fc }, /* 0xe0fd */ { false, 0xe0fd, 0xe0fd }, /* 0xe0fe */ { false, 0xe0fe, 0xe0fe }, /* 0xe0ff */ { false, 0xe0ff, 0xe0ff }, /* 0xe100 */ { false, 0xe100, 0xe100 }, /* 0xe101 */ { false, 0xe101, 0xe101 }, /* 0xe102 */ { false, 0xe102, 0xe102 }, /* 0xe103 */ { false, 0xe103, 0xe103 }, /* 0xe104 */ { false, 0xe104, 0xe104 }, /* 0xe105 */ { false, 0xe105, 0xe105 }, /* 0xe106 */ { false, 0xe106, 0xe106 }, /* 0xe107 */ { false, 0xe107, 0xe107 }, /* 0xe108 */ { false, 0xe108, 0xe108 }, /* 0xe109 */ { false, 0xe109, 0xe109 }, /* 0xe10a */ { false, 0xe10a, 0xe10a }, /* 0xe10b */ { false, 0xe10b, 0xe10b }, /* 0xe10c */ { false, 0xe10c, 0xe10c }, /* 0xe10d */ { false, 0xe10d, 0xe10d }, /* 0xe10e */ { false, 0xe10e, 0xe10e }, /* 0xe10f */ { false, 0xe10f, 0xe10f }, /* 0xe110 */ { false, 0xe110, 0xe110 }, /* 0xe111 */ { false, 0xe111, 0xe111 }, /* 0xe112 */ { false, 0xe112, 0xe112 }, /* 0xe113 */ { false, 0xe113, 0xe113 }, /* 0xe114 */ { false, 0xe114, 0xe114 }, /* 0xe115 */ { false, 0xe115, 0xe115 }, /* 0xe116 */ { false, 0xe116, 0xe116 }, /* 0xe117 */ { false, 0xe117, 0xe117 }, /* 0xe118 */ { false, 0xe118, 0xe118 }, /* 0xe119 */ { false, 0xe119, 0xe119 }, /* 0xe11a */ { false, 0xe11a, 0xe11a }, /* 0xe11b */ { false, 0xe11b, 0xe11b }, /* 0xe11c */ { false, 0xe11c, 0xe11c }, /* 0xe11d */ { false, 0xe11d, 0xe11d }, /* 0xe11e */ { false, 0xe11e, 0xe11e }, /* 0xe11f */ { false, 0xe11f, 0xe11f }, /* 0xe120 */ { false, 0xe120, 0xe120 }, /* 0xe121 */ { false, 0xe121, 0xe121 }, /* 0xe122 */ { false, 0xe122, 0xe122 }, /* 0xe123 */ { false, 0xe123, 0xe123 }, /* 0xe124 */ { false, 0xe124, 0xe124 }, /* 0xe125 */ { false, 0xe125, 0xe125 }, /* 0xe126 */ { false, 0xe126, 0xe126 }, /* 0xe127 */ { false, 0xe127, 0xe127 }, /* 0xe128 */ { false, 0xe128, 0xe128 }, /* 0xe129 */ { false, 0xe129, 0xe129 }, /* 0xe12a */ { false, 0xe12a, 0xe12a }, /* 0xe12b */ { false, 0xe12b, 0xe12b }, /* 0xe12c */ { false, 0xe12c, 0xe12c }, /* 0xe12d */ { false, 0xe12d, 0xe12d }, /* 0xe12e */ { false, 0xe12e, 0xe12e }, /* 0xe12f */ { false, 0xe12f, 0xe12f }, /* 0xe130 */ { false, 0xe130, 0xe130 }, /* 0xe131 */ { false, 0xe131, 0xe131 }, /* 0xe132 */ { false, 0xe132, 0xe132 }, /* 0xe133 */ { false, 0xe133, 0xe133 }, /* 0xe134 */ { false, 0xe134, 0xe134 }, /* 0xe135 */ { false, 0xe135, 0xe135 }, /* 0xe136 */ { false, 0xe136, 0xe136 }, /* 0xe137 */ { false, 0xe137, 0xe137 }, /* 0xe138 */ { false, 0xe138, 0xe138 }, /* 0xe139 */ { false, 0xe139, 0xe139 }, /* 0xe13a */ { false, 0xe13a, 0xe13a }, /* 0xe13b */ { false, 0xe13b, 0xe13b }, /* 0xe13c */ { false, 0xe13c, 0xe13c }, /* 0xe13d */ { false, 0xe13d, 0xe13d }, /* 0xe13e */ { false, 0xe13e, 0xe13e }, /* 0xe13f */ { false, 0xe13f, 0xe13f }, /* 0xe140 */ { false, 0xe140, 0xe140 }, /* 0xe141 */ { false, 0xe141, 0xe141 }, /* 0xe142 */ { false, 0xe142, 0xe142 }, /* 0xe143 */ { false, 0xe143, 0xe143 }, /* 0xe144 */ { false, 0xe144, 0xe144 }, /* 0xe145 */ { false, 0xe145, 0xe145 }, /* 0xe146 */ { false, 0xe146, 0xe146 }, /* 0xe147 */ { false, 0xe147, 0xe147 }, /* 0xe148 */ { false, 0xe148, 0xe148 }, /* 0xe149 */ { false, 0xe149, 0xe149 }, /* 0xe14a */ { false, 0xe14a, 0xe14a }, /* 0xe14b */ { false, 0xe14b, 0xe14b }, /* 0xe14c */ { false, 0xe14c, 0xe14c }, /* 0xe14d */ { false, 0xe14d, 0xe14d }, /* 0xe14e */ { false, 0xe14e, 0xe14e }, /* 0xe14f */ { false, 0xe14f, 0xe14f }, /* 0xe150 */ { false, 0xe150, 0xe150 }, /* 0xe151 */ { false, 0xe151, 0xe151 }, /* 0xe152 */ { false, 0xe152, 0xe152 }, /* 0xe153 */ { false, 0xe153, 0xe153 }, /* 0xe154 */ { false, 0xe154, 0xe154 }, /* 0xe155 */ { false, 0xe155, 0xe155 }, /* 0xe156 */ { false, 0xe156, 0xe156 }, /* 0xe157 */ { false, 0xe157, 0xe157 }, /* 0xe158 */ { false, 0xe158, 0xe158 }, /* 0xe159 */ { false, 0xe159, 0xe159 }, /* 0xe15a */ { false, 0xe15a, 0xe15a }, /* 0xe15b */ { false, 0xe15b, 0xe15b }, /* 0xe15c */ { false, 0xe15c, 0xe15c }, /* 0xe15d */ { false, 0xe15d, 0xe15d }, /* 0xe15e */ { false, 0xe15e, 0xe15e }, /* 0xe15f */ { false, 0xe15f, 0xe15f }, /* 0xe160 */ { false, 0xe160, 0xe160 }, /* 0xe161 */ { false, 0xe161, 0xe161 }, /* 0xe162 */ { false, 0xe162, 0xe162 }, /* 0xe163 */ { false, 0xe163, 0xe163 }, /* 0xe164 */ { false, 0xe164, 0xe164 }, /* 0xe165 */ { false, 0xe165, 0xe165 }, /* 0xe166 */ { false, 0xe166, 0xe166 }, /* 0xe167 */ { false, 0xe167, 0xe167 }, /* 0xe168 */ { false, 0xe168, 0xe168 }, /* 0xe169 */ { false, 0xe169, 0xe169 }, /* 0xe16a */ { false, 0xe16a, 0xe16a }, /* 0xe16b */ { false, 0xe16b, 0xe16b }, /* 0xe16c */ { false, 0xe16c, 0xe16c }, /* 0xe16d */ { false, 0xe16d, 0xe16d }, /* 0xe16e */ { false, 0xe16e, 0xe16e }, /* 0xe16f */ { false, 0xe16f, 0xe16f }, /* 0xe170 */ { false, 0xe170, 0xe170 }, /* 0xe171 */ { false, 0xe171, 0xe171 }, /* 0xe172 */ { false, 0xe172, 0xe172 }, /* 0xe173 */ { false, 0xe173, 0xe173 }, /* 0xe174 */ { false, 0xe174, 0xe174 }, /* 0xe175 */ { false, 0xe175, 0xe175 }, /* 0xe176 */ { false, 0xe176, 0xe176 }, /* 0xe177 */ { false, 0xe177, 0xe177 }, /* 0xe178 */ { false, 0xe178, 0xe178 }, /* 0xe179 */ { false, 0xe179, 0xe179 }, /* 0xe17a */ { false, 0xe17a, 0xe17a }, /* 0xe17b */ { false, 0xe17b, 0xe17b }, /* 0xe17c */ { false, 0xe17c, 0xe17c }, /* 0xe17d */ { false, 0xe17d, 0xe17d }, /* 0xe17e */ { false, 0xe17e, 0xe17e }, /* 0xe17f */ { false, 0xe17f, 0xe17f }, /* 0xe180 */ { false, 0xe180, 0xe180 }, /* 0xe181 */ { false, 0xe181, 0xe181 }, /* 0xe182 */ { false, 0xe182, 0xe182 }, /* 0xe183 */ { false, 0xe183, 0xe183 }, /* 0xe184 */ { false, 0xe184, 0xe184 }, /* 0xe185 */ { false, 0xe185, 0xe185 }, /* 0xe186 */ { false, 0xe186, 0xe186 }, /* 0xe187 */ { false, 0xe187, 0xe187 }, /* 0xe188 */ { false, 0xe188, 0xe188 }, /* 0xe189 */ { false, 0xe189, 0xe189 }, /* 0xe18a */ { false, 0xe18a, 0xe18a }, /* 0xe18b */ { false, 0xe18b, 0xe18b }, /* 0xe18c */ { false, 0xe18c, 0xe18c }, /* 0xe18d */ { false, 0xe18d, 0xe18d }, /* 0xe18e */ { false, 0xe18e, 0xe18e }, /* 0xe18f */ { false, 0xe18f, 0xe18f }, /* 0xe190 */ { false, 0xe190, 0xe190 }, /* 0xe191 */ { false, 0xe191, 0xe191 }, /* 0xe192 */ { false, 0xe192, 0xe192 }, /* 0xe193 */ { false, 0xe193, 0xe193 }, /* 0xe194 */ { false, 0xe194, 0xe194 }, /* 0xe195 */ { false, 0xe195, 0xe195 }, /* 0xe196 */ { false, 0xe196, 0xe196 }, /* 0xe197 */ { false, 0xe197, 0xe197 }, /* 0xe198 */ { false, 0xe198, 0xe198 }, /* 0xe199 */ { false, 0xe199, 0xe199 }, /* 0xe19a */ { false, 0xe19a, 0xe19a }, /* 0xe19b */ { false, 0xe19b, 0xe19b }, /* 0xe19c */ { false, 0xe19c, 0xe19c }, /* 0xe19d */ { false, 0xe19d, 0xe19d }, /* 0xe19e */ { false, 0xe19e, 0xe19e }, /* 0xe19f */ { false, 0xe19f, 0xe19f }, /* 0xe1a0 */ { false, 0xe1a0, 0xe1a0 }, /* 0xe1a1 */ { false, 0xe1a1, 0xe1a1 }, /* 0xe1a2 */ { false, 0xe1a2, 0xe1a2 }, /* 0xe1a3 */ { false, 0xe1a3, 0xe1a3 }, /* 0xe1a4 */ { false, 0xe1a4, 0xe1a4 }, /* 0xe1a5 */ { false, 0xe1a5, 0xe1a5 }, /* 0xe1a6 */ { false, 0xe1a6, 0xe1a6 }, /* 0xe1a7 */ { false, 0xe1a7, 0xe1a7 }, /* 0xe1a8 */ { false, 0xe1a8, 0xe1a8 }, /* 0xe1a9 */ { false, 0xe1a9, 0xe1a9 }, /* 0xe1aa */ { false, 0xe1aa, 0xe1aa }, /* 0xe1ab */ { false, 0xe1ab, 0xe1ab }, /* 0xe1ac */ { false, 0xe1ac, 0xe1ac }, /* 0xe1ad */ { false, 0xe1ad, 0xe1ad }, /* 0xe1ae */ { false, 0xe1ae, 0xe1ae }, /* 0xe1af */ { false, 0xe1af, 0xe1af }, /* 0xe1b0 */ { false, 0xe1b0, 0xe1b0 }, /* 0xe1b1 */ { false, 0xe1b1, 0xe1b1 }, /* 0xe1b2 */ { false, 0xe1b2, 0xe1b2 }, /* 0xe1b3 */ { false, 0xe1b3, 0xe1b3 }, /* 0xe1b4 */ { false, 0xe1b4, 0xe1b4 }, /* 0xe1b5 */ { false, 0xe1b5, 0xe1b5 }, /* 0xe1b6 */ { false, 0xe1b6, 0xe1b6 }, /* 0xe1b7 */ { false, 0xe1b7, 0xe1b7 }, /* 0xe1b8 */ { false, 0xe1b8, 0xe1b8 }, /* 0xe1b9 */ { false, 0xe1b9, 0xe1b9 }, /* 0xe1ba */ { false, 0xe1ba, 0xe1ba }, /* 0xe1bb */ { false, 0xe1bb, 0xe1bb }, /* 0xe1bc */ { false, 0xe1bc, 0xe1bc }, /* 0xe1bd */ { false, 0xe1bd, 0xe1bd }, /* 0xe1be */ { false, 0xe1be, 0xe1be }, /* 0xe1bf */ { false, 0xe1bf, 0xe1bf }, /* 0xe1c0 */ { false, 0xe1c0, 0xe1c0 }, /* 0xe1c1 */ { false, 0xe1c1, 0xe1c1 }, /* 0xe1c2 */ { false, 0xe1c2, 0xe1c2 }, /* 0xe1c3 */ { false, 0xe1c3, 0xe1c3 }, /* 0xe1c4 */ { false, 0xe1c4, 0xe1c4 }, /* 0xe1c5 */ { false, 0xe1c5, 0xe1c5 }, /* 0xe1c6 */ { false, 0xe1c6, 0xe1c6 }, /* 0xe1c7 */ { false, 0xe1c7, 0xe1c7 }, /* 0xe1c8 */ { false, 0xe1c8, 0xe1c8 }, /* 0xe1c9 */ { false, 0xe1c9, 0xe1c9 }, /* 0xe1ca */ { false, 0xe1ca, 0xe1ca }, /* 0xe1cb */ { false, 0xe1cb, 0xe1cb }, /* 0xe1cc */ { false, 0xe1cc, 0xe1cc }, /* 0xe1cd */ { false, 0xe1cd, 0xe1cd }, /* 0xe1ce */ { false, 0xe1ce, 0xe1ce }, /* 0xe1cf */ { false, 0xe1cf, 0xe1cf }, /* 0xe1d0 */ { false, 0xe1d0, 0xe1d0 }, /* 0xe1d1 */ { false, 0xe1d1, 0xe1d1 }, /* 0xe1d2 */ { false, 0xe1d2, 0xe1d2 }, /* 0xe1d3 */ { false, 0xe1d3, 0xe1d3 }, /* 0xe1d4 */ { false, 0xe1d4, 0xe1d4 }, /* 0xe1d5 */ { false, 0xe1d5, 0xe1d5 }, /* 0xe1d6 */ { false, 0xe1d6, 0xe1d6 }, /* 0xe1d7 */ { false, 0xe1d7, 0xe1d7 }, /* 0xe1d8 */ { false, 0xe1d8, 0xe1d8 }, /* 0xe1d9 */ { false, 0xe1d9, 0xe1d9 }, /* 0xe1da */ { false, 0xe1da, 0xe1da }, /* 0xe1db */ { false, 0xe1db, 0xe1db }, /* 0xe1dc */ { false, 0xe1dc, 0xe1dc }, /* 0xe1dd */ { false, 0xe1dd, 0xe1dd }, /* 0xe1de */ { false, 0xe1de, 0xe1de }, /* 0xe1df */ { false, 0xe1df, 0xe1df }, /* 0xe1e0 */ { false, 0xe1e0, 0xe1e0 }, /* 0xe1e1 */ { false, 0xe1e1, 0xe1e1 }, /* 0xe1e2 */ { false, 0xe1e2, 0xe1e2 }, /* 0xe1e3 */ { false, 0xe1e3, 0xe1e3 }, /* 0xe1e4 */ { false, 0xe1e4, 0xe1e4 }, /* 0xe1e5 */ { false, 0xe1e5, 0xe1e5 }, /* 0xe1e6 */ { false, 0xe1e6, 0xe1e6 }, /* 0xe1e7 */ { false, 0xe1e7, 0xe1e7 }, /* 0xe1e8 */ { false, 0xe1e8, 0xe1e8 }, /* 0xe1e9 */ { false, 0xe1e9, 0xe1e9 }, /* 0xe1ea */ { false, 0xe1ea, 0xe1ea }, /* 0xe1eb */ { false, 0xe1eb, 0xe1eb }, /* 0xe1ec */ { false, 0xe1ec, 0xe1ec }, /* 0xe1ed */ { false, 0xe1ed, 0xe1ed }, /* 0xe1ee */ { false, 0xe1ee, 0xe1ee }, /* 0xe1ef */ { false, 0xe1ef, 0xe1ef }, /* 0xe1f0 */ { false, 0xe1f0, 0xe1f0 }, /* 0xe1f1 */ { false, 0xe1f1, 0xe1f1 }, /* 0xe1f2 */ { false, 0xe1f2, 0xe1f2 }, /* 0xe1f3 */ { false, 0xe1f3, 0xe1f3 }, /* 0xe1f4 */ { false, 0xe1f4, 0xe1f4 }, /* 0xe1f5 */ { false, 0xe1f5, 0xe1f5 }, /* 0xe1f6 */ { false, 0xe1f6, 0xe1f6 }, /* 0xe1f7 */ { false, 0xe1f7, 0xe1f7 }, /* 0xe1f8 */ { false, 0xe1f8, 0xe1f8 }, /* 0xe1f9 */ { false, 0xe1f9, 0xe1f9 }, /* 0xe1fa */ { false, 0xe1fa, 0xe1fa }, /* 0xe1fb */ { false, 0xe1fb, 0xe1fb }, /* 0xe1fc */ { false, 0xe1fc, 0xe1fc }, /* 0xe1fd */ { false, 0xe1fd, 0xe1fd }, /* 0xe1fe */ { false, 0xe1fe, 0xe1fe }, /* 0xe1ff */ { false, 0xe1ff, 0xe1ff }, /* 0xe200 */ { false, 0xe200, 0xe200 }, /* 0xe201 */ { false, 0xe201, 0xe201 }, /* 0xe202 */ { false, 0xe202, 0xe202 }, /* 0xe203 */ { false, 0xe203, 0xe203 }, /* 0xe204 */ { false, 0xe204, 0xe204 }, /* 0xe205 */ { false, 0xe205, 0xe205 }, /* 0xe206 */ { false, 0xe206, 0xe206 }, /* 0xe207 */ { false, 0xe207, 0xe207 }, /* 0xe208 */ { false, 0xe208, 0xe208 }, /* 0xe209 */ { false, 0xe209, 0xe209 }, /* 0xe20a */ { false, 0xe20a, 0xe20a }, /* 0xe20b */ { false, 0xe20b, 0xe20b }, /* 0xe20c */ { false, 0xe20c, 0xe20c }, /* 0xe20d */ { false, 0xe20d, 0xe20d }, /* 0xe20e */ { false, 0xe20e, 0xe20e }, /* 0xe20f */ { false, 0xe20f, 0xe20f }, /* 0xe210 */ { false, 0xe210, 0xe210 }, /* 0xe211 */ { false, 0xe211, 0xe211 }, /* 0xe212 */ { false, 0xe212, 0xe212 }, /* 0xe213 */ { false, 0xe213, 0xe213 }, /* 0xe214 */ { false, 0xe214, 0xe214 }, /* 0xe215 */ { false, 0xe215, 0xe215 }, /* 0xe216 */ { false, 0xe216, 0xe216 }, /* 0xe217 */ { false, 0xe217, 0xe217 }, /* 0xe218 */ { false, 0xe218, 0xe218 }, /* 0xe219 */ { false, 0xe219, 0xe219 }, /* 0xe21a */ { false, 0xe21a, 0xe21a }, /* 0xe21b */ { false, 0xe21b, 0xe21b }, /* 0xe21c */ { false, 0xe21c, 0xe21c }, /* 0xe21d */ { false, 0xe21d, 0xe21d }, /* 0xe21e */ { false, 0xe21e, 0xe21e }, /* 0xe21f */ { false, 0xe21f, 0xe21f }, /* 0xe220 */ { false, 0xe220, 0xe220 }, /* 0xe221 */ { false, 0xe221, 0xe221 }, /* 0xe222 */ { false, 0xe222, 0xe222 }, /* 0xe223 */ { false, 0xe223, 0xe223 }, /* 0xe224 */ { false, 0xe224, 0xe224 }, /* 0xe225 */ { false, 0xe225, 0xe225 }, /* 0xe226 */ { false, 0xe226, 0xe226 }, /* 0xe227 */ { false, 0xe227, 0xe227 }, /* 0xe228 */ { false, 0xe228, 0xe228 }, /* 0xe229 */ { false, 0xe229, 0xe229 }, /* 0xe22a */ { false, 0xe22a, 0xe22a }, /* 0xe22b */ { false, 0xe22b, 0xe22b }, /* 0xe22c */ { false, 0xe22c, 0xe22c }, /* 0xe22d */ { false, 0xe22d, 0xe22d }, /* 0xe22e */ { false, 0xe22e, 0xe22e }, /* 0xe22f */ { false, 0xe22f, 0xe22f }, /* 0xe230 */ { false, 0xe230, 0xe230 }, /* 0xe231 */ { false, 0xe231, 0xe231 }, /* 0xe232 */ { false, 0xe232, 0xe232 }, /* 0xe233 */ { false, 0xe233, 0xe233 }, /* 0xe234 */ { false, 0xe234, 0xe234 }, /* 0xe235 */ { false, 0xe235, 0xe235 }, /* 0xe236 */ { false, 0xe236, 0xe236 }, /* 0xe237 */ { false, 0xe237, 0xe237 }, /* 0xe238 */ { false, 0xe238, 0xe238 }, /* 0xe239 */ { false, 0xe239, 0xe239 }, /* 0xe23a */ { false, 0xe23a, 0xe23a }, /* 0xe23b */ { false, 0xe23b, 0xe23b }, /* 0xe23c */ { false, 0xe23c, 0xe23c }, /* 0xe23d */ { false, 0xe23d, 0xe23d }, /* 0xe23e */ { false, 0xe23e, 0xe23e }, /* 0xe23f */ { false, 0xe23f, 0xe23f }, /* 0xe240 */ { false, 0xe240, 0xe240 }, /* 0xe241 */ { false, 0xe241, 0xe241 }, /* 0xe242 */ { false, 0xe242, 0xe242 }, /* 0xe243 */ { false, 0xe243, 0xe243 }, /* 0xe244 */ { false, 0xe244, 0xe244 }, /* 0xe245 */ { false, 0xe245, 0xe245 }, /* 0xe246 */ { false, 0xe246, 0xe246 }, /* 0xe247 */ { false, 0xe247, 0xe247 }, /* 0xe248 */ { false, 0xe248, 0xe248 }, /* 0xe249 */ { false, 0xe249, 0xe249 }, /* 0xe24a */ { false, 0xe24a, 0xe24a }, /* 0xe24b */ { false, 0xe24b, 0xe24b }, /* 0xe24c */ { false, 0xe24c, 0xe24c }, /* 0xe24d */ { false, 0xe24d, 0xe24d }, /* 0xe24e */ { false, 0xe24e, 0xe24e }, /* 0xe24f */ { false, 0xe24f, 0xe24f }, /* 0xe250 */ { false, 0xe250, 0xe250 }, /* 0xe251 */ { false, 0xe251, 0xe251 }, /* 0xe252 */ { false, 0xe252, 0xe252 }, /* 0xe253 */ { false, 0xe253, 0xe253 }, /* 0xe254 */ { false, 0xe254, 0xe254 }, /* 0xe255 */ { false, 0xe255, 0xe255 }, /* 0xe256 */ { false, 0xe256, 0xe256 }, /* 0xe257 */ { false, 0xe257, 0xe257 }, /* 0xe258 */ { false, 0xe258, 0xe258 }, /* 0xe259 */ { false, 0xe259, 0xe259 }, /* 0xe25a */ { false, 0xe25a, 0xe25a }, /* 0xe25b */ { false, 0xe25b, 0xe25b }, /* 0xe25c */ { false, 0xe25c, 0xe25c }, /* 0xe25d */ { false, 0xe25d, 0xe25d }, /* 0xe25e */ { false, 0xe25e, 0xe25e }, /* 0xe25f */ { false, 0xe25f, 0xe25f }, /* 0xe260 */ { false, 0xe260, 0xe260 }, /* 0xe261 */ { false, 0xe261, 0xe261 }, /* 0xe262 */ { false, 0xe262, 0xe262 }, /* 0xe263 */ { false, 0xe263, 0xe263 }, /* 0xe264 */ { false, 0xe264, 0xe264 }, /* 0xe265 */ { false, 0xe265, 0xe265 }, /* 0xe266 */ { false, 0xe266, 0xe266 }, /* 0xe267 */ { false, 0xe267, 0xe267 }, /* 0xe268 */ { false, 0xe268, 0xe268 }, /* 0xe269 */ { false, 0xe269, 0xe269 }, /* 0xe26a */ { false, 0xe26a, 0xe26a }, /* 0xe26b */ { false, 0xe26b, 0xe26b }, /* 0xe26c */ { false, 0xe26c, 0xe26c }, /* 0xe26d */ { false, 0xe26d, 0xe26d }, /* 0xe26e */ { false, 0xe26e, 0xe26e }, /* 0xe26f */ { false, 0xe26f, 0xe26f }, /* 0xe270 */ { false, 0xe270, 0xe270 }, /* 0xe271 */ { false, 0xe271, 0xe271 }, /* 0xe272 */ { false, 0xe272, 0xe272 }, /* 0xe273 */ { false, 0xe273, 0xe273 }, /* 0xe274 */ { false, 0xe274, 0xe274 }, /* 0xe275 */ { false, 0xe275, 0xe275 }, /* 0xe276 */ { false, 0xe276, 0xe276 }, /* 0xe277 */ { false, 0xe277, 0xe277 }, /* 0xe278 */ { false, 0xe278, 0xe278 }, /* 0xe279 */ { false, 0xe279, 0xe279 }, /* 0xe27a */ { false, 0xe27a, 0xe27a }, /* 0xe27b */ { false, 0xe27b, 0xe27b }, /* 0xe27c */ { false, 0xe27c, 0xe27c }, /* 0xe27d */ { false, 0xe27d, 0xe27d }, /* 0xe27e */ { false, 0xe27e, 0xe27e }, /* 0xe27f */ { false, 0xe27f, 0xe27f }, /* 0xe280 */ { false, 0xe280, 0xe280 }, /* 0xe281 */ { false, 0xe281, 0xe281 }, /* 0xe282 */ { false, 0xe282, 0xe282 }, /* 0xe283 */ { false, 0xe283, 0xe283 }, /* 0xe284 */ { false, 0xe284, 0xe284 }, /* 0xe285 */ { false, 0xe285, 0xe285 }, /* 0xe286 */ { false, 0xe286, 0xe286 }, /* 0xe287 */ { false, 0xe287, 0xe287 }, /* 0xe288 */ { false, 0xe288, 0xe288 }, /* 0xe289 */ { false, 0xe289, 0xe289 }, /* 0xe28a */ { false, 0xe28a, 0xe28a }, /* 0xe28b */ { false, 0xe28b, 0xe28b }, /* 0xe28c */ { false, 0xe28c, 0xe28c }, /* 0xe28d */ { false, 0xe28d, 0xe28d }, /* 0xe28e */ { false, 0xe28e, 0xe28e }, /* 0xe28f */ { false, 0xe28f, 0xe28f }, /* 0xe290 */ { false, 0xe290, 0xe290 }, /* 0xe291 */ { false, 0xe291, 0xe291 }, /* 0xe292 */ { false, 0xe292, 0xe292 }, /* 0xe293 */ { false, 0xe293, 0xe293 }, /* 0xe294 */ { false, 0xe294, 0xe294 }, /* 0xe295 */ { false, 0xe295, 0xe295 }, /* 0xe296 */ { false, 0xe296, 0xe296 }, /* 0xe297 */ { false, 0xe297, 0xe297 }, /* 0xe298 */ { false, 0xe298, 0xe298 }, /* 0xe299 */ { false, 0xe299, 0xe299 }, /* 0xe29a */ { false, 0xe29a, 0xe29a }, /* 0xe29b */ { false, 0xe29b, 0xe29b }, /* 0xe29c */ { false, 0xe29c, 0xe29c }, /* 0xe29d */ { false, 0xe29d, 0xe29d }, /* 0xe29e */ { false, 0xe29e, 0xe29e }, /* 0xe29f */ { false, 0xe29f, 0xe29f }, /* 0xe2a0 */ { false, 0xe2a0, 0xe2a0 }, /* 0xe2a1 */ { false, 0xe2a1, 0xe2a1 }, /* 0xe2a2 */ { false, 0xe2a2, 0xe2a2 }, /* 0xe2a3 */ { false, 0xe2a3, 0xe2a3 }, /* 0xe2a4 */ { false, 0xe2a4, 0xe2a4 }, /* 0xe2a5 */ { false, 0xe2a5, 0xe2a5 }, /* 0xe2a6 */ { false, 0xe2a6, 0xe2a6 }, /* 0xe2a7 */ { false, 0xe2a7, 0xe2a7 }, /* 0xe2a8 */ { false, 0xe2a8, 0xe2a8 }, /* 0xe2a9 */ { false, 0xe2a9, 0xe2a9 }, /* 0xe2aa */ { false, 0xe2aa, 0xe2aa }, /* 0xe2ab */ { false, 0xe2ab, 0xe2ab }, /* 0xe2ac */ { false, 0xe2ac, 0xe2ac }, /* 0xe2ad */ { false, 0xe2ad, 0xe2ad }, /* 0xe2ae */ { false, 0xe2ae, 0xe2ae }, /* 0xe2af */ { false, 0xe2af, 0xe2af }, /* 0xe2b0 */ { false, 0xe2b0, 0xe2b0 }, /* 0xe2b1 */ { false, 0xe2b1, 0xe2b1 }, /* 0xe2b2 */ { false, 0xe2b2, 0xe2b2 }, /* 0xe2b3 */ { false, 0xe2b3, 0xe2b3 }, /* 0xe2b4 */ { false, 0xe2b4, 0xe2b4 }, /* 0xe2b5 */ { false, 0xe2b5, 0xe2b5 }, /* 0xe2b6 */ { false, 0xe2b6, 0xe2b6 }, /* 0xe2b7 */ { false, 0xe2b7, 0xe2b7 }, /* 0xe2b8 */ { false, 0xe2b8, 0xe2b8 }, /* 0xe2b9 */ { false, 0xe2b9, 0xe2b9 }, /* 0xe2ba */ { false, 0xe2ba, 0xe2ba }, /* 0xe2bb */ { false, 0xe2bb, 0xe2bb }, /* 0xe2bc */ { false, 0xe2bc, 0xe2bc }, /* 0xe2bd */ { false, 0xe2bd, 0xe2bd }, /* 0xe2be */ { false, 0xe2be, 0xe2be }, /* 0xe2bf */ { false, 0xe2bf, 0xe2bf }, /* 0xe2c0 */ { false, 0xe2c0, 0xe2c0 }, /* 0xe2c1 */ { false, 0xe2c1, 0xe2c1 }, /* 0xe2c2 */ { false, 0xe2c2, 0xe2c2 }, /* 0xe2c3 */ { false, 0xe2c3, 0xe2c3 }, /* 0xe2c4 */ { false, 0xe2c4, 0xe2c4 }, /* 0xe2c5 */ { false, 0xe2c5, 0xe2c5 }, /* 0xe2c6 */ { false, 0xe2c6, 0xe2c6 }, /* 0xe2c7 */ { false, 0xe2c7, 0xe2c7 }, /* 0xe2c8 */ { false, 0xe2c8, 0xe2c8 }, /* 0xe2c9 */ { false, 0xe2c9, 0xe2c9 }, /* 0xe2ca */ { false, 0xe2ca, 0xe2ca }, /* 0xe2cb */ { false, 0xe2cb, 0xe2cb }, /* 0xe2cc */ { false, 0xe2cc, 0xe2cc }, /* 0xe2cd */ { false, 0xe2cd, 0xe2cd }, /* 0xe2ce */ { false, 0xe2ce, 0xe2ce }, /* 0xe2cf */ { false, 0xe2cf, 0xe2cf }, /* 0xe2d0 */ { false, 0xe2d0, 0xe2d0 }, /* 0xe2d1 */ { false, 0xe2d1, 0xe2d1 }, /* 0xe2d2 */ { false, 0xe2d2, 0xe2d2 }, /* 0xe2d3 */ { false, 0xe2d3, 0xe2d3 }, /* 0xe2d4 */ { false, 0xe2d4, 0xe2d4 }, /* 0xe2d5 */ { false, 0xe2d5, 0xe2d5 }, /* 0xe2d6 */ { false, 0xe2d6, 0xe2d6 }, /* 0xe2d7 */ { false, 0xe2d7, 0xe2d7 }, /* 0xe2d8 */ { false, 0xe2d8, 0xe2d8 }, /* 0xe2d9 */ { false, 0xe2d9, 0xe2d9 }, /* 0xe2da */ { false, 0xe2da, 0xe2da }, /* 0xe2db */ { false, 0xe2db, 0xe2db }, /* 0xe2dc */ { false, 0xe2dc, 0xe2dc }, /* 0xe2dd */ { false, 0xe2dd, 0xe2dd }, /* 0xe2de */ { false, 0xe2de, 0xe2de }, /* 0xe2df */ { false, 0xe2df, 0xe2df }, /* 0xe2e0 */ { false, 0xe2e0, 0xe2e0 }, /* 0xe2e1 */ { false, 0xe2e1, 0xe2e1 }, /* 0xe2e2 */ { false, 0xe2e2, 0xe2e2 }, /* 0xe2e3 */ { false, 0xe2e3, 0xe2e3 }, /* 0xe2e4 */ { false, 0xe2e4, 0xe2e4 }, /* 0xe2e5 */ { false, 0xe2e5, 0xe2e5 }, /* 0xe2e6 */ { false, 0xe2e6, 0xe2e6 }, /* 0xe2e7 */ { false, 0xe2e7, 0xe2e7 }, /* 0xe2e8 */ { false, 0xe2e8, 0xe2e8 }, /* 0xe2e9 */ { false, 0xe2e9, 0xe2e9 }, /* 0xe2ea */ { false, 0xe2ea, 0xe2ea }, /* 0xe2eb */ { false, 0xe2eb, 0xe2eb }, /* 0xe2ec */ { false, 0xe2ec, 0xe2ec }, /* 0xe2ed */ { false, 0xe2ed, 0xe2ed }, /* 0xe2ee */ { false, 0xe2ee, 0xe2ee }, /* 0xe2ef */ { false, 0xe2ef, 0xe2ef }, /* 0xe2f0 */ { false, 0xe2f0, 0xe2f0 }, /* 0xe2f1 */ { false, 0xe2f1, 0xe2f1 }, /* 0xe2f2 */ { false, 0xe2f2, 0xe2f2 }, /* 0xe2f3 */ { false, 0xe2f3, 0xe2f3 }, /* 0xe2f4 */ { false, 0xe2f4, 0xe2f4 }, /* 0xe2f5 */ { false, 0xe2f5, 0xe2f5 }, /* 0xe2f6 */ { false, 0xe2f6, 0xe2f6 }, /* 0xe2f7 */ { false, 0xe2f7, 0xe2f7 }, /* 0xe2f8 */ { false, 0xe2f8, 0xe2f8 }, /* 0xe2f9 */ { false, 0xe2f9, 0xe2f9 }, /* 0xe2fa */ { false, 0xe2fa, 0xe2fa }, /* 0xe2fb */ { false, 0xe2fb, 0xe2fb }, /* 0xe2fc */ { false, 0xe2fc, 0xe2fc }, /* 0xe2fd */ { false, 0xe2fd, 0xe2fd }, /* 0xe2fe */ { false, 0xe2fe, 0xe2fe }, /* 0xe2ff */ { false, 0xe2ff, 0xe2ff }, /* 0xe300 */ { false, 0xe300, 0xe300 }, /* 0xe301 */ { false, 0xe301, 0xe301 }, /* 0xe302 */ { false, 0xe302, 0xe302 }, /* 0xe303 */ { false, 0xe303, 0xe303 }, /* 0xe304 */ { false, 0xe304, 0xe304 }, /* 0xe305 */ { false, 0xe305, 0xe305 }, /* 0xe306 */ { false, 0xe306, 0xe306 }, /* 0xe307 */ { false, 0xe307, 0xe307 }, /* 0xe308 */ { false, 0xe308, 0xe308 }, /* 0xe309 */ { false, 0xe309, 0xe309 }, /* 0xe30a */ { false, 0xe30a, 0xe30a }, /* 0xe30b */ { false, 0xe30b, 0xe30b }, /* 0xe30c */ { false, 0xe30c, 0xe30c }, /* 0xe30d */ { false, 0xe30d, 0xe30d }, /* 0xe30e */ { false, 0xe30e, 0xe30e }, /* 0xe30f */ { false, 0xe30f, 0xe30f }, /* 0xe310 */ { false, 0xe310, 0xe310 }, /* 0xe311 */ { false, 0xe311, 0xe311 }, /* 0xe312 */ { false, 0xe312, 0xe312 }, /* 0xe313 */ { false, 0xe313, 0xe313 }, /* 0xe314 */ { false, 0xe314, 0xe314 }, /* 0xe315 */ { false, 0xe315, 0xe315 }, /* 0xe316 */ { false, 0xe316, 0xe316 }, /* 0xe317 */ { false, 0xe317, 0xe317 }, /* 0xe318 */ { false, 0xe318, 0xe318 }, /* 0xe319 */ { false, 0xe319, 0xe319 }, /* 0xe31a */ { false, 0xe31a, 0xe31a }, /* 0xe31b */ { false, 0xe31b, 0xe31b }, /* 0xe31c */ { false, 0xe31c, 0xe31c }, /* 0xe31d */ { false, 0xe31d, 0xe31d }, /* 0xe31e */ { false, 0xe31e, 0xe31e }, /* 0xe31f */ { false, 0xe31f, 0xe31f }, /* 0xe320 */ { false, 0xe320, 0xe320 }, /* 0xe321 */ { false, 0xe321, 0xe321 }, /* 0xe322 */ { false, 0xe322, 0xe322 }, /* 0xe323 */ { false, 0xe323, 0xe323 }, /* 0xe324 */ { false, 0xe324, 0xe324 }, /* 0xe325 */ { false, 0xe325, 0xe325 }, /* 0xe326 */ { false, 0xe326, 0xe326 }, /* 0xe327 */ { false, 0xe327, 0xe327 }, /* 0xe328 */ { false, 0xe328, 0xe328 }, /* 0xe329 */ { false, 0xe329, 0xe329 }, /* 0xe32a */ { false, 0xe32a, 0xe32a }, /* 0xe32b */ { false, 0xe32b, 0xe32b }, /* 0xe32c */ { false, 0xe32c, 0xe32c }, /* 0xe32d */ { false, 0xe32d, 0xe32d }, /* 0xe32e */ { false, 0xe32e, 0xe32e }, /* 0xe32f */ { false, 0xe32f, 0xe32f }, /* 0xe330 */ { false, 0xe330, 0xe330 }, /* 0xe331 */ { false, 0xe331, 0xe331 }, /* 0xe332 */ { false, 0xe332, 0xe332 }, /* 0xe333 */ { false, 0xe333, 0xe333 }, /* 0xe334 */ { false, 0xe334, 0xe334 }, /* 0xe335 */ { false, 0xe335, 0xe335 }, /* 0xe336 */ { false, 0xe336, 0xe336 }, /* 0xe337 */ { false, 0xe337, 0xe337 }, /* 0xe338 */ { false, 0xe338, 0xe338 }, /* 0xe339 */ { false, 0xe339, 0xe339 }, /* 0xe33a */ { false, 0xe33a, 0xe33a }, /* 0xe33b */ { false, 0xe33b, 0xe33b }, /* 0xe33c */ { false, 0xe33c, 0xe33c }, /* 0xe33d */ { false, 0xe33d, 0xe33d }, /* 0xe33e */ { false, 0xe33e, 0xe33e }, /* 0xe33f */ { false, 0xe33f, 0xe33f }, /* 0xe340 */ { false, 0xe340, 0xe340 }, /* 0xe341 */ { false, 0xe341, 0xe341 }, /* 0xe342 */ { false, 0xe342, 0xe342 }, /* 0xe343 */ { false, 0xe343, 0xe343 }, /* 0xe344 */ { false, 0xe344, 0xe344 }, /* 0xe345 */ { false, 0xe345, 0xe345 }, /* 0xe346 */ { false, 0xe346, 0xe346 }, /* 0xe347 */ { false, 0xe347, 0xe347 }, /* 0xe348 */ { false, 0xe348, 0xe348 }, /* 0xe349 */ { false, 0xe349, 0xe349 }, /* 0xe34a */ { false, 0xe34a, 0xe34a }, /* 0xe34b */ { false, 0xe34b, 0xe34b }, /* 0xe34c */ { false, 0xe34c, 0xe34c }, /* 0xe34d */ { false, 0xe34d, 0xe34d }, /* 0xe34e */ { false, 0xe34e, 0xe34e }, /* 0xe34f */ { false, 0xe34f, 0xe34f }, /* 0xe350 */ { false, 0xe350, 0xe350 }, /* 0xe351 */ { false, 0xe351, 0xe351 }, /* 0xe352 */ { false, 0xe352, 0xe352 }, /* 0xe353 */ { false, 0xe353, 0xe353 }, /* 0xe354 */ { false, 0xe354, 0xe354 }, /* 0xe355 */ { false, 0xe355, 0xe355 }, /* 0xe356 */ { false, 0xe356, 0xe356 }, /* 0xe357 */ { false, 0xe357, 0xe357 }, /* 0xe358 */ { false, 0xe358, 0xe358 }, /* 0xe359 */ { false, 0xe359, 0xe359 }, /* 0xe35a */ { false, 0xe35a, 0xe35a }, /* 0xe35b */ { false, 0xe35b, 0xe35b }, /* 0xe35c */ { false, 0xe35c, 0xe35c }, /* 0xe35d */ { false, 0xe35d, 0xe35d }, /* 0xe35e */ { false, 0xe35e, 0xe35e }, /* 0xe35f */ { false, 0xe35f, 0xe35f }, /* 0xe360 */ { false, 0xe360, 0xe360 }, /* 0xe361 */ { false, 0xe361, 0xe361 }, /* 0xe362 */ { false, 0xe362, 0xe362 }, /* 0xe363 */ { false, 0xe363, 0xe363 }, /* 0xe364 */ { false, 0xe364, 0xe364 }, /* 0xe365 */ { false, 0xe365, 0xe365 }, /* 0xe366 */ { false, 0xe366, 0xe366 }, /* 0xe367 */ { false, 0xe367, 0xe367 }, /* 0xe368 */ { false, 0xe368, 0xe368 }, /* 0xe369 */ { false, 0xe369, 0xe369 }, /* 0xe36a */ { false, 0xe36a, 0xe36a }, /* 0xe36b */ { false, 0xe36b, 0xe36b }, /* 0xe36c */ { false, 0xe36c, 0xe36c }, /* 0xe36d */ { false, 0xe36d, 0xe36d }, /* 0xe36e */ { false, 0xe36e, 0xe36e }, /* 0xe36f */ { false, 0xe36f, 0xe36f }, /* 0xe370 */ { false, 0xe370, 0xe370 }, /* 0xe371 */ { false, 0xe371, 0xe371 }, /* 0xe372 */ { false, 0xe372, 0xe372 }, /* 0xe373 */ { false, 0xe373, 0xe373 }, /* 0xe374 */ { false, 0xe374, 0xe374 }, /* 0xe375 */ { false, 0xe375, 0xe375 }, /* 0xe376 */ { false, 0xe376, 0xe376 }, /* 0xe377 */ { false, 0xe377, 0xe377 }, /* 0xe378 */ { false, 0xe378, 0xe378 }, /* 0xe379 */ { false, 0xe379, 0xe379 }, /* 0xe37a */ { false, 0xe37a, 0xe37a }, /* 0xe37b */ { false, 0xe37b, 0xe37b }, /* 0xe37c */ { false, 0xe37c, 0xe37c }, /* 0xe37d */ { false, 0xe37d, 0xe37d }, /* 0xe37e */ { false, 0xe37e, 0xe37e }, /* 0xe37f */ { false, 0xe37f, 0xe37f }, /* 0xe380 */ { false, 0xe380, 0xe380 }, /* 0xe381 */ { false, 0xe381, 0xe381 }, /* 0xe382 */ { false, 0xe382, 0xe382 }, /* 0xe383 */ { false, 0xe383, 0xe383 }, /* 0xe384 */ { false, 0xe384, 0xe384 }, /* 0xe385 */ { false, 0xe385, 0xe385 }, /* 0xe386 */ { false, 0xe386, 0xe386 }, /* 0xe387 */ { false, 0xe387, 0xe387 }, /* 0xe388 */ { false, 0xe388, 0xe388 }, /* 0xe389 */ { false, 0xe389, 0xe389 }, /* 0xe38a */ { false, 0xe38a, 0xe38a }, /* 0xe38b */ { false, 0xe38b, 0xe38b }, /* 0xe38c */ { false, 0xe38c, 0xe38c }, /* 0xe38d */ { false, 0xe38d, 0xe38d }, /* 0xe38e */ { false, 0xe38e, 0xe38e }, /* 0xe38f */ { false, 0xe38f, 0xe38f }, /* 0xe390 */ { false, 0xe390, 0xe390 }, /* 0xe391 */ { false, 0xe391, 0xe391 }, /* 0xe392 */ { false, 0xe392, 0xe392 }, /* 0xe393 */ { false, 0xe393, 0xe393 }, /* 0xe394 */ { false, 0xe394, 0xe394 }, /* 0xe395 */ { false, 0xe395, 0xe395 }, /* 0xe396 */ { false, 0xe396, 0xe396 }, /* 0xe397 */ { false, 0xe397, 0xe397 }, /* 0xe398 */ { false, 0xe398, 0xe398 }, /* 0xe399 */ { false, 0xe399, 0xe399 }, /* 0xe39a */ { false, 0xe39a, 0xe39a }, /* 0xe39b */ { false, 0xe39b, 0xe39b }, /* 0xe39c */ { false, 0xe39c, 0xe39c }, /* 0xe39d */ { false, 0xe39d, 0xe39d }, /* 0xe39e */ { false, 0xe39e, 0xe39e }, /* 0xe39f */ { false, 0xe39f, 0xe39f }, /* 0xe3a0 */ { false, 0xe3a0, 0xe3a0 }, /* 0xe3a1 */ { false, 0xe3a1, 0xe3a1 }, /* 0xe3a2 */ { false, 0xe3a2, 0xe3a2 }, /* 0xe3a3 */ { false, 0xe3a3, 0xe3a3 }, /* 0xe3a4 */ { false, 0xe3a4, 0xe3a4 }, /* 0xe3a5 */ { false, 0xe3a5, 0xe3a5 }, /* 0xe3a6 */ { false, 0xe3a6, 0xe3a6 }, /* 0xe3a7 */ { false, 0xe3a7, 0xe3a7 }, /* 0xe3a8 */ { false, 0xe3a8, 0xe3a8 }, /* 0xe3a9 */ { false, 0xe3a9, 0xe3a9 }, /* 0xe3aa */ { false, 0xe3aa, 0xe3aa }, /* 0xe3ab */ { false, 0xe3ab, 0xe3ab }, /* 0xe3ac */ { false, 0xe3ac, 0xe3ac }, /* 0xe3ad */ { false, 0xe3ad, 0xe3ad }, /* 0xe3ae */ { false, 0xe3ae, 0xe3ae }, /* 0xe3af */ { false, 0xe3af, 0xe3af }, /* 0xe3b0 */ { false, 0xe3b0, 0xe3b0 }, /* 0xe3b1 */ { false, 0xe3b1, 0xe3b1 }, /* 0xe3b2 */ { false, 0xe3b2, 0xe3b2 }, /* 0xe3b3 */ { false, 0xe3b3, 0xe3b3 }, /* 0xe3b4 */ { false, 0xe3b4, 0xe3b4 }, /* 0xe3b5 */ { false, 0xe3b5, 0xe3b5 }, /* 0xe3b6 */ { false, 0xe3b6, 0xe3b6 }, /* 0xe3b7 */ { false, 0xe3b7, 0xe3b7 }, /* 0xe3b8 */ { false, 0xe3b8, 0xe3b8 }, /* 0xe3b9 */ { false, 0xe3b9, 0xe3b9 }, /* 0xe3ba */ { false, 0xe3ba, 0xe3ba }, /* 0xe3bb */ { false, 0xe3bb, 0xe3bb }, /* 0xe3bc */ { false, 0xe3bc, 0xe3bc }, /* 0xe3bd */ { false, 0xe3bd, 0xe3bd }, /* 0xe3be */ { false, 0xe3be, 0xe3be }, /* 0xe3bf */ { false, 0xe3bf, 0xe3bf }, /* 0xe3c0 */ { false, 0xe3c0, 0xe3c0 }, /* 0xe3c1 */ { false, 0xe3c1, 0xe3c1 }, /* 0xe3c2 */ { false, 0xe3c2, 0xe3c2 }, /* 0xe3c3 */ { false, 0xe3c3, 0xe3c3 }, /* 0xe3c4 */ { false, 0xe3c4, 0xe3c4 }, /* 0xe3c5 */ { false, 0xe3c5, 0xe3c5 }, /* 0xe3c6 */ { false, 0xe3c6, 0xe3c6 }, /* 0xe3c7 */ { false, 0xe3c7, 0xe3c7 }, /* 0xe3c8 */ { false, 0xe3c8, 0xe3c8 }, /* 0xe3c9 */ { false, 0xe3c9, 0xe3c9 }, /* 0xe3ca */ { false, 0xe3ca, 0xe3ca }, /* 0xe3cb */ { false, 0xe3cb, 0xe3cb }, /* 0xe3cc */ { false, 0xe3cc, 0xe3cc }, /* 0xe3cd */ { false, 0xe3cd, 0xe3cd }, /* 0xe3ce */ { false, 0xe3ce, 0xe3ce }, /* 0xe3cf */ { false, 0xe3cf, 0xe3cf }, /* 0xe3d0 */ { false, 0xe3d0, 0xe3d0 }, /* 0xe3d1 */ { false, 0xe3d1, 0xe3d1 }, /* 0xe3d2 */ { false, 0xe3d2, 0xe3d2 }, /* 0xe3d3 */ { false, 0xe3d3, 0xe3d3 }, /* 0xe3d4 */ { false, 0xe3d4, 0xe3d4 }, /* 0xe3d5 */ { false, 0xe3d5, 0xe3d5 }, /* 0xe3d6 */ { false, 0xe3d6, 0xe3d6 }, /* 0xe3d7 */ { false, 0xe3d7, 0xe3d7 }, /* 0xe3d8 */ { false, 0xe3d8, 0xe3d8 }, /* 0xe3d9 */ { false, 0xe3d9, 0xe3d9 }, /* 0xe3da */ { false, 0xe3da, 0xe3da }, /* 0xe3db */ { false, 0xe3db, 0xe3db }, /* 0xe3dc */ { false, 0xe3dc, 0xe3dc }, /* 0xe3dd */ { false, 0xe3dd, 0xe3dd }, /* 0xe3de */ { false, 0xe3de, 0xe3de }, /* 0xe3df */ { false, 0xe3df, 0xe3df }, /* 0xe3e0 */ { false, 0xe3e0, 0xe3e0 }, /* 0xe3e1 */ { false, 0xe3e1, 0xe3e1 }, /* 0xe3e2 */ { false, 0xe3e2, 0xe3e2 }, /* 0xe3e3 */ { false, 0xe3e3, 0xe3e3 }, /* 0xe3e4 */ { false, 0xe3e4, 0xe3e4 }, /* 0xe3e5 */ { false, 0xe3e5, 0xe3e5 }, /* 0xe3e6 */ { false, 0xe3e6, 0xe3e6 }, /* 0xe3e7 */ { false, 0xe3e7, 0xe3e7 }, /* 0xe3e8 */ { false, 0xe3e8, 0xe3e8 }, /* 0xe3e9 */ { false, 0xe3e9, 0xe3e9 }, /* 0xe3ea */ { false, 0xe3ea, 0xe3ea }, /* 0xe3eb */ { false, 0xe3eb, 0xe3eb }, /* 0xe3ec */ { false, 0xe3ec, 0xe3ec }, /* 0xe3ed */ { false, 0xe3ed, 0xe3ed }, /* 0xe3ee */ { false, 0xe3ee, 0xe3ee }, /* 0xe3ef */ { false, 0xe3ef, 0xe3ef }, /* 0xe3f0 */ { false, 0xe3f0, 0xe3f0 }, /* 0xe3f1 */ { false, 0xe3f1, 0xe3f1 }, /* 0xe3f2 */ { false, 0xe3f2, 0xe3f2 }, /* 0xe3f3 */ { false, 0xe3f3, 0xe3f3 }, /* 0xe3f4 */ { false, 0xe3f4, 0xe3f4 }, /* 0xe3f5 */ { false, 0xe3f5, 0xe3f5 }, /* 0xe3f6 */ { false, 0xe3f6, 0xe3f6 }, /* 0xe3f7 */ { false, 0xe3f7, 0xe3f7 }, /* 0xe3f8 */ { false, 0xe3f8, 0xe3f8 }, /* 0xe3f9 */ { false, 0xe3f9, 0xe3f9 }, /* 0xe3fa */ { false, 0xe3fa, 0xe3fa }, /* 0xe3fb */ { false, 0xe3fb, 0xe3fb }, /* 0xe3fc */ { false, 0xe3fc, 0xe3fc }, /* 0xe3fd */ { false, 0xe3fd, 0xe3fd }, /* 0xe3fe */ { false, 0xe3fe, 0xe3fe }, /* 0xe3ff */ { false, 0xe3ff, 0xe3ff }, /* 0xe400 */ { false, 0xe400, 0xe400 }, /* 0xe401 */ { false, 0xe401, 0xe401 }, /* 0xe402 */ { false, 0xe402, 0xe402 }, /* 0xe403 */ { false, 0xe403, 0xe403 }, /* 0xe404 */ { false, 0xe404, 0xe404 }, /* 0xe405 */ { false, 0xe405, 0xe405 }, /* 0xe406 */ { false, 0xe406, 0xe406 }, /* 0xe407 */ { false, 0xe407, 0xe407 }, /* 0xe408 */ { false, 0xe408, 0xe408 }, /* 0xe409 */ { false, 0xe409, 0xe409 }, /* 0xe40a */ { false, 0xe40a, 0xe40a }, /* 0xe40b */ { false, 0xe40b, 0xe40b }, /* 0xe40c */ { false, 0xe40c, 0xe40c }, /* 0xe40d */ { false, 0xe40d, 0xe40d }, /* 0xe40e */ { false, 0xe40e, 0xe40e }, /* 0xe40f */ { false, 0xe40f, 0xe40f }, /* 0xe410 */ { false, 0xe410, 0xe410 }, /* 0xe411 */ { false, 0xe411, 0xe411 }, /* 0xe412 */ { false, 0xe412, 0xe412 }, /* 0xe413 */ { false, 0xe413, 0xe413 }, /* 0xe414 */ { false, 0xe414, 0xe414 }, /* 0xe415 */ { false, 0xe415, 0xe415 }, /* 0xe416 */ { false, 0xe416, 0xe416 }, /* 0xe417 */ { false, 0xe417, 0xe417 }, /* 0xe418 */ { false, 0xe418, 0xe418 }, /* 0xe419 */ { false, 0xe419, 0xe419 }, /* 0xe41a */ { false, 0xe41a, 0xe41a }, /* 0xe41b */ { false, 0xe41b, 0xe41b }, /* 0xe41c */ { false, 0xe41c, 0xe41c }, /* 0xe41d */ { false, 0xe41d, 0xe41d }, /* 0xe41e */ { false, 0xe41e, 0xe41e }, /* 0xe41f */ { false, 0xe41f, 0xe41f }, /* 0xe420 */ { false, 0xe420, 0xe420 }, /* 0xe421 */ { false, 0xe421, 0xe421 }, /* 0xe422 */ { false, 0xe422, 0xe422 }, /* 0xe423 */ { false, 0xe423, 0xe423 }, /* 0xe424 */ { false, 0xe424, 0xe424 }, /* 0xe425 */ { false, 0xe425, 0xe425 }, /* 0xe426 */ { false, 0xe426, 0xe426 }, /* 0xe427 */ { false, 0xe427, 0xe427 }, /* 0xe428 */ { false, 0xe428, 0xe428 }, /* 0xe429 */ { false, 0xe429, 0xe429 }, /* 0xe42a */ { false, 0xe42a, 0xe42a }, /* 0xe42b */ { false, 0xe42b, 0xe42b }, /* 0xe42c */ { false, 0xe42c, 0xe42c }, /* 0xe42d */ { false, 0xe42d, 0xe42d }, /* 0xe42e */ { false, 0xe42e, 0xe42e }, /* 0xe42f */ { false, 0xe42f, 0xe42f }, /* 0xe430 */ { false, 0xe430, 0xe430 }, /* 0xe431 */ { false, 0xe431, 0xe431 }, /* 0xe432 */ { false, 0xe432, 0xe432 }, /* 0xe433 */ { false, 0xe433, 0xe433 }, /* 0xe434 */ { false, 0xe434, 0xe434 }, /* 0xe435 */ { false, 0xe435, 0xe435 }, /* 0xe436 */ { false, 0xe436, 0xe436 }, /* 0xe437 */ { false, 0xe437, 0xe437 }, /* 0xe438 */ { false, 0xe438, 0xe438 }, /* 0xe439 */ { false, 0xe439, 0xe439 }, /* 0xe43a */ { false, 0xe43a, 0xe43a }, /* 0xe43b */ { false, 0xe43b, 0xe43b }, /* 0xe43c */ { false, 0xe43c, 0xe43c }, /* 0xe43d */ { false, 0xe43d, 0xe43d }, /* 0xe43e */ { false, 0xe43e, 0xe43e }, /* 0xe43f */ { false, 0xe43f, 0xe43f }, /* 0xe440 */ { false, 0xe440, 0xe440 }, /* 0xe441 */ { false, 0xe441, 0xe441 }, /* 0xe442 */ { false, 0xe442, 0xe442 }, /* 0xe443 */ { false, 0xe443, 0xe443 }, /* 0xe444 */ { false, 0xe444, 0xe444 }, /* 0xe445 */ { false, 0xe445, 0xe445 }, /* 0xe446 */ { false, 0xe446, 0xe446 }, /* 0xe447 */ { false, 0xe447, 0xe447 }, /* 0xe448 */ { false, 0xe448, 0xe448 }, /* 0xe449 */ { false, 0xe449, 0xe449 }, /* 0xe44a */ { false, 0xe44a, 0xe44a }, /* 0xe44b */ { false, 0xe44b, 0xe44b }, /* 0xe44c */ { false, 0xe44c, 0xe44c }, /* 0xe44d */ { false, 0xe44d, 0xe44d }, /* 0xe44e */ { false, 0xe44e, 0xe44e }, /* 0xe44f */ { false, 0xe44f, 0xe44f }, /* 0xe450 */ { false, 0xe450, 0xe450 }, /* 0xe451 */ { false, 0xe451, 0xe451 }, /* 0xe452 */ { false, 0xe452, 0xe452 }, /* 0xe453 */ { false, 0xe453, 0xe453 }, /* 0xe454 */ { false, 0xe454, 0xe454 }, /* 0xe455 */ { false, 0xe455, 0xe455 }, /* 0xe456 */ { false, 0xe456, 0xe456 }, /* 0xe457 */ { false, 0xe457, 0xe457 }, /* 0xe458 */ { false, 0xe458, 0xe458 }, /* 0xe459 */ { false, 0xe459, 0xe459 }, /* 0xe45a */ { false, 0xe45a, 0xe45a }, /* 0xe45b */ { false, 0xe45b, 0xe45b }, /* 0xe45c */ { false, 0xe45c, 0xe45c }, /* 0xe45d */ { false, 0xe45d, 0xe45d }, /* 0xe45e */ { false, 0xe45e, 0xe45e }, /* 0xe45f */ { false, 0xe45f, 0xe45f }, /* 0xe460 */ { false, 0xe460, 0xe460 }, /* 0xe461 */ { false, 0xe461, 0xe461 }, /* 0xe462 */ { false, 0xe462, 0xe462 }, /* 0xe463 */ { false, 0xe463, 0xe463 }, /* 0xe464 */ { false, 0xe464, 0xe464 }, /* 0xe465 */ { false, 0xe465, 0xe465 }, /* 0xe466 */ { false, 0xe466, 0xe466 }, /* 0xe467 */ { false, 0xe467, 0xe467 }, /* 0xe468 */ { false, 0xe468, 0xe468 }, /* 0xe469 */ { false, 0xe469, 0xe469 }, /* 0xe46a */ { false, 0xe46a, 0xe46a }, /* 0xe46b */ { false, 0xe46b, 0xe46b }, /* 0xe46c */ { false, 0xe46c, 0xe46c }, /* 0xe46d */ { false, 0xe46d, 0xe46d }, /* 0xe46e */ { false, 0xe46e, 0xe46e }, /* 0xe46f */ { false, 0xe46f, 0xe46f }, /* 0xe470 */ { false, 0xe470, 0xe470 }, /* 0xe471 */ { false, 0xe471, 0xe471 }, /* 0xe472 */ { false, 0xe472, 0xe472 }, /* 0xe473 */ { false, 0xe473, 0xe473 }, /* 0xe474 */ { false, 0xe474, 0xe474 }, /* 0xe475 */ { false, 0xe475, 0xe475 }, /* 0xe476 */ { false, 0xe476, 0xe476 }, /* 0xe477 */ { false, 0xe477, 0xe477 }, /* 0xe478 */ { false, 0xe478, 0xe478 }, /* 0xe479 */ { false, 0xe479, 0xe479 }, /* 0xe47a */ { false, 0xe47a, 0xe47a }, /* 0xe47b */ { false, 0xe47b, 0xe47b }, /* 0xe47c */ { false, 0xe47c, 0xe47c }, /* 0xe47d */ { false, 0xe47d, 0xe47d }, /* 0xe47e */ { false, 0xe47e, 0xe47e }, /* 0xe47f */ { false, 0xe47f, 0xe47f }, /* 0xe480 */ { false, 0xe480, 0xe480 }, /* 0xe481 */ { false, 0xe481, 0xe481 }, /* 0xe482 */ { false, 0xe482, 0xe482 }, /* 0xe483 */ { false, 0xe483, 0xe483 }, /* 0xe484 */ { false, 0xe484, 0xe484 }, /* 0xe485 */ { false, 0xe485, 0xe485 }, /* 0xe486 */ { false, 0xe486, 0xe486 }, /* 0xe487 */ { false, 0xe487, 0xe487 }, /* 0xe488 */ { false, 0xe488, 0xe488 }, /* 0xe489 */ { false, 0xe489, 0xe489 }, /* 0xe48a */ { false, 0xe48a, 0xe48a }, /* 0xe48b */ { false, 0xe48b, 0xe48b }, /* 0xe48c */ { false, 0xe48c, 0xe48c }, /* 0xe48d */ { false, 0xe48d, 0xe48d }, /* 0xe48e */ { false, 0xe48e, 0xe48e }, /* 0xe48f */ { false, 0xe48f, 0xe48f }, /* 0xe490 */ { false, 0xe490, 0xe490 }, /* 0xe491 */ { false, 0xe491, 0xe491 }, /* 0xe492 */ { false, 0xe492, 0xe492 }, /* 0xe493 */ { false, 0xe493, 0xe493 }, /* 0xe494 */ { false, 0xe494, 0xe494 }, /* 0xe495 */ { false, 0xe495, 0xe495 }, /* 0xe496 */ { false, 0xe496, 0xe496 }, /* 0xe497 */ { false, 0xe497, 0xe497 }, /* 0xe498 */ { false, 0xe498, 0xe498 }, /* 0xe499 */ { false, 0xe499, 0xe499 }, /* 0xe49a */ { false, 0xe49a, 0xe49a }, /* 0xe49b */ { false, 0xe49b, 0xe49b }, /* 0xe49c */ { false, 0xe49c, 0xe49c }, /* 0xe49d */ { false, 0xe49d, 0xe49d }, /* 0xe49e */ { false, 0xe49e, 0xe49e }, /* 0xe49f */ { false, 0xe49f, 0xe49f }, /* 0xe4a0 */ { false, 0xe4a0, 0xe4a0 }, /* 0xe4a1 */ { false, 0xe4a1, 0xe4a1 }, /* 0xe4a2 */ { false, 0xe4a2, 0xe4a2 }, /* 0xe4a3 */ { false, 0xe4a3, 0xe4a3 }, /* 0xe4a4 */ { false, 0xe4a4, 0xe4a4 }, /* 0xe4a5 */ { false, 0xe4a5, 0xe4a5 }, /* 0xe4a6 */ { false, 0xe4a6, 0xe4a6 }, /* 0xe4a7 */ { false, 0xe4a7, 0xe4a7 }, /* 0xe4a8 */ { false, 0xe4a8, 0xe4a8 }, /* 0xe4a9 */ { false, 0xe4a9, 0xe4a9 }, /* 0xe4aa */ { false, 0xe4aa, 0xe4aa }, /* 0xe4ab */ { false, 0xe4ab, 0xe4ab }, /* 0xe4ac */ { false, 0xe4ac, 0xe4ac }, /* 0xe4ad */ { false, 0xe4ad, 0xe4ad }, /* 0xe4ae */ { false, 0xe4ae, 0xe4ae }, /* 0xe4af */ { false, 0xe4af, 0xe4af }, /* 0xe4b0 */ { false, 0xe4b0, 0xe4b0 }, /* 0xe4b1 */ { false, 0xe4b1, 0xe4b1 }, /* 0xe4b2 */ { false, 0xe4b2, 0xe4b2 }, /* 0xe4b3 */ { false, 0xe4b3, 0xe4b3 }, /* 0xe4b4 */ { false, 0xe4b4, 0xe4b4 }, /* 0xe4b5 */ { false, 0xe4b5, 0xe4b5 }, /* 0xe4b6 */ { false, 0xe4b6, 0xe4b6 }, /* 0xe4b7 */ { false, 0xe4b7, 0xe4b7 }, /* 0xe4b8 */ { false, 0xe4b8, 0xe4b8 }, /* 0xe4b9 */ { false, 0xe4b9, 0xe4b9 }, /* 0xe4ba */ { false, 0xe4ba, 0xe4ba }, /* 0xe4bb */ { false, 0xe4bb, 0xe4bb }, /* 0xe4bc */ { false, 0xe4bc, 0xe4bc }, /* 0xe4bd */ { false, 0xe4bd, 0xe4bd }, /* 0xe4be */ { false, 0xe4be, 0xe4be }, /* 0xe4bf */ { false, 0xe4bf, 0xe4bf }, /* 0xe4c0 */ { false, 0xe4c0, 0xe4c0 }, /* 0xe4c1 */ { false, 0xe4c1, 0xe4c1 }, /* 0xe4c2 */ { false, 0xe4c2, 0xe4c2 }, /* 0xe4c3 */ { false, 0xe4c3, 0xe4c3 }, /* 0xe4c4 */ { false, 0xe4c4, 0xe4c4 }, /* 0xe4c5 */ { false, 0xe4c5, 0xe4c5 }, /* 0xe4c6 */ { false, 0xe4c6, 0xe4c6 }, /* 0xe4c7 */ { false, 0xe4c7, 0xe4c7 }, /* 0xe4c8 */ { false, 0xe4c8, 0xe4c8 }, /* 0xe4c9 */ { false, 0xe4c9, 0xe4c9 }, /* 0xe4ca */ { false, 0xe4ca, 0xe4ca }, /* 0xe4cb */ { false, 0xe4cb, 0xe4cb }, /* 0xe4cc */ { false, 0xe4cc, 0xe4cc }, /* 0xe4cd */ { false, 0xe4cd, 0xe4cd }, /* 0xe4ce */ { false, 0xe4ce, 0xe4ce }, /* 0xe4cf */ { false, 0xe4cf, 0xe4cf }, /* 0xe4d0 */ { false, 0xe4d0, 0xe4d0 }, /* 0xe4d1 */ { false, 0xe4d1, 0xe4d1 }, /* 0xe4d2 */ { false, 0xe4d2, 0xe4d2 }, /* 0xe4d3 */ { false, 0xe4d3, 0xe4d3 }, /* 0xe4d4 */ { false, 0xe4d4, 0xe4d4 }, /* 0xe4d5 */ { false, 0xe4d5, 0xe4d5 }, /* 0xe4d6 */ { false, 0xe4d6, 0xe4d6 }, /* 0xe4d7 */ { false, 0xe4d7, 0xe4d7 }, /* 0xe4d8 */ { false, 0xe4d8, 0xe4d8 }, /* 0xe4d9 */ { false, 0xe4d9, 0xe4d9 }, /* 0xe4da */ { false, 0xe4da, 0xe4da }, /* 0xe4db */ { false, 0xe4db, 0xe4db }, /* 0xe4dc */ { false, 0xe4dc, 0xe4dc }, /* 0xe4dd */ { false, 0xe4dd, 0xe4dd }, /* 0xe4de */ { false, 0xe4de, 0xe4de }, /* 0xe4df */ { false, 0xe4df, 0xe4df }, /* 0xe4e0 */ { false, 0xe4e0, 0xe4e0 }, /* 0xe4e1 */ { false, 0xe4e1, 0xe4e1 }, /* 0xe4e2 */ { false, 0xe4e2, 0xe4e2 }, /* 0xe4e3 */ { false, 0xe4e3, 0xe4e3 }, /* 0xe4e4 */ { false, 0xe4e4, 0xe4e4 }, /* 0xe4e5 */ { false, 0xe4e5, 0xe4e5 }, /* 0xe4e6 */ { false, 0xe4e6, 0xe4e6 }, /* 0xe4e7 */ { false, 0xe4e7, 0xe4e7 }, /* 0xe4e8 */ { false, 0xe4e8, 0xe4e8 }, /* 0xe4e9 */ { false, 0xe4e9, 0xe4e9 }, /* 0xe4ea */ { false, 0xe4ea, 0xe4ea }, /* 0xe4eb */ { false, 0xe4eb, 0xe4eb }, /* 0xe4ec */ { false, 0xe4ec, 0xe4ec }, /* 0xe4ed */ { false, 0xe4ed, 0xe4ed }, /* 0xe4ee */ { false, 0xe4ee, 0xe4ee }, /* 0xe4ef */ { false, 0xe4ef, 0xe4ef }, /* 0xe4f0 */ { false, 0xe4f0, 0xe4f0 }, /* 0xe4f1 */ { false, 0xe4f1, 0xe4f1 }, /* 0xe4f2 */ { false, 0xe4f2, 0xe4f2 }, /* 0xe4f3 */ { false, 0xe4f3, 0xe4f3 }, /* 0xe4f4 */ { false, 0xe4f4, 0xe4f4 }, /* 0xe4f5 */ { false, 0xe4f5, 0xe4f5 }, /* 0xe4f6 */ { false, 0xe4f6, 0xe4f6 }, /* 0xe4f7 */ { false, 0xe4f7, 0xe4f7 }, /* 0xe4f8 */ { false, 0xe4f8, 0xe4f8 }, /* 0xe4f9 */ { false, 0xe4f9, 0xe4f9 }, /* 0xe4fa */ { false, 0xe4fa, 0xe4fa }, /* 0xe4fb */ { false, 0xe4fb, 0xe4fb }, /* 0xe4fc */ { false, 0xe4fc, 0xe4fc }, /* 0xe4fd */ { false, 0xe4fd, 0xe4fd }, /* 0xe4fe */ { false, 0xe4fe, 0xe4fe }, /* 0xe4ff */ { false, 0xe4ff, 0xe4ff }, /* 0xe500 */ { false, 0xe500, 0xe500 }, /* 0xe501 */ { false, 0xe501, 0xe501 }, /* 0xe502 */ { false, 0xe502, 0xe502 }, /* 0xe503 */ { false, 0xe503, 0xe503 }, /* 0xe504 */ { false, 0xe504, 0xe504 }, /* 0xe505 */ { false, 0xe505, 0xe505 }, /* 0xe506 */ { false, 0xe506, 0xe506 }, /* 0xe507 */ { false, 0xe507, 0xe507 }, /* 0xe508 */ { false, 0xe508, 0xe508 }, /* 0xe509 */ { false, 0xe509, 0xe509 }, /* 0xe50a */ { false, 0xe50a, 0xe50a }, /* 0xe50b */ { false, 0xe50b, 0xe50b }, /* 0xe50c */ { false, 0xe50c, 0xe50c }, /* 0xe50d */ { false, 0xe50d, 0xe50d }, /* 0xe50e */ { false, 0xe50e, 0xe50e }, /* 0xe50f */ { false, 0xe50f, 0xe50f }, /* 0xe510 */ { false, 0xe510, 0xe510 }, /* 0xe511 */ { false, 0xe511, 0xe511 }, /* 0xe512 */ { false, 0xe512, 0xe512 }, /* 0xe513 */ { false, 0xe513, 0xe513 }, /* 0xe514 */ { false, 0xe514, 0xe514 }, /* 0xe515 */ { false, 0xe515, 0xe515 }, /* 0xe516 */ { false, 0xe516, 0xe516 }, /* 0xe517 */ { false, 0xe517, 0xe517 }, /* 0xe518 */ { false, 0xe518, 0xe518 }, /* 0xe519 */ { false, 0xe519, 0xe519 }, /* 0xe51a */ { false, 0xe51a, 0xe51a }, /* 0xe51b */ { false, 0xe51b, 0xe51b }, /* 0xe51c */ { false, 0xe51c, 0xe51c }, /* 0xe51d */ { false, 0xe51d, 0xe51d }, /* 0xe51e */ { false, 0xe51e, 0xe51e }, /* 0xe51f */ { false, 0xe51f, 0xe51f }, /* 0xe520 */ { false, 0xe520, 0xe520 }, /* 0xe521 */ { false, 0xe521, 0xe521 }, /* 0xe522 */ { false, 0xe522, 0xe522 }, /* 0xe523 */ { false, 0xe523, 0xe523 }, /* 0xe524 */ { false, 0xe524, 0xe524 }, /* 0xe525 */ { false, 0xe525, 0xe525 }, /* 0xe526 */ { false, 0xe526, 0xe526 }, /* 0xe527 */ { false, 0xe527, 0xe527 }, /* 0xe528 */ { false, 0xe528, 0xe528 }, /* 0xe529 */ { false, 0xe529, 0xe529 }, /* 0xe52a */ { false, 0xe52a, 0xe52a }, /* 0xe52b */ { false, 0xe52b, 0xe52b }, /* 0xe52c */ { false, 0xe52c, 0xe52c }, /* 0xe52d */ { false, 0xe52d, 0xe52d }, /* 0xe52e */ { false, 0xe52e, 0xe52e }, /* 0xe52f */ { false, 0xe52f, 0xe52f }, /* 0xe530 */ { false, 0xe530, 0xe530 }, /* 0xe531 */ { false, 0xe531, 0xe531 }, /* 0xe532 */ { false, 0xe532, 0xe532 }, /* 0xe533 */ { false, 0xe533, 0xe533 }, /* 0xe534 */ { false, 0xe534, 0xe534 }, /* 0xe535 */ { false, 0xe535, 0xe535 }, /* 0xe536 */ { false, 0xe536, 0xe536 }, /* 0xe537 */ { false, 0xe537, 0xe537 }, /* 0xe538 */ { false, 0xe538, 0xe538 }, /* 0xe539 */ { false, 0xe539, 0xe539 }, /* 0xe53a */ { false, 0xe53a, 0xe53a }, /* 0xe53b */ { false, 0xe53b, 0xe53b }, /* 0xe53c */ { false, 0xe53c, 0xe53c }, /* 0xe53d */ { false, 0xe53d, 0xe53d }, /* 0xe53e */ { false, 0xe53e, 0xe53e }, /* 0xe53f */ { false, 0xe53f, 0xe53f }, /* 0xe540 */ { false, 0xe540, 0xe540 }, /* 0xe541 */ { false, 0xe541, 0xe541 }, /* 0xe542 */ { false, 0xe542, 0xe542 }, /* 0xe543 */ { false, 0xe543, 0xe543 }, /* 0xe544 */ { false, 0xe544, 0xe544 }, /* 0xe545 */ { false, 0xe545, 0xe545 }, /* 0xe546 */ { false, 0xe546, 0xe546 }, /* 0xe547 */ { false, 0xe547, 0xe547 }, /* 0xe548 */ { false, 0xe548, 0xe548 }, /* 0xe549 */ { false, 0xe549, 0xe549 }, /* 0xe54a */ { false, 0xe54a, 0xe54a }, /* 0xe54b */ { false, 0xe54b, 0xe54b }, /* 0xe54c */ { false, 0xe54c, 0xe54c }, /* 0xe54d */ { false, 0xe54d, 0xe54d }, /* 0xe54e */ { false, 0xe54e, 0xe54e }, /* 0xe54f */ { false, 0xe54f, 0xe54f }, /* 0xe550 */ { false, 0xe550, 0xe550 }, /* 0xe551 */ { false, 0xe551, 0xe551 }, /* 0xe552 */ { false, 0xe552, 0xe552 }, /* 0xe553 */ { false, 0xe553, 0xe553 }, /* 0xe554 */ { false, 0xe554, 0xe554 }, /* 0xe555 */ { false, 0xe555, 0xe555 }, /* 0xe556 */ { false, 0xe556, 0xe556 }, /* 0xe557 */ { false, 0xe557, 0xe557 }, /* 0xe558 */ { false, 0xe558, 0xe558 }, /* 0xe559 */ { false, 0xe559, 0xe559 }, /* 0xe55a */ { false, 0xe55a, 0xe55a }, /* 0xe55b */ { false, 0xe55b, 0xe55b }, /* 0xe55c */ { false, 0xe55c, 0xe55c }, /* 0xe55d */ { false, 0xe55d, 0xe55d }, /* 0xe55e */ { false, 0xe55e, 0xe55e }, /* 0xe55f */ { false, 0xe55f, 0xe55f }, /* 0xe560 */ { false, 0xe560, 0xe560 }, /* 0xe561 */ { false, 0xe561, 0xe561 }, /* 0xe562 */ { false, 0xe562, 0xe562 }, /* 0xe563 */ { false, 0xe563, 0xe563 }, /* 0xe564 */ { false, 0xe564, 0xe564 }, /* 0xe565 */ { false, 0xe565, 0xe565 }, /* 0xe566 */ { false, 0xe566, 0xe566 }, /* 0xe567 */ { false, 0xe567, 0xe567 }, /* 0xe568 */ { false, 0xe568, 0xe568 }, /* 0xe569 */ { false, 0xe569, 0xe569 }, /* 0xe56a */ { false, 0xe56a, 0xe56a }, /* 0xe56b */ { false, 0xe56b, 0xe56b }, /* 0xe56c */ { false, 0xe56c, 0xe56c }, /* 0xe56d */ { false, 0xe56d, 0xe56d }, /* 0xe56e */ { false, 0xe56e, 0xe56e }, /* 0xe56f */ { false, 0xe56f, 0xe56f }, /* 0xe570 */ { false, 0xe570, 0xe570 }, /* 0xe571 */ { false, 0xe571, 0xe571 }, /* 0xe572 */ { false, 0xe572, 0xe572 }, /* 0xe573 */ { false, 0xe573, 0xe573 }, /* 0xe574 */ { false, 0xe574, 0xe574 }, /* 0xe575 */ { false, 0xe575, 0xe575 }, /* 0xe576 */ { false, 0xe576, 0xe576 }, /* 0xe577 */ { false, 0xe577, 0xe577 }, /* 0xe578 */ { false, 0xe578, 0xe578 }, /* 0xe579 */ { false, 0xe579, 0xe579 }, /* 0xe57a */ { false, 0xe57a, 0xe57a }, /* 0xe57b */ { false, 0xe57b, 0xe57b }, /* 0xe57c */ { false, 0xe57c, 0xe57c }, /* 0xe57d */ { false, 0xe57d, 0xe57d }, /* 0xe57e */ { false, 0xe57e, 0xe57e }, /* 0xe57f */ { false, 0xe57f, 0xe57f }, /* 0xe580 */ { false, 0xe580, 0xe580 }, /* 0xe581 */ { false, 0xe581, 0xe581 }, /* 0xe582 */ { false, 0xe582, 0xe582 }, /* 0xe583 */ { false, 0xe583, 0xe583 }, /* 0xe584 */ { false, 0xe584, 0xe584 }, /* 0xe585 */ { false, 0xe585, 0xe585 }, /* 0xe586 */ { false, 0xe586, 0xe586 }, /* 0xe587 */ { false, 0xe587, 0xe587 }, /* 0xe588 */ { false, 0xe588, 0xe588 }, /* 0xe589 */ { false, 0xe589, 0xe589 }, /* 0xe58a */ { false, 0xe58a, 0xe58a }, /* 0xe58b */ { false, 0xe58b, 0xe58b }, /* 0xe58c */ { false, 0xe58c, 0xe58c }, /* 0xe58d */ { false, 0xe58d, 0xe58d }, /* 0xe58e */ { false, 0xe58e, 0xe58e }, /* 0xe58f */ { false, 0xe58f, 0xe58f }, /* 0xe590 */ { false, 0xe590, 0xe590 }, /* 0xe591 */ { false, 0xe591, 0xe591 }, /* 0xe592 */ { false, 0xe592, 0xe592 }, /* 0xe593 */ { false, 0xe593, 0xe593 }, /* 0xe594 */ { false, 0xe594, 0xe594 }, /* 0xe595 */ { false, 0xe595, 0xe595 }, /* 0xe596 */ { false, 0xe596, 0xe596 }, /* 0xe597 */ { false, 0xe597, 0xe597 }, /* 0xe598 */ { false, 0xe598, 0xe598 }, /* 0xe599 */ { false, 0xe599, 0xe599 }, /* 0xe59a */ { false, 0xe59a, 0xe59a }, /* 0xe59b */ { false, 0xe59b, 0xe59b }, /* 0xe59c */ { false, 0xe59c, 0xe59c }, /* 0xe59d */ { false, 0xe59d, 0xe59d }, /* 0xe59e */ { false, 0xe59e, 0xe59e }, /* 0xe59f */ { false, 0xe59f, 0xe59f }, /* 0xe5a0 */ { false, 0xe5a0, 0xe5a0 }, /* 0xe5a1 */ { false, 0xe5a1, 0xe5a1 }, /* 0xe5a2 */ { false, 0xe5a2, 0xe5a2 }, /* 0xe5a3 */ { false, 0xe5a3, 0xe5a3 }, /* 0xe5a4 */ { false, 0xe5a4, 0xe5a4 }, /* 0xe5a5 */ { false, 0xe5a5, 0xe5a5 }, /* 0xe5a6 */ { false, 0xe5a6, 0xe5a6 }, /* 0xe5a7 */ { false, 0xe5a7, 0xe5a7 }, /* 0xe5a8 */ { false, 0xe5a8, 0xe5a8 }, /* 0xe5a9 */ { false, 0xe5a9, 0xe5a9 }, /* 0xe5aa */ { false, 0xe5aa, 0xe5aa }, /* 0xe5ab */ { false, 0xe5ab, 0xe5ab }, /* 0xe5ac */ { false, 0xe5ac, 0xe5ac }, /* 0xe5ad */ { false, 0xe5ad, 0xe5ad }, /* 0xe5ae */ { false, 0xe5ae, 0xe5ae }, /* 0xe5af */ { false, 0xe5af, 0xe5af }, /* 0xe5b0 */ { false, 0xe5b0, 0xe5b0 }, /* 0xe5b1 */ { false, 0xe5b1, 0xe5b1 }, /* 0xe5b2 */ { false, 0xe5b2, 0xe5b2 }, /* 0xe5b3 */ { false, 0xe5b3, 0xe5b3 }, /* 0xe5b4 */ { false, 0xe5b4, 0xe5b4 }, /* 0xe5b5 */ { false, 0xe5b5, 0xe5b5 }, /* 0xe5b6 */ { false, 0xe5b6, 0xe5b6 }, /* 0xe5b7 */ { false, 0xe5b7, 0xe5b7 }, /* 0xe5b8 */ { false, 0xe5b8, 0xe5b8 }, /* 0xe5b9 */ { false, 0xe5b9, 0xe5b9 }, /* 0xe5ba */ { false, 0xe5ba, 0xe5ba }, /* 0xe5bb */ { false, 0xe5bb, 0xe5bb }, /* 0xe5bc */ { false, 0xe5bc, 0xe5bc }, /* 0xe5bd */ { false, 0xe5bd, 0xe5bd }, /* 0xe5be */ { false, 0xe5be, 0xe5be }, /* 0xe5bf */ { false, 0xe5bf, 0xe5bf }, /* 0xe5c0 */ { false, 0xe5c0, 0xe5c0 }, /* 0xe5c1 */ { false, 0xe5c1, 0xe5c1 }, /* 0xe5c2 */ { false, 0xe5c2, 0xe5c2 }, /* 0xe5c3 */ { false, 0xe5c3, 0xe5c3 }, /* 0xe5c4 */ { false, 0xe5c4, 0xe5c4 }, /* 0xe5c5 */ { false, 0xe5c5, 0xe5c5 }, /* 0xe5c6 */ { false, 0xe5c6, 0xe5c6 }, /* 0xe5c7 */ { false, 0xe5c7, 0xe5c7 }, /* 0xe5c8 */ { false, 0xe5c8, 0xe5c8 }, /* 0xe5c9 */ { false, 0xe5c9, 0xe5c9 }, /* 0xe5ca */ { false, 0xe5ca, 0xe5ca }, /* 0xe5cb */ { false, 0xe5cb, 0xe5cb }, /* 0xe5cc */ { false, 0xe5cc, 0xe5cc }, /* 0xe5cd */ { false, 0xe5cd, 0xe5cd }, /* 0xe5ce */ { false, 0xe5ce, 0xe5ce }, /* 0xe5cf */ { false, 0xe5cf, 0xe5cf }, /* 0xe5d0 */ { false, 0xe5d0, 0xe5d0 }, /* 0xe5d1 */ { false, 0xe5d1, 0xe5d1 }, /* 0xe5d2 */ { false, 0xe5d2, 0xe5d2 }, /* 0xe5d3 */ { false, 0xe5d3, 0xe5d3 }, /* 0xe5d4 */ { false, 0xe5d4, 0xe5d4 }, /* 0xe5d5 */ { false, 0xe5d5, 0xe5d5 }, /* 0xe5d6 */ { false, 0xe5d6, 0xe5d6 }, /* 0xe5d7 */ { false, 0xe5d7, 0xe5d7 }, /* 0xe5d8 */ { false, 0xe5d8, 0xe5d8 }, /* 0xe5d9 */ { false, 0xe5d9, 0xe5d9 }, /* 0xe5da */ { false, 0xe5da, 0xe5da }, /* 0xe5db */ { false, 0xe5db, 0xe5db }, /* 0xe5dc */ { false, 0xe5dc, 0xe5dc }, /* 0xe5dd */ { false, 0xe5dd, 0xe5dd }, /* 0xe5de */ { false, 0xe5de, 0xe5de }, /* 0xe5df */ { false, 0xe5df, 0xe5df }, /* 0xe5e0 */ { false, 0xe5e0, 0xe5e0 }, /* 0xe5e1 */ { false, 0xe5e1, 0xe5e1 }, /* 0xe5e2 */ { false, 0xe5e2, 0xe5e2 }, /* 0xe5e3 */ { false, 0xe5e3, 0xe5e3 }, /* 0xe5e4 */ { false, 0xe5e4, 0xe5e4 }, /* 0xe5e5 */ { false, 0xe5e5, 0xe5e5 }, /* 0xe5e6 */ { false, 0xe5e6, 0xe5e6 }, /* 0xe5e7 */ { false, 0xe5e7, 0xe5e7 }, /* 0xe5e8 */ { false, 0xe5e8, 0xe5e8 }, /* 0xe5e9 */ { false, 0xe5e9, 0xe5e9 }, /* 0xe5ea */ { false, 0xe5ea, 0xe5ea }, /* 0xe5eb */ { false, 0xe5eb, 0xe5eb }, /* 0xe5ec */ { false, 0xe5ec, 0xe5ec }, /* 0xe5ed */ { false, 0xe5ed, 0xe5ed }, /* 0xe5ee */ { false, 0xe5ee, 0xe5ee }, /* 0xe5ef */ { false, 0xe5ef, 0xe5ef }, /* 0xe5f0 */ { false, 0xe5f0, 0xe5f0 }, /* 0xe5f1 */ { false, 0xe5f1, 0xe5f1 }, /* 0xe5f2 */ { false, 0xe5f2, 0xe5f2 }, /* 0xe5f3 */ { false, 0xe5f3, 0xe5f3 }, /* 0xe5f4 */ { false, 0xe5f4, 0xe5f4 }, /* 0xe5f5 */ { false, 0xe5f5, 0xe5f5 }, /* 0xe5f6 */ { false, 0xe5f6, 0xe5f6 }, /* 0xe5f7 */ { false, 0xe5f7, 0xe5f7 }, /* 0xe5f8 */ { false, 0xe5f8, 0xe5f8 }, /* 0xe5f9 */ { false, 0xe5f9, 0xe5f9 }, /* 0xe5fa */ { false, 0xe5fa, 0xe5fa }, /* 0xe5fb */ { false, 0xe5fb, 0xe5fb }, /* 0xe5fc */ { false, 0xe5fc, 0xe5fc }, /* 0xe5fd */ { false, 0xe5fd, 0xe5fd }, /* 0xe5fe */ { false, 0xe5fe, 0xe5fe }, /* 0xe5ff */ { false, 0xe5ff, 0xe5ff }, /* 0xe600 */ { false, 0xe600, 0xe600 }, /* 0xe601 */ { false, 0xe601, 0xe601 }, /* 0xe602 */ { false, 0xe602, 0xe602 }, /* 0xe603 */ { false, 0xe603, 0xe603 }, /* 0xe604 */ { false, 0xe604, 0xe604 }, /* 0xe605 */ { false, 0xe605, 0xe605 }, /* 0xe606 */ { false, 0xe606, 0xe606 }, /* 0xe607 */ { false, 0xe607, 0xe607 }, /* 0xe608 */ { false, 0xe608, 0xe608 }, /* 0xe609 */ { false, 0xe609, 0xe609 }, /* 0xe60a */ { false, 0xe60a, 0xe60a }, /* 0xe60b */ { false, 0xe60b, 0xe60b }, /* 0xe60c */ { false, 0xe60c, 0xe60c }, /* 0xe60d */ { false, 0xe60d, 0xe60d }, /* 0xe60e */ { false, 0xe60e, 0xe60e }, /* 0xe60f */ { false, 0xe60f, 0xe60f }, /* 0xe610 */ { false, 0xe610, 0xe610 }, /* 0xe611 */ { false, 0xe611, 0xe611 }, /* 0xe612 */ { false, 0xe612, 0xe612 }, /* 0xe613 */ { false, 0xe613, 0xe613 }, /* 0xe614 */ { false, 0xe614, 0xe614 }, /* 0xe615 */ { false, 0xe615, 0xe615 }, /* 0xe616 */ { false, 0xe616, 0xe616 }, /* 0xe617 */ { false, 0xe617, 0xe617 }, /* 0xe618 */ { false, 0xe618, 0xe618 }, /* 0xe619 */ { false, 0xe619, 0xe619 }, /* 0xe61a */ { false, 0xe61a, 0xe61a }, /* 0xe61b */ { false, 0xe61b, 0xe61b }, /* 0xe61c */ { false, 0xe61c, 0xe61c }, /* 0xe61d */ { false, 0xe61d, 0xe61d }, /* 0xe61e */ { false, 0xe61e, 0xe61e }, /* 0xe61f */ { false, 0xe61f, 0xe61f }, /* 0xe620 */ { false, 0xe620, 0xe620 }, /* 0xe621 */ { false, 0xe621, 0xe621 }, /* 0xe622 */ { false, 0xe622, 0xe622 }, /* 0xe623 */ { false, 0xe623, 0xe623 }, /* 0xe624 */ { false, 0xe624, 0xe624 }, /* 0xe625 */ { false, 0xe625, 0xe625 }, /* 0xe626 */ { false, 0xe626, 0xe626 }, /* 0xe627 */ { false, 0xe627, 0xe627 }, /* 0xe628 */ { false, 0xe628, 0xe628 }, /* 0xe629 */ { false, 0xe629, 0xe629 }, /* 0xe62a */ { false, 0xe62a, 0xe62a }, /* 0xe62b */ { false, 0xe62b, 0xe62b }, /* 0xe62c */ { false, 0xe62c, 0xe62c }, /* 0xe62d */ { false, 0xe62d, 0xe62d }, /* 0xe62e */ { false, 0xe62e, 0xe62e }, /* 0xe62f */ { false, 0xe62f, 0xe62f }, /* 0xe630 */ { false, 0xe630, 0xe630 }, /* 0xe631 */ { false, 0xe631, 0xe631 }, /* 0xe632 */ { false, 0xe632, 0xe632 }, /* 0xe633 */ { false, 0xe633, 0xe633 }, /* 0xe634 */ { false, 0xe634, 0xe634 }, /* 0xe635 */ { false, 0xe635, 0xe635 }, /* 0xe636 */ { false, 0xe636, 0xe636 }, /* 0xe637 */ { false, 0xe637, 0xe637 }, /* 0xe638 */ { false, 0xe638, 0xe638 }, /* 0xe639 */ { false, 0xe639, 0xe639 }, /* 0xe63a */ { false, 0xe63a, 0xe63a }, /* 0xe63b */ { false, 0xe63b, 0xe63b }, /* 0xe63c */ { false, 0xe63c, 0xe63c }, /* 0xe63d */ { false, 0xe63d, 0xe63d }, /* 0xe63e */ { false, 0xe63e, 0xe63e }, /* 0xe63f */ { false, 0xe63f, 0xe63f }, /* 0xe640 */ { false, 0xe640, 0xe640 }, /* 0xe641 */ { false, 0xe641, 0xe641 }, /* 0xe642 */ { false, 0xe642, 0xe642 }, /* 0xe643 */ { false, 0xe643, 0xe643 }, /* 0xe644 */ { false, 0xe644, 0xe644 }, /* 0xe645 */ { false, 0xe645, 0xe645 }, /* 0xe646 */ { false, 0xe646, 0xe646 }, /* 0xe647 */ { false, 0xe647, 0xe647 }, /* 0xe648 */ { false, 0xe648, 0xe648 }, /* 0xe649 */ { false, 0xe649, 0xe649 }, /* 0xe64a */ { false, 0xe64a, 0xe64a }, /* 0xe64b */ { false, 0xe64b, 0xe64b }, /* 0xe64c */ { false, 0xe64c, 0xe64c }, /* 0xe64d */ { false, 0xe64d, 0xe64d }, /* 0xe64e */ { false, 0xe64e, 0xe64e }, /* 0xe64f */ { false, 0xe64f, 0xe64f }, /* 0xe650 */ { false, 0xe650, 0xe650 }, /* 0xe651 */ { false, 0xe651, 0xe651 }, /* 0xe652 */ { false, 0xe652, 0xe652 }, /* 0xe653 */ { false, 0xe653, 0xe653 }, /* 0xe654 */ { false, 0xe654, 0xe654 }, /* 0xe655 */ { false, 0xe655, 0xe655 }, /* 0xe656 */ { false, 0xe656, 0xe656 }, /* 0xe657 */ { false, 0xe657, 0xe657 }, /* 0xe658 */ { false, 0xe658, 0xe658 }, /* 0xe659 */ { false, 0xe659, 0xe659 }, /* 0xe65a */ { false, 0xe65a, 0xe65a }, /* 0xe65b */ { false, 0xe65b, 0xe65b }, /* 0xe65c */ { false, 0xe65c, 0xe65c }, /* 0xe65d */ { false, 0xe65d, 0xe65d }, /* 0xe65e */ { false, 0xe65e, 0xe65e }, /* 0xe65f */ { false, 0xe65f, 0xe65f }, /* 0xe660 */ { false, 0xe660, 0xe660 }, /* 0xe661 */ { false, 0xe661, 0xe661 }, /* 0xe662 */ { false, 0xe662, 0xe662 }, /* 0xe663 */ { false, 0xe663, 0xe663 }, /* 0xe664 */ { false, 0xe664, 0xe664 }, /* 0xe665 */ { false, 0xe665, 0xe665 }, /* 0xe666 */ { false, 0xe666, 0xe666 }, /* 0xe667 */ { false, 0xe667, 0xe667 }, /* 0xe668 */ { false, 0xe668, 0xe668 }, /* 0xe669 */ { false, 0xe669, 0xe669 }, /* 0xe66a */ { false, 0xe66a, 0xe66a }, /* 0xe66b */ { false, 0xe66b, 0xe66b }, /* 0xe66c */ { false, 0xe66c, 0xe66c }, /* 0xe66d */ { false, 0xe66d, 0xe66d }, /* 0xe66e */ { false, 0xe66e, 0xe66e }, /* 0xe66f */ { false, 0xe66f, 0xe66f }, /* 0xe670 */ { false, 0xe670, 0xe670 }, /* 0xe671 */ { false, 0xe671, 0xe671 }, /* 0xe672 */ { false, 0xe672, 0xe672 }, /* 0xe673 */ { false, 0xe673, 0xe673 }, /* 0xe674 */ { false, 0xe674, 0xe674 }, /* 0xe675 */ { false, 0xe675, 0xe675 }, /* 0xe676 */ { false, 0xe676, 0xe676 }, /* 0xe677 */ { false, 0xe677, 0xe677 }, /* 0xe678 */ { false, 0xe678, 0xe678 }, /* 0xe679 */ { false, 0xe679, 0xe679 }, /* 0xe67a */ { false, 0xe67a, 0xe67a }, /* 0xe67b */ { false, 0xe67b, 0xe67b }, /* 0xe67c */ { false, 0xe67c, 0xe67c }, /* 0xe67d */ { false, 0xe67d, 0xe67d }, /* 0xe67e */ { false, 0xe67e, 0xe67e }, /* 0xe67f */ { false, 0xe67f, 0xe67f }, /* 0xe680 */ { false, 0xe680, 0xe680 }, /* 0xe681 */ { false, 0xe681, 0xe681 }, /* 0xe682 */ { false, 0xe682, 0xe682 }, /* 0xe683 */ { false, 0xe683, 0xe683 }, /* 0xe684 */ { false, 0xe684, 0xe684 }, /* 0xe685 */ { false, 0xe685, 0xe685 }, /* 0xe686 */ { false, 0xe686, 0xe686 }, /* 0xe687 */ { false, 0xe687, 0xe687 }, /* 0xe688 */ { false, 0xe688, 0xe688 }, /* 0xe689 */ { false, 0xe689, 0xe689 }, /* 0xe68a */ { false, 0xe68a, 0xe68a }, /* 0xe68b */ { false, 0xe68b, 0xe68b }, /* 0xe68c */ { false, 0xe68c, 0xe68c }, /* 0xe68d */ { false, 0xe68d, 0xe68d }, /* 0xe68e */ { false, 0xe68e, 0xe68e }, /* 0xe68f */ { false, 0xe68f, 0xe68f }, /* 0xe690 */ { false, 0xe690, 0xe690 }, /* 0xe691 */ { false, 0xe691, 0xe691 }, /* 0xe692 */ { false, 0xe692, 0xe692 }, /* 0xe693 */ { false, 0xe693, 0xe693 }, /* 0xe694 */ { false, 0xe694, 0xe694 }, /* 0xe695 */ { false, 0xe695, 0xe695 }, /* 0xe696 */ { false, 0xe696, 0xe696 }, /* 0xe697 */ { false, 0xe697, 0xe697 }, /* 0xe698 */ { false, 0xe698, 0xe698 }, /* 0xe699 */ { false, 0xe699, 0xe699 }, /* 0xe69a */ { false, 0xe69a, 0xe69a }, /* 0xe69b */ { false, 0xe69b, 0xe69b }, /* 0xe69c */ { false, 0xe69c, 0xe69c }, /* 0xe69d */ { false, 0xe69d, 0xe69d }, /* 0xe69e */ { false, 0xe69e, 0xe69e }, /* 0xe69f */ { false, 0xe69f, 0xe69f }, /* 0xe6a0 */ { false, 0xe6a0, 0xe6a0 }, /* 0xe6a1 */ { false, 0xe6a1, 0xe6a1 }, /* 0xe6a2 */ { false, 0xe6a2, 0xe6a2 }, /* 0xe6a3 */ { false, 0xe6a3, 0xe6a3 }, /* 0xe6a4 */ { false, 0xe6a4, 0xe6a4 }, /* 0xe6a5 */ { false, 0xe6a5, 0xe6a5 }, /* 0xe6a6 */ { false, 0xe6a6, 0xe6a6 }, /* 0xe6a7 */ { false, 0xe6a7, 0xe6a7 }, /* 0xe6a8 */ { false, 0xe6a8, 0xe6a8 }, /* 0xe6a9 */ { false, 0xe6a9, 0xe6a9 }, /* 0xe6aa */ { false, 0xe6aa, 0xe6aa }, /* 0xe6ab */ { false, 0xe6ab, 0xe6ab }, /* 0xe6ac */ { false, 0xe6ac, 0xe6ac }, /* 0xe6ad */ { false, 0xe6ad, 0xe6ad }, /* 0xe6ae */ { false, 0xe6ae, 0xe6ae }, /* 0xe6af */ { false, 0xe6af, 0xe6af }, /* 0xe6b0 */ { false, 0xe6b0, 0xe6b0 }, /* 0xe6b1 */ { false, 0xe6b1, 0xe6b1 }, /* 0xe6b2 */ { false, 0xe6b2, 0xe6b2 }, /* 0xe6b3 */ { false, 0xe6b3, 0xe6b3 }, /* 0xe6b4 */ { false, 0xe6b4, 0xe6b4 }, /* 0xe6b5 */ { false, 0xe6b5, 0xe6b5 }, /* 0xe6b6 */ { false, 0xe6b6, 0xe6b6 }, /* 0xe6b7 */ { false, 0xe6b7, 0xe6b7 }, /* 0xe6b8 */ { false, 0xe6b8, 0xe6b8 }, /* 0xe6b9 */ { false, 0xe6b9, 0xe6b9 }, /* 0xe6ba */ { false, 0xe6ba, 0xe6ba }, /* 0xe6bb */ { false, 0xe6bb, 0xe6bb }, /* 0xe6bc */ { false, 0xe6bc, 0xe6bc }, /* 0xe6bd */ { false, 0xe6bd, 0xe6bd }, /* 0xe6be */ { false, 0xe6be, 0xe6be }, /* 0xe6bf */ { false, 0xe6bf, 0xe6bf }, /* 0xe6c0 */ { false, 0xe6c0, 0xe6c0 }, /* 0xe6c1 */ { false, 0xe6c1, 0xe6c1 }, /* 0xe6c2 */ { false, 0xe6c2, 0xe6c2 }, /* 0xe6c3 */ { false, 0xe6c3, 0xe6c3 }, /* 0xe6c4 */ { false, 0xe6c4, 0xe6c4 }, /* 0xe6c5 */ { false, 0xe6c5, 0xe6c5 }, /* 0xe6c6 */ { false, 0xe6c6, 0xe6c6 }, /* 0xe6c7 */ { false, 0xe6c7, 0xe6c7 }, /* 0xe6c8 */ { false, 0xe6c8, 0xe6c8 }, /* 0xe6c9 */ { false, 0xe6c9, 0xe6c9 }, /* 0xe6ca */ { false, 0xe6ca, 0xe6ca }, /* 0xe6cb */ { false, 0xe6cb, 0xe6cb }, /* 0xe6cc */ { false, 0xe6cc, 0xe6cc }, /* 0xe6cd */ { false, 0xe6cd, 0xe6cd }, /* 0xe6ce */ { false, 0xe6ce, 0xe6ce }, /* 0xe6cf */ { false, 0xe6cf, 0xe6cf }, /* 0xe6d0 */ { false, 0xe6d0, 0xe6d0 }, /* 0xe6d1 */ { false, 0xe6d1, 0xe6d1 }, /* 0xe6d2 */ { false, 0xe6d2, 0xe6d2 }, /* 0xe6d3 */ { false, 0xe6d3, 0xe6d3 }, /* 0xe6d4 */ { false, 0xe6d4, 0xe6d4 }, /* 0xe6d5 */ { false, 0xe6d5, 0xe6d5 }, /* 0xe6d6 */ { false, 0xe6d6, 0xe6d6 }, /* 0xe6d7 */ { false, 0xe6d7, 0xe6d7 }, /* 0xe6d8 */ { false, 0xe6d8, 0xe6d8 }, /* 0xe6d9 */ { false, 0xe6d9, 0xe6d9 }, /* 0xe6da */ { false, 0xe6da, 0xe6da }, /* 0xe6db */ { false, 0xe6db, 0xe6db }, /* 0xe6dc */ { false, 0xe6dc, 0xe6dc }, /* 0xe6dd */ { false, 0xe6dd, 0xe6dd }, /* 0xe6de */ { false, 0xe6de, 0xe6de }, /* 0xe6df */ { false, 0xe6df, 0xe6df }, /* 0xe6e0 */ { false, 0xe6e0, 0xe6e0 }, /* 0xe6e1 */ { false, 0xe6e1, 0xe6e1 }, /* 0xe6e2 */ { false, 0xe6e2, 0xe6e2 }, /* 0xe6e3 */ { false, 0xe6e3, 0xe6e3 }, /* 0xe6e4 */ { false, 0xe6e4, 0xe6e4 }, /* 0xe6e5 */ { false, 0xe6e5, 0xe6e5 }, /* 0xe6e6 */ { false, 0xe6e6, 0xe6e6 }, /* 0xe6e7 */ { false, 0xe6e7, 0xe6e7 }, /* 0xe6e8 */ { false, 0xe6e8, 0xe6e8 }, /* 0xe6e9 */ { false, 0xe6e9, 0xe6e9 }, /* 0xe6ea */ { false, 0xe6ea, 0xe6ea }, /* 0xe6eb */ { false, 0xe6eb, 0xe6eb }, /* 0xe6ec */ { false, 0xe6ec, 0xe6ec }, /* 0xe6ed */ { false, 0xe6ed, 0xe6ed }, /* 0xe6ee */ { false, 0xe6ee, 0xe6ee }, /* 0xe6ef */ { false, 0xe6ef, 0xe6ef }, /* 0xe6f0 */ { false, 0xe6f0, 0xe6f0 }, /* 0xe6f1 */ { false, 0xe6f1, 0xe6f1 }, /* 0xe6f2 */ { false, 0xe6f2, 0xe6f2 }, /* 0xe6f3 */ { false, 0xe6f3, 0xe6f3 }, /* 0xe6f4 */ { false, 0xe6f4, 0xe6f4 }, /* 0xe6f5 */ { false, 0xe6f5, 0xe6f5 }, /* 0xe6f6 */ { false, 0xe6f6, 0xe6f6 }, /* 0xe6f7 */ { false, 0xe6f7, 0xe6f7 }, /* 0xe6f8 */ { false, 0xe6f8, 0xe6f8 }, /* 0xe6f9 */ { false, 0xe6f9, 0xe6f9 }, /* 0xe6fa */ { false, 0xe6fa, 0xe6fa }, /* 0xe6fb */ { false, 0xe6fb, 0xe6fb }, /* 0xe6fc */ { false, 0xe6fc, 0xe6fc }, /* 0xe6fd */ { false, 0xe6fd, 0xe6fd }, /* 0xe6fe */ { false, 0xe6fe, 0xe6fe }, /* 0xe6ff */ { false, 0xe6ff, 0xe6ff }, /* 0xe700 */ { false, 0xe700, 0xe700 }, /* 0xe701 */ { false, 0xe701, 0xe701 }, /* 0xe702 */ { false, 0xe702, 0xe702 }, /* 0xe703 */ { false, 0xe703, 0xe703 }, /* 0xe704 */ { false, 0xe704, 0xe704 }, /* 0xe705 */ { false, 0xe705, 0xe705 }, /* 0xe706 */ { false, 0xe706, 0xe706 }, /* 0xe707 */ { false, 0xe707, 0xe707 }, /* 0xe708 */ { false, 0xe708, 0xe708 }, /* 0xe709 */ { false, 0xe709, 0xe709 }, /* 0xe70a */ { false, 0xe70a, 0xe70a }, /* 0xe70b */ { false, 0xe70b, 0xe70b }, /* 0xe70c */ { false, 0xe70c, 0xe70c }, /* 0xe70d */ { false, 0xe70d, 0xe70d }, /* 0xe70e */ { false, 0xe70e, 0xe70e }, /* 0xe70f */ { false, 0xe70f, 0xe70f }, /* 0xe710 */ { false, 0xe710, 0xe710 }, /* 0xe711 */ { false, 0xe711, 0xe711 }, /* 0xe712 */ { false, 0xe712, 0xe712 }, /* 0xe713 */ { false, 0xe713, 0xe713 }, /* 0xe714 */ { false, 0xe714, 0xe714 }, /* 0xe715 */ { false, 0xe715, 0xe715 }, /* 0xe716 */ { false, 0xe716, 0xe716 }, /* 0xe717 */ { false, 0xe717, 0xe717 }, /* 0xe718 */ { false, 0xe718, 0xe718 }, /* 0xe719 */ { false, 0xe719, 0xe719 }, /* 0xe71a */ { false, 0xe71a, 0xe71a }, /* 0xe71b */ { false, 0xe71b, 0xe71b }, /* 0xe71c */ { false, 0xe71c, 0xe71c }, /* 0xe71d */ { false, 0xe71d, 0xe71d }, /* 0xe71e */ { false, 0xe71e, 0xe71e }, /* 0xe71f */ { false, 0xe71f, 0xe71f }, /* 0xe720 */ { false, 0xe720, 0xe720 }, /* 0xe721 */ { false, 0xe721, 0xe721 }, /* 0xe722 */ { false, 0xe722, 0xe722 }, /* 0xe723 */ { false, 0xe723, 0xe723 }, /* 0xe724 */ { false, 0xe724, 0xe724 }, /* 0xe725 */ { false, 0xe725, 0xe725 }, /* 0xe726 */ { false, 0xe726, 0xe726 }, /* 0xe727 */ { false, 0xe727, 0xe727 }, /* 0xe728 */ { false, 0xe728, 0xe728 }, /* 0xe729 */ { false, 0xe729, 0xe729 }, /* 0xe72a */ { false, 0xe72a, 0xe72a }, /* 0xe72b */ { false, 0xe72b, 0xe72b }, /* 0xe72c */ { false, 0xe72c, 0xe72c }, /* 0xe72d */ { false, 0xe72d, 0xe72d }, /* 0xe72e */ { false, 0xe72e, 0xe72e }, /* 0xe72f */ { false, 0xe72f, 0xe72f }, /* 0xe730 */ { false, 0xe730, 0xe730 }, /* 0xe731 */ { false, 0xe731, 0xe731 }, /* 0xe732 */ { false, 0xe732, 0xe732 }, /* 0xe733 */ { false, 0xe733, 0xe733 }, /* 0xe734 */ { false, 0xe734, 0xe734 }, /* 0xe735 */ { false, 0xe735, 0xe735 }, /* 0xe736 */ { false, 0xe736, 0xe736 }, /* 0xe737 */ { false, 0xe737, 0xe737 }, /* 0xe738 */ { false, 0xe738, 0xe738 }, /* 0xe739 */ { false, 0xe739, 0xe739 }, /* 0xe73a */ { false, 0xe73a, 0xe73a }, /* 0xe73b */ { false, 0xe73b, 0xe73b }, /* 0xe73c */ { false, 0xe73c, 0xe73c }, /* 0xe73d */ { false, 0xe73d, 0xe73d }, /* 0xe73e */ { false, 0xe73e, 0xe73e }, /* 0xe73f */ { false, 0xe73f, 0xe73f }, /* 0xe740 */ { false, 0xe740, 0xe740 }, /* 0xe741 */ { false, 0xe741, 0xe741 }, /* 0xe742 */ { false, 0xe742, 0xe742 }, /* 0xe743 */ { false, 0xe743, 0xe743 }, /* 0xe744 */ { false, 0xe744, 0xe744 }, /* 0xe745 */ { false, 0xe745, 0xe745 }, /* 0xe746 */ { false, 0xe746, 0xe746 }, /* 0xe747 */ { false, 0xe747, 0xe747 }, /* 0xe748 */ { false, 0xe748, 0xe748 }, /* 0xe749 */ { false, 0xe749, 0xe749 }, /* 0xe74a */ { false, 0xe74a, 0xe74a }, /* 0xe74b */ { false, 0xe74b, 0xe74b }, /* 0xe74c */ { false, 0xe74c, 0xe74c }, /* 0xe74d */ { false, 0xe74d, 0xe74d }, /* 0xe74e */ { false, 0xe74e, 0xe74e }, /* 0xe74f */ { false, 0xe74f, 0xe74f }, /* 0xe750 */ { false, 0xe750, 0xe750 }, /* 0xe751 */ { false, 0xe751, 0xe751 }, /* 0xe752 */ { false, 0xe752, 0xe752 }, /* 0xe753 */ { false, 0xe753, 0xe753 }, /* 0xe754 */ { false, 0xe754, 0xe754 }, /* 0xe755 */ { false, 0xe755, 0xe755 }, /* 0xe756 */ { false, 0xe756, 0xe756 }, /* 0xe757 */ { false, 0xe757, 0xe757 }, /* 0xe758 */ { false, 0xe758, 0xe758 }, /* 0xe759 */ { false, 0xe759, 0xe759 }, /* 0xe75a */ { false, 0xe75a, 0xe75a }, /* 0xe75b */ { false, 0xe75b, 0xe75b }, /* 0xe75c */ { false, 0xe75c, 0xe75c }, /* 0xe75d */ { false, 0xe75d, 0xe75d }, /* 0xe75e */ { false, 0xe75e, 0xe75e }, /* 0xe75f */ { false, 0xe75f, 0xe75f }, /* 0xe760 */ { false, 0xe760, 0xe760 }, /* 0xe761 */ { false, 0xe761, 0xe761 }, /* 0xe762 */ { false, 0xe762, 0xe762 }, /* 0xe763 */ { false, 0xe763, 0xe763 }, /* 0xe764 */ { false, 0xe764, 0xe764 }, /* 0xe765 */ { false, 0xe765, 0xe765 }, /* 0xe766 */ { false, 0xe766, 0xe766 }, /* 0xe767 */ { false, 0xe767, 0xe767 }, /* 0xe768 */ { false, 0xe768, 0xe768 }, /* 0xe769 */ { false, 0xe769, 0xe769 }, /* 0xe76a */ { false, 0xe76a, 0xe76a }, /* 0xe76b */ { false, 0xe76b, 0xe76b }, /* 0xe76c */ { false, 0xe76c, 0xe76c }, /* 0xe76d */ { false, 0xe76d, 0xe76d }, /* 0xe76e */ { false, 0xe76e, 0xe76e }, /* 0xe76f */ { false, 0xe76f, 0xe76f }, /* 0xe770 */ { false, 0xe770, 0xe770 }, /* 0xe771 */ { false, 0xe771, 0xe771 }, /* 0xe772 */ { false, 0xe772, 0xe772 }, /* 0xe773 */ { false, 0xe773, 0xe773 }, /* 0xe774 */ { false, 0xe774, 0xe774 }, /* 0xe775 */ { false, 0xe775, 0xe775 }, /* 0xe776 */ { false, 0xe776, 0xe776 }, /* 0xe777 */ { false, 0xe777, 0xe777 }, /* 0xe778 */ { false, 0xe778, 0xe778 }, /* 0xe779 */ { false, 0xe779, 0xe779 }, /* 0xe77a */ { false, 0xe77a, 0xe77a }, /* 0xe77b */ { false, 0xe77b, 0xe77b }, /* 0xe77c */ { false, 0xe77c, 0xe77c }, /* 0xe77d */ { false, 0xe77d, 0xe77d }, /* 0xe77e */ { false, 0xe77e, 0xe77e }, /* 0xe77f */ { false, 0xe77f, 0xe77f }, /* 0xe780 */ { false, 0xe780, 0xe780 }, /* 0xe781 */ { false, 0xe781, 0xe781 }, /* 0xe782 */ { false, 0xe782, 0xe782 }, /* 0xe783 */ { false, 0xe783, 0xe783 }, /* 0xe784 */ { false, 0xe784, 0xe784 }, /* 0xe785 */ { false, 0xe785, 0xe785 }, /* 0xe786 */ { false, 0xe786, 0xe786 }, /* 0xe787 */ { false, 0xe787, 0xe787 }, /* 0xe788 */ { false, 0xe788, 0xe788 }, /* 0xe789 */ { false, 0xe789, 0xe789 }, /* 0xe78a */ { false, 0xe78a, 0xe78a }, /* 0xe78b */ { false, 0xe78b, 0xe78b }, /* 0xe78c */ { false, 0xe78c, 0xe78c }, /* 0xe78d */ { false, 0xe78d, 0xe78d }, /* 0xe78e */ { false, 0xe78e, 0xe78e }, /* 0xe78f */ { false, 0xe78f, 0xe78f }, /* 0xe790 */ { false, 0xe790, 0xe790 }, /* 0xe791 */ { false, 0xe791, 0xe791 }, /* 0xe792 */ { false, 0xe792, 0xe792 }, /* 0xe793 */ { false, 0xe793, 0xe793 }, /* 0xe794 */ { false, 0xe794, 0xe794 }, /* 0xe795 */ { false, 0xe795, 0xe795 }, /* 0xe796 */ { false, 0xe796, 0xe796 }, /* 0xe797 */ { false, 0xe797, 0xe797 }, /* 0xe798 */ { false, 0xe798, 0xe798 }, /* 0xe799 */ { false, 0xe799, 0xe799 }, /* 0xe79a */ { false, 0xe79a, 0xe79a }, /* 0xe79b */ { false, 0xe79b, 0xe79b }, /* 0xe79c */ { false, 0xe79c, 0xe79c }, /* 0xe79d */ { false, 0xe79d, 0xe79d }, /* 0xe79e */ { false, 0xe79e, 0xe79e }, /* 0xe79f */ { false, 0xe79f, 0xe79f }, /* 0xe7a0 */ { false, 0xe7a0, 0xe7a0 }, /* 0xe7a1 */ { false, 0xe7a1, 0xe7a1 }, /* 0xe7a2 */ { false, 0xe7a2, 0xe7a2 }, /* 0xe7a3 */ { false, 0xe7a3, 0xe7a3 }, /* 0xe7a4 */ { false, 0xe7a4, 0xe7a4 }, /* 0xe7a5 */ { false, 0xe7a5, 0xe7a5 }, /* 0xe7a6 */ { false, 0xe7a6, 0xe7a6 }, /* 0xe7a7 */ { false, 0xe7a7, 0xe7a7 }, /* 0xe7a8 */ { false, 0xe7a8, 0xe7a8 }, /* 0xe7a9 */ { false, 0xe7a9, 0xe7a9 }, /* 0xe7aa */ { false, 0xe7aa, 0xe7aa }, /* 0xe7ab */ { false, 0xe7ab, 0xe7ab }, /* 0xe7ac */ { false, 0xe7ac, 0xe7ac }, /* 0xe7ad */ { false, 0xe7ad, 0xe7ad }, /* 0xe7ae */ { false, 0xe7ae, 0xe7ae }, /* 0xe7af */ { false, 0xe7af, 0xe7af }, /* 0xe7b0 */ { false, 0xe7b0, 0xe7b0 }, /* 0xe7b1 */ { false, 0xe7b1, 0xe7b1 }, /* 0xe7b2 */ { false, 0xe7b2, 0xe7b2 }, /* 0xe7b3 */ { false, 0xe7b3, 0xe7b3 }, /* 0xe7b4 */ { false, 0xe7b4, 0xe7b4 }, /* 0xe7b5 */ { false, 0xe7b5, 0xe7b5 }, /* 0xe7b6 */ { false, 0xe7b6, 0xe7b6 }, /* 0xe7b7 */ { false, 0xe7b7, 0xe7b7 }, /* 0xe7b8 */ { false, 0xe7b8, 0xe7b8 }, /* 0xe7b9 */ { false, 0xe7b9, 0xe7b9 }, /* 0xe7ba */ { false, 0xe7ba, 0xe7ba }, /* 0xe7bb */ { false, 0xe7bb, 0xe7bb }, /* 0xe7bc */ { false, 0xe7bc, 0xe7bc }, /* 0xe7bd */ { false, 0xe7bd, 0xe7bd }, /* 0xe7be */ { false, 0xe7be, 0xe7be }, /* 0xe7bf */ { false, 0xe7bf, 0xe7bf }, /* 0xe7c0 */ { false, 0xe7c0, 0xe7c0 }, /* 0xe7c1 */ { false, 0xe7c1, 0xe7c1 }, /* 0xe7c2 */ { false, 0xe7c2, 0xe7c2 }, /* 0xe7c3 */ { false, 0xe7c3, 0xe7c3 }, /* 0xe7c4 */ { false, 0xe7c4, 0xe7c4 }, /* 0xe7c5 */ { false, 0xe7c5, 0xe7c5 }, /* 0xe7c6 */ { false, 0xe7c6, 0xe7c6 }, /* 0xe7c7 */ { false, 0xe7c7, 0xe7c7 }, /* 0xe7c8 */ { false, 0xe7c8, 0xe7c8 }, /* 0xe7c9 */ { false, 0xe7c9, 0xe7c9 }, /* 0xe7ca */ { false, 0xe7ca, 0xe7ca }, /* 0xe7cb */ { false, 0xe7cb, 0xe7cb }, /* 0xe7cc */ { false, 0xe7cc, 0xe7cc }, /* 0xe7cd */ { false, 0xe7cd, 0xe7cd }, /* 0xe7ce */ { false, 0xe7ce, 0xe7ce }, /* 0xe7cf */ { false, 0xe7cf, 0xe7cf }, /* 0xe7d0 */ { false, 0xe7d0, 0xe7d0 }, /* 0xe7d1 */ { false, 0xe7d1, 0xe7d1 }, /* 0xe7d2 */ { false, 0xe7d2, 0xe7d2 }, /* 0xe7d3 */ { false, 0xe7d3, 0xe7d3 }, /* 0xe7d4 */ { false, 0xe7d4, 0xe7d4 }, /* 0xe7d5 */ { false, 0xe7d5, 0xe7d5 }, /* 0xe7d6 */ { false, 0xe7d6, 0xe7d6 }, /* 0xe7d7 */ { false, 0xe7d7, 0xe7d7 }, /* 0xe7d8 */ { false, 0xe7d8, 0xe7d8 }, /* 0xe7d9 */ { false, 0xe7d9, 0xe7d9 }, /* 0xe7da */ { false, 0xe7da, 0xe7da }, /* 0xe7db */ { false, 0xe7db, 0xe7db }, /* 0xe7dc */ { false, 0xe7dc, 0xe7dc }, /* 0xe7dd */ { false, 0xe7dd, 0xe7dd }, /* 0xe7de */ { false, 0xe7de, 0xe7de }, /* 0xe7df */ { false, 0xe7df, 0xe7df }, /* 0xe7e0 */ { false, 0xe7e0, 0xe7e0 }, /* 0xe7e1 */ { false, 0xe7e1, 0xe7e1 }, /* 0xe7e2 */ { false, 0xe7e2, 0xe7e2 }, /* 0xe7e3 */ { false, 0xe7e3, 0xe7e3 }, /* 0xe7e4 */ { false, 0xe7e4, 0xe7e4 }, /* 0xe7e5 */ { false, 0xe7e5, 0xe7e5 }, /* 0xe7e6 */ { false, 0xe7e6, 0xe7e6 }, /* 0xe7e7 */ { false, 0xe7e7, 0xe7e7 }, /* 0xe7e8 */ { false, 0xe7e8, 0xe7e8 }, /* 0xe7e9 */ { false, 0xe7e9, 0xe7e9 }, /* 0xe7ea */ { false, 0xe7ea, 0xe7ea }, /* 0xe7eb */ { false, 0xe7eb, 0xe7eb }, /* 0xe7ec */ { false, 0xe7ec, 0xe7ec }, /* 0xe7ed */ { false, 0xe7ed, 0xe7ed }, /* 0xe7ee */ { false, 0xe7ee, 0xe7ee }, /* 0xe7ef */ { false, 0xe7ef, 0xe7ef }, /* 0xe7f0 */ { false, 0xe7f0, 0xe7f0 }, /* 0xe7f1 */ { false, 0xe7f1, 0xe7f1 }, /* 0xe7f2 */ { false, 0xe7f2, 0xe7f2 }, /* 0xe7f3 */ { false, 0xe7f3, 0xe7f3 }, /* 0xe7f4 */ { false, 0xe7f4, 0xe7f4 }, /* 0xe7f5 */ { false, 0xe7f5, 0xe7f5 }, /* 0xe7f6 */ { false, 0xe7f6, 0xe7f6 }, /* 0xe7f7 */ { false, 0xe7f7, 0xe7f7 }, /* 0xe7f8 */ { false, 0xe7f8, 0xe7f8 }, /* 0xe7f9 */ { false, 0xe7f9, 0xe7f9 }, /* 0xe7fa */ { false, 0xe7fa, 0xe7fa }, /* 0xe7fb */ { false, 0xe7fb, 0xe7fb }, /* 0xe7fc */ { false, 0xe7fc, 0xe7fc }, /* 0xe7fd */ { false, 0xe7fd, 0xe7fd }, /* 0xe7fe */ { false, 0xe7fe, 0xe7fe }, /* 0xe7ff */ { false, 0xe7ff, 0xe7ff }, /* 0xe800 */ { false, 0xe800, 0xe800 }, /* 0xe801 */ { false, 0xe801, 0xe801 }, /* 0xe802 */ { false, 0xe802, 0xe802 }, /* 0xe803 */ { false, 0xe803, 0xe803 }, /* 0xe804 */ { false, 0xe804, 0xe804 }, /* 0xe805 */ { false, 0xe805, 0xe805 }, /* 0xe806 */ { false, 0xe806, 0xe806 }, /* 0xe807 */ { false, 0xe807, 0xe807 }, /* 0xe808 */ { false, 0xe808, 0xe808 }, /* 0xe809 */ { false, 0xe809, 0xe809 }, /* 0xe80a */ { false, 0xe80a, 0xe80a }, /* 0xe80b */ { false, 0xe80b, 0xe80b }, /* 0xe80c */ { false, 0xe80c, 0xe80c }, /* 0xe80d */ { false, 0xe80d, 0xe80d }, /* 0xe80e */ { false, 0xe80e, 0xe80e }, /* 0xe80f */ { false, 0xe80f, 0xe80f }, /* 0xe810 */ { false, 0xe810, 0xe810 }, /* 0xe811 */ { false, 0xe811, 0xe811 }, /* 0xe812 */ { false, 0xe812, 0xe812 }, /* 0xe813 */ { false, 0xe813, 0xe813 }, /* 0xe814 */ { false, 0xe814, 0xe814 }, /* 0xe815 */ { false, 0xe815, 0xe815 }, /* 0xe816 */ { false, 0xe816, 0xe816 }, /* 0xe817 */ { false, 0xe817, 0xe817 }, /* 0xe818 */ { false, 0xe818, 0xe818 }, /* 0xe819 */ { false, 0xe819, 0xe819 }, /* 0xe81a */ { false, 0xe81a, 0xe81a }, /* 0xe81b */ { false, 0xe81b, 0xe81b }, /* 0xe81c */ { false, 0xe81c, 0xe81c }, /* 0xe81d */ { false, 0xe81d, 0xe81d }, /* 0xe81e */ { false, 0xe81e, 0xe81e }, /* 0xe81f */ { false, 0xe81f, 0xe81f }, /* 0xe820 */ { false, 0xe820, 0xe820 }, /* 0xe821 */ { false, 0xe821, 0xe821 }, /* 0xe822 */ { false, 0xe822, 0xe822 }, /* 0xe823 */ { false, 0xe823, 0xe823 }, /* 0xe824 */ { false, 0xe824, 0xe824 }, /* 0xe825 */ { false, 0xe825, 0xe825 }, /* 0xe826 */ { false, 0xe826, 0xe826 }, /* 0xe827 */ { false, 0xe827, 0xe827 }, /* 0xe828 */ { false, 0xe828, 0xe828 }, /* 0xe829 */ { false, 0xe829, 0xe829 }, /* 0xe82a */ { false, 0xe82a, 0xe82a }, /* 0xe82b */ { false, 0xe82b, 0xe82b }, /* 0xe82c */ { false, 0xe82c, 0xe82c }, /* 0xe82d */ { false, 0xe82d, 0xe82d }, /* 0xe82e */ { false, 0xe82e, 0xe82e }, /* 0xe82f */ { false, 0xe82f, 0xe82f }, /* 0xe830 */ { false, 0xe830, 0xe830 }, /* 0xe831 */ { false, 0xe831, 0xe831 }, /* 0xe832 */ { false, 0xe832, 0xe832 }, /* 0xe833 */ { false, 0xe833, 0xe833 }, /* 0xe834 */ { false, 0xe834, 0xe834 }, /* 0xe835 */ { false, 0xe835, 0xe835 }, /* 0xe836 */ { false, 0xe836, 0xe836 }, /* 0xe837 */ { false, 0xe837, 0xe837 }, /* 0xe838 */ { false, 0xe838, 0xe838 }, /* 0xe839 */ { false, 0xe839, 0xe839 }, /* 0xe83a */ { false, 0xe83a, 0xe83a }, /* 0xe83b */ { false, 0xe83b, 0xe83b }, /* 0xe83c */ { false, 0xe83c, 0xe83c }, /* 0xe83d */ { false, 0xe83d, 0xe83d }, /* 0xe83e */ { false, 0xe83e, 0xe83e }, /* 0xe83f */ { false, 0xe83f, 0xe83f }, /* 0xe840 */ { false, 0xe840, 0xe840 }, /* 0xe841 */ { false, 0xe841, 0xe841 }, /* 0xe842 */ { false, 0xe842, 0xe842 }, /* 0xe843 */ { false, 0xe843, 0xe843 }, /* 0xe844 */ { false, 0xe844, 0xe844 }, /* 0xe845 */ { false, 0xe845, 0xe845 }, /* 0xe846 */ { false, 0xe846, 0xe846 }, /* 0xe847 */ { false, 0xe847, 0xe847 }, /* 0xe848 */ { false, 0xe848, 0xe848 }, /* 0xe849 */ { false, 0xe849, 0xe849 }, /* 0xe84a */ { false, 0xe84a, 0xe84a }, /* 0xe84b */ { false, 0xe84b, 0xe84b }, /* 0xe84c */ { false, 0xe84c, 0xe84c }, /* 0xe84d */ { false, 0xe84d, 0xe84d }, /* 0xe84e */ { false, 0xe84e, 0xe84e }, /* 0xe84f */ { false, 0xe84f, 0xe84f }, /* 0xe850 */ { false, 0xe850, 0xe850 }, /* 0xe851 */ { false, 0xe851, 0xe851 }, /* 0xe852 */ { false, 0xe852, 0xe852 }, /* 0xe853 */ { false, 0xe853, 0xe853 }, /* 0xe854 */ { false, 0xe854, 0xe854 }, /* 0xe855 */ { false, 0xe855, 0xe855 }, /* 0xe856 */ { false, 0xe856, 0xe856 }, /* 0xe857 */ { false, 0xe857, 0xe857 }, /* 0xe858 */ { false, 0xe858, 0xe858 }, /* 0xe859 */ { false, 0xe859, 0xe859 }, /* 0xe85a */ { false, 0xe85a, 0xe85a }, /* 0xe85b */ { false, 0xe85b, 0xe85b }, /* 0xe85c */ { false, 0xe85c, 0xe85c }, /* 0xe85d */ { false, 0xe85d, 0xe85d }, /* 0xe85e */ { false, 0xe85e, 0xe85e }, /* 0xe85f */ { false, 0xe85f, 0xe85f }, /* 0xe860 */ { false, 0xe860, 0xe860 }, /* 0xe861 */ { false, 0xe861, 0xe861 }, /* 0xe862 */ { false, 0xe862, 0xe862 }, /* 0xe863 */ { false, 0xe863, 0xe863 }, /* 0xe864 */ { false, 0xe864, 0xe864 }, /* 0xe865 */ { false, 0xe865, 0xe865 }, /* 0xe866 */ { false, 0xe866, 0xe866 }, /* 0xe867 */ { false, 0xe867, 0xe867 }, /* 0xe868 */ { false, 0xe868, 0xe868 }, /* 0xe869 */ { false, 0xe869, 0xe869 }, /* 0xe86a */ { false, 0xe86a, 0xe86a }, /* 0xe86b */ { false, 0xe86b, 0xe86b }, /* 0xe86c */ { false, 0xe86c, 0xe86c }, /* 0xe86d */ { false, 0xe86d, 0xe86d }, /* 0xe86e */ { false, 0xe86e, 0xe86e }, /* 0xe86f */ { false, 0xe86f, 0xe86f }, /* 0xe870 */ { false, 0xe870, 0xe870 }, /* 0xe871 */ { false, 0xe871, 0xe871 }, /* 0xe872 */ { false, 0xe872, 0xe872 }, /* 0xe873 */ { false, 0xe873, 0xe873 }, /* 0xe874 */ { false, 0xe874, 0xe874 }, /* 0xe875 */ { false, 0xe875, 0xe875 }, /* 0xe876 */ { false, 0xe876, 0xe876 }, /* 0xe877 */ { false, 0xe877, 0xe877 }, /* 0xe878 */ { false, 0xe878, 0xe878 }, /* 0xe879 */ { false, 0xe879, 0xe879 }, /* 0xe87a */ { false, 0xe87a, 0xe87a }, /* 0xe87b */ { false, 0xe87b, 0xe87b }, /* 0xe87c */ { false, 0xe87c, 0xe87c }, /* 0xe87d */ { false, 0xe87d, 0xe87d }, /* 0xe87e */ { false, 0xe87e, 0xe87e }, /* 0xe87f */ { false, 0xe87f, 0xe87f }, /* 0xe880 */ { false, 0xe880, 0xe880 }, /* 0xe881 */ { false, 0xe881, 0xe881 }, /* 0xe882 */ { false, 0xe882, 0xe882 }, /* 0xe883 */ { false, 0xe883, 0xe883 }, /* 0xe884 */ { false, 0xe884, 0xe884 }, /* 0xe885 */ { false, 0xe885, 0xe885 }, /* 0xe886 */ { false, 0xe886, 0xe886 }, /* 0xe887 */ { false, 0xe887, 0xe887 }, /* 0xe888 */ { false, 0xe888, 0xe888 }, /* 0xe889 */ { false, 0xe889, 0xe889 }, /* 0xe88a */ { false, 0xe88a, 0xe88a }, /* 0xe88b */ { false, 0xe88b, 0xe88b }, /* 0xe88c */ { false, 0xe88c, 0xe88c }, /* 0xe88d */ { false, 0xe88d, 0xe88d }, /* 0xe88e */ { false, 0xe88e, 0xe88e }, /* 0xe88f */ { false, 0xe88f, 0xe88f }, /* 0xe890 */ { false, 0xe890, 0xe890 }, /* 0xe891 */ { false, 0xe891, 0xe891 }, /* 0xe892 */ { false, 0xe892, 0xe892 }, /* 0xe893 */ { false, 0xe893, 0xe893 }, /* 0xe894 */ { false, 0xe894, 0xe894 }, /* 0xe895 */ { false, 0xe895, 0xe895 }, /* 0xe896 */ { false, 0xe896, 0xe896 }, /* 0xe897 */ { false, 0xe897, 0xe897 }, /* 0xe898 */ { false, 0xe898, 0xe898 }, /* 0xe899 */ { false, 0xe899, 0xe899 }, /* 0xe89a */ { false, 0xe89a, 0xe89a }, /* 0xe89b */ { false, 0xe89b, 0xe89b }, /* 0xe89c */ { false, 0xe89c, 0xe89c }, /* 0xe89d */ { false, 0xe89d, 0xe89d }, /* 0xe89e */ { false, 0xe89e, 0xe89e }, /* 0xe89f */ { false, 0xe89f, 0xe89f }, /* 0xe8a0 */ { false, 0xe8a0, 0xe8a0 }, /* 0xe8a1 */ { false, 0xe8a1, 0xe8a1 }, /* 0xe8a2 */ { false, 0xe8a2, 0xe8a2 }, /* 0xe8a3 */ { false, 0xe8a3, 0xe8a3 }, /* 0xe8a4 */ { false, 0xe8a4, 0xe8a4 }, /* 0xe8a5 */ { false, 0xe8a5, 0xe8a5 }, /* 0xe8a6 */ { false, 0xe8a6, 0xe8a6 }, /* 0xe8a7 */ { false, 0xe8a7, 0xe8a7 }, /* 0xe8a8 */ { false, 0xe8a8, 0xe8a8 }, /* 0xe8a9 */ { false, 0xe8a9, 0xe8a9 }, /* 0xe8aa */ { false, 0xe8aa, 0xe8aa }, /* 0xe8ab */ { false, 0xe8ab, 0xe8ab }, /* 0xe8ac */ { false, 0xe8ac, 0xe8ac }, /* 0xe8ad */ { false, 0xe8ad, 0xe8ad }, /* 0xe8ae */ { false, 0xe8ae, 0xe8ae }, /* 0xe8af */ { false, 0xe8af, 0xe8af }, /* 0xe8b0 */ { false, 0xe8b0, 0xe8b0 }, /* 0xe8b1 */ { false, 0xe8b1, 0xe8b1 }, /* 0xe8b2 */ { false, 0xe8b2, 0xe8b2 }, /* 0xe8b3 */ { false, 0xe8b3, 0xe8b3 }, /* 0xe8b4 */ { false, 0xe8b4, 0xe8b4 }, /* 0xe8b5 */ { false, 0xe8b5, 0xe8b5 }, /* 0xe8b6 */ { false, 0xe8b6, 0xe8b6 }, /* 0xe8b7 */ { false, 0xe8b7, 0xe8b7 }, /* 0xe8b8 */ { false, 0xe8b8, 0xe8b8 }, /* 0xe8b9 */ { false, 0xe8b9, 0xe8b9 }, /* 0xe8ba */ { false, 0xe8ba, 0xe8ba }, /* 0xe8bb */ { false, 0xe8bb, 0xe8bb }, /* 0xe8bc */ { false, 0xe8bc, 0xe8bc }, /* 0xe8bd */ { false, 0xe8bd, 0xe8bd }, /* 0xe8be */ { false, 0xe8be, 0xe8be }, /* 0xe8bf */ { false, 0xe8bf, 0xe8bf }, /* 0xe8c0 */ { false, 0xe8c0, 0xe8c0 }, /* 0xe8c1 */ { false, 0xe8c1, 0xe8c1 }, /* 0xe8c2 */ { false, 0xe8c2, 0xe8c2 }, /* 0xe8c3 */ { false, 0xe8c3, 0xe8c3 }, /* 0xe8c4 */ { false, 0xe8c4, 0xe8c4 }, /* 0xe8c5 */ { false, 0xe8c5, 0xe8c5 }, /* 0xe8c6 */ { false, 0xe8c6, 0xe8c6 }, /* 0xe8c7 */ { false, 0xe8c7, 0xe8c7 }, /* 0xe8c8 */ { false, 0xe8c8, 0xe8c8 }, /* 0xe8c9 */ { false, 0xe8c9, 0xe8c9 }, /* 0xe8ca */ { false, 0xe8ca, 0xe8ca }, /* 0xe8cb */ { false, 0xe8cb, 0xe8cb }, /* 0xe8cc */ { false, 0xe8cc, 0xe8cc }, /* 0xe8cd */ { false, 0xe8cd, 0xe8cd }, /* 0xe8ce */ { false, 0xe8ce, 0xe8ce }, /* 0xe8cf */ { false, 0xe8cf, 0xe8cf }, /* 0xe8d0 */ { false, 0xe8d0, 0xe8d0 }, /* 0xe8d1 */ { false, 0xe8d1, 0xe8d1 }, /* 0xe8d2 */ { false, 0xe8d2, 0xe8d2 }, /* 0xe8d3 */ { false, 0xe8d3, 0xe8d3 }, /* 0xe8d4 */ { false, 0xe8d4, 0xe8d4 }, /* 0xe8d5 */ { false, 0xe8d5, 0xe8d5 }, /* 0xe8d6 */ { false, 0xe8d6, 0xe8d6 }, /* 0xe8d7 */ { false, 0xe8d7, 0xe8d7 }, /* 0xe8d8 */ { false, 0xe8d8, 0xe8d8 }, /* 0xe8d9 */ { false, 0xe8d9, 0xe8d9 }, /* 0xe8da */ { false, 0xe8da, 0xe8da }, /* 0xe8db */ { false, 0xe8db, 0xe8db }, /* 0xe8dc */ { false, 0xe8dc, 0xe8dc }, /* 0xe8dd */ { false, 0xe8dd, 0xe8dd }, /* 0xe8de */ { false, 0xe8de, 0xe8de }, /* 0xe8df */ { false, 0xe8df, 0xe8df }, /* 0xe8e0 */ { false, 0xe8e0, 0xe8e0 }, /* 0xe8e1 */ { false, 0xe8e1, 0xe8e1 }, /* 0xe8e2 */ { false, 0xe8e2, 0xe8e2 }, /* 0xe8e3 */ { false, 0xe8e3, 0xe8e3 }, /* 0xe8e4 */ { false, 0xe8e4, 0xe8e4 }, /* 0xe8e5 */ { false, 0xe8e5, 0xe8e5 }, /* 0xe8e6 */ { false, 0xe8e6, 0xe8e6 }, /* 0xe8e7 */ { false, 0xe8e7, 0xe8e7 }, /* 0xe8e8 */ { false, 0xe8e8, 0xe8e8 }, /* 0xe8e9 */ { false, 0xe8e9, 0xe8e9 }, /* 0xe8ea */ { false, 0xe8ea, 0xe8ea }, /* 0xe8eb */ { false, 0xe8eb, 0xe8eb }, /* 0xe8ec */ { false, 0xe8ec, 0xe8ec }, /* 0xe8ed */ { false, 0xe8ed, 0xe8ed }, /* 0xe8ee */ { false, 0xe8ee, 0xe8ee }, /* 0xe8ef */ { false, 0xe8ef, 0xe8ef }, /* 0xe8f0 */ { false, 0xe8f0, 0xe8f0 }, /* 0xe8f1 */ { false, 0xe8f1, 0xe8f1 }, /* 0xe8f2 */ { false, 0xe8f2, 0xe8f2 }, /* 0xe8f3 */ { false, 0xe8f3, 0xe8f3 }, /* 0xe8f4 */ { false, 0xe8f4, 0xe8f4 }, /* 0xe8f5 */ { false, 0xe8f5, 0xe8f5 }, /* 0xe8f6 */ { false, 0xe8f6, 0xe8f6 }, /* 0xe8f7 */ { false, 0xe8f7, 0xe8f7 }, /* 0xe8f8 */ { false, 0xe8f8, 0xe8f8 }, /* 0xe8f9 */ { false, 0xe8f9, 0xe8f9 }, /* 0xe8fa */ { false, 0xe8fa, 0xe8fa }, /* 0xe8fb */ { false, 0xe8fb, 0xe8fb }, /* 0xe8fc */ { false, 0xe8fc, 0xe8fc }, /* 0xe8fd */ { false, 0xe8fd, 0xe8fd }, /* 0xe8fe */ { false, 0xe8fe, 0xe8fe }, /* 0xe8ff */ { false, 0xe8ff, 0xe8ff }, /* 0xe900 */ { false, 0xe900, 0xe900 }, /* 0xe901 */ { false, 0xe901, 0xe901 }, /* 0xe902 */ { false, 0xe902, 0xe902 }, /* 0xe903 */ { false, 0xe903, 0xe903 }, /* 0xe904 */ { false, 0xe904, 0xe904 }, /* 0xe905 */ { false, 0xe905, 0xe905 }, /* 0xe906 */ { false, 0xe906, 0xe906 }, /* 0xe907 */ { false, 0xe907, 0xe907 }, /* 0xe908 */ { false, 0xe908, 0xe908 }, /* 0xe909 */ { false, 0xe909, 0xe909 }, /* 0xe90a */ { false, 0xe90a, 0xe90a }, /* 0xe90b */ { false, 0xe90b, 0xe90b }, /* 0xe90c */ { false, 0xe90c, 0xe90c }, /* 0xe90d */ { false, 0xe90d, 0xe90d }, /* 0xe90e */ { false, 0xe90e, 0xe90e }, /* 0xe90f */ { false, 0xe90f, 0xe90f }, /* 0xe910 */ { false, 0xe910, 0xe910 }, /* 0xe911 */ { false, 0xe911, 0xe911 }, /* 0xe912 */ { false, 0xe912, 0xe912 }, /* 0xe913 */ { false, 0xe913, 0xe913 }, /* 0xe914 */ { false, 0xe914, 0xe914 }, /* 0xe915 */ { false, 0xe915, 0xe915 }, /* 0xe916 */ { false, 0xe916, 0xe916 }, /* 0xe917 */ { false, 0xe917, 0xe917 }, /* 0xe918 */ { false, 0xe918, 0xe918 }, /* 0xe919 */ { false, 0xe919, 0xe919 }, /* 0xe91a */ { false, 0xe91a, 0xe91a }, /* 0xe91b */ { false, 0xe91b, 0xe91b }, /* 0xe91c */ { false, 0xe91c, 0xe91c }, /* 0xe91d */ { false, 0xe91d, 0xe91d }, /* 0xe91e */ { false, 0xe91e, 0xe91e }, /* 0xe91f */ { false, 0xe91f, 0xe91f }, /* 0xe920 */ { false, 0xe920, 0xe920 }, /* 0xe921 */ { false, 0xe921, 0xe921 }, /* 0xe922 */ { false, 0xe922, 0xe922 }, /* 0xe923 */ { false, 0xe923, 0xe923 }, /* 0xe924 */ { false, 0xe924, 0xe924 }, /* 0xe925 */ { false, 0xe925, 0xe925 }, /* 0xe926 */ { false, 0xe926, 0xe926 }, /* 0xe927 */ { false, 0xe927, 0xe927 }, /* 0xe928 */ { false, 0xe928, 0xe928 }, /* 0xe929 */ { false, 0xe929, 0xe929 }, /* 0xe92a */ { false, 0xe92a, 0xe92a }, /* 0xe92b */ { false, 0xe92b, 0xe92b }, /* 0xe92c */ { false, 0xe92c, 0xe92c }, /* 0xe92d */ { false, 0xe92d, 0xe92d }, /* 0xe92e */ { false, 0xe92e, 0xe92e }, /* 0xe92f */ { false, 0xe92f, 0xe92f }, /* 0xe930 */ { false, 0xe930, 0xe930 }, /* 0xe931 */ { false, 0xe931, 0xe931 }, /* 0xe932 */ { false, 0xe932, 0xe932 }, /* 0xe933 */ { false, 0xe933, 0xe933 }, /* 0xe934 */ { false, 0xe934, 0xe934 }, /* 0xe935 */ { false, 0xe935, 0xe935 }, /* 0xe936 */ { false, 0xe936, 0xe936 }, /* 0xe937 */ { false, 0xe937, 0xe937 }, /* 0xe938 */ { false, 0xe938, 0xe938 }, /* 0xe939 */ { false, 0xe939, 0xe939 }, /* 0xe93a */ { false, 0xe93a, 0xe93a }, /* 0xe93b */ { false, 0xe93b, 0xe93b }, /* 0xe93c */ { false, 0xe93c, 0xe93c }, /* 0xe93d */ { false, 0xe93d, 0xe93d }, /* 0xe93e */ { false, 0xe93e, 0xe93e }, /* 0xe93f */ { false, 0xe93f, 0xe93f }, /* 0xe940 */ { false, 0xe940, 0xe940 }, /* 0xe941 */ { false, 0xe941, 0xe941 }, /* 0xe942 */ { false, 0xe942, 0xe942 }, /* 0xe943 */ { false, 0xe943, 0xe943 }, /* 0xe944 */ { false, 0xe944, 0xe944 }, /* 0xe945 */ { false, 0xe945, 0xe945 }, /* 0xe946 */ { false, 0xe946, 0xe946 }, /* 0xe947 */ { false, 0xe947, 0xe947 }, /* 0xe948 */ { false, 0xe948, 0xe948 }, /* 0xe949 */ { false, 0xe949, 0xe949 }, /* 0xe94a */ { false, 0xe94a, 0xe94a }, /* 0xe94b */ { false, 0xe94b, 0xe94b }, /* 0xe94c */ { false, 0xe94c, 0xe94c }, /* 0xe94d */ { false, 0xe94d, 0xe94d }, /* 0xe94e */ { false, 0xe94e, 0xe94e }, /* 0xe94f */ { false, 0xe94f, 0xe94f }, /* 0xe950 */ { false, 0xe950, 0xe950 }, /* 0xe951 */ { false, 0xe951, 0xe951 }, /* 0xe952 */ { false, 0xe952, 0xe952 }, /* 0xe953 */ { false, 0xe953, 0xe953 }, /* 0xe954 */ { false, 0xe954, 0xe954 }, /* 0xe955 */ { false, 0xe955, 0xe955 }, /* 0xe956 */ { false, 0xe956, 0xe956 }, /* 0xe957 */ { false, 0xe957, 0xe957 }, /* 0xe958 */ { false, 0xe958, 0xe958 }, /* 0xe959 */ { false, 0xe959, 0xe959 }, /* 0xe95a */ { false, 0xe95a, 0xe95a }, /* 0xe95b */ { false, 0xe95b, 0xe95b }, /* 0xe95c */ { false, 0xe95c, 0xe95c }, /* 0xe95d */ { false, 0xe95d, 0xe95d }, /* 0xe95e */ { false, 0xe95e, 0xe95e }, /* 0xe95f */ { false, 0xe95f, 0xe95f }, /* 0xe960 */ { false, 0xe960, 0xe960 }, /* 0xe961 */ { false, 0xe961, 0xe961 }, /* 0xe962 */ { false, 0xe962, 0xe962 }, /* 0xe963 */ { false, 0xe963, 0xe963 }, /* 0xe964 */ { false, 0xe964, 0xe964 }, /* 0xe965 */ { false, 0xe965, 0xe965 }, /* 0xe966 */ { false, 0xe966, 0xe966 }, /* 0xe967 */ { false, 0xe967, 0xe967 }, /* 0xe968 */ { false, 0xe968, 0xe968 }, /* 0xe969 */ { false, 0xe969, 0xe969 }, /* 0xe96a */ { false, 0xe96a, 0xe96a }, /* 0xe96b */ { false, 0xe96b, 0xe96b }, /* 0xe96c */ { false, 0xe96c, 0xe96c }, /* 0xe96d */ { false, 0xe96d, 0xe96d }, /* 0xe96e */ { false, 0xe96e, 0xe96e }, /* 0xe96f */ { false, 0xe96f, 0xe96f }, /* 0xe970 */ { false, 0xe970, 0xe970 }, /* 0xe971 */ { false, 0xe971, 0xe971 }, /* 0xe972 */ { false, 0xe972, 0xe972 }, /* 0xe973 */ { false, 0xe973, 0xe973 }, /* 0xe974 */ { false, 0xe974, 0xe974 }, /* 0xe975 */ { false, 0xe975, 0xe975 }, /* 0xe976 */ { false, 0xe976, 0xe976 }, /* 0xe977 */ { false, 0xe977, 0xe977 }, /* 0xe978 */ { false, 0xe978, 0xe978 }, /* 0xe979 */ { false, 0xe979, 0xe979 }, /* 0xe97a */ { false, 0xe97a, 0xe97a }, /* 0xe97b */ { false, 0xe97b, 0xe97b }, /* 0xe97c */ { false, 0xe97c, 0xe97c }, /* 0xe97d */ { false, 0xe97d, 0xe97d }, /* 0xe97e */ { false, 0xe97e, 0xe97e }, /* 0xe97f */ { false, 0xe97f, 0xe97f }, /* 0xe980 */ { false, 0xe980, 0xe980 }, /* 0xe981 */ { false, 0xe981, 0xe981 }, /* 0xe982 */ { false, 0xe982, 0xe982 }, /* 0xe983 */ { false, 0xe983, 0xe983 }, /* 0xe984 */ { false, 0xe984, 0xe984 }, /* 0xe985 */ { false, 0xe985, 0xe985 }, /* 0xe986 */ { false, 0xe986, 0xe986 }, /* 0xe987 */ { false, 0xe987, 0xe987 }, /* 0xe988 */ { false, 0xe988, 0xe988 }, /* 0xe989 */ { false, 0xe989, 0xe989 }, /* 0xe98a */ { false, 0xe98a, 0xe98a }, /* 0xe98b */ { false, 0xe98b, 0xe98b }, /* 0xe98c */ { false, 0xe98c, 0xe98c }, /* 0xe98d */ { false, 0xe98d, 0xe98d }, /* 0xe98e */ { false, 0xe98e, 0xe98e }, /* 0xe98f */ { false, 0xe98f, 0xe98f }, /* 0xe990 */ { false, 0xe990, 0xe990 }, /* 0xe991 */ { false, 0xe991, 0xe991 }, /* 0xe992 */ { false, 0xe992, 0xe992 }, /* 0xe993 */ { false, 0xe993, 0xe993 }, /* 0xe994 */ { false, 0xe994, 0xe994 }, /* 0xe995 */ { false, 0xe995, 0xe995 }, /* 0xe996 */ { false, 0xe996, 0xe996 }, /* 0xe997 */ { false, 0xe997, 0xe997 }, /* 0xe998 */ { false, 0xe998, 0xe998 }, /* 0xe999 */ { false, 0xe999, 0xe999 }, /* 0xe99a */ { false, 0xe99a, 0xe99a }, /* 0xe99b */ { false, 0xe99b, 0xe99b }, /* 0xe99c */ { false, 0xe99c, 0xe99c }, /* 0xe99d */ { false, 0xe99d, 0xe99d }, /* 0xe99e */ { false, 0xe99e, 0xe99e }, /* 0xe99f */ { false, 0xe99f, 0xe99f }, /* 0xe9a0 */ { false, 0xe9a0, 0xe9a0 }, /* 0xe9a1 */ { false, 0xe9a1, 0xe9a1 }, /* 0xe9a2 */ { false, 0xe9a2, 0xe9a2 }, /* 0xe9a3 */ { false, 0xe9a3, 0xe9a3 }, /* 0xe9a4 */ { false, 0xe9a4, 0xe9a4 }, /* 0xe9a5 */ { false, 0xe9a5, 0xe9a5 }, /* 0xe9a6 */ { false, 0xe9a6, 0xe9a6 }, /* 0xe9a7 */ { false, 0xe9a7, 0xe9a7 }, /* 0xe9a8 */ { false, 0xe9a8, 0xe9a8 }, /* 0xe9a9 */ { false, 0xe9a9, 0xe9a9 }, /* 0xe9aa */ { false, 0xe9aa, 0xe9aa }, /* 0xe9ab */ { false, 0xe9ab, 0xe9ab }, /* 0xe9ac */ { false, 0xe9ac, 0xe9ac }, /* 0xe9ad */ { false, 0xe9ad, 0xe9ad }, /* 0xe9ae */ { false, 0xe9ae, 0xe9ae }, /* 0xe9af */ { false, 0xe9af, 0xe9af }, /* 0xe9b0 */ { false, 0xe9b0, 0xe9b0 }, /* 0xe9b1 */ { false, 0xe9b1, 0xe9b1 }, /* 0xe9b2 */ { false, 0xe9b2, 0xe9b2 }, /* 0xe9b3 */ { false, 0xe9b3, 0xe9b3 }, /* 0xe9b4 */ { false, 0xe9b4, 0xe9b4 }, /* 0xe9b5 */ { false, 0xe9b5, 0xe9b5 }, /* 0xe9b6 */ { false, 0xe9b6, 0xe9b6 }, /* 0xe9b7 */ { false, 0xe9b7, 0xe9b7 }, /* 0xe9b8 */ { false, 0xe9b8, 0xe9b8 }, /* 0xe9b9 */ { false, 0xe9b9, 0xe9b9 }, /* 0xe9ba */ { false, 0xe9ba, 0xe9ba }, /* 0xe9bb */ { false, 0xe9bb, 0xe9bb }, /* 0xe9bc */ { false, 0xe9bc, 0xe9bc }, /* 0xe9bd */ { false, 0xe9bd, 0xe9bd }, /* 0xe9be */ { false, 0xe9be, 0xe9be }, /* 0xe9bf */ { false, 0xe9bf, 0xe9bf }, /* 0xe9c0 */ { false, 0xe9c0, 0xe9c0 }, /* 0xe9c1 */ { false, 0xe9c1, 0xe9c1 }, /* 0xe9c2 */ { false, 0xe9c2, 0xe9c2 }, /* 0xe9c3 */ { false, 0xe9c3, 0xe9c3 }, /* 0xe9c4 */ { false, 0xe9c4, 0xe9c4 }, /* 0xe9c5 */ { false, 0xe9c5, 0xe9c5 }, /* 0xe9c6 */ { false, 0xe9c6, 0xe9c6 }, /* 0xe9c7 */ { false, 0xe9c7, 0xe9c7 }, /* 0xe9c8 */ { false, 0xe9c8, 0xe9c8 }, /* 0xe9c9 */ { false, 0xe9c9, 0xe9c9 }, /* 0xe9ca */ { false, 0xe9ca, 0xe9ca }, /* 0xe9cb */ { false, 0xe9cb, 0xe9cb }, /* 0xe9cc */ { false, 0xe9cc, 0xe9cc }, /* 0xe9cd */ { false, 0xe9cd, 0xe9cd }, /* 0xe9ce */ { false, 0xe9ce, 0xe9ce }, /* 0xe9cf */ { false, 0xe9cf, 0xe9cf }, /* 0xe9d0 */ { false, 0xe9d0, 0xe9d0 }, /* 0xe9d1 */ { false, 0xe9d1, 0xe9d1 }, /* 0xe9d2 */ { false, 0xe9d2, 0xe9d2 }, /* 0xe9d3 */ { false, 0xe9d3, 0xe9d3 }, /* 0xe9d4 */ { false, 0xe9d4, 0xe9d4 }, /* 0xe9d5 */ { false, 0xe9d5, 0xe9d5 }, /* 0xe9d6 */ { false, 0xe9d6, 0xe9d6 }, /* 0xe9d7 */ { false, 0xe9d7, 0xe9d7 }, /* 0xe9d8 */ { false, 0xe9d8, 0xe9d8 }, /* 0xe9d9 */ { false, 0xe9d9, 0xe9d9 }, /* 0xe9da */ { false, 0xe9da, 0xe9da }, /* 0xe9db */ { false, 0xe9db, 0xe9db }, /* 0xe9dc */ { false, 0xe9dc, 0xe9dc }, /* 0xe9dd */ { false, 0xe9dd, 0xe9dd }, /* 0xe9de */ { false, 0xe9de, 0xe9de }, /* 0xe9df */ { false, 0xe9df, 0xe9df }, /* 0xe9e0 */ { false, 0xe9e0, 0xe9e0 }, /* 0xe9e1 */ { false, 0xe9e1, 0xe9e1 }, /* 0xe9e2 */ { false, 0xe9e2, 0xe9e2 }, /* 0xe9e3 */ { false, 0xe9e3, 0xe9e3 }, /* 0xe9e4 */ { false, 0xe9e4, 0xe9e4 }, /* 0xe9e5 */ { false, 0xe9e5, 0xe9e5 }, /* 0xe9e6 */ { false, 0xe9e6, 0xe9e6 }, /* 0xe9e7 */ { false, 0xe9e7, 0xe9e7 }, /* 0xe9e8 */ { false, 0xe9e8, 0xe9e8 }, /* 0xe9e9 */ { false, 0xe9e9, 0xe9e9 }, /* 0xe9ea */ { false, 0xe9ea, 0xe9ea }, /* 0xe9eb */ { false, 0xe9eb, 0xe9eb }, /* 0xe9ec */ { false, 0xe9ec, 0xe9ec }, /* 0xe9ed */ { false, 0xe9ed, 0xe9ed }, /* 0xe9ee */ { false, 0xe9ee, 0xe9ee }, /* 0xe9ef */ { false, 0xe9ef, 0xe9ef }, /* 0xe9f0 */ { false, 0xe9f0, 0xe9f0 }, /* 0xe9f1 */ { false, 0xe9f1, 0xe9f1 }, /* 0xe9f2 */ { false, 0xe9f2, 0xe9f2 }, /* 0xe9f3 */ { false, 0xe9f3, 0xe9f3 }, /* 0xe9f4 */ { false, 0xe9f4, 0xe9f4 }, /* 0xe9f5 */ { false, 0xe9f5, 0xe9f5 }, /* 0xe9f6 */ { false, 0xe9f6, 0xe9f6 }, /* 0xe9f7 */ { false, 0xe9f7, 0xe9f7 }, /* 0xe9f8 */ { false, 0xe9f8, 0xe9f8 }, /* 0xe9f9 */ { false, 0xe9f9, 0xe9f9 }, /* 0xe9fa */ { false, 0xe9fa, 0xe9fa }, /* 0xe9fb */ { false, 0xe9fb, 0xe9fb }, /* 0xe9fc */ { false, 0xe9fc, 0xe9fc }, /* 0xe9fd */ { false, 0xe9fd, 0xe9fd }, /* 0xe9fe */ { false, 0xe9fe, 0xe9fe }, /* 0xe9ff */ { false, 0xe9ff, 0xe9ff }, /* 0xea00 */ { false, 0xea00, 0xea00 }, /* 0xea01 */ { false, 0xea01, 0xea01 }, /* 0xea02 */ { false, 0xea02, 0xea02 }, /* 0xea03 */ { false, 0xea03, 0xea03 }, /* 0xea04 */ { false, 0xea04, 0xea04 }, /* 0xea05 */ { false, 0xea05, 0xea05 }, /* 0xea06 */ { false, 0xea06, 0xea06 }, /* 0xea07 */ { false, 0xea07, 0xea07 }, /* 0xea08 */ { false, 0xea08, 0xea08 }, /* 0xea09 */ { false, 0xea09, 0xea09 }, /* 0xea0a */ { false, 0xea0a, 0xea0a }, /* 0xea0b */ { false, 0xea0b, 0xea0b }, /* 0xea0c */ { false, 0xea0c, 0xea0c }, /* 0xea0d */ { false, 0xea0d, 0xea0d }, /* 0xea0e */ { false, 0xea0e, 0xea0e }, /* 0xea0f */ { false, 0xea0f, 0xea0f }, /* 0xea10 */ { false, 0xea10, 0xea10 }, /* 0xea11 */ { false, 0xea11, 0xea11 }, /* 0xea12 */ { false, 0xea12, 0xea12 }, /* 0xea13 */ { false, 0xea13, 0xea13 }, /* 0xea14 */ { false, 0xea14, 0xea14 }, /* 0xea15 */ { false, 0xea15, 0xea15 }, /* 0xea16 */ { false, 0xea16, 0xea16 }, /* 0xea17 */ { false, 0xea17, 0xea17 }, /* 0xea18 */ { false, 0xea18, 0xea18 }, /* 0xea19 */ { false, 0xea19, 0xea19 }, /* 0xea1a */ { false, 0xea1a, 0xea1a }, /* 0xea1b */ { false, 0xea1b, 0xea1b }, /* 0xea1c */ { false, 0xea1c, 0xea1c }, /* 0xea1d */ { false, 0xea1d, 0xea1d }, /* 0xea1e */ { false, 0xea1e, 0xea1e }, /* 0xea1f */ { false, 0xea1f, 0xea1f }, /* 0xea20 */ { false, 0xea20, 0xea20 }, /* 0xea21 */ { false, 0xea21, 0xea21 }, /* 0xea22 */ { false, 0xea22, 0xea22 }, /* 0xea23 */ { false, 0xea23, 0xea23 }, /* 0xea24 */ { false, 0xea24, 0xea24 }, /* 0xea25 */ { false, 0xea25, 0xea25 }, /* 0xea26 */ { false, 0xea26, 0xea26 }, /* 0xea27 */ { false, 0xea27, 0xea27 }, /* 0xea28 */ { false, 0xea28, 0xea28 }, /* 0xea29 */ { false, 0xea29, 0xea29 }, /* 0xea2a */ { false, 0xea2a, 0xea2a }, /* 0xea2b */ { false, 0xea2b, 0xea2b }, /* 0xea2c */ { false, 0xea2c, 0xea2c }, /* 0xea2d */ { false, 0xea2d, 0xea2d }, /* 0xea2e */ { false, 0xea2e, 0xea2e }, /* 0xea2f */ { false, 0xea2f, 0xea2f }, /* 0xea30 */ { false, 0xea30, 0xea30 }, /* 0xea31 */ { false, 0xea31, 0xea31 }, /* 0xea32 */ { false, 0xea32, 0xea32 }, /* 0xea33 */ { false, 0xea33, 0xea33 }, /* 0xea34 */ { false, 0xea34, 0xea34 }, /* 0xea35 */ { false, 0xea35, 0xea35 }, /* 0xea36 */ { false, 0xea36, 0xea36 }, /* 0xea37 */ { false, 0xea37, 0xea37 }, /* 0xea38 */ { false, 0xea38, 0xea38 }, /* 0xea39 */ { false, 0xea39, 0xea39 }, /* 0xea3a */ { false, 0xea3a, 0xea3a }, /* 0xea3b */ { false, 0xea3b, 0xea3b }, /* 0xea3c */ { false, 0xea3c, 0xea3c }, /* 0xea3d */ { false, 0xea3d, 0xea3d }, /* 0xea3e */ { false, 0xea3e, 0xea3e }, /* 0xea3f */ { false, 0xea3f, 0xea3f }, /* 0xea40 */ { false, 0xea40, 0xea40 }, /* 0xea41 */ { false, 0xea41, 0xea41 }, /* 0xea42 */ { false, 0xea42, 0xea42 }, /* 0xea43 */ { false, 0xea43, 0xea43 }, /* 0xea44 */ { false, 0xea44, 0xea44 }, /* 0xea45 */ { false, 0xea45, 0xea45 }, /* 0xea46 */ { false, 0xea46, 0xea46 }, /* 0xea47 */ { false, 0xea47, 0xea47 }, /* 0xea48 */ { false, 0xea48, 0xea48 }, /* 0xea49 */ { false, 0xea49, 0xea49 }, /* 0xea4a */ { false, 0xea4a, 0xea4a }, /* 0xea4b */ { false, 0xea4b, 0xea4b }, /* 0xea4c */ { false, 0xea4c, 0xea4c }, /* 0xea4d */ { false, 0xea4d, 0xea4d }, /* 0xea4e */ { false, 0xea4e, 0xea4e }, /* 0xea4f */ { false, 0xea4f, 0xea4f }, /* 0xea50 */ { false, 0xea50, 0xea50 }, /* 0xea51 */ { false, 0xea51, 0xea51 }, /* 0xea52 */ { false, 0xea52, 0xea52 }, /* 0xea53 */ { false, 0xea53, 0xea53 }, /* 0xea54 */ { false, 0xea54, 0xea54 }, /* 0xea55 */ { false, 0xea55, 0xea55 }, /* 0xea56 */ { false, 0xea56, 0xea56 }, /* 0xea57 */ { false, 0xea57, 0xea57 }, /* 0xea58 */ { false, 0xea58, 0xea58 }, /* 0xea59 */ { false, 0xea59, 0xea59 }, /* 0xea5a */ { false, 0xea5a, 0xea5a }, /* 0xea5b */ { false, 0xea5b, 0xea5b }, /* 0xea5c */ { false, 0xea5c, 0xea5c }, /* 0xea5d */ { false, 0xea5d, 0xea5d }, /* 0xea5e */ { false, 0xea5e, 0xea5e }, /* 0xea5f */ { false, 0xea5f, 0xea5f }, /* 0xea60 */ { false, 0xea60, 0xea60 }, /* 0xea61 */ { false, 0xea61, 0xea61 }, /* 0xea62 */ { false, 0xea62, 0xea62 }, /* 0xea63 */ { false, 0xea63, 0xea63 }, /* 0xea64 */ { false, 0xea64, 0xea64 }, /* 0xea65 */ { false, 0xea65, 0xea65 }, /* 0xea66 */ { false, 0xea66, 0xea66 }, /* 0xea67 */ { false, 0xea67, 0xea67 }, /* 0xea68 */ { false, 0xea68, 0xea68 }, /* 0xea69 */ { false, 0xea69, 0xea69 }, /* 0xea6a */ { false, 0xea6a, 0xea6a }, /* 0xea6b */ { false, 0xea6b, 0xea6b }, /* 0xea6c */ { false, 0xea6c, 0xea6c }, /* 0xea6d */ { false, 0xea6d, 0xea6d }, /* 0xea6e */ { false, 0xea6e, 0xea6e }, /* 0xea6f */ { false, 0xea6f, 0xea6f }, /* 0xea70 */ { false, 0xea70, 0xea70 }, /* 0xea71 */ { false, 0xea71, 0xea71 }, /* 0xea72 */ { false, 0xea72, 0xea72 }, /* 0xea73 */ { false, 0xea73, 0xea73 }, /* 0xea74 */ { false, 0xea74, 0xea74 }, /* 0xea75 */ { false, 0xea75, 0xea75 }, /* 0xea76 */ { false, 0xea76, 0xea76 }, /* 0xea77 */ { false, 0xea77, 0xea77 }, /* 0xea78 */ { false, 0xea78, 0xea78 }, /* 0xea79 */ { false, 0xea79, 0xea79 }, /* 0xea7a */ { false, 0xea7a, 0xea7a }, /* 0xea7b */ { false, 0xea7b, 0xea7b }, /* 0xea7c */ { false, 0xea7c, 0xea7c }, /* 0xea7d */ { false, 0xea7d, 0xea7d }, /* 0xea7e */ { false, 0xea7e, 0xea7e }, /* 0xea7f */ { false, 0xea7f, 0xea7f }, /* 0xea80 */ { false, 0xea80, 0xea80 }, /* 0xea81 */ { false, 0xea81, 0xea81 }, /* 0xea82 */ { false, 0xea82, 0xea82 }, /* 0xea83 */ { false, 0xea83, 0xea83 }, /* 0xea84 */ { false, 0xea84, 0xea84 }, /* 0xea85 */ { false, 0xea85, 0xea85 }, /* 0xea86 */ { false, 0xea86, 0xea86 }, /* 0xea87 */ { false, 0xea87, 0xea87 }, /* 0xea88 */ { false, 0xea88, 0xea88 }, /* 0xea89 */ { false, 0xea89, 0xea89 }, /* 0xea8a */ { false, 0xea8a, 0xea8a }, /* 0xea8b */ { false, 0xea8b, 0xea8b }, /* 0xea8c */ { false, 0xea8c, 0xea8c }, /* 0xea8d */ { false, 0xea8d, 0xea8d }, /* 0xea8e */ { false, 0xea8e, 0xea8e }, /* 0xea8f */ { false, 0xea8f, 0xea8f }, /* 0xea90 */ { false, 0xea90, 0xea90 }, /* 0xea91 */ { false, 0xea91, 0xea91 }, /* 0xea92 */ { false, 0xea92, 0xea92 }, /* 0xea93 */ { false, 0xea93, 0xea93 }, /* 0xea94 */ { false, 0xea94, 0xea94 }, /* 0xea95 */ { false, 0xea95, 0xea95 }, /* 0xea96 */ { false, 0xea96, 0xea96 }, /* 0xea97 */ { false, 0xea97, 0xea97 }, /* 0xea98 */ { false, 0xea98, 0xea98 }, /* 0xea99 */ { false, 0xea99, 0xea99 }, /* 0xea9a */ { false, 0xea9a, 0xea9a }, /* 0xea9b */ { false, 0xea9b, 0xea9b }, /* 0xea9c */ { false, 0xea9c, 0xea9c }, /* 0xea9d */ { false, 0xea9d, 0xea9d }, /* 0xea9e */ { false, 0xea9e, 0xea9e }, /* 0xea9f */ { false, 0xea9f, 0xea9f }, /* 0xeaa0 */ { false, 0xeaa0, 0xeaa0 }, /* 0xeaa1 */ { false, 0xeaa1, 0xeaa1 }, /* 0xeaa2 */ { false, 0xeaa2, 0xeaa2 }, /* 0xeaa3 */ { false, 0xeaa3, 0xeaa3 }, /* 0xeaa4 */ { false, 0xeaa4, 0xeaa4 }, /* 0xeaa5 */ { false, 0xeaa5, 0xeaa5 }, /* 0xeaa6 */ { false, 0xeaa6, 0xeaa6 }, /* 0xeaa7 */ { false, 0xeaa7, 0xeaa7 }, /* 0xeaa8 */ { false, 0xeaa8, 0xeaa8 }, /* 0xeaa9 */ { false, 0xeaa9, 0xeaa9 }, /* 0xeaaa */ { false, 0xeaaa, 0xeaaa }, /* 0xeaab */ { false, 0xeaab, 0xeaab }, /* 0xeaac */ { false, 0xeaac, 0xeaac }, /* 0xeaad */ { false, 0xeaad, 0xeaad }, /* 0xeaae */ { false, 0xeaae, 0xeaae }, /* 0xeaaf */ { false, 0xeaaf, 0xeaaf }, /* 0xeab0 */ { false, 0xeab0, 0xeab0 }, /* 0xeab1 */ { false, 0xeab1, 0xeab1 }, /* 0xeab2 */ { false, 0xeab2, 0xeab2 }, /* 0xeab3 */ { false, 0xeab3, 0xeab3 }, /* 0xeab4 */ { false, 0xeab4, 0xeab4 }, /* 0xeab5 */ { false, 0xeab5, 0xeab5 }, /* 0xeab6 */ { false, 0xeab6, 0xeab6 }, /* 0xeab7 */ { false, 0xeab7, 0xeab7 }, /* 0xeab8 */ { false, 0xeab8, 0xeab8 }, /* 0xeab9 */ { false, 0xeab9, 0xeab9 }, /* 0xeaba */ { false, 0xeaba, 0xeaba }, /* 0xeabb */ { false, 0xeabb, 0xeabb }, /* 0xeabc */ { false, 0xeabc, 0xeabc }, /* 0xeabd */ { false, 0xeabd, 0xeabd }, /* 0xeabe */ { false, 0xeabe, 0xeabe }, /* 0xeabf */ { false, 0xeabf, 0xeabf }, /* 0xeac0 */ { false, 0xeac0, 0xeac0 }, /* 0xeac1 */ { false, 0xeac1, 0xeac1 }, /* 0xeac2 */ { false, 0xeac2, 0xeac2 }, /* 0xeac3 */ { false, 0xeac3, 0xeac3 }, /* 0xeac4 */ { false, 0xeac4, 0xeac4 }, /* 0xeac5 */ { false, 0xeac5, 0xeac5 }, /* 0xeac6 */ { false, 0xeac6, 0xeac6 }, /* 0xeac7 */ { false, 0xeac7, 0xeac7 }, /* 0xeac8 */ { false, 0xeac8, 0xeac8 }, /* 0xeac9 */ { false, 0xeac9, 0xeac9 }, /* 0xeaca */ { false, 0xeaca, 0xeaca }, /* 0xeacb */ { false, 0xeacb, 0xeacb }, /* 0xeacc */ { false, 0xeacc, 0xeacc }, /* 0xeacd */ { false, 0xeacd, 0xeacd }, /* 0xeace */ { false, 0xeace, 0xeace }, /* 0xeacf */ { false, 0xeacf, 0xeacf }, /* 0xead0 */ { false, 0xead0, 0xead0 }, /* 0xead1 */ { false, 0xead1, 0xead1 }, /* 0xead2 */ { false, 0xead2, 0xead2 }, /* 0xead3 */ { false, 0xead3, 0xead3 }, /* 0xead4 */ { false, 0xead4, 0xead4 }, /* 0xead5 */ { false, 0xead5, 0xead5 }, /* 0xead6 */ { false, 0xead6, 0xead6 }, /* 0xead7 */ { false, 0xead7, 0xead7 }, /* 0xead8 */ { false, 0xead8, 0xead8 }, /* 0xead9 */ { false, 0xead9, 0xead9 }, /* 0xeada */ { false, 0xeada, 0xeada }, /* 0xeadb */ { false, 0xeadb, 0xeadb }, /* 0xeadc */ { false, 0xeadc, 0xeadc }, /* 0xeadd */ { false, 0xeadd, 0xeadd }, /* 0xeade */ { false, 0xeade, 0xeade }, /* 0xeadf */ { false, 0xeadf, 0xeadf }, /* 0xeae0 */ { false, 0xeae0, 0xeae0 }, /* 0xeae1 */ { false, 0xeae1, 0xeae1 }, /* 0xeae2 */ { false, 0xeae2, 0xeae2 }, /* 0xeae3 */ { false, 0xeae3, 0xeae3 }, /* 0xeae4 */ { false, 0xeae4, 0xeae4 }, /* 0xeae5 */ { false, 0xeae5, 0xeae5 }, /* 0xeae6 */ { false, 0xeae6, 0xeae6 }, /* 0xeae7 */ { false, 0xeae7, 0xeae7 }, /* 0xeae8 */ { false, 0xeae8, 0xeae8 }, /* 0xeae9 */ { false, 0xeae9, 0xeae9 }, /* 0xeaea */ { false, 0xeaea, 0xeaea }, /* 0xeaeb */ { false, 0xeaeb, 0xeaeb }, /* 0xeaec */ { false, 0xeaec, 0xeaec }, /* 0xeaed */ { false, 0xeaed, 0xeaed }, /* 0xeaee */ { false, 0xeaee, 0xeaee }, /* 0xeaef */ { false, 0xeaef, 0xeaef }, /* 0xeaf0 */ { false, 0xeaf0, 0xeaf0 }, /* 0xeaf1 */ { false, 0xeaf1, 0xeaf1 }, /* 0xeaf2 */ { false, 0xeaf2, 0xeaf2 }, /* 0xeaf3 */ { false, 0xeaf3, 0xeaf3 }, /* 0xeaf4 */ { false, 0xeaf4, 0xeaf4 }, /* 0xeaf5 */ { false, 0xeaf5, 0xeaf5 }, /* 0xeaf6 */ { false, 0xeaf6, 0xeaf6 }, /* 0xeaf7 */ { false, 0xeaf7, 0xeaf7 }, /* 0xeaf8 */ { false, 0xeaf8, 0xeaf8 }, /* 0xeaf9 */ { false, 0xeaf9, 0xeaf9 }, /* 0xeafa */ { false, 0xeafa, 0xeafa }, /* 0xeafb */ { false, 0xeafb, 0xeafb }, /* 0xeafc */ { false, 0xeafc, 0xeafc }, /* 0xeafd */ { false, 0xeafd, 0xeafd }, /* 0xeafe */ { false, 0xeafe, 0xeafe }, /* 0xeaff */ { false, 0xeaff, 0xeaff }, /* 0xeb00 */ { false, 0xeb00, 0xeb00 }, /* 0xeb01 */ { false, 0xeb01, 0xeb01 }, /* 0xeb02 */ { false, 0xeb02, 0xeb02 }, /* 0xeb03 */ { false, 0xeb03, 0xeb03 }, /* 0xeb04 */ { false, 0xeb04, 0xeb04 }, /* 0xeb05 */ { false, 0xeb05, 0xeb05 }, /* 0xeb06 */ { false, 0xeb06, 0xeb06 }, /* 0xeb07 */ { false, 0xeb07, 0xeb07 }, /* 0xeb08 */ { false, 0xeb08, 0xeb08 }, /* 0xeb09 */ { false, 0xeb09, 0xeb09 }, /* 0xeb0a */ { false, 0xeb0a, 0xeb0a }, /* 0xeb0b */ { false, 0xeb0b, 0xeb0b }, /* 0xeb0c */ { false, 0xeb0c, 0xeb0c }, /* 0xeb0d */ { false, 0xeb0d, 0xeb0d }, /* 0xeb0e */ { false, 0xeb0e, 0xeb0e }, /* 0xeb0f */ { false, 0xeb0f, 0xeb0f }, /* 0xeb10 */ { false, 0xeb10, 0xeb10 }, /* 0xeb11 */ { false, 0xeb11, 0xeb11 }, /* 0xeb12 */ { false, 0xeb12, 0xeb12 }, /* 0xeb13 */ { false, 0xeb13, 0xeb13 }, /* 0xeb14 */ { false, 0xeb14, 0xeb14 }, /* 0xeb15 */ { false, 0xeb15, 0xeb15 }, /* 0xeb16 */ { false, 0xeb16, 0xeb16 }, /* 0xeb17 */ { false, 0xeb17, 0xeb17 }, /* 0xeb18 */ { false, 0xeb18, 0xeb18 }, /* 0xeb19 */ { false, 0xeb19, 0xeb19 }, /* 0xeb1a */ { false, 0xeb1a, 0xeb1a }, /* 0xeb1b */ { false, 0xeb1b, 0xeb1b }, /* 0xeb1c */ { false, 0xeb1c, 0xeb1c }, /* 0xeb1d */ { false, 0xeb1d, 0xeb1d }, /* 0xeb1e */ { false, 0xeb1e, 0xeb1e }, /* 0xeb1f */ { false, 0xeb1f, 0xeb1f }, /* 0xeb20 */ { false, 0xeb20, 0xeb20 }, /* 0xeb21 */ { false, 0xeb21, 0xeb21 }, /* 0xeb22 */ { false, 0xeb22, 0xeb22 }, /* 0xeb23 */ { false, 0xeb23, 0xeb23 }, /* 0xeb24 */ { false, 0xeb24, 0xeb24 }, /* 0xeb25 */ { false, 0xeb25, 0xeb25 }, /* 0xeb26 */ { false, 0xeb26, 0xeb26 }, /* 0xeb27 */ { false, 0xeb27, 0xeb27 }, /* 0xeb28 */ { false, 0xeb28, 0xeb28 }, /* 0xeb29 */ { false, 0xeb29, 0xeb29 }, /* 0xeb2a */ { false, 0xeb2a, 0xeb2a }, /* 0xeb2b */ { false, 0xeb2b, 0xeb2b }, /* 0xeb2c */ { false, 0xeb2c, 0xeb2c }, /* 0xeb2d */ { false, 0xeb2d, 0xeb2d }, /* 0xeb2e */ { false, 0xeb2e, 0xeb2e }, /* 0xeb2f */ { false, 0xeb2f, 0xeb2f }, /* 0xeb30 */ { false, 0xeb30, 0xeb30 }, /* 0xeb31 */ { false, 0xeb31, 0xeb31 }, /* 0xeb32 */ { false, 0xeb32, 0xeb32 }, /* 0xeb33 */ { false, 0xeb33, 0xeb33 }, /* 0xeb34 */ { false, 0xeb34, 0xeb34 }, /* 0xeb35 */ { false, 0xeb35, 0xeb35 }, /* 0xeb36 */ { false, 0xeb36, 0xeb36 }, /* 0xeb37 */ { false, 0xeb37, 0xeb37 }, /* 0xeb38 */ { false, 0xeb38, 0xeb38 }, /* 0xeb39 */ { false, 0xeb39, 0xeb39 }, /* 0xeb3a */ { false, 0xeb3a, 0xeb3a }, /* 0xeb3b */ { false, 0xeb3b, 0xeb3b }, /* 0xeb3c */ { false, 0xeb3c, 0xeb3c }, /* 0xeb3d */ { false, 0xeb3d, 0xeb3d }, /* 0xeb3e */ { false, 0xeb3e, 0xeb3e }, /* 0xeb3f */ { false, 0xeb3f, 0xeb3f }, /* 0xeb40 */ { false, 0xeb40, 0xeb40 }, /* 0xeb41 */ { false, 0xeb41, 0xeb41 }, /* 0xeb42 */ { false, 0xeb42, 0xeb42 }, /* 0xeb43 */ { false, 0xeb43, 0xeb43 }, /* 0xeb44 */ { false, 0xeb44, 0xeb44 }, /* 0xeb45 */ { false, 0xeb45, 0xeb45 }, /* 0xeb46 */ { false, 0xeb46, 0xeb46 }, /* 0xeb47 */ { false, 0xeb47, 0xeb47 }, /* 0xeb48 */ { false, 0xeb48, 0xeb48 }, /* 0xeb49 */ { false, 0xeb49, 0xeb49 }, /* 0xeb4a */ { false, 0xeb4a, 0xeb4a }, /* 0xeb4b */ { false, 0xeb4b, 0xeb4b }, /* 0xeb4c */ { false, 0xeb4c, 0xeb4c }, /* 0xeb4d */ { false, 0xeb4d, 0xeb4d }, /* 0xeb4e */ { false, 0xeb4e, 0xeb4e }, /* 0xeb4f */ { false, 0xeb4f, 0xeb4f }, /* 0xeb50 */ { false, 0xeb50, 0xeb50 }, /* 0xeb51 */ { false, 0xeb51, 0xeb51 }, /* 0xeb52 */ { false, 0xeb52, 0xeb52 }, /* 0xeb53 */ { false, 0xeb53, 0xeb53 }, /* 0xeb54 */ { false, 0xeb54, 0xeb54 }, /* 0xeb55 */ { false, 0xeb55, 0xeb55 }, /* 0xeb56 */ { false, 0xeb56, 0xeb56 }, /* 0xeb57 */ { false, 0xeb57, 0xeb57 }, /* 0xeb58 */ { false, 0xeb58, 0xeb58 }, /* 0xeb59 */ { false, 0xeb59, 0xeb59 }, /* 0xeb5a */ { false, 0xeb5a, 0xeb5a }, /* 0xeb5b */ { false, 0xeb5b, 0xeb5b }, /* 0xeb5c */ { false, 0xeb5c, 0xeb5c }, /* 0xeb5d */ { false, 0xeb5d, 0xeb5d }, /* 0xeb5e */ { false, 0xeb5e, 0xeb5e }, /* 0xeb5f */ { false, 0xeb5f, 0xeb5f }, /* 0xeb60 */ { false, 0xeb60, 0xeb60 }, /* 0xeb61 */ { false, 0xeb61, 0xeb61 }, /* 0xeb62 */ { false, 0xeb62, 0xeb62 }, /* 0xeb63 */ { false, 0xeb63, 0xeb63 }, /* 0xeb64 */ { false, 0xeb64, 0xeb64 }, /* 0xeb65 */ { false, 0xeb65, 0xeb65 }, /* 0xeb66 */ { false, 0xeb66, 0xeb66 }, /* 0xeb67 */ { false, 0xeb67, 0xeb67 }, /* 0xeb68 */ { false, 0xeb68, 0xeb68 }, /* 0xeb69 */ { false, 0xeb69, 0xeb69 }, /* 0xeb6a */ { false, 0xeb6a, 0xeb6a }, /* 0xeb6b */ { false, 0xeb6b, 0xeb6b }, /* 0xeb6c */ { false, 0xeb6c, 0xeb6c }, /* 0xeb6d */ { false, 0xeb6d, 0xeb6d }, /* 0xeb6e */ { false, 0xeb6e, 0xeb6e }, /* 0xeb6f */ { false, 0xeb6f, 0xeb6f }, /* 0xeb70 */ { false, 0xeb70, 0xeb70 }, /* 0xeb71 */ { false, 0xeb71, 0xeb71 }, /* 0xeb72 */ { false, 0xeb72, 0xeb72 }, /* 0xeb73 */ { false, 0xeb73, 0xeb73 }, /* 0xeb74 */ { false, 0xeb74, 0xeb74 }, /* 0xeb75 */ { false, 0xeb75, 0xeb75 }, /* 0xeb76 */ { false, 0xeb76, 0xeb76 }, /* 0xeb77 */ { false, 0xeb77, 0xeb77 }, /* 0xeb78 */ { false, 0xeb78, 0xeb78 }, /* 0xeb79 */ { false, 0xeb79, 0xeb79 }, /* 0xeb7a */ { false, 0xeb7a, 0xeb7a }, /* 0xeb7b */ { false, 0xeb7b, 0xeb7b }, /* 0xeb7c */ { false, 0xeb7c, 0xeb7c }, /* 0xeb7d */ { false, 0xeb7d, 0xeb7d }, /* 0xeb7e */ { false, 0xeb7e, 0xeb7e }, /* 0xeb7f */ { false, 0xeb7f, 0xeb7f }, /* 0xeb80 */ { false, 0xeb80, 0xeb80 }, /* 0xeb81 */ { false, 0xeb81, 0xeb81 }, /* 0xeb82 */ { false, 0xeb82, 0xeb82 }, /* 0xeb83 */ { false, 0xeb83, 0xeb83 }, /* 0xeb84 */ { false, 0xeb84, 0xeb84 }, /* 0xeb85 */ { false, 0xeb85, 0xeb85 }, /* 0xeb86 */ { false, 0xeb86, 0xeb86 }, /* 0xeb87 */ { false, 0xeb87, 0xeb87 }, /* 0xeb88 */ { false, 0xeb88, 0xeb88 }, /* 0xeb89 */ { false, 0xeb89, 0xeb89 }, /* 0xeb8a */ { false, 0xeb8a, 0xeb8a }, /* 0xeb8b */ { false, 0xeb8b, 0xeb8b }, /* 0xeb8c */ { false, 0xeb8c, 0xeb8c }, /* 0xeb8d */ { false, 0xeb8d, 0xeb8d }, /* 0xeb8e */ { false, 0xeb8e, 0xeb8e }, /* 0xeb8f */ { false, 0xeb8f, 0xeb8f }, /* 0xeb90 */ { false, 0xeb90, 0xeb90 }, /* 0xeb91 */ { false, 0xeb91, 0xeb91 }, /* 0xeb92 */ { false, 0xeb92, 0xeb92 }, /* 0xeb93 */ { false, 0xeb93, 0xeb93 }, /* 0xeb94 */ { false, 0xeb94, 0xeb94 }, /* 0xeb95 */ { false, 0xeb95, 0xeb95 }, /* 0xeb96 */ { false, 0xeb96, 0xeb96 }, /* 0xeb97 */ { false, 0xeb97, 0xeb97 }, /* 0xeb98 */ { false, 0xeb98, 0xeb98 }, /* 0xeb99 */ { false, 0xeb99, 0xeb99 }, /* 0xeb9a */ { false, 0xeb9a, 0xeb9a }, /* 0xeb9b */ { false, 0xeb9b, 0xeb9b }, /* 0xeb9c */ { false, 0xeb9c, 0xeb9c }, /* 0xeb9d */ { false, 0xeb9d, 0xeb9d }, /* 0xeb9e */ { false, 0xeb9e, 0xeb9e }, /* 0xeb9f */ { false, 0xeb9f, 0xeb9f }, /* 0xeba0 */ { false, 0xeba0, 0xeba0 }, /* 0xeba1 */ { false, 0xeba1, 0xeba1 }, /* 0xeba2 */ { false, 0xeba2, 0xeba2 }, /* 0xeba3 */ { false, 0xeba3, 0xeba3 }, /* 0xeba4 */ { false, 0xeba4, 0xeba4 }, /* 0xeba5 */ { false, 0xeba5, 0xeba5 }, /* 0xeba6 */ { false, 0xeba6, 0xeba6 }, /* 0xeba7 */ { false, 0xeba7, 0xeba7 }, /* 0xeba8 */ { false, 0xeba8, 0xeba8 }, /* 0xeba9 */ { false, 0xeba9, 0xeba9 }, /* 0xebaa */ { false, 0xebaa, 0xebaa }, /* 0xebab */ { false, 0xebab, 0xebab }, /* 0xebac */ { false, 0xebac, 0xebac }, /* 0xebad */ { false, 0xebad, 0xebad }, /* 0xebae */ { false, 0xebae, 0xebae }, /* 0xebaf */ { false, 0xebaf, 0xebaf }, /* 0xebb0 */ { false, 0xebb0, 0xebb0 }, /* 0xebb1 */ { false, 0xebb1, 0xebb1 }, /* 0xebb2 */ { false, 0xebb2, 0xebb2 }, /* 0xebb3 */ { false, 0xebb3, 0xebb3 }, /* 0xebb4 */ { false, 0xebb4, 0xebb4 }, /* 0xebb5 */ { false, 0xebb5, 0xebb5 }, /* 0xebb6 */ { false, 0xebb6, 0xebb6 }, /* 0xebb7 */ { false, 0xebb7, 0xebb7 }, /* 0xebb8 */ { false, 0xebb8, 0xebb8 }, /* 0xebb9 */ { false, 0xebb9, 0xebb9 }, /* 0xebba */ { false, 0xebba, 0xebba }, /* 0xebbb */ { false, 0xebbb, 0xebbb }, /* 0xebbc */ { false, 0xebbc, 0xebbc }, /* 0xebbd */ { false, 0xebbd, 0xebbd }, /* 0xebbe */ { false, 0xebbe, 0xebbe }, /* 0xebbf */ { false, 0xebbf, 0xebbf }, /* 0xebc0 */ { false, 0xebc0, 0xebc0 }, /* 0xebc1 */ { false, 0xebc1, 0xebc1 }, /* 0xebc2 */ { false, 0xebc2, 0xebc2 }, /* 0xebc3 */ { false, 0xebc3, 0xebc3 }, /* 0xebc4 */ { false, 0xebc4, 0xebc4 }, /* 0xebc5 */ { false, 0xebc5, 0xebc5 }, /* 0xebc6 */ { false, 0xebc6, 0xebc6 }, /* 0xebc7 */ { false, 0xebc7, 0xebc7 }, /* 0xebc8 */ { false, 0xebc8, 0xebc8 }, /* 0xebc9 */ { false, 0xebc9, 0xebc9 }, /* 0xebca */ { false, 0xebca, 0xebca }, /* 0xebcb */ { false, 0xebcb, 0xebcb }, /* 0xebcc */ { false, 0xebcc, 0xebcc }, /* 0xebcd */ { false, 0xebcd, 0xebcd }, /* 0xebce */ { false, 0xebce, 0xebce }, /* 0xebcf */ { false, 0xebcf, 0xebcf }, /* 0xebd0 */ { false, 0xebd0, 0xebd0 }, /* 0xebd1 */ { false, 0xebd1, 0xebd1 }, /* 0xebd2 */ { false, 0xebd2, 0xebd2 }, /* 0xebd3 */ { false, 0xebd3, 0xebd3 }, /* 0xebd4 */ { false, 0xebd4, 0xebd4 }, /* 0xebd5 */ { false, 0xebd5, 0xebd5 }, /* 0xebd6 */ { false, 0xebd6, 0xebd6 }, /* 0xebd7 */ { false, 0xebd7, 0xebd7 }, /* 0xebd8 */ { false, 0xebd8, 0xebd8 }, /* 0xebd9 */ { false, 0xebd9, 0xebd9 }, /* 0xebda */ { false, 0xebda, 0xebda }, /* 0xebdb */ { false, 0xebdb, 0xebdb }, /* 0xebdc */ { false, 0xebdc, 0xebdc }, /* 0xebdd */ { false, 0xebdd, 0xebdd }, /* 0xebde */ { false, 0xebde, 0xebde }, /* 0xebdf */ { false, 0xebdf, 0xebdf }, /* 0xebe0 */ { false, 0xebe0, 0xebe0 }, /* 0xebe1 */ { false, 0xebe1, 0xebe1 }, /* 0xebe2 */ { false, 0xebe2, 0xebe2 }, /* 0xebe3 */ { false, 0xebe3, 0xebe3 }, /* 0xebe4 */ { false, 0xebe4, 0xebe4 }, /* 0xebe5 */ { false, 0xebe5, 0xebe5 }, /* 0xebe6 */ { false, 0xebe6, 0xebe6 }, /* 0xebe7 */ { false, 0xebe7, 0xebe7 }, /* 0xebe8 */ { false, 0xebe8, 0xebe8 }, /* 0xebe9 */ { false, 0xebe9, 0xebe9 }, /* 0xebea */ { false, 0xebea, 0xebea }, /* 0xebeb */ { false, 0xebeb, 0xebeb }, /* 0xebec */ { false, 0xebec, 0xebec }, /* 0xebed */ { false, 0xebed, 0xebed }, /* 0xebee */ { false, 0xebee, 0xebee }, /* 0xebef */ { false, 0xebef, 0xebef }, /* 0xebf0 */ { false, 0xebf0, 0xebf0 }, /* 0xebf1 */ { false, 0xebf1, 0xebf1 }, /* 0xebf2 */ { false, 0xebf2, 0xebf2 }, /* 0xebf3 */ { false, 0xebf3, 0xebf3 }, /* 0xebf4 */ { false, 0xebf4, 0xebf4 }, /* 0xebf5 */ { false, 0xebf5, 0xebf5 }, /* 0xebf6 */ { false, 0xebf6, 0xebf6 }, /* 0xebf7 */ { false, 0xebf7, 0xebf7 }, /* 0xebf8 */ { false, 0xebf8, 0xebf8 }, /* 0xebf9 */ { false, 0xebf9, 0xebf9 }, /* 0xebfa */ { false, 0xebfa, 0xebfa }, /* 0xebfb */ { false, 0xebfb, 0xebfb }, /* 0xebfc */ { false, 0xebfc, 0xebfc }, /* 0xebfd */ { false, 0xebfd, 0xebfd }, /* 0xebfe */ { false, 0xebfe, 0xebfe }, /* 0xebff */ { false, 0xebff, 0xebff }, /* 0xec00 */ { false, 0xec00, 0xec00 }, /* 0xec01 */ { false, 0xec01, 0xec01 }, /* 0xec02 */ { false, 0xec02, 0xec02 }, /* 0xec03 */ { false, 0xec03, 0xec03 }, /* 0xec04 */ { false, 0xec04, 0xec04 }, /* 0xec05 */ { false, 0xec05, 0xec05 }, /* 0xec06 */ { false, 0xec06, 0xec06 }, /* 0xec07 */ { false, 0xec07, 0xec07 }, /* 0xec08 */ { false, 0xec08, 0xec08 }, /* 0xec09 */ { false, 0xec09, 0xec09 }, /* 0xec0a */ { false, 0xec0a, 0xec0a }, /* 0xec0b */ { false, 0xec0b, 0xec0b }, /* 0xec0c */ { false, 0xec0c, 0xec0c }, /* 0xec0d */ { false, 0xec0d, 0xec0d }, /* 0xec0e */ { false, 0xec0e, 0xec0e }, /* 0xec0f */ { false, 0xec0f, 0xec0f }, /* 0xec10 */ { false, 0xec10, 0xec10 }, /* 0xec11 */ { false, 0xec11, 0xec11 }, /* 0xec12 */ { false, 0xec12, 0xec12 }, /* 0xec13 */ { false, 0xec13, 0xec13 }, /* 0xec14 */ { false, 0xec14, 0xec14 }, /* 0xec15 */ { false, 0xec15, 0xec15 }, /* 0xec16 */ { false, 0xec16, 0xec16 }, /* 0xec17 */ { false, 0xec17, 0xec17 }, /* 0xec18 */ { false, 0xec18, 0xec18 }, /* 0xec19 */ { false, 0xec19, 0xec19 }, /* 0xec1a */ { false, 0xec1a, 0xec1a }, /* 0xec1b */ { false, 0xec1b, 0xec1b }, /* 0xec1c */ { false, 0xec1c, 0xec1c }, /* 0xec1d */ { false, 0xec1d, 0xec1d }, /* 0xec1e */ { false, 0xec1e, 0xec1e }, /* 0xec1f */ { false, 0xec1f, 0xec1f }, /* 0xec20 */ { false, 0xec20, 0xec20 }, /* 0xec21 */ { false, 0xec21, 0xec21 }, /* 0xec22 */ { false, 0xec22, 0xec22 }, /* 0xec23 */ { false, 0xec23, 0xec23 }, /* 0xec24 */ { false, 0xec24, 0xec24 }, /* 0xec25 */ { false, 0xec25, 0xec25 }, /* 0xec26 */ { false, 0xec26, 0xec26 }, /* 0xec27 */ { false, 0xec27, 0xec27 }, /* 0xec28 */ { false, 0xec28, 0xec28 }, /* 0xec29 */ { false, 0xec29, 0xec29 }, /* 0xec2a */ { false, 0xec2a, 0xec2a }, /* 0xec2b */ { false, 0xec2b, 0xec2b }, /* 0xec2c */ { false, 0xec2c, 0xec2c }, /* 0xec2d */ { false, 0xec2d, 0xec2d }, /* 0xec2e */ { false, 0xec2e, 0xec2e }, /* 0xec2f */ { false, 0xec2f, 0xec2f }, /* 0xec30 */ { false, 0xec30, 0xec30 }, /* 0xec31 */ { false, 0xec31, 0xec31 }, /* 0xec32 */ { false, 0xec32, 0xec32 }, /* 0xec33 */ { false, 0xec33, 0xec33 }, /* 0xec34 */ { false, 0xec34, 0xec34 }, /* 0xec35 */ { false, 0xec35, 0xec35 }, /* 0xec36 */ { false, 0xec36, 0xec36 }, /* 0xec37 */ { false, 0xec37, 0xec37 }, /* 0xec38 */ { false, 0xec38, 0xec38 }, /* 0xec39 */ { false, 0xec39, 0xec39 }, /* 0xec3a */ { false, 0xec3a, 0xec3a }, /* 0xec3b */ { false, 0xec3b, 0xec3b }, /* 0xec3c */ { false, 0xec3c, 0xec3c }, /* 0xec3d */ { false, 0xec3d, 0xec3d }, /* 0xec3e */ { false, 0xec3e, 0xec3e }, /* 0xec3f */ { false, 0xec3f, 0xec3f }, /* 0xec40 */ { false, 0xec40, 0xec40 }, /* 0xec41 */ { false, 0xec41, 0xec41 }, /* 0xec42 */ { false, 0xec42, 0xec42 }, /* 0xec43 */ { false, 0xec43, 0xec43 }, /* 0xec44 */ { false, 0xec44, 0xec44 }, /* 0xec45 */ { false, 0xec45, 0xec45 }, /* 0xec46 */ { false, 0xec46, 0xec46 }, /* 0xec47 */ { false, 0xec47, 0xec47 }, /* 0xec48 */ { false, 0xec48, 0xec48 }, /* 0xec49 */ { false, 0xec49, 0xec49 }, /* 0xec4a */ { false, 0xec4a, 0xec4a }, /* 0xec4b */ { false, 0xec4b, 0xec4b }, /* 0xec4c */ { false, 0xec4c, 0xec4c }, /* 0xec4d */ { false, 0xec4d, 0xec4d }, /* 0xec4e */ { false, 0xec4e, 0xec4e }, /* 0xec4f */ { false, 0xec4f, 0xec4f }, /* 0xec50 */ { false, 0xec50, 0xec50 }, /* 0xec51 */ { false, 0xec51, 0xec51 }, /* 0xec52 */ { false, 0xec52, 0xec52 }, /* 0xec53 */ { false, 0xec53, 0xec53 }, /* 0xec54 */ { false, 0xec54, 0xec54 }, /* 0xec55 */ { false, 0xec55, 0xec55 }, /* 0xec56 */ { false, 0xec56, 0xec56 }, /* 0xec57 */ { false, 0xec57, 0xec57 }, /* 0xec58 */ { false, 0xec58, 0xec58 }, /* 0xec59 */ { false, 0xec59, 0xec59 }, /* 0xec5a */ { false, 0xec5a, 0xec5a }, /* 0xec5b */ { false, 0xec5b, 0xec5b }, /* 0xec5c */ { false, 0xec5c, 0xec5c }, /* 0xec5d */ { false, 0xec5d, 0xec5d }, /* 0xec5e */ { false, 0xec5e, 0xec5e }, /* 0xec5f */ { false, 0xec5f, 0xec5f }, /* 0xec60 */ { false, 0xec60, 0xec60 }, /* 0xec61 */ { false, 0xec61, 0xec61 }, /* 0xec62 */ { false, 0xec62, 0xec62 }, /* 0xec63 */ { false, 0xec63, 0xec63 }, /* 0xec64 */ { false, 0xec64, 0xec64 }, /* 0xec65 */ { false, 0xec65, 0xec65 }, /* 0xec66 */ { false, 0xec66, 0xec66 }, /* 0xec67 */ { false, 0xec67, 0xec67 }, /* 0xec68 */ { false, 0xec68, 0xec68 }, /* 0xec69 */ { false, 0xec69, 0xec69 }, /* 0xec6a */ { false, 0xec6a, 0xec6a }, /* 0xec6b */ { false, 0xec6b, 0xec6b }, /* 0xec6c */ { false, 0xec6c, 0xec6c }, /* 0xec6d */ { false, 0xec6d, 0xec6d }, /* 0xec6e */ { false, 0xec6e, 0xec6e }, /* 0xec6f */ { false, 0xec6f, 0xec6f }, /* 0xec70 */ { false, 0xec70, 0xec70 }, /* 0xec71 */ { false, 0xec71, 0xec71 }, /* 0xec72 */ { false, 0xec72, 0xec72 }, /* 0xec73 */ { false, 0xec73, 0xec73 }, /* 0xec74 */ { false, 0xec74, 0xec74 }, /* 0xec75 */ { false, 0xec75, 0xec75 }, /* 0xec76 */ { false, 0xec76, 0xec76 }, /* 0xec77 */ { false, 0xec77, 0xec77 }, /* 0xec78 */ { false, 0xec78, 0xec78 }, /* 0xec79 */ { false, 0xec79, 0xec79 }, /* 0xec7a */ { false, 0xec7a, 0xec7a }, /* 0xec7b */ { false, 0xec7b, 0xec7b }, /* 0xec7c */ { false, 0xec7c, 0xec7c }, /* 0xec7d */ { false, 0xec7d, 0xec7d }, /* 0xec7e */ { false, 0xec7e, 0xec7e }, /* 0xec7f */ { false, 0xec7f, 0xec7f }, /* 0xec80 */ { false, 0xec80, 0xec80 }, /* 0xec81 */ { false, 0xec81, 0xec81 }, /* 0xec82 */ { false, 0xec82, 0xec82 }, /* 0xec83 */ { false, 0xec83, 0xec83 }, /* 0xec84 */ { false, 0xec84, 0xec84 }, /* 0xec85 */ { false, 0xec85, 0xec85 }, /* 0xec86 */ { false, 0xec86, 0xec86 }, /* 0xec87 */ { false, 0xec87, 0xec87 }, /* 0xec88 */ { false, 0xec88, 0xec88 }, /* 0xec89 */ { false, 0xec89, 0xec89 }, /* 0xec8a */ { false, 0xec8a, 0xec8a }, /* 0xec8b */ { false, 0xec8b, 0xec8b }, /* 0xec8c */ { false, 0xec8c, 0xec8c }, /* 0xec8d */ { false, 0xec8d, 0xec8d }, /* 0xec8e */ { false, 0xec8e, 0xec8e }, /* 0xec8f */ { false, 0xec8f, 0xec8f }, /* 0xec90 */ { false, 0xec90, 0xec90 }, /* 0xec91 */ { false, 0xec91, 0xec91 }, /* 0xec92 */ { false, 0xec92, 0xec92 }, /* 0xec93 */ { false, 0xec93, 0xec93 }, /* 0xec94 */ { false, 0xec94, 0xec94 }, /* 0xec95 */ { false, 0xec95, 0xec95 }, /* 0xec96 */ { false, 0xec96, 0xec96 }, /* 0xec97 */ { false, 0xec97, 0xec97 }, /* 0xec98 */ { false, 0xec98, 0xec98 }, /* 0xec99 */ { false, 0xec99, 0xec99 }, /* 0xec9a */ { false, 0xec9a, 0xec9a }, /* 0xec9b */ { false, 0xec9b, 0xec9b }, /* 0xec9c */ { false, 0xec9c, 0xec9c }, /* 0xec9d */ { false, 0xec9d, 0xec9d }, /* 0xec9e */ { false, 0xec9e, 0xec9e }, /* 0xec9f */ { false, 0xec9f, 0xec9f }, /* 0xeca0 */ { false, 0xeca0, 0xeca0 }, /* 0xeca1 */ { false, 0xeca1, 0xeca1 }, /* 0xeca2 */ { false, 0xeca2, 0xeca2 }, /* 0xeca3 */ { false, 0xeca3, 0xeca3 }, /* 0xeca4 */ { false, 0xeca4, 0xeca4 }, /* 0xeca5 */ { false, 0xeca5, 0xeca5 }, /* 0xeca6 */ { false, 0xeca6, 0xeca6 }, /* 0xeca7 */ { false, 0xeca7, 0xeca7 }, /* 0xeca8 */ { false, 0xeca8, 0xeca8 }, /* 0xeca9 */ { false, 0xeca9, 0xeca9 }, /* 0xecaa */ { false, 0xecaa, 0xecaa }, /* 0xecab */ { false, 0xecab, 0xecab }, /* 0xecac */ { false, 0xecac, 0xecac }, /* 0xecad */ { false, 0xecad, 0xecad }, /* 0xecae */ { false, 0xecae, 0xecae }, /* 0xecaf */ { false, 0xecaf, 0xecaf }, /* 0xecb0 */ { false, 0xecb0, 0xecb0 }, /* 0xecb1 */ { false, 0xecb1, 0xecb1 }, /* 0xecb2 */ { false, 0xecb2, 0xecb2 }, /* 0xecb3 */ { false, 0xecb3, 0xecb3 }, /* 0xecb4 */ { false, 0xecb4, 0xecb4 }, /* 0xecb5 */ { false, 0xecb5, 0xecb5 }, /* 0xecb6 */ { false, 0xecb6, 0xecb6 }, /* 0xecb7 */ { false, 0xecb7, 0xecb7 }, /* 0xecb8 */ { false, 0xecb8, 0xecb8 }, /* 0xecb9 */ { false, 0xecb9, 0xecb9 }, /* 0xecba */ { false, 0xecba, 0xecba }, /* 0xecbb */ { false, 0xecbb, 0xecbb }, /* 0xecbc */ { false, 0xecbc, 0xecbc }, /* 0xecbd */ { false, 0xecbd, 0xecbd }, /* 0xecbe */ { false, 0xecbe, 0xecbe }, /* 0xecbf */ { false, 0xecbf, 0xecbf }, /* 0xecc0 */ { false, 0xecc0, 0xecc0 }, /* 0xecc1 */ { false, 0xecc1, 0xecc1 }, /* 0xecc2 */ { false, 0xecc2, 0xecc2 }, /* 0xecc3 */ { false, 0xecc3, 0xecc3 }, /* 0xecc4 */ { false, 0xecc4, 0xecc4 }, /* 0xecc5 */ { false, 0xecc5, 0xecc5 }, /* 0xecc6 */ { false, 0xecc6, 0xecc6 }, /* 0xecc7 */ { false, 0xecc7, 0xecc7 }, /* 0xecc8 */ { false, 0xecc8, 0xecc8 }, /* 0xecc9 */ { false, 0xecc9, 0xecc9 }, /* 0xecca */ { false, 0xecca, 0xecca }, /* 0xeccb */ { false, 0xeccb, 0xeccb }, /* 0xeccc */ { false, 0xeccc, 0xeccc }, /* 0xeccd */ { false, 0xeccd, 0xeccd }, /* 0xecce */ { false, 0xecce, 0xecce }, /* 0xeccf */ { false, 0xeccf, 0xeccf }, /* 0xecd0 */ { false, 0xecd0, 0xecd0 }, /* 0xecd1 */ { false, 0xecd1, 0xecd1 }, /* 0xecd2 */ { false, 0xecd2, 0xecd2 }, /* 0xecd3 */ { false, 0xecd3, 0xecd3 }, /* 0xecd4 */ { false, 0xecd4, 0xecd4 }, /* 0xecd5 */ { false, 0xecd5, 0xecd5 }, /* 0xecd6 */ { false, 0xecd6, 0xecd6 }, /* 0xecd7 */ { false, 0xecd7, 0xecd7 }, /* 0xecd8 */ { false, 0xecd8, 0xecd8 }, /* 0xecd9 */ { false, 0xecd9, 0xecd9 }, /* 0xecda */ { false, 0xecda, 0xecda }, /* 0xecdb */ { false, 0xecdb, 0xecdb }, /* 0xecdc */ { false, 0xecdc, 0xecdc }, /* 0xecdd */ { false, 0xecdd, 0xecdd }, /* 0xecde */ { false, 0xecde, 0xecde }, /* 0xecdf */ { false, 0xecdf, 0xecdf }, /* 0xece0 */ { false, 0xece0, 0xece0 }, /* 0xece1 */ { false, 0xece1, 0xece1 }, /* 0xece2 */ { false, 0xece2, 0xece2 }, /* 0xece3 */ { false, 0xece3, 0xece3 }, /* 0xece4 */ { false, 0xece4, 0xece4 }, /* 0xece5 */ { false, 0xece5, 0xece5 }, /* 0xece6 */ { false, 0xece6, 0xece6 }, /* 0xece7 */ { false, 0xece7, 0xece7 }, /* 0xece8 */ { false, 0xece8, 0xece8 }, /* 0xece9 */ { false, 0xece9, 0xece9 }, /* 0xecea */ { false, 0xecea, 0xecea }, /* 0xeceb */ { false, 0xeceb, 0xeceb }, /* 0xecec */ { false, 0xecec, 0xecec }, /* 0xeced */ { false, 0xeced, 0xeced }, /* 0xecee */ { false, 0xecee, 0xecee }, /* 0xecef */ { false, 0xecef, 0xecef }, /* 0xecf0 */ { false, 0xecf0, 0xecf0 }, /* 0xecf1 */ { false, 0xecf1, 0xecf1 }, /* 0xecf2 */ { false, 0xecf2, 0xecf2 }, /* 0xecf3 */ { false, 0xecf3, 0xecf3 }, /* 0xecf4 */ { false, 0xecf4, 0xecf4 }, /* 0xecf5 */ { false, 0xecf5, 0xecf5 }, /* 0xecf6 */ { false, 0xecf6, 0xecf6 }, /* 0xecf7 */ { false, 0xecf7, 0xecf7 }, /* 0xecf8 */ { false, 0xecf8, 0xecf8 }, /* 0xecf9 */ { false, 0xecf9, 0xecf9 }, /* 0xecfa */ { false, 0xecfa, 0xecfa }, /* 0xecfb */ { false, 0xecfb, 0xecfb }, /* 0xecfc */ { false, 0xecfc, 0xecfc }, /* 0xecfd */ { false, 0xecfd, 0xecfd }, /* 0xecfe */ { false, 0xecfe, 0xecfe }, /* 0xecff */ { false, 0xecff, 0xecff }, /* 0xed00 */ { false, 0xed00, 0xed00 }, /* 0xed01 */ { false, 0xed01, 0xed01 }, /* 0xed02 */ { false, 0xed02, 0xed02 }, /* 0xed03 */ { false, 0xed03, 0xed03 }, /* 0xed04 */ { false, 0xed04, 0xed04 }, /* 0xed05 */ { false, 0xed05, 0xed05 }, /* 0xed06 */ { false, 0xed06, 0xed06 }, /* 0xed07 */ { false, 0xed07, 0xed07 }, /* 0xed08 */ { false, 0xed08, 0xed08 }, /* 0xed09 */ { false, 0xed09, 0xed09 }, /* 0xed0a */ { false, 0xed0a, 0xed0a }, /* 0xed0b */ { false, 0xed0b, 0xed0b }, /* 0xed0c */ { false, 0xed0c, 0xed0c }, /* 0xed0d */ { false, 0xed0d, 0xed0d }, /* 0xed0e */ { false, 0xed0e, 0xed0e }, /* 0xed0f */ { false, 0xed0f, 0xed0f }, /* 0xed10 */ { false, 0xed10, 0xed10 }, /* 0xed11 */ { false, 0xed11, 0xed11 }, /* 0xed12 */ { false, 0xed12, 0xed12 }, /* 0xed13 */ { false, 0xed13, 0xed13 }, /* 0xed14 */ { false, 0xed14, 0xed14 }, /* 0xed15 */ { false, 0xed15, 0xed15 }, /* 0xed16 */ { false, 0xed16, 0xed16 }, /* 0xed17 */ { false, 0xed17, 0xed17 }, /* 0xed18 */ { false, 0xed18, 0xed18 }, /* 0xed19 */ { false, 0xed19, 0xed19 }, /* 0xed1a */ { false, 0xed1a, 0xed1a }, /* 0xed1b */ { false, 0xed1b, 0xed1b }, /* 0xed1c */ { false, 0xed1c, 0xed1c }, /* 0xed1d */ { false, 0xed1d, 0xed1d }, /* 0xed1e */ { false, 0xed1e, 0xed1e }, /* 0xed1f */ { false, 0xed1f, 0xed1f }, /* 0xed20 */ { false, 0xed20, 0xed20 }, /* 0xed21 */ { false, 0xed21, 0xed21 }, /* 0xed22 */ { false, 0xed22, 0xed22 }, /* 0xed23 */ { false, 0xed23, 0xed23 }, /* 0xed24 */ { false, 0xed24, 0xed24 }, /* 0xed25 */ { false, 0xed25, 0xed25 }, /* 0xed26 */ { false, 0xed26, 0xed26 }, /* 0xed27 */ { false, 0xed27, 0xed27 }, /* 0xed28 */ { false, 0xed28, 0xed28 }, /* 0xed29 */ { false, 0xed29, 0xed29 }, /* 0xed2a */ { false, 0xed2a, 0xed2a }, /* 0xed2b */ { false, 0xed2b, 0xed2b }, /* 0xed2c */ { false, 0xed2c, 0xed2c }, /* 0xed2d */ { false, 0xed2d, 0xed2d }, /* 0xed2e */ { false, 0xed2e, 0xed2e }, /* 0xed2f */ { false, 0xed2f, 0xed2f }, /* 0xed30 */ { false, 0xed30, 0xed30 }, /* 0xed31 */ { false, 0xed31, 0xed31 }, /* 0xed32 */ { false, 0xed32, 0xed32 }, /* 0xed33 */ { false, 0xed33, 0xed33 }, /* 0xed34 */ { false, 0xed34, 0xed34 }, /* 0xed35 */ { false, 0xed35, 0xed35 }, /* 0xed36 */ { false, 0xed36, 0xed36 }, /* 0xed37 */ { false, 0xed37, 0xed37 }, /* 0xed38 */ { false, 0xed38, 0xed38 }, /* 0xed39 */ { false, 0xed39, 0xed39 }, /* 0xed3a */ { false, 0xed3a, 0xed3a }, /* 0xed3b */ { false, 0xed3b, 0xed3b }, /* 0xed3c */ { false, 0xed3c, 0xed3c }, /* 0xed3d */ { false, 0xed3d, 0xed3d }, /* 0xed3e */ { false, 0xed3e, 0xed3e }, /* 0xed3f */ { false, 0xed3f, 0xed3f }, /* 0xed40 */ { false, 0xed40, 0xed40 }, /* 0xed41 */ { false, 0xed41, 0xed41 }, /* 0xed42 */ { false, 0xed42, 0xed42 }, /* 0xed43 */ { false, 0xed43, 0xed43 }, /* 0xed44 */ { false, 0xed44, 0xed44 }, /* 0xed45 */ { false, 0xed45, 0xed45 }, /* 0xed46 */ { false, 0xed46, 0xed46 }, /* 0xed47 */ { false, 0xed47, 0xed47 }, /* 0xed48 */ { false, 0xed48, 0xed48 }, /* 0xed49 */ { false, 0xed49, 0xed49 }, /* 0xed4a */ { false, 0xed4a, 0xed4a }, /* 0xed4b */ { false, 0xed4b, 0xed4b }, /* 0xed4c */ { false, 0xed4c, 0xed4c }, /* 0xed4d */ { false, 0xed4d, 0xed4d }, /* 0xed4e */ { false, 0xed4e, 0xed4e }, /* 0xed4f */ { false, 0xed4f, 0xed4f }, /* 0xed50 */ { false, 0xed50, 0xed50 }, /* 0xed51 */ { false, 0xed51, 0xed51 }, /* 0xed52 */ { false, 0xed52, 0xed52 }, /* 0xed53 */ { false, 0xed53, 0xed53 }, /* 0xed54 */ { false, 0xed54, 0xed54 }, /* 0xed55 */ { false, 0xed55, 0xed55 }, /* 0xed56 */ { false, 0xed56, 0xed56 }, /* 0xed57 */ { false, 0xed57, 0xed57 }, /* 0xed58 */ { false, 0xed58, 0xed58 }, /* 0xed59 */ { false, 0xed59, 0xed59 }, /* 0xed5a */ { false, 0xed5a, 0xed5a }, /* 0xed5b */ { false, 0xed5b, 0xed5b }, /* 0xed5c */ { false, 0xed5c, 0xed5c }, /* 0xed5d */ { false, 0xed5d, 0xed5d }, /* 0xed5e */ { false, 0xed5e, 0xed5e }, /* 0xed5f */ { false, 0xed5f, 0xed5f }, /* 0xed60 */ { false, 0xed60, 0xed60 }, /* 0xed61 */ { false, 0xed61, 0xed61 }, /* 0xed62 */ { false, 0xed62, 0xed62 }, /* 0xed63 */ { false, 0xed63, 0xed63 }, /* 0xed64 */ { false, 0xed64, 0xed64 }, /* 0xed65 */ { false, 0xed65, 0xed65 }, /* 0xed66 */ { false, 0xed66, 0xed66 }, /* 0xed67 */ { false, 0xed67, 0xed67 }, /* 0xed68 */ { false, 0xed68, 0xed68 }, /* 0xed69 */ { false, 0xed69, 0xed69 }, /* 0xed6a */ { false, 0xed6a, 0xed6a }, /* 0xed6b */ { false, 0xed6b, 0xed6b }, /* 0xed6c */ { false, 0xed6c, 0xed6c }, /* 0xed6d */ { false, 0xed6d, 0xed6d }, /* 0xed6e */ { false, 0xed6e, 0xed6e }, /* 0xed6f */ { false, 0xed6f, 0xed6f }, /* 0xed70 */ { false, 0xed70, 0xed70 }, /* 0xed71 */ { false, 0xed71, 0xed71 }, /* 0xed72 */ { false, 0xed72, 0xed72 }, /* 0xed73 */ { false, 0xed73, 0xed73 }, /* 0xed74 */ { false, 0xed74, 0xed74 }, /* 0xed75 */ { false, 0xed75, 0xed75 }, /* 0xed76 */ { false, 0xed76, 0xed76 }, /* 0xed77 */ { false, 0xed77, 0xed77 }, /* 0xed78 */ { false, 0xed78, 0xed78 }, /* 0xed79 */ { false, 0xed79, 0xed79 }, /* 0xed7a */ { false, 0xed7a, 0xed7a }, /* 0xed7b */ { false, 0xed7b, 0xed7b }, /* 0xed7c */ { false, 0xed7c, 0xed7c }, /* 0xed7d */ { false, 0xed7d, 0xed7d }, /* 0xed7e */ { false, 0xed7e, 0xed7e }, /* 0xed7f */ { false, 0xed7f, 0xed7f }, /* 0xed80 */ { false, 0xed80, 0xed80 }, /* 0xed81 */ { false, 0xed81, 0xed81 }, /* 0xed82 */ { false, 0xed82, 0xed82 }, /* 0xed83 */ { false, 0xed83, 0xed83 }, /* 0xed84 */ { false, 0xed84, 0xed84 }, /* 0xed85 */ { false, 0xed85, 0xed85 }, /* 0xed86 */ { false, 0xed86, 0xed86 }, /* 0xed87 */ { false, 0xed87, 0xed87 }, /* 0xed88 */ { false, 0xed88, 0xed88 }, /* 0xed89 */ { false, 0xed89, 0xed89 }, /* 0xed8a */ { false, 0xed8a, 0xed8a }, /* 0xed8b */ { false, 0xed8b, 0xed8b }, /* 0xed8c */ { false, 0xed8c, 0xed8c }, /* 0xed8d */ { false, 0xed8d, 0xed8d }, /* 0xed8e */ { false, 0xed8e, 0xed8e }, /* 0xed8f */ { false, 0xed8f, 0xed8f }, /* 0xed90 */ { false, 0xed90, 0xed90 }, /* 0xed91 */ { false, 0xed91, 0xed91 }, /* 0xed92 */ { false, 0xed92, 0xed92 }, /* 0xed93 */ { false, 0xed93, 0xed93 }, /* 0xed94 */ { false, 0xed94, 0xed94 }, /* 0xed95 */ { false, 0xed95, 0xed95 }, /* 0xed96 */ { false, 0xed96, 0xed96 }, /* 0xed97 */ { false, 0xed97, 0xed97 }, /* 0xed98 */ { false, 0xed98, 0xed98 }, /* 0xed99 */ { false, 0xed99, 0xed99 }, /* 0xed9a */ { false, 0xed9a, 0xed9a }, /* 0xed9b */ { false, 0xed9b, 0xed9b }, /* 0xed9c */ { false, 0xed9c, 0xed9c }, /* 0xed9d */ { false, 0xed9d, 0xed9d }, /* 0xed9e */ { false, 0xed9e, 0xed9e }, /* 0xed9f */ { false, 0xed9f, 0xed9f }, /* 0xeda0 */ { false, 0xeda0, 0xeda0 }, /* 0xeda1 */ { false, 0xeda1, 0xeda1 }, /* 0xeda2 */ { false, 0xeda2, 0xeda2 }, /* 0xeda3 */ { false, 0xeda3, 0xeda3 }, /* 0xeda4 */ { false, 0xeda4, 0xeda4 }, /* 0xeda5 */ { false, 0xeda5, 0xeda5 }, /* 0xeda6 */ { false, 0xeda6, 0xeda6 }, /* 0xeda7 */ { false, 0xeda7, 0xeda7 }, /* 0xeda8 */ { false, 0xeda8, 0xeda8 }, /* 0xeda9 */ { false, 0xeda9, 0xeda9 }, /* 0xedaa */ { false, 0xedaa, 0xedaa }, /* 0xedab */ { false, 0xedab, 0xedab }, /* 0xedac */ { false, 0xedac, 0xedac }, /* 0xedad */ { false, 0xedad, 0xedad }, /* 0xedae */ { false, 0xedae, 0xedae }, /* 0xedaf */ { false, 0xedaf, 0xedaf }, /* 0xedb0 */ { false, 0xedb0, 0xedb0 }, /* 0xedb1 */ { false, 0xedb1, 0xedb1 }, /* 0xedb2 */ { false, 0xedb2, 0xedb2 }, /* 0xedb3 */ { false, 0xedb3, 0xedb3 }, /* 0xedb4 */ { false, 0xedb4, 0xedb4 }, /* 0xedb5 */ { false, 0xedb5, 0xedb5 }, /* 0xedb6 */ { false, 0xedb6, 0xedb6 }, /* 0xedb7 */ { false, 0xedb7, 0xedb7 }, /* 0xedb8 */ { false, 0xedb8, 0xedb8 }, /* 0xedb9 */ { false, 0xedb9, 0xedb9 }, /* 0xedba */ { false, 0xedba, 0xedba }, /* 0xedbb */ { false, 0xedbb, 0xedbb }, /* 0xedbc */ { false, 0xedbc, 0xedbc }, /* 0xedbd */ { false, 0xedbd, 0xedbd }, /* 0xedbe */ { false, 0xedbe, 0xedbe }, /* 0xedbf */ { false, 0xedbf, 0xedbf }, /* 0xedc0 */ { false, 0xedc0, 0xedc0 }, /* 0xedc1 */ { false, 0xedc1, 0xedc1 }, /* 0xedc2 */ { false, 0xedc2, 0xedc2 }, /* 0xedc3 */ { false, 0xedc3, 0xedc3 }, /* 0xedc4 */ { false, 0xedc4, 0xedc4 }, /* 0xedc5 */ { false, 0xedc5, 0xedc5 }, /* 0xedc6 */ { false, 0xedc6, 0xedc6 }, /* 0xedc7 */ { false, 0xedc7, 0xedc7 }, /* 0xedc8 */ { false, 0xedc8, 0xedc8 }, /* 0xedc9 */ { false, 0xedc9, 0xedc9 }, /* 0xedca */ { false, 0xedca, 0xedca }, /* 0xedcb */ { false, 0xedcb, 0xedcb }, /* 0xedcc */ { false, 0xedcc, 0xedcc }, /* 0xedcd */ { false, 0xedcd, 0xedcd }, /* 0xedce */ { false, 0xedce, 0xedce }, /* 0xedcf */ { false, 0xedcf, 0xedcf }, /* 0xedd0 */ { false, 0xedd0, 0xedd0 }, /* 0xedd1 */ { false, 0xedd1, 0xedd1 }, /* 0xedd2 */ { false, 0xedd2, 0xedd2 }, /* 0xedd3 */ { false, 0xedd3, 0xedd3 }, /* 0xedd4 */ { false, 0xedd4, 0xedd4 }, /* 0xedd5 */ { false, 0xedd5, 0xedd5 }, /* 0xedd6 */ { false, 0xedd6, 0xedd6 }, /* 0xedd7 */ { false, 0xedd7, 0xedd7 }, /* 0xedd8 */ { false, 0xedd8, 0xedd8 }, /* 0xedd9 */ { false, 0xedd9, 0xedd9 }, /* 0xedda */ { false, 0xedda, 0xedda }, /* 0xeddb */ { false, 0xeddb, 0xeddb }, /* 0xeddc */ { false, 0xeddc, 0xeddc }, /* 0xeddd */ { false, 0xeddd, 0xeddd }, /* 0xedde */ { false, 0xedde, 0xedde }, /* 0xeddf */ { false, 0xeddf, 0xeddf }, /* 0xede0 */ { false, 0xede0, 0xede0 }, /* 0xede1 */ { false, 0xede1, 0xede1 }, /* 0xede2 */ { false, 0xede2, 0xede2 }, /* 0xede3 */ { false, 0xede3, 0xede3 }, /* 0xede4 */ { false, 0xede4, 0xede4 }, /* 0xede5 */ { false, 0xede5, 0xede5 }, /* 0xede6 */ { false, 0xede6, 0xede6 }, /* 0xede7 */ { false, 0xede7, 0xede7 }, /* 0xede8 */ { false, 0xede8, 0xede8 }, /* 0xede9 */ { false, 0xede9, 0xede9 }, /* 0xedea */ { false, 0xedea, 0xedea }, /* 0xedeb */ { false, 0xedeb, 0xedeb }, /* 0xedec */ { false, 0xedec, 0xedec }, /* 0xeded */ { false, 0xeded, 0xeded }, /* 0xedee */ { false, 0xedee, 0xedee }, /* 0xedef */ { false, 0xedef, 0xedef }, /* 0xedf0 */ { false, 0xedf0, 0xedf0 }, /* 0xedf1 */ { false, 0xedf1, 0xedf1 }, /* 0xedf2 */ { false, 0xedf2, 0xedf2 }, /* 0xedf3 */ { false, 0xedf3, 0xedf3 }, /* 0xedf4 */ { false, 0xedf4, 0xedf4 }, /* 0xedf5 */ { false, 0xedf5, 0xedf5 }, /* 0xedf6 */ { false, 0xedf6, 0xedf6 }, /* 0xedf7 */ { false, 0xedf7, 0xedf7 }, /* 0xedf8 */ { false, 0xedf8, 0xedf8 }, /* 0xedf9 */ { false, 0xedf9, 0xedf9 }, /* 0xedfa */ { false, 0xedfa, 0xedfa }, /* 0xedfb */ { false, 0xedfb, 0xedfb }, /* 0xedfc */ { false, 0xedfc, 0xedfc }, /* 0xedfd */ { false, 0xedfd, 0xedfd }, /* 0xedfe */ { false, 0xedfe, 0xedfe }, /* 0xedff */ { false, 0xedff, 0xedff }, /* 0xee00 */ { false, 0xee00, 0xee00 }, /* 0xee01 */ { false, 0xee01, 0xee01 }, /* 0xee02 */ { false, 0xee02, 0xee02 }, /* 0xee03 */ { false, 0xee03, 0xee03 }, /* 0xee04 */ { false, 0xee04, 0xee04 }, /* 0xee05 */ { false, 0xee05, 0xee05 }, /* 0xee06 */ { false, 0xee06, 0xee06 }, /* 0xee07 */ { false, 0xee07, 0xee07 }, /* 0xee08 */ { false, 0xee08, 0xee08 }, /* 0xee09 */ { false, 0xee09, 0xee09 }, /* 0xee0a */ { false, 0xee0a, 0xee0a }, /* 0xee0b */ { false, 0xee0b, 0xee0b }, /* 0xee0c */ { false, 0xee0c, 0xee0c }, /* 0xee0d */ { false, 0xee0d, 0xee0d }, /* 0xee0e */ { false, 0xee0e, 0xee0e }, /* 0xee0f */ { false, 0xee0f, 0xee0f }, /* 0xee10 */ { false, 0xee10, 0xee10 }, /* 0xee11 */ { false, 0xee11, 0xee11 }, /* 0xee12 */ { false, 0xee12, 0xee12 }, /* 0xee13 */ { false, 0xee13, 0xee13 }, /* 0xee14 */ { false, 0xee14, 0xee14 }, /* 0xee15 */ { false, 0xee15, 0xee15 }, /* 0xee16 */ { false, 0xee16, 0xee16 }, /* 0xee17 */ { false, 0xee17, 0xee17 }, /* 0xee18 */ { false, 0xee18, 0xee18 }, /* 0xee19 */ { false, 0xee19, 0xee19 }, /* 0xee1a */ { false, 0xee1a, 0xee1a }, /* 0xee1b */ { false, 0xee1b, 0xee1b }, /* 0xee1c */ { false, 0xee1c, 0xee1c }, /* 0xee1d */ { false, 0xee1d, 0xee1d }, /* 0xee1e */ { false, 0xee1e, 0xee1e }, /* 0xee1f */ { false, 0xee1f, 0xee1f }, /* 0xee20 */ { false, 0xee20, 0xee20 }, /* 0xee21 */ { false, 0xee21, 0xee21 }, /* 0xee22 */ { false, 0xee22, 0xee22 }, /* 0xee23 */ { false, 0xee23, 0xee23 }, /* 0xee24 */ { false, 0xee24, 0xee24 }, /* 0xee25 */ { false, 0xee25, 0xee25 }, /* 0xee26 */ { false, 0xee26, 0xee26 }, /* 0xee27 */ { false, 0xee27, 0xee27 }, /* 0xee28 */ { false, 0xee28, 0xee28 }, /* 0xee29 */ { false, 0xee29, 0xee29 }, /* 0xee2a */ { false, 0xee2a, 0xee2a }, /* 0xee2b */ { false, 0xee2b, 0xee2b }, /* 0xee2c */ { false, 0xee2c, 0xee2c }, /* 0xee2d */ { false, 0xee2d, 0xee2d }, /* 0xee2e */ { false, 0xee2e, 0xee2e }, /* 0xee2f */ { false, 0xee2f, 0xee2f }, /* 0xee30 */ { false, 0xee30, 0xee30 }, /* 0xee31 */ { false, 0xee31, 0xee31 }, /* 0xee32 */ { false, 0xee32, 0xee32 }, /* 0xee33 */ { false, 0xee33, 0xee33 }, /* 0xee34 */ { false, 0xee34, 0xee34 }, /* 0xee35 */ { false, 0xee35, 0xee35 }, /* 0xee36 */ { false, 0xee36, 0xee36 }, /* 0xee37 */ { false, 0xee37, 0xee37 }, /* 0xee38 */ { false, 0xee38, 0xee38 }, /* 0xee39 */ { false, 0xee39, 0xee39 }, /* 0xee3a */ { false, 0xee3a, 0xee3a }, /* 0xee3b */ { false, 0xee3b, 0xee3b }, /* 0xee3c */ { false, 0xee3c, 0xee3c }, /* 0xee3d */ { false, 0xee3d, 0xee3d }, /* 0xee3e */ { false, 0xee3e, 0xee3e }, /* 0xee3f */ { false, 0xee3f, 0xee3f }, /* 0xee40 */ { false, 0xee40, 0xee40 }, /* 0xee41 */ { false, 0xee41, 0xee41 }, /* 0xee42 */ { false, 0xee42, 0xee42 }, /* 0xee43 */ { false, 0xee43, 0xee43 }, /* 0xee44 */ { false, 0xee44, 0xee44 }, /* 0xee45 */ { false, 0xee45, 0xee45 }, /* 0xee46 */ { false, 0xee46, 0xee46 }, /* 0xee47 */ { false, 0xee47, 0xee47 }, /* 0xee48 */ { false, 0xee48, 0xee48 }, /* 0xee49 */ { false, 0xee49, 0xee49 }, /* 0xee4a */ { false, 0xee4a, 0xee4a }, /* 0xee4b */ { false, 0xee4b, 0xee4b }, /* 0xee4c */ { false, 0xee4c, 0xee4c }, /* 0xee4d */ { false, 0xee4d, 0xee4d }, /* 0xee4e */ { false, 0xee4e, 0xee4e }, /* 0xee4f */ { false, 0xee4f, 0xee4f }, /* 0xee50 */ { false, 0xee50, 0xee50 }, /* 0xee51 */ { false, 0xee51, 0xee51 }, /* 0xee52 */ { false, 0xee52, 0xee52 }, /* 0xee53 */ { false, 0xee53, 0xee53 }, /* 0xee54 */ { false, 0xee54, 0xee54 }, /* 0xee55 */ { false, 0xee55, 0xee55 }, /* 0xee56 */ { false, 0xee56, 0xee56 }, /* 0xee57 */ { false, 0xee57, 0xee57 }, /* 0xee58 */ { false, 0xee58, 0xee58 }, /* 0xee59 */ { false, 0xee59, 0xee59 }, /* 0xee5a */ { false, 0xee5a, 0xee5a }, /* 0xee5b */ { false, 0xee5b, 0xee5b }, /* 0xee5c */ { false, 0xee5c, 0xee5c }, /* 0xee5d */ { false, 0xee5d, 0xee5d }, /* 0xee5e */ { false, 0xee5e, 0xee5e }, /* 0xee5f */ { false, 0xee5f, 0xee5f }, /* 0xee60 */ { false, 0xee60, 0xee60 }, /* 0xee61 */ { false, 0xee61, 0xee61 }, /* 0xee62 */ { false, 0xee62, 0xee62 }, /* 0xee63 */ { false, 0xee63, 0xee63 }, /* 0xee64 */ { false, 0xee64, 0xee64 }, /* 0xee65 */ { false, 0xee65, 0xee65 }, /* 0xee66 */ { false, 0xee66, 0xee66 }, /* 0xee67 */ { false, 0xee67, 0xee67 }, /* 0xee68 */ { false, 0xee68, 0xee68 }, /* 0xee69 */ { false, 0xee69, 0xee69 }, /* 0xee6a */ { false, 0xee6a, 0xee6a }, /* 0xee6b */ { false, 0xee6b, 0xee6b }, /* 0xee6c */ { false, 0xee6c, 0xee6c }, /* 0xee6d */ { false, 0xee6d, 0xee6d }, /* 0xee6e */ { false, 0xee6e, 0xee6e }, /* 0xee6f */ { false, 0xee6f, 0xee6f }, /* 0xee70 */ { false, 0xee70, 0xee70 }, /* 0xee71 */ { false, 0xee71, 0xee71 }, /* 0xee72 */ { false, 0xee72, 0xee72 }, /* 0xee73 */ { false, 0xee73, 0xee73 }, /* 0xee74 */ { false, 0xee74, 0xee74 }, /* 0xee75 */ { false, 0xee75, 0xee75 }, /* 0xee76 */ { false, 0xee76, 0xee76 }, /* 0xee77 */ { false, 0xee77, 0xee77 }, /* 0xee78 */ { false, 0xee78, 0xee78 }, /* 0xee79 */ { false, 0xee79, 0xee79 }, /* 0xee7a */ { false, 0xee7a, 0xee7a }, /* 0xee7b */ { false, 0xee7b, 0xee7b }, /* 0xee7c */ { false, 0xee7c, 0xee7c }, /* 0xee7d */ { false, 0xee7d, 0xee7d }, /* 0xee7e */ { false, 0xee7e, 0xee7e }, /* 0xee7f */ { false, 0xee7f, 0xee7f }, /* 0xee80 */ { false, 0xee80, 0xee80 }, /* 0xee81 */ { false, 0xee81, 0xee81 }, /* 0xee82 */ { false, 0xee82, 0xee82 }, /* 0xee83 */ { false, 0xee83, 0xee83 }, /* 0xee84 */ { false, 0xee84, 0xee84 }, /* 0xee85 */ { false, 0xee85, 0xee85 }, /* 0xee86 */ { false, 0xee86, 0xee86 }, /* 0xee87 */ { false, 0xee87, 0xee87 }, /* 0xee88 */ { false, 0xee88, 0xee88 }, /* 0xee89 */ { false, 0xee89, 0xee89 }, /* 0xee8a */ { false, 0xee8a, 0xee8a }, /* 0xee8b */ { false, 0xee8b, 0xee8b }, /* 0xee8c */ { false, 0xee8c, 0xee8c }, /* 0xee8d */ { false, 0xee8d, 0xee8d }, /* 0xee8e */ { false, 0xee8e, 0xee8e }, /* 0xee8f */ { false, 0xee8f, 0xee8f }, /* 0xee90 */ { false, 0xee90, 0xee90 }, /* 0xee91 */ { false, 0xee91, 0xee91 }, /* 0xee92 */ { false, 0xee92, 0xee92 }, /* 0xee93 */ { false, 0xee93, 0xee93 }, /* 0xee94 */ { false, 0xee94, 0xee94 }, /* 0xee95 */ { false, 0xee95, 0xee95 }, /* 0xee96 */ { false, 0xee96, 0xee96 }, /* 0xee97 */ { false, 0xee97, 0xee97 }, /* 0xee98 */ { false, 0xee98, 0xee98 }, /* 0xee99 */ { false, 0xee99, 0xee99 }, /* 0xee9a */ { false, 0xee9a, 0xee9a }, /* 0xee9b */ { false, 0xee9b, 0xee9b }, /* 0xee9c */ { false, 0xee9c, 0xee9c }, /* 0xee9d */ { false, 0xee9d, 0xee9d }, /* 0xee9e */ { false, 0xee9e, 0xee9e }, /* 0xee9f */ { false, 0xee9f, 0xee9f }, /* 0xeea0 */ { false, 0xeea0, 0xeea0 }, /* 0xeea1 */ { false, 0xeea1, 0xeea1 }, /* 0xeea2 */ { false, 0xeea2, 0xeea2 }, /* 0xeea3 */ { false, 0xeea3, 0xeea3 }, /* 0xeea4 */ { false, 0xeea4, 0xeea4 }, /* 0xeea5 */ { false, 0xeea5, 0xeea5 }, /* 0xeea6 */ { false, 0xeea6, 0xeea6 }, /* 0xeea7 */ { false, 0xeea7, 0xeea7 }, /* 0xeea8 */ { false, 0xeea8, 0xeea8 }, /* 0xeea9 */ { false, 0xeea9, 0xeea9 }, /* 0xeeaa */ { false, 0xeeaa, 0xeeaa }, /* 0xeeab */ { false, 0xeeab, 0xeeab }, /* 0xeeac */ { false, 0xeeac, 0xeeac }, /* 0xeead */ { false, 0xeead, 0xeead }, /* 0xeeae */ { false, 0xeeae, 0xeeae }, /* 0xeeaf */ { false, 0xeeaf, 0xeeaf }, /* 0xeeb0 */ { false, 0xeeb0, 0xeeb0 }, /* 0xeeb1 */ { false, 0xeeb1, 0xeeb1 }, /* 0xeeb2 */ { false, 0xeeb2, 0xeeb2 }, /* 0xeeb3 */ { false, 0xeeb3, 0xeeb3 }, /* 0xeeb4 */ { false, 0xeeb4, 0xeeb4 }, /* 0xeeb5 */ { false, 0xeeb5, 0xeeb5 }, /* 0xeeb6 */ { false, 0xeeb6, 0xeeb6 }, /* 0xeeb7 */ { false, 0xeeb7, 0xeeb7 }, /* 0xeeb8 */ { false, 0xeeb8, 0xeeb8 }, /* 0xeeb9 */ { false, 0xeeb9, 0xeeb9 }, /* 0xeeba */ { false, 0xeeba, 0xeeba }, /* 0xeebb */ { false, 0xeebb, 0xeebb }, /* 0xeebc */ { false, 0xeebc, 0xeebc }, /* 0xeebd */ { false, 0xeebd, 0xeebd }, /* 0xeebe */ { false, 0xeebe, 0xeebe }, /* 0xeebf */ { false, 0xeebf, 0xeebf }, /* 0xeec0 */ { false, 0xeec0, 0xeec0 }, /* 0xeec1 */ { false, 0xeec1, 0xeec1 }, /* 0xeec2 */ { false, 0xeec2, 0xeec2 }, /* 0xeec3 */ { false, 0xeec3, 0xeec3 }, /* 0xeec4 */ { false, 0xeec4, 0xeec4 }, /* 0xeec5 */ { false, 0xeec5, 0xeec5 }, /* 0xeec6 */ { false, 0xeec6, 0xeec6 }, /* 0xeec7 */ { false, 0xeec7, 0xeec7 }, /* 0xeec8 */ { false, 0xeec8, 0xeec8 }, /* 0xeec9 */ { false, 0xeec9, 0xeec9 }, /* 0xeeca */ { false, 0xeeca, 0xeeca }, /* 0xeecb */ { false, 0xeecb, 0xeecb }, /* 0xeecc */ { false, 0xeecc, 0xeecc }, /* 0xeecd */ { false, 0xeecd, 0xeecd }, /* 0xeece */ { false, 0xeece, 0xeece }, /* 0xeecf */ { false, 0xeecf, 0xeecf }, /* 0xeed0 */ { false, 0xeed0, 0xeed0 }, /* 0xeed1 */ { false, 0xeed1, 0xeed1 }, /* 0xeed2 */ { false, 0xeed2, 0xeed2 }, /* 0xeed3 */ { false, 0xeed3, 0xeed3 }, /* 0xeed4 */ { false, 0xeed4, 0xeed4 }, /* 0xeed5 */ { false, 0xeed5, 0xeed5 }, /* 0xeed6 */ { false, 0xeed6, 0xeed6 }, /* 0xeed7 */ { false, 0xeed7, 0xeed7 }, /* 0xeed8 */ { false, 0xeed8, 0xeed8 }, /* 0xeed9 */ { false, 0xeed9, 0xeed9 }, /* 0xeeda */ { false, 0xeeda, 0xeeda }, /* 0xeedb */ { false, 0xeedb, 0xeedb }, /* 0xeedc */ { false, 0xeedc, 0xeedc }, /* 0xeedd */ { false, 0xeedd, 0xeedd }, /* 0xeede */ { false, 0xeede, 0xeede }, /* 0xeedf */ { false, 0xeedf, 0xeedf }, /* 0xeee0 */ { false, 0xeee0, 0xeee0 }, /* 0xeee1 */ { false, 0xeee1, 0xeee1 }, /* 0xeee2 */ { false, 0xeee2, 0xeee2 }, /* 0xeee3 */ { false, 0xeee3, 0xeee3 }, /* 0xeee4 */ { false, 0xeee4, 0xeee4 }, /* 0xeee5 */ { false, 0xeee5, 0xeee5 }, /* 0xeee6 */ { false, 0xeee6, 0xeee6 }, /* 0xeee7 */ { false, 0xeee7, 0xeee7 }, /* 0xeee8 */ { false, 0xeee8, 0xeee8 }, /* 0xeee9 */ { false, 0xeee9, 0xeee9 }, /* 0xeeea */ { false, 0xeeea, 0xeeea }, /* 0xeeeb */ { false, 0xeeeb, 0xeeeb }, /* 0xeeec */ { false, 0xeeec, 0xeeec }, /* 0xeeed */ { false, 0xeeed, 0xeeed }, /* 0xeeee */ { false, 0xeeee, 0xeeee }, /* 0xeeef */ { false, 0xeeef, 0xeeef }, /* 0xeef0 */ { false, 0xeef0, 0xeef0 }, /* 0xeef1 */ { false, 0xeef1, 0xeef1 }, /* 0xeef2 */ { false, 0xeef2, 0xeef2 }, /* 0xeef3 */ { false, 0xeef3, 0xeef3 }, /* 0xeef4 */ { false, 0xeef4, 0xeef4 }, /* 0xeef5 */ { false, 0xeef5, 0xeef5 }, /* 0xeef6 */ { false, 0xeef6, 0xeef6 }, /* 0xeef7 */ { false, 0xeef7, 0xeef7 }, /* 0xeef8 */ { false, 0xeef8, 0xeef8 }, /* 0xeef9 */ { false, 0xeef9, 0xeef9 }, /* 0xeefa */ { false, 0xeefa, 0xeefa }, /* 0xeefb */ { false, 0xeefb, 0xeefb }, /* 0xeefc */ { false, 0xeefc, 0xeefc }, /* 0xeefd */ { false, 0xeefd, 0xeefd }, /* 0xeefe */ { false, 0xeefe, 0xeefe }, /* 0xeeff */ { false, 0xeeff, 0xeeff }, /* 0xef00 */ { false, 0xef00, 0xef00 }, /* 0xef01 */ { false, 0xef01, 0xef01 }, /* 0xef02 */ { false, 0xef02, 0xef02 }, /* 0xef03 */ { false, 0xef03, 0xef03 }, /* 0xef04 */ { false, 0xef04, 0xef04 }, /* 0xef05 */ { false, 0xef05, 0xef05 }, /* 0xef06 */ { false, 0xef06, 0xef06 }, /* 0xef07 */ { false, 0xef07, 0xef07 }, /* 0xef08 */ { false, 0xef08, 0xef08 }, /* 0xef09 */ { false, 0xef09, 0xef09 }, /* 0xef0a */ { false, 0xef0a, 0xef0a }, /* 0xef0b */ { false, 0xef0b, 0xef0b }, /* 0xef0c */ { false, 0xef0c, 0xef0c }, /* 0xef0d */ { false, 0xef0d, 0xef0d }, /* 0xef0e */ { false, 0xef0e, 0xef0e }, /* 0xef0f */ { false, 0xef0f, 0xef0f }, /* 0xef10 */ { false, 0xef10, 0xef10 }, /* 0xef11 */ { false, 0xef11, 0xef11 }, /* 0xef12 */ { false, 0xef12, 0xef12 }, /* 0xef13 */ { false, 0xef13, 0xef13 }, /* 0xef14 */ { false, 0xef14, 0xef14 }, /* 0xef15 */ { false, 0xef15, 0xef15 }, /* 0xef16 */ { false, 0xef16, 0xef16 }, /* 0xef17 */ { false, 0xef17, 0xef17 }, /* 0xef18 */ { false, 0xef18, 0xef18 }, /* 0xef19 */ { false, 0xef19, 0xef19 }, /* 0xef1a */ { false, 0xef1a, 0xef1a }, /* 0xef1b */ { false, 0xef1b, 0xef1b }, /* 0xef1c */ { false, 0xef1c, 0xef1c }, /* 0xef1d */ { false, 0xef1d, 0xef1d }, /* 0xef1e */ { false, 0xef1e, 0xef1e }, /* 0xef1f */ { false, 0xef1f, 0xef1f }, /* 0xef20 */ { false, 0xef20, 0xef20 }, /* 0xef21 */ { false, 0xef21, 0xef21 }, /* 0xef22 */ { false, 0xef22, 0xef22 }, /* 0xef23 */ { false, 0xef23, 0xef23 }, /* 0xef24 */ { false, 0xef24, 0xef24 }, /* 0xef25 */ { false, 0xef25, 0xef25 }, /* 0xef26 */ { false, 0xef26, 0xef26 }, /* 0xef27 */ { false, 0xef27, 0xef27 }, /* 0xef28 */ { false, 0xef28, 0xef28 }, /* 0xef29 */ { false, 0xef29, 0xef29 }, /* 0xef2a */ { false, 0xef2a, 0xef2a }, /* 0xef2b */ { false, 0xef2b, 0xef2b }, /* 0xef2c */ { false, 0xef2c, 0xef2c }, /* 0xef2d */ { false, 0xef2d, 0xef2d }, /* 0xef2e */ { false, 0xef2e, 0xef2e }, /* 0xef2f */ { false, 0xef2f, 0xef2f }, /* 0xef30 */ { false, 0xef30, 0xef30 }, /* 0xef31 */ { false, 0xef31, 0xef31 }, /* 0xef32 */ { false, 0xef32, 0xef32 }, /* 0xef33 */ { false, 0xef33, 0xef33 }, /* 0xef34 */ { false, 0xef34, 0xef34 }, /* 0xef35 */ { false, 0xef35, 0xef35 }, /* 0xef36 */ { false, 0xef36, 0xef36 }, /* 0xef37 */ { false, 0xef37, 0xef37 }, /* 0xef38 */ { false, 0xef38, 0xef38 }, /* 0xef39 */ { false, 0xef39, 0xef39 }, /* 0xef3a */ { false, 0xef3a, 0xef3a }, /* 0xef3b */ { false, 0xef3b, 0xef3b }, /* 0xef3c */ { false, 0xef3c, 0xef3c }, /* 0xef3d */ { false, 0xef3d, 0xef3d }, /* 0xef3e */ { false, 0xef3e, 0xef3e }, /* 0xef3f */ { false, 0xef3f, 0xef3f }, /* 0xef40 */ { false, 0xef40, 0xef40 }, /* 0xef41 */ { false, 0xef41, 0xef41 }, /* 0xef42 */ { false, 0xef42, 0xef42 }, /* 0xef43 */ { false, 0xef43, 0xef43 }, /* 0xef44 */ { false, 0xef44, 0xef44 }, /* 0xef45 */ { false, 0xef45, 0xef45 }, /* 0xef46 */ { false, 0xef46, 0xef46 }, /* 0xef47 */ { false, 0xef47, 0xef47 }, /* 0xef48 */ { false, 0xef48, 0xef48 }, /* 0xef49 */ { false, 0xef49, 0xef49 }, /* 0xef4a */ { false, 0xef4a, 0xef4a }, /* 0xef4b */ { false, 0xef4b, 0xef4b }, /* 0xef4c */ { false, 0xef4c, 0xef4c }, /* 0xef4d */ { false, 0xef4d, 0xef4d }, /* 0xef4e */ { false, 0xef4e, 0xef4e }, /* 0xef4f */ { false, 0xef4f, 0xef4f }, /* 0xef50 */ { false, 0xef50, 0xef50 }, /* 0xef51 */ { false, 0xef51, 0xef51 }, /* 0xef52 */ { false, 0xef52, 0xef52 }, /* 0xef53 */ { false, 0xef53, 0xef53 }, /* 0xef54 */ { false, 0xef54, 0xef54 }, /* 0xef55 */ { false, 0xef55, 0xef55 }, /* 0xef56 */ { false, 0xef56, 0xef56 }, /* 0xef57 */ { false, 0xef57, 0xef57 }, /* 0xef58 */ { false, 0xef58, 0xef58 }, /* 0xef59 */ { false, 0xef59, 0xef59 }, /* 0xef5a */ { false, 0xef5a, 0xef5a }, /* 0xef5b */ { false, 0xef5b, 0xef5b }, /* 0xef5c */ { false, 0xef5c, 0xef5c }, /* 0xef5d */ { false, 0xef5d, 0xef5d }, /* 0xef5e */ { false, 0xef5e, 0xef5e }, /* 0xef5f */ { false, 0xef5f, 0xef5f }, /* 0xef60 */ { false, 0xef60, 0xef60 }, /* 0xef61 */ { false, 0xef61, 0xef61 }, /* 0xef62 */ { false, 0xef62, 0xef62 }, /* 0xef63 */ { false, 0xef63, 0xef63 }, /* 0xef64 */ { false, 0xef64, 0xef64 }, /* 0xef65 */ { false, 0xef65, 0xef65 }, /* 0xef66 */ { false, 0xef66, 0xef66 }, /* 0xef67 */ { false, 0xef67, 0xef67 }, /* 0xef68 */ { false, 0xef68, 0xef68 }, /* 0xef69 */ { false, 0xef69, 0xef69 }, /* 0xef6a */ { false, 0xef6a, 0xef6a }, /* 0xef6b */ { false, 0xef6b, 0xef6b }, /* 0xef6c */ { false, 0xef6c, 0xef6c }, /* 0xef6d */ { false, 0xef6d, 0xef6d }, /* 0xef6e */ { false, 0xef6e, 0xef6e }, /* 0xef6f */ { false, 0xef6f, 0xef6f }, /* 0xef70 */ { false, 0xef70, 0xef70 }, /* 0xef71 */ { false, 0xef71, 0xef71 }, /* 0xef72 */ { false, 0xef72, 0xef72 }, /* 0xef73 */ { false, 0xef73, 0xef73 }, /* 0xef74 */ { false, 0xef74, 0xef74 }, /* 0xef75 */ { false, 0xef75, 0xef75 }, /* 0xef76 */ { false, 0xef76, 0xef76 }, /* 0xef77 */ { false, 0xef77, 0xef77 }, /* 0xef78 */ { false, 0xef78, 0xef78 }, /* 0xef79 */ { false, 0xef79, 0xef79 }, /* 0xef7a */ { false, 0xef7a, 0xef7a }, /* 0xef7b */ { false, 0xef7b, 0xef7b }, /* 0xef7c */ { false, 0xef7c, 0xef7c }, /* 0xef7d */ { false, 0xef7d, 0xef7d }, /* 0xef7e */ { false, 0xef7e, 0xef7e }, /* 0xef7f */ { false, 0xef7f, 0xef7f }, /* 0xef80 */ { false, 0xef80, 0xef80 }, /* 0xef81 */ { false, 0xef81, 0xef81 }, /* 0xef82 */ { false, 0xef82, 0xef82 }, /* 0xef83 */ { false, 0xef83, 0xef83 }, /* 0xef84 */ { false, 0xef84, 0xef84 }, /* 0xef85 */ { false, 0xef85, 0xef85 }, /* 0xef86 */ { false, 0xef86, 0xef86 }, /* 0xef87 */ { false, 0xef87, 0xef87 }, /* 0xef88 */ { false, 0xef88, 0xef88 }, /* 0xef89 */ { false, 0xef89, 0xef89 }, /* 0xef8a */ { false, 0xef8a, 0xef8a }, /* 0xef8b */ { false, 0xef8b, 0xef8b }, /* 0xef8c */ { false, 0xef8c, 0xef8c }, /* 0xef8d */ { false, 0xef8d, 0xef8d }, /* 0xef8e */ { false, 0xef8e, 0xef8e }, /* 0xef8f */ { false, 0xef8f, 0xef8f }, /* 0xef90 */ { false, 0xef90, 0xef90 }, /* 0xef91 */ { false, 0xef91, 0xef91 }, /* 0xef92 */ { false, 0xef92, 0xef92 }, /* 0xef93 */ { false, 0xef93, 0xef93 }, /* 0xef94 */ { false, 0xef94, 0xef94 }, /* 0xef95 */ { false, 0xef95, 0xef95 }, /* 0xef96 */ { false, 0xef96, 0xef96 }, /* 0xef97 */ { false, 0xef97, 0xef97 }, /* 0xef98 */ { false, 0xef98, 0xef98 }, /* 0xef99 */ { false, 0xef99, 0xef99 }, /* 0xef9a */ { false, 0xef9a, 0xef9a }, /* 0xef9b */ { false, 0xef9b, 0xef9b }, /* 0xef9c */ { false, 0xef9c, 0xef9c }, /* 0xef9d */ { false, 0xef9d, 0xef9d }, /* 0xef9e */ { false, 0xef9e, 0xef9e }, /* 0xef9f */ { false, 0xef9f, 0xef9f }, /* 0xefa0 */ { false, 0xefa0, 0xefa0 }, /* 0xefa1 */ { false, 0xefa1, 0xefa1 }, /* 0xefa2 */ { false, 0xefa2, 0xefa2 }, /* 0xefa3 */ { false, 0xefa3, 0xefa3 }, /* 0xefa4 */ { false, 0xefa4, 0xefa4 }, /* 0xefa5 */ { false, 0xefa5, 0xefa5 }, /* 0xefa6 */ { false, 0xefa6, 0xefa6 }, /* 0xefa7 */ { false, 0xefa7, 0xefa7 }, /* 0xefa8 */ { false, 0xefa8, 0xefa8 }, /* 0xefa9 */ { false, 0xefa9, 0xefa9 }, /* 0xefaa */ { false, 0xefaa, 0xefaa }, /* 0xefab */ { false, 0xefab, 0xefab }, /* 0xefac */ { false, 0xefac, 0xefac }, /* 0xefad */ { false, 0xefad, 0xefad }, /* 0xefae */ { false, 0xefae, 0xefae }, /* 0xefaf */ { false, 0xefaf, 0xefaf }, /* 0xefb0 */ { false, 0xefb0, 0xefb0 }, /* 0xefb1 */ { false, 0xefb1, 0xefb1 }, /* 0xefb2 */ { false, 0xefb2, 0xefb2 }, /* 0xefb3 */ { false, 0xefb3, 0xefb3 }, /* 0xefb4 */ { false, 0xefb4, 0xefb4 }, /* 0xefb5 */ { false, 0xefb5, 0xefb5 }, /* 0xefb6 */ { false, 0xefb6, 0xefb6 }, /* 0xefb7 */ { false, 0xefb7, 0xefb7 }, /* 0xefb8 */ { false, 0xefb8, 0xefb8 }, /* 0xefb9 */ { false, 0xefb9, 0xefb9 }, /* 0xefba */ { false, 0xefba, 0xefba }, /* 0xefbb */ { false, 0xefbb, 0xefbb }, /* 0xefbc */ { false, 0xefbc, 0xefbc }, /* 0xefbd */ { false, 0xefbd, 0xefbd }, /* 0xefbe */ { false, 0xefbe, 0xefbe }, /* 0xefbf */ { false, 0xefbf, 0xefbf }, /* 0xefc0 */ { false, 0xefc0, 0xefc0 }, /* 0xefc1 */ { false, 0xefc1, 0xefc1 }, /* 0xefc2 */ { false, 0xefc2, 0xefc2 }, /* 0xefc3 */ { false, 0xefc3, 0xefc3 }, /* 0xefc4 */ { false, 0xefc4, 0xefc4 }, /* 0xefc5 */ { false, 0xefc5, 0xefc5 }, /* 0xefc6 */ { false, 0xefc6, 0xefc6 }, /* 0xefc7 */ { false, 0xefc7, 0xefc7 }, /* 0xefc8 */ { false, 0xefc8, 0xefc8 }, /* 0xefc9 */ { false, 0xefc9, 0xefc9 }, /* 0xefca */ { false, 0xefca, 0xefca }, /* 0xefcb */ { false, 0xefcb, 0xefcb }, /* 0xefcc */ { false, 0xefcc, 0xefcc }, /* 0xefcd */ { false, 0xefcd, 0xefcd }, /* 0xefce */ { false, 0xefce, 0xefce }, /* 0xefcf */ { false, 0xefcf, 0xefcf }, /* 0xefd0 */ { false, 0xefd0, 0xefd0 }, /* 0xefd1 */ { false, 0xefd1, 0xefd1 }, /* 0xefd2 */ { false, 0xefd2, 0xefd2 }, /* 0xefd3 */ { false, 0xefd3, 0xefd3 }, /* 0xefd4 */ { false, 0xefd4, 0xefd4 }, /* 0xefd5 */ { false, 0xefd5, 0xefd5 }, /* 0xefd6 */ { false, 0xefd6, 0xefd6 }, /* 0xefd7 */ { false, 0xefd7, 0xefd7 }, /* 0xefd8 */ { false, 0xefd8, 0xefd8 }, /* 0xefd9 */ { false, 0xefd9, 0xefd9 }, /* 0xefda */ { false, 0xefda, 0xefda }, /* 0xefdb */ { false, 0xefdb, 0xefdb }, /* 0xefdc */ { false, 0xefdc, 0xefdc }, /* 0xefdd */ { false, 0xefdd, 0xefdd }, /* 0xefde */ { false, 0xefde, 0xefde }, /* 0xefdf */ { false, 0xefdf, 0xefdf }, /* 0xefe0 */ { false, 0xefe0, 0xefe0 }, /* 0xefe1 */ { false, 0xefe1, 0xefe1 }, /* 0xefe2 */ { false, 0xefe2, 0xefe2 }, /* 0xefe3 */ { false, 0xefe3, 0xefe3 }, /* 0xefe4 */ { false, 0xefe4, 0xefe4 }, /* 0xefe5 */ { false, 0xefe5, 0xefe5 }, /* 0xefe6 */ { false, 0xefe6, 0xefe6 }, /* 0xefe7 */ { false, 0xefe7, 0xefe7 }, /* 0xefe8 */ { false, 0xefe8, 0xefe8 }, /* 0xefe9 */ { false, 0xefe9, 0xefe9 }, /* 0xefea */ { false, 0xefea, 0xefea }, /* 0xefeb */ { false, 0xefeb, 0xefeb }, /* 0xefec */ { false, 0xefec, 0xefec }, /* 0xefed */ { false, 0xefed, 0xefed }, /* 0xefee */ { false, 0xefee, 0xefee }, /* 0xefef */ { false, 0xefef, 0xefef }, /* 0xeff0 */ { false, 0xeff0, 0xeff0 }, /* 0xeff1 */ { false, 0xeff1, 0xeff1 }, /* 0xeff2 */ { false, 0xeff2, 0xeff2 }, /* 0xeff3 */ { false, 0xeff3, 0xeff3 }, /* 0xeff4 */ { false, 0xeff4, 0xeff4 }, /* 0xeff5 */ { false, 0xeff5, 0xeff5 }, /* 0xeff6 */ { false, 0xeff6, 0xeff6 }, /* 0xeff7 */ { false, 0xeff7, 0xeff7 }, /* 0xeff8 */ { false, 0xeff8, 0xeff8 }, /* 0xeff9 */ { false, 0xeff9, 0xeff9 }, /* 0xeffa */ { false, 0xeffa, 0xeffa }, /* 0xeffb */ { false, 0xeffb, 0xeffb }, /* 0xeffc */ { false, 0xeffc, 0xeffc }, /* 0xeffd */ { false, 0xeffd, 0xeffd }, /* 0xeffe */ { false, 0xeffe, 0xeffe }, /* 0xefff */ { false, 0xefff, 0xefff }, /* 0xf000 */ { false, 0xf000, 0xf000 }, /* 0xf001 */ { false, 0xf001, 0xf001 }, /* 0xf002 */ { false, 0xf002, 0xf002 }, /* 0xf003 */ { false, 0xf003, 0xf003 }, /* 0xf004 */ { false, 0xf004, 0xf004 }, /* 0xf005 */ { false, 0xf005, 0xf005 }, /* 0xf006 */ { false, 0xf006, 0xf006 }, /* 0xf007 */ { false, 0xf007, 0xf007 }, /* 0xf008 */ { false, 0xf008, 0xf008 }, /* 0xf009 */ { false, 0xf009, 0xf009 }, /* 0xf00a */ { false, 0xf00a, 0xf00a }, /* 0xf00b */ { false, 0xf00b, 0xf00b }, /* 0xf00c */ { false, 0xf00c, 0xf00c }, /* 0xf00d */ { false, 0xf00d, 0xf00d }, /* 0xf00e */ { false, 0xf00e, 0xf00e }, /* 0xf00f */ { false, 0xf00f, 0xf00f }, /* 0xf010 */ { false, 0xf010, 0xf010 }, /* 0xf011 */ { false, 0xf011, 0xf011 }, /* 0xf012 */ { false, 0xf012, 0xf012 }, /* 0xf013 */ { false, 0xf013, 0xf013 }, /* 0xf014 */ { false, 0xf014, 0xf014 }, /* 0xf015 */ { false, 0xf015, 0xf015 }, /* 0xf016 */ { false, 0xf016, 0xf016 }, /* 0xf017 */ { false, 0xf017, 0xf017 }, /* 0xf018 */ { false, 0xf018, 0xf018 }, /* 0xf019 */ { false, 0xf019, 0xf019 }, /* 0xf01a */ { false, 0xf01a, 0xf01a }, /* 0xf01b */ { false, 0xf01b, 0xf01b }, /* 0xf01c */ { false, 0xf01c, 0xf01c }, /* 0xf01d */ { false, 0xf01d, 0xf01d }, /* 0xf01e */ { false, 0xf01e, 0xf01e }, /* 0xf01f */ { false, 0xf01f, 0xf01f }, /* 0xf020 */ { false, 0xf020, 0xf020 }, /* 0xf021 */ { false, 0xf021, 0xf021 }, /* 0xf022 */ { false, 0xf022, 0xf022 }, /* 0xf023 */ { false, 0xf023, 0xf023 }, /* 0xf024 */ { false, 0xf024, 0xf024 }, /* 0xf025 */ { false, 0xf025, 0xf025 }, /* 0xf026 */ { false, 0xf026, 0xf026 }, /* 0xf027 */ { false, 0xf027, 0xf027 }, /* 0xf028 */ { false, 0xf028, 0xf028 }, /* 0xf029 */ { false, 0xf029, 0xf029 }, /* 0xf02a */ { false, 0xf02a, 0xf02a }, /* 0xf02b */ { false, 0xf02b, 0xf02b }, /* 0xf02c */ { false, 0xf02c, 0xf02c }, /* 0xf02d */ { false, 0xf02d, 0xf02d }, /* 0xf02e */ { false, 0xf02e, 0xf02e }, /* 0xf02f */ { false, 0xf02f, 0xf02f }, /* 0xf030 */ { false, 0xf030, 0xf030 }, /* 0xf031 */ { false, 0xf031, 0xf031 }, /* 0xf032 */ { false, 0xf032, 0xf032 }, /* 0xf033 */ { false, 0xf033, 0xf033 }, /* 0xf034 */ { false, 0xf034, 0xf034 }, /* 0xf035 */ { false, 0xf035, 0xf035 }, /* 0xf036 */ { false, 0xf036, 0xf036 }, /* 0xf037 */ { false, 0xf037, 0xf037 }, /* 0xf038 */ { false, 0xf038, 0xf038 }, /* 0xf039 */ { false, 0xf039, 0xf039 }, /* 0xf03a */ { false, 0xf03a, 0xf03a }, /* 0xf03b */ { false, 0xf03b, 0xf03b }, /* 0xf03c */ { false, 0xf03c, 0xf03c }, /* 0xf03d */ { false, 0xf03d, 0xf03d }, /* 0xf03e */ { false, 0xf03e, 0xf03e }, /* 0xf03f */ { false, 0xf03f, 0xf03f }, /* 0xf040 */ { false, 0xf040, 0xf040 }, /* 0xf041 */ { false, 0xf041, 0xf041 }, /* 0xf042 */ { false, 0xf042, 0xf042 }, /* 0xf043 */ { false, 0xf043, 0xf043 }, /* 0xf044 */ { false, 0xf044, 0xf044 }, /* 0xf045 */ { false, 0xf045, 0xf045 }, /* 0xf046 */ { false, 0xf046, 0xf046 }, /* 0xf047 */ { false, 0xf047, 0xf047 }, /* 0xf048 */ { false, 0xf048, 0xf048 }, /* 0xf049 */ { false, 0xf049, 0xf049 }, /* 0xf04a */ { false, 0xf04a, 0xf04a }, /* 0xf04b */ { false, 0xf04b, 0xf04b }, /* 0xf04c */ { false, 0xf04c, 0xf04c }, /* 0xf04d */ { false, 0xf04d, 0xf04d }, /* 0xf04e */ { false, 0xf04e, 0xf04e }, /* 0xf04f */ { false, 0xf04f, 0xf04f }, /* 0xf050 */ { false, 0xf050, 0xf050 }, /* 0xf051 */ { false, 0xf051, 0xf051 }, /* 0xf052 */ { false, 0xf052, 0xf052 }, /* 0xf053 */ { false, 0xf053, 0xf053 }, /* 0xf054 */ { false, 0xf054, 0xf054 }, /* 0xf055 */ { false, 0xf055, 0xf055 }, /* 0xf056 */ { false, 0xf056, 0xf056 }, /* 0xf057 */ { false, 0xf057, 0xf057 }, /* 0xf058 */ { false, 0xf058, 0xf058 }, /* 0xf059 */ { false, 0xf059, 0xf059 }, /* 0xf05a */ { false, 0xf05a, 0xf05a }, /* 0xf05b */ { false, 0xf05b, 0xf05b }, /* 0xf05c */ { false, 0xf05c, 0xf05c }, /* 0xf05d */ { false, 0xf05d, 0xf05d }, /* 0xf05e */ { false, 0xf05e, 0xf05e }, /* 0xf05f */ { false, 0xf05f, 0xf05f }, /* 0xf060 */ { false, 0xf060, 0xf060 }, /* 0xf061 */ { false, 0xf061, 0xf061 }, /* 0xf062 */ { false, 0xf062, 0xf062 }, /* 0xf063 */ { false, 0xf063, 0xf063 }, /* 0xf064 */ { false, 0xf064, 0xf064 }, /* 0xf065 */ { false, 0xf065, 0xf065 }, /* 0xf066 */ { false, 0xf066, 0xf066 }, /* 0xf067 */ { false, 0xf067, 0xf067 }, /* 0xf068 */ { false, 0xf068, 0xf068 }, /* 0xf069 */ { false, 0xf069, 0xf069 }, /* 0xf06a */ { false, 0xf06a, 0xf06a }, /* 0xf06b */ { false, 0xf06b, 0xf06b }, /* 0xf06c */ { false, 0xf06c, 0xf06c }, /* 0xf06d */ { false, 0xf06d, 0xf06d }, /* 0xf06e */ { false, 0xf06e, 0xf06e }, /* 0xf06f */ { false, 0xf06f, 0xf06f }, /* 0xf070 */ { false, 0xf070, 0xf070 }, /* 0xf071 */ { false, 0xf071, 0xf071 }, /* 0xf072 */ { false, 0xf072, 0xf072 }, /* 0xf073 */ { false, 0xf073, 0xf073 }, /* 0xf074 */ { false, 0xf074, 0xf074 }, /* 0xf075 */ { false, 0xf075, 0xf075 }, /* 0xf076 */ { false, 0xf076, 0xf076 }, /* 0xf077 */ { false, 0xf077, 0xf077 }, /* 0xf078 */ { false, 0xf078, 0xf078 }, /* 0xf079 */ { false, 0xf079, 0xf079 }, /* 0xf07a */ { false, 0xf07a, 0xf07a }, /* 0xf07b */ { false, 0xf07b, 0xf07b }, /* 0xf07c */ { false, 0xf07c, 0xf07c }, /* 0xf07d */ { false, 0xf07d, 0xf07d }, /* 0xf07e */ { false, 0xf07e, 0xf07e }, /* 0xf07f */ { false, 0xf07f, 0xf07f }, /* 0xf080 */ { false, 0xf080, 0xf080 }, /* 0xf081 */ { false, 0xf081, 0xf081 }, /* 0xf082 */ { false, 0xf082, 0xf082 }, /* 0xf083 */ { false, 0xf083, 0xf083 }, /* 0xf084 */ { false, 0xf084, 0xf084 }, /* 0xf085 */ { false, 0xf085, 0xf085 }, /* 0xf086 */ { false, 0xf086, 0xf086 }, /* 0xf087 */ { false, 0xf087, 0xf087 }, /* 0xf088 */ { false, 0xf088, 0xf088 }, /* 0xf089 */ { false, 0xf089, 0xf089 }, /* 0xf08a */ { false, 0xf08a, 0xf08a }, /* 0xf08b */ { false, 0xf08b, 0xf08b }, /* 0xf08c */ { false, 0xf08c, 0xf08c }, /* 0xf08d */ { false, 0xf08d, 0xf08d }, /* 0xf08e */ { false, 0xf08e, 0xf08e }, /* 0xf08f */ { false, 0xf08f, 0xf08f }, /* 0xf090 */ { false, 0xf090, 0xf090 }, /* 0xf091 */ { false, 0xf091, 0xf091 }, /* 0xf092 */ { false, 0xf092, 0xf092 }, /* 0xf093 */ { false, 0xf093, 0xf093 }, /* 0xf094 */ { false, 0xf094, 0xf094 }, /* 0xf095 */ { false, 0xf095, 0xf095 }, /* 0xf096 */ { false, 0xf096, 0xf096 }, /* 0xf097 */ { false, 0xf097, 0xf097 }, /* 0xf098 */ { false, 0xf098, 0xf098 }, /* 0xf099 */ { false, 0xf099, 0xf099 }, /* 0xf09a */ { false, 0xf09a, 0xf09a }, /* 0xf09b */ { false, 0xf09b, 0xf09b }, /* 0xf09c */ { false, 0xf09c, 0xf09c }, /* 0xf09d */ { false, 0xf09d, 0xf09d }, /* 0xf09e */ { false, 0xf09e, 0xf09e }, /* 0xf09f */ { false, 0xf09f, 0xf09f }, /* 0xf0a0 */ { false, 0xf0a0, 0xf0a0 }, /* 0xf0a1 */ { false, 0xf0a1, 0xf0a1 }, /* 0xf0a2 */ { false, 0xf0a2, 0xf0a2 }, /* 0xf0a3 */ { false, 0xf0a3, 0xf0a3 }, /* 0xf0a4 */ { false, 0xf0a4, 0xf0a4 }, /* 0xf0a5 */ { false, 0xf0a5, 0xf0a5 }, /* 0xf0a6 */ { false, 0xf0a6, 0xf0a6 }, /* 0xf0a7 */ { false, 0xf0a7, 0xf0a7 }, /* 0xf0a8 */ { false, 0xf0a8, 0xf0a8 }, /* 0xf0a9 */ { false, 0xf0a9, 0xf0a9 }, /* 0xf0aa */ { false, 0xf0aa, 0xf0aa }, /* 0xf0ab */ { false, 0xf0ab, 0xf0ab }, /* 0xf0ac */ { false, 0xf0ac, 0xf0ac }, /* 0xf0ad */ { false, 0xf0ad, 0xf0ad }, /* 0xf0ae */ { false, 0xf0ae, 0xf0ae }, /* 0xf0af */ { false, 0xf0af, 0xf0af }, /* 0xf0b0 */ { false, 0xf0b0, 0xf0b0 }, /* 0xf0b1 */ { false, 0xf0b1, 0xf0b1 }, /* 0xf0b2 */ { false, 0xf0b2, 0xf0b2 }, /* 0xf0b3 */ { false, 0xf0b3, 0xf0b3 }, /* 0xf0b4 */ { false, 0xf0b4, 0xf0b4 }, /* 0xf0b5 */ { false, 0xf0b5, 0xf0b5 }, /* 0xf0b6 */ { false, 0xf0b6, 0xf0b6 }, /* 0xf0b7 */ { false, 0xf0b7, 0xf0b7 }, /* 0xf0b8 */ { false, 0xf0b8, 0xf0b8 }, /* 0xf0b9 */ { false, 0xf0b9, 0xf0b9 }, /* 0xf0ba */ { false, 0xf0ba, 0xf0ba }, /* 0xf0bb */ { false, 0xf0bb, 0xf0bb }, /* 0xf0bc */ { false, 0xf0bc, 0xf0bc }, /* 0xf0bd */ { false, 0xf0bd, 0xf0bd }, /* 0xf0be */ { false, 0xf0be, 0xf0be }, /* 0xf0bf */ { false, 0xf0bf, 0xf0bf }, /* 0xf0c0 */ { false, 0xf0c0, 0xf0c0 }, /* 0xf0c1 */ { false, 0xf0c1, 0xf0c1 }, /* 0xf0c2 */ { false, 0xf0c2, 0xf0c2 }, /* 0xf0c3 */ { false, 0xf0c3, 0xf0c3 }, /* 0xf0c4 */ { false, 0xf0c4, 0xf0c4 }, /* 0xf0c5 */ { false, 0xf0c5, 0xf0c5 }, /* 0xf0c6 */ { false, 0xf0c6, 0xf0c6 }, /* 0xf0c7 */ { false, 0xf0c7, 0xf0c7 }, /* 0xf0c8 */ { false, 0xf0c8, 0xf0c8 }, /* 0xf0c9 */ { false, 0xf0c9, 0xf0c9 }, /* 0xf0ca */ { false, 0xf0ca, 0xf0ca }, /* 0xf0cb */ { false, 0xf0cb, 0xf0cb }, /* 0xf0cc */ { false, 0xf0cc, 0xf0cc }, /* 0xf0cd */ { false, 0xf0cd, 0xf0cd }, /* 0xf0ce */ { false, 0xf0ce, 0xf0ce }, /* 0xf0cf */ { false, 0xf0cf, 0xf0cf }, /* 0xf0d0 */ { false, 0xf0d0, 0xf0d0 }, /* 0xf0d1 */ { false, 0xf0d1, 0xf0d1 }, /* 0xf0d2 */ { false, 0xf0d2, 0xf0d2 }, /* 0xf0d3 */ { false, 0xf0d3, 0xf0d3 }, /* 0xf0d4 */ { false, 0xf0d4, 0xf0d4 }, /* 0xf0d5 */ { false, 0xf0d5, 0xf0d5 }, /* 0xf0d6 */ { false, 0xf0d6, 0xf0d6 }, /* 0xf0d7 */ { false, 0xf0d7, 0xf0d7 }, /* 0xf0d8 */ { false, 0xf0d8, 0xf0d8 }, /* 0xf0d9 */ { false, 0xf0d9, 0xf0d9 }, /* 0xf0da */ { false, 0xf0da, 0xf0da }, /* 0xf0db */ { false, 0xf0db, 0xf0db }, /* 0xf0dc */ { false, 0xf0dc, 0xf0dc }, /* 0xf0dd */ { false, 0xf0dd, 0xf0dd }, /* 0xf0de */ { false, 0xf0de, 0xf0de }, /* 0xf0df */ { false, 0xf0df, 0xf0df }, /* 0xf0e0 */ { false, 0xf0e0, 0xf0e0 }, /* 0xf0e1 */ { false, 0xf0e1, 0xf0e1 }, /* 0xf0e2 */ { false, 0xf0e2, 0xf0e2 }, /* 0xf0e3 */ { false, 0xf0e3, 0xf0e3 }, /* 0xf0e4 */ { false, 0xf0e4, 0xf0e4 }, /* 0xf0e5 */ { false, 0xf0e5, 0xf0e5 }, /* 0xf0e6 */ { false, 0xf0e6, 0xf0e6 }, /* 0xf0e7 */ { false, 0xf0e7, 0xf0e7 }, /* 0xf0e8 */ { false, 0xf0e8, 0xf0e8 }, /* 0xf0e9 */ { false, 0xf0e9, 0xf0e9 }, /* 0xf0ea */ { false, 0xf0ea, 0xf0ea }, /* 0xf0eb */ { false, 0xf0eb, 0xf0eb }, /* 0xf0ec */ { false, 0xf0ec, 0xf0ec }, /* 0xf0ed */ { false, 0xf0ed, 0xf0ed }, /* 0xf0ee */ { false, 0xf0ee, 0xf0ee }, /* 0xf0ef */ { false, 0xf0ef, 0xf0ef }, /* 0xf0f0 */ { false, 0xf0f0, 0xf0f0 }, /* 0xf0f1 */ { false, 0xf0f1, 0xf0f1 }, /* 0xf0f2 */ { false, 0xf0f2, 0xf0f2 }, /* 0xf0f3 */ { false, 0xf0f3, 0xf0f3 }, /* 0xf0f4 */ { false, 0xf0f4, 0xf0f4 }, /* 0xf0f5 */ { false, 0xf0f5, 0xf0f5 }, /* 0xf0f6 */ { false, 0xf0f6, 0xf0f6 }, /* 0xf0f7 */ { false, 0xf0f7, 0xf0f7 }, /* 0xf0f8 */ { false, 0xf0f8, 0xf0f8 }, /* 0xf0f9 */ { false, 0xf0f9, 0xf0f9 }, /* 0xf0fa */ { false, 0xf0fa, 0xf0fa }, /* 0xf0fb */ { false, 0xf0fb, 0xf0fb }, /* 0xf0fc */ { false, 0xf0fc, 0xf0fc }, /* 0xf0fd */ { false, 0xf0fd, 0xf0fd }, /* 0xf0fe */ { false, 0xf0fe, 0xf0fe }, /* 0xf0ff */ { false, 0xf0ff, 0xf0ff }, /* 0xf100 */ { false, 0xf100, 0xf100 }, /* 0xf101 */ { false, 0xf101, 0xf101 }, /* 0xf102 */ { false, 0xf102, 0xf102 }, /* 0xf103 */ { false, 0xf103, 0xf103 }, /* 0xf104 */ { false, 0xf104, 0xf104 }, /* 0xf105 */ { false, 0xf105, 0xf105 }, /* 0xf106 */ { false, 0xf106, 0xf106 }, /* 0xf107 */ { false, 0xf107, 0xf107 }, /* 0xf108 */ { false, 0xf108, 0xf108 }, /* 0xf109 */ { false, 0xf109, 0xf109 }, /* 0xf10a */ { false, 0xf10a, 0xf10a }, /* 0xf10b */ { false, 0xf10b, 0xf10b }, /* 0xf10c */ { false, 0xf10c, 0xf10c }, /* 0xf10d */ { false, 0xf10d, 0xf10d }, /* 0xf10e */ { false, 0xf10e, 0xf10e }, /* 0xf10f */ { false, 0xf10f, 0xf10f }, /* 0xf110 */ { false, 0xf110, 0xf110 }, /* 0xf111 */ { false, 0xf111, 0xf111 }, /* 0xf112 */ { false, 0xf112, 0xf112 }, /* 0xf113 */ { false, 0xf113, 0xf113 }, /* 0xf114 */ { false, 0xf114, 0xf114 }, /* 0xf115 */ { false, 0xf115, 0xf115 }, /* 0xf116 */ { false, 0xf116, 0xf116 }, /* 0xf117 */ { false, 0xf117, 0xf117 }, /* 0xf118 */ { false, 0xf118, 0xf118 }, /* 0xf119 */ { false, 0xf119, 0xf119 }, /* 0xf11a */ { false, 0xf11a, 0xf11a }, /* 0xf11b */ { false, 0xf11b, 0xf11b }, /* 0xf11c */ { false, 0xf11c, 0xf11c }, /* 0xf11d */ { false, 0xf11d, 0xf11d }, /* 0xf11e */ { false, 0xf11e, 0xf11e }, /* 0xf11f */ { false, 0xf11f, 0xf11f }, /* 0xf120 */ { false, 0xf120, 0xf120 }, /* 0xf121 */ { false, 0xf121, 0xf121 }, /* 0xf122 */ { false, 0xf122, 0xf122 }, /* 0xf123 */ { false, 0xf123, 0xf123 }, /* 0xf124 */ { false, 0xf124, 0xf124 }, /* 0xf125 */ { false, 0xf125, 0xf125 }, /* 0xf126 */ { false, 0xf126, 0xf126 }, /* 0xf127 */ { false, 0xf127, 0xf127 }, /* 0xf128 */ { false, 0xf128, 0xf128 }, /* 0xf129 */ { false, 0xf129, 0xf129 }, /* 0xf12a */ { false, 0xf12a, 0xf12a }, /* 0xf12b */ { false, 0xf12b, 0xf12b }, /* 0xf12c */ { false, 0xf12c, 0xf12c }, /* 0xf12d */ { false, 0xf12d, 0xf12d }, /* 0xf12e */ { false, 0xf12e, 0xf12e }, /* 0xf12f */ { false, 0xf12f, 0xf12f }, /* 0xf130 */ { false, 0xf130, 0xf130 }, /* 0xf131 */ { false, 0xf131, 0xf131 }, /* 0xf132 */ { false, 0xf132, 0xf132 }, /* 0xf133 */ { false, 0xf133, 0xf133 }, /* 0xf134 */ { false, 0xf134, 0xf134 }, /* 0xf135 */ { false, 0xf135, 0xf135 }, /* 0xf136 */ { false, 0xf136, 0xf136 }, /* 0xf137 */ { false, 0xf137, 0xf137 }, /* 0xf138 */ { false, 0xf138, 0xf138 }, /* 0xf139 */ { false, 0xf139, 0xf139 }, /* 0xf13a */ { false, 0xf13a, 0xf13a }, /* 0xf13b */ { false, 0xf13b, 0xf13b }, /* 0xf13c */ { false, 0xf13c, 0xf13c }, /* 0xf13d */ { false, 0xf13d, 0xf13d }, /* 0xf13e */ { false, 0xf13e, 0xf13e }, /* 0xf13f */ { false, 0xf13f, 0xf13f }, /* 0xf140 */ { false, 0xf140, 0xf140 }, /* 0xf141 */ { false, 0xf141, 0xf141 }, /* 0xf142 */ { false, 0xf142, 0xf142 }, /* 0xf143 */ { false, 0xf143, 0xf143 }, /* 0xf144 */ { false, 0xf144, 0xf144 }, /* 0xf145 */ { false, 0xf145, 0xf145 }, /* 0xf146 */ { false, 0xf146, 0xf146 }, /* 0xf147 */ { false, 0xf147, 0xf147 }, /* 0xf148 */ { false, 0xf148, 0xf148 }, /* 0xf149 */ { false, 0xf149, 0xf149 }, /* 0xf14a */ { false, 0xf14a, 0xf14a }, /* 0xf14b */ { false, 0xf14b, 0xf14b }, /* 0xf14c */ { false, 0xf14c, 0xf14c }, /* 0xf14d */ { false, 0xf14d, 0xf14d }, /* 0xf14e */ { false, 0xf14e, 0xf14e }, /* 0xf14f */ { false, 0xf14f, 0xf14f }, /* 0xf150 */ { false, 0xf150, 0xf150 }, /* 0xf151 */ { false, 0xf151, 0xf151 }, /* 0xf152 */ { false, 0xf152, 0xf152 }, /* 0xf153 */ { false, 0xf153, 0xf153 }, /* 0xf154 */ { false, 0xf154, 0xf154 }, /* 0xf155 */ { false, 0xf155, 0xf155 }, /* 0xf156 */ { false, 0xf156, 0xf156 }, /* 0xf157 */ { false, 0xf157, 0xf157 }, /* 0xf158 */ { false, 0xf158, 0xf158 }, /* 0xf159 */ { false, 0xf159, 0xf159 }, /* 0xf15a */ { false, 0xf15a, 0xf15a }, /* 0xf15b */ { false, 0xf15b, 0xf15b }, /* 0xf15c */ { false, 0xf15c, 0xf15c }, /* 0xf15d */ { false, 0xf15d, 0xf15d }, /* 0xf15e */ { false, 0xf15e, 0xf15e }, /* 0xf15f */ { false, 0xf15f, 0xf15f }, /* 0xf160 */ { false, 0xf160, 0xf160 }, /* 0xf161 */ { false, 0xf161, 0xf161 }, /* 0xf162 */ { false, 0xf162, 0xf162 }, /* 0xf163 */ { false, 0xf163, 0xf163 }, /* 0xf164 */ { false, 0xf164, 0xf164 }, /* 0xf165 */ { false, 0xf165, 0xf165 }, /* 0xf166 */ { false, 0xf166, 0xf166 }, /* 0xf167 */ { false, 0xf167, 0xf167 }, /* 0xf168 */ { false, 0xf168, 0xf168 }, /* 0xf169 */ { false, 0xf169, 0xf169 }, /* 0xf16a */ { false, 0xf16a, 0xf16a }, /* 0xf16b */ { false, 0xf16b, 0xf16b }, /* 0xf16c */ { false, 0xf16c, 0xf16c }, /* 0xf16d */ { false, 0xf16d, 0xf16d }, /* 0xf16e */ { false, 0xf16e, 0xf16e }, /* 0xf16f */ { false, 0xf16f, 0xf16f }, /* 0xf170 */ { false, 0xf170, 0xf170 }, /* 0xf171 */ { false, 0xf171, 0xf171 }, /* 0xf172 */ { false, 0xf172, 0xf172 }, /* 0xf173 */ { false, 0xf173, 0xf173 }, /* 0xf174 */ { false, 0xf174, 0xf174 }, /* 0xf175 */ { false, 0xf175, 0xf175 }, /* 0xf176 */ { false, 0xf176, 0xf176 }, /* 0xf177 */ { false, 0xf177, 0xf177 }, /* 0xf178 */ { false, 0xf178, 0xf178 }, /* 0xf179 */ { false, 0xf179, 0xf179 }, /* 0xf17a */ { false, 0xf17a, 0xf17a }, /* 0xf17b */ { false, 0xf17b, 0xf17b }, /* 0xf17c */ { false, 0xf17c, 0xf17c }, /* 0xf17d */ { false, 0xf17d, 0xf17d }, /* 0xf17e */ { false, 0xf17e, 0xf17e }, /* 0xf17f */ { false, 0xf17f, 0xf17f }, /* 0xf180 */ { false, 0xf180, 0xf180 }, /* 0xf181 */ { false, 0xf181, 0xf181 }, /* 0xf182 */ { false, 0xf182, 0xf182 }, /* 0xf183 */ { false, 0xf183, 0xf183 }, /* 0xf184 */ { false, 0xf184, 0xf184 }, /* 0xf185 */ { false, 0xf185, 0xf185 }, /* 0xf186 */ { false, 0xf186, 0xf186 }, /* 0xf187 */ { false, 0xf187, 0xf187 }, /* 0xf188 */ { false, 0xf188, 0xf188 }, /* 0xf189 */ { false, 0xf189, 0xf189 }, /* 0xf18a */ { false, 0xf18a, 0xf18a }, /* 0xf18b */ { false, 0xf18b, 0xf18b }, /* 0xf18c */ { false, 0xf18c, 0xf18c }, /* 0xf18d */ { false, 0xf18d, 0xf18d }, /* 0xf18e */ { false, 0xf18e, 0xf18e }, /* 0xf18f */ { false, 0xf18f, 0xf18f }, /* 0xf190 */ { false, 0xf190, 0xf190 }, /* 0xf191 */ { false, 0xf191, 0xf191 }, /* 0xf192 */ { false, 0xf192, 0xf192 }, /* 0xf193 */ { false, 0xf193, 0xf193 }, /* 0xf194 */ { false, 0xf194, 0xf194 }, /* 0xf195 */ { false, 0xf195, 0xf195 }, /* 0xf196 */ { false, 0xf196, 0xf196 }, /* 0xf197 */ { false, 0xf197, 0xf197 }, /* 0xf198 */ { false, 0xf198, 0xf198 }, /* 0xf199 */ { false, 0xf199, 0xf199 }, /* 0xf19a */ { false, 0xf19a, 0xf19a }, /* 0xf19b */ { false, 0xf19b, 0xf19b }, /* 0xf19c */ { false, 0xf19c, 0xf19c }, /* 0xf19d */ { false, 0xf19d, 0xf19d }, /* 0xf19e */ { false, 0xf19e, 0xf19e }, /* 0xf19f */ { false, 0xf19f, 0xf19f }, /* 0xf1a0 */ { false, 0xf1a0, 0xf1a0 }, /* 0xf1a1 */ { false, 0xf1a1, 0xf1a1 }, /* 0xf1a2 */ { false, 0xf1a2, 0xf1a2 }, /* 0xf1a3 */ { false, 0xf1a3, 0xf1a3 }, /* 0xf1a4 */ { false, 0xf1a4, 0xf1a4 }, /* 0xf1a5 */ { false, 0xf1a5, 0xf1a5 }, /* 0xf1a6 */ { false, 0xf1a6, 0xf1a6 }, /* 0xf1a7 */ { false, 0xf1a7, 0xf1a7 }, /* 0xf1a8 */ { false, 0xf1a8, 0xf1a8 }, /* 0xf1a9 */ { false, 0xf1a9, 0xf1a9 }, /* 0xf1aa */ { false, 0xf1aa, 0xf1aa }, /* 0xf1ab */ { false, 0xf1ab, 0xf1ab }, /* 0xf1ac */ { false, 0xf1ac, 0xf1ac }, /* 0xf1ad */ { false, 0xf1ad, 0xf1ad }, /* 0xf1ae */ { false, 0xf1ae, 0xf1ae }, /* 0xf1af */ { false, 0xf1af, 0xf1af }, /* 0xf1b0 */ { false, 0xf1b0, 0xf1b0 }, /* 0xf1b1 */ { false, 0xf1b1, 0xf1b1 }, /* 0xf1b2 */ { false, 0xf1b2, 0xf1b2 }, /* 0xf1b3 */ { false, 0xf1b3, 0xf1b3 }, /* 0xf1b4 */ { false, 0xf1b4, 0xf1b4 }, /* 0xf1b5 */ { false, 0xf1b5, 0xf1b5 }, /* 0xf1b6 */ { false, 0xf1b6, 0xf1b6 }, /* 0xf1b7 */ { false, 0xf1b7, 0xf1b7 }, /* 0xf1b8 */ { false, 0xf1b8, 0xf1b8 }, /* 0xf1b9 */ { false, 0xf1b9, 0xf1b9 }, /* 0xf1ba */ { false, 0xf1ba, 0xf1ba }, /* 0xf1bb */ { false, 0xf1bb, 0xf1bb }, /* 0xf1bc */ { false, 0xf1bc, 0xf1bc }, /* 0xf1bd */ { false, 0xf1bd, 0xf1bd }, /* 0xf1be */ { false, 0xf1be, 0xf1be }, /* 0xf1bf */ { false, 0xf1bf, 0xf1bf }, /* 0xf1c0 */ { false, 0xf1c0, 0xf1c0 }, /* 0xf1c1 */ { false, 0xf1c1, 0xf1c1 }, /* 0xf1c2 */ { false, 0xf1c2, 0xf1c2 }, /* 0xf1c3 */ { false, 0xf1c3, 0xf1c3 }, /* 0xf1c4 */ { false, 0xf1c4, 0xf1c4 }, /* 0xf1c5 */ { false, 0xf1c5, 0xf1c5 }, /* 0xf1c6 */ { false, 0xf1c6, 0xf1c6 }, /* 0xf1c7 */ { false, 0xf1c7, 0xf1c7 }, /* 0xf1c8 */ { false, 0xf1c8, 0xf1c8 }, /* 0xf1c9 */ { false, 0xf1c9, 0xf1c9 }, /* 0xf1ca */ { false, 0xf1ca, 0xf1ca }, /* 0xf1cb */ { false, 0xf1cb, 0xf1cb }, /* 0xf1cc */ { false, 0xf1cc, 0xf1cc }, /* 0xf1cd */ { false, 0xf1cd, 0xf1cd }, /* 0xf1ce */ { false, 0xf1ce, 0xf1ce }, /* 0xf1cf */ { false, 0xf1cf, 0xf1cf }, /* 0xf1d0 */ { false, 0xf1d0, 0xf1d0 }, /* 0xf1d1 */ { false, 0xf1d1, 0xf1d1 }, /* 0xf1d2 */ { false, 0xf1d2, 0xf1d2 }, /* 0xf1d3 */ { false, 0xf1d3, 0xf1d3 }, /* 0xf1d4 */ { false, 0xf1d4, 0xf1d4 }, /* 0xf1d5 */ { false, 0xf1d5, 0xf1d5 }, /* 0xf1d6 */ { false, 0xf1d6, 0xf1d6 }, /* 0xf1d7 */ { false, 0xf1d7, 0xf1d7 }, /* 0xf1d8 */ { false, 0xf1d8, 0xf1d8 }, /* 0xf1d9 */ { false, 0xf1d9, 0xf1d9 }, /* 0xf1da */ { false, 0xf1da, 0xf1da }, /* 0xf1db */ { false, 0xf1db, 0xf1db }, /* 0xf1dc */ { false, 0xf1dc, 0xf1dc }, /* 0xf1dd */ { false, 0xf1dd, 0xf1dd }, /* 0xf1de */ { false, 0xf1de, 0xf1de }, /* 0xf1df */ { false, 0xf1df, 0xf1df }, /* 0xf1e0 */ { false, 0xf1e0, 0xf1e0 }, /* 0xf1e1 */ { false, 0xf1e1, 0xf1e1 }, /* 0xf1e2 */ { false, 0xf1e2, 0xf1e2 }, /* 0xf1e3 */ { false, 0xf1e3, 0xf1e3 }, /* 0xf1e4 */ { false, 0xf1e4, 0xf1e4 }, /* 0xf1e5 */ { false, 0xf1e5, 0xf1e5 }, /* 0xf1e6 */ { false, 0xf1e6, 0xf1e6 }, /* 0xf1e7 */ { false, 0xf1e7, 0xf1e7 }, /* 0xf1e8 */ { false, 0xf1e8, 0xf1e8 }, /* 0xf1e9 */ { false, 0xf1e9, 0xf1e9 }, /* 0xf1ea */ { false, 0xf1ea, 0xf1ea }, /* 0xf1eb */ { false, 0xf1eb, 0xf1eb }, /* 0xf1ec */ { false, 0xf1ec, 0xf1ec }, /* 0xf1ed */ { false, 0xf1ed, 0xf1ed }, /* 0xf1ee */ { false, 0xf1ee, 0xf1ee }, /* 0xf1ef */ { false, 0xf1ef, 0xf1ef }, /* 0xf1f0 */ { false, 0xf1f0, 0xf1f0 }, /* 0xf1f1 */ { false, 0xf1f1, 0xf1f1 }, /* 0xf1f2 */ { false, 0xf1f2, 0xf1f2 }, /* 0xf1f3 */ { false, 0xf1f3, 0xf1f3 }, /* 0xf1f4 */ { false, 0xf1f4, 0xf1f4 }, /* 0xf1f5 */ { false, 0xf1f5, 0xf1f5 }, /* 0xf1f6 */ { false, 0xf1f6, 0xf1f6 }, /* 0xf1f7 */ { false, 0xf1f7, 0xf1f7 }, /* 0xf1f8 */ { false, 0xf1f8, 0xf1f8 }, /* 0xf1f9 */ { false, 0xf1f9, 0xf1f9 }, /* 0xf1fa */ { false, 0xf1fa, 0xf1fa }, /* 0xf1fb */ { false, 0xf1fb, 0xf1fb }, /* 0xf1fc */ { false, 0xf1fc, 0xf1fc }, /* 0xf1fd */ { false, 0xf1fd, 0xf1fd }, /* 0xf1fe */ { false, 0xf1fe, 0xf1fe }, /* 0xf1ff */ { false, 0xf1ff, 0xf1ff }, /* 0xf200 */ { false, 0xf200, 0xf200 }, /* 0xf201 */ { false, 0xf201, 0xf201 }, /* 0xf202 */ { false, 0xf202, 0xf202 }, /* 0xf203 */ { false, 0xf203, 0xf203 }, /* 0xf204 */ { false, 0xf204, 0xf204 }, /* 0xf205 */ { false, 0xf205, 0xf205 }, /* 0xf206 */ { false, 0xf206, 0xf206 }, /* 0xf207 */ { false, 0xf207, 0xf207 }, /* 0xf208 */ { false, 0xf208, 0xf208 }, /* 0xf209 */ { false, 0xf209, 0xf209 }, /* 0xf20a */ { false, 0xf20a, 0xf20a }, /* 0xf20b */ { false, 0xf20b, 0xf20b }, /* 0xf20c */ { false, 0xf20c, 0xf20c }, /* 0xf20d */ { false, 0xf20d, 0xf20d }, /* 0xf20e */ { false, 0xf20e, 0xf20e }, /* 0xf20f */ { false, 0xf20f, 0xf20f }, /* 0xf210 */ { false, 0xf210, 0xf210 }, /* 0xf211 */ { false, 0xf211, 0xf211 }, /* 0xf212 */ { false, 0xf212, 0xf212 }, /* 0xf213 */ { false, 0xf213, 0xf213 }, /* 0xf214 */ { false, 0xf214, 0xf214 }, /* 0xf215 */ { false, 0xf215, 0xf215 }, /* 0xf216 */ { false, 0xf216, 0xf216 }, /* 0xf217 */ { false, 0xf217, 0xf217 }, /* 0xf218 */ { false, 0xf218, 0xf218 }, /* 0xf219 */ { false, 0xf219, 0xf219 }, /* 0xf21a */ { false, 0xf21a, 0xf21a }, /* 0xf21b */ { false, 0xf21b, 0xf21b }, /* 0xf21c */ { false, 0xf21c, 0xf21c }, /* 0xf21d */ { false, 0xf21d, 0xf21d }, /* 0xf21e */ { false, 0xf21e, 0xf21e }, /* 0xf21f */ { false, 0xf21f, 0xf21f }, /* 0xf220 */ { false, 0xf220, 0xf220 }, /* 0xf221 */ { false, 0xf221, 0xf221 }, /* 0xf222 */ { false, 0xf222, 0xf222 }, /* 0xf223 */ { false, 0xf223, 0xf223 }, /* 0xf224 */ { false, 0xf224, 0xf224 }, /* 0xf225 */ { false, 0xf225, 0xf225 }, /* 0xf226 */ { false, 0xf226, 0xf226 }, /* 0xf227 */ { false, 0xf227, 0xf227 }, /* 0xf228 */ { false, 0xf228, 0xf228 }, /* 0xf229 */ { false, 0xf229, 0xf229 }, /* 0xf22a */ { false, 0xf22a, 0xf22a }, /* 0xf22b */ { false, 0xf22b, 0xf22b }, /* 0xf22c */ { false, 0xf22c, 0xf22c }, /* 0xf22d */ { false, 0xf22d, 0xf22d }, /* 0xf22e */ { false, 0xf22e, 0xf22e }, /* 0xf22f */ { false, 0xf22f, 0xf22f }, /* 0xf230 */ { false, 0xf230, 0xf230 }, /* 0xf231 */ { false, 0xf231, 0xf231 }, /* 0xf232 */ { false, 0xf232, 0xf232 }, /* 0xf233 */ { false, 0xf233, 0xf233 }, /* 0xf234 */ { false, 0xf234, 0xf234 }, /* 0xf235 */ { false, 0xf235, 0xf235 }, /* 0xf236 */ { false, 0xf236, 0xf236 }, /* 0xf237 */ { false, 0xf237, 0xf237 }, /* 0xf238 */ { false, 0xf238, 0xf238 }, /* 0xf239 */ { false, 0xf239, 0xf239 }, /* 0xf23a */ { false, 0xf23a, 0xf23a }, /* 0xf23b */ { false, 0xf23b, 0xf23b }, /* 0xf23c */ { false, 0xf23c, 0xf23c }, /* 0xf23d */ { false, 0xf23d, 0xf23d }, /* 0xf23e */ { false, 0xf23e, 0xf23e }, /* 0xf23f */ { false, 0xf23f, 0xf23f }, /* 0xf240 */ { false, 0xf240, 0xf240 }, /* 0xf241 */ { false, 0xf241, 0xf241 }, /* 0xf242 */ { false, 0xf242, 0xf242 }, /* 0xf243 */ { false, 0xf243, 0xf243 }, /* 0xf244 */ { false, 0xf244, 0xf244 }, /* 0xf245 */ { false, 0xf245, 0xf245 }, /* 0xf246 */ { false, 0xf246, 0xf246 }, /* 0xf247 */ { false, 0xf247, 0xf247 }, /* 0xf248 */ { false, 0xf248, 0xf248 }, /* 0xf249 */ { false, 0xf249, 0xf249 }, /* 0xf24a */ { false, 0xf24a, 0xf24a }, /* 0xf24b */ { false, 0xf24b, 0xf24b }, /* 0xf24c */ { false, 0xf24c, 0xf24c }, /* 0xf24d */ { false, 0xf24d, 0xf24d }, /* 0xf24e */ { false, 0xf24e, 0xf24e }, /* 0xf24f */ { false, 0xf24f, 0xf24f }, /* 0xf250 */ { false, 0xf250, 0xf250 }, /* 0xf251 */ { false, 0xf251, 0xf251 }, /* 0xf252 */ { false, 0xf252, 0xf252 }, /* 0xf253 */ { false, 0xf253, 0xf253 }, /* 0xf254 */ { false, 0xf254, 0xf254 }, /* 0xf255 */ { false, 0xf255, 0xf255 }, /* 0xf256 */ { false, 0xf256, 0xf256 }, /* 0xf257 */ { false, 0xf257, 0xf257 }, /* 0xf258 */ { false, 0xf258, 0xf258 }, /* 0xf259 */ { false, 0xf259, 0xf259 }, /* 0xf25a */ { false, 0xf25a, 0xf25a }, /* 0xf25b */ { false, 0xf25b, 0xf25b }, /* 0xf25c */ { false, 0xf25c, 0xf25c }, /* 0xf25d */ { false, 0xf25d, 0xf25d }, /* 0xf25e */ { false, 0xf25e, 0xf25e }, /* 0xf25f */ { false, 0xf25f, 0xf25f }, /* 0xf260 */ { false, 0xf260, 0xf260 }, /* 0xf261 */ { false, 0xf261, 0xf261 }, /* 0xf262 */ { false, 0xf262, 0xf262 }, /* 0xf263 */ { false, 0xf263, 0xf263 }, /* 0xf264 */ { false, 0xf264, 0xf264 }, /* 0xf265 */ { false, 0xf265, 0xf265 }, /* 0xf266 */ { false, 0xf266, 0xf266 }, /* 0xf267 */ { false, 0xf267, 0xf267 }, /* 0xf268 */ { false, 0xf268, 0xf268 }, /* 0xf269 */ { false, 0xf269, 0xf269 }, /* 0xf26a */ { false, 0xf26a, 0xf26a }, /* 0xf26b */ { false, 0xf26b, 0xf26b }, /* 0xf26c */ { false, 0xf26c, 0xf26c }, /* 0xf26d */ { false, 0xf26d, 0xf26d }, /* 0xf26e */ { false, 0xf26e, 0xf26e }, /* 0xf26f */ { false, 0xf26f, 0xf26f }, /* 0xf270 */ { false, 0xf270, 0xf270 }, /* 0xf271 */ { false, 0xf271, 0xf271 }, /* 0xf272 */ { false, 0xf272, 0xf272 }, /* 0xf273 */ { false, 0xf273, 0xf273 }, /* 0xf274 */ { false, 0xf274, 0xf274 }, /* 0xf275 */ { false, 0xf275, 0xf275 }, /* 0xf276 */ { false, 0xf276, 0xf276 }, /* 0xf277 */ { false, 0xf277, 0xf277 }, /* 0xf278 */ { false, 0xf278, 0xf278 }, /* 0xf279 */ { false, 0xf279, 0xf279 }, /* 0xf27a */ { false, 0xf27a, 0xf27a }, /* 0xf27b */ { false, 0xf27b, 0xf27b }, /* 0xf27c */ { false, 0xf27c, 0xf27c }, /* 0xf27d */ { false, 0xf27d, 0xf27d }, /* 0xf27e */ { false, 0xf27e, 0xf27e }, /* 0xf27f */ { false, 0xf27f, 0xf27f }, /* 0xf280 */ { false, 0xf280, 0xf280 }, /* 0xf281 */ { false, 0xf281, 0xf281 }, /* 0xf282 */ { false, 0xf282, 0xf282 }, /* 0xf283 */ { false, 0xf283, 0xf283 }, /* 0xf284 */ { false, 0xf284, 0xf284 }, /* 0xf285 */ { false, 0xf285, 0xf285 }, /* 0xf286 */ { false, 0xf286, 0xf286 }, /* 0xf287 */ { false, 0xf287, 0xf287 }, /* 0xf288 */ { false, 0xf288, 0xf288 }, /* 0xf289 */ { false, 0xf289, 0xf289 }, /* 0xf28a */ { false, 0xf28a, 0xf28a }, /* 0xf28b */ { false, 0xf28b, 0xf28b }, /* 0xf28c */ { false, 0xf28c, 0xf28c }, /* 0xf28d */ { false, 0xf28d, 0xf28d }, /* 0xf28e */ { false, 0xf28e, 0xf28e }, /* 0xf28f */ { false, 0xf28f, 0xf28f }, /* 0xf290 */ { false, 0xf290, 0xf290 }, /* 0xf291 */ { false, 0xf291, 0xf291 }, /* 0xf292 */ { false, 0xf292, 0xf292 }, /* 0xf293 */ { false, 0xf293, 0xf293 }, /* 0xf294 */ { false, 0xf294, 0xf294 }, /* 0xf295 */ { false, 0xf295, 0xf295 }, /* 0xf296 */ { false, 0xf296, 0xf296 }, /* 0xf297 */ { false, 0xf297, 0xf297 }, /* 0xf298 */ { false, 0xf298, 0xf298 }, /* 0xf299 */ { false, 0xf299, 0xf299 }, /* 0xf29a */ { false, 0xf29a, 0xf29a }, /* 0xf29b */ { false, 0xf29b, 0xf29b }, /* 0xf29c */ { false, 0xf29c, 0xf29c }, /* 0xf29d */ { false, 0xf29d, 0xf29d }, /* 0xf29e */ { false, 0xf29e, 0xf29e }, /* 0xf29f */ { false, 0xf29f, 0xf29f }, /* 0xf2a0 */ { false, 0xf2a0, 0xf2a0 }, /* 0xf2a1 */ { false, 0xf2a1, 0xf2a1 }, /* 0xf2a2 */ { false, 0xf2a2, 0xf2a2 }, /* 0xf2a3 */ { false, 0xf2a3, 0xf2a3 }, /* 0xf2a4 */ { false, 0xf2a4, 0xf2a4 }, /* 0xf2a5 */ { false, 0xf2a5, 0xf2a5 }, /* 0xf2a6 */ { false, 0xf2a6, 0xf2a6 }, /* 0xf2a7 */ { false, 0xf2a7, 0xf2a7 }, /* 0xf2a8 */ { false, 0xf2a8, 0xf2a8 }, /* 0xf2a9 */ { false, 0xf2a9, 0xf2a9 }, /* 0xf2aa */ { false, 0xf2aa, 0xf2aa }, /* 0xf2ab */ { false, 0xf2ab, 0xf2ab }, /* 0xf2ac */ { false, 0xf2ac, 0xf2ac }, /* 0xf2ad */ { false, 0xf2ad, 0xf2ad }, /* 0xf2ae */ { false, 0xf2ae, 0xf2ae }, /* 0xf2af */ { false, 0xf2af, 0xf2af }, /* 0xf2b0 */ { false, 0xf2b0, 0xf2b0 }, /* 0xf2b1 */ { false, 0xf2b1, 0xf2b1 }, /* 0xf2b2 */ { false, 0xf2b2, 0xf2b2 }, /* 0xf2b3 */ { false, 0xf2b3, 0xf2b3 }, /* 0xf2b4 */ { false, 0xf2b4, 0xf2b4 }, /* 0xf2b5 */ { false, 0xf2b5, 0xf2b5 }, /* 0xf2b6 */ { false, 0xf2b6, 0xf2b6 }, /* 0xf2b7 */ { false, 0xf2b7, 0xf2b7 }, /* 0xf2b8 */ { false, 0xf2b8, 0xf2b8 }, /* 0xf2b9 */ { false, 0xf2b9, 0xf2b9 }, /* 0xf2ba */ { false, 0xf2ba, 0xf2ba }, /* 0xf2bb */ { false, 0xf2bb, 0xf2bb }, /* 0xf2bc */ { false, 0xf2bc, 0xf2bc }, /* 0xf2bd */ { false, 0xf2bd, 0xf2bd }, /* 0xf2be */ { false, 0xf2be, 0xf2be }, /* 0xf2bf */ { false, 0xf2bf, 0xf2bf }, /* 0xf2c0 */ { false, 0xf2c0, 0xf2c0 }, /* 0xf2c1 */ { false, 0xf2c1, 0xf2c1 }, /* 0xf2c2 */ { false, 0xf2c2, 0xf2c2 }, /* 0xf2c3 */ { false, 0xf2c3, 0xf2c3 }, /* 0xf2c4 */ { false, 0xf2c4, 0xf2c4 }, /* 0xf2c5 */ { false, 0xf2c5, 0xf2c5 }, /* 0xf2c6 */ { false, 0xf2c6, 0xf2c6 }, /* 0xf2c7 */ { false, 0xf2c7, 0xf2c7 }, /* 0xf2c8 */ { false, 0xf2c8, 0xf2c8 }, /* 0xf2c9 */ { false, 0xf2c9, 0xf2c9 }, /* 0xf2ca */ { false, 0xf2ca, 0xf2ca }, /* 0xf2cb */ { false, 0xf2cb, 0xf2cb }, /* 0xf2cc */ { false, 0xf2cc, 0xf2cc }, /* 0xf2cd */ { false, 0xf2cd, 0xf2cd }, /* 0xf2ce */ { false, 0xf2ce, 0xf2ce }, /* 0xf2cf */ { false, 0xf2cf, 0xf2cf }, /* 0xf2d0 */ { false, 0xf2d0, 0xf2d0 }, /* 0xf2d1 */ { false, 0xf2d1, 0xf2d1 }, /* 0xf2d2 */ { false, 0xf2d2, 0xf2d2 }, /* 0xf2d3 */ { false, 0xf2d3, 0xf2d3 }, /* 0xf2d4 */ { false, 0xf2d4, 0xf2d4 }, /* 0xf2d5 */ { false, 0xf2d5, 0xf2d5 }, /* 0xf2d6 */ { false, 0xf2d6, 0xf2d6 }, /* 0xf2d7 */ { false, 0xf2d7, 0xf2d7 }, /* 0xf2d8 */ { false, 0xf2d8, 0xf2d8 }, /* 0xf2d9 */ { false, 0xf2d9, 0xf2d9 }, /* 0xf2da */ { false, 0xf2da, 0xf2da }, /* 0xf2db */ { false, 0xf2db, 0xf2db }, /* 0xf2dc */ { false, 0xf2dc, 0xf2dc }, /* 0xf2dd */ { false, 0xf2dd, 0xf2dd }, /* 0xf2de */ { false, 0xf2de, 0xf2de }, /* 0xf2df */ { false, 0xf2df, 0xf2df }, /* 0xf2e0 */ { false, 0xf2e0, 0xf2e0 }, /* 0xf2e1 */ { false, 0xf2e1, 0xf2e1 }, /* 0xf2e2 */ { false, 0xf2e2, 0xf2e2 }, /* 0xf2e3 */ { false, 0xf2e3, 0xf2e3 }, /* 0xf2e4 */ { false, 0xf2e4, 0xf2e4 }, /* 0xf2e5 */ { false, 0xf2e5, 0xf2e5 }, /* 0xf2e6 */ { false, 0xf2e6, 0xf2e6 }, /* 0xf2e7 */ { false, 0xf2e7, 0xf2e7 }, /* 0xf2e8 */ { false, 0xf2e8, 0xf2e8 }, /* 0xf2e9 */ { false, 0xf2e9, 0xf2e9 }, /* 0xf2ea */ { false, 0xf2ea, 0xf2ea }, /* 0xf2eb */ { false, 0xf2eb, 0xf2eb }, /* 0xf2ec */ { false, 0xf2ec, 0xf2ec }, /* 0xf2ed */ { false, 0xf2ed, 0xf2ed }, /* 0xf2ee */ { false, 0xf2ee, 0xf2ee }, /* 0xf2ef */ { false, 0xf2ef, 0xf2ef }, /* 0xf2f0 */ { false, 0xf2f0, 0xf2f0 }, /* 0xf2f1 */ { false, 0xf2f1, 0xf2f1 }, /* 0xf2f2 */ { false, 0xf2f2, 0xf2f2 }, /* 0xf2f3 */ { false, 0xf2f3, 0xf2f3 }, /* 0xf2f4 */ { false, 0xf2f4, 0xf2f4 }, /* 0xf2f5 */ { false, 0xf2f5, 0xf2f5 }, /* 0xf2f6 */ { false, 0xf2f6, 0xf2f6 }, /* 0xf2f7 */ { false, 0xf2f7, 0xf2f7 }, /* 0xf2f8 */ { false, 0xf2f8, 0xf2f8 }, /* 0xf2f9 */ { false, 0xf2f9, 0xf2f9 }, /* 0xf2fa */ { false, 0xf2fa, 0xf2fa }, /* 0xf2fb */ { false, 0xf2fb, 0xf2fb }, /* 0xf2fc */ { false, 0xf2fc, 0xf2fc }, /* 0xf2fd */ { false, 0xf2fd, 0xf2fd }, /* 0xf2fe */ { false, 0xf2fe, 0xf2fe }, /* 0xf2ff */ { false, 0xf2ff, 0xf2ff }, /* 0xf300 */ { false, 0xf300, 0xf300 }, /* 0xf301 */ { false, 0xf301, 0xf301 }, /* 0xf302 */ { false, 0xf302, 0xf302 }, /* 0xf303 */ { false, 0xf303, 0xf303 }, /* 0xf304 */ { false, 0xf304, 0xf304 }, /* 0xf305 */ { false, 0xf305, 0xf305 }, /* 0xf306 */ { false, 0xf306, 0xf306 }, /* 0xf307 */ { false, 0xf307, 0xf307 }, /* 0xf308 */ { false, 0xf308, 0xf308 }, /* 0xf309 */ { false, 0xf309, 0xf309 }, /* 0xf30a */ { false, 0xf30a, 0xf30a }, /* 0xf30b */ { false, 0xf30b, 0xf30b }, /* 0xf30c */ { false, 0xf30c, 0xf30c }, /* 0xf30d */ { false, 0xf30d, 0xf30d }, /* 0xf30e */ { false, 0xf30e, 0xf30e }, /* 0xf30f */ { false, 0xf30f, 0xf30f }, /* 0xf310 */ { false, 0xf310, 0xf310 }, /* 0xf311 */ { false, 0xf311, 0xf311 }, /* 0xf312 */ { false, 0xf312, 0xf312 }, /* 0xf313 */ { false, 0xf313, 0xf313 }, /* 0xf314 */ { false, 0xf314, 0xf314 }, /* 0xf315 */ { false, 0xf315, 0xf315 }, /* 0xf316 */ { false, 0xf316, 0xf316 }, /* 0xf317 */ { false, 0xf317, 0xf317 }, /* 0xf318 */ { false, 0xf318, 0xf318 }, /* 0xf319 */ { false, 0xf319, 0xf319 }, /* 0xf31a */ { false, 0xf31a, 0xf31a }, /* 0xf31b */ { false, 0xf31b, 0xf31b }, /* 0xf31c */ { false, 0xf31c, 0xf31c }, /* 0xf31d */ { false, 0xf31d, 0xf31d }, /* 0xf31e */ { false, 0xf31e, 0xf31e }, /* 0xf31f */ { false, 0xf31f, 0xf31f }, /* 0xf320 */ { false, 0xf320, 0xf320 }, /* 0xf321 */ { false, 0xf321, 0xf321 }, /* 0xf322 */ { false, 0xf322, 0xf322 }, /* 0xf323 */ { false, 0xf323, 0xf323 }, /* 0xf324 */ { false, 0xf324, 0xf324 }, /* 0xf325 */ { false, 0xf325, 0xf325 }, /* 0xf326 */ { false, 0xf326, 0xf326 }, /* 0xf327 */ { false, 0xf327, 0xf327 }, /* 0xf328 */ { false, 0xf328, 0xf328 }, /* 0xf329 */ { false, 0xf329, 0xf329 }, /* 0xf32a */ { false, 0xf32a, 0xf32a }, /* 0xf32b */ { false, 0xf32b, 0xf32b }, /* 0xf32c */ { false, 0xf32c, 0xf32c }, /* 0xf32d */ { false, 0xf32d, 0xf32d }, /* 0xf32e */ { false, 0xf32e, 0xf32e }, /* 0xf32f */ { false, 0xf32f, 0xf32f }, /* 0xf330 */ { false, 0xf330, 0xf330 }, /* 0xf331 */ { false, 0xf331, 0xf331 }, /* 0xf332 */ { false, 0xf332, 0xf332 }, /* 0xf333 */ { false, 0xf333, 0xf333 }, /* 0xf334 */ { false, 0xf334, 0xf334 }, /* 0xf335 */ { false, 0xf335, 0xf335 }, /* 0xf336 */ { false, 0xf336, 0xf336 }, /* 0xf337 */ { false, 0xf337, 0xf337 }, /* 0xf338 */ { false, 0xf338, 0xf338 }, /* 0xf339 */ { false, 0xf339, 0xf339 }, /* 0xf33a */ { false, 0xf33a, 0xf33a }, /* 0xf33b */ { false, 0xf33b, 0xf33b }, /* 0xf33c */ { false, 0xf33c, 0xf33c }, /* 0xf33d */ { false, 0xf33d, 0xf33d }, /* 0xf33e */ { false, 0xf33e, 0xf33e }, /* 0xf33f */ { false, 0xf33f, 0xf33f }, /* 0xf340 */ { false, 0xf340, 0xf340 }, /* 0xf341 */ { false, 0xf341, 0xf341 }, /* 0xf342 */ { false, 0xf342, 0xf342 }, /* 0xf343 */ { false, 0xf343, 0xf343 }, /* 0xf344 */ { false, 0xf344, 0xf344 }, /* 0xf345 */ { false, 0xf345, 0xf345 }, /* 0xf346 */ { false, 0xf346, 0xf346 }, /* 0xf347 */ { false, 0xf347, 0xf347 }, /* 0xf348 */ { false, 0xf348, 0xf348 }, /* 0xf349 */ { false, 0xf349, 0xf349 }, /* 0xf34a */ { false, 0xf34a, 0xf34a }, /* 0xf34b */ { false, 0xf34b, 0xf34b }, /* 0xf34c */ { false, 0xf34c, 0xf34c }, /* 0xf34d */ { false, 0xf34d, 0xf34d }, /* 0xf34e */ { false, 0xf34e, 0xf34e }, /* 0xf34f */ { false, 0xf34f, 0xf34f }, /* 0xf350 */ { false, 0xf350, 0xf350 }, /* 0xf351 */ { false, 0xf351, 0xf351 }, /* 0xf352 */ { false, 0xf352, 0xf352 }, /* 0xf353 */ { false, 0xf353, 0xf353 }, /* 0xf354 */ { false, 0xf354, 0xf354 }, /* 0xf355 */ { false, 0xf355, 0xf355 }, /* 0xf356 */ { false, 0xf356, 0xf356 }, /* 0xf357 */ { false, 0xf357, 0xf357 }, /* 0xf358 */ { false, 0xf358, 0xf358 }, /* 0xf359 */ { false, 0xf359, 0xf359 }, /* 0xf35a */ { false, 0xf35a, 0xf35a }, /* 0xf35b */ { false, 0xf35b, 0xf35b }, /* 0xf35c */ { false, 0xf35c, 0xf35c }, /* 0xf35d */ { false, 0xf35d, 0xf35d }, /* 0xf35e */ { false, 0xf35e, 0xf35e }, /* 0xf35f */ { false, 0xf35f, 0xf35f }, /* 0xf360 */ { false, 0xf360, 0xf360 }, /* 0xf361 */ { false, 0xf361, 0xf361 }, /* 0xf362 */ { false, 0xf362, 0xf362 }, /* 0xf363 */ { false, 0xf363, 0xf363 }, /* 0xf364 */ { false, 0xf364, 0xf364 }, /* 0xf365 */ { false, 0xf365, 0xf365 }, /* 0xf366 */ { false, 0xf366, 0xf366 }, /* 0xf367 */ { false, 0xf367, 0xf367 }, /* 0xf368 */ { false, 0xf368, 0xf368 }, /* 0xf369 */ { false, 0xf369, 0xf369 }, /* 0xf36a */ { false, 0xf36a, 0xf36a }, /* 0xf36b */ { false, 0xf36b, 0xf36b }, /* 0xf36c */ { false, 0xf36c, 0xf36c }, /* 0xf36d */ { false, 0xf36d, 0xf36d }, /* 0xf36e */ { false, 0xf36e, 0xf36e }, /* 0xf36f */ { false, 0xf36f, 0xf36f }, /* 0xf370 */ { false, 0xf370, 0xf370 }, /* 0xf371 */ { false, 0xf371, 0xf371 }, /* 0xf372 */ { false, 0xf372, 0xf372 }, /* 0xf373 */ { false, 0xf373, 0xf373 }, /* 0xf374 */ { false, 0xf374, 0xf374 }, /* 0xf375 */ { false, 0xf375, 0xf375 }, /* 0xf376 */ { false, 0xf376, 0xf376 }, /* 0xf377 */ { false, 0xf377, 0xf377 }, /* 0xf378 */ { false, 0xf378, 0xf378 }, /* 0xf379 */ { false, 0xf379, 0xf379 }, /* 0xf37a */ { false, 0xf37a, 0xf37a }, /* 0xf37b */ { false, 0xf37b, 0xf37b }, /* 0xf37c */ { false, 0xf37c, 0xf37c }, /* 0xf37d */ { false, 0xf37d, 0xf37d }, /* 0xf37e */ { false, 0xf37e, 0xf37e }, /* 0xf37f */ { false, 0xf37f, 0xf37f }, /* 0xf380 */ { false, 0xf380, 0xf380 }, /* 0xf381 */ { false, 0xf381, 0xf381 }, /* 0xf382 */ { false, 0xf382, 0xf382 }, /* 0xf383 */ { false, 0xf383, 0xf383 }, /* 0xf384 */ { false, 0xf384, 0xf384 }, /* 0xf385 */ { false, 0xf385, 0xf385 }, /* 0xf386 */ { false, 0xf386, 0xf386 }, /* 0xf387 */ { false, 0xf387, 0xf387 }, /* 0xf388 */ { false, 0xf388, 0xf388 }, /* 0xf389 */ { false, 0xf389, 0xf389 }, /* 0xf38a */ { false, 0xf38a, 0xf38a }, /* 0xf38b */ { false, 0xf38b, 0xf38b }, /* 0xf38c */ { false, 0xf38c, 0xf38c }, /* 0xf38d */ { false, 0xf38d, 0xf38d }, /* 0xf38e */ { false, 0xf38e, 0xf38e }, /* 0xf38f */ { false, 0xf38f, 0xf38f }, /* 0xf390 */ { false, 0xf390, 0xf390 }, /* 0xf391 */ { false, 0xf391, 0xf391 }, /* 0xf392 */ { false, 0xf392, 0xf392 }, /* 0xf393 */ { false, 0xf393, 0xf393 }, /* 0xf394 */ { false, 0xf394, 0xf394 }, /* 0xf395 */ { false, 0xf395, 0xf395 }, /* 0xf396 */ { false, 0xf396, 0xf396 }, /* 0xf397 */ { false, 0xf397, 0xf397 }, /* 0xf398 */ { false, 0xf398, 0xf398 }, /* 0xf399 */ { false, 0xf399, 0xf399 }, /* 0xf39a */ { false, 0xf39a, 0xf39a }, /* 0xf39b */ { false, 0xf39b, 0xf39b }, /* 0xf39c */ { false, 0xf39c, 0xf39c }, /* 0xf39d */ { false, 0xf39d, 0xf39d }, /* 0xf39e */ { false, 0xf39e, 0xf39e }, /* 0xf39f */ { false, 0xf39f, 0xf39f }, /* 0xf3a0 */ { false, 0xf3a0, 0xf3a0 }, /* 0xf3a1 */ { false, 0xf3a1, 0xf3a1 }, /* 0xf3a2 */ { false, 0xf3a2, 0xf3a2 }, /* 0xf3a3 */ { false, 0xf3a3, 0xf3a3 }, /* 0xf3a4 */ { false, 0xf3a4, 0xf3a4 }, /* 0xf3a5 */ { false, 0xf3a5, 0xf3a5 }, /* 0xf3a6 */ { false, 0xf3a6, 0xf3a6 }, /* 0xf3a7 */ { false, 0xf3a7, 0xf3a7 }, /* 0xf3a8 */ { false, 0xf3a8, 0xf3a8 }, /* 0xf3a9 */ { false, 0xf3a9, 0xf3a9 }, /* 0xf3aa */ { false, 0xf3aa, 0xf3aa }, /* 0xf3ab */ { false, 0xf3ab, 0xf3ab }, /* 0xf3ac */ { false, 0xf3ac, 0xf3ac }, /* 0xf3ad */ { false, 0xf3ad, 0xf3ad }, /* 0xf3ae */ { false, 0xf3ae, 0xf3ae }, /* 0xf3af */ { false, 0xf3af, 0xf3af }, /* 0xf3b0 */ { false, 0xf3b0, 0xf3b0 }, /* 0xf3b1 */ { false, 0xf3b1, 0xf3b1 }, /* 0xf3b2 */ { false, 0xf3b2, 0xf3b2 }, /* 0xf3b3 */ { false, 0xf3b3, 0xf3b3 }, /* 0xf3b4 */ { false, 0xf3b4, 0xf3b4 }, /* 0xf3b5 */ { false, 0xf3b5, 0xf3b5 }, /* 0xf3b6 */ { false, 0xf3b6, 0xf3b6 }, /* 0xf3b7 */ { false, 0xf3b7, 0xf3b7 }, /* 0xf3b8 */ { false, 0xf3b8, 0xf3b8 }, /* 0xf3b9 */ { false, 0xf3b9, 0xf3b9 }, /* 0xf3ba */ { false, 0xf3ba, 0xf3ba }, /* 0xf3bb */ { false, 0xf3bb, 0xf3bb }, /* 0xf3bc */ { false, 0xf3bc, 0xf3bc }, /* 0xf3bd */ { false, 0xf3bd, 0xf3bd }, /* 0xf3be */ { false, 0xf3be, 0xf3be }, /* 0xf3bf */ { false, 0xf3bf, 0xf3bf }, /* 0xf3c0 */ { false, 0xf3c0, 0xf3c0 }, /* 0xf3c1 */ { false, 0xf3c1, 0xf3c1 }, /* 0xf3c2 */ { false, 0xf3c2, 0xf3c2 }, /* 0xf3c3 */ { false, 0xf3c3, 0xf3c3 }, /* 0xf3c4 */ { false, 0xf3c4, 0xf3c4 }, /* 0xf3c5 */ { false, 0xf3c5, 0xf3c5 }, /* 0xf3c6 */ { false, 0xf3c6, 0xf3c6 }, /* 0xf3c7 */ { false, 0xf3c7, 0xf3c7 }, /* 0xf3c8 */ { false, 0xf3c8, 0xf3c8 }, /* 0xf3c9 */ { false, 0xf3c9, 0xf3c9 }, /* 0xf3ca */ { false, 0xf3ca, 0xf3ca }, /* 0xf3cb */ { false, 0xf3cb, 0xf3cb }, /* 0xf3cc */ { false, 0xf3cc, 0xf3cc }, /* 0xf3cd */ { false, 0xf3cd, 0xf3cd }, /* 0xf3ce */ { false, 0xf3ce, 0xf3ce }, /* 0xf3cf */ { false, 0xf3cf, 0xf3cf }, /* 0xf3d0 */ { false, 0xf3d0, 0xf3d0 }, /* 0xf3d1 */ { false, 0xf3d1, 0xf3d1 }, /* 0xf3d2 */ { false, 0xf3d2, 0xf3d2 }, /* 0xf3d3 */ { false, 0xf3d3, 0xf3d3 }, /* 0xf3d4 */ { false, 0xf3d4, 0xf3d4 }, /* 0xf3d5 */ { false, 0xf3d5, 0xf3d5 }, /* 0xf3d6 */ { false, 0xf3d6, 0xf3d6 }, /* 0xf3d7 */ { false, 0xf3d7, 0xf3d7 }, /* 0xf3d8 */ { false, 0xf3d8, 0xf3d8 }, /* 0xf3d9 */ { false, 0xf3d9, 0xf3d9 }, /* 0xf3da */ { false, 0xf3da, 0xf3da }, /* 0xf3db */ { false, 0xf3db, 0xf3db }, /* 0xf3dc */ { false, 0xf3dc, 0xf3dc }, /* 0xf3dd */ { false, 0xf3dd, 0xf3dd }, /* 0xf3de */ { false, 0xf3de, 0xf3de }, /* 0xf3df */ { false, 0xf3df, 0xf3df }, /* 0xf3e0 */ { false, 0xf3e0, 0xf3e0 }, /* 0xf3e1 */ { false, 0xf3e1, 0xf3e1 }, /* 0xf3e2 */ { false, 0xf3e2, 0xf3e2 }, /* 0xf3e3 */ { false, 0xf3e3, 0xf3e3 }, /* 0xf3e4 */ { false, 0xf3e4, 0xf3e4 }, /* 0xf3e5 */ { false, 0xf3e5, 0xf3e5 }, /* 0xf3e6 */ { false, 0xf3e6, 0xf3e6 }, /* 0xf3e7 */ { false, 0xf3e7, 0xf3e7 }, /* 0xf3e8 */ { false, 0xf3e8, 0xf3e8 }, /* 0xf3e9 */ { false, 0xf3e9, 0xf3e9 }, /* 0xf3ea */ { false, 0xf3ea, 0xf3ea }, /* 0xf3eb */ { false, 0xf3eb, 0xf3eb }, /* 0xf3ec */ { false, 0xf3ec, 0xf3ec }, /* 0xf3ed */ { false, 0xf3ed, 0xf3ed }, /* 0xf3ee */ { false, 0xf3ee, 0xf3ee }, /* 0xf3ef */ { false, 0xf3ef, 0xf3ef }, /* 0xf3f0 */ { false, 0xf3f0, 0xf3f0 }, /* 0xf3f1 */ { false, 0xf3f1, 0xf3f1 }, /* 0xf3f2 */ { false, 0xf3f2, 0xf3f2 }, /* 0xf3f3 */ { false, 0xf3f3, 0xf3f3 }, /* 0xf3f4 */ { false, 0xf3f4, 0xf3f4 }, /* 0xf3f5 */ { false, 0xf3f5, 0xf3f5 }, /* 0xf3f6 */ { false, 0xf3f6, 0xf3f6 }, /* 0xf3f7 */ { false, 0xf3f7, 0xf3f7 }, /* 0xf3f8 */ { false, 0xf3f8, 0xf3f8 }, /* 0xf3f9 */ { false, 0xf3f9, 0xf3f9 }, /* 0xf3fa */ { false, 0xf3fa, 0xf3fa }, /* 0xf3fb */ { false, 0xf3fb, 0xf3fb }, /* 0xf3fc */ { false, 0xf3fc, 0xf3fc }, /* 0xf3fd */ { false, 0xf3fd, 0xf3fd }, /* 0xf3fe */ { false, 0xf3fe, 0xf3fe }, /* 0xf3ff */ { false, 0xf3ff, 0xf3ff }, /* 0xf400 */ { false, 0xf400, 0xf400 }, /* 0xf401 */ { false, 0xf401, 0xf401 }, /* 0xf402 */ { false, 0xf402, 0xf402 }, /* 0xf403 */ { false, 0xf403, 0xf403 }, /* 0xf404 */ { false, 0xf404, 0xf404 }, /* 0xf405 */ { false, 0xf405, 0xf405 }, /* 0xf406 */ { false, 0xf406, 0xf406 }, /* 0xf407 */ { false, 0xf407, 0xf407 }, /* 0xf408 */ { false, 0xf408, 0xf408 }, /* 0xf409 */ { false, 0xf409, 0xf409 }, /* 0xf40a */ { false, 0xf40a, 0xf40a }, /* 0xf40b */ { false, 0xf40b, 0xf40b }, /* 0xf40c */ { false, 0xf40c, 0xf40c }, /* 0xf40d */ { false, 0xf40d, 0xf40d }, /* 0xf40e */ { false, 0xf40e, 0xf40e }, /* 0xf40f */ { false, 0xf40f, 0xf40f }, /* 0xf410 */ { false, 0xf410, 0xf410 }, /* 0xf411 */ { false, 0xf411, 0xf411 }, /* 0xf412 */ { false, 0xf412, 0xf412 }, /* 0xf413 */ { false, 0xf413, 0xf413 }, /* 0xf414 */ { false, 0xf414, 0xf414 }, /* 0xf415 */ { false, 0xf415, 0xf415 }, /* 0xf416 */ { false, 0xf416, 0xf416 }, /* 0xf417 */ { false, 0xf417, 0xf417 }, /* 0xf418 */ { false, 0xf418, 0xf418 }, /* 0xf419 */ { false, 0xf419, 0xf419 }, /* 0xf41a */ { false, 0xf41a, 0xf41a }, /* 0xf41b */ { false, 0xf41b, 0xf41b }, /* 0xf41c */ { false, 0xf41c, 0xf41c }, /* 0xf41d */ { false, 0xf41d, 0xf41d }, /* 0xf41e */ { false, 0xf41e, 0xf41e }, /* 0xf41f */ { false, 0xf41f, 0xf41f }, /* 0xf420 */ { false, 0xf420, 0xf420 }, /* 0xf421 */ { false, 0xf421, 0xf421 }, /* 0xf422 */ { false, 0xf422, 0xf422 }, /* 0xf423 */ { false, 0xf423, 0xf423 }, /* 0xf424 */ { false, 0xf424, 0xf424 }, /* 0xf425 */ { false, 0xf425, 0xf425 }, /* 0xf426 */ { false, 0xf426, 0xf426 }, /* 0xf427 */ { false, 0xf427, 0xf427 }, /* 0xf428 */ { false, 0xf428, 0xf428 }, /* 0xf429 */ { false, 0xf429, 0xf429 }, /* 0xf42a */ { false, 0xf42a, 0xf42a }, /* 0xf42b */ { false, 0xf42b, 0xf42b }, /* 0xf42c */ { false, 0xf42c, 0xf42c }, /* 0xf42d */ { false, 0xf42d, 0xf42d }, /* 0xf42e */ { false, 0xf42e, 0xf42e }, /* 0xf42f */ { false, 0xf42f, 0xf42f }, /* 0xf430 */ { false, 0xf430, 0xf430 }, /* 0xf431 */ { false, 0xf431, 0xf431 }, /* 0xf432 */ { false, 0xf432, 0xf432 }, /* 0xf433 */ { false, 0xf433, 0xf433 }, /* 0xf434 */ { false, 0xf434, 0xf434 }, /* 0xf435 */ { false, 0xf435, 0xf435 }, /* 0xf436 */ { false, 0xf436, 0xf436 }, /* 0xf437 */ { false, 0xf437, 0xf437 }, /* 0xf438 */ { false, 0xf438, 0xf438 }, /* 0xf439 */ { false, 0xf439, 0xf439 }, /* 0xf43a */ { false, 0xf43a, 0xf43a }, /* 0xf43b */ { false, 0xf43b, 0xf43b }, /* 0xf43c */ { false, 0xf43c, 0xf43c }, /* 0xf43d */ { false, 0xf43d, 0xf43d }, /* 0xf43e */ { false, 0xf43e, 0xf43e }, /* 0xf43f */ { false, 0xf43f, 0xf43f }, /* 0xf440 */ { false, 0xf440, 0xf440 }, /* 0xf441 */ { false, 0xf441, 0xf441 }, /* 0xf442 */ { false, 0xf442, 0xf442 }, /* 0xf443 */ { false, 0xf443, 0xf443 }, /* 0xf444 */ { false, 0xf444, 0xf444 }, /* 0xf445 */ { false, 0xf445, 0xf445 }, /* 0xf446 */ { false, 0xf446, 0xf446 }, /* 0xf447 */ { false, 0xf447, 0xf447 }, /* 0xf448 */ { false, 0xf448, 0xf448 }, /* 0xf449 */ { false, 0xf449, 0xf449 }, /* 0xf44a */ { false, 0xf44a, 0xf44a }, /* 0xf44b */ { false, 0xf44b, 0xf44b }, /* 0xf44c */ { false, 0xf44c, 0xf44c }, /* 0xf44d */ { false, 0xf44d, 0xf44d }, /* 0xf44e */ { false, 0xf44e, 0xf44e }, /* 0xf44f */ { false, 0xf44f, 0xf44f }, /* 0xf450 */ { false, 0xf450, 0xf450 }, /* 0xf451 */ { false, 0xf451, 0xf451 }, /* 0xf452 */ { false, 0xf452, 0xf452 }, /* 0xf453 */ { false, 0xf453, 0xf453 }, /* 0xf454 */ { false, 0xf454, 0xf454 }, /* 0xf455 */ { false, 0xf455, 0xf455 }, /* 0xf456 */ { false, 0xf456, 0xf456 }, /* 0xf457 */ { false, 0xf457, 0xf457 }, /* 0xf458 */ { false, 0xf458, 0xf458 }, /* 0xf459 */ { false, 0xf459, 0xf459 }, /* 0xf45a */ { false, 0xf45a, 0xf45a }, /* 0xf45b */ { false, 0xf45b, 0xf45b }, /* 0xf45c */ { false, 0xf45c, 0xf45c }, /* 0xf45d */ { false, 0xf45d, 0xf45d }, /* 0xf45e */ { false, 0xf45e, 0xf45e }, /* 0xf45f */ { false, 0xf45f, 0xf45f }, /* 0xf460 */ { false, 0xf460, 0xf460 }, /* 0xf461 */ { false, 0xf461, 0xf461 }, /* 0xf462 */ { false, 0xf462, 0xf462 }, /* 0xf463 */ { false, 0xf463, 0xf463 }, /* 0xf464 */ { false, 0xf464, 0xf464 }, /* 0xf465 */ { false, 0xf465, 0xf465 }, /* 0xf466 */ { false, 0xf466, 0xf466 }, /* 0xf467 */ { false, 0xf467, 0xf467 }, /* 0xf468 */ { false, 0xf468, 0xf468 }, /* 0xf469 */ { false, 0xf469, 0xf469 }, /* 0xf46a */ { false, 0xf46a, 0xf46a }, /* 0xf46b */ { false, 0xf46b, 0xf46b }, /* 0xf46c */ { false, 0xf46c, 0xf46c }, /* 0xf46d */ { false, 0xf46d, 0xf46d }, /* 0xf46e */ { false, 0xf46e, 0xf46e }, /* 0xf46f */ { false, 0xf46f, 0xf46f }, /* 0xf470 */ { false, 0xf470, 0xf470 }, /* 0xf471 */ { false, 0xf471, 0xf471 }, /* 0xf472 */ { false, 0xf472, 0xf472 }, /* 0xf473 */ { false, 0xf473, 0xf473 }, /* 0xf474 */ { false, 0xf474, 0xf474 }, /* 0xf475 */ { false, 0xf475, 0xf475 }, /* 0xf476 */ { false, 0xf476, 0xf476 }, /* 0xf477 */ { false, 0xf477, 0xf477 }, /* 0xf478 */ { false, 0xf478, 0xf478 }, /* 0xf479 */ { false, 0xf479, 0xf479 }, /* 0xf47a */ { false, 0xf47a, 0xf47a }, /* 0xf47b */ { false, 0xf47b, 0xf47b }, /* 0xf47c */ { false, 0xf47c, 0xf47c }, /* 0xf47d */ { false, 0xf47d, 0xf47d }, /* 0xf47e */ { false, 0xf47e, 0xf47e }, /* 0xf47f */ { false, 0xf47f, 0xf47f }, /* 0xf480 */ { false, 0xf480, 0xf480 }, /* 0xf481 */ { false, 0xf481, 0xf481 }, /* 0xf482 */ { false, 0xf482, 0xf482 }, /* 0xf483 */ { false, 0xf483, 0xf483 }, /* 0xf484 */ { false, 0xf484, 0xf484 }, /* 0xf485 */ { false, 0xf485, 0xf485 }, /* 0xf486 */ { false, 0xf486, 0xf486 }, /* 0xf487 */ { false, 0xf487, 0xf487 }, /* 0xf488 */ { false, 0xf488, 0xf488 }, /* 0xf489 */ { false, 0xf489, 0xf489 }, /* 0xf48a */ { false, 0xf48a, 0xf48a }, /* 0xf48b */ { false, 0xf48b, 0xf48b }, /* 0xf48c */ { false, 0xf48c, 0xf48c }, /* 0xf48d */ { false, 0xf48d, 0xf48d }, /* 0xf48e */ { false, 0xf48e, 0xf48e }, /* 0xf48f */ { false, 0xf48f, 0xf48f }, /* 0xf490 */ { false, 0xf490, 0xf490 }, /* 0xf491 */ { false, 0xf491, 0xf491 }, /* 0xf492 */ { false, 0xf492, 0xf492 }, /* 0xf493 */ { false, 0xf493, 0xf493 }, /* 0xf494 */ { false, 0xf494, 0xf494 }, /* 0xf495 */ { false, 0xf495, 0xf495 }, /* 0xf496 */ { false, 0xf496, 0xf496 }, /* 0xf497 */ { false, 0xf497, 0xf497 }, /* 0xf498 */ { false, 0xf498, 0xf498 }, /* 0xf499 */ { false, 0xf499, 0xf499 }, /* 0xf49a */ { false, 0xf49a, 0xf49a }, /* 0xf49b */ { false, 0xf49b, 0xf49b }, /* 0xf49c */ { false, 0xf49c, 0xf49c }, /* 0xf49d */ { false, 0xf49d, 0xf49d }, /* 0xf49e */ { false, 0xf49e, 0xf49e }, /* 0xf49f */ { false, 0xf49f, 0xf49f }, /* 0xf4a0 */ { false, 0xf4a0, 0xf4a0 }, /* 0xf4a1 */ { false, 0xf4a1, 0xf4a1 }, /* 0xf4a2 */ { false, 0xf4a2, 0xf4a2 }, /* 0xf4a3 */ { false, 0xf4a3, 0xf4a3 }, /* 0xf4a4 */ { false, 0xf4a4, 0xf4a4 }, /* 0xf4a5 */ { false, 0xf4a5, 0xf4a5 }, /* 0xf4a6 */ { false, 0xf4a6, 0xf4a6 }, /* 0xf4a7 */ { false, 0xf4a7, 0xf4a7 }, /* 0xf4a8 */ { false, 0xf4a8, 0xf4a8 }, /* 0xf4a9 */ { false, 0xf4a9, 0xf4a9 }, /* 0xf4aa */ { false, 0xf4aa, 0xf4aa }, /* 0xf4ab */ { false, 0xf4ab, 0xf4ab }, /* 0xf4ac */ { false, 0xf4ac, 0xf4ac }, /* 0xf4ad */ { false, 0xf4ad, 0xf4ad }, /* 0xf4ae */ { false, 0xf4ae, 0xf4ae }, /* 0xf4af */ { false, 0xf4af, 0xf4af }, /* 0xf4b0 */ { false, 0xf4b0, 0xf4b0 }, /* 0xf4b1 */ { false, 0xf4b1, 0xf4b1 }, /* 0xf4b2 */ { false, 0xf4b2, 0xf4b2 }, /* 0xf4b3 */ { false, 0xf4b3, 0xf4b3 }, /* 0xf4b4 */ { false, 0xf4b4, 0xf4b4 }, /* 0xf4b5 */ { false, 0xf4b5, 0xf4b5 }, /* 0xf4b6 */ { false, 0xf4b6, 0xf4b6 }, /* 0xf4b7 */ { false, 0xf4b7, 0xf4b7 }, /* 0xf4b8 */ { false, 0xf4b8, 0xf4b8 }, /* 0xf4b9 */ { false, 0xf4b9, 0xf4b9 }, /* 0xf4ba */ { false, 0xf4ba, 0xf4ba }, /* 0xf4bb */ { false, 0xf4bb, 0xf4bb }, /* 0xf4bc */ { false, 0xf4bc, 0xf4bc }, /* 0xf4bd */ { false, 0xf4bd, 0xf4bd }, /* 0xf4be */ { false, 0xf4be, 0xf4be }, /* 0xf4bf */ { false, 0xf4bf, 0xf4bf }, /* 0xf4c0 */ { false, 0xf4c0, 0xf4c0 }, /* 0xf4c1 */ { false, 0xf4c1, 0xf4c1 }, /* 0xf4c2 */ { false, 0xf4c2, 0xf4c2 }, /* 0xf4c3 */ { false, 0xf4c3, 0xf4c3 }, /* 0xf4c4 */ { false, 0xf4c4, 0xf4c4 }, /* 0xf4c5 */ { false, 0xf4c5, 0xf4c5 }, /* 0xf4c6 */ { false, 0xf4c6, 0xf4c6 }, /* 0xf4c7 */ { false, 0xf4c7, 0xf4c7 }, /* 0xf4c8 */ { false, 0xf4c8, 0xf4c8 }, /* 0xf4c9 */ { false, 0xf4c9, 0xf4c9 }, /* 0xf4ca */ { false, 0xf4ca, 0xf4ca }, /* 0xf4cb */ { false, 0xf4cb, 0xf4cb }, /* 0xf4cc */ { false, 0xf4cc, 0xf4cc }, /* 0xf4cd */ { false, 0xf4cd, 0xf4cd }, /* 0xf4ce */ { false, 0xf4ce, 0xf4ce }, /* 0xf4cf */ { false, 0xf4cf, 0xf4cf }, /* 0xf4d0 */ { false, 0xf4d0, 0xf4d0 }, /* 0xf4d1 */ { false, 0xf4d1, 0xf4d1 }, /* 0xf4d2 */ { false, 0xf4d2, 0xf4d2 }, /* 0xf4d3 */ { false, 0xf4d3, 0xf4d3 }, /* 0xf4d4 */ { false, 0xf4d4, 0xf4d4 }, /* 0xf4d5 */ { false, 0xf4d5, 0xf4d5 }, /* 0xf4d6 */ { false, 0xf4d6, 0xf4d6 }, /* 0xf4d7 */ { false, 0xf4d7, 0xf4d7 }, /* 0xf4d8 */ { false, 0xf4d8, 0xf4d8 }, /* 0xf4d9 */ { false, 0xf4d9, 0xf4d9 }, /* 0xf4da */ { false, 0xf4da, 0xf4da }, /* 0xf4db */ { false, 0xf4db, 0xf4db }, /* 0xf4dc */ { false, 0xf4dc, 0xf4dc }, /* 0xf4dd */ { false, 0xf4dd, 0xf4dd }, /* 0xf4de */ { false, 0xf4de, 0xf4de }, /* 0xf4df */ { false, 0xf4df, 0xf4df }, /* 0xf4e0 */ { false, 0xf4e0, 0xf4e0 }, /* 0xf4e1 */ { false, 0xf4e1, 0xf4e1 }, /* 0xf4e2 */ { false, 0xf4e2, 0xf4e2 }, /* 0xf4e3 */ { false, 0xf4e3, 0xf4e3 }, /* 0xf4e4 */ { false, 0xf4e4, 0xf4e4 }, /* 0xf4e5 */ { false, 0xf4e5, 0xf4e5 }, /* 0xf4e6 */ { false, 0xf4e6, 0xf4e6 }, /* 0xf4e7 */ { false, 0xf4e7, 0xf4e7 }, /* 0xf4e8 */ { false, 0xf4e8, 0xf4e8 }, /* 0xf4e9 */ { false, 0xf4e9, 0xf4e9 }, /* 0xf4ea */ { false, 0xf4ea, 0xf4ea }, /* 0xf4eb */ { false, 0xf4eb, 0xf4eb }, /* 0xf4ec */ { false, 0xf4ec, 0xf4ec }, /* 0xf4ed */ { false, 0xf4ed, 0xf4ed }, /* 0xf4ee */ { false, 0xf4ee, 0xf4ee }, /* 0xf4ef */ { false, 0xf4ef, 0xf4ef }, /* 0xf4f0 */ { false, 0xf4f0, 0xf4f0 }, /* 0xf4f1 */ { false, 0xf4f1, 0xf4f1 }, /* 0xf4f2 */ { false, 0xf4f2, 0xf4f2 }, /* 0xf4f3 */ { false, 0xf4f3, 0xf4f3 }, /* 0xf4f4 */ { false, 0xf4f4, 0xf4f4 }, /* 0xf4f5 */ { false, 0xf4f5, 0xf4f5 }, /* 0xf4f6 */ { false, 0xf4f6, 0xf4f6 }, /* 0xf4f7 */ { false, 0xf4f7, 0xf4f7 }, /* 0xf4f8 */ { false, 0xf4f8, 0xf4f8 }, /* 0xf4f9 */ { false, 0xf4f9, 0xf4f9 }, /* 0xf4fa */ { false, 0xf4fa, 0xf4fa }, /* 0xf4fb */ { false, 0xf4fb, 0xf4fb }, /* 0xf4fc */ { false, 0xf4fc, 0xf4fc }, /* 0xf4fd */ { false, 0xf4fd, 0xf4fd }, /* 0xf4fe */ { false, 0xf4fe, 0xf4fe }, /* 0xf4ff */ { false, 0xf4ff, 0xf4ff }, /* 0xf500 */ { false, 0xf500, 0xf500 }, /* 0xf501 */ { false, 0xf501, 0xf501 }, /* 0xf502 */ { false, 0xf502, 0xf502 }, /* 0xf503 */ { false, 0xf503, 0xf503 }, /* 0xf504 */ { false, 0xf504, 0xf504 }, /* 0xf505 */ { false, 0xf505, 0xf505 }, /* 0xf506 */ { false, 0xf506, 0xf506 }, /* 0xf507 */ { false, 0xf507, 0xf507 }, /* 0xf508 */ { false, 0xf508, 0xf508 }, /* 0xf509 */ { false, 0xf509, 0xf509 }, /* 0xf50a */ { false, 0xf50a, 0xf50a }, /* 0xf50b */ { false, 0xf50b, 0xf50b }, /* 0xf50c */ { false, 0xf50c, 0xf50c }, /* 0xf50d */ { false, 0xf50d, 0xf50d }, /* 0xf50e */ { false, 0xf50e, 0xf50e }, /* 0xf50f */ { false, 0xf50f, 0xf50f }, /* 0xf510 */ { false, 0xf510, 0xf510 }, /* 0xf511 */ { false, 0xf511, 0xf511 }, /* 0xf512 */ { false, 0xf512, 0xf512 }, /* 0xf513 */ { false, 0xf513, 0xf513 }, /* 0xf514 */ { false, 0xf514, 0xf514 }, /* 0xf515 */ { false, 0xf515, 0xf515 }, /* 0xf516 */ { false, 0xf516, 0xf516 }, /* 0xf517 */ { false, 0xf517, 0xf517 }, /* 0xf518 */ { false, 0xf518, 0xf518 }, /* 0xf519 */ { false, 0xf519, 0xf519 }, /* 0xf51a */ { false, 0xf51a, 0xf51a }, /* 0xf51b */ { false, 0xf51b, 0xf51b }, /* 0xf51c */ { false, 0xf51c, 0xf51c }, /* 0xf51d */ { false, 0xf51d, 0xf51d }, /* 0xf51e */ { false, 0xf51e, 0xf51e }, /* 0xf51f */ { false, 0xf51f, 0xf51f }, /* 0xf520 */ { false, 0xf520, 0xf520 }, /* 0xf521 */ { false, 0xf521, 0xf521 }, /* 0xf522 */ { false, 0xf522, 0xf522 }, /* 0xf523 */ { false, 0xf523, 0xf523 }, /* 0xf524 */ { false, 0xf524, 0xf524 }, /* 0xf525 */ { false, 0xf525, 0xf525 }, /* 0xf526 */ { false, 0xf526, 0xf526 }, /* 0xf527 */ { false, 0xf527, 0xf527 }, /* 0xf528 */ { false, 0xf528, 0xf528 }, /* 0xf529 */ { false, 0xf529, 0xf529 }, /* 0xf52a */ { false, 0xf52a, 0xf52a }, /* 0xf52b */ { false, 0xf52b, 0xf52b }, /* 0xf52c */ { false, 0xf52c, 0xf52c }, /* 0xf52d */ { false, 0xf52d, 0xf52d }, /* 0xf52e */ { false, 0xf52e, 0xf52e }, /* 0xf52f */ { false, 0xf52f, 0xf52f }, /* 0xf530 */ { false, 0xf530, 0xf530 }, /* 0xf531 */ { false, 0xf531, 0xf531 }, /* 0xf532 */ { false, 0xf532, 0xf532 }, /* 0xf533 */ { false, 0xf533, 0xf533 }, /* 0xf534 */ { false, 0xf534, 0xf534 }, /* 0xf535 */ { false, 0xf535, 0xf535 }, /* 0xf536 */ { false, 0xf536, 0xf536 }, /* 0xf537 */ { false, 0xf537, 0xf537 }, /* 0xf538 */ { false, 0xf538, 0xf538 }, /* 0xf539 */ { false, 0xf539, 0xf539 }, /* 0xf53a */ { false, 0xf53a, 0xf53a }, /* 0xf53b */ { false, 0xf53b, 0xf53b }, /* 0xf53c */ { false, 0xf53c, 0xf53c }, /* 0xf53d */ { false, 0xf53d, 0xf53d }, /* 0xf53e */ { false, 0xf53e, 0xf53e }, /* 0xf53f */ { false, 0xf53f, 0xf53f }, /* 0xf540 */ { false, 0xf540, 0xf540 }, /* 0xf541 */ { false, 0xf541, 0xf541 }, /* 0xf542 */ { false, 0xf542, 0xf542 }, /* 0xf543 */ { false, 0xf543, 0xf543 }, /* 0xf544 */ { false, 0xf544, 0xf544 }, /* 0xf545 */ { false, 0xf545, 0xf545 }, /* 0xf546 */ { false, 0xf546, 0xf546 }, /* 0xf547 */ { false, 0xf547, 0xf547 }, /* 0xf548 */ { false, 0xf548, 0xf548 }, /* 0xf549 */ { false, 0xf549, 0xf549 }, /* 0xf54a */ { false, 0xf54a, 0xf54a }, /* 0xf54b */ { false, 0xf54b, 0xf54b }, /* 0xf54c */ { false, 0xf54c, 0xf54c }, /* 0xf54d */ { false, 0xf54d, 0xf54d }, /* 0xf54e */ { false, 0xf54e, 0xf54e }, /* 0xf54f */ { false, 0xf54f, 0xf54f }, /* 0xf550 */ { false, 0xf550, 0xf550 }, /* 0xf551 */ { false, 0xf551, 0xf551 }, /* 0xf552 */ { false, 0xf552, 0xf552 }, /* 0xf553 */ { false, 0xf553, 0xf553 }, /* 0xf554 */ { false, 0xf554, 0xf554 }, /* 0xf555 */ { false, 0xf555, 0xf555 }, /* 0xf556 */ { false, 0xf556, 0xf556 }, /* 0xf557 */ { false, 0xf557, 0xf557 }, /* 0xf558 */ { false, 0xf558, 0xf558 }, /* 0xf559 */ { false, 0xf559, 0xf559 }, /* 0xf55a */ { false, 0xf55a, 0xf55a }, /* 0xf55b */ { false, 0xf55b, 0xf55b }, /* 0xf55c */ { false, 0xf55c, 0xf55c }, /* 0xf55d */ { false, 0xf55d, 0xf55d }, /* 0xf55e */ { false, 0xf55e, 0xf55e }, /* 0xf55f */ { false, 0xf55f, 0xf55f }, /* 0xf560 */ { false, 0xf560, 0xf560 }, /* 0xf561 */ { false, 0xf561, 0xf561 }, /* 0xf562 */ { false, 0xf562, 0xf562 }, /* 0xf563 */ { false, 0xf563, 0xf563 }, /* 0xf564 */ { false, 0xf564, 0xf564 }, /* 0xf565 */ { false, 0xf565, 0xf565 }, /* 0xf566 */ { false, 0xf566, 0xf566 }, /* 0xf567 */ { false, 0xf567, 0xf567 }, /* 0xf568 */ { false, 0xf568, 0xf568 }, /* 0xf569 */ { false, 0xf569, 0xf569 }, /* 0xf56a */ { false, 0xf56a, 0xf56a }, /* 0xf56b */ { false, 0xf56b, 0xf56b }, /* 0xf56c */ { false, 0xf56c, 0xf56c }, /* 0xf56d */ { false, 0xf56d, 0xf56d }, /* 0xf56e */ { false, 0xf56e, 0xf56e }, /* 0xf56f */ { false, 0xf56f, 0xf56f }, /* 0xf570 */ { false, 0xf570, 0xf570 }, /* 0xf571 */ { false, 0xf571, 0xf571 }, /* 0xf572 */ { false, 0xf572, 0xf572 }, /* 0xf573 */ { false, 0xf573, 0xf573 }, /* 0xf574 */ { false, 0xf574, 0xf574 }, /* 0xf575 */ { false, 0xf575, 0xf575 }, /* 0xf576 */ { false, 0xf576, 0xf576 }, /* 0xf577 */ { false, 0xf577, 0xf577 }, /* 0xf578 */ { false, 0xf578, 0xf578 }, /* 0xf579 */ { false, 0xf579, 0xf579 }, /* 0xf57a */ { false, 0xf57a, 0xf57a }, /* 0xf57b */ { false, 0xf57b, 0xf57b }, /* 0xf57c */ { false, 0xf57c, 0xf57c }, /* 0xf57d */ { false, 0xf57d, 0xf57d }, /* 0xf57e */ { false, 0xf57e, 0xf57e }, /* 0xf57f */ { false, 0xf57f, 0xf57f }, /* 0xf580 */ { false, 0xf580, 0xf580 }, /* 0xf581 */ { false, 0xf581, 0xf581 }, /* 0xf582 */ { false, 0xf582, 0xf582 }, /* 0xf583 */ { false, 0xf583, 0xf583 }, /* 0xf584 */ { false, 0xf584, 0xf584 }, /* 0xf585 */ { false, 0xf585, 0xf585 }, /* 0xf586 */ { false, 0xf586, 0xf586 }, /* 0xf587 */ { false, 0xf587, 0xf587 }, /* 0xf588 */ { false, 0xf588, 0xf588 }, /* 0xf589 */ { false, 0xf589, 0xf589 }, /* 0xf58a */ { false, 0xf58a, 0xf58a }, /* 0xf58b */ { false, 0xf58b, 0xf58b }, /* 0xf58c */ { false, 0xf58c, 0xf58c }, /* 0xf58d */ { false, 0xf58d, 0xf58d }, /* 0xf58e */ { false, 0xf58e, 0xf58e }, /* 0xf58f */ { false, 0xf58f, 0xf58f }, /* 0xf590 */ { false, 0xf590, 0xf590 }, /* 0xf591 */ { false, 0xf591, 0xf591 }, /* 0xf592 */ { false, 0xf592, 0xf592 }, /* 0xf593 */ { false, 0xf593, 0xf593 }, /* 0xf594 */ { false, 0xf594, 0xf594 }, /* 0xf595 */ { false, 0xf595, 0xf595 }, /* 0xf596 */ { false, 0xf596, 0xf596 }, /* 0xf597 */ { false, 0xf597, 0xf597 }, /* 0xf598 */ { false, 0xf598, 0xf598 }, /* 0xf599 */ { false, 0xf599, 0xf599 }, /* 0xf59a */ { false, 0xf59a, 0xf59a }, /* 0xf59b */ { false, 0xf59b, 0xf59b }, /* 0xf59c */ { false, 0xf59c, 0xf59c }, /* 0xf59d */ { false, 0xf59d, 0xf59d }, /* 0xf59e */ { false, 0xf59e, 0xf59e }, /* 0xf59f */ { false, 0xf59f, 0xf59f }, /* 0xf5a0 */ { false, 0xf5a0, 0xf5a0 }, /* 0xf5a1 */ { false, 0xf5a1, 0xf5a1 }, /* 0xf5a2 */ { false, 0xf5a2, 0xf5a2 }, /* 0xf5a3 */ { false, 0xf5a3, 0xf5a3 }, /* 0xf5a4 */ { false, 0xf5a4, 0xf5a4 }, /* 0xf5a5 */ { false, 0xf5a5, 0xf5a5 }, /* 0xf5a6 */ { false, 0xf5a6, 0xf5a6 }, /* 0xf5a7 */ { false, 0xf5a7, 0xf5a7 }, /* 0xf5a8 */ { false, 0xf5a8, 0xf5a8 }, /* 0xf5a9 */ { false, 0xf5a9, 0xf5a9 }, /* 0xf5aa */ { false, 0xf5aa, 0xf5aa }, /* 0xf5ab */ { false, 0xf5ab, 0xf5ab }, /* 0xf5ac */ { false, 0xf5ac, 0xf5ac }, /* 0xf5ad */ { false, 0xf5ad, 0xf5ad }, /* 0xf5ae */ { false, 0xf5ae, 0xf5ae }, /* 0xf5af */ { false, 0xf5af, 0xf5af }, /* 0xf5b0 */ { false, 0xf5b0, 0xf5b0 }, /* 0xf5b1 */ { false, 0xf5b1, 0xf5b1 }, /* 0xf5b2 */ { false, 0xf5b2, 0xf5b2 }, /* 0xf5b3 */ { false, 0xf5b3, 0xf5b3 }, /* 0xf5b4 */ { false, 0xf5b4, 0xf5b4 }, /* 0xf5b5 */ { false, 0xf5b5, 0xf5b5 }, /* 0xf5b6 */ { false, 0xf5b6, 0xf5b6 }, /* 0xf5b7 */ { false, 0xf5b7, 0xf5b7 }, /* 0xf5b8 */ { false, 0xf5b8, 0xf5b8 }, /* 0xf5b9 */ { false, 0xf5b9, 0xf5b9 }, /* 0xf5ba */ { false, 0xf5ba, 0xf5ba }, /* 0xf5bb */ { false, 0xf5bb, 0xf5bb }, /* 0xf5bc */ { false, 0xf5bc, 0xf5bc }, /* 0xf5bd */ { false, 0xf5bd, 0xf5bd }, /* 0xf5be */ { false, 0xf5be, 0xf5be }, /* 0xf5bf */ { false, 0xf5bf, 0xf5bf }, /* 0xf5c0 */ { false, 0xf5c0, 0xf5c0 }, /* 0xf5c1 */ { false, 0xf5c1, 0xf5c1 }, /* 0xf5c2 */ { false, 0xf5c2, 0xf5c2 }, /* 0xf5c3 */ { false, 0xf5c3, 0xf5c3 }, /* 0xf5c4 */ { false, 0xf5c4, 0xf5c4 }, /* 0xf5c5 */ { false, 0xf5c5, 0xf5c5 }, /* 0xf5c6 */ { false, 0xf5c6, 0xf5c6 }, /* 0xf5c7 */ { false, 0xf5c7, 0xf5c7 }, /* 0xf5c8 */ { false, 0xf5c8, 0xf5c8 }, /* 0xf5c9 */ { false, 0xf5c9, 0xf5c9 }, /* 0xf5ca */ { false, 0xf5ca, 0xf5ca }, /* 0xf5cb */ { false, 0xf5cb, 0xf5cb }, /* 0xf5cc */ { false, 0xf5cc, 0xf5cc }, /* 0xf5cd */ { false, 0xf5cd, 0xf5cd }, /* 0xf5ce */ { false, 0xf5ce, 0xf5ce }, /* 0xf5cf */ { false, 0xf5cf, 0xf5cf }, /* 0xf5d0 */ { false, 0xf5d0, 0xf5d0 }, /* 0xf5d1 */ { false, 0xf5d1, 0xf5d1 }, /* 0xf5d2 */ { false, 0xf5d2, 0xf5d2 }, /* 0xf5d3 */ { false, 0xf5d3, 0xf5d3 }, /* 0xf5d4 */ { false, 0xf5d4, 0xf5d4 }, /* 0xf5d5 */ { false, 0xf5d5, 0xf5d5 }, /* 0xf5d6 */ { false, 0xf5d6, 0xf5d6 }, /* 0xf5d7 */ { false, 0xf5d7, 0xf5d7 }, /* 0xf5d8 */ { false, 0xf5d8, 0xf5d8 }, /* 0xf5d9 */ { false, 0xf5d9, 0xf5d9 }, /* 0xf5da */ { false, 0xf5da, 0xf5da }, /* 0xf5db */ { false, 0xf5db, 0xf5db }, /* 0xf5dc */ { false, 0xf5dc, 0xf5dc }, /* 0xf5dd */ { false, 0xf5dd, 0xf5dd }, /* 0xf5de */ { false, 0xf5de, 0xf5de }, /* 0xf5df */ { false, 0xf5df, 0xf5df }, /* 0xf5e0 */ { false, 0xf5e0, 0xf5e0 }, /* 0xf5e1 */ { false, 0xf5e1, 0xf5e1 }, /* 0xf5e2 */ { false, 0xf5e2, 0xf5e2 }, /* 0xf5e3 */ { false, 0xf5e3, 0xf5e3 }, /* 0xf5e4 */ { false, 0xf5e4, 0xf5e4 }, /* 0xf5e5 */ { false, 0xf5e5, 0xf5e5 }, /* 0xf5e6 */ { false, 0xf5e6, 0xf5e6 }, /* 0xf5e7 */ { false, 0xf5e7, 0xf5e7 }, /* 0xf5e8 */ { false, 0xf5e8, 0xf5e8 }, /* 0xf5e9 */ { false, 0xf5e9, 0xf5e9 }, /* 0xf5ea */ { false, 0xf5ea, 0xf5ea }, /* 0xf5eb */ { false, 0xf5eb, 0xf5eb }, /* 0xf5ec */ { false, 0xf5ec, 0xf5ec }, /* 0xf5ed */ { false, 0xf5ed, 0xf5ed }, /* 0xf5ee */ { false, 0xf5ee, 0xf5ee }, /* 0xf5ef */ { false, 0xf5ef, 0xf5ef }, /* 0xf5f0 */ { false, 0xf5f0, 0xf5f0 }, /* 0xf5f1 */ { false, 0xf5f1, 0xf5f1 }, /* 0xf5f2 */ { false, 0xf5f2, 0xf5f2 }, /* 0xf5f3 */ { false, 0xf5f3, 0xf5f3 }, /* 0xf5f4 */ { false, 0xf5f4, 0xf5f4 }, /* 0xf5f5 */ { false, 0xf5f5, 0xf5f5 }, /* 0xf5f6 */ { false, 0xf5f6, 0xf5f6 }, /* 0xf5f7 */ { false, 0xf5f7, 0xf5f7 }, /* 0xf5f8 */ { false, 0xf5f8, 0xf5f8 }, /* 0xf5f9 */ { false, 0xf5f9, 0xf5f9 }, /* 0xf5fa */ { false, 0xf5fa, 0xf5fa }, /* 0xf5fb */ { false, 0xf5fb, 0xf5fb }, /* 0xf5fc */ { false, 0xf5fc, 0xf5fc }, /* 0xf5fd */ { false, 0xf5fd, 0xf5fd }, /* 0xf5fe */ { false, 0xf5fe, 0xf5fe }, /* 0xf5ff */ { false, 0xf5ff, 0xf5ff }, /* 0xf600 */ { false, 0xf600, 0xf600 }, /* 0xf601 */ { false, 0xf601, 0xf601 }, /* 0xf602 */ { false, 0xf602, 0xf602 }, /* 0xf603 */ { false, 0xf603, 0xf603 }, /* 0xf604 */ { false, 0xf604, 0xf604 }, /* 0xf605 */ { false, 0xf605, 0xf605 }, /* 0xf606 */ { false, 0xf606, 0xf606 }, /* 0xf607 */ { false, 0xf607, 0xf607 }, /* 0xf608 */ { false, 0xf608, 0xf608 }, /* 0xf609 */ { false, 0xf609, 0xf609 }, /* 0xf60a */ { false, 0xf60a, 0xf60a }, /* 0xf60b */ { false, 0xf60b, 0xf60b }, /* 0xf60c */ { false, 0xf60c, 0xf60c }, /* 0xf60d */ { false, 0xf60d, 0xf60d }, /* 0xf60e */ { false, 0xf60e, 0xf60e }, /* 0xf60f */ { false, 0xf60f, 0xf60f }, /* 0xf610 */ { false, 0xf610, 0xf610 }, /* 0xf611 */ { false, 0xf611, 0xf611 }, /* 0xf612 */ { false, 0xf612, 0xf612 }, /* 0xf613 */ { false, 0xf613, 0xf613 }, /* 0xf614 */ { false, 0xf614, 0xf614 }, /* 0xf615 */ { false, 0xf615, 0xf615 }, /* 0xf616 */ { false, 0xf616, 0xf616 }, /* 0xf617 */ { false, 0xf617, 0xf617 }, /* 0xf618 */ { false, 0xf618, 0xf618 }, /* 0xf619 */ { false, 0xf619, 0xf619 }, /* 0xf61a */ { false, 0xf61a, 0xf61a }, /* 0xf61b */ { false, 0xf61b, 0xf61b }, /* 0xf61c */ { false, 0xf61c, 0xf61c }, /* 0xf61d */ { false, 0xf61d, 0xf61d }, /* 0xf61e */ { false, 0xf61e, 0xf61e }, /* 0xf61f */ { false, 0xf61f, 0xf61f }, /* 0xf620 */ { false, 0xf620, 0xf620 }, /* 0xf621 */ { false, 0xf621, 0xf621 }, /* 0xf622 */ { false, 0xf622, 0xf622 }, /* 0xf623 */ { false, 0xf623, 0xf623 }, /* 0xf624 */ { false, 0xf624, 0xf624 }, /* 0xf625 */ { false, 0xf625, 0xf625 }, /* 0xf626 */ { false, 0xf626, 0xf626 }, /* 0xf627 */ { false, 0xf627, 0xf627 }, /* 0xf628 */ { false, 0xf628, 0xf628 }, /* 0xf629 */ { false, 0xf629, 0xf629 }, /* 0xf62a */ { false, 0xf62a, 0xf62a }, /* 0xf62b */ { false, 0xf62b, 0xf62b }, /* 0xf62c */ { false, 0xf62c, 0xf62c }, /* 0xf62d */ { false, 0xf62d, 0xf62d }, /* 0xf62e */ { false, 0xf62e, 0xf62e }, /* 0xf62f */ { false, 0xf62f, 0xf62f }, /* 0xf630 */ { false, 0xf630, 0xf630 }, /* 0xf631 */ { false, 0xf631, 0xf631 }, /* 0xf632 */ { false, 0xf632, 0xf632 }, /* 0xf633 */ { false, 0xf633, 0xf633 }, /* 0xf634 */ { false, 0xf634, 0xf634 }, /* 0xf635 */ { false, 0xf635, 0xf635 }, /* 0xf636 */ { false, 0xf636, 0xf636 }, /* 0xf637 */ { false, 0xf637, 0xf637 }, /* 0xf638 */ { false, 0xf638, 0xf638 }, /* 0xf639 */ { false, 0xf639, 0xf639 }, /* 0xf63a */ { false, 0xf63a, 0xf63a }, /* 0xf63b */ { false, 0xf63b, 0xf63b }, /* 0xf63c */ { false, 0xf63c, 0xf63c }, /* 0xf63d */ { false, 0xf63d, 0xf63d }, /* 0xf63e */ { false, 0xf63e, 0xf63e }, /* 0xf63f */ { false, 0xf63f, 0xf63f }, /* 0xf640 */ { false, 0xf640, 0xf640 }, /* 0xf641 */ { false, 0xf641, 0xf641 }, /* 0xf642 */ { false, 0xf642, 0xf642 }, /* 0xf643 */ { false, 0xf643, 0xf643 }, /* 0xf644 */ { false, 0xf644, 0xf644 }, /* 0xf645 */ { false, 0xf645, 0xf645 }, /* 0xf646 */ { false, 0xf646, 0xf646 }, /* 0xf647 */ { false, 0xf647, 0xf647 }, /* 0xf648 */ { false, 0xf648, 0xf648 }, /* 0xf649 */ { false, 0xf649, 0xf649 }, /* 0xf64a */ { false, 0xf64a, 0xf64a }, /* 0xf64b */ { false, 0xf64b, 0xf64b }, /* 0xf64c */ { false, 0xf64c, 0xf64c }, /* 0xf64d */ { false, 0xf64d, 0xf64d }, /* 0xf64e */ { false, 0xf64e, 0xf64e }, /* 0xf64f */ { false, 0xf64f, 0xf64f }, /* 0xf650 */ { false, 0xf650, 0xf650 }, /* 0xf651 */ { false, 0xf651, 0xf651 }, /* 0xf652 */ { false, 0xf652, 0xf652 }, /* 0xf653 */ { false, 0xf653, 0xf653 }, /* 0xf654 */ { false, 0xf654, 0xf654 }, /* 0xf655 */ { false, 0xf655, 0xf655 }, /* 0xf656 */ { false, 0xf656, 0xf656 }, /* 0xf657 */ { false, 0xf657, 0xf657 }, /* 0xf658 */ { false, 0xf658, 0xf658 }, /* 0xf659 */ { false, 0xf659, 0xf659 }, /* 0xf65a */ { false, 0xf65a, 0xf65a }, /* 0xf65b */ { false, 0xf65b, 0xf65b }, /* 0xf65c */ { false, 0xf65c, 0xf65c }, /* 0xf65d */ { false, 0xf65d, 0xf65d }, /* 0xf65e */ { false, 0xf65e, 0xf65e }, /* 0xf65f */ { false, 0xf65f, 0xf65f }, /* 0xf660 */ { false, 0xf660, 0xf660 }, /* 0xf661 */ { false, 0xf661, 0xf661 }, /* 0xf662 */ { false, 0xf662, 0xf662 }, /* 0xf663 */ { false, 0xf663, 0xf663 }, /* 0xf664 */ { false, 0xf664, 0xf664 }, /* 0xf665 */ { false, 0xf665, 0xf665 }, /* 0xf666 */ { false, 0xf666, 0xf666 }, /* 0xf667 */ { false, 0xf667, 0xf667 }, /* 0xf668 */ { false, 0xf668, 0xf668 }, /* 0xf669 */ { false, 0xf669, 0xf669 }, /* 0xf66a */ { false, 0xf66a, 0xf66a }, /* 0xf66b */ { false, 0xf66b, 0xf66b }, /* 0xf66c */ { false, 0xf66c, 0xf66c }, /* 0xf66d */ { false, 0xf66d, 0xf66d }, /* 0xf66e */ { false, 0xf66e, 0xf66e }, /* 0xf66f */ { false, 0xf66f, 0xf66f }, /* 0xf670 */ { false, 0xf670, 0xf670 }, /* 0xf671 */ { false, 0xf671, 0xf671 }, /* 0xf672 */ { false, 0xf672, 0xf672 }, /* 0xf673 */ { false, 0xf673, 0xf673 }, /* 0xf674 */ { false, 0xf674, 0xf674 }, /* 0xf675 */ { false, 0xf675, 0xf675 }, /* 0xf676 */ { false, 0xf676, 0xf676 }, /* 0xf677 */ { false, 0xf677, 0xf677 }, /* 0xf678 */ { false, 0xf678, 0xf678 }, /* 0xf679 */ { false, 0xf679, 0xf679 }, /* 0xf67a */ { false, 0xf67a, 0xf67a }, /* 0xf67b */ { false, 0xf67b, 0xf67b }, /* 0xf67c */ { false, 0xf67c, 0xf67c }, /* 0xf67d */ { false, 0xf67d, 0xf67d }, /* 0xf67e */ { false, 0xf67e, 0xf67e }, /* 0xf67f */ { false, 0xf67f, 0xf67f }, /* 0xf680 */ { false, 0xf680, 0xf680 }, /* 0xf681 */ { false, 0xf681, 0xf681 }, /* 0xf682 */ { false, 0xf682, 0xf682 }, /* 0xf683 */ { false, 0xf683, 0xf683 }, /* 0xf684 */ { false, 0xf684, 0xf684 }, /* 0xf685 */ { false, 0xf685, 0xf685 }, /* 0xf686 */ { false, 0xf686, 0xf686 }, /* 0xf687 */ { false, 0xf687, 0xf687 }, /* 0xf688 */ { false, 0xf688, 0xf688 }, /* 0xf689 */ { false, 0xf689, 0xf689 }, /* 0xf68a */ { false, 0xf68a, 0xf68a }, /* 0xf68b */ { false, 0xf68b, 0xf68b }, /* 0xf68c */ { false, 0xf68c, 0xf68c }, /* 0xf68d */ { false, 0xf68d, 0xf68d }, /* 0xf68e */ { false, 0xf68e, 0xf68e }, /* 0xf68f */ { false, 0xf68f, 0xf68f }, /* 0xf690 */ { false, 0xf690, 0xf690 }, /* 0xf691 */ { false, 0xf691, 0xf691 }, /* 0xf692 */ { false, 0xf692, 0xf692 }, /* 0xf693 */ { false, 0xf693, 0xf693 }, /* 0xf694 */ { false, 0xf694, 0xf694 }, /* 0xf695 */ { false, 0xf695, 0xf695 }, /* 0xf696 */ { false, 0xf696, 0xf696 }, /* 0xf697 */ { false, 0xf697, 0xf697 }, /* 0xf698 */ { false, 0xf698, 0xf698 }, /* 0xf699 */ { false, 0xf699, 0xf699 }, /* 0xf69a */ { false, 0xf69a, 0xf69a }, /* 0xf69b */ { false, 0xf69b, 0xf69b }, /* 0xf69c */ { false, 0xf69c, 0xf69c }, /* 0xf69d */ { false, 0xf69d, 0xf69d }, /* 0xf69e */ { false, 0xf69e, 0xf69e }, /* 0xf69f */ { false, 0xf69f, 0xf69f }, /* 0xf6a0 */ { false, 0xf6a0, 0xf6a0 }, /* 0xf6a1 */ { false, 0xf6a1, 0xf6a1 }, /* 0xf6a2 */ { false, 0xf6a2, 0xf6a2 }, /* 0xf6a3 */ { false, 0xf6a3, 0xf6a3 }, /* 0xf6a4 */ { false, 0xf6a4, 0xf6a4 }, /* 0xf6a5 */ { false, 0xf6a5, 0xf6a5 }, /* 0xf6a6 */ { false, 0xf6a6, 0xf6a6 }, /* 0xf6a7 */ { false, 0xf6a7, 0xf6a7 }, /* 0xf6a8 */ { false, 0xf6a8, 0xf6a8 }, /* 0xf6a9 */ { false, 0xf6a9, 0xf6a9 }, /* 0xf6aa */ { false, 0xf6aa, 0xf6aa }, /* 0xf6ab */ { false, 0xf6ab, 0xf6ab }, /* 0xf6ac */ { false, 0xf6ac, 0xf6ac }, /* 0xf6ad */ { false, 0xf6ad, 0xf6ad }, /* 0xf6ae */ { false, 0xf6ae, 0xf6ae }, /* 0xf6af */ { false, 0xf6af, 0xf6af }, /* 0xf6b0 */ { false, 0xf6b0, 0xf6b0 }, /* 0xf6b1 */ { false, 0xf6b1, 0xf6b1 }, /* 0xf6b2 */ { false, 0xf6b2, 0xf6b2 }, /* 0xf6b3 */ { false, 0xf6b3, 0xf6b3 }, /* 0xf6b4 */ { false, 0xf6b4, 0xf6b4 }, /* 0xf6b5 */ { false, 0xf6b5, 0xf6b5 }, /* 0xf6b6 */ { false, 0xf6b6, 0xf6b6 }, /* 0xf6b7 */ { false, 0xf6b7, 0xf6b7 }, /* 0xf6b8 */ { false, 0xf6b8, 0xf6b8 }, /* 0xf6b9 */ { false, 0xf6b9, 0xf6b9 }, /* 0xf6ba */ { false, 0xf6ba, 0xf6ba }, /* 0xf6bb */ { false, 0xf6bb, 0xf6bb }, /* 0xf6bc */ { false, 0xf6bc, 0xf6bc }, /* 0xf6bd */ { false, 0xf6bd, 0xf6bd }, /* 0xf6be */ { false, 0xf6be, 0xf6be }, /* 0xf6bf */ { false, 0xf6bf, 0xf6bf }, /* 0xf6c0 */ { false, 0xf6c0, 0xf6c0 }, /* 0xf6c1 */ { false, 0xf6c1, 0xf6c1 }, /* 0xf6c2 */ { false, 0xf6c2, 0xf6c2 }, /* 0xf6c3 */ { false, 0xf6c3, 0xf6c3 }, /* 0xf6c4 */ { false, 0xf6c4, 0xf6c4 }, /* 0xf6c5 */ { false, 0xf6c5, 0xf6c5 }, /* 0xf6c6 */ { false, 0xf6c6, 0xf6c6 }, /* 0xf6c7 */ { false, 0xf6c7, 0xf6c7 }, /* 0xf6c8 */ { false, 0xf6c8, 0xf6c8 }, /* 0xf6c9 */ { false, 0xf6c9, 0xf6c9 }, /* 0xf6ca */ { false, 0xf6ca, 0xf6ca }, /* 0xf6cb */ { false, 0xf6cb, 0xf6cb }, /* 0xf6cc */ { false, 0xf6cc, 0xf6cc }, /* 0xf6cd */ { false, 0xf6cd, 0xf6cd }, /* 0xf6ce */ { false, 0xf6ce, 0xf6ce }, /* 0xf6cf */ { false, 0xf6cf, 0xf6cf }, /* 0xf6d0 */ { false, 0xf6d0, 0xf6d0 }, /* 0xf6d1 */ { false, 0xf6d1, 0xf6d1 }, /* 0xf6d2 */ { false, 0xf6d2, 0xf6d2 }, /* 0xf6d3 */ { false, 0xf6d3, 0xf6d3 }, /* 0xf6d4 */ { false, 0xf6d4, 0xf6d4 }, /* 0xf6d5 */ { false, 0xf6d5, 0xf6d5 }, /* 0xf6d6 */ { false, 0xf6d6, 0xf6d6 }, /* 0xf6d7 */ { false, 0xf6d7, 0xf6d7 }, /* 0xf6d8 */ { false, 0xf6d8, 0xf6d8 }, /* 0xf6d9 */ { false, 0xf6d9, 0xf6d9 }, /* 0xf6da */ { false, 0xf6da, 0xf6da }, /* 0xf6db */ { false, 0xf6db, 0xf6db }, /* 0xf6dc */ { false, 0xf6dc, 0xf6dc }, /* 0xf6dd */ { false, 0xf6dd, 0xf6dd }, /* 0xf6de */ { false, 0xf6de, 0xf6de }, /* 0xf6df */ { false, 0xf6df, 0xf6df }, /* 0xf6e0 */ { false, 0xf6e0, 0xf6e0 }, /* 0xf6e1 */ { false, 0xf6e1, 0xf6e1 }, /* 0xf6e2 */ { false, 0xf6e2, 0xf6e2 }, /* 0xf6e3 */ { false, 0xf6e3, 0xf6e3 }, /* 0xf6e4 */ { false, 0xf6e4, 0xf6e4 }, /* 0xf6e5 */ { false, 0xf6e5, 0xf6e5 }, /* 0xf6e6 */ { false, 0xf6e6, 0xf6e6 }, /* 0xf6e7 */ { false, 0xf6e7, 0xf6e7 }, /* 0xf6e8 */ { false, 0xf6e8, 0xf6e8 }, /* 0xf6e9 */ { false, 0xf6e9, 0xf6e9 }, /* 0xf6ea */ { false, 0xf6ea, 0xf6ea }, /* 0xf6eb */ { false, 0xf6eb, 0xf6eb }, /* 0xf6ec */ { false, 0xf6ec, 0xf6ec }, /* 0xf6ed */ { false, 0xf6ed, 0xf6ed }, /* 0xf6ee */ { false, 0xf6ee, 0xf6ee }, /* 0xf6ef */ { false, 0xf6ef, 0xf6ef }, /* 0xf6f0 */ { false, 0xf6f0, 0xf6f0 }, /* 0xf6f1 */ { false, 0xf6f1, 0xf6f1 }, /* 0xf6f2 */ { false, 0xf6f2, 0xf6f2 }, /* 0xf6f3 */ { false, 0xf6f3, 0xf6f3 }, /* 0xf6f4 */ { false, 0xf6f4, 0xf6f4 }, /* 0xf6f5 */ { false, 0xf6f5, 0xf6f5 }, /* 0xf6f6 */ { false, 0xf6f6, 0xf6f6 }, /* 0xf6f7 */ { false, 0xf6f7, 0xf6f7 }, /* 0xf6f8 */ { false, 0xf6f8, 0xf6f8 }, /* 0xf6f9 */ { false, 0xf6f9, 0xf6f9 }, /* 0xf6fa */ { false, 0xf6fa, 0xf6fa }, /* 0xf6fb */ { false, 0xf6fb, 0xf6fb }, /* 0xf6fc */ { false, 0xf6fc, 0xf6fc }, /* 0xf6fd */ { false, 0xf6fd, 0xf6fd }, /* 0xf6fe */ { false, 0xf6fe, 0xf6fe }, /* 0xf6ff */ { false, 0xf6ff, 0xf6ff }, /* 0xf700 */ { false, 0xf700, 0xf700 }, /* 0xf701 */ { false, 0xf701, 0xf701 }, /* 0xf702 */ { false, 0xf702, 0xf702 }, /* 0xf703 */ { false, 0xf703, 0xf703 }, /* 0xf704 */ { false, 0xf704, 0xf704 }, /* 0xf705 */ { false, 0xf705, 0xf705 }, /* 0xf706 */ { false, 0xf706, 0xf706 }, /* 0xf707 */ { false, 0xf707, 0xf707 }, /* 0xf708 */ { false, 0xf708, 0xf708 }, /* 0xf709 */ { false, 0xf709, 0xf709 }, /* 0xf70a */ { false, 0xf70a, 0xf70a }, /* 0xf70b */ { false, 0xf70b, 0xf70b }, /* 0xf70c */ { false, 0xf70c, 0xf70c }, /* 0xf70d */ { false, 0xf70d, 0xf70d }, /* 0xf70e */ { false, 0xf70e, 0xf70e }, /* 0xf70f */ { false, 0xf70f, 0xf70f }, /* 0xf710 */ { false, 0xf710, 0xf710 }, /* 0xf711 */ { false, 0xf711, 0xf711 }, /* 0xf712 */ { false, 0xf712, 0xf712 }, /* 0xf713 */ { false, 0xf713, 0xf713 }, /* 0xf714 */ { false, 0xf714, 0xf714 }, /* 0xf715 */ { false, 0xf715, 0xf715 }, /* 0xf716 */ { false, 0xf716, 0xf716 }, /* 0xf717 */ { false, 0xf717, 0xf717 }, /* 0xf718 */ { false, 0xf718, 0xf718 }, /* 0xf719 */ { false, 0xf719, 0xf719 }, /* 0xf71a */ { false, 0xf71a, 0xf71a }, /* 0xf71b */ { false, 0xf71b, 0xf71b }, /* 0xf71c */ { false, 0xf71c, 0xf71c }, /* 0xf71d */ { false, 0xf71d, 0xf71d }, /* 0xf71e */ { false, 0xf71e, 0xf71e }, /* 0xf71f */ { false, 0xf71f, 0xf71f }, /* 0xf720 */ { false, 0xf720, 0xf720 }, /* 0xf721 */ { false, 0xf721, 0xf721 }, /* 0xf722 */ { false, 0xf722, 0xf722 }, /* 0xf723 */ { false, 0xf723, 0xf723 }, /* 0xf724 */ { false, 0xf724, 0xf724 }, /* 0xf725 */ { false, 0xf725, 0xf725 }, /* 0xf726 */ { false, 0xf726, 0xf726 }, /* 0xf727 */ { false, 0xf727, 0xf727 }, /* 0xf728 */ { false, 0xf728, 0xf728 }, /* 0xf729 */ { false, 0xf729, 0xf729 }, /* 0xf72a */ { false, 0xf72a, 0xf72a }, /* 0xf72b */ { false, 0xf72b, 0xf72b }, /* 0xf72c */ { false, 0xf72c, 0xf72c }, /* 0xf72d */ { false, 0xf72d, 0xf72d }, /* 0xf72e */ { false, 0xf72e, 0xf72e }, /* 0xf72f */ { false, 0xf72f, 0xf72f }, /* 0xf730 */ { false, 0xf730, 0xf730 }, /* 0xf731 */ { false, 0xf731, 0xf731 }, /* 0xf732 */ { false, 0xf732, 0xf732 }, /* 0xf733 */ { false, 0xf733, 0xf733 }, /* 0xf734 */ { false, 0xf734, 0xf734 }, /* 0xf735 */ { false, 0xf735, 0xf735 }, /* 0xf736 */ { false, 0xf736, 0xf736 }, /* 0xf737 */ { false, 0xf737, 0xf737 }, /* 0xf738 */ { false, 0xf738, 0xf738 }, /* 0xf739 */ { false, 0xf739, 0xf739 }, /* 0xf73a */ { false, 0xf73a, 0xf73a }, /* 0xf73b */ { false, 0xf73b, 0xf73b }, /* 0xf73c */ { false, 0xf73c, 0xf73c }, /* 0xf73d */ { false, 0xf73d, 0xf73d }, /* 0xf73e */ { false, 0xf73e, 0xf73e }, /* 0xf73f */ { false, 0xf73f, 0xf73f }, /* 0xf740 */ { false, 0xf740, 0xf740 }, /* 0xf741 */ { false, 0xf741, 0xf741 }, /* 0xf742 */ { false, 0xf742, 0xf742 }, /* 0xf743 */ { false, 0xf743, 0xf743 }, /* 0xf744 */ { false, 0xf744, 0xf744 }, /* 0xf745 */ { false, 0xf745, 0xf745 }, /* 0xf746 */ { false, 0xf746, 0xf746 }, /* 0xf747 */ { false, 0xf747, 0xf747 }, /* 0xf748 */ { false, 0xf748, 0xf748 }, /* 0xf749 */ { false, 0xf749, 0xf749 }, /* 0xf74a */ { false, 0xf74a, 0xf74a }, /* 0xf74b */ { false, 0xf74b, 0xf74b }, /* 0xf74c */ { false, 0xf74c, 0xf74c }, /* 0xf74d */ { false, 0xf74d, 0xf74d }, /* 0xf74e */ { false, 0xf74e, 0xf74e }, /* 0xf74f */ { false, 0xf74f, 0xf74f }, /* 0xf750 */ { false, 0xf750, 0xf750 }, /* 0xf751 */ { false, 0xf751, 0xf751 }, /* 0xf752 */ { false, 0xf752, 0xf752 }, /* 0xf753 */ { false, 0xf753, 0xf753 }, /* 0xf754 */ { false, 0xf754, 0xf754 }, /* 0xf755 */ { false, 0xf755, 0xf755 }, /* 0xf756 */ { false, 0xf756, 0xf756 }, /* 0xf757 */ { false, 0xf757, 0xf757 }, /* 0xf758 */ { false, 0xf758, 0xf758 }, /* 0xf759 */ { false, 0xf759, 0xf759 }, /* 0xf75a */ { false, 0xf75a, 0xf75a }, /* 0xf75b */ { false, 0xf75b, 0xf75b }, /* 0xf75c */ { false, 0xf75c, 0xf75c }, /* 0xf75d */ { false, 0xf75d, 0xf75d }, /* 0xf75e */ { false, 0xf75e, 0xf75e }, /* 0xf75f */ { false, 0xf75f, 0xf75f }, /* 0xf760 */ { false, 0xf760, 0xf760 }, /* 0xf761 */ { false, 0xf761, 0xf761 }, /* 0xf762 */ { false, 0xf762, 0xf762 }, /* 0xf763 */ { false, 0xf763, 0xf763 }, /* 0xf764 */ { false, 0xf764, 0xf764 }, /* 0xf765 */ { false, 0xf765, 0xf765 }, /* 0xf766 */ { false, 0xf766, 0xf766 }, /* 0xf767 */ { false, 0xf767, 0xf767 }, /* 0xf768 */ { false, 0xf768, 0xf768 }, /* 0xf769 */ { false, 0xf769, 0xf769 }, /* 0xf76a */ { false, 0xf76a, 0xf76a }, /* 0xf76b */ { false, 0xf76b, 0xf76b }, /* 0xf76c */ { false, 0xf76c, 0xf76c }, /* 0xf76d */ { false, 0xf76d, 0xf76d }, /* 0xf76e */ { false, 0xf76e, 0xf76e }, /* 0xf76f */ { false, 0xf76f, 0xf76f }, /* 0xf770 */ { false, 0xf770, 0xf770 }, /* 0xf771 */ { false, 0xf771, 0xf771 }, /* 0xf772 */ { false, 0xf772, 0xf772 }, /* 0xf773 */ { false, 0xf773, 0xf773 }, /* 0xf774 */ { false, 0xf774, 0xf774 }, /* 0xf775 */ { false, 0xf775, 0xf775 }, /* 0xf776 */ { false, 0xf776, 0xf776 }, /* 0xf777 */ { false, 0xf777, 0xf777 }, /* 0xf778 */ { false, 0xf778, 0xf778 }, /* 0xf779 */ { false, 0xf779, 0xf779 }, /* 0xf77a */ { false, 0xf77a, 0xf77a }, /* 0xf77b */ { false, 0xf77b, 0xf77b }, /* 0xf77c */ { false, 0xf77c, 0xf77c }, /* 0xf77d */ { false, 0xf77d, 0xf77d }, /* 0xf77e */ { false, 0xf77e, 0xf77e }, /* 0xf77f */ { false, 0xf77f, 0xf77f }, /* 0xf780 */ { false, 0xf780, 0xf780 }, /* 0xf781 */ { false, 0xf781, 0xf781 }, /* 0xf782 */ { false, 0xf782, 0xf782 }, /* 0xf783 */ { false, 0xf783, 0xf783 }, /* 0xf784 */ { false, 0xf784, 0xf784 }, /* 0xf785 */ { false, 0xf785, 0xf785 }, /* 0xf786 */ { false, 0xf786, 0xf786 }, /* 0xf787 */ { false, 0xf787, 0xf787 }, /* 0xf788 */ { false, 0xf788, 0xf788 }, /* 0xf789 */ { false, 0xf789, 0xf789 }, /* 0xf78a */ { false, 0xf78a, 0xf78a }, /* 0xf78b */ { false, 0xf78b, 0xf78b }, /* 0xf78c */ { false, 0xf78c, 0xf78c }, /* 0xf78d */ { false, 0xf78d, 0xf78d }, /* 0xf78e */ { false, 0xf78e, 0xf78e }, /* 0xf78f */ { false, 0xf78f, 0xf78f }, /* 0xf790 */ { false, 0xf790, 0xf790 }, /* 0xf791 */ { false, 0xf791, 0xf791 }, /* 0xf792 */ { false, 0xf792, 0xf792 }, /* 0xf793 */ { false, 0xf793, 0xf793 }, /* 0xf794 */ { false, 0xf794, 0xf794 }, /* 0xf795 */ { false, 0xf795, 0xf795 }, /* 0xf796 */ { false, 0xf796, 0xf796 }, /* 0xf797 */ { false, 0xf797, 0xf797 }, /* 0xf798 */ { false, 0xf798, 0xf798 }, /* 0xf799 */ { false, 0xf799, 0xf799 }, /* 0xf79a */ { false, 0xf79a, 0xf79a }, /* 0xf79b */ { false, 0xf79b, 0xf79b }, /* 0xf79c */ { false, 0xf79c, 0xf79c }, /* 0xf79d */ { false, 0xf79d, 0xf79d }, /* 0xf79e */ { false, 0xf79e, 0xf79e }, /* 0xf79f */ { false, 0xf79f, 0xf79f }, /* 0xf7a0 */ { false, 0xf7a0, 0xf7a0 }, /* 0xf7a1 */ { false, 0xf7a1, 0xf7a1 }, /* 0xf7a2 */ { false, 0xf7a2, 0xf7a2 }, /* 0xf7a3 */ { false, 0xf7a3, 0xf7a3 }, /* 0xf7a4 */ { false, 0xf7a4, 0xf7a4 }, /* 0xf7a5 */ { false, 0xf7a5, 0xf7a5 }, /* 0xf7a6 */ { false, 0xf7a6, 0xf7a6 }, /* 0xf7a7 */ { false, 0xf7a7, 0xf7a7 }, /* 0xf7a8 */ { false, 0xf7a8, 0xf7a8 }, /* 0xf7a9 */ { false, 0xf7a9, 0xf7a9 }, /* 0xf7aa */ { false, 0xf7aa, 0xf7aa }, /* 0xf7ab */ { false, 0xf7ab, 0xf7ab }, /* 0xf7ac */ { false, 0xf7ac, 0xf7ac }, /* 0xf7ad */ { false, 0xf7ad, 0xf7ad }, /* 0xf7ae */ { false, 0xf7ae, 0xf7ae }, /* 0xf7af */ { false, 0xf7af, 0xf7af }, /* 0xf7b0 */ { false, 0xf7b0, 0xf7b0 }, /* 0xf7b1 */ { false, 0xf7b1, 0xf7b1 }, /* 0xf7b2 */ { false, 0xf7b2, 0xf7b2 }, /* 0xf7b3 */ { false, 0xf7b3, 0xf7b3 }, /* 0xf7b4 */ { false, 0xf7b4, 0xf7b4 }, /* 0xf7b5 */ { false, 0xf7b5, 0xf7b5 }, /* 0xf7b6 */ { false, 0xf7b6, 0xf7b6 }, /* 0xf7b7 */ { false, 0xf7b7, 0xf7b7 }, /* 0xf7b8 */ { false, 0xf7b8, 0xf7b8 }, /* 0xf7b9 */ { false, 0xf7b9, 0xf7b9 }, /* 0xf7ba */ { false, 0xf7ba, 0xf7ba }, /* 0xf7bb */ { false, 0xf7bb, 0xf7bb }, /* 0xf7bc */ { false, 0xf7bc, 0xf7bc }, /* 0xf7bd */ { false, 0xf7bd, 0xf7bd }, /* 0xf7be */ { false, 0xf7be, 0xf7be }, /* 0xf7bf */ { false, 0xf7bf, 0xf7bf }, /* 0xf7c0 */ { false, 0xf7c0, 0xf7c0 }, /* 0xf7c1 */ { false, 0xf7c1, 0xf7c1 }, /* 0xf7c2 */ { false, 0xf7c2, 0xf7c2 }, /* 0xf7c3 */ { false, 0xf7c3, 0xf7c3 }, /* 0xf7c4 */ { false, 0xf7c4, 0xf7c4 }, /* 0xf7c5 */ { false, 0xf7c5, 0xf7c5 }, /* 0xf7c6 */ { false, 0xf7c6, 0xf7c6 }, /* 0xf7c7 */ { false, 0xf7c7, 0xf7c7 }, /* 0xf7c8 */ { false, 0xf7c8, 0xf7c8 }, /* 0xf7c9 */ { false, 0xf7c9, 0xf7c9 }, /* 0xf7ca */ { false, 0xf7ca, 0xf7ca }, /* 0xf7cb */ { false, 0xf7cb, 0xf7cb }, /* 0xf7cc */ { false, 0xf7cc, 0xf7cc }, /* 0xf7cd */ { false, 0xf7cd, 0xf7cd }, /* 0xf7ce */ { false, 0xf7ce, 0xf7ce }, /* 0xf7cf */ { false, 0xf7cf, 0xf7cf }, /* 0xf7d0 */ { false, 0xf7d0, 0xf7d0 }, /* 0xf7d1 */ { false, 0xf7d1, 0xf7d1 }, /* 0xf7d2 */ { false, 0xf7d2, 0xf7d2 }, /* 0xf7d3 */ { false, 0xf7d3, 0xf7d3 }, /* 0xf7d4 */ { false, 0xf7d4, 0xf7d4 }, /* 0xf7d5 */ { false, 0xf7d5, 0xf7d5 }, /* 0xf7d6 */ { false, 0xf7d6, 0xf7d6 }, /* 0xf7d7 */ { false, 0xf7d7, 0xf7d7 }, /* 0xf7d8 */ { false, 0xf7d8, 0xf7d8 }, /* 0xf7d9 */ { false, 0xf7d9, 0xf7d9 }, /* 0xf7da */ { false, 0xf7da, 0xf7da }, /* 0xf7db */ { false, 0xf7db, 0xf7db }, /* 0xf7dc */ { false, 0xf7dc, 0xf7dc }, /* 0xf7dd */ { false, 0xf7dd, 0xf7dd }, /* 0xf7de */ { false, 0xf7de, 0xf7de }, /* 0xf7df */ { false, 0xf7df, 0xf7df }, /* 0xf7e0 */ { false, 0xf7e0, 0xf7e0 }, /* 0xf7e1 */ { false, 0xf7e1, 0xf7e1 }, /* 0xf7e2 */ { false, 0xf7e2, 0xf7e2 }, /* 0xf7e3 */ { false, 0xf7e3, 0xf7e3 }, /* 0xf7e4 */ { false, 0xf7e4, 0xf7e4 }, /* 0xf7e5 */ { false, 0xf7e5, 0xf7e5 }, /* 0xf7e6 */ { false, 0xf7e6, 0xf7e6 }, /* 0xf7e7 */ { false, 0xf7e7, 0xf7e7 }, /* 0xf7e8 */ { false, 0xf7e8, 0xf7e8 }, /* 0xf7e9 */ { false, 0xf7e9, 0xf7e9 }, /* 0xf7ea */ { false, 0xf7ea, 0xf7ea }, /* 0xf7eb */ { false, 0xf7eb, 0xf7eb }, /* 0xf7ec */ { false, 0xf7ec, 0xf7ec }, /* 0xf7ed */ { false, 0xf7ed, 0xf7ed }, /* 0xf7ee */ { false, 0xf7ee, 0xf7ee }, /* 0xf7ef */ { false, 0xf7ef, 0xf7ef }, /* 0xf7f0 */ { false, 0xf7f0, 0xf7f0 }, /* 0xf7f1 */ { false, 0xf7f1, 0xf7f1 }, /* 0xf7f2 */ { false, 0xf7f2, 0xf7f2 }, /* 0xf7f3 */ { false, 0xf7f3, 0xf7f3 }, /* 0xf7f4 */ { false, 0xf7f4, 0xf7f4 }, /* 0xf7f5 */ { false, 0xf7f5, 0xf7f5 }, /* 0xf7f6 */ { false, 0xf7f6, 0xf7f6 }, /* 0xf7f7 */ { false, 0xf7f7, 0xf7f7 }, /* 0xf7f8 */ { false, 0xf7f8, 0xf7f8 }, /* 0xf7f9 */ { false, 0xf7f9, 0xf7f9 }, /* 0xf7fa */ { false, 0xf7fa, 0xf7fa }, /* 0xf7fb */ { false, 0xf7fb, 0xf7fb }, /* 0xf7fc */ { false, 0xf7fc, 0xf7fc }, /* 0xf7fd */ { false, 0xf7fd, 0xf7fd }, /* 0xf7fe */ { false, 0xf7fe, 0xf7fe }, /* 0xf7ff */ { false, 0xf7ff, 0xf7ff }, /* 0xf800 */ { false, 0xf800, 0xf800 }, /* 0xf801 */ { false, 0xf801, 0xf801 }, /* 0xf802 */ { false, 0xf802, 0xf802 }, /* 0xf803 */ { false, 0xf803, 0xf803 }, /* 0xf804 */ { false, 0xf804, 0xf804 }, /* 0xf805 */ { false, 0xf805, 0xf805 }, /* 0xf806 */ { false, 0xf806, 0xf806 }, /* 0xf807 */ { false, 0xf807, 0xf807 }, /* 0xf808 */ { false, 0xf808, 0xf808 }, /* 0xf809 */ { false, 0xf809, 0xf809 }, /* 0xf80a */ { false, 0xf80a, 0xf80a }, /* 0xf80b */ { false, 0xf80b, 0xf80b }, /* 0xf80c */ { false, 0xf80c, 0xf80c }, /* 0xf80d */ { false, 0xf80d, 0xf80d }, /* 0xf80e */ { false, 0xf80e, 0xf80e }, /* 0xf80f */ { false, 0xf80f, 0xf80f }, /* 0xf810 */ { false, 0xf810, 0xf810 }, /* 0xf811 */ { false, 0xf811, 0xf811 }, /* 0xf812 */ { false, 0xf812, 0xf812 }, /* 0xf813 */ { false, 0xf813, 0xf813 }, /* 0xf814 */ { false, 0xf814, 0xf814 }, /* 0xf815 */ { false, 0xf815, 0xf815 }, /* 0xf816 */ { false, 0xf816, 0xf816 }, /* 0xf817 */ { false, 0xf817, 0xf817 }, /* 0xf818 */ { false, 0xf818, 0xf818 }, /* 0xf819 */ { false, 0xf819, 0xf819 }, /* 0xf81a */ { false, 0xf81a, 0xf81a }, /* 0xf81b */ { false, 0xf81b, 0xf81b }, /* 0xf81c */ { false, 0xf81c, 0xf81c }, /* 0xf81d */ { false, 0xf81d, 0xf81d }, /* 0xf81e */ { false, 0xf81e, 0xf81e }, /* 0xf81f */ { false, 0xf81f, 0xf81f }, /* 0xf820 */ { false, 0xf820, 0xf820 }, /* 0xf821 */ { false, 0xf821, 0xf821 }, /* 0xf822 */ { false, 0xf822, 0xf822 }, /* 0xf823 */ { false, 0xf823, 0xf823 }, /* 0xf824 */ { false, 0xf824, 0xf824 }, /* 0xf825 */ { false, 0xf825, 0xf825 }, /* 0xf826 */ { false, 0xf826, 0xf826 }, /* 0xf827 */ { false, 0xf827, 0xf827 }, /* 0xf828 */ { false, 0xf828, 0xf828 }, /* 0xf829 */ { false, 0xf829, 0xf829 }, /* 0xf82a */ { false, 0xf82a, 0xf82a }, /* 0xf82b */ { false, 0xf82b, 0xf82b }, /* 0xf82c */ { false, 0xf82c, 0xf82c }, /* 0xf82d */ { false, 0xf82d, 0xf82d }, /* 0xf82e */ { false, 0xf82e, 0xf82e }, /* 0xf82f */ { false, 0xf82f, 0xf82f }, /* 0xf830 */ { false, 0xf830, 0xf830 }, /* 0xf831 */ { false, 0xf831, 0xf831 }, /* 0xf832 */ { false, 0xf832, 0xf832 }, /* 0xf833 */ { false, 0xf833, 0xf833 }, /* 0xf834 */ { false, 0xf834, 0xf834 }, /* 0xf835 */ { false, 0xf835, 0xf835 }, /* 0xf836 */ { false, 0xf836, 0xf836 }, /* 0xf837 */ { false, 0xf837, 0xf837 }, /* 0xf838 */ { false, 0xf838, 0xf838 }, /* 0xf839 */ { false, 0xf839, 0xf839 }, /* 0xf83a */ { false, 0xf83a, 0xf83a }, /* 0xf83b */ { false, 0xf83b, 0xf83b }, /* 0xf83c */ { false, 0xf83c, 0xf83c }, /* 0xf83d */ { false, 0xf83d, 0xf83d }, /* 0xf83e */ { false, 0xf83e, 0xf83e }, /* 0xf83f */ { false, 0xf83f, 0xf83f }, /* 0xf840 */ { false, 0xf840, 0xf840 }, /* 0xf841 */ { false, 0xf841, 0xf841 }, /* 0xf842 */ { false, 0xf842, 0xf842 }, /* 0xf843 */ { false, 0xf843, 0xf843 }, /* 0xf844 */ { false, 0xf844, 0xf844 }, /* 0xf845 */ { false, 0xf845, 0xf845 }, /* 0xf846 */ { false, 0xf846, 0xf846 }, /* 0xf847 */ { false, 0xf847, 0xf847 }, /* 0xf848 */ { false, 0xf848, 0xf848 }, /* 0xf849 */ { false, 0xf849, 0xf849 }, /* 0xf84a */ { false, 0xf84a, 0xf84a }, /* 0xf84b */ { false, 0xf84b, 0xf84b }, /* 0xf84c */ { false, 0xf84c, 0xf84c }, /* 0xf84d */ { false, 0xf84d, 0xf84d }, /* 0xf84e */ { false, 0xf84e, 0xf84e }, /* 0xf84f */ { false, 0xf84f, 0xf84f }, /* 0xf850 */ { false, 0xf850, 0xf850 }, /* 0xf851 */ { false, 0xf851, 0xf851 }, /* 0xf852 */ { false, 0xf852, 0xf852 }, /* 0xf853 */ { false, 0xf853, 0xf853 }, /* 0xf854 */ { false, 0xf854, 0xf854 }, /* 0xf855 */ { false, 0xf855, 0xf855 }, /* 0xf856 */ { false, 0xf856, 0xf856 }, /* 0xf857 */ { false, 0xf857, 0xf857 }, /* 0xf858 */ { false, 0xf858, 0xf858 }, /* 0xf859 */ { false, 0xf859, 0xf859 }, /* 0xf85a */ { false, 0xf85a, 0xf85a }, /* 0xf85b */ { false, 0xf85b, 0xf85b }, /* 0xf85c */ { false, 0xf85c, 0xf85c }, /* 0xf85d */ { false, 0xf85d, 0xf85d }, /* 0xf85e */ { false, 0xf85e, 0xf85e }, /* 0xf85f */ { false, 0xf85f, 0xf85f }, /* 0xf860 */ { false, 0xf860, 0xf860 }, /* 0xf861 */ { false, 0xf861, 0xf861 }, /* 0xf862 */ { false, 0xf862, 0xf862 }, /* 0xf863 */ { false, 0xf863, 0xf863 }, /* 0xf864 */ { false, 0xf864, 0xf864 }, /* 0xf865 */ { false, 0xf865, 0xf865 }, /* 0xf866 */ { false, 0xf866, 0xf866 }, /* 0xf867 */ { false, 0xf867, 0xf867 }, /* 0xf868 */ { false, 0xf868, 0xf868 }, /* 0xf869 */ { false, 0xf869, 0xf869 }, /* 0xf86a */ { false, 0xf86a, 0xf86a }, /* 0xf86b */ { false, 0xf86b, 0xf86b }, /* 0xf86c */ { false, 0xf86c, 0xf86c }, /* 0xf86d */ { false, 0xf86d, 0xf86d }, /* 0xf86e */ { false, 0xf86e, 0xf86e }, /* 0xf86f */ { false, 0xf86f, 0xf86f }, /* 0xf870 */ { false, 0xf870, 0xf870 }, /* 0xf871 */ { false, 0xf871, 0xf871 }, /* 0xf872 */ { false, 0xf872, 0xf872 }, /* 0xf873 */ { false, 0xf873, 0xf873 }, /* 0xf874 */ { false, 0xf874, 0xf874 }, /* 0xf875 */ { false, 0xf875, 0xf875 }, /* 0xf876 */ { false, 0xf876, 0xf876 }, /* 0xf877 */ { false, 0xf877, 0xf877 }, /* 0xf878 */ { false, 0xf878, 0xf878 }, /* 0xf879 */ { false, 0xf879, 0xf879 }, /* 0xf87a */ { false, 0xf87a, 0xf87a }, /* 0xf87b */ { false, 0xf87b, 0xf87b }, /* 0xf87c */ { false, 0xf87c, 0xf87c }, /* 0xf87d */ { false, 0xf87d, 0xf87d }, /* 0xf87e */ { false, 0xf87e, 0xf87e }, /* 0xf87f */ { false, 0xf87f, 0xf87f }, /* 0xf880 */ { false, 0xf880, 0xf880 }, /* 0xf881 */ { false, 0xf881, 0xf881 }, /* 0xf882 */ { false, 0xf882, 0xf882 }, /* 0xf883 */ { false, 0xf883, 0xf883 }, /* 0xf884 */ { false, 0xf884, 0xf884 }, /* 0xf885 */ { false, 0xf885, 0xf885 }, /* 0xf886 */ { false, 0xf886, 0xf886 }, /* 0xf887 */ { false, 0xf887, 0xf887 }, /* 0xf888 */ { false, 0xf888, 0xf888 }, /* 0xf889 */ { false, 0xf889, 0xf889 }, /* 0xf88a */ { false, 0xf88a, 0xf88a }, /* 0xf88b */ { false, 0xf88b, 0xf88b }, /* 0xf88c */ { false, 0xf88c, 0xf88c }, /* 0xf88d */ { false, 0xf88d, 0xf88d }, /* 0xf88e */ { false, 0xf88e, 0xf88e }, /* 0xf88f */ { false, 0xf88f, 0xf88f }, /* 0xf890 */ { false, 0xf890, 0xf890 }, /* 0xf891 */ { false, 0xf891, 0xf891 }, /* 0xf892 */ { false, 0xf892, 0xf892 }, /* 0xf893 */ { false, 0xf893, 0xf893 }, /* 0xf894 */ { false, 0xf894, 0xf894 }, /* 0xf895 */ { false, 0xf895, 0xf895 }, /* 0xf896 */ { false, 0xf896, 0xf896 }, /* 0xf897 */ { false, 0xf897, 0xf897 }, /* 0xf898 */ { false, 0xf898, 0xf898 }, /* 0xf899 */ { false, 0xf899, 0xf899 }, /* 0xf89a */ { false, 0xf89a, 0xf89a }, /* 0xf89b */ { false, 0xf89b, 0xf89b }, /* 0xf89c */ { false, 0xf89c, 0xf89c }, /* 0xf89d */ { false, 0xf89d, 0xf89d }, /* 0xf89e */ { false, 0xf89e, 0xf89e }, /* 0xf89f */ { false, 0xf89f, 0xf89f }, /* 0xf8a0 */ { false, 0xf8a0, 0xf8a0 }, /* 0xf8a1 */ { false, 0xf8a1, 0xf8a1 }, /* 0xf8a2 */ { false, 0xf8a2, 0xf8a2 }, /* 0xf8a3 */ { false, 0xf8a3, 0xf8a3 }, /* 0xf8a4 */ { false, 0xf8a4, 0xf8a4 }, /* 0xf8a5 */ { false, 0xf8a5, 0xf8a5 }, /* 0xf8a6 */ { false, 0xf8a6, 0xf8a6 }, /* 0xf8a7 */ { false, 0xf8a7, 0xf8a7 }, /* 0xf8a8 */ { false, 0xf8a8, 0xf8a8 }, /* 0xf8a9 */ { false, 0xf8a9, 0xf8a9 }, /* 0xf8aa */ { false, 0xf8aa, 0xf8aa }, /* 0xf8ab */ { false, 0xf8ab, 0xf8ab }, /* 0xf8ac */ { false, 0xf8ac, 0xf8ac }, /* 0xf8ad */ { false, 0xf8ad, 0xf8ad }, /* 0xf8ae */ { false, 0xf8ae, 0xf8ae }, /* 0xf8af */ { false, 0xf8af, 0xf8af }, /* 0xf8b0 */ { false, 0xf8b0, 0xf8b0 }, /* 0xf8b1 */ { false, 0xf8b1, 0xf8b1 }, /* 0xf8b2 */ { false, 0xf8b2, 0xf8b2 }, /* 0xf8b3 */ { false, 0xf8b3, 0xf8b3 }, /* 0xf8b4 */ { false, 0xf8b4, 0xf8b4 }, /* 0xf8b5 */ { false, 0xf8b5, 0xf8b5 }, /* 0xf8b6 */ { false, 0xf8b6, 0xf8b6 }, /* 0xf8b7 */ { false, 0xf8b7, 0xf8b7 }, /* 0xf8b8 */ { false, 0xf8b8, 0xf8b8 }, /* 0xf8b9 */ { false, 0xf8b9, 0xf8b9 }, /* 0xf8ba */ { false, 0xf8ba, 0xf8ba }, /* 0xf8bb */ { false, 0xf8bb, 0xf8bb }, /* 0xf8bc */ { false, 0xf8bc, 0xf8bc }, /* 0xf8bd */ { false, 0xf8bd, 0xf8bd }, /* 0xf8be */ { false, 0xf8be, 0xf8be }, /* 0xf8bf */ { false, 0xf8bf, 0xf8bf }, /* 0xf8c0 */ { false, 0xf8c0, 0xf8c0 }, /* 0xf8c1 */ { false, 0xf8c1, 0xf8c1 }, /* 0xf8c2 */ { false, 0xf8c2, 0xf8c2 }, /* 0xf8c3 */ { false, 0xf8c3, 0xf8c3 }, /* 0xf8c4 */ { false, 0xf8c4, 0xf8c4 }, /* 0xf8c5 */ { false, 0xf8c5, 0xf8c5 }, /* 0xf8c6 */ { false, 0xf8c6, 0xf8c6 }, /* 0xf8c7 */ { false, 0xf8c7, 0xf8c7 }, /* 0xf8c8 */ { false, 0xf8c8, 0xf8c8 }, /* 0xf8c9 */ { false, 0xf8c9, 0xf8c9 }, /* 0xf8ca */ { false, 0xf8ca, 0xf8ca }, /* 0xf8cb */ { false, 0xf8cb, 0xf8cb }, /* 0xf8cc */ { false, 0xf8cc, 0xf8cc }, /* 0xf8cd */ { false, 0xf8cd, 0xf8cd }, /* 0xf8ce */ { false, 0xf8ce, 0xf8ce }, /* 0xf8cf */ { false, 0xf8cf, 0xf8cf }, /* 0xf8d0 */ { false, 0xf8d0, 0xf8d0 }, /* 0xf8d1 */ { false, 0xf8d1, 0xf8d1 }, /* 0xf8d2 */ { false, 0xf8d2, 0xf8d2 }, /* 0xf8d3 */ { false, 0xf8d3, 0xf8d3 }, /* 0xf8d4 */ { false, 0xf8d4, 0xf8d4 }, /* 0xf8d5 */ { false, 0xf8d5, 0xf8d5 }, /* 0xf8d6 */ { false, 0xf8d6, 0xf8d6 }, /* 0xf8d7 */ { false, 0xf8d7, 0xf8d7 }, /* 0xf8d8 */ { false, 0xf8d8, 0xf8d8 }, /* 0xf8d9 */ { false, 0xf8d9, 0xf8d9 }, /* 0xf8da */ { false, 0xf8da, 0xf8da }, /* 0xf8db */ { false, 0xf8db, 0xf8db }, /* 0xf8dc */ { false, 0xf8dc, 0xf8dc }, /* 0xf8dd */ { false, 0xf8dd, 0xf8dd }, /* 0xf8de */ { false, 0xf8de, 0xf8de }, /* 0xf8df */ { false, 0xf8df, 0xf8df }, /* 0xf8e0 */ { false, 0xf8e0, 0xf8e0 }, /* 0xf8e1 */ { false, 0xf8e1, 0xf8e1 }, /* 0xf8e2 */ { false, 0xf8e2, 0xf8e2 }, /* 0xf8e3 */ { false, 0xf8e3, 0xf8e3 }, /* 0xf8e4 */ { false, 0xf8e4, 0xf8e4 }, /* 0xf8e5 */ { false, 0xf8e5, 0xf8e5 }, /* 0xf8e6 */ { false, 0xf8e6, 0xf8e6 }, /* 0xf8e7 */ { false, 0xf8e7, 0xf8e7 }, /* 0xf8e8 */ { false, 0xf8e8, 0xf8e8 }, /* 0xf8e9 */ { false, 0xf8e9, 0xf8e9 }, /* 0xf8ea */ { false, 0xf8ea, 0xf8ea }, /* 0xf8eb */ { false, 0xf8eb, 0xf8eb }, /* 0xf8ec */ { false, 0xf8ec, 0xf8ec }, /* 0xf8ed */ { false, 0xf8ed, 0xf8ed }, /* 0xf8ee */ { false, 0xf8ee, 0xf8ee }, /* 0xf8ef */ { false, 0xf8ef, 0xf8ef }, /* 0xf8f0 */ { false, 0xf8f0, 0xf8f0 }, /* 0xf8f1 */ { false, 0xf8f1, 0xf8f1 }, /* 0xf8f2 */ { false, 0xf8f2, 0xf8f2 }, /* 0xf8f3 */ { false, 0xf8f3, 0xf8f3 }, /* 0xf8f4 */ { false, 0xf8f4, 0xf8f4 }, /* 0xf8f5 */ { false, 0xf8f5, 0xf8f5 }, /* 0xf8f6 */ { false, 0xf8f6, 0xf8f6 }, /* 0xf8f7 */ { false, 0xf8f7, 0xf8f7 }, /* 0xf8f8 */ { false, 0xf8f8, 0xf8f8 }, /* 0xf8f9 */ { false, 0xf8f9, 0xf8f9 }, /* 0xf8fa */ { false, 0xf8fa, 0xf8fa }, /* 0xf8fb */ { false, 0xf8fb, 0xf8fb }, /* 0xf8fc */ { false, 0xf8fc, 0xf8fc }, /* 0xf8fd */ { false, 0xf8fd, 0xf8fd }, /* 0xf8fe */ { false, 0xf8fe, 0xf8fe }, /* 0xf8ff */ { false, 0xf8ff, 0xf8ff }, /* 0xf900 */ { true, 0xf900, 0xf900 }, /* 0xf901 */ { true, 0xf901, 0xf901 }, /* 0xf902 */ { true, 0xf902, 0xf902 }, /* 0xf903 */ { true, 0xf903, 0xf903 }, /* 0xf904 */ { true, 0xf904, 0xf904 }, /* 0xf905 */ { true, 0xf905, 0xf905 }, /* 0xf906 */ { true, 0xf906, 0xf906 }, /* 0xf907 */ { true, 0xf907, 0xf907 }, /* 0xf908 */ { true, 0xf908, 0xf908 }, /* 0xf909 */ { true, 0xf909, 0xf909 }, /* 0xf90a */ { true, 0xf90a, 0xf90a }, /* 0xf90b */ { true, 0xf90b, 0xf90b }, /* 0xf90c */ { true, 0xf90c, 0xf90c }, /* 0xf90d */ { true, 0xf90d, 0xf90d }, /* 0xf90e */ { true, 0xf90e, 0xf90e }, /* 0xf90f */ { true, 0xf90f, 0xf90f }, /* 0xf910 */ { true, 0xf910, 0xf910 }, /* 0xf911 */ { true, 0xf911, 0xf911 }, /* 0xf912 */ { true, 0xf912, 0xf912 }, /* 0xf913 */ { true, 0xf913, 0xf913 }, /* 0xf914 */ { true, 0xf914, 0xf914 }, /* 0xf915 */ { true, 0xf915, 0xf915 }, /* 0xf916 */ { true, 0xf916, 0xf916 }, /* 0xf917 */ { true, 0xf917, 0xf917 }, /* 0xf918 */ { true, 0xf918, 0xf918 }, /* 0xf919 */ { true, 0xf919, 0xf919 }, /* 0xf91a */ { true, 0xf91a, 0xf91a }, /* 0xf91b */ { true, 0xf91b, 0xf91b }, /* 0xf91c */ { true, 0xf91c, 0xf91c }, /* 0xf91d */ { true, 0xf91d, 0xf91d }, /* 0xf91e */ { true, 0xf91e, 0xf91e }, /* 0xf91f */ { true, 0xf91f, 0xf91f }, /* 0xf920 */ { true, 0xf920, 0xf920 }, /* 0xf921 */ { true, 0xf921, 0xf921 }, /* 0xf922 */ { true, 0xf922, 0xf922 }, /* 0xf923 */ { true, 0xf923, 0xf923 }, /* 0xf924 */ { true, 0xf924, 0xf924 }, /* 0xf925 */ { true, 0xf925, 0xf925 }, /* 0xf926 */ { true, 0xf926, 0xf926 }, /* 0xf927 */ { true, 0xf927, 0xf927 }, /* 0xf928 */ { true, 0xf928, 0xf928 }, /* 0xf929 */ { true, 0xf929, 0xf929 }, /* 0xf92a */ { true, 0xf92a, 0xf92a }, /* 0xf92b */ { true, 0xf92b, 0xf92b }, /* 0xf92c */ { true, 0xf92c, 0xf92c }, /* 0xf92d */ { true, 0xf92d, 0xf92d }, /* 0xf92e */ { true, 0xf92e, 0xf92e }, /* 0xf92f */ { true, 0xf92f, 0xf92f }, /* 0xf930 */ { true, 0xf930, 0xf930 }, /* 0xf931 */ { true, 0xf931, 0xf931 }, /* 0xf932 */ { true, 0xf932, 0xf932 }, /* 0xf933 */ { true, 0xf933, 0xf933 }, /* 0xf934 */ { true, 0xf934, 0xf934 }, /* 0xf935 */ { true, 0xf935, 0xf935 }, /* 0xf936 */ { true, 0xf936, 0xf936 }, /* 0xf937 */ { true, 0xf937, 0xf937 }, /* 0xf938 */ { true, 0xf938, 0xf938 }, /* 0xf939 */ { true, 0xf939, 0xf939 }, /* 0xf93a */ { true, 0xf93a, 0xf93a }, /* 0xf93b */ { true, 0xf93b, 0xf93b }, /* 0xf93c */ { true, 0xf93c, 0xf93c }, /* 0xf93d */ { true, 0xf93d, 0xf93d }, /* 0xf93e */ { true, 0xf93e, 0xf93e }, /* 0xf93f */ { true, 0xf93f, 0xf93f }, /* 0xf940 */ { true, 0xf940, 0xf940 }, /* 0xf941 */ { true, 0xf941, 0xf941 }, /* 0xf942 */ { true, 0xf942, 0xf942 }, /* 0xf943 */ { true, 0xf943, 0xf943 }, /* 0xf944 */ { true, 0xf944, 0xf944 }, /* 0xf945 */ { true, 0xf945, 0xf945 }, /* 0xf946 */ { true, 0xf946, 0xf946 }, /* 0xf947 */ { true, 0xf947, 0xf947 }, /* 0xf948 */ { true, 0xf948, 0xf948 }, /* 0xf949 */ { true, 0xf949, 0xf949 }, /* 0xf94a */ { true, 0xf94a, 0xf94a }, /* 0xf94b */ { true, 0xf94b, 0xf94b }, /* 0xf94c */ { true, 0xf94c, 0xf94c }, /* 0xf94d */ { true, 0xf94d, 0xf94d }, /* 0xf94e */ { true, 0xf94e, 0xf94e }, /* 0xf94f */ { true, 0xf94f, 0xf94f }, /* 0xf950 */ { true, 0xf950, 0xf950 }, /* 0xf951 */ { true, 0xf951, 0xf951 }, /* 0xf952 */ { true, 0xf952, 0xf952 }, /* 0xf953 */ { true, 0xf953, 0xf953 }, /* 0xf954 */ { true, 0xf954, 0xf954 }, /* 0xf955 */ { true, 0xf955, 0xf955 }, /* 0xf956 */ { true, 0xf956, 0xf956 }, /* 0xf957 */ { true, 0xf957, 0xf957 }, /* 0xf958 */ { true, 0xf958, 0xf958 }, /* 0xf959 */ { true, 0xf959, 0xf959 }, /* 0xf95a */ { true, 0xf95a, 0xf95a }, /* 0xf95b */ { true, 0xf95b, 0xf95b }, /* 0xf95c */ { true, 0xf95c, 0xf95c }, /* 0xf95d */ { true, 0xf95d, 0xf95d }, /* 0xf95e */ { true, 0xf95e, 0xf95e }, /* 0xf95f */ { true, 0xf95f, 0xf95f }, /* 0xf960 */ { true, 0xf960, 0xf960 }, /* 0xf961 */ { true, 0xf961, 0xf961 }, /* 0xf962 */ { true, 0xf962, 0xf962 }, /* 0xf963 */ { true, 0xf963, 0xf963 }, /* 0xf964 */ { true, 0xf964, 0xf964 }, /* 0xf965 */ { true, 0xf965, 0xf965 }, /* 0xf966 */ { true, 0xf966, 0xf966 }, /* 0xf967 */ { true, 0xf967, 0xf967 }, /* 0xf968 */ { true, 0xf968, 0xf968 }, /* 0xf969 */ { true, 0xf969, 0xf969 }, /* 0xf96a */ { true, 0xf96a, 0xf96a }, /* 0xf96b */ { true, 0xf96b, 0xf96b }, /* 0xf96c */ { true, 0xf96c, 0xf96c }, /* 0xf96d */ { true, 0xf96d, 0xf96d }, /* 0xf96e */ { true, 0xf96e, 0xf96e }, /* 0xf96f */ { true, 0xf96f, 0xf96f }, /* 0xf970 */ { true, 0xf970, 0xf970 }, /* 0xf971 */ { true, 0xf971, 0xf971 }, /* 0xf972 */ { true, 0xf972, 0xf972 }, /* 0xf973 */ { true, 0xf973, 0xf973 }, /* 0xf974 */ { true, 0xf974, 0xf974 }, /* 0xf975 */ { true, 0xf975, 0xf975 }, /* 0xf976 */ { true, 0xf976, 0xf976 }, /* 0xf977 */ { true, 0xf977, 0xf977 }, /* 0xf978 */ { true, 0xf978, 0xf978 }, /* 0xf979 */ { true, 0xf979, 0xf979 }, /* 0xf97a */ { true, 0xf97a, 0xf97a }, /* 0xf97b */ { true, 0xf97b, 0xf97b }, /* 0xf97c */ { true, 0xf97c, 0xf97c }, /* 0xf97d */ { true, 0xf97d, 0xf97d }, /* 0xf97e */ { true, 0xf97e, 0xf97e }, /* 0xf97f */ { true, 0xf97f, 0xf97f }, /* 0xf980 */ { true, 0xf980, 0xf980 }, /* 0xf981 */ { true, 0xf981, 0xf981 }, /* 0xf982 */ { true, 0xf982, 0xf982 }, /* 0xf983 */ { true, 0xf983, 0xf983 }, /* 0xf984 */ { true, 0xf984, 0xf984 }, /* 0xf985 */ { true, 0xf985, 0xf985 }, /* 0xf986 */ { true, 0xf986, 0xf986 }, /* 0xf987 */ { true, 0xf987, 0xf987 }, /* 0xf988 */ { true, 0xf988, 0xf988 }, /* 0xf989 */ { true, 0xf989, 0xf989 }, /* 0xf98a */ { true, 0xf98a, 0xf98a }, /* 0xf98b */ { true, 0xf98b, 0xf98b }, /* 0xf98c */ { true, 0xf98c, 0xf98c }, /* 0xf98d */ { true, 0xf98d, 0xf98d }, /* 0xf98e */ { true, 0xf98e, 0xf98e }, /* 0xf98f */ { true, 0xf98f, 0xf98f }, /* 0xf990 */ { true, 0xf990, 0xf990 }, /* 0xf991 */ { true, 0xf991, 0xf991 }, /* 0xf992 */ { true, 0xf992, 0xf992 }, /* 0xf993 */ { true, 0xf993, 0xf993 }, /* 0xf994 */ { true, 0xf994, 0xf994 }, /* 0xf995 */ { true, 0xf995, 0xf995 }, /* 0xf996 */ { true, 0xf996, 0xf996 }, /* 0xf997 */ { true, 0xf997, 0xf997 }, /* 0xf998 */ { true, 0xf998, 0xf998 }, /* 0xf999 */ { true, 0xf999, 0xf999 }, /* 0xf99a */ { true, 0xf99a, 0xf99a }, /* 0xf99b */ { true, 0xf99b, 0xf99b }, /* 0xf99c */ { true, 0xf99c, 0xf99c }, /* 0xf99d */ { true, 0xf99d, 0xf99d }, /* 0xf99e */ { true, 0xf99e, 0xf99e }, /* 0xf99f */ { true, 0xf99f, 0xf99f }, /* 0xf9a0 */ { true, 0xf9a0, 0xf9a0 }, /* 0xf9a1 */ { true, 0xf9a1, 0xf9a1 }, /* 0xf9a2 */ { true, 0xf9a2, 0xf9a2 }, /* 0xf9a3 */ { true, 0xf9a3, 0xf9a3 }, /* 0xf9a4 */ { true, 0xf9a4, 0xf9a4 }, /* 0xf9a5 */ { true, 0xf9a5, 0xf9a5 }, /* 0xf9a6 */ { true, 0xf9a6, 0xf9a6 }, /* 0xf9a7 */ { true, 0xf9a7, 0xf9a7 }, /* 0xf9a8 */ { true, 0xf9a8, 0xf9a8 }, /* 0xf9a9 */ { true, 0xf9a9, 0xf9a9 }, /* 0xf9aa */ { true, 0xf9aa, 0xf9aa }, /* 0xf9ab */ { true, 0xf9ab, 0xf9ab }, /* 0xf9ac */ { true, 0xf9ac, 0xf9ac }, /* 0xf9ad */ { true, 0xf9ad, 0xf9ad }, /* 0xf9ae */ { true, 0xf9ae, 0xf9ae }, /* 0xf9af */ { true, 0xf9af, 0xf9af }, /* 0xf9b0 */ { true, 0xf9b0, 0xf9b0 }, /* 0xf9b1 */ { true, 0xf9b1, 0xf9b1 }, /* 0xf9b2 */ { true, 0xf9b2, 0xf9b2 }, /* 0xf9b3 */ { true, 0xf9b3, 0xf9b3 }, /* 0xf9b4 */ { true, 0xf9b4, 0xf9b4 }, /* 0xf9b5 */ { true, 0xf9b5, 0xf9b5 }, /* 0xf9b6 */ { true, 0xf9b6, 0xf9b6 }, /* 0xf9b7 */ { true, 0xf9b7, 0xf9b7 }, /* 0xf9b8 */ { true, 0xf9b8, 0xf9b8 }, /* 0xf9b9 */ { true, 0xf9b9, 0xf9b9 }, /* 0xf9ba */ { true, 0xf9ba, 0xf9ba }, /* 0xf9bb */ { true, 0xf9bb, 0xf9bb }, /* 0xf9bc */ { true, 0xf9bc, 0xf9bc }, /* 0xf9bd */ { true, 0xf9bd, 0xf9bd }, /* 0xf9be */ { true, 0xf9be, 0xf9be }, /* 0xf9bf */ { true, 0xf9bf, 0xf9bf }, /* 0xf9c0 */ { true, 0xf9c0, 0xf9c0 }, /* 0xf9c1 */ { true, 0xf9c1, 0xf9c1 }, /* 0xf9c2 */ { true, 0xf9c2, 0xf9c2 }, /* 0xf9c3 */ { true, 0xf9c3, 0xf9c3 }, /* 0xf9c4 */ { true, 0xf9c4, 0xf9c4 }, /* 0xf9c5 */ { true, 0xf9c5, 0xf9c5 }, /* 0xf9c6 */ { true, 0xf9c6, 0xf9c6 }, /* 0xf9c7 */ { true, 0xf9c7, 0xf9c7 }, /* 0xf9c8 */ { true, 0xf9c8, 0xf9c8 }, /* 0xf9c9 */ { true, 0xf9c9, 0xf9c9 }, /* 0xf9ca */ { true, 0xf9ca, 0xf9ca }, /* 0xf9cb */ { true, 0xf9cb, 0xf9cb }, /* 0xf9cc */ { true, 0xf9cc, 0xf9cc }, /* 0xf9cd */ { true, 0xf9cd, 0xf9cd }, /* 0xf9ce */ { true, 0xf9ce, 0xf9ce }, /* 0xf9cf */ { true, 0xf9cf, 0xf9cf }, /* 0xf9d0 */ { true, 0xf9d0, 0xf9d0 }, /* 0xf9d1 */ { true, 0xf9d1, 0xf9d1 }, /* 0xf9d2 */ { true, 0xf9d2, 0xf9d2 }, /* 0xf9d3 */ { true, 0xf9d3, 0xf9d3 }, /* 0xf9d4 */ { true, 0xf9d4, 0xf9d4 }, /* 0xf9d5 */ { true, 0xf9d5, 0xf9d5 }, /* 0xf9d6 */ { true, 0xf9d6, 0xf9d6 }, /* 0xf9d7 */ { true, 0xf9d7, 0xf9d7 }, /* 0xf9d8 */ { true, 0xf9d8, 0xf9d8 }, /* 0xf9d9 */ { true, 0xf9d9, 0xf9d9 }, /* 0xf9da */ { true, 0xf9da, 0xf9da }, /* 0xf9db */ { true, 0xf9db, 0xf9db }, /* 0xf9dc */ { true, 0xf9dc, 0xf9dc }, /* 0xf9dd */ { true, 0xf9dd, 0xf9dd }, /* 0xf9de */ { true, 0xf9de, 0xf9de }, /* 0xf9df */ { true, 0xf9df, 0xf9df }, /* 0xf9e0 */ { true, 0xf9e0, 0xf9e0 }, /* 0xf9e1 */ { true, 0xf9e1, 0xf9e1 }, /* 0xf9e2 */ { true, 0xf9e2, 0xf9e2 }, /* 0xf9e3 */ { true, 0xf9e3, 0xf9e3 }, /* 0xf9e4 */ { true, 0xf9e4, 0xf9e4 }, /* 0xf9e5 */ { true, 0xf9e5, 0xf9e5 }, /* 0xf9e6 */ { true, 0xf9e6, 0xf9e6 }, /* 0xf9e7 */ { true, 0xf9e7, 0xf9e7 }, /* 0xf9e8 */ { true, 0xf9e8, 0xf9e8 }, /* 0xf9e9 */ { true, 0xf9e9, 0xf9e9 }, /* 0xf9ea */ { true, 0xf9ea, 0xf9ea }, /* 0xf9eb */ { true, 0xf9eb, 0xf9eb }, /* 0xf9ec */ { true, 0xf9ec, 0xf9ec }, /* 0xf9ed */ { true, 0xf9ed, 0xf9ed }, /* 0xf9ee */ { true, 0xf9ee, 0xf9ee }, /* 0xf9ef */ { true, 0xf9ef, 0xf9ef }, /* 0xf9f0 */ { true, 0xf9f0, 0xf9f0 }, /* 0xf9f1 */ { true, 0xf9f1, 0xf9f1 }, /* 0xf9f2 */ { true, 0xf9f2, 0xf9f2 }, /* 0xf9f3 */ { true, 0xf9f3, 0xf9f3 }, /* 0xf9f4 */ { true, 0xf9f4, 0xf9f4 }, /* 0xf9f5 */ { true, 0xf9f5, 0xf9f5 }, /* 0xf9f6 */ { true, 0xf9f6, 0xf9f6 }, /* 0xf9f7 */ { true, 0xf9f7, 0xf9f7 }, /* 0xf9f8 */ { true, 0xf9f8, 0xf9f8 }, /* 0xf9f9 */ { true, 0xf9f9, 0xf9f9 }, /* 0xf9fa */ { true, 0xf9fa, 0xf9fa }, /* 0xf9fb */ { true, 0xf9fb, 0xf9fb }, /* 0xf9fc */ { true, 0xf9fc, 0xf9fc }, /* 0xf9fd */ { true, 0xf9fd, 0xf9fd }, /* 0xf9fe */ { true, 0xf9fe, 0xf9fe }, /* 0xf9ff */ { true, 0xf9ff, 0xf9ff }, /* 0xfa00 */ { true, 0xfa00, 0xfa00 }, /* 0xfa01 */ { true, 0xfa01, 0xfa01 }, /* 0xfa02 */ { true, 0xfa02, 0xfa02 }, /* 0xfa03 */ { true, 0xfa03, 0xfa03 }, /* 0xfa04 */ { true, 0xfa04, 0xfa04 }, /* 0xfa05 */ { true, 0xfa05, 0xfa05 }, /* 0xfa06 */ { true, 0xfa06, 0xfa06 }, /* 0xfa07 */ { true, 0xfa07, 0xfa07 }, /* 0xfa08 */ { true, 0xfa08, 0xfa08 }, /* 0xfa09 */ { true, 0xfa09, 0xfa09 }, /* 0xfa0a */ { true, 0xfa0a, 0xfa0a }, /* 0xfa0b */ { true, 0xfa0b, 0xfa0b }, /* 0xfa0c */ { true, 0xfa0c, 0xfa0c }, /* 0xfa0d */ { true, 0xfa0d, 0xfa0d }, /* 0xfa0e */ { true, 0xfa0e, 0xfa0e }, /* 0xfa0f */ { true, 0xfa0f, 0xfa0f }, /* 0xfa10 */ { true, 0xfa10, 0xfa10 }, /* 0xfa11 */ { true, 0xfa11, 0xfa11 }, /* 0xfa12 */ { true, 0xfa12, 0xfa12 }, /* 0xfa13 */ { true, 0xfa13, 0xfa13 }, /* 0xfa14 */ { true, 0xfa14, 0xfa14 }, /* 0xfa15 */ { true, 0xfa15, 0xfa15 }, /* 0xfa16 */ { true, 0xfa16, 0xfa16 }, /* 0xfa17 */ { true, 0xfa17, 0xfa17 }, /* 0xfa18 */ { true, 0xfa18, 0xfa18 }, /* 0xfa19 */ { true, 0xfa19, 0xfa19 }, /* 0xfa1a */ { true, 0xfa1a, 0xfa1a }, /* 0xfa1b */ { true, 0xfa1b, 0xfa1b }, /* 0xfa1c */ { true, 0xfa1c, 0xfa1c }, /* 0xfa1d */ { true, 0xfa1d, 0xfa1d }, /* 0xfa1e */ { true, 0xfa1e, 0xfa1e }, /* 0xfa1f */ { true, 0xfa1f, 0xfa1f }, /* 0xfa20 */ { true, 0xfa20, 0xfa20 }, /* 0xfa21 */ { true, 0xfa21, 0xfa21 }, /* 0xfa22 */ { true, 0xfa22, 0xfa22 }, /* 0xfa23 */ { true, 0xfa23, 0xfa23 }, /* 0xfa24 */ { true, 0xfa24, 0xfa24 }, /* 0xfa25 */ { true, 0xfa25, 0xfa25 }, /* 0xfa26 */ { true, 0xfa26, 0xfa26 }, /* 0xfa27 */ { true, 0xfa27, 0xfa27 }, /* 0xfa28 */ { true, 0xfa28, 0xfa28 }, /* 0xfa29 */ { true, 0xfa29, 0xfa29 }, /* 0xfa2a */ { true, 0xfa2a, 0xfa2a }, /* 0xfa2b */ { true, 0xfa2b, 0xfa2b }, /* 0xfa2c */ { true, 0xfa2c, 0xfa2c }, /* 0xfa2d */ { true, 0xfa2d, 0xfa2d }, /* 0xfa2e */ { false, 0xfa2e, 0xfa2e }, /* 0xfa2f */ { false, 0xfa2f, 0xfa2f }, /* 0xfa30 */ { true, 0xfa30, 0xfa30 }, /* 0xfa31 */ { true, 0xfa31, 0xfa31 }, /* 0xfa32 */ { true, 0xfa32, 0xfa32 }, /* 0xfa33 */ { true, 0xfa33, 0xfa33 }, /* 0xfa34 */ { true, 0xfa34, 0xfa34 }, /* 0xfa35 */ { true, 0xfa35, 0xfa35 }, /* 0xfa36 */ { true, 0xfa36, 0xfa36 }, /* 0xfa37 */ { true, 0xfa37, 0xfa37 }, /* 0xfa38 */ { true, 0xfa38, 0xfa38 }, /* 0xfa39 */ { true, 0xfa39, 0xfa39 }, /* 0xfa3a */ { true, 0xfa3a, 0xfa3a }, /* 0xfa3b */ { true, 0xfa3b, 0xfa3b }, /* 0xfa3c */ { true, 0xfa3c, 0xfa3c }, /* 0xfa3d */ { true, 0xfa3d, 0xfa3d }, /* 0xfa3e */ { true, 0xfa3e, 0xfa3e }, /* 0xfa3f */ { true, 0xfa3f, 0xfa3f }, /* 0xfa40 */ { true, 0xfa40, 0xfa40 }, /* 0xfa41 */ { true, 0xfa41, 0xfa41 }, /* 0xfa42 */ { true, 0xfa42, 0xfa42 }, /* 0xfa43 */ { true, 0xfa43, 0xfa43 }, /* 0xfa44 */ { true, 0xfa44, 0xfa44 }, /* 0xfa45 */ { true, 0xfa45, 0xfa45 }, /* 0xfa46 */ { true, 0xfa46, 0xfa46 }, /* 0xfa47 */ { true, 0xfa47, 0xfa47 }, /* 0xfa48 */ { true, 0xfa48, 0xfa48 }, /* 0xfa49 */ { true, 0xfa49, 0xfa49 }, /* 0xfa4a */ { true, 0xfa4a, 0xfa4a }, /* 0xfa4b */ { true, 0xfa4b, 0xfa4b }, /* 0xfa4c */ { true, 0xfa4c, 0xfa4c }, /* 0xfa4d */ { true, 0xfa4d, 0xfa4d }, /* 0xfa4e */ { true, 0xfa4e, 0xfa4e }, /* 0xfa4f */ { true, 0xfa4f, 0xfa4f }, /* 0xfa50 */ { true, 0xfa50, 0xfa50 }, /* 0xfa51 */ { true, 0xfa51, 0xfa51 }, /* 0xfa52 */ { true, 0xfa52, 0xfa52 }, /* 0xfa53 */ { true, 0xfa53, 0xfa53 }, /* 0xfa54 */ { true, 0xfa54, 0xfa54 }, /* 0xfa55 */ { true, 0xfa55, 0xfa55 }, /* 0xfa56 */ { true, 0xfa56, 0xfa56 }, /* 0xfa57 */ { true, 0xfa57, 0xfa57 }, /* 0xfa58 */ { true, 0xfa58, 0xfa58 }, /* 0xfa59 */ { true, 0xfa59, 0xfa59 }, /* 0xfa5a */ { true, 0xfa5a, 0xfa5a }, /* 0xfa5b */ { true, 0xfa5b, 0xfa5b }, /* 0xfa5c */ { true, 0xfa5c, 0xfa5c }, /* 0xfa5d */ { true, 0xfa5d, 0xfa5d }, /* 0xfa5e */ { true, 0xfa5e, 0xfa5e }, /* 0xfa5f */ { true, 0xfa5f, 0xfa5f }, /* 0xfa60 */ { true, 0xfa60, 0xfa60 }, /* 0xfa61 */ { true, 0xfa61, 0xfa61 }, /* 0xfa62 */ { true, 0xfa62, 0xfa62 }, /* 0xfa63 */ { true, 0xfa63, 0xfa63 }, /* 0xfa64 */ { true, 0xfa64, 0xfa64 }, /* 0xfa65 */ { true, 0xfa65, 0xfa65 }, /* 0xfa66 */ { true, 0xfa66, 0xfa66 }, /* 0xfa67 */ { true, 0xfa67, 0xfa67 }, /* 0xfa68 */ { true, 0xfa68, 0xfa68 }, /* 0xfa69 */ { true, 0xfa69, 0xfa69 }, /* 0xfa6a */ { true, 0xfa6a, 0xfa6a }, /* 0xfa6b */ { false, 0xfa6b, 0xfa6b }, /* 0xfa6c */ { false, 0xfa6c, 0xfa6c }, /* 0xfa6d */ { false, 0xfa6d, 0xfa6d }, /* 0xfa6e */ { false, 0xfa6e, 0xfa6e }, /* 0xfa6f */ { false, 0xfa6f, 0xfa6f }, /* 0xfa70 */ { true, 0xfa70, 0xfa70 }, /* 0xfa71 */ { true, 0xfa71, 0xfa71 }, /* 0xfa72 */ { true, 0xfa72, 0xfa72 }, /* 0xfa73 */ { true, 0xfa73, 0xfa73 }, /* 0xfa74 */ { true, 0xfa74, 0xfa74 }, /* 0xfa75 */ { true, 0xfa75, 0xfa75 }, /* 0xfa76 */ { true, 0xfa76, 0xfa76 }, /* 0xfa77 */ { true, 0xfa77, 0xfa77 }, /* 0xfa78 */ { true, 0xfa78, 0xfa78 }, /* 0xfa79 */ { true, 0xfa79, 0xfa79 }, /* 0xfa7a */ { true, 0xfa7a, 0xfa7a }, /* 0xfa7b */ { true, 0xfa7b, 0xfa7b }, /* 0xfa7c */ { true, 0xfa7c, 0xfa7c }, /* 0xfa7d */ { true, 0xfa7d, 0xfa7d }, /* 0xfa7e */ { true, 0xfa7e, 0xfa7e }, /* 0xfa7f */ { true, 0xfa7f, 0xfa7f }, /* 0xfa80 */ { true, 0xfa80, 0xfa80 }, /* 0xfa81 */ { true, 0xfa81, 0xfa81 }, /* 0xfa82 */ { true, 0xfa82, 0xfa82 }, /* 0xfa83 */ { true, 0xfa83, 0xfa83 }, /* 0xfa84 */ { true, 0xfa84, 0xfa84 }, /* 0xfa85 */ { true, 0xfa85, 0xfa85 }, /* 0xfa86 */ { true, 0xfa86, 0xfa86 }, /* 0xfa87 */ { true, 0xfa87, 0xfa87 }, /* 0xfa88 */ { true, 0xfa88, 0xfa88 }, /* 0xfa89 */ { true, 0xfa89, 0xfa89 }, /* 0xfa8a */ { true, 0xfa8a, 0xfa8a }, /* 0xfa8b */ { true, 0xfa8b, 0xfa8b }, /* 0xfa8c */ { true, 0xfa8c, 0xfa8c }, /* 0xfa8d */ { true, 0xfa8d, 0xfa8d }, /* 0xfa8e */ { true, 0xfa8e, 0xfa8e }, /* 0xfa8f */ { true, 0xfa8f, 0xfa8f }, /* 0xfa90 */ { true, 0xfa90, 0xfa90 }, /* 0xfa91 */ { true, 0xfa91, 0xfa91 }, /* 0xfa92 */ { true, 0xfa92, 0xfa92 }, /* 0xfa93 */ { true, 0xfa93, 0xfa93 }, /* 0xfa94 */ { true, 0xfa94, 0xfa94 }, /* 0xfa95 */ { true, 0xfa95, 0xfa95 }, /* 0xfa96 */ { true, 0xfa96, 0xfa96 }, /* 0xfa97 */ { true, 0xfa97, 0xfa97 }, /* 0xfa98 */ { true, 0xfa98, 0xfa98 }, /* 0xfa99 */ { true, 0xfa99, 0xfa99 }, /* 0xfa9a */ { true, 0xfa9a, 0xfa9a }, /* 0xfa9b */ { true, 0xfa9b, 0xfa9b }, /* 0xfa9c */ { true, 0xfa9c, 0xfa9c }, /* 0xfa9d */ { true, 0xfa9d, 0xfa9d }, /* 0xfa9e */ { true, 0xfa9e, 0xfa9e }, /* 0xfa9f */ { true, 0xfa9f, 0xfa9f }, /* 0xfaa0 */ { true, 0xfaa0, 0xfaa0 }, /* 0xfaa1 */ { true, 0xfaa1, 0xfaa1 }, /* 0xfaa2 */ { true, 0xfaa2, 0xfaa2 }, /* 0xfaa3 */ { true, 0xfaa3, 0xfaa3 }, /* 0xfaa4 */ { true, 0xfaa4, 0xfaa4 }, /* 0xfaa5 */ { true, 0xfaa5, 0xfaa5 }, /* 0xfaa6 */ { true, 0xfaa6, 0xfaa6 }, /* 0xfaa7 */ { true, 0xfaa7, 0xfaa7 }, /* 0xfaa8 */ { true, 0xfaa8, 0xfaa8 }, /* 0xfaa9 */ { true, 0xfaa9, 0xfaa9 }, /* 0xfaaa */ { true, 0xfaaa, 0xfaaa }, /* 0xfaab */ { true, 0xfaab, 0xfaab }, /* 0xfaac */ { true, 0xfaac, 0xfaac }, /* 0xfaad */ { true, 0xfaad, 0xfaad }, /* 0xfaae */ { true, 0xfaae, 0xfaae }, /* 0xfaaf */ { true, 0xfaaf, 0xfaaf }, /* 0xfab0 */ { true, 0xfab0, 0xfab0 }, /* 0xfab1 */ { true, 0xfab1, 0xfab1 }, /* 0xfab2 */ { true, 0xfab2, 0xfab2 }, /* 0xfab3 */ { true, 0xfab3, 0xfab3 }, /* 0xfab4 */ { true, 0xfab4, 0xfab4 }, /* 0xfab5 */ { true, 0xfab5, 0xfab5 }, /* 0xfab6 */ { true, 0xfab6, 0xfab6 }, /* 0xfab7 */ { true, 0xfab7, 0xfab7 }, /* 0xfab8 */ { true, 0xfab8, 0xfab8 }, /* 0xfab9 */ { true, 0xfab9, 0xfab9 }, /* 0xfaba */ { true, 0xfaba, 0xfaba }, /* 0xfabb */ { true, 0xfabb, 0xfabb }, /* 0xfabc */ { true, 0xfabc, 0xfabc }, /* 0xfabd */ { true, 0xfabd, 0xfabd }, /* 0xfabe */ { true, 0xfabe, 0xfabe }, /* 0xfabf */ { true, 0xfabf, 0xfabf }, /* 0xfac0 */ { true, 0xfac0, 0xfac0 }, /* 0xfac1 */ { true, 0xfac1, 0xfac1 }, /* 0xfac2 */ { true, 0xfac2, 0xfac2 }, /* 0xfac3 */ { true, 0xfac3, 0xfac3 }, /* 0xfac4 */ { true, 0xfac4, 0xfac4 }, /* 0xfac5 */ { true, 0xfac5, 0xfac5 }, /* 0xfac6 */ { true, 0xfac6, 0xfac6 }, /* 0xfac7 */ { true, 0xfac7, 0xfac7 }, /* 0xfac8 */ { true, 0xfac8, 0xfac8 }, /* 0xfac9 */ { true, 0xfac9, 0xfac9 }, /* 0xfaca */ { true, 0xfaca, 0xfaca }, /* 0xfacb */ { true, 0xfacb, 0xfacb }, /* 0xfacc */ { true, 0xfacc, 0xfacc }, /* 0xfacd */ { true, 0xfacd, 0xfacd }, /* 0xface */ { true, 0xface, 0xface }, /* 0xfacf */ { true, 0xfacf, 0xfacf }, /* 0xfad0 */ { true, 0xfad0, 0xfad0 }, /* 0xfad1 */ { true, 0xfad1, 0xfad1 }, /* 0xfad2 */ { true, 0xfad2, 0xfad2 }, /* 0xfad3 */ { true, 0xfad3, 0xfad3 }, /* 0xfad4 */ { true, 0xfad4, 0xfad4 }, /* 0xfad5 */ { true, 0xfad5, 0xfad5 }, /* 0xfad6 */ { true, 0xfad6, 0xfad6 }, /* 0xfad7 */ { true, 0xfad7, 0xfad7 }, /* 0xfad8 */ { true, 0xfad8, 0xfad8 }, /* 0xfad9 */ { true, 0xfad9, 0xfad9 }, /* 0xfada */ { false, 0xfada, 0xfada }, /* 0xfadb */ { false, 0xfadb, 0xfadb }, /* 0xfadc */ { false, 0xfadc, 0xfadc }, /* 0xfadd */ { false, 0xfadd, 0xfadd }, /* 0xfade */ { false, 0xfade, 0xfade }, /* 0xfadf */ { false, 0xfadf, 0xfadf }, /* 0xfae0 */ { false, 0xfae0, 0xfae0 }, /* 0xfae1 */ { false, 0xfae1, 0xfae1 }, /* 0xfae2 */ { false, 0xfae2, 0xfae2 }, /* 0xfae3 */ { false, 0xfae3, 0xfae3 }, /* 0xfae4 */ { false, 0xfae4, 0xfae4 }, /* 0xfae5 */ { false, 0xfae5, 0xfae5 }, /* 0xfae6 */ { false, 0xfae6, 0xfae6 }, /* 0xfae7 */ { false, 0xfae7, 0xfae7 }, /* 0xfae8 */ { false, 0xfae8, 0xfae8 }, /* 0xfae9 */ { false, 0xfae9, 0xfae9 }, /* 0xfaea */ { false, 0xfaea, 0xfaea }, /* 0xfaeb */ { false, 0xfaeb, 0xfaeb }, /* 0xfaec */ { false, 0xfaec, 0xfaec }, /* 0xfaed */ { false, 0xfaed, 0xfaed }, /* 0xfaee */ { false, 0xfaee, 0xfaee }, /* 0xfaef */ { false, 0xfaef, 0xfaef }, /* 0xfaf0 */ { false, 0xfaf0, 0xfaf0 }, /* 0xfaf1 */ { false, 0xfaf1, 0xfaf1 }, /* 0xfaf2 */ { false, 0xfaf2, 0xfaf2 }, /* 0xfaf3 */ { false, 0xfaf3, 0xfaf3 }, /* 0xfaf4 */ { false, 0xfaf4, 0xfaf4 }, /* 0xfaf5 */ { false, 0xfaf5, 0xfaf5 }, /* 0xfaf6 */ { false, 0xfaf6, 0xfaf6 }, /* 0xfaf7 */ { false, 0xfaf7, 0xfaf7 }, /* 0xfaf8 */ { false, 0xfaf8, 0xfaf8 }, /* 0xfaf9 */ { false, 0xfaf9, 0xfaf9 }, /* 0xfafa */ { false, 0xfafa, 0xfafa }, /* 0xfafb */ { false, 0xfafb, 0xfafb }, /* 0xfafc */ { false, 0xfafc, 0xfafc }, /* 0xfafd */ { false, 0xfafd, 0xfafd }, /* 0xfafe */ { false, 0xfafe, 0xfafe }, /* 0xfaff */ { false, 0xfaff, 0xfaff }, /* 0xfb00 */ { true, 0xfb00, 0xfb00 }, /* 0xfb01 */ { true, 0xfb01, 0xfb01 }, /* 0xfb02 */ { true, 0xfb02, 0xfb02 }, /* 0xfb03 */ { true, 0xfb03, 0xfb03 }, /* 0xfb04 */ { true, 0xfb04, 0xfb04 }, /* 0xfb05 */ { true, 0xfb05, 0xfb05 }, /* 0xfb06 */ { true, 0xfb06, 0xfb06 }, /* 0xfb07 */ { false, 0xfb07, 0xfb07 }, /* 0xfb08 */ { false, 0xfb08, 0xfb08 }, /* 0xfb09 */ { false, 0xfb09, 0xfb09 }, /* 0xfb0a */ { false, 0xfb0a, 0xfb0a }, /* 0xfb0b */ { false, 0xfb0b, 0xfb0b }, /* 0xfb0c */ { false, 0xfb0c, 0xfb0c }, /* 0xfb0d */ { false, 0xfb0d, 0xfb0d }, /* 0xfb0e */ { false, 0xfb0e, 0xfb0e }, /* 0xfb0f */ { false, 0xfb0f, 0xfb0f }, /* 0xfb10 */ { false, 0xfb10, 0xfb10 }, /* 0xfb11 */ { false, 0xfb11, 0xfb11 }, /* 0xfb12 */ { false, 0xfb12, 0xfb12 }, /* 0xfb13 */ { true, 0xfb13, 0xfb13 }, /* 0xfb14 */ { true, 0xfb14, 0xfb14 }, /* 0xfb15 */ { true, 0xfb15, 0xfb15 }, /* 0xfb16 */ { true, 0xfb16, 0xfb16 }, /* 0xfb17 */ { true, 0xfb17, 0xfb17 }, /* 0xfb18 */ { false, 0xfb18, 0xfb18 }, /* 0xfb19 */ { false, 0xfb19, 0xfb19 }, /* 0xfb1a */ { false, 0xfb1a, 0xfb1a }, /* 0xfb1b */ { false, 0xfb1b, 0xfb1b }, /* 0xfb1c */ { false, 0xfb1c, 0xfb1c }, /* 0xfb1d */ { true, 0xfb1d, 0xfb1d }, /* 0xfb1e */ { true, 0xfb1e, 0xfb1e }, /* 0xfb1f */ { true, 0xfb1f, 0xfb1f }, /* 0xfb20 */ { true, 0xfb20, 0xfb20 }, /* 0xfb21 */ { true, 0xfb21, 0xfb21 }, /* 0xfb22 */ { true, 0xfb22, 0xfb22 }, /* 0xfb23 */ { true, 0xfb23, 0xfb23 }, /* 0xfb24 */ { true, 0xfb24, 0xfb24 }, /* 0xfb25 */ { true, 0xfb25, 0xfb25 }, /* 0xfb26 */ { true, 0xfb26, 0xfb26 }, /* 0xfb27 */ { true, 0xfb27, 0xfb27 }, /* 0xfb28 */ { true, 0xfb28, 0xfb28 }, /* 0xfb29 */ { false, 0xfb29, 0xfb29 }, /* 0xfb2a */ { true, 0xfb2a, 0xfb2a }, /* 0xfb2b */ { true, 0xfb2b, 0xfb2b }, /* 0xfb2c */ { true, 0xfb2c, 0xfb2c }, /* 0xfb2d */ { true, 0xfb2d, 0xfb2d }, /* 0xfb2e */ { true, 0xfb2e, 0xfb2e }, /* 0xfb2f */ { true, 0xfb2f, 0xfb2f }, /* 0xfb30 */ { true, 0xfb30, 0xfb30 }, /* 0xfb31 */ { true, 0xfb31, 0xfb31 }, /* 0xfb32 */ { true, 0xfb32, 0xfb32 }, /* 0xfb33 */ { true, 0xfb33, 0xfb33 }, /* 0xfb34 */ { true, 0xfb34, 0xfb34 }, /* 0xfb35 */ { true, 0xfb35, 0xfb35 }, /* 0xfb36 */ { true, 0xfb36, 0xfb36 }, /* 0xfb37 */ { false, 0xfb37, 0xfb37 }, /* 0xfb38 */ { true, 0xfb38, 0xfb38 }, /* 0xfb39 */ { true, 0xfb39, 0xfb39 }, /* 0xfb3a */ { true, 0xfb3a, 0xfb3a }, /* 0xfb3b */ { true, 0xfb3b, 0xfb3b }, /* 0xfb3c */ { true, 0xfb3c, 0xfb3c }, /* 0xfb3d */ { false, 0xfb3d, 0xfb3d }, /* 0xfb3e */ { true, 0xfb3e, 0xfb3e }, /* 0xfb3f */ { false, 0xfb3f, 0xfb3f }, /* 0xfb40 */ { true, 0xfb40, 0xfb40 }, /* 0xfb41 */ { true, 0xfb41, 0xfb41 }, /* 0xfb42 */ { false, 0xfb42, 0xfb42 }, /* 0xfb43 */ { true, 0xfb43, 0xfb43 }, /* 0xfb44 */ { true, 0xfb44, 0xfb44 }, /* 0xfb45 */ { false, 0xfb45, 0xfb45 }, /* 0xfb46 */ { true, 0xfb46, 0xfb46 }, /* 0xfb47 */ { true, 0xfb47, 0xfb47 }, /* 0xfb48 */ { true, 0xfb48, 0xfb48 }, /* 0xfb49 */ { true, 0xfb49, 0xfb49 }, /* 0xfb4a */ { true, 0xfb4a, 0xfb4a }, /* 0xfb4b */ { true, 0xfb4b, 0xfb4b }, /* 0xfb4c */ { true, 0xfb4c, 0xfb4c }, /* 0xfb4d */ { true, 0xfb4d, 0xfb4d }, /* 0xfb4e */ { true, 0xfb4e, 0xfb4e }, /* 0xfb4f */ { true, 0xfb4f, 0xfb4f }, /* 0xfb50 */ { true, 0xfb50, 0xfb50 }, /* 0xfb51 */ { true, 0xfb51, 0xfb51 }, /* 0xfb52 */ { true, 0xfb52, 0xfb52 }, /* 0xfb53 */ { true, 0xfb53, 0xfb53 }, /* 0xfb54 */ { true, 0xfb54, 0xfb54 }, /* 0xfb55 */ { true, 0xfb55, 0xfb55 }, /* 0xfb56 */ { true, 0xfb56, 0xfb56 }, /* 0xfb57 */ { true, 0xfb57, 0xfb57 }, /* 0xfb58 */ { true, 0xfb58, 0xfb58 }, /* 0xfb59 */ { true, 0xfb59, 0xfb59 }, /* 0xfb5a */ { true, 0xfb5a, 0xfb5a }, /* 0xfb5b */ { true, 0xfb5b, 0xfb5b }, /* 0xfb5c */ { true, 0xfb5c, 0xfb5c }, /* 0xfb5d */ { true, 0xfb5d, 0xfb5d }, /* 0xfb5e */ { true, 0xfb5e, 0xfb5e }, /* 0xfb5f */ { true, 0xfb5f, 0xfb5f }, /* 0xfb60 */ { true, 0xfb60, 0xfb60 }, /* 0xfb61 */ { true, 0xfb61, 0xfb61 }, /* 0xfb62 */ { true, 0xfb62, 0xfb62 }, /* 0xfb63 */ { true, 0xfb63, 0xfb63 }, /* 0xfb64 */ { true, 0xfb64, 0xfb64 }, /* 0xfb65 */ { true, 0xfb65, 0xfb65 }, /* 0xfb66 */ { true, 0xfb66, 0xfb66 }, /* 0xfb67 */ { true, 0xfb67, 0xfb67 }, /* 0xfb68 */ { true, 0xfb68, 0xfb68 }, /* 0xfb69 */ { true, 0xfb69, 0xfb69 }, /* 0xfb6a */ { true, 0xfb6a, 0xfb6a }, /* 0xfb6b */ { true, 0xfb6b, 0xfb6b }, /* 0xfb6c */ { true, 0xfb6c, 0xfb6c }, /* 0xfb6d */ { true, 0xfb6d, 0xfb6d }, /* 0xfb6e */ { true, 0xfb6e, 0xfb6e }, /* 0xfb6f */ { true, 0xfb6f, 0xfb6f }, /* 0xfb70 */ { true, 0xfb70, 0xfb70 }, /* 0xfb71 */ { true, 0xfb71, 0xfb71 }, /* 0xfb72 */ { true, 0xfb72, 0xfb72 }, /* 0xfb73 */ { true, 0xfb73, 0xfb73 }, /* 0xfb74 */ { true, 0xfb74, 0xfb74 }, /* 0xfb75 */ { true, 0xfb75, 0xfb75 }, /* 0xfb76 */ { true, 0xfb76, 0xfb76 }, /* 0xfb77 */ { true, 0xfb77, 0xfb77 }, /* 0xfb78 */ { true, 0xfb78, 0xfb78 }, /* 0xfb79 */ { true, 0xfb79, 0xfb79 }, /* 0xfb7a */ { true, 0xfb7a, 0xfb7a }, /* 0xfb7b */ { true, 0xfb7b, 0xfb7b }, /* 0xfb7c */ { true, 0xfb7c, 0xfb7c }, /* 0xfb7d */ { true, 0xfb7d, 0xfb7d }, /* 0xfb7e */ { true, 0xfb7e, 0xfb7e }, /* 0xfb7f */ { true, 0xfb7f, 0xfb7f }, /* 0xfb80 */ { true, 0xfb80, 0xfb80 }, /* 0xfb81 */ { true, 0xfb81, 0xfb81 }, /* 0xfb82 */ { true, 0xfb82, 0xfb82 }, /* 0xfb83 */ { true, 0xfb83, 0xfb83 }, /* 0xfb84 */ { true, 0xfb84, 0xfb84 }, /* 0xfb85 */ { true, 0xfb85, 0xfb85 }, /* 0xfb86 */ { true, 0xfb86, 0xfb86 }, /* 0xfb87 */ { true, 0xfb87, 0xfb87 }, /* 0xfb88 */ { true, 0xfb88, 0xfb88 }, /* 0xfb89 */ { true, 0xfb89, 0xfb89 }, /* 0xfb8a */ { true, 0xfb8a, 0xfb8a }, /* 0xfb8b */ { true, 0xfb8b, 0xfb8b }, /* 0xfb8c */ { true, 0xfb8c, 0xfb8c }, /* 0xfb8d */ { true, 0xfb8d, 0xfb8d }, /* 0xfb8e */ { true, 0xfb8e, 0xfb8e }, /* 0xfb8f */ { true, 0xfb8f, 0xfb8f }, /* 0xfb90 */ { true, 0xfb90, 0xfb90 }, /* 0xfb91 */ { true, 0xfb91, 0xfb91 }, /* 0xfb92 */ { true, 0xfb92, 0xfb92 }, /* 0xfb93 */ { true, 0xfb93, 0xfb93 }, /* 0xfb94 */ { true, 0xfb94, 0xfb94 }, /* 0xfb95 */ { true, 0xfb95, 0xfb95 }, /* 0xfb96 */ { true, 0xfb96, 0xfb96 }, /* 0xfb97 */ { true, 0xfb97, 0xfb97 }, /* 0xfb98 */ { true, 0xfb98, 0xfb98 }, /* 0xfb99 */ { true, 0xfb99, 0xfb99 }, /* 0xfb9a */ { true, 0xfb9a, 0xfb9a }, /* 0xfb9b */ { true, 0xfb9b, 0xfb9b }, /* 0xfb9c */ { true, 0xfb9c, 0xfb9c }, /* 0xfb9d */ { true, 0xfb9d, 0xfb9d }, /* 0xfb9e */ { true, 0xfb9e, 0xfb9e }, /* 0xfb9f */ { true, 0xfb9f, 0xfb9f }, /* 0xfba0 */ { true, 0xfba0, 0xfba0 }, /* 0xfba1 */ { true, 0xfba1, 0xfba1 }, /* 0xfba2 */ { true, 0xfba2, 0xfba2 }, /* 0xfba3 */ { true, 0xfba3, 0xfba3 }, /* 0xfba4 */ { true, 0xfba4, 0xfba4 }, /* 0xfba5 */ { true, 0xfba5, 0xfba5 }, /* 0xfba6 */ { true, 0xfba6, 0xfba6 }, /* 0xfba7 */ { true, 0xfba7, 0xfba7 }, /* 0xfba8 */ { true, 0xfba8, 0xfba8 }, /* 0xfba9 */ { true, 0xfba9, 0xfba9 }, /* 0xfbaa */ { true, 0xfbaa, 0xfbaa }, /* 0xfbab */ { true, 0xfbab, 0xfbab }, /* 0xfbac */ { true, 0xfbac, 0xfbac }, /* 0xfbad */ { true, 0xfbad, 0xfbad }, /* 0xfbae */ { true, 0xfbae, 0xfbae }, /* 0xfbaf */ { true, 0xfbaf, 0xfbaf }, /* 0xfbb0 */ { true, 0xfbb0, 0xfbb0 }, /* 0xfbb1 */ { true, 0xfbb1, 0xfbb1 }, /* 0xfbb2 */ { false, 0xfbb2, 0xfbb2 }, /* 0xfbb3 */ { false, 0xfbb3, 0xfbb3 }, /* 0xfbb4 */ { false, 0xfbb4, 0xfbb4 }, /* 0xfbb5 */ { false, 0xfbb5, 0xfbb5 }, /* 0xfbb6 */ { false, 0xfbb6, 0xfbb6 }, /* 0xfbb7 */ { false, 0xfbb7, 0xfbb7 }, /* 0xfbb8 */ { false, 0xfbb8, 0xfbb8 }, /* 0xfbb9 */ { false, 0xfbb9, 0xfbb9 }, /* 0xfbba */ { false, 0xfbba, 0xfbba }, /* 0xfbbb */ { false, 0xfbbb, 0xfbbb }, /* 0xfbbc */ { false, 0xfbbc, 0xfbbc }, /* 0xfbbd */ { false, 0xfbbd, 0xfbbd }, /* 0xfbbe */ { false, 0xfbbe, 0xfbbe }, /* 0xfbbf */ { false, 0xfbbf, 0xfbbf }, /* 0xfbc0 */ { false, 0xfbc0, 0xfbc0 }, /* 0xfbc1 */ { false, 0xfbc1, 0xfbc1 }, /* 0xfbc2 */ { false, 0xfbc2, 0xfbc2 }, /* 0xfbc3 */ { false, 0xfbc3, 0xfbc3 }, /* 0xfbc4 */ { false, 0xfbc4, 0xfbc4 }, /* 0xfbc5 */ { false, 0xfbc5, 0xfbc5 }, /* 0xfbc6 */ { false, 0xfbc6, 0xfbc6 }, /* 0xfbc7 */ { false, 0xfbc7, 0xfbc7 }, /* 0xfbc8 */ { false, 0xfbc8, 0xfbc8 }, /* 0xfbc9 */ { false, 0xfbc9, 0xfbc9 }, /* 0xfbca */ { false, 0xfbca, 0xfbca }, /* 0xfbcb */ { false, 0xfbcb, 0xfbcb }, /* 0xfbcc */ { false, 0xfbcc, 0xfbcc }, /* 0xfbcd */ { false, 0xfbcd, 0xfbcd }, /* 0xfbce */ { false, 0xfbce, 0xfbce }, /* 0xfbcf */ { false, 0xfbcf, 0xfbcf }, /* 0xfbd0 */ { false, 0xfbd0, 0xfbd0 }, /* 0xfbd1 */ { false, 0xfbd1, 0xfbd1 }, /* 0xfbd2 */ { false, 0xfbd2, 0xfbd2 }, /* 0xfbd3 */ { true, 0xfbd3, 0xfbd3 }, /* 0xfbd4 */ { true, 0xfbd4, 0xfbd4 }, /* 0xfbd5 */ { true, 0xfbd5, 0xfbd5 }, /* 0xfbd6 */ { true, 0xfbd6, 0xfbd6 }, /* 0xfbd7 */ { true, 0xfbd7, 0xfbd7 }, /* 0xfbd8 */ { true, 0xfbd8, 0xfbd8 }, /* 0xfbd9 */ { true, 0xfbd9, 0xfbd9 }, /* 0xfbda */ { true, 0xfbda, 0xfbda }, /* 0xfbdb */ { true, 0xfbdb, 0xfbdb }, /* 0xfbdc */ { true, 0xfbdc, 0xfbdc }, /* 0xfbdd */ { true, 0xfbdd, 0xfbdd }, /* 0xfbde */ { true, 0xfbde, 0xfbde }, /* 0xfbdf */ { true, 0xfbdf, 0xfbdf }, /* 0xfbe0 */ { true, 0xfbe0, 0xfbe0 }, /* 0xfbe1 */ { true, 0xfbe1, 0xfbe1 }, /* 0xfbe2 */ { true, 0xfbe2, 0xfbe2 }, /* 0xfbe3 */ { true, 0xfbe3, 0xfbe3 }, /* 0xfbe4 */ { true, 0xfbe4, 0xfbe4 }, /* 0xfbe5 */ { true, 0xfbe5, 0xfbe5 }, /* 0xfbe6 */ { true, 0xfbe6, 0xfbe6 }, /* 0xfbe7 */ { true, 0xfbe7, 0xfbe7 }, /* 0xfbe8 */ { true, 0xfbe8, 0xfbe8 }, /* 0xfbe9 */ { true, 0xfbe9, 0xfbe9 }, /* 0xfbea */ { true, 0xfbea, 0xfbea }, /* 0xfbeb */ { true, 0xfbeb, 0xfbeb }, /* 0xfbec */ { true, 0xfbec, 0xfbec }, /* 0xfbed */ { true, 0xfbed, 0xfbed }, /* 0xfbee */ { true, 0xfbee, 0xfbee }, /* 0xfbef */ { true, 0xfbef, 0xfbef }, /* 0xfbf0 */ { true, 0xfbf0, 0xfbf0 }, /* 0xfbf1 */ { true, 0xfbf1, 0xfbf1 }, /* 0xfbf2 */ { true, 0xfbf2, 0xfbf2 }, /* 0xfbf3 */ { true, 0xfbf3, 0xfbf3 }, /* 0xfbf4 */ { true, 0xfbf4, 0xfbf4 }, /* 0xfbf5 */ { true, 0xfbf5, 0xfbf5 }, /* 0xfbf6 */ { true, 0xfbf6, 0xfbf6 }, /* 0xfbf7 */ { true, 0xfbf7, 0xfbf7 }, /* 0xfbf8 */ { true, 0xfbf8, 0xfbf8 }, /* 0xfbf9 */ { true, 0xfbf9, 0xfbf9 }, /* 0xfbfa */ { true, 0xfbfa, 0xfbfa }, /* 0xfbfb */ { true, 0xfbfb, 0xfbfb }, /* 0xfbfc */ { true, 0xfbfc, 0xfbfc }, /* 0xfbfd */ { true, 0xfbfd, 0xfbfd }, /* 0xfbfe */ { true, 0xfbfe, 0xfbfe }, /* 0xfbff */ { true, 0xfbff, 0xfbff }, /* 0xfc00 */ { true, 0xfc00, 0xfc00 }, /* 0xfc01 */ { true, 0xfc01, 0xfc01 }, /* 0xfc02 */ { true, 0xfc02, 0xfc02 }, /* 0xfc03 */ { true, 0xfc03, 0xfc03 }, /* 0xfc04 */ { true, 0xfc04, 0xfc04 }, /* 0xfc05 */ { true, 0xfc05, 0xfc05 }, /* 0xfc06 */ { true, 0xfc06, 0xfc06 }, /* 0xfc07 */ { true, 0xfc07, 0xfc07 }, /* 0xfc08 */ { true, 0xfc08, 0xfc08 }, /* 0xfc09 */ { true, 0xfc09, 0xfc09 }, /* 0xfc0a */ { true, 0xfc0a, 0xfc0a }, /* 0xfc0b */ { true, 0xfc0b, 0xfc0b }, /* 0xfc0c */ { true, 0xfc0c, 0xfc0c }, /* 0xfc0d */ { true, 0xfc0d, 0xfc0d }, /* 0xfc0e */ { true, 0xfc0e, 0xfc0e }, /* 0xfc0f */ { true, 0xfc0f, 0xfc0f }, /* 0xfc10 */ { true, 0xfc10, 0xfc10 }, /* 0xfc11 */ { true, 0xfc11, 0xfc11 }, /* 0xfc12 */ { true, 0xfc12, 0xfc12 }, /* 0xfc13 */ { true, 0xfc13, 0xfc13 }, /* 0xfc14 */ { true, 0xfc14, 0xfc14 }, /* 0xfc15 */ { true, 0xfc15, 0xfc15 }, /* 0xfc16 */ { true, 0xfc16, 0xfc16 }, /* 0xfc17 */ { true, 0xfc17, 0xfc17 }, /* 0xfc18 */ { true, 0xfc18, 0xfc18 }, /* 0xfc19 */ { true, 0xfc19, 0xfc19 }, /* 0xfc1a */ { true, 0xfc1a, 0xfc1a }, /* 0xfc1b */ { true, 0xfc1b, 0xfc1b }, /* 0xfc1c */ { true, 0xfc1c, 0xfc1c }, /* 0xfc1d */ { true, 0xfc1d, 0xfc1d }, /* 0xfc1e */ { true, 0xfc1e, 0xfc1e }, /* 0xfc1f */ { true, 0xfc1f, 0xfc1f }, /* 0xfc20 */ { true, 0xfc20, 0xfc20 }, /* 0xfc21 */ { true, 0xfc21, 0xfc21 }, /* 0xfc22 */ { true, 0xfc22, 0xfc22 }, /* 0xfc23 */ { true, 0xfc23, 0xfc23 }, /* 0xfc24 */ { true, 0xfc24, 0xfc24 }, /* 0xfc25 */ { true, 0xfc25, 0xfc25 }, /* 0xfc26 */ { true, 0xfc26, 0xfc26 }, /* 0xfc27 */ { true, 0xfc27, 0xfc27 }, /* 0xfc28 */ { true, 0xfc28, 0xfc28 }, /* 0xfc29 */ { true, 0xfc29, 0xfc29 }, /* 0xfc2a */ { true, 0xfc2a, 0xfc2a }, /* 0xfc2b */ { true, 0xfc2b, 0xfc2b }, /* 0xfc2c */ { true, 0xfc2c, 0xfc2c }, /* 0xfc2d */ { true, 0xfc2d, 0xfc2d }, /* 0xfc2e */ { true, 0xfc2e, 0xfc2e }, /* 0xfc2f */ { true, 0xfc2f, 0xfc2f }, /* 0xfc30 */ { true, 0xfc30, 0xfc30 }, /* 0xfc31 */ { true, 0xfc31, 0xfc31 }, /* 0xfc32 */ { true, 0xfc32, 0xfc32 }, /* 0xfc33 */ { true, 0xfc33, 0xfc33 }, /* 0xfc34 */ { true, 0xfc34, 0xfc34 }, /* 0xfc35 */ { true, 0xfc35, 0xfc35 }, /* 0xfc36 */ { true, 0xfc36, 0xfc36 }, /* 0xfc37 */ { true, 0xfc37, 0xfc37 }, /* 0xfc38 */ { true, 0xfc38, 0xfc38 }, /* 0xfc39 */ { true, 0xfc39, 0xfc39 }, /* 0xfc3a */ { true, 0xfc3a, 0xfc3a }, /* 0xfc3b */ { true, 0xfc3b, 0xfc3b }, /* 0xfc3c */ { true, 0xfc3c, 0xfc3c }, /* 0xfc3d */ { true, 0xfc3d, 0xfc3d }, /* 0xfc3e */ { true, 0xfc3e, 0xfc3e }, /* 0xfc3f */ { true, 0xfc3f, 0xfc3f }, /* 0xfc40 */ { true, 0xfc40, 0xfc40 }, /* 0xfc41 */ { true, 0xfc41, 0xfc41 }, /* 0xfc42 */ { true, 0xfc42, 0xfc42 }, /* 0xfc43 */ { true, 0xfc43, 0xfc43 }, /* 0xfc44 */ { true, 0xfc44, 0xfc44 }, /* 0xfc45 */ { true, 0xfc45, 0xfc45 }, /* 0xfc46 */ { true, 0xfc46, 0xfc46 }, /* 0xfc47 */ { true, 0xfc47, 0xfc47 }, /* 0xfc48 */ { true, 0xfc48, 0xfc48 }, /* 0xfc49 */ { true, 0xfc49, 0xfc49 }, /* 0xfc4a */ { true, 0xfc4a, 0xfc4a }, /* 0xfc4b */ { true, 0xfc4b, 0xfc4b }, /* 0xfc4c */ { true, 0xfc4c, 0xfc4c }, /* 0xfc4d */ { true, 0xfc4d, 0xfc4d }, /* 0xfc4e */ { true, 0xfc4e, 0xfc4e }, /* 0xfc4f */ { true, 0xfc4f, 0xfc4f }, /* 0xfc50 */ { true, 0xfc50, 0xfc50 }, /* 0xfc51 */ { true, 0xfc51, 0xfc51 }, /* 0xfc52 */ { true, 0xfc52, 0xfc52 }, /* 0xfc53 */ { true, 0xfc53, 0xfc53 }, /* 0xfc54 */ { true, 0xfc54, 0xfc54 }, /* 0xfc55 */ { true, 0xfc55, 0xfc55 }, /* 0xfc56 */ { true, 0xfc56, 0xfc56 }, /* 0xfc57 */ { true, 0xfc57, 0xfc57 }, /* 0xfc58 */ { true, 0xfc58, 0xfc58 }, /* 0xfc59 */ { true, 0xfc59, 0xfc59 }, /* 0xfc5a */ { true, 0xfc5a, 0xfc5a }, /* 0xfc5b */ { true, 0xfc5b, 0xfc5b }, /* 0xfc5c */ { true, 0xfc5c, 0xfc5c }, /* 0xfc5d */ { true, 0xfc5d, 0xfc5d }, /* 0xfc5e */ { true, 0xfc5e, 0xfc5e }, /* 0xfc5f */ { true, 0xfc5f, 0xfc5f }, /* 0xfc60 */ { true, 0xfc60, 0xfc60 }, /* 0xfc61 */ { true, 0xfc61, 0xfc61 }, /* 0xfc62 */ { true, 0xfc62, 0xfc62 }, /* 0xfc63 */ { true, 0xfc63, 0xfc63 }, /* 0xfc64 */ { true, 0xfc64, 0xfc64 }, /* 0xfc65 */ { true, 0xfc65, 0xfc65 }, /* 0xfc66 */ { true, 0xfc66, 0xfc66 }, /* 0xfc67 */ { true, 0xfc67, 0xfc67 }, /* 0xfc68 */ { true, 0xfc68, 0xfc68 }, /* 0xfc69 */ { true, 0xfc69, 0xfc69 }, /* 0xfc6a */ { true, 0xfc6a, 0xfc6a }, /* 0xfc6b */ { true, 0xfc6b, 0xfc6b }, /* 0xfc6c */ { true, 0xfc6c, 0xfc6c }, /* 0xfc6d */ { true, 0xfc6d, 0xfc6d }, /* 0xfc6e */ { true, 0xfc6e, 0xfc6e }, /* 0xfc6f */ { true, 0xfc6f, 0xfc6f }, /* 0xfc70 */ { true, 0xfc70, 0xfc70 }, /* 0xfc71 */ { true, 0xfc71, 0xfc71 }, /* 0xfc72 */ { true, 0xfc72, 0xfc72 }, /* 0xfc73 */ { true, 0xfc73, 0xfc73 }, /* 0xfc74 */ { true, 0xfc74, 0xfc74 }, /* 0xfc75 */ { true, 0xfc75, 0xfc75 }, /* 0xfc76 */ { true, 0xfc76, 0xfc76 }, /* 0xfc77 */ { true, 0xfc77, 0xfc77 }, /* 0xfc78 */ { true, 0xfc78, 0xfc78 }, /* 0xfc79 */ { true, 0xfc79, 0xfc79 }, /* 0xfc7a */ { true, 0xfc7a, 0xfc7a }, /* 0xfc7b */ { true, 0xfc7b, 0xfc7b }, /* 0xfc7c */ { true, 0xfc7c, 0xfc7c }, /* 0xfc7d */ { true, 0xfc7d, 0xfc7d }, /* 0xfc7e */ { true, 0xfc7e, 0xfc7e }, /* 0xfc7f */ { true, 0xfc7f, 0xfc7f }, /* 0xfc80 */ { true, 0xfc80, 0xfc80 }, /* 0xfc81 */ { true, 0xfc81, 0xfc81 }, /* 0xfc82 */ { true, 0xfc82, 0xfc82 }, /* 0xfc83 */ { true, 0xfc83, 0xfc83 }, /* 0xfc84 */ { true, 0xfc84, 0xfc84 }, /* 0xfc85 */ { true, 0xfc85, 0xfc85 }, /* 0xfc86 */ { true, 0xfc86, 0xfc86 }, /* 0xfc87 */ { true, 0xfc87, 0xfc87 }, /* 0xfc88 */ { true, 0xfc88, 0xfc88 }, /* 0xfc89 */ { true, 0xfc89, 0xfc89 }, /* 0xfc8a */ { true, 0xfc8a, 0xfc8a }, /* 0xfc8b */ { true, 0xfc8b, 0xfc8b }, /* 0xfc8c */ { true, 0xfc8c, 0xfc8c }, /* 0xfc8d */ { true, 0xfc8d, 0xfc8d }, /* 0xfc8e */ { true, 0xfc8e, 0xfc8e }, /* 0xfc8f */ { true, 0xfc8f, 0xfc8f }, /* 0xfc90 */ { true, 0xfc90, 0xfc90 }, /* 0xfc91 */ { true, 0xfc91, 0xfc91 }, /* 0xfc92 */ { true, 0xfc92, 0xfc92 }, /* 0xfc93 */ { true, 0xfc93, 0xfc93 }, /* 0xfc94 */ { true, 0xfc94, 0xfc94 }, /* 0xfc95 */ { true, 0xfc95, 0xfc95 }, /* 0xfc96 */ { true, 0xfc96, 0xfc96 }, /* 0xfc97 */ { true, 0xfc97, 0xfc97 }, /* 0xfc98 */ { true, 0xfc98, 0xfc98 }, /* 0xfc99 */ { true, 0xfc99, 0xfc99 }, /* 0xfc9a */ { true, 0xfc9a, 0xfc9a }, /* 0xfc9b */ { true, 0xfc9b, 0xfc9b }, /* 0xfc9c */ { true, 0xfc9c, 0xfc9c }, /* 0xfc9d */ { true, 0xfc9d, 0xfc9d }, /* 0xfc9e */ { true, 0xfc9e, 0xfc9e }, /* 0xfc9f */ { true, 0xfc9f, 0xfc9f }, /* 0xfca0 */ { true, 0xfca0, 0xfca0 }, /* 0xfca1 */ { true, 0xfca1, 0xfca1 }, /* 0xfca2 */ { true, 0xfca2, 0xfca2 }, /* 0xfca3 */ { true, 0xfca3, 0xfca3 }, /* 0xfca4 */ { true, 0xfca4, 0xfca4 }, /* 0xfca5 */ { true, 0xfca5, 0xfca5 }, /* 0xfca6 */ { true, 0xfca6, 0xfca6 }, /* 0xfca7 */ { true, 0xfca7, 0xfca7 }, /* 0xfca8 */ { true, 0xfca8, 0xfca8 }, /* 0xfca9 */ { true, 0xfca9, 0xfca9 }, /* 0xfcaa */ { true, 0xfcaa, 0xfcaa }, /* 0xfcab */ { true, 0xfcab, 0xfcab }, /* 0xfcac */ { true, 0xfcac, 0xfcac }, /* 0xfcad */ { true, 0xfcad, 0xfcad }, /* 0xfcae */ { true, 0xfcae, 0xfcae }, /* 0xfcaf */ { true, 0xfcaf, 0xfcaf }, /* 0xfcb0 */ { true, 0xfcb0, 0xfcb0 }, /* 0xfcb1 */ { true, 0xfcb1, 0xfcb1 }, /* 0xfcb2 */ { true, 0xfcb2, 0xfcb2 }, /* 0xfcb3 */ { true, 0xfcb3, 0xfcb3 }, /* 0xfcb4 */ { true, 0xfcb4, 0xfcb4 }, /* 0xfcb5 */ { true, 0xfcb5, 0xfcb5 }, /* 0xfcb6 */ { true, 0xfcb6, 0xfcb6 }, /* 0xfcb7 */ { true, 0xfcb7, 0xfcb7 }, /* 0xfcb8 */ { true, 0xfcb8, 0xfcb8 }, /* 0xfcb9 */ { true, 0xfcb9, 0xfcb9 }, /* 0xfcba */ { true, 0xfcba, 0xfcba }, /* 0xfcbb */ { true, 0xfcbb, 0xfcbb }, /* 0xfcbc */ { true, 0xfcbc, 0xfcbc }, /* 0xfcbd */ { true, 0xfcbd, 0xfcbd }, /* 0xfcbe */ { true, 0xfcbe, 0xfcbe }, /* 0xfcbf */ { true, 0xfcbf, 0xfcbf }, /* 0xfcc0 */ { true, 0xfcc0, 0xfcc0 }, /* 0xfcc1 */ { true, 0xfcc1, 0xfcc1 }, /* 0xfcc2 */ { true, 0xfcc2, 0xfcc2 }, /* 0xfcc3 */ { true, 0xfcc3, 0xfcc3 }, /* 0xfcc4 */ { true, 0xfcc4, 0xfcc4 }, /* 0xfcc5 */ { true, 0xfcc5, 0xfcc5 }, /* 0xfcc6 */ { true, 0xfcc6, 0xfcc6 }, /* 0xfcc7 */ { true, 0xfcc7, 0xfcc7 }, /* 0xfcc8 */ { true, 0xfcc8, 0xfcc8 }, /* 0xfcc9 */ { true, 0xfcc9, 0xfcc9 }, /* 0xfcca */ { true, 0xfcca, 0xfcca }, /* 0xfccb */ { true, 0xfccb, 0xfccb }, /* 0xfccc */ { true, 0xfccc, 0xfccc }, /* 0xfccd */ { true, 0xfccd, 0xfccd }, /* 0xfcce */ { true, 0xfcce, 0xfcce }, /* 0xfccf */ { true, 0xfccf, 0xfccf }, /* 0xfcd0 */ { true, 0xfcd0, 0xfcd0 }, /* 0xfcd1 */ { true, 0xfcd1, 0xfcd1 }, /* 0xfcd2 */ { true, 0xfcd2, 0xfcd2 }, /* 0xfcd3 */ { true, 0xfcd3, 0xfcd3 }, /* 0xfcd4 */ { true, 0xfcd4, 0xfcd4 }, /* 0xfcd5 */ { true, 0xfcd5, 0xfcd5 }, /* 0xfcd6 */ { true, 0xfcd6, 0xfcd6 }, /* 0xfcd7 */ { true, 0xfcd7, 0xfcd7 }, /* 0xfcd8 */ { true, 0xfcd8, 0xfcd8 }, /* 0xfcd9 */ { true, 0xfcd9, 0xfcd9 }, /* 0xfcda */ { true, 0xfcda, 0xfcda }, /* 0xfcdb */ { true, 0xfcdb, 0xfcdb }, /* 0xfcdc */ { true, 0xfcdc, 0xfcdc }, /* 0xfcdd */ { true, 0xfcdd, 0xfcdd }, /* 0xfcde */ { true, 0xfcde, 0xfcde }, /* 0xfcdf */ { true, 0xfcdf, 0xfcdf }, /* 0xfce0 */ { true, 0xfce0, 0xfce0 }, /* 0xfce1 */ { true, 0xfce1, 0xfce1 }, /* 0xfce2 */ { true, 0xfce2, 0xfce2 }, /* 0xfce3 */ { true, 0xfce3, 0xfce3 }, /* 0xfce4 */ { true, 0xfce4, 0xfce4 }, /* 0xfce5 */ { true, 0xfce5, 0xfce5 }, /* 0xfce6 */ { true, 0xfce6, 0xfce6 }, /* 0xfce7 */ { true, 0xfce7, 0xfce7 }, /* 0xfce8 */ { true, 0xfce8, 0xfce8 }, /* 0xfce9 */ { true, 0xfce9, 0xfce9 }, /* 0xfcea */ { true, 0xfcea, 0xfcea }, /* 0xfceb */ { true, 0xfceb, 0xfceb }, /* 0xfcec */ { true, 0xfcec, 0xfcec }, /* 0xfced */ { true, 0xfced, 0xfced }, /* 0xfcee */ { true, 0xfcee, 0xfcee }, /* 0xfcef */ { true, 0xfcef, 0xfcef }, /* 0xfcf0 */ { true, 0xfcf0, 0xfcf0 }, /* 0xfcf1 */ { true, 0xfcf1, 0xfcf1 }, /* 0xfcf2 */ { true, 0xfcf2, 0xfcf2 }, /* 0xfcf3 */ { true, 0xfcf3, 0xfcf3 }, /* 0xfcf4 */ { true, 0xfcf4, 0xfcf4 }, /* 0xfcf5 */ { true, 0xfcf5, 0xfcf5 }, /* 0xfcf6 */ { true, 0xfcf6, 0xfcf6 }, /* 0xfcf7 */ { true, 0xfcf7, 0xfcf7 }, /* 0xfcf8 */ { true, 0xfcf8, 0xfcf8 }, /* 0xfcf9 */ { true, 0xfcf9, 0xfcf9 }, /* 0xfcfa */ { true, 0xfcfa, 0xfcfa }, /* 0xfcfb */ { true, 0xfcfb, 0xfcfb }, /* 0xfcfc */ { true, 0xfcfc, 0xfcfc }, /* 0xfcfd */ { true, 0xfcfd, 0xfcfd }, /* 0xfcfe */ { true, 0xfcfe, 0xfcfe }, /* 0xfcff */ { true, 0xfcff, 0xfcff }, /* 0xfd00 */ { true, 0xfd00, 0xfd00 }, /* 0xfd01 */ { true, 0xfd01, 0xfd01 }, /* 0xfd02 */ { true, 0xfd02, 0xfd02 }, /* 0xfd03 */ { true, 0xfd03, 0xfd03 }, /* 0xfd04 */ { true, 0xfd04, 0xfd04 }, /* 0xfd05 */ { true, 0xfd05, 0xfd05 }, /* 0xfd06 */ { true, 0xfd06, 0xfd06 }, /* 0xfd07 */ { true, 0xfd07, 0xfd07 }, /* 0xfd08 */ { true, 0xfd08, 0xfd08 }, /* 0xfd09 */ { true, 0xfd09, 0xfd09 }, /* 0xfd0a */ { true, 0xfd0a, 0xfd0a }, /* 0xfd0b */ { true, 0xfd0b, 0xfd0b }, /* 0xfd0c */ { true, 0xfd0c, 0xfd0c }, /* 0xfd0d */ { true, 0xfd0d, 0xfd0d }, /* 0xfd0e */ { true, 0xfd0e, 0xfd0e }, /* 0xfd0f */ { true, 0xfd0f, 0xfd0f }, /* 0xfd10 */ { true, 0xfd10, 0xfd10 }, /* 0xfd11 */ { true, 0xfd11, 0xfd11 }, /* 0xfd12 */ { true, 0xfd12, 0xfd12 }, /* 0xfd13 */ { true, 0xfd13, 0xfd13 }, /* 0xfd14 */ { true, 0xfd14, 0xfd14 }, /* 0xfd15 */ { true, 0xfd15, 0xfd15 }, /* 0xfd16 */ { true, 0xfd16, 0xfd16 }, /* 0xfd17 */ { true, 0xfd17, 0xfd17 }, /* 0xfd18 */ { true, 0xfd18, 0xfd18 }, /* 0xfd19 */ { true, 0xfd19, 0xfd19 }, /* 0xfd1a */ { true, 0xfd1a, 0xfd1a }, /* 0xfd1b */ { true, 0xfd1b, 0xfd1b }, /* 0xfd1c */ { true, 0xfd1c, 0xfd1c }, /* 0xfd1d */ { true, 0xfd1d, 0xfd1d }, /* 0xfd1e */ { true, 0xfd1e, 0xfd1e }, /* 0xfd1f */ { true, 0xfd1f, 0xfd1f }, /* 0xfd20 */ { true, 0xfd20, 0xfd20 }, /* 0xfd21 */ { true, 0xfd21, 0xfd21 }, /* 0xfd22 */ { true, 0xfd22, 0xfd22 }, /* 0xfd23 */ { true, 0xfd23, 0xfd23 }, /* 0xfd24 */ { true, 0xfd24, 0xfd24 }, /* 0xfd25 */ { true, 0xfd25, 0xfd25 }, /* 0xfd26 */ { true, 0xfd26, 0xfd26 }, /* 0xfd27 */ { true, 0xfd27, 0xfd27 }, /* 0xfd28 */ { true, 0xfd28, 0xfd28 }, /* 0xfd29 */ { true, 0xfd29, 0xfd29 }, /* 0xfd2a */ { true, 0xfd2a, 0xfd2a }, /* 0xfd2b */ { true, 0xfd2b, 0xfd2b }, /* 0xfd2c */ { true, 0xfd2c, 0xfd2c }, /* 0xfd2d */ { true, 0xfd2d, 0xfd2d }, /* 0xfd2e */ { true, 0xfd2e, 0xfd2e }, /* 0xfd2f */ { true, 0xfd2f, 0xfd2f }, /* 0xfd30 */ { true, 0xfd30, 0xfd30 }, /* 0xfd31 */ { true, 0xfd31, 0xfd31 }, /* 0xfd32 */ { true, 0xfd32, 0xfd32 }, /* 0xfd33 */ { true, 0xfd33, 0xfd33 }, /* 0xfd34 */ { true, 0xfd34, 0xfd34 }, /* 0xfd35 */ { true, 0xfd35, 0xfd35 }, /* 0xfd36 */ { true, 0xfd36, 0xfd36 }, /* 0xfd37 */ { true, 0xfd37, 0xfd37 }, /* 0xfd38 */ { true, 0xfd38, 0xfd38 }, /* 0xfd39 */ { true, 0xfd39, 0xfd39 }, /* 0xfd3a */ { true, 0xfd3a, 0xfd3a }, /* 0xfd3b */ { true, 0xfd3b, 0xfd3b }, /* 0xfd3c */ { true, 0xfd3c, 0xfd3c }, /* 0xfd3d */ { true, 0xfd3d, 0xfd3d }, /* 0xfd3e */ { false, 0xfd3e, 0xfd3e }, /* 0xfd3f */ { false, 0xfd3f, 0xfd3f }, /* 0xfd40 */ { false, 0xfd40, 0xfd40 }, /* 0xfd41 */ { false, 0xfd41, 0xfd41 }, /* 0xfd42 */ { false, 0xfd42, 0xfd42 }, /* 0xfd43 */ { false, 0xfd43, 0xfd43 }, /* 0xfd44 */ { false, 0xfd44, 0xfd44 }, /* 0xfd45 */ { false, 0xfd45, 0xfd45 }, /* 0xfd46 */ { false, 0xfd46, 0xfd46 }, /* 0xfd47 */ { false, 0xfd47, 0xfd47 }, /* 0xfd48 */ { false, 0xfd48, 0xfd48 }, /* 0xfd49 */ { false, 0xfd49, 0xfd49 }, /* 0xfd4a */ { false, 0xfd4a, 0xfd4a }, /* 0xfd4b */ { false, 0xfd4b, 0xfd4b }, /* 0xfd4c */ { false, 0xfd4c, 0xfd4c }, /* 0xfd4d */ { false, 0xfd4d, 0xfd4d }, /* 0xfd4e */ { false, 0xfd4e, 0xfd4e }, /* 0xfd4f */ { false, 0xfd4f, 0xfd4f }, /* 0xfd50 */ { true, 0xfd50, 0xfd50 }, /* 0xfd51 */ { true, 0xfd51, 0xfd51 }, /* 0xfd52 */ { true, 0xfd52, 0xfd52 }, /* 0xfd53 */ { true, 0xfd53, 0xfd53 }, /* 0xfd54 */ { true, 0xfd54, 0xfd54 }, /* 0xfd55 */ { true, 0xfd55, 0xfd55 }, /* 0xfd56 */ { true, 0xfd56, 0xfd56 }, /* 0xfd57 */ { true, 0xfd57, 0xfd57 }, /* 0xfd58 */ { true, 0xfd58, 0xfd58 }, /* 0xfd59 */ { true, 0xfd59, 0xfd59 }, /* 0xfd5a */ { true, 0xfd5a, 0xfd5a }, /* 0xfd5b */ { true, 0xfd5b, 0xfd5b }, /* 0xfd5c */ { true, 0xfd5c, 0xfd5c }, /* 0xfd5d */ { true, 0xfd5d, 0xfd5d }, /* 0xfd5e */ { true, 0xfd5e, 0xfd5e }, /* 0xfd5f */ { true, 0xfd5f, 0xfd5f }, /* 0xfd60 */ { true, 0xfd60, 0xfd60 }, /* 0xfd61 */ { true, 0xfd61, 0xfd61 }, /* 0xfd62 */ { true, 0xfd62, 0xfd62 }, /* 0xfd63 */ { true, 0xfd63, 0xfd63 }, /* 0xfd64 */ { true, 0xfd64, 0xfd64 }, /* 0xfd65 */ { true, 0xfd65, 0xfd65 }, /* 0xfd66 */ { true, 0xfd66, 0xfd66 }, /* 0xfd67 */ { true, 0xfd67, 0xfd67 }, /* 0xfd68 */ { true, 0xfd68, 0xfd68 }, /* 0xfd69 */ { true, 0xfd69, 0xfd69 }, /* 0xfd6a */ { true, 0xfd6a, 0xfd6a }, /* 0xfd6b */ { true, 0xfd6b, 0xfd6b }, /* 0xfd6c */ { true, 0xfd6c, 0xfd6c }, /* 0xfd6d */ { true, 0xfd6d, 0xfd6d }, /* 0xfd6e */ { true, 0xfd6e, 0xfd6e }, /* 0xfd6f */ { true, 0xfd6f, 0xfd6f }, /* 0xfd70 */ { true, 0xfd70, 0xfd70 }, /* 0xfd71 */ { true, 0xfd71, 0xfd71 }, /* 0xfd72 */ { true, 0xfd72, 0xfd72 }, /* 0xfd73 */ { true, 0xfd73, 0xfd73 }, /* 0xfd74 */ { true, 0xfd74, 0xfd74 }, /* 0xfd75 */ { true, 0xfd75, 0xfd75 }, /* 0xfd76 */ { true, 0xfd76, 0xfd76 }, /* 0xfd77 */ { true, 0xfd77, 0xfd77 }, /* 0xfd78 */ { true, 0xfd78, 0xfd78 }, /* 0xfd79 */ { true, 0xfd79, 0xfd79 }, /* 0xfd7a */ { true, 0xfd7a, 0xfd7a }, /* 0xfd7b */ { true, 0xfd7b, 0xfd7b }, /* 0xfd7c */ { true, 0xfd7c, 0xfd7c }, /* 0xfd7d */ { true, 0xfd7d, 0xfd7d }, /* 0xfd7e */ { true, 0xfd7e, 0xfd7e }, /* 0xfd7f */ { true, 0xfd7f, 0xfd7f }, /* 0xfd80 */ { true, 0xfd80, 0xfd80 }, /* 0xfd81 */ { true, 0xfd81, 0xfd81 }, /* 0xfd82 */ { true, 0xfd82, 0xfd82 }, /* 0xfd83 */ { true, 0xfd83, 0xfd83 }, /* 0xfd84 */ { true, 0xfd84, 0xfd84 }, /* 0xfd85 */ { true, 0xfd85, 0xfd85 }, /* 0xfd86 */ { true, 0xfd86, 0xfd86 }, /* 0xfd87 */ { true, 0xfd87, 0xfd87 }, /* 0xfd88 */ { true, 0xfd88, 0xfd88 }, /* 0xfd89 */ { true, 0xfd89, 0xfd89 }, /* 0xfd8a */ { true, 0xfd8a, 0xfd8a }, /* 0xfd8b */ { true, 0xfd8b, 0xfd8b }, /* 0xfd8c */ { true, 0xfd8c, 0xfd8c }, /* 0xfd8d */ { true, 0xfd8d, 0xfd8d }, /* 0xfd8e */ { true, 0xfd8e, 0xfd8e }, /* 0xfd8f */ { true, 0xfd8f, 0xfd8f }, /* 0xfd90 */ { false, 0xfd90, 0xfd90 }, /* 0xfd91 */ { false, 0xfd91, 0xfd91 }, /* 0xfd92 */ { true, 0xfd92, 0xfd92 }, /* 0xfd93 */ { true, 0xfd93, 0xfd93 }, /* 0xfd94 */ { true, 0xfd94, 0xfd94 }, /* 0xfd95 */ { true, 0xfd95, 0xfd95 }, /* 0xfd96 */ { true, 0xfd96, 0xfd96 }, /* 0xfd97 */ { true, 0xfd97, 0xfd97 }, /* 0xfd98 */ { true, 0xfd98, 0xfd98 }, /* 0xfd99 */ { true, 0xfd99, 0xfd99 }, /* 0xfd9a */ { true, 0xfd9a, 0xfd9a }, /* 0xfd9b */ { true, 0xfd9b, 0xfd9b }, /* 0xfd9c */ { true, 0xfd9c, 0xfd9c }, /* 0xfd9d */ { true, 0xfd9d, 0xfd9d }, /* 0xfd9e */ { true, 0xfd9e, 0xfd9e }, /* 0xfd9f */ { true, 0xfd9f, 0xfd9f }, /* 0xfda0 */ { true, 0xfda0, 0xfda0 }, /* 0xfda1 */ { true, 0xfda1, 0xfda1 }, /* 0xfda2 */ { true, 0xfda2, 0xfda2 }, /* 0xfda3 */ { true, 0xfda3, 0xfda3 }, /* 0xfda4 */ { true, 0xfda4, 0xfda4 }, /* 0xfda5 */ { true, 0xfda5, 0xfda5 }, /* 0xfda6 */ { true, 0xfda6, 0xfda6 }, /* 0xfda7 */ { true, 0xfda7, 0xfda7 }, /* 0xfda8 */ { true, 0xfda8, 0xfda8 }, /* 0xfda9 */ { true, 0xfda9, 0xfda9 }, /* 0xfdaa */ { true, 0xfdaa, 0xfdaa }, /* 0xfdab */ { true, 0xfdab, 0xfdab }, /* 0xfdac */ { true, 0xfdac, 0xfdac }, /* 0xfdad */ { true, 0xfdad, 0xfdad }, /* 0xfdae */ { true, 0xfdae, 0xfdae }, /* 0xfdaf */ { true, 0xfdaf, 0xfdaf }, /* 0xfdb0 */ { true, 0xfdb0, 0xfdb0 }, /* 0xfdb1 */ { true, 0xfdb1, 0xfdb1 }, /* 0xfdb2 */ { true, 0xfdb2, 0xfdb2 }, /* 0xfdb3 */ { true, 0xfdb3, 0xfdb3 }, /* 0xfdb4 */ { true, 0xfdb4, 0xfdb4 }, /* 0xfdb5 */ { true, 0xfdb5, 0xfdb5 }, /* 0xfdb6 */ { true, 0xfdb6, 0xfdb6 }, /* 0xfdb7 */ { true, 0xfdb7, 0xfdb7 }, /* 0xfdb8 */ { true, 0xfdb8, 0xfdb8 }, /* 0xfdb9 */ { true, 0xfdb9, 0xfdb9 }, /* 0xfdba */ { true, 0xfdba, 0xfdba }, /* 0xfdbb */ { true, 0xfdbb, 0xfdbb }, /* 0xfdbc */ { true, 0xfdbc, 0xfdbc }, /* 0xfdbd */ { true, 0xfdbd, 0xfdbd }, /* 0xfdbe */ { true, 0xfdbe, 0xfdbe }, /* 0xfdbf */ { true, 0xfdbf, 0xfdbf }, /* 0xfdc0 */ { true, 0xfdc0, 0xfdc0 }, /* 0xfdc1 */ { true, 0xfdc1, 0xfdc1 }, /* 0xfdc2 */ { true, 0xfdc2, 0xfdc2 }, /* 0xfdc3 */ { true, 0xfdc3, 0xfdc3 }, /* 0xfdc4 */ { true, 0xfdc4, 0xfdc4 }, /* 0xfdc5 */ { true, 0xfdc5, 0xfdc5 }, /* 0xfdc6 */ { true, 0xfdc6, 0xfdc6 }, /* 0xfdc7 */ { true, 0xfdc7, 0xfdc7 }, /* 0xfdc8 */ { false, 0xfdc8, 0xfdc8 }, /* 0xfdc9 */ { false, 0xfdc9, 0xfdc9 }, /* 0xfdca */ { false, 0xfdca, 0xfdca }, /* 0xfdcb */ { false, 0xfdcb, 0xfdcb }, /* 0xfdcc */ { false, 0xfdcc, 0xfdcc }, /* 0xfdcd */ { false, 0xfdcd, 0xfdcd }, /* 0xfdce */ { false, 0xfdce, 0xfdce }, /* 0xfdcf */ { false, 0xfdcf, 0xfdcf }, /* 0xfdd0 */ { false, 0xfdd0, 0xfdd0 }, /* 0xfdd1 */ { false, 0xfdd1, 0xfdd1 }, /* 0xfdd2 */ { false, 0xfdd2, 0xfdd2 }, /* 0xfdd3 */ { false, 0xfdd3, 0xfdd3 }, /* 0xfdd4 */ { false, 0xfdd4, 0xfdd4 }, /* 0xfdd5 */ { false, 0xfdd5, 0xfdd5 }, /* 0xfdd6 */ { false, 0xfdd6, 0xfdd6 }, /* 0xfdd7 */ { false, 0xfdd7, 0xfdd7 }, /* 0xfdd8 */ { false, 0xfdd8, 0xfdd8 }, /* 0xfdd9 */ { false, 0xfdd9, 0xfdd9 }, /* 0xfdda */ { false, 0xfdda, 0xfdda }, /* 0xfddb */ { false, 0xfddb, 0xfddb }, /* 0xfddc */ { false, 0xfddc, 0xfddc }, /* 0xfddd */ { false, 0xfddd, 0xfddd }, /* 0xfdde */ { false, 0xfdde, 0xfdde }, /* 0xfddf */ { false, 0xfddf, 0xfddf }, /* 0xfde0 */ { false, 0xfde0, 0xfde0 }, /* 0xfde1 */ { false, 0xfde1, 0xfde1 }, /* 0xfde2 */ { false, 0xfde2, 0xfde2 }, /* 0xfde3 */ { false, 0xfde3, 0xfde3 }, /* 0xfde4 */ { false, 0xfde4, 0xfde4 }, /* 0xfde5 */ { false, 0xfde5, 0xfde5 }, /* 0xfde6 */ { false, 0xfde6, 0xfde6 }, /* 0xfde7 */ { false, 0xfde7, 0xfde7 }, /* 0xfde8 */ { false, 0xfde8, 0xfde8 }, /* 0xfde9 */ { false, 0xfde9, 0xfde9 }, /* 0xfdea */ { false, 0xfdea, 0xfdea }, /* 0xfdeb */ { false, 0xfdeb, 0xfdeb }, /* 0xfdec */ { false, 0xfdec, 0xfdec }, /* 0xfded */ { false, 0xfded, 0xfded }, /* 0xfdee */ { false, 0xfdee, 0xfdee }, /* 0xfdef */ { false, 0xfdef, 0xfdef }, /* 0xfdf0 */ { true, 0xfdf0, 0xfdf0 }, /* 0xfdf1 */ { true, 0xfdf1, 0xfdf1 }, /* 0xfdf2 */ { true, 0xfdf2, 0xfdf2 }, /* 0xfdf3 */ { true, 0xfdf3, 0xfdf3 }, /* 0xfdf4 */ { true, 0xfdf4, 0xfdf4 }, /* 0xfdf5 */ { true, 0xfdf5, 0xfdf5 }, /* 0xfdf6 */ { true, 0xfdf6, 0xfdf6 }, /* 0xfdf7 */ { true, 0xfdf7, 0xfdf7 }, /* 0xfdf8 */ { true, 0xfdf8, 0xfdf8 }, /* 0xfdf9 */ { true, 0xfdf9, 0xfdf9 }, /* 0xfdfa */ { true, 0xfdfa, 0xfdfa }, /* 0xfdfb */ { true, 0xfdfb, 0xfdfb }, /* 0xfdfc */ { false, 0xfdfc, 0xfdfc }, /* 0xfdfd */ { false, 0xfdfd, 0xfdfd }, /* 0xfdfe */ { false, 0xfdfe, 0xfdfe }, /* 0xfdff */ { false, 0xfdff, 0xfdff }, /* 0xfe00 */ { true, 0xfe00, 0xfe00 }, /* 0xfe01 */ { true, 0xfe01, 0xfe01 }, /* 0xfe02 */ { true, 0xfe02, 0xfe02 }, /* 0xfe03 */ { true, 0xfe03, 0xfe03 }, /* 0xfe04 */ { true, 0xfe04, 0xfe04 }, /* 0xfe05 */ { true, 0xfe05, 0xfe05 }, /* 0xfe06 */ { true, 0xfe06, 0xfe06 }, /* 0xfe07 */ { true, 0xfe07, 0xfe07 }, /* 0xfe08 */ { true, 0xfe08, 0xfe08 }, /* 0xfe09 */ { true, 0xfe09, 0xfe09 }, /* 0xfe0a */ { true, 0xfe0a, 0xfe0a }, /* 0xfe0b */ { true, 0xfe0b, 0xfe0b }, /* 0xfe0c */ { true, 0xfe0c, 0xfe0c }, /* 0xfe0d */ { true, 0xfe0d, 0xfe0d }, /* 0xfe0e */ { true, 0xfe0e, 0xfe0e }, /* 0xfe0f */ { true, 0xfe0f, 0xfe0f }, /* 0xfe10 */ { false, 0xfe10, 0xfe10 }, /* 0xfe11 */ { false, 0xfe11, 0xfe11 }, /* 0xfe12 */ { false, 0xfe12, 0xfe12 }, /* 0xfe13 */ { false, 0xfe13, 0xfe13 }, /* 0xfe14 */ { false, 0xfe14, 0xfe14 }, /* 0xfe15 */ { false, 0xfe15, 0xfe15 }, /* 0xfe16 */ { false, 0xfe16, 0xfe16 }, /* 0xfe17 */ { false, 0xfe17, 0xfe17 }, /* 0xfe18 */ { false, 0xfe18, 0xfe18 }, /* 0xfe19 */ { false, 0xfe19, 0xfe19 }, /* 0xfe1a */ { false, 0xfe1a, 0xfe1a }, /* 0xfe1b */ { false, 0xfe1b, 0xfe1b }, /* 0xfe1c */ { false, 0xfe1c, 0xfe1c }, /* 0xfe1d */ { false, 0xfe1d, 0xfe1d }, /* 0xfe1e */ { false, 0xfe1e, 0xfe1e }, /* 0xfe1f */ { false, 0xfe1f, 0xfe1f }, /* 0xfe20 */ { true, 0xfe20, 0xfe20 }, /* 0xfe21 */ { true, 0xfe21, 0xfe21 }, /* 0xfe22 */ { true, 0xfe22, 0xfe22 }, /* 0xfe23 */ { true, 0xfe23, 0xfe23 }, /* 0xfe24 */ { false, 0xfe24, 0xfe24 }, /* 0xfe25 */ { false, 0xfe25, 0xfe25 }, /* 0xfe26 */ { false, 0xfe26, 0xfe26 }, /* 0xfe27 */ { false, 0xfe27, 0xfe27 }, /* 0xfe28 */ { false, 0xfe28, 0xfe28 }, /* 0xfe29 */ { false, 0xfe29, 0xfe29 }, /* 0xfe2a */ { false, 0xfe2a, 0xfe2a }, /* 0xfe2b */ { false, 0xfe2b, 0xfe2b }, /* 0xfe2c */ { false, 0xfe2c, 0xfe2c }, /* 0xfe2d */ { false, 0xfe2d, 0xfe2d }, /* 0xfe2e */ { false, 0xfe2e, 0xfe2e }, /* 0xfe2f */ { false, 0xfe2f, 0xfe2f }, /* 0xfe30 */ { false, 0xfe30, 0xfe30 }, /* 0xfe31 */ { false, 0xfe31, 0xfe31 }, /* 0xfe32 */ { false, 0xfe32, 0xfe32 }, /* 0xfe33 */ { false, 0xfe33, 0xfe33 }, /* 0xfe34 */ { false, 0xfe34, 0xfe34 }, /* 0xfe35 */ { false, 0xfe35, 0xfe35 }, /* 0xfe36 */ { false, 0xfe36, 0xfe36 }, /* 0xfe37 */ { false, 0xfe37, 0xfe37 }, /* 0xfe38 */ { false, 0xfe38, 0xfe38 }, /* 0xfe39 */ { false, 0xfe39, 0xfe39 }, /* 0xfe3a */ { false, 0xfe3a, 0xfe3a }, /* 0xfe3b */ { false, 0xfe3b, 0xfe3b }, /* 0xfe3c */ { false, 0xfe3c, 0xfe3c }, /* 0xfe3d */ { false, 0xfe3d, 0xfe3d }, /* 0xfe3e */ { false, 0xfe3e, 0xfe3e }, /* 0xfe3f */ { false, 0xfe3f, 0xfe3f }, /* 0xfe40 */ { false, 0xfe40, 0xfe40 }, /* 0xfe41 */ { false, 0xfe41, 0xfe41 }, /* 0xfe42 */ { false, 0xfe42, 0xfe42 }, /* 0xfe43 */ { false, 0xfe43, 0xfe43 }, /* 0xfe44 */ { false, 0xfe44, 0xfe44 }, /* 0xfe45 */ { false, 0xfe45, 0xfe45 }, /* 0xfe46 */ { false, 0xfe46, 0xfe46 }, /* 0xfe47 */ { false, 0xfe47, 0xfe47 }, /* 0xfe48 */ { false, 0xfe48, 0xfe48 }, /* 0xfe49 */ { false, 0xfe49, 0xfe49 }, /* 0xfe4a */ { false, 0xfe4a, 0xfe4a }, /* 0xfe4b */ { false, 0xfe4b, 0xfe4b }, /* 0xfe4c */ { false, 0xfe4c, 0xfe4c }, /* 0xfe4d */ { false, 0xfe4d, 0xfe4d }, /* 0xfe4e */ { false, 0xfe4e, 0xfe4e }, /* 0xfe4f */ { false, 0xfe4f, 0xfe4f }, /* 0xfe50 */ { false, 0xfe50, 0xfe50 }, /* 0xfe51 */ { false, 0xfe51, 0xfe51 }, /* 0xfe52 */ { false, 0xfe52, 0xfe52 }, /* 0xfe53 */ { false, 0xfe53, 0xfe53 }, /* 0xfe54 */ { false, 0xfe54, 0xfe54 }, /* 0xfe55 */ { false, 0xfe55, 0xfe55 }, /* 0xfe56 */ { false, 0xfe56, 0xfe56 }, /* 0xfe57 */ { false, 0xfe57, 0xfe57 }, /* 0xfe58 */ { false, 0xfe58, 0xfe58 }, /* 0xfe59 */ { false, 0xfe59, 0xfe59 }, /* 0xfe5a */ { false, 0xfe5a, 0xfe5a }, /* 0xfe5b */ { false, 0xfe5b, 0xfe5b }, /* 0xfe5c */ { false, 0xfe5c, 0xfe5c }, /* 0xfe5d */ { false, 0xfe5d, 0xfe5d }, /* 0xfe5e */ { false, 0xfe5e, 0xfe5e }, /* 0xfe5f */ { false, 0xfe5f, 0xfe5f }, /* 0xfe60 */ { false, 0xfe60, 0xfe60 }, /* 0xfe61 */ { false, 0xfe61, 0xfe61 }, /* 0xfe62 */ { false, 0xfe62, 0xfe62 }, /* 0xfe63 */ { false, 0xfe63, 0xfe63 }, /* 0xfe64 */ { false, 0xfe64, 0xfe64 }, /* 0xfe65 */ { false, 0xfe65, 0xfe65 }, /* 0xfe66 */ { false, 0xfe66, 0xfe66 }, /* 0xfe67 */ { false, 0xfe67, 0xfe67 }, /* 0xfe68 */ { false, 0xfe68, 0xfe68 }, /* 0xfe69 */ { false, 0xfe69, 0xfe69 }, /* 0xfe6a */ { false, 0xfe6a, 0xfe6a }, /* 0xfe6b */ { false, 0xfe6b, 0xfe6b }, /* 0xfe6c */ { false, 0xfe6c, 0xfe6c }, /* 0xfe6d */ { false, 0xfe6d, 0xfe6d }, /* 0xfe6e */ { false, 0xfe6e, 0xfe6e }, /* 0xfe6f */ { false, 0xfe6f, 0xfe6f }, /* 0xfe70 */ { true, 0xfe70, 0xfe70 }, /* 0xfe71 */ { true, 0xfe71, 0xfe71 }, /* 0xfe72 */ { true, 0xfe72, 0xfe72 }, /* 0xfe73 */ { true, 0xfe73, 0xfe73 }, /* 0xfe74 */ { true, 0xfe74, 0xfe74 }, /* 0xfe75 */ { false, 0xfe75, 0xfe75 }, /* 0xfe76 */ { true, 0xfe76, 0xfe76 }, /* 0xfe77 */ { true, 0xfe77, 0xfe77 }, /* 0xfe78 */ { true, 0xfe78, 0xfe78 }, /* 0xfe79 */ { true, 0xfe79, 0xfe79 }, /* 0xfe7a */ { true, 0xfe7a, 0xfe7a }, /* 0xfe7b */ { true, 0xfe7b, 0xfe7b }, /* 0xfe7c */ { true, 0xfe7c, 0xfe7c }, /* 0xfe7d */ { true, 0xfe7d, 0xfe7d }, /* 0xfe7e */ { true, 0xfe7e, 0xfe7e }, /* 0xfe7f */ { true, 0xfe7f, 0xfe7f }, /* 0xfe80 */ { true, 0xfe80, 0xfe80 }, /* 0xfe81 */ { true, 0xfe81, 0xfe81 }, /* 0xfe82 */ { true, 0xfe82, 0xfe82 }, /* 0xfe83 */ { true, 0xfe83, 0xfe83 }, /* 0xfe84 */ { true, 0xfe84, 0xfe84 }, /* 0xfe85 */ { true, 0xfe85, 0xfe85 }, /* 0xfe86 */ { true, 0xfe86, 0xfe86 }, /* 0xfe87 */ { true, 0xfe87, 0xfe87 }, /* 0xfe88 */ { true, 0xfe88, 0xfe88 }, /* 0xfe89 */ { true, 0xfe89, 0xfe89 }, /* 0xfe8a */ { true, 0xfe8a, 0xfe8a }, /* 0xfe8b */ { true, 0xfe8b, 0xfe8b }, /* 0xfe8c */ { true, 0xfe8c, 0xfe8c }, /* 0xfe8d */ { true, 0xfe8d, 0xfe8d }, /* 0xfe8e */ { true, 0xfe8e, 0xfe8e }, /* 0xfe8f */ { true, 0xfe8f, 0xfe8f }, /* 0xfe90 */ { true, 0xfe90, 0xfe90 }, /* 0xfe91 */ { true, 0xfe91, 0xfe91 }, /* 0xfe92 */ { true, 0xfe92, 0xfe92 }, /* 0xfe93 */ { true, 0xfe93, 0xfe93 }, /* 0xfe94 */ { true, 0xfe94, 0xfe94 }, /* 0xfe95 */ { true, 0xfe95, 0xfe95 }, /* 0xfe96 */ { true, 0xfe96, 0xfe96 }, /* 0xfe97 */ { true, 0xfe97, 0xfe97 }, /* 0xfe98 */ { true, 0xfe98, 0xfe98 }, /* 0xfe99 */ { true, 0xfe99, 0xfe99 }, /* 0xfe9a */ { true, 0xfe9a, 0xfe9a }, /* 0xfe9b */ { true, 0xfe9b, 0xfe9b }, /* 0xfe9c */ { true, 0xfe9c, 0xfe9c }, /* 0xfe9d */ { true, 0xfe9d, 0xfe9d }, /* 0xfe9e */ { true, 0xfe9e, 0xfe9e }, /* 0xfe9f */ { true, 0xfe9f, 0xfe9f }, /* 0xfea0 */ { true, 0xfea0, 0xfea0 }, /* 0xfea1 */ { true, 0xfea1, 0xfea1 }, /* 0xfea2 */ { true, 0xfea2, 0xfea2 }, /* 0xfea3 */ { true, 0xfea3, 0xfea3 }, /* 0xfea4 */ { true, 0xfea4, 0xfea4 }, /* 0xfea5 */ { true, 0xfea5, 0xfea5 }, /* 0xfea6 */ { true, 0xfea6, 0xfea6 }, /* 0xfea7 */ { true, 0xfea7, 0xfea7 }, /* 0xfea8 */ { true, 0xfea8, 0xfea8 }, /* 0xfea9 */ { true, 0xfea9, 0xfea9 }, /* 0xfeaa */ { true, 0xfeaa, 0xfeaa }, /* 0xfeab */ { true, 0xfeab, 0xfeab }, /* 0xfeac */ { true, 0xfeac, 0xfeac }, /* 0xfead */ { true, 0xfead, 0xfead }, /* 0xfeae */ { true, 0xfeae, 0xfeae }, /* 0xfeaf */ { true, 0xfeaf, 0xfeaf }, /* 0xfeb0 */ { true, 0xfeb0, 0xfeb0 }, /* 0xfeb1 */ { true, 0xfeb1, 0xfeb1 }, /* 0xfeb2 */ { true, 0xfeb2, 0xfeb2 }, /* 0xfeb3 */ { true, 0xfeb3, 0xfeb3 }, /* 0xfeb4 */ { true, 0xfeb4, 0xfeb4 }, /* 0xfeb5 */ { true, 0xfeb5, 0xfeb5 }, /* 0xfeb6 */ { true, 0xfeb6, 0xfeb6 }, /* 0xfeb7 */ { true, 0xfeb7, 0xfeb7 }, /* 0xfeb8 */ { true, 0xfeb8, 0xfeb8 }, /* 0xfeb9 */ { true, 0xfeb9, 0xfeb9 }, /* 0xfeba */ { true, 0xfeba, 0xfeba }, /* 0xfebb */ { true, 0xfebb, 0xfebb }, /* 0xfebc */ { true, 0xfebc, 0xfebc }, /* 0xfebd */ { true, 0xfebd, 0xfebd }, /* 0xfebe */ { true, 0xfebe, 0xfebe }, /* 0xfebf */ { true, 0xfebf, 0xfebf }, /* 0xfec0 */ { true, 0xfec0, 0xfec0 }, /* 0xfec1 */ { true, 0xfec1, 0xfec1 }, /* 0xfec2 */ { true, 0xfec2, 0xfec2 }, /* 0xfec3 */ { true, 0xfec3, 0xfec3 }, /* 0xfec4 */ { true, 0xfec4, 0xfec4 }, /* 0xfec5 */ { true, 0xfec5, 0xfec5 }, /* 0xfec6 */ { true, 0xfec6, 0xfec6 }, /* 0xfec7 */ { true, 0xfec7, 0xfec7 }, /* 0xfec8 */ { true, 0xfec8, 0xfec8 }, /* 0xfec9 */ { true, 0xfec9, 0xfec9 }, /* 0xfeca */ { true, 0xfeca, 0xfeca }, /* 0xfecb */ { true, 0xfecb, 0xfecb }, /* 0xfecc */ { true, 0xfecc, 0xfecc }, /* 0xfecd */ { true, 0xfecd, 0xfecd }, /* 0xfece */ { true, 0xfece, 0xfece }, /* 0xfecf */ { true, 0xfecf, 0xfecf }, /* 0xfed0 */ { true, 0xfed0, 0xfed0 }, /* 0xfed1 */ { true, 0xfed1, 0xfed1 }, /* 0xfed2 */ { true, 0xfed2, 0xfed2 }, /* 0xfed3 */ { true, 0xfed3, 0xfed3 }, /* 0xfed4 */ { true, 0xfed4, 0xfed4 }, /* 0xfed5 */ { true, 0xfed5, 0xfed5 }, /* 0xfed6 */ { true, 0xfed6, 0xfed6 }, /* 0xfed7 */ { true, 0xfed7, 0xfed7 }, /* 0xfed8 */ { true, 0xfed8, 0xfed8 }, /* 0xfed9 */ { true, 0xfed9, 0xfed9 }, /* 0xfeda */ { true, 0xfeda, 0xfeda }, /* 0xfedb */ { true, 0xfedb, 0xfedb }, /* 0xfedc */ { true, 0xfedc, 0xfedc }, /* 0xfedd */ { true, 0xfedd, 0xfedd }, /* 0xfede */ { true, 0xfede, 0xfede }, /* 0xfedf */ { true, 0xfedf, 0xfedf }, /* 0xfee0 */ { true, 0xfee0, 0xfee0 }, /* 0xfee1 */ { true, 0xfee1, 0xfee1 }, /* 0xfee2 */ { true, 0xfee2, 0xfee2 }, /* 0xfee3 */ { true, 0xfee3, 0xfee3 }, /* 0xfee4 */ { true, 0xfee4, 0xfee4 }, /* 0xfee5 */ { true, 0xfee5, 0xfee5 }, /* 0xfee6 */ { true, 0xfee6, 0xfee6 }, /* 0xfee7 */ { true, 0xfee7, 0xfee7 }, /* 0xfee8 */ { true, 0xfee8, 0xfee8 }, /* 0xfee9 */ { true, 0xfee9, 0xfee9 }, /* 0xfeea */ { true, 0xfeea, 0xfeea }, /* 0xfeeb */ { true, 0xfeeb, 0xfeeb }, /* 0xfeec */ { true, 0xfeec, 0xfeec }, /* 0xfeed */ { true, 0xfeed, 0xfeed }, /* 0xfeee */ { true, 0xfeee, 0xfeee }, /* 0xfeef */ { true, 0xfeef, 0xfeef }, /* 0xfef0 */ { true, 0xfef0, 0xfef0 }, /* 0xfef1 */ { true, 0xfef1, 0xfef1 }, /* 0xfef2 */ { true, 0xfef2, 0xfef2 }, /* 0xfef3 */ { true, 0xfef3, 0xfef3 }, /* 0xfef4 */ { true, 0xfef4, 0xfef4 }, /* 0xfef5 */ { true, 0xfef5, 0xfef5 }, /* 0xfef6 */ { true, 0xfef6, 0xfef6 }, /* 0xfef7 */ { true, 0xfef7, 0xfef7 }, /* 0xfef8 */ { true, 0xfef8, 0xfef8 }, /* 0xfef9 */ { true, 0xfef9, 0xfef9 }, /* 0xfefa */ { true, 0xfefa, 0xfefa }, /* 0xfefb */ { true, 0xfefb, 0xfefb }, /* 0xfefc */ { true, 0xfefc, 0xfefc }, /* 0xfefd */ { false, 0xfefd, 0xfefd }, /* 0xfefe */ { false, 0xfefe, 0xfefe }, /* 0xfeff */ { false, 0xfeff, 0xfeff }, /* 0xff00 */ { false, 0xff00, 0xff00 }, /* 0xff01 */ { false, 0xff01, 0xff01 }, /* 0xff02 */ { false, 0xff02, 0xff02 }, /* 0xff03 */ { false, 0xff03, 0xff03 }, /* 0xff04 */ { false, 0xff04, 0xff04 }, /* 0xff05 */ { false, 0xff05, 0xff05 }, /* 0xff06 */ { false, 0xff06, 0xff06 }, /* 0xff07 */ { false, 0xff07, 0xff07 }, /* 0xff08 */ { false, 0xff08, 0xff08 }, /* 0xff09 */ { false, 0xff09, 0xff09 }, /* 0xff0a */ { false, 0xff0a, 0xff0a }, /* 0xff0b */ { false, 0xff0b, 0xff0b }, /* 0xff0c */ { false, 0xff0c, 0xff0c }, /* 0xff0d */ { false, 0xff0d, 0xff0d }, /* 0xff0e */ { false, 0xff0e, 0xff0e }, /* 0xff0f */ { false, 0xff0f, 0xff0f }, /* 0xff10 */ { false, 0xff10, 0xff10 }, /* 0xff11 */ { false, 0xff11, 0xff11 }, /* 0xff12 */ { false, 0xff12, 0xff12 }, /* 0xff13 */ { false, 0xff13, 0xff13 }, /* 0xff14 */ { false, 0xff14, 0xff14 }, /* 0xff15 */ { false, 0xff15, 0xff15 }, /* 0xff16 */ { false, 0xff16, 0xff16 }, /* 0xff17 */ { false, 0xff17, 0xff17 }, /* 0xff18 */ { false, 0xff18, 0xff18 }, /* 0xff19 */ { false, 0xff19, 0xff19 }, /* 0xff1a */ { false, 0xff1a, 0xff1a }, /* 0xff1b */ { false, 0xff1b, 0xff1b }, /* 0xff1c */ { false, 0xff1c, 0xff1c }, /* 0xff1d */ { false, 0xff1d, 0xff1d }, /* 0xff1e */ { false, 0xff1e, 0xff1e }, /* 0xff1f */ { false, 0xff1f, 0xff1f }, /* 0xff20 */ { false, 0xff20, 0xff20 }, /* 0xff21 */ { true, 0xff21, 0xff41 }, /* 0xff22 */ { true, 0xff22, 0xff42 }, /* 0xff23 */ { true, 0xff23, 0xff43 }, /* 0xff24 */ { true, 0xff24, 0xff44 }, /* 0xff25 */ { true, 0xff25, 0xff45 }, /* 0xff26 */ { true, 0xff26, 0xff46 }, /* 0xff27 */ { true, 0xff27, 0xff47 }, /* 0xff28 */ { true, 0xff28, 0xff48 }, /* 0xff29 */ { true, 0xff29, 0xff49 }, /* 0xff2a */ { true, 0xff2a, 0xff4a }, /* 0xff2b */ { true, 0xff2b, 0xff4b }, /* 0xff2c */ { true, 0xff2c, 0xff4c }, /* 0xff2d */ { true, 0xff2d, 0xff4d }, /* 0xff2e */ { true, 0xff2e, 0xff4e }, /* 0xff2f */ { true, 0xff2f, 0xff4f }, /* 0xff30 */ { true, 0xff30, 0xff50 }, /* 0xff31 */ { true, 0xff31, 0xff51 }, /* 0xff32 */ { true, 0xff32, 0xff52 }, /* 0xff33 */ { true, 0xff33, 0xff53 }, /* 0xff34 */ { true, 0xff34, 0xff54 }, /* 0xff35 */ { true, 0xff35, 0xff55 }, /* 0xff36 */ { true, 0xff36, 0xff56 }, /* 0xff37 */ { true, 0xff37, 0xff57 }, /* 0xff38 */ { true, 0xff38, 0xff58 }, /* 0xff39 */ { true, 0xff39, 0xff59 }, /* 0xff3a */ { true, 0xff3a, 0xff5a }, /* 0xff3b */ { false, 0xff3b, 0xff3b }, /* 0xff3c */ { false, 0xff3c, 0xff3c }, /* 0xff3d */ { false, 0xff3d, 0xff3d }, /* 0xff3e */ { false, 0xff3e, 0xff3e }, /* 0xff3f */ { false, 0xff3f, 0xff3f }, /* 0xff40 */ { false, 0xff40, 0xff40 }, /* 0xff41 */ { true, 0xff21, 0xff41 }, /* 0xff42 */ { true, 0xff22, 0xff42 }, /* 0xff43 */ { true, 0xff23, 0xff43 }, /* 0xff44 */ { true, 0xff24, 0xff44 }, /* 0xff45 */ { true, 0xff25, 0xff45 }, /* 0xff46 */ { true, 0xff26, 0xff46 }, /* 0xff47 */ { true, 0xff27, 0xff47 }, /* 0xff48 */ { true, 0xff28, 0xff48 }, /* 0xff49 */ { true, 0xff29, 0xff49 }, /* 0xff4a */ { true, 0xff2a, 0xff4a }, /* 0xff4b */ { true, 0xff2b, 0xff4b }, /* 0xff4c */ { true, 0xff2c, 0xff4c }, /* 0xff4d */ { true, 0xff2d, 0xff4d }, /* 0xff4e */ { true, 0xff2e, 0xff4e }, /* 0xff4f */ { true, 0xff2f, 0xff4f }, /* 0xff50 */ { true, 0xff30, 0xff50 }, /* 0xff51 */ { true, 0xff31, 0xff51 }, /* 0xff52 */ { true, 0xff32, 0xff52 }, /* 0xff53 */ { true, 0xff33, 0xff53 }, /* 0xff54 */ { true, 0xff34, 0xff54 }, /* 0xff55 */ { true, 0xff35, 0xff55 }, /* 0xff56 */ { true, 0xff36, 0xff56 }, /* 0xff57 */ { true, 0xff37, 0xff57 }, /* 0xff58 */ { true, 0xff38, 0xff58 }, /* 0xff59 */ { true, 0xff39, 0xff59 }, /* 0xff5a */ { true, 0xff3a, 0xff5a }, /* 0xff5b */ { false, 0xff5b, 0xff5b }, /* 0xff5c */ { false, 0xff5c, 0xff5c }, /* 0xff5d */ { false, 0xff5d, 0xff5d }, /* 0xff5e */ { false, 0xff5e, 0xff5e }, /* 0xff5f */ { false, 0xff5f, 0xff5f }, /* 0xff60 */ { false, 0xff60, 0xff60 }, /* 0xff61 */ { false, 0xff61, 0xff61 }, /* 0xff62 */ { false, 0xff62, 0xff62 }, /* 0xff63 */ { false, 0xff63, 0xff63 }, /* 0xff64 */ { false, 0xff64, 0xff64 }, /* 0xff65 */ { false, 0xff65, 0xff65 }, /* 0xff66 */ { true, 0xff66, 0xff66 }, /* 0xff67 */ { true, 0xff67, 0xff67 }, /* 0xff68 */ { true, 0xff68, 0xff68 }, /* 0xff69 */ { true, 0xff69, 0xff69 }, /* 0xff6a */ { true, 0xff6a, 0xff6a }, /* 0xff6b */ { true, 0xff6b, 0xff6b }, /* 0xff6c */ { true, 0xff6c, 0xff6c }, /* 0xff6d */ { true, 0xff6d, 0xff6d }, /* 0xff6e */ { true, 0xff6e, 0xff6e }, /* 0xff6f */ { true, 0xff6f, 0xff6f }, /* 0xff70 */ { true, 0xff70, 0xff70 }, /* 0xff71 */ { true, 0xff71, 0xff71 }, /* 0xff72 */ { true, 0xff72, 0xff72 }, /* 0xff73 */ { true, 0xff73, 0xff73 }, /* 0xff74 */ { true, 0xff74, 0xff74 }, /* 0xff75 */ { true, 0xff75, 0xff75 }, /* 0xff76 */ { true, 0xff76, 0xff76 }, /* 0xff77 */ { true, 0xff77, 0xff77 }, /* 0xff78 */ { true, 0xff78, 0xff78 }, /* 0xff79 */ { true, 0xff79, 0xff79 }, /* 0xff7a */ { true, 0xff7a, 0xff7a }, /* 0xff7b */ { true, 0xff7b, 0xff7b }, /* 0xff7c */ { true, 0xff7c, 0xff7c }, /* 0xff7d */ { true, 0xff7d, 0xff7d }, /* 0xff7e */ { true, 0xff7e, 0xff7e }, /* 0xff7f */ { true, 0xff7f, 0xff7f }, /* 0xff80 */ { true, 0xff80, 0xff80 }, /* 0xff81 */ { true, 0xff81, 0xff81 }, /* 0xff82 */ { true, 0xff82, 0xff82 }, /* 0xff83 */ { true, 0xff83, 0xff83 }, /* 0xff84 */ { true, 0xff84, 0xff84 }, /* 0xff85 */ { true, 0xff85, 0xff85 }, /* 0xff86 */ { true, 0xff86, 0xff86 }, /* 0xff87 */ { true, 0xff87, 0xff87 }, /* 0xff88 */ { true, 0xff88, 0xff88 }, /* 0xff89 */ { true, 0xff89, 0xff89 }, /* 0xff8a */ { true, 0xff8a, 0xff8a }, /* 0xff8b */ { true, 0xff8b, 0xff8b }, /* 0xff8c */ { true, 0xff8c, 0xff8c }, /* 0xff8d */ { true, 0xff8d, 0xff8d }, /* 0xff8e */ { true, 0xff8e, 0xff8e }, /* 0xff8f */ { true, 0xff8f, 0xff8f }, /* 0xff90 */ { true, 0xff90, 0xff90 }, /* 0xff91 */ { true, 0xff91, 0xff91 }, /* 0xff92 */ { true, 0xff92, 0xff92 }, /* 0xff93 */ { true, 0xff93, 0xff93 }, /* 0xff94 */ { true, 0xff94, 0xff94 }, /* 0xff95 */ { true, 0xff95, 0xff95 }, /* 0xff96 */ { true, 0xff96, 0xff96 }, /* 0xff97 */ { true, 0xff97, 0xff97 }, /* 0xff98 */ { true, 0xff98, 0xff98 }, /* 0xff99 */ { true, 0xff99, 0xff99 }, /* 0xff9a */ { true, 0xff9a, 0xff9a }, /* 0xff9b */ { true, 0xff9b, 0xff9b }, /* 0xff9c */ { true, 0xff9c, 0xff9c }, /* 0xff9d */ { true, 0xff9d, 0xff9d }, /* 0xff9e */ { true, 0xff9e, 0xff9e }, /* 0xff9f */ { true, 0xff9f, 0xff9f }, /* 0xffa0 */ { true, 0xffa0, 0xffa0 }, /* 0xffa1 */ { true, 0xffa1, 0xffa1 }, /* 0xffa2 */ { true, 0xffa2, 0xffa2 }, /* 0xffa3 */ { true, 0xffa3, 0xffa3 }, /* 0xffa4 */ { true, 0xffa4, 0xffa4 }, /* 0xffa5 */ { true, 0xffa5, 0xffa5 }, /* 0xffa6 */ { true, 0xffa6, 0xffa6 }, /* 0xffa7 */ { true, 0xffa7, 0xffa7 }, /* 0xffa8 */ { true, 0xffa8, 0xffa8 }, /* 0xffa9 */ { true, 0xffa9, 0xffa9 }, /* 0xffaa */ { true, 0xffaa, 0xffaa }, /* 0xffab */ { true, 0xffab, 0xffab }, /* 0xffac */ { true, 0xffac, 0xffac }, /* 0xffad */ { true, 0xffad, 0xffad }, /* 0xffae */ { true, 0xffae, 0xffae }, /* 0xffaf */ { true, 0xffaf, 0xffaf }, /* 0xffb0 */ { true, 0xffb0, 0xffb0 }, /* 0xffb1 */ { true, 0xffb1, 0xffb1 }, /* 0xffb2 */ { true, 0xffb2, 0xffb2 }, /* 0xffb3 */ { true, 0xffb3, 0xffb3 }, /* 0xffb4 */ { true, 0xffb4, 0xffb4 }, /* 0xffb5 */ { true, 0xffb5, 0xffb5 }, /* 0xffb6 */ { true, 0xffb6, 0xffb6 }, /* 0xffb7 */ { true, 0xffb7, 0xffb7 }, /* 0xffb8 */ { true, 0xffb8, 0xffb8 }, /* 0xffb9 */ { true, 0xffb9, 0xffb9 }, /* 0xffba */ { true, 0xffba, 0xffba }, /* 0xffbb */ { true, 0xffbb, 0xffbb }, /* 0xffbc */ { true, 0xffbc, 0xffbc }, /* 0xffbd */ { true, 0xffbd, 0xffbd }, /* 0xffbe */ { true, 0xffbe, 0xffbe }, /* 0xffbf */ { false, 0xffbf, 0xffbf }, /* 0xffc0 */ { false, 0xffc0, 0xffc0 }, /* 0xffc1 */ { false, 0xffc1, 0xffc1 }, /* 0xffc2 */ { true, 0xffc2, 0xffc2 }, /* 0xffc3 */ { true, 0xffc3, 0xffc3 }, /* 0xffc4 */ { true, 0xffc4, 0xffc4 }, /* 0xffc5 */ { true, 0xffc5, 0xffc5 }, /* 0xffc6 */ { true, 0xffc6, 0xffc6 }, /* 0xffc7 */ { true, 0xffc7, 0xffc7 }, /* 0xffc8 */ { false, 0xffc8, 0xffc8 }, /* 0xffc9 */ { false, 0xffc9, 0xffc9 }, /* 0xffca */ { true, 0xffca, 0xffca }, /* 0xffcb */ { true, 0xffcb, 0xffcb }, /* 0xffcc */ { true, 0xffcc, 0xffcc }, /* 0xffcd */ { true, 0xffcd, 0xffcd }, /* 0xffce */ { true, 0xffce, 0xffce }, /* 0xffcf */ { true, 0xffcf, 0xffcf }, /* 0xffd0 */ { false, 0xffd0, 0xffd0 }, /* 0xffd1 */ { false, 0xffd1, 0xffd1 }, /* 0xffd2 */ { true, 0xffd2, 0xffd2 }, /* 0xffd3 */ { true, 0xffd3, 0xffd3 }, /* 0xffd4 */ { true, 0xffd4, 0xffd4 }, /* 0xffd5 */ { true, 0xffd5, 0xffd5 }, /* 0xffd6 */ { true, 0xffd6, 0xffd6 }, /* 0xffd7 */ { true, 0xffd7, 0xffd7 }, /* 0xffd8 */ { false, 0xffd8, 0xffd8 }, /* 0xffd9 */ { false, 0xffd9, 0xffd9 }, /* 0xffda */ { true, 0xffda, 0xffda }, /* 0xffdb */ { true, 0xffdb, 0xffdb }, /* 0xffdc */ { true, 0xffdc, 0xffdc }, /* 0xffdd */ { false, 0xffdd, 0xffdd }, /* 0xffde */ { false, 0xffde, 0xffde }, /* 0xffdf */ { false, 0xffdf, 0xffdf }, /* 0xffe0 */ { false, 0xffe0, 0xffe0 }, /* 0xffe1 */ { false, 0xffe1, 0xffe1 }, /* 0xffe2 */ { false, 0xffe2, 0xffe2 }, /* 0xffe3 */ { false, 0xffe3, 0xffe3 }, /* 0xffe4 */ { false, 0xffe4, 0xffe4 }, /* 0xffe5 */ { false, 0xffe5, 0xffe5 }, /* 0xffe6 */ { false, 0xffe6, 0xffe6 }, /* 0xffe7 */ { false, 0xffe7, 0xffe7 }, /* 0xffe8 */ { false, 0xffe8, 0xffe8 }, /* 0xffe9 */ { false, 0xffe9, 0xffe9 }, /* 0xffea */ { false, 0xffea, 0xffea }, /* 0xffeb */ { false, 0xffeb, 0xffeb }, /* 0xffec */ { false, 0xffec, 0xffec }, /* 0xffed */ { false, 0xffed, 0xffed }, /* 0xffee */ { false, 0xffee, 0xffee }, /* 0xffef */ { false, 0xffef, 0xffef }, /* 0xfff0 */ { false, 0xfff0, 0xfff0 }, /* 0xfff1 */ { false, 0xfff1, 0xfff1 }, /* 0xfff2 */ { false, 0xfff2, 0xfff2 }, /* 0xfff3 */ { false, 0xfff3, 0xfff3 }, /* 0xfff4 */ { false, 0xfff4, 0xfff4 }, /* 0xfff5 */ { false, 0xfff5, 0xfff5 }, /* 0xfff6 */ { false, 0xfff6, 0xfff6 }, /* 0xfff7 */ { false, 0xfff7, 0xfff7 }, /* 0xfff8 */ { false, 0xfff8, 0xfff8 }, /* 0xfff9 */ { false, 0xfff9, 0xfff9 }, /* 0xfffa */ { false, 0xfffa, 0xfffa }, /* 0xfffb */ { false, 0xfffb, 0xfffb }, /* 0xfffc */ { false, 0xfffc, 0xfffc }, /* 0xfffd */ { false, 0xfffd, 0xfffd }, /* 0xfffe */ { false, 0xfffe, 0xfffe }, /* 0xffff */ { false, 0xffff, 0xffff }, }; hunspell-1.7.2/src/hunspell/replist.hxx0000664000175000017500000001022514352160534015135 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /* * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada * And Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. All modifications to the source code must be clearly marked as * such. Binary redistributions based on modified source code * must be clearly marked as modified versions in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* string replacement list class */ #ifndef REPLIST_HXX_ #define REPLIST_HXX_ #include "w_char.hxx" #include #include class RepList { private: std::vector dat; public: explicit RepList(int n); RepList(const RepList&) = delete; RepList& operator=(const RepList&) = delete; ~RepList(); bool check_against_breaktable(const std::vector& breaktable) const; int add(const std::string& pat1, const std::string& pat2); int find(const char* word); std::string replace(const size_t wordlen, int n, bool atstart); bool conv(const std::string& word, std::string& dest); }; #endif hunspell-1.7.2/src/hunspell/hunspell.hxx0000664000175000017500000002167414352160534015317 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /* * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada * And Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. All modifications to the source code must be clearly marked as * such. Binary redistributions based on modified source code * must be clearly marked as modified versions in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifndef MYSPELLMGR_HXX_ #define MYSPELLMGR_HXX_ #include "hunvisapi.h" #include "w_char.hxx" #include "atypes.hxx" #include #include #define SPELL_XML "" #ifndef MAXSUGGESTION #define MAXSUGGESTION 15 #endif #define MAXSHARPS 5 #ifndef MAXWORDLEN #define MAXWORDLEN 100 #endif #if defined __GNUC__ && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) # define H_DEPRECATED __attribute__((__deprecated__)) #elif defined(_MSC_VER) && (_MSC_VER >= 1300) # define H_DEPRECATED __declspec(deprecated) #else # define H_DEPRECATED #endif class HunspellImpl; class LIBHUNSPELL_DLL_EXPORTED Hunspell { private: HunspellImpl* m_Impl; public: /* Hunspell(aff, dic) - constructor of Hunspell class * input: path of affix file and dictionary file * * In WIN32 environment, use UTF-8 encoded paths started with the long path * prefix \\\\?\\ to handle system-independent character encoding and very * long path names (without the long path prefix Hunspell will use fopen() * with system-dependent character encoding instead of _wfopen()). */ Hunspell(const char* affpath, const char* dpath, const char* key = NULL); Hunspell(const Hunspell&) = delete; Hunspell& operator=(const Hunspell&) = delete; ~Hunspell(); /* load extra dictionaries (only dic files) */ int add_dic(const char* dpath, const char* key = NULL); /* spell(word) - spellcheck word * output: false = bad word, true = good word * * plus output: * info: information bit array, fields: * SPELL_COMPOUND = a compound word * SPELL_FORBIDDEN = an explicit forbidden word * root: root (stem), when input is a word with affix(es) */ bool spell(const std::string& word, int* info = NULL, std::string* root = NULL); H_DEPRECATED int spell(const char* word, int* info = NULL, char** root = NULL); /* suggest(suggestions, word) - search suggestions * input: pointer to an array of strings pointer and the (bad) word * array of strings pointer (here *slst) may not be initialized * output: number of suggestions in string array, and suggestions in * a newly allocated array of strings (*slts will be NULL when number * of suggestion equals 0.) */ std::vector suggest(const std::string& word); H_DEPRECATED int suggest(char*** slst, const char* word); /* Suggest words from suffix rules * suffix_suggest(suggestions, root_word) * input: pointer to an array of strings pointer and the word * array of strings pointer (here *slst) may not be initialized * output: number of suggestions in string array, and suggestions in * a newly allocated array of strings (*slts will be NULL when number * of suggestion equals 0.) */ std::vector suffix_suggest(const std::string& root_word); H_DEPRECATED int suffix_suggest(char*** slst, const char* root_word); /* deallocate suggestion lists */ H_DEPRECATED void free_list(char*** slst, int n); const std::string& get_dict_encoding() const; char* get_dic_encoding(); /* morphological functions */ /* analyze(result, word) - morphological analysis of the word */ std::vector analyze(const std::string& word); H_DEPRECATED int analyze(char*** slst, const char* word); /* stem(word) - stemmer function */ std::vector stem(const std::string& word); H_DEPRECATED int stem(char*** slst, const char* word); /* stem(analysis, n) - get stems from a morph. analysis * example: * char ** result, result2; * int n1 = analyze(&result, "words"); * int n2 = stem(&result2, result, n1); */ std::vector stem(const std::vector& morph); H_DEPRECATED int stem(char*** slst, char** morph, int n); /* generate(result, word, word2) - morphological generation by example(s) */ std::vector generate(const std::string& word, const std::string& word2); H_DEPRECATED int generate(char*** slst, const char* word, const char* word2); /* generate(result, word, desc, n) - generation by morph. description(s) * example: * char ** result; * char * affix = "is:plural"; // description depends from dictionaries, too * int n = generate(&result, "word", &affix, 1); * for (int i = 0; i < n; i++) printf("%s\n", result[i]); */ std::vector generate(const std::string& word, const std::vector& pl); H_DEPRECATED int generate(char*** slst, const char* word, char** desc, int n); /* functions for run-time modification of the dictionary */ /* add word to the run-time dictionary */ int add(const std::string& word); /* add word to the run-time dictionary with affix flags of * the example (a dictionary word): Hunspell will recognize * affixed forms of the new word, too. */ int add_with_affix(const std::string& word, const std::string& example); /* remove word from the run-time dictionary */ int remove(const std::string& word); /* other */ /* get extra word characters definied in affix file for tokenization */ const char* get_wordchars() const; const std::string& get_wordchars_cpp() const; const std::vector& get_wordchars_utf16() const; struct cs_info* get_csconv(); const char* get_version() const; const std::string& get_version_cpp() const; int get_langnum() const; /* need for putdic */ bool input_conv(const std::string& word, std::string& dest); H_DEPRECATED int input_conv(const char* word, char* dest, size_t destsize); }; #endif hunspell-1.7.2/src/hunspell/htypes.hxx0000664000175000017500000000613714352145647015006 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #ifndef HTYPES_HXX_ #define HTYPES_HXX_ #define ROTATE_LEN 5 #define ROTATE(v, q) \ (v) = ((v) << (q)) | (((v) >> (32 - q)) & ((1 << (q)) - 1)); // hentry options #define H_OPT (1 << 0) // is there optional morphological data? #define H_OPT_ALIASM (1 << 1) // using alias compression? #define H_OPT_PHON (1 << 2) // is there ph: field in the morphological data? #define H_OPT_INITCAP (1 << 3) // is dictionary word capitalized? // see also csutil.hxx #define HENTRY_WORD(h) &(h->word[0]) // approx. number of user defined words #define USERWORD 1000 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1900) # define HUNSPELL_THREAD_LOCAL thread_local #else # define HUNSPELL_THREAD_LOCAL static #endif struct hentry { unsigned char blen; // word length in bytes unsigned char clen; // word length in characters (different for UTF-8 enc.) short alen; // length of affix flag vector unsigned short* astr; // affix flag vector struct hentry* next; // next word with same hash code struct hentry* next_homonym; // next homonym word (with same hash code) char var; // bit vector of H_OPT hentry options char word[1]; // variable-length word (8-bit or UTF-8 encoding) }; #endif hunspell-1.7.2/src/hunspell/hunvisapi.h0000664000175000017500000000075714353370166015117 00000000000000#ifndef HUNSPELL_VISIBILITY_H_ #define HUNSPELL_VISIBILITY_H_ #if defined(HUNSPELL_STATIC) # define LIBHUNSPELL_DLL_EXPORTED #elif defined(_WIN32) # if defined(BUILDING_LIBHUNSPELL) # define LIBHUNSPELL_DLL_EXPORTED __declspec(dllexport) # else # define LIBHUNSPELL_DLL_EXPORTED __declspec(dllimport) # endif #elif defined(BUILDING_LIBHUNSPELL) && 1 # define LIBHUNSPELL_DLL_EXPORTED __attribute__((__visibility__("default"))) #else # define LIBHUNSPELL_DLL_EXPORTED #endif #endif hunspell-1.7.2/src/hunspell/csutil.hxx0000664000175000017500000002774014352160534014770 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /* * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada * And Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. All modifications to the source code must be clearly marked as * such. Binary redistributions based on modified source code * must be clearly marked as modified versions in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifndef CSUTIL_HXX_ #define CSUTIL_HXX_ #include "hunvisapi.h" // First some base level utility routines #include #include #include #include #include #include #include "w_char.hxx" #include "htypes.hxx" #ifdef MOZILLA_CLIENT #include "nscore.h" // for mozalloc headers #endif // casing #define NOCAP 0 #define INITCAP 1 #define ALLCAP 2 #define HUHCAP 3 #define HUHINITCAP 4 // default encoding and keystring #define SPELL_ENCODING "ISO8859-1" #define SPELL_KEYSTRING "qwertyuiop|asdfghjkl|zxcvbnm" // default morphological fields #define MORPH_STEM "st:" #define MORPH_ALLOMORPH "al:" #define MORPH_POS "po:" #define MORPH_DERI_PFX "dp:" #define MORPH_INFL_PFX "ip:" #define MORPH_TERM_PFX "tp:" #define MORPH_DERI_SFX "ds:" #define MORPH_INFL_SFX "is:" #define MORPH_TERM_SFX "ts:" #define MORPH_SURF_PFX "sp:" #define MORPH_FREQ "fr:" #define MORPH_PHON "ph:" #define MORPH_HYPH "hy:" #define MORPH_PART "pa:" #define MORPH_FLAG "fl:" #define MORPH_HENTRY "_H:" #define MORPH_TAG_LEN strlen(MORPH_STEM) #define MSEP_FLD ' ' #define MSEP_REC '\n' #define MSEP_ALT '\v' // default flags #define DEFAULTFLAGS 65510 #define FORBIDDENWORD 65510 #define ONLYUPCASEFLAG 65511 // fix long pathname problem of WIN32 by using w_char std::fstream::open override LIBHUNSPELL_DLL_EXPORTED void myopen(std::ifstream& stream, const char* path, std::ios_base::openmode mode); // convert UTF-16 characters to UTF-8 LIBHUNSPELL_DLL_EXPORTED std::string& u16_u8(std::string& dest, const std::vector& src); // convert UTF-8 characters to UTF-16 LIBHUNSPELL_DLL_EXPORTED int u8_u16(std::vector& dest, const std::string& src, bool only_convert_first_letter = false); // remove end of line char(s) LIBHUNSPELL_DLL_EXPORTED void mychomp(std::string& s); // parse into tokens with char delimiter LIBHUNSPELL_DLL_EXPORTED std::string::const_iterator mystrsep(const std::string &str, std::string::const_iterator& start); // replace pat by rep in word and return word LIBHUNSPELL_DLL_EXPORTED std::string& mystrrep(std::string& str, const std::string& search, const std::string& replace); // append s to ends of every lines in text LIBHUNSPELL_DLL_EXPORTED std::string& strlinecat(std::string& str, const std::string& apd); // tokenize into lines with new line LIBHUNSPELL_DLL_EXPORTED std::vector line_tok(const std::string& text, char breakchar); // tokenize into lines with new line and uniq in place LIBHUNSPELL_DLL_EXPORTED void line_uniq(std::string& text, char breakchar); LIBHUNSPELL_DLL_EXPORTED void line_uniq_app(std::string& text, char breakchar); // reverse word LIBHUNSPELL_DLL_EXPORTED size_t reverseword(std::string& word); // reverse word LIBHUNSPELL_DLL_EXPORTED size_t reverseword_utf(std::string&); // remove duplicates LIBHUNSPELL_DLL_EXPORTED void uniqlist(std::vector& list); // character encoding information struct cs_info { unsigned char ccase; unsigned char clower; unsigned char cupper; }; LIBHUNSPELL_DLL_EXPORTED unsigned short unicodetoupper(unsigned short c, int langnum); LIBHUNSPELL_DLL_EXPORTED w_char upper_utf(w_char u, int langnum); LIBHUNSPELL_DLL_EXPORTED w_char lower_utf(w_char u, int langnum); LIBHUNSPELL_DLL_EXPORTED unsigned short unicodetolower(unsigned short c, int langnum); LIBHUNSPELL_DLL_EXPORTED int unicodeisalpha(unsigned short c); LIBHUNSPELL_DLL_EXPORTED struct cs_info* get_current_cs(const std::string& es); // get language identifiers of language codes LIBHUNSPELL_DLL_EXPORTED int get_lang_num(const std::string& lang); // get characters of the given 8bit encoding with lower- and uppercase forms LIBHUNSPELL_DLL_EXPORTED std::string get_casechars(const char* enc); // convert std::string to all caps LIBHUNSPELL_DLL_EXPORTED std::string& mkallcap(std::string& s, const struct cs_info* csconv); // convert null terminated string to all little LIBHUNSPELL_DLL_EXPORTED std::string& mkallsmall(std::string& s, const struct cs_info* csconv); // convert first letter of string to little LIBHUNSPELL_DLL_EXPORTED std::string& mkinitsmall(std::string& s, const struct cs_info* csconv); // convert first letter of string to capital LIBHUNSPELL_DLL_EXPORTED std::string& mkinitcap(std::string& s, const struct cs_info* csconv); // convert first letter of UTF-8 string to capital LIBHUNSPELL_DLL_EXPORTED std::vector& mkinitcap_utf(std::vector& u, int langnum); // convert UTF-8 string to little LIBHUNSPELL_DLL_EXPORTED std::vector& mkallsmall_utf(std::vector& u, int langnum); // convert first letter of UTF-8 string to little LIBHUNSPELL_DLL_EXPORTED std::vector& mkinitsmall_utf(std::vector& u, int langnum); // convert UTF-8 string to capital LIBHUNSPELL_DLL_EXPORTED std::vector& mkallcap_utf(std::vector& u, int langnum); // get type of capitalization LIBHUNSPELL_DLL_EXPORTED int get_captype(const std::string& q, cs_info*); // get type of capitalization (UTF-8) LIBHUNSPELL_DLL_EXPORTED int get_captype_utf8(const std::vector& q, int langnum); // strip all ignored characters in the string LIBHUNSPELL_DLL_EXPORTED size_t remove_ignored_chars_utf( std::string& word, const std::vector& ignored_chars); // strip all ignored characters in the string LIBHUNSPELL_DLL_EXPORTED size_t remove_ignored_chars( std::string& word, const std::string& ignored_chars); LIBHUNSPELL_DLL_EXPORTED bool parse_string(const std::string& line, std::string& out, int ln); LIBHUNSPELL_DLL_EXPORTED bool parse_array(const std::string& line, std::string& out, std::vector& out_utf16, int utf8, int ln); LIBHUNSPELL_DLL_EXPORTED int fieldlen(const char* r); LIBHUNSPELL_DLL_EXPORTED bool copy_field(std::string& dest, const std::string& morph, const std::string& var); // conversion function for protected memory LIBHUNSPELL_DLL_EXPORTED void store_pointer(char* dest, char* source); // conversion function for protected memory LIBHUNSPELL_DLL_EXPORTED char* get_stored_pointer(const char* s); // to avoid unnecessary string copies and Unicode conversions // we simply check the ignored_chars characters in the word // (in the case of UTF-8 encoded strings, "false" means // "likely false", if ignored_chars characters are not ASCII) inline bool has_no_ignored_chars(const std::string& word, const std::string& ignored_chars) { return std::all_of(ignored_chars.begin(), ignored_chars.end(), [&word](char ic) { return word.find(ic) == std::string::npos; }); } // hash entry macros inline char* HENTRY_DATA(struct hentry* h) { char* ret; if (!(h->var & H_OPT)) ret = NULL; else if (h->var & H_OPT_ALIASM) ret = get_stored_pointer(HENTRY_WORD(h) + h->blen + 1); else ret = HENTRY_WORD(h) + h->blen + 1; return ret; } inline const char* HENTRY_DATA( const struct hentry* h) { const char* ret; if (!(h->var & H_OPT)) ret = NULL; else if (h->var & H_OPT_ALIASM) ret = get_stored_pointer(HENTRY_WORD(h) + h->blen + 1); else ret = HENTRY_WORD(h) + h->blen + 1; return ret; } // NULL-free version for warning-free OOo build inline const char* HENTRY_DATA2( const struct hentry* h) { const char* ret; if (!(h->var & H_OPT)) ret = ""; else if (h->var & H_OPT_ALIASM) ret = get_stored_pointer(HENTRY_WORD(h) + h->blen + 1); else ret = HENTRY_WORD(h) + h->blen + 1; return ret; } inline char* HENTRY_FIND(struct hentry* h, const char* p) { char* data = HENTRY_DATA(h); return data ? strstr(data, p) : NULL; } #endif hunspell-1.7.2/src/hunspell/Makefile.am0000644000175000017500000000157713565705656015005 00000000000000lib_LTLIBRARIES = libhunspell-1.7.la libhunspell_1_7_includedir = $(includedir)/hunspell libhunspell_1_7_la_SOURCES=affentry.cxx affentry.hxx affixmgr.cxx affixmgr.hxx \ atypes.hxx baseaffix.hxx csutil.cxx csutil.hxx \ filemgr.cxx filemgr.hxx hashmgr.cxx hashmgr.hxx \ htypes.hxx hunspell.cxx hunspell.h hunspell.hxx \ hunzip.cxx hunzip.hxx langnum.hxx \ phonet.cxx phonet.hxx replist.cxx replist.hxx \ suggestmgr.cxx suggestmgr.hxx utf_info.hxx w_char.hxx nodist_libhunspell_1_7_la_SOURCES=hunvisapi.h libhunspell_1_7_include_HEADERS=hunspell.hxx hunspell.h hunvisapi.h \ w_char.hxx atypes.hxx libhunspell_1_7_la_LDFLAGS=-no-undefined -version-info 0:1:0 AM_CXXFLAGS=$(CFLAG_VISIBILITY) -DBUILDING_LIBHUNSPELL hunspell-1.7.2/src/hunspell/w_char.hxx0000664000175000017500000000566714352160534014734 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #ifndef W_CHAR_HXX_ #define W_CHAR_HXX_ #include #if __cplusplus >= 202002L #include #else #include #endif #ifndef GCC struct w_char { #else struct __attribute__((packed)) w_char { #endif unsigned char l; unsigned char h; operator unsigned short() const { #if defined(__i386__) || defined(_M_IX86) || defined(_M_X64) //use little-endian optimized version #if __cplusplus >= 202002L return std::bit_cast(*this); #else unsigned short u; memcpy(&u, this, sizeof(unsigned short)); return u; #endif #else return ((unsigned short)h << 8) | (unsigned short)l; #endif } friend bool operator<(const w_char a, const w_char b) { return (unsigned short)a < (unsigned short)b; } friend bool operator==(const w_char a, const w_char b) { return (unsigned short)a == (unsigned short)b; } friend bool operator!=(const w_char a, const w_char b) { return !(a == b); } }; // two character arrays struct replentry { std::string pattern; std::string outstrings[4]; // med, ini, fin, isol }; #endif hunspell-1.7.2/src/hunspell/baseaffix.hxx0000664000175000017500000000500614352160534015404 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #ifndef BASEAFF_HXX_ #define BASEAFF_HXX_ #include class AffEntry { public: AffEntry() : numconds(0), opts(0), aflag(0), morphcode(0), contclass(NULL), contclasslen(0) {} AffEntry(const AffEntry&) = delete; AffEntry& operator=(const AffEntry&) = delete; virtual ~AffEntry(); std::string appnd; std::string strip; unsigned char numconds; char opts; unsigned short aflag; union { char conds[MAXCONDLEN]; struct { char conds1[MAXCONDLEN_1]; char* conds2; } l; } c; char* morphcode; unsigned short* contclass; unsigned short contclasslen; }; #endif hunspell-1.7.2/src/Makefile.am0000644000175000017500000000003713565705656013141 00000000000000SUBDIRS=hunspell parsers tools hunspell-1.7.2/src/parsers/0000775000175000017500000000000014353370321012625 500000000000000hunspell-1.7.2/src/parsers/testparser.cxx0000664000175000017500000000554314352145647015506 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include #include #include #include "textparser.hxx" #include "htmlparser.hxx" #include "latexparser.hxx" #include "xmlparser.hxx" #ifndef W32 using namespace std; #endif int main(int argc, char** argv) { FILE* f; /* first parse the command line options */ if (argc < 2) { fprintf(stderr, "correct syntax is:\n"); fprintf(stderr, "testparser file\n"); fprintf(stderr, "example: testparser /dev/stdin\n"); exit(1); } /* open the words to check list */ f = fopen(argv[1], "r"); if (!f) { fprintf(stderr, "Error - could not open file of words to check\n"); exit(1); } TextParser* p = new TextParser( "qwertzuiopasdfghjklyxcvbnmQWERTZUIOPASDFGHJKLYXCVBNM"); char buf[MAXLNLEN]; while (fgets(buf, MAXLNLEN, f)) { p->put_line(buf); p->set_url_checking(1); std::string next; while (p->next_token(next)) { fprintf(stdout, "token: %s\n", next.c_str()); } } delete p; fclose(f); return 0; } hunspell-1.7.2/src/parsers/textparser.hxx0000664000175000017500000000667214352145647015524 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #ifndef TEXTPARSER_HXX_ #define TEXTPARSER_HXX_ // set sum of actual and previous lines #define MAXPREVLINE 4 #ifndef MAXLNLEN #define MAXLNLEN 8192 #endif #include "../hunspell/w_char.hxx" #include /* * Base Text Parser * */ class TextParser { protected: std::vector wordcharacters;// for detection of the word boundaries std::string line[MAXPREVLINE]; // parsed and previous lines std::vector urlline; // mask for url detection std::vector wc; int checkurl; int actual; // actual line size_t head; // head position size_t token;// begin of token int state; // state of automata int utf8; // UTF-8 character encoding int next_char(const char* line, size_t* pos); const w_char* wordchars_utf16; int wclen; public: TextParser(const w_char* wordchars, int len); explicit TextParser(const char* wc); virtual ~TextParser(); void put_line(const char* line); std::string get_line() const; std::string get_prevline(int n) const; virtual bool next_token(std::string&); virtual std::string get_word(const std::string &tok); virtual int change_token(const char* word); void set_url_checking(int check); size_t get_tokenpos(); int is_wordchar(const char* w); inline int is_utf8() { return utf8; } const char* get_latin1(const char* s); char* next_char(); int tokenize_urls(); void check_urls(); int get_url(size_t token_pos, size_t* head); bool alloc_token(size_t token, size_t* head, std::string& out); private: void init(const char*); void init(const w_char* wordchars, int len); }; #endif hunspell-1.7.2/src/parsers/Makefile.in0000664000175000017500000005205014353370163014620 00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = testparser$(EXEEXT) subdir = src/parsers ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/visibility.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) ARFLAGS = cru AM_V_AR = $(am__v_AR_@AM_V@) am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) am__v_AR_0 = @echo " AR " $@; am__v_AR_1 = libparsers_a_AR = $(AR) $(ARFLAGS) libparsers_a_LIBADD = am_libparsers_a_OBJECTS = firstparser.$(OBJEXT) xmlparser.$(OBJEXT) \ latexparser.$(OBJEXT) manparser.$(OBJEXT) textparser.$(OBJEXT) \ htmlparser.$(OBJEXT) odfparser.$(OBJEXT) libparsers_a_OBJECTS = $(am_libparsers_a_OBJECTS) PROGRAMS = $(noinst_PROGRAMS) am_testparser_OBJECTS = firstparser.$(OBJEXT) xmlparser.$(OBJEXT) \ latexparser.$(OBJEXT) manparser.$(OBJEXT) testparser.$(OBJEXT) \ textparser.$(OBJEXT) htmlparser.$(OBJEXT) odfparser.$(OBJEXT) testparser_OBJECTS = $(am_testparser_OBJECTS) testparser_LDADD = $(LDADD) testparser_DEPENDENCIES = ../hunspell/libhunspell-1.7.la AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libparsers_a_SOURCES) $(testparser_SOURCES) DIST_SOURCES = $(libparsers_a_SOURCES) $(testparser_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CURSESLIB = @CURSESLIB@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HUNSPELL_VERSION_MAJOR = @HUNSPELL_VERSION_MAJOR@ HUNSPELL_VERSION_MINOR = @HUNSPELL_VERSION_MINOR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ READLINELIB = @READLINELIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I${top_builddir}/src/hunspell noinst_LIBRARIES = libparsers.a libparsers_a_SOURCES = firstparser.cxx xmlparser.cxx \ latexparser.cxx manparser.cxx \ textparser.cxx htmlparser.cxx \ odfparser.cxx testparser_SOURCES = firstparser.cxx firstparser.hxx xmlparser.cxx \ xmlparser.hxx latexparser.cxx latexparser.hxx \ manparser.cxx manparser.hxx testparser.cxx \ textparser.cxx textparser.hxx htmlparser.cxx \ htmlparser.hxx odfparser.hxx odfparser.cxx # need mystrrep() LDADD = ../hunspell/libhunspell-1.7.la all: all-am .SUFFIXES: .SUFFIXES: .cxx .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/parsers/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/parsers/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) libparsers.a: $(libparsers_a_OBJECTS) $(libparsers_a_DEPENDENCIES) $(EXTRA_libparsers_a_DEPENDENCIES) $(AM_V_at)-rm -f libparsers.a $(AM_V_AR)$(libparsers_a_AR) libparsers.a $(libparsers_a_OBJECTS) $(libparsers_a_LIBADD) $(AM_V_at)$(RANLIB) libparsers.a clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list testparser$(EXEEXT): $(testparser_OBJECTS) $(testparser_DEPENDENCIES) $(EXTRA_testparser_DEPENDENCIES) @rm -f testparser$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(testparser_OBJECTS) $(testparser_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/firstparser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htmlparser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/latexparser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/manparser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/odfparser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testparser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/textparser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlparser.Po@am__quote@ .cxx.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cxx.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cxx.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LIBRARIES) $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLIBRARIES clean-noinstPROGRAMS \ cscopelist-am ctags ctags-am distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: hunspell-1.7.2/src/parsers/manparser.cxx0000664000175000017500000000634614352145647015304 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include #include #include #include #include "../hunspell/csutil.hxx" #include "manparser.hxx" #ifndef W32 using namespace std; #endif ManParser::ManParser(const char* wordchars) : TextParser(wordchars) { } ManParser::ManParser(const w_char* wordchars, int len) : TextParser(wordchars, len) { } ManParser::~ManParser() {} bool ManParser::next_token(std::string& t) { for (;;) { switch (state) { case 1: // command arguments if (line[actual][head] == ' ') state = 2; break; case 0: // dot in begin of line if (line[actual][0] == '.') { state = 1; break; } else { state = 2; } /* FALLTHROUGH */ case 2: // non word chars if (is_wordchar(line[actual].c_str() + head)) { state = 3; token = head; } else if ((line[actual][head] == '\\') && (line[actual][head + 1] == 'f') && (line[actual][head + 2] != '\0')) { head += 2; } break; case 3: // wordchar if (!is_wordchar(line[actual].c_str() + head)) { state = 2; if (alloc_token(token, &head, t)) return true; } break; } if (next_char(line[actual].c_str(), &head)) { state = 0; return false; } } } hunspell-1.7.2/src/parsers/firstparser.hxx0000664000175000017500000000423514352145647015660 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #ifndef FIRSTPARSER_HXX_ #define FIRSTPARSER_HXX_ #include "textparser.hxx" /* * Check first word of the input line * */ class FirstParser : public TextParser { public: explicit FirstParser(const char* wc); virtual ~FirstParser(); virtual bool next_token(std::string&); }; #endif hunspell-1.7.2/src/parsers/manparser.hxx0000664000175000017500000000427314352145647015306 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #ifndef MANPARSER_HXX_ #define MANPARSER_HXX_ #include "textparser.hxx" /* * Manparse Parser * */ class ManParser : public TextParser { protected: public: explicit ManParser(const char* wc); ManParser(const w_char* wordchars, int len); virtual ~ManParser(); virtual bool next_token(std::string&); }; #endif hunspell-1.7.2/src/parsers/xmlparser.cxx0000664000175000017500000002212314352145647015320 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include #include #include #include #include "../hunspell/csutil.hxx" #include "xmlparser.hxx" #ifndef W32 using namespace std; #endif enum { ST_NON_WORD, ST_WORD, ST_TAG, ST_CHAR_ENTITY, ST_OTHER_TAG, ST_ATTRIB }; static const char* __PATTERN__[][2] = {{""}, {"<[cdata[", "]]>"}, // XML comment {"<", ">"}}; #define __PATTERN_LEN__ (sizeof(__PATTERN__) / (sizeof(char*) * 2)) // for checking attributes, eg. text in HTML static const char* (*__PATTERN2__)[2] = NULL; #define __PATTERN_LEN2__ 0 // for checking words with in-word patterns // for example, "example" in ODT static const char* (*__PATTERN3__)[2] = NULL; #define __PATTERN_LEN3__ 0 #define ENTITY_APOS "'" #define UTF8_APOS "\xe2\x80\x99" #define APOSTROPHE "'" XMLParser::XMLParser(const char* wordchars) : TextParser(wordchars) , pattern_num(0), pattern2_num(0), pattern3_num(0), prevstate(0), checkattr(0), quotmark(0) { } XMLParser::XMLParser(const w_char* wordchars, int len) : TextParser(wordchars, len) , pattern_num(0), pattern2_num(0), pattern3_num(0), prevstate(0), checkattr(0), quotmark(0) { } XMLParser::~XMLParser() {} int XMLParser::look_pattern(const char* p[][2], unsigned int len, int column) { for (unsigned int i = 0; i < len; i++) { const char* j = line[actual].c_str() + head; const char* k = p[i][column]; while ((*k != '\0') && (tolower(*j) == *k)) { j++; k++; } if (*k == '\0') return i; } return -1; } /* * XML parser * */ bool XMLParser::next_token(const char* PATTERN[][2], unsigned int PATTERN_LEN, const char* PATTERN2[][2], unsigned int PATTERN_LEN2, const char* PATTERN3[][2], unsigned int PATTERN_LEN3, std::string& t) { t.clear(); const char* latin1; for (;;) { switch (state) { case ST_NON_WORD: // non word chars prevstate = ST_NON_WORD; if ((pattern_num = look_pattern(PATTERN, PATTERN_LEN, 0)) != -1) { checkattr = 0; if ((pattern2_num = look_pattern(PATTERN2, PATTERN_LEN2, 0)) != -1) { checkattr = 1; } state = ST_TAG; } else if (is_wordchar(line[actual].c_str() + head)) { state = ST_WORD; token = head; } else if ((latin1 = get_latin1(line[actual].c_str() + head))) { state = ST_WORD; token = head; head += strlen(latin1); } else if (line[actual][head] == '&') { state = ST_CHAR_ENTITY; } break; case ST_WORD: // wordchar if ((latin1 = get_latin1(line[actual].c_str() + head))) { head += strlen(latin1); } else if ((is_wordchar(APOSTROPHE) || (is_utf8() && is_wordchar(UTF8_APOS))) && strncmp(line[actual].c_str() + head, ENTITY_APOS, strlen(ENTITY_APOS)) == 0 && is_wordchar(line[actual].c_str() + head + strlen(ENTITY_APOS))) { head += strlen(ENTITY_APOS) - 1; } else if (is_utf8() && is_wordchar(APOSTROPHE) && // add Unicode apostrophe // to the WORDCHARS, if // needed strncmp(line[actual].c_str() + head, UTF8_APOS, strlen(UTF8_APOS)) == 0 && is_wordchar(line[actual].c_str() + head + strlen(UTF8_APOS))) { head += strlen(UTF8_APOS) - 1; } else if (!is_wordchar(line[actual].c_str() + head)) { // in-word patterns if ((pattern3_num = look_pattern(PATTERN3, PATTERN_LEN3, 0)) != -1) { size_t pos = line[actual].find(PATTERN3[pattern3_num][1], head); if (pos != std::string::npos) { size_t endpos = pos + strlen(PATTERN3[pattern3_num][1]) - 1; if (is_wordchar(line[actual].c_str() + endpos + 1)) { head = endpos; break; } } } state = prevstate; // return with the token, except in the case of in-word patterns if (alloc_token(token, &head, t)) return true; } break; case ST_TAG: // comment, labels, etc int i; if ((checkattr == 1) && ((i = look_pattern(PATTERN2, PATTERN_LEN2, 1)) != -1) && (strcmp(PATTERN2[i][0], PATTERN2[pattern2_num][0]) == 0)) { checkattr = 2; } else if ((checkattr > 0) && (line[actual][head] == '>')) { state = ST_NON_WORD; } else if (((i = look_pattern(PATTERN, PATTERN_LEN, 1)) != -1) && (strcmp(PATTERN[i][1], PATTERN[pattern_num][1]) == 0)) { state = ST_NON_WORD; head += strlen(PATTERN[pattern_num][1]) - 1; } else if ((strcmp(PATTERN[pattern_num][0], "<") == 0) && ((line[actual][head] == '"') || (line[actual][head] == '\''))) { quotmark = line[actual][head]; state = ST_ATTRIB; } break; case ST_ATTRIB: // non word chars prevstate = ST_ATTRIB; if (line[actual][head] == quotmark) { state = ST_TAG; if (checkattr == 2) checkattr = 1; // for IMG ALT } else if (is_wordchar(line[actual].c_str() + head) && (checkattr == 2)) { state = ST_WORD; token = head; } else if (line[actual][head] == '&') { state = ST_CHAR_ENTITY; } break; case ST_CHAR_ENTITY: // SGML element if ((tolower(line[actual][head]) == ';')) { state = prevstate; head--; } } if (next_char(line[actual].c_str(), &head)) return false; } //FIXME No return, in function returning non-void } bool XMLParser::next_token(std::string& t) { return next_token(__PATTERN__, __PATTERN_LEN__, __PATTERN2__, __PATTERN_LEN2__, __PATTERN3__, __PATTERN_LEN3__, t); } // remove in-word patterns std::string XMLParser::get_word2( const char* PATTERN3[][2], unsigned int PATTERN_LEN3, const std::string &tok) { std::string word = tok; for (unsigned int i = 0; i < PATTERN_LEN3; i++) { size_t pos; while ((pos = word.find(PATTERN3[i][0])) != word.npos) { size_t endpos = word.find(PATTERN3[i][1], pos); if (endpos != word.npos) { word.erase(pos, endpos + strlen(PATTERN3[i][1]) - pos); } else return word; } } return word; } int XMLParser::change_token(const char* word) { if (strstr(word, APOSTROPHE) != NULL || strchr(word, '"') != NULL || strchr(word, '&') != NULL || strchr(word, '<') != NULL || strchr(word, '>') != NULL) { std::string r(word); mystrrep(r, "&", "__namp;__"); mystrrep(r, "__namp;__", "&"); mystrrep(r, APOSTROPHE, ENTITY_APOS); mystrrep(r, "\"", """); mystrrep(r, ">", ">"); mystrrep(r, "<", "<"); return TextParser::change_token(r.c_str()); } return TextParser::change_token(word); } hunspell-1.7.2/src/parsers/xmlparser.hxx0000664000175000017500000000541614352145647015333 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #ifndef XMLPARSER_HXX_ #define XMLPARSER_HXX_ #include "textparser.hxx" /* * XML Parser * */ class XMLParser : public TextParser { public: explicit XMLParser(const char* wc); XMLParser(const w_char* wordchars, int len); bool next_token(const char* p[][2], unsigned int len, const char* p2[][2], unsigned int len2, const char* p3[][2], unsigned int len3, std::string&); virtual bool next_token(std::string&); std::string get_word2(const char* p2[][2], unsigned int len2, const std::string &tok); int change_token(const char* word); virtual ~XMLParser(); private: int look_pattern(const char* p[][2], unsigned int len, int column); int pattern_num; int pattern2_num; int pattern3_num; int prevstate; int checkattr; char quotmark; }; #endif hunspell-1.7.2/src/parsers/latexparser.hxx0000664000175000017500000000461314352145647015646 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #ifndef LATEXPARSER_HXX_ #define LATEXPARSER_HXX_ #include "textparser.hxx" /* * HTML Parser * */ class LaTeXParser : public TextParser { int pattern_num; // number of comment int depth; // depth of blocks int arg; // arguments's number int opt; // optional argument attrib. public: explicit LaTeXParser(const char* wc); LaTeXParser(const w_char* wordchars, int len); virtual ~LaTeXParser(); virtual bool next_token(std::string&); private: int look_pattern(int col); }; #endif hunspell-1.7.2/src/parsers/firstparser.cxx0000664000175000017500000000463714352145647015661 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include #include #include #include #include "../hunspell/csutil.hxx" #include "firstparser.hxx" #ifndef W32 using namespace std; #endif FirstParser::FirstParser(const char* wordchars) : TextParser(wordchars) { } FirstParser::~FirstParser() {} bool FirstParser::next_token(std::string& t) { t.clear(); const size_t tabpos = line[actual].find('\t'); if (tabpos != std::string::npos && tabpos > token) { token = tabpos; t = line[actual].substr(0, tabpos); return true; } return false; } hunspell-1.7.2/src/parsers/latexparser.cxx0000664000175000017500000002415714352145647015646 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include #include #include #include #include "../hunspell/csutil.hxx" #include "latexparser.hxx" #ifndef W32 using namespace std; #endif #define UTF8_APOS "\xe2\x80\x99" #define APOSTROPHE "'" static struct { const char* pat[2]; int arg; } PATTERN[] = {{{"\\(", "\\)"}, 0}, {{"$$", "$$"}, 0}, {{"$", "$"}, 0}, {{"\\begin{math}", "\\end{math}"}, 0}, {{"\\[", "\\]"}, 0}, {{"\\begin{displaymath}", "\\end{displaymath}"}, 0}, {{"\\begin{equation}", "\\end{equation}"}, 0}, {{"\\begin{equation*}", "\\end{equation*}"}, 0}, {{"\\begin{align}", "\\end{align}"}, 0}, {{"\\begin{align*}", "\\end{align*}"}, 0}, {{"\\begin{lstlisting}", "\\end{lstlisting}"}, 0}, {{"\\cite", NULL}, 1}, {{"\\textcite", NULL}, 1}, {{"\\autocite", NULL}, 1}, {{"\\nocite", NULL}, 1}, {{"\\index", NULL}, 1}, {{"\\label", NULL}, 1}, {{"\\ref", NULL}, 1}, {{"\\pageref", NULL}, 1}, {{"\\autoref", NULL}, 1}, {{"\\parbox", NULL}, 1}, {{"\\begin{verbatim}", "\\end{verbatim}"}, 0}, {{"\\verb+", "+"}, 0}, {{"\\verb|", "|"}, 0}, {{"\\verb#", "#"}, 0}, {{"\\verb*", "*"}, 0}, {{"\\documentstyle", "\\begin{document}"}, 0}, {{"\\documentclass", "\\begin{document}"}, 0}, // { { "\\documentclass", NULL } , 1 }, {{"\\usepackage", NULL}, 1}, {{"\\includeonly", NULL}, 1}, {{"\\include", NULL}, 1}, {{"\\input", NULL}, 1}, {{"\\vspace", NULL}, 1}, {{"\\setlength", NULL}, 2}, {{"\\addtolength", NULL}, 2}, {{"\\settowidth", NULL}, 2}, {{"\\rule", NULL}, 2}, {{"\\hspace", NULL}, 1}, {{"\\vspace", NULL}, 1}, {{"\\\\[", "]"}, 0}, {{"\\pagebreak[", "]"}, 0}, {{"\\nopagebreak[", "]"}, 0}, {{"\\enlargethispage", NULL}, 1}, {{"\\begin{tabular}", NULL}, 1}, {{"\\addcontentsline", NULL}, 2}, {{"\\gls", NULL}, 1}, {{"\\glspl", NULL}, 1}, {{"\\Gls", NULL}, 1}, {{"\\Glspl", NULL}, 1}, {{"\\begin{thebibliography}", NULL}, 1}, {{"\\bibliography", NULL}, 1}, {{"\\bibliographystyle", NULL}, 1}, {{"\\bibitem", NULL}, 1}, {{"\\begin", NULL}, 1}, {{"\\end", NULL}, 1}, {{"\\pagestyle", NULL}, 1}, {{"\\pagenumbering", NULL}, 1}, {{"\\thispagestyle", NULL}, 1}, {{"\\newtheorem", NULL}, 2}, {{"\\newcommand", NULL}, 2}, {{"\\renewcommand", NULL}, 2}, {{"\\setcounter", NULL}, 2}, {{"\\addtocounter", NULL}, 1}, {{"\\stepcounter", NULL}, 1}, {{"\\selectlanguage", NULL}, 1}, {{"\\inputencoding", NULL}, 1}, {{"\\hyphenation", NULL}, 1}, {{"\\definecolor", NULL}, 3}, {{"\\color", NULL}, 1}, {{"\\textcolor", NULL}, 1}, {{"\\pagecolor", NULL}, 1}, {{"\\colorbox", NULL}, 2}, {{"\\fcolorbox", NULL}, 2}, {{"\\declaregraphicsextensions", NULL}, 1}, {{"\\psfig", NULL}, 1}, {{"\\url", NULL}, 1}, {{"\\eqref", NULL}, 1}, {{"\\cref", NULL}, 1}, {{"\\Cref", NULL}, 1}, {{"\\vskip", NULL}, 1}, {{"\\vglue", NULL}, 1}, {{"\'\'", NULL}, 1}}; #define PATTERN_LEN (sizeof(PATTERN) / sizeof(PATTERN[0])) LaTeXParser::LaTeXParser(const char* wordchars) : TextParser(wordchars) , pattern_num(0), depth(0), arg(0), opt(0) { } LaTeXParser::LaTeXParser(const w_char* wordchars, int len) : TextParser(wordchars, len) , pattern_num(0), depth(0), arg(0), opt(0) { } LaTeXParser::~LaTeXParser() {} int LaTeXParser::look_pattern(int col) { for (unsigned int i = 0; i < PATTERN_LEN; i++) { const char* j = line[actual].c_str() + head; const char* k = PATTERN[i].pat[col]; if (!k) continue; while ((*k != '\0') && (tolower(*j) == *k)) { j++; k++; } if (*k == '\0') return i; } return -1; } /* * LaTeXParser * * state 0: not wordchar * state 1: wordchar * state 2: comments * state 3: commands * state 4: commands with arguments * state 5: % comment * */ bool LaTeXParser::next_token(std::string& t) { t.clear(); int i; int slash = 0; int apostrophe; for (;;) { // fprintf(stderr,"depth: %d, state: %d, , arg: %d, token: // %s\n",depth,state,arg,line[actual]+head); switch (state) { case 0: // non word chars if ((pattern_num = look_pattern(0)) != -1) { if (PATTERN[pattern_num].pat[1]) { state = 2; } else { state = 4; depth = 0; arg = 0; opt = 1; } head += strlen(PATTERN[pattern_num].pat[0]) - 1; } else if (line[actual][head] == '%') { state = 5; } else if (is_wordchar(line[actual].c_str() + head)) { state = 1; token = head; } else if (line[actual][head] == '\\') { if (line[actual][head + 1] == '\\' || // \\ (linebreak) (line[actual][head + 1] == '$') || // \$ (dollar sign) (line[actual][head + 1] == '%')) { // \% (percent) head++; break; } state = 3; } break; case 1: // wordchar apostrophe = 0; if ((is_wordchar(APOSTROPHE) || (is_utf8() && is_wordchar(UTF8_APOS))) && !line[actual].empty() && line[actual][head] == '\'' && is_wordchar(line[actual].c_str() + head + 1)) { head++; } else if (is_utf8() && is_wordchar(APOSTROPHE) && // add Unicode apostrophe // to the WORDCHARS, if // needed strncmp(line[actual].c_str() + head, UTF8_APOS, strlen(UTF8_APOS)) == 0 && is_wordchar(line[actual].c_str() + head + strlen(UTF8_APOS))) { head += strlen(UTF8_APOS) - 1; } else if (!is_wordchar(line[actual].c_str() + head) || (line[actual][head] == '\'' && line[actual][head + 1] == '\'' && ++apostrophe)) { state = 0; bool ok = alloc_token(token, &head, t); if (apostrophe) head += 2; if (ok) return true; } break; case 2: // comment, labels, etc if (((i = look_pattern(1)) != -1) && (strcmp(PATTERN[i].pat[1], PATTERN[pattern_num].pat[1]) == 0)) { state = 0; head += strlen(PATTERN[pattern_num].pat[1]) - 1; } break; case 3: // command if ((tolower(line[actual][head]) < 'a') || (tolower(line[actual][head]) > 'z')) { state = 0; head--; } break; case 4: // command with arguments if (slash && (line[actual][head] != '\0')) { slash = 0; head++; break; } else if (line[actual][head] == '\\') { slash = 1; } else if ((line[actual][head] == '{') || ((opt) && (line[actual][head] == '['))) { depth++; opt = 0; } else if (line[actual][head] == '}') { depth--; if (depth == 0) { opt = 1; arg++; } if (((depth == 0) && (arg == PATTERN[pattern_num].arg)) || (depth < 0)) { state = 0; // XXX not handles the last optional arg. } } else if (line[actual][head] == ']') depth--; } // case if (next_char(line[actual].c_str(), &head)) { if (state == 5) state = 0; return false; } } } hunspell-1.7.2/src/parsers/textparser.cxx0000664000175000017500000002242014352160534015474 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include #include #include #include #include "../hunspell/csutil.hxx" #include "textparser.hxx" #include #ifndef W32 using namespace std; #endif // ISO-8859-1 HTML character entities static const char* LATIN1[] = { "À", "Ã", "Å", "Æ", "È", "Ê", "Ì", "Ï", "Ð", "Ñ", "Ò", "Ø", "Ù", "Þ", "à", "ã", "å", "æ", "è", "ê", "ì", "ï", "ð", "ñ", "ò", "ø", "ù", "þ", "ÿ"}; #define LATIN1_LEN (sizeof(LATIN1) / sizeof(char*)) #define ENTITY_APOS "'" #define UTF8_APOS "\xe2\x80\x99" #define APOSTROPHE "'" TextParser::TextParser(const char* wordchars) { init(wordchars); } TextParser::TextParser(const w_char* wordchars, int len) { init(wordchars, len); } TextParser::~TextParser() {} int TextParser::is_wordchar(const char* w) { if (*w == '\0') return 0; size_t cache_index = (*w + 256) % 256; if (utf8) { const bool use_cache = cache_index < 0x80; if (use_cache) return wordcharacters[cache_index]; if (u8_u16(wc, w, true) < 1) return 0; unsigned short idx = (unsigned short)wc[0]; return unicodeisalpha(idx) || (wordchars_utf16 && std::binary_search(wordchars_utf16, wordchars_utf16 + wclen, wc[0])); } else { return wordcharacters[cache_index]; } } const char* TextParser::get_latin1(const char* s) { if (s[0] == '&') { unsigned int i = 0; while ((i < LATIN1_LEN) && strncmp(LATIN1[i], s, strlen(LATIN1[i]))) i++; if (i != LATIN1_LEN) return LATIN1[i]; } return NULL; } void TextParser::init(const char* wordchars) { actual = 0; head = 0; token = 0; state = 0; utf8 = 0; checkurl = 0; wordchars_utf16 = NULL; wclen = 0; wordcharacters.resize(256, 0); if (!wordchars) wordchars = "qwertzuiopasdfghjklyxcvbnmQWERTZUIOPASDFGHJKLYXCVBNM"; for (unsigned int j = 0; j < strlen(wordchars); ++j) { wordcharacters[(wordchars[j] + 256) % 256] = 1; } } void TextParser::init(const w_char* wc_utf8, int len) { actual = 0; head = 0; token = 0; state = 0; utf8 = 1; checkurl = 0; wordchars_utf16 = wc_utf8; wclen = len; // build a cache for the simple cases wordcharacters.resize(0x80); w_char wc2; wc2.h = 0; for (unsigned char idx = 0; idx < 0x80; ++idx) { wc2.l = idx; int cache = unicodeisalpha(idx) || (wordchars_utf16 && std::binary_search(wordchars_utf16, wordchars_utf16 + wclen, wc2)); wordcharacters[idx] = cache; } } int TextParser::next_char(const char* ln, size_t* pos) { if (*(ln + *pos) == '\0') return 1; if (utf8) { if (*(ln + *pos) >> 7) { // jump to next UTF-8 character for ((*pos)++; (*(ln + *pos) & 0xc0) == 0x80; (*pos)++) ; } else { (*pos)++; } } else (*pos)++; return 0; } void TextParser::put_line(const char* word) { actual = (actual + 1) % MAXPREVLINE; line[actual].assign(word); token = 0; head = 0; check_urls(); } std::string TextParser::get_prevline(int n) const { return line[(actual + MAXPREVLINE - n) % MAXPREVLINE]; } std::string TextParser::get_line() const { return get_prevline(0); } bool TextParser::next_token(std::string &t) { const char* latin1; for (;;) { switch (state) { case 0: // non word chars if (is_wordchar(line[actual].c_str() + head)) { state = 1; token = head; } else if ((latin1 = get_latin1(line[actual].c_str() + head))) { state = 1; token = head; head += strlen(latin1); } break; case 1: // wordchar if ((latin1 = get_latin1(line[actual].c_str() + head))) { head += strlen(latin1); } else if ((is_wordchar(APOSTROPHE) || (is_utf8() && is_wordchar(UTF8_APOS))) && !line[actual].empty() && line[actual][head] == '\'' && is_wordchar(line[actual].c_str() + head + 1)) { head++; } else if (is_utf8() && is_wordchar(APOSTROPHE) && // add Unicode apostrophe // to the WORDCHARS, if // needed strncmp(line[actual].c_str() + head, UTF8_APOS, strlen(UTF8_APOS)) == 0 && is_wordchar(line[actual].c_str() + head + strlen(UTF8_APOS))) { head += strlen(UTF8_APOS) - 1; } else if (!is_wordchar(line[actual].c_str() + head)) { state = 0; if (alloc_token(token, &head, t)) return true; } break; } if (next_char(line[actual].c_str(), &head)) return false; } } size_t TextParser::get_tokenpos() { return token; } int TextParser::change_token(const char* word) { if (word) { std::string remainder(line[actual].substr(head)); line[actual].resize(token); line[actual].append(word); line[actual].append(remainder); head = token; return 1; } return 0; } std::string TextParser::get_word(const std::string &tok) { return tok; } void TextParser::check_urls() { urlline.resize(line[actual].size() + 1); int url_state = 0; size_t url_head = 0; size_t url_token = 0; int url = 0; for (;;) { switch (url_state) { case 0: // non word chars if (is_wordchar(line[actual].c_str() + url_head)) { url_state = 1; url_token = url_head; // Unix path } else if (line[actual][url_head] == '/') { url_state = 1; url_token = url_head; url = 1; } break; case 1: // wordchar char ch = line[actual][url_head]; // e-mail address if ((ch == '@') || // MS-DOS, Windows path (strncmp(line[actual].c_str() + url_head, ":\\", 2) == 0) || // URL (strncmp(line[actual].c_str() + url_head, "://", 3) == 0)) { url = 1; } else if (!(is_wordchar(line[actual].c_str() + url_head) || (ch == '-') || (ch == '_') || (ch == '\\') || (ch == '.') || (ch == ':') || (ch == '/') || (ch == '~') || (ch == '%') || (ch == '*') || (ch == '$') || (ch == '[') || (ch == ']') || (ch == '?') || (ch == '!') || ((ch >= '0') && (ch <= '9')))) { url_state = 0; if (url == 1) { for (size_t i = url_token; i < url_head; ++i) { urlline[i] = true; } } url = 0; } break; } urlline[url_head] = false; if (next_char(line[actual].c_str(), &url_head)) return; } } int TextParser::get_url(size_t token_pos, size_t* hd) { for (size_t i = *hd; i < line[actual].size() && urlline[i]; i++, (*hd)++) ; return checkurl ? 0 : urlline[token_pos]; } void TextParser::set_url_checking(int check) { checkurl = check; } bool TextParser::alloc_token(size_t tokn, size_t* hd, std::string& t) { size_t url_head = *hd; if (get_url(tokn, &url_head)) return false; t = line[actual].substr(tokn, *hd - tokn); // remove colon for Finnish and Swedish language if (!t.empty() && t[t.size() - 1] == ':') { t.resize(t.size() - 1); if (t.empty()) { return false; } } return true; } hunspell-1.7.2/src/parsers/odfparser.hxx0000664000175000017500000000434014352145647015276 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #ifndef ODFPARSER_HXX_ #define ODFPARSER_HXX_ #include "xmlparser.hxx" /* * HTML Parser * */ class ODFParser : public XMLParser { public: explicit ODFParser(const char* wc); ODFParser(const w_char* wordchars, int len); virtual bool next_token(std::string&); virtual std::string get_word(const std::string &tok); virtual ~ODFParser(); }; #endif hunspell-1.7.2/src/parsers/htmlparser.hxx0000664000175000017500000000425614352145647015500 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #ifndef HTMLPARSER_HXX_ #define HTMLPARSER_HXX_ #include "xmlparser.hxx" /* * HTML Parser * */ class HTMLParser : public XMLParser { public: explicit HTMLParser(const char* wc); HTMLParser(const w_char* wordchars, int len); virtual bool next_token(std::string&); virtual ~HTMLParser(); }; #endif hunspell-1.7.2/src/parsers/htmlparser.cxx0000664000175000017500000000662314352145647015473 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * Copyright (C) 2002-2022 Németh László * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks. * * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno, * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád, * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter, * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls, * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include #include #include #include #include "../hunspell/csutil.hxx" #include "htmlparser.hxx" #ifndef W32 using namespace std; #endif static const char* PATTERN[][2] = {{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"<[cdata[", "]]>"}, // XML comment {"<", ">"}}; #define PATTERN_LEN (sizeof(PATTERN) / (sizeof(char*) * 2)) static const char* PATTERN2[][2] = { {" #include #include #include #include "../hunspell/csutil.hxx" #include "odfparser.hxx" #ifndef W32 using namespace std; #endif static const char* PATTERN[][2] = { {"", ""}, {"", ""}, {"", ""}, {""}, {"<[cdata[", "]]>"}, // XML comment {"<", ">"}}; #define PATTERN_LEN (sizeof(PATTERN) / (sizeof(char*) * 2)) static const char* (*PATTERN2)[2] = NULL; #define PATTERN_LEN2 0 static const char* PATTERN3[][2] = { {""}, // part of the reedited words {""}}; // for example, an inserted letter #define PATTERN_LEN3 (sizeof(PATTERN3) / (sizeof(char*) * 2)) ODFParser::ODFParser(const char* wordchars) : XMLParser(wordchars) { } ODFParser::ODFParser(const w_char* wordchars, int len) : XMLParser(wordchars, len) { } bool ODFParser::next_token(std::string& t) { return XMLParser::next_token(PATTERN, PATTERN_LEN, PATTERN2, PATTERN_LEN2, PATTERN3, PATTERN_LEN3, t); } std::string ODFParser::get_word(const std::string &tok) { return XMLParser::get_word2(PATTERN3, PATTERN_LEN3, tok); } ODFParser::~ODFParser() {} hunspell-1.7.2/configure.ac0000664000175000017500000000556414353367736012617 00000000000000# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) AC_INIT([hunspell],[1.7.2],[https://github.com/hunspell/hunspell/issues],,[https://hunspell.github.io]) AC_CONFIG_SRCDIR([config.h.in]) AC_CONFIG_HEADERS([config.h]) AC_CANONICAL_HOST AC_USE_SYSTEM_EXTENSIONS AC_CONFIG_MACRO_DIRS([m4]) AM_INIT_AUTOMAKE # the following 4 lines are used for pkg-check's .pc.in file HUNSPELL_VERSION_MAJOR=`echo $VERSION | cut -d"." -f1` HUNSPELL_VERSION_MINOR=`echo $VERSION | cut -d"." -f2` AC_SUBST(HUNSPELL_VERSION_MAJOR) AC_SUBST(HUNSPELL_VERSION_MINOR) # Checks for programs. AC_PROG_CXX AC_PROG_CC LT_INIT AC_PROG_AWK AX_CXX_COMPILE_STDCXX_11([noext], [optional]) # Checks for libraries. AM_ICONV AC_REQUIRE_AUX_FILE([tap-driver.sh]) # Checks for header files. AC_CHECK_HEADERS([locale.h langinfo.h]) # Checks for typedefs, structures, and compiler characteristics. gl_VISIBILITY # Checks for library functions. dnl internationalization macros AM_GNU_GETTEXT_VERSION(0.18) AM_GNU_GETTEXT([external]) AC_ARG_WITH(warnings,[ --with-warnings compile with warning messages],[ AC_DEFINE(HUNSPELL_WARNING_ON,1,"Define if you need warning messages") ]) CURSESLIB="" AC_ARG_WITH( [ui], [AS_HELP_STRING([--with-ui],[support Curses user interface])], [], [with_ui=no] ) AS_IF([test "x$with_ui" != xno], [ AC_CHECK_LIB([ncursesw],[tparm],[ CURSESLIB=-lncursesw ],[AC_CHECK_LIB([curses],[tparm],[ CURSESLIB=-lcurses ],[AC_CHECK_LIB([ncurses],[tparm],[ CURSESLIB=-lncurses ])])]) if test "$CURSESLIB" != "" ; then echo Compiling with curses user interface. AC_CHECK_HEADERS([curses.h]) if test "$CURSESLIB" = "-lncursesw" ; then AC_CHECK_HEADERS([ncursesw/curses.h]) else echo "No Unicode support on interactive console. (Install Ncursesw library.)" fi AC_DEFINE(HUNSPELL_WARNING_ON,1,"Define if you need warning messages") fi ]) AC_SUBST(CURSESLIB) AC_ARG_WITH( [readline], [AS_HELP_STRING([--with-readline],[support fancy command input editing])], [], [with_readline=no] ) READLINELIB="" AS_IF([test "x$with_readline" != xno], [AC_CHECK_LIB([tinfo],[tgetent], [ TERMLIB=-ltinfo ],[AC_CHECK_LIB([curses],[tparm],[ TERMLIB=-lncurses ],[AC_CHECK_LIB([termcap],[tgetent],[ TERMLIB=-ltermcap ])])]) LDSAVE=$LDFLAGS LDFLAGS="$LDFLAGS $TERMLIB" AC_CHECK_LIB([readline],[readline],[ AC_CHECK_HEADER([readline/readline.h],[ READLINELIB="-lreadline $TERMLIB" echo Using the readline library. AC_DEFINE([HAVE_READLINE],[1], ["Define if you have fancy command input editing with Readline"]) ]) ]) ]) AC_SUBST(READLINELIB) AC_CONFIG_FILES([ Makefile hunspell.pc man/Makefile man/hu/Makefile po/Makefile.in src/Makefile src/hunspell/Makefile src/hunspell/hunvisapi.h src/parsers/Makefile src/tools/Makefile tests/Makefile tests/suggestiontest/Makefile ]) AC_OUTPUT hunspell-1.7.2/config.sub0000755000175000017500000010645013424262414012267 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2018 Free Software Foundation, Inc. timestamp='2018-02-22' # 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 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # 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. # You can get the latest version of this script from: # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # 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 or ALIAS Canonicalize a configuration name. Options: -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 1992-2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo "$1" exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ kopensolaris*-gnu* | cloudabi*-eabi* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo "$1" | sed 's/-[^-]*$//'` if [ "$basic_machine" != "$1" ] then os=`echo "$1" | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'` ;; -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 \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | e2k | epiphany \ | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia16 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pru \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | wasm32 \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pru-* \ | pyramid-* \ | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | wasm32-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-pc os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; asmjs) basic_machine=asmjs-unknown ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2*) basic_machine=m68k-bull os=-sysv3 ;; e500v[12]) basic_machine=powerpc-unknown os=$os"spe" ;; e500v[12]-*) basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` os=$os"spe" ;; 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 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; 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 ;; 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 ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'` os=-linux ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; 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 ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; nsv-tandem) basic_machine=nsv-tandem ;; nsx-tandem) basic_machine=nsx-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle) 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) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh5el) basic_machine=sh5le-unknown ;; simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; x64) basic_machine=x86_64-pc ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases that might get confused # with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # es1800 is here to avoid being matched by es* (a different OS) -es1800*) os=-ose ;; # Now accept the basic system types. # The portable systems comes first. # Each alternative MUST end in a * to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme* \ | -midnightbsd*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -xray | -os68k* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo "$os" | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo "$os" | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo "$os" | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4*) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -pikeos*) # Until real need of OS specific support for # particular features comes up, bare metal # configurations are quite functional. case $basic_machine in arm*) os=-eabi ;; *) os=-elf ;; esac ;; -nacl*) ;; -ios) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; pru-*) os=-elf ;; *-be) os=-beos ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"` ;; esac echo "$basic_machine$os" exit # Local variables: # eval: (add-hook 'write-file-functions 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: hunspell-1.7.2/tap-driver.sh0000755000175000017500000004601113424262414012714 00000000000000#! /bin/sh # Copyright (C) 2011-2017 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . scriptversion=2013-12-23.17; # UTC # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u me=tap-driver.sh fatal () { echo "$me: fatal: $*" >&2 exit 1 } usage_error () { echo "$me: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat < # trap : 1 3 2 13 15 if test $merge -gt 0; then exec 2>&1 else exec 2>&3 fi "$@" echo $? ) | LC_ALL=C ${AM_TAP_AWK-awk} \ -v me="$me" \ -v test_script_name="$test_name" \ -v log_file="$log_file" \ -v trs_file="$trs_file" \ -v expect_failure="$expect_failure" \ -v merge="$merge" \ -v ignore_exit="$ignore_exit" \ -v comments="$comments" \ -v diag_string="$diag_string" \ ' # TODO: the usages of "cat >&3" below could be optimized when using # GNU awk, and/on on systems that supports /dev/fd/. # Implementation note: in what follows, `result_obj` will be an # associative array that (partly) simulates a TAP result object # from the `TAP::Parser` perl module. ## ----------- ## ## FUNCTIONS ## ## ----------- ## function fatal(msg) { print me ": " msg | "cat >&2" exit 1 } function abort(where) { fatal("internal error " where) } # Convert a boolean to a "yes"/"no" string. function yn(bool) { return bool ? "yes" : "no"; } function add_test_result(result) { if (!test_results_index) test_results_index = 0 test_results_list[test_results_index] = result test_results_index += 1 test_results_seen[result] = 1; } # Whether the test script should be re-run by "make recheck". function must_recheck() { for (k in test_results_seen) if (k != "XFAIL" && k != "PASS" && k != "SKIP") return 1 return 0 } # Whether the content of the log file associated to this test should # be copied into the "global" test-suite.log. function copy_in_global_log() { for (k in test_results_seen) if (k != "PASS") return 1 return 0 } function get_global_test_result() { if ("ERROR" in test_results_seen) return "ERROR" if ("FAIL" in test_results_seen || "XPASS" in test_results_seen) return "FAIL" all_skipped = 1 for (k in test_results_seen) if (k != "SKIP") all_skipped = 0 if (all_skipped) return "SKIP" return "PASS"; } function stringify_result_obj(result_obj) { if (result_obj["is_unplanned"] || result_obj["number"] != testno) return "ERROR" if (plan_seen == LATE_PLAN) return "ERROR" if (result_obj["directive"] == "TODO") return result_obj["is_ok"] ? "XPASS" : "XFAIL" if (result_obj["directive"] == "SKIP") return result_obj["is_ok"] ? "SKIP" : COOKED_FAIL; if (length(result_obj["directive"])) abort("in function stringify_result_obj()") return result_obj["is_ok"] ? COOKED_PASS : COOKED_FAIL } function decorate_result(result) { color_name = color_for_result[result] if (color_name) return color_map[color_name] "" result "" color_map["std"] # If we are not using colorized output, or if we do not know how # to colorize the given result, we should return it unchanged. return result } function report(result, details) { if (result ~ /^(X?(PASS|FAIL)|SKIP|ERROR)/) { msg = ": " test_script_name add_test_result(result) } else if (result == "#") { msg = " " test_script_name ":" } else { abort("in function report()") } if (length(details)) msg = msg " " details # Output on console might be colorized. print decorate_result(result) msg # Log the result in the log file too, to help debugging (this is # especially true when said result is a TAP error or "Bail out!"). print result msg | "cat >&3"; } function testsuite_error(error_message) { report("ERROR", "- " error_message) } function handle_tap_result() { details = result_obj["number"]; if (length(result_obj["description"])) details = details " " result_obj["description"] if (plan_seen == LATE_PLAN) { details = details " # AFTER LATE PLAN"; } else if (result_obj["is_unplanned"]) { details = details " # UNPLANNED"; } else if (result_obj["number"] != testno) { details = sprintf("%s # OUT-OF-ORDER (expecting %d)", details, testno); } else if (result_obj["directive"]) { details = details " # " result_obj["directive"]; if (length(result_obj["explanation"])) details = details " " result_obj["explanation"] } report(stringify_result_obj(result_obj), details) } # `skip_reason` should be empty whenever planned > 0. function handle_tap_plan(planned, skip_reason) { planned += 0 # Avoid getting confused if, say, `planned` is "00" if (length(skip_reason) && planned > 0) abort("in function handle_tap_plan()") if (plan_seen) { # Error, only one plan per stream is acceptable. testsuite_error("multiple test plans") return; } planned_tests = planned # The TAP plan can come before or after *all* the TAP results; we speak # respectively of an "early" or a "late" plan. If we see the plan line # after at least one TAP result has been seen, assume we have a late # plan; in this case, any further test result seen after the plan will # be flagged as an error. plan_seen = (testno >= 1 ? LATE_PLAN : EARLY_PLAN) # If testno > 0, we have an error ("too many tests run") that will be # automatically dealt with later, so do not worry about it here. If # $plan_seen is true, we have an error due to a repeated plan, and that # has already been dealt with above. Otherwise, we have a valid "plan # with SKIP" specification, and should report it as a particular kind # of SKIP result. if (planned == 0 && testno == 0) { if (length(skip_reason)) skip_reason = "- " skip_reason; report("SKIP", skip_reason); } } function extract_tap_comment(line) { if (index(line, diag_string) == 1) { # Strip leading `diag_string` from `line`. line = substr(line, length(diag_string) + 1) # And strip any leading and trailing whitespace left. sub("^[ \t]*", "", line) sub("[ \t]*$", "", line) # Return what is left (if any). return line; } return ""; } # When this function is called, we know that line is a TAP result line, # so that it matches the (perl) RE "^(not )?ok\b". function setup_result_obj(line) { # Get the result, and remove it from the line. result_obj["is_ok"] = (substr(line, 1, 2) == "ok" ? 1 : 0) sub("^(not )?ok[ \t]*", "", line) # If the result has an explicit number, get it and strip it; otherwise, # automatically assing the next progresive number to it. if (line ~ /^[0-9]+$/ || line ~ /^[0-9]+[^a-zA-Z0-9_]/) { match(line, "^[0-9]+") # The final `+ 0` is to normalize numbers with leading zeros. result_obj["number"] = substr(line, 1, RLENGTH) + 0 line = substr(line, RLENGTH + 1) } else { result_obj["number"] = testno } if (plan_seen == LATE_PLAN) # No further test results are acceptable after a "late" TAP plan # has been seen. result_obj["is_unplanned"] = 1 else if (plan_seen && testno > planned_tests) result_obj["is_unplanned"] = 1 else result_obj["is_unplanned"] = 0 # Strip trailing and leading whitespace. sub("^[ \t]*", "", line) sub("[ \t]*$", "", line) # This will have to be corrected if we have a "TODO"/"SKIP" directive. result_obj["description"] = line result_obj["directive"] = "" result_obj["explanation"] = "" if (index(line, "#") == 0) return # No possible directive, nothing more to do. # Directives are case-insensitive. rx = "[ \t]*#[ \t]*([tT][oO][dD][oO]|[sS][kK][iI][pP])[ \t]*" # See whether we have the directive, and if yes, where. pos = match(line, rx "$") if (!pos) pos = match(line, rx "[^a-zA-Z0-9_]") # If there was no TAP directive, we have nothing more to do. if (!pos) return # Let`s now see if the TAP directive has been escaped. For example: # escaped: ok \# SKIP # not escaped: ok \\# SKIP # escaped: ok \\\\\# SKIP # not escaped: ok \ # SKIP if (substr(line, pos, 1) == "#") { bslash_count = 0 for (i = pos; i > 1 && substr(line, i - 1, 1) == "\\"; i--) bslash_count += 1 if (bslash_count % 2) return # Directive was escaped. } # Strip the directive and its explanation (if any) from the test # description. result_obj["description"] = substr(line, 1, pos - 1) # Now remove the test description from the line, that has been dealt # with already. line = substr(line, pos) # Strip the directive, and save its value (normalized to upper case). sub("^[ \t]*#[ \t]*", "", line) result_obj["directive"] = toupper(substr(line, 1, 4)) line = substr(line, 5) # Now get the explanation for the directive (if any), with leading # and trailing whitespace removed. sub("^[ \t]*", "", line) sub("[ \t]*$", "", line) result_obj["explanation"] = line } function get_test_exit_message(status) { if (status == 0) return "" if (status !~ /^[1-9][0-9]*$/) abort("getting exit status") if (status < 127) exit_details = "" else if (status == 127) exit_details = " (command not found?)" else if (status >= 128 && status <= 255) exit_details = sprintf(" (terminated by signal %d?)", status - 128) else if (status > 256 && status <= 384) # We used to report an "abnormal termination" here, but some Korn # shells, when a child process die due to signal number n, can leave # in $? an exit status of 256+n instead of the more standard 128+n. # Apparently, both behaviours are allowed by POSIX (2008), so be # prepared to handle them both. See also Austing Group report ID # 0000051 exit_details = sprintf(" (terminated by signal %d?)", status - 256) else # Never seen in practice. exit_details = " (abnormal termination)" return sprintf("exited with status %d%s", status, exit_details) } function write_test_results() { print ":global-test-result: " get_global_test_result() > trs_file print ":recheck: " yn(must_recheck()) > trs_file print ":copy-in-global-log: " yn(copy_in_global_log()) > trs_file for (i = 0; i < test_results_index; i += 1) print ":test-result: " test_results_list[i] > trs_file close(trs_file); } BEGIN { ## ------- ## ## SETUP ## ## ------- ## '"$init_colors"' # Properly initialized once the TAP plan is seen. planned_tests = 0 COOKED_PASS = expect_failure ? "XPASS": "PASS"; COOKED_FAIL = expect_failure ? "XFAIL": "FAIL"; # Enumeration-like constants to remember which kind of plan (if any) # has been seen. It is important that NO_PLAN evaluates "false" as # a boolean. NO_PLAN = 0 EARLY_PLAN = 1 LATE_PLAN = 2 testno = 0 # Number of test results seen so far. bailed_out = 0 # Whether a "Bail out!" directive has been seen. # Whether the TAP plan has been seen or not, and if yes, which kind # it is ("early" is seen before any test result, "late" otherwise). plan_seen = NO_PLAN ## --------- ## ## PARSING ## ## --------- ## is_first_read = 1 while (1) { # Involutions required so that we are able to read the exit status # from the last input line. st = getline if (st < 0) # I/O error. fatal("I/O error while reading from input stream") else if (st == 0) # End-of-input { if (is_first_read) abort("in input loop: only one input line") break } if (is_first_read) { is_first_read = 0 nextline = $0 continue } else { curline = nextline nextline = $0 $0 = curline } # Copy any input line verbatim into the log file. print | "cat >&3" # Parsing of TAP input should stop after a "Bail out!" directive. if (bailed_out) continue # TAP test result. if ($0 ~ /^(not )?ok$/ || $0 ~ /^(not )?ok[^a-zA-Z0-9_]/) { testno += 1 setup_result_obj($0) handle_tap_result() } # TAP plan (normal or "SKIP" without explanation). else if ($0 ~ /^1\.\.[0-9]+[ \t]*$/) { # The next two lines will put the number of planned tests in $0. sub("^1\\.\\.", "") sub("[^0-9]*$", "") handle_tap_plan($0, "") continue } # TAP "SKIP" plan, with an explanation. else if ($0 ~ /^1\.\.0+[ \t]*#/) { # The next lines will put the skip explanation in $0, stripping # any leading and trailing whitespace. This is a little more # tricky in truth, since we want to also strip a potential leading # "SKIP" string from the message. sub("^[^#]*#[ \t]*(SKIP[: \t][ \t]*)?", "") sub("[ \t]*$", ""); handle_tap_plan(0, $0) } # "Bail out!" magic. # Older versions of prove and TAP::Harness (e.g., 3.17) did not # recognize a "Bail out!" directive when preceded by leading # whitespace, but more modern versions (e.g., 3.23) do. So we # emulate the latter, "more modern" behaviour. else if ($0 ~ /^[ \t]*Bail out!/) { bailed_out = 1 # Get the bailout message (if any), with leading and trailing # whitespace stripped. The message remains stored in `$0`. sub("^[ \t]*Bail out![ \t]*", ""); sub("[ \t]*$", ""); # Format the error message for the bailout_message = "Bail out!" if (length($0)) bailout_message = bailout_message " " $0 testsuite_error(bailout_message) } # Maybe we have too look for dianogtic comments too. else if (comments != 0) { comment = extract_tap_comment($0); if (length(comment)) report("#", comment); } } ## -------- ## ## FINISH ## ## -------- ## # A "Bail out!" directive should cause us to ignore any following TAP # error, as well as a non-zero exit status from the TAP producer. if (!bailed_out) { if (!plan_seen) { testsuite_error("missing test plan") } else if (planned_tests != testno) { bad_amount = testno > planned_tests ? "many" : "few" testsuite_error(sprintf("too %s tests run (expected %d, got %d)", bad_amount, planned_tests, testno)) } if (!ignore_exit) { # Fetch exit status from the last line. exit_message = get_test_exit_message(nextline) if (exit_message) testsuite_error(exit_message) } } write_test_results() exit 0 } # End of "BEGIN" block. ' # TODO: document that we consume the file descriptor 3 :-( } 3>"$log_file" test $? -eq 0 || fatal "I/O or internal error" # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: hunspell-1.7.2/hunspell.pc.in0000644000175000017500000000041513422074107013057 00000000000000prefix=@prefix@ exec_prefix=${prefix} libdir=@libdir@ includedir=@includedir@ Name: hunspell Description: Hunspell spellchecking library Version: @VERSION@ Libs: -L${libdir} -lhunspell-@HUNSPELL_VERSION_MAJOR@.@HUNSPELL_VERSION_MINOR@ Cflags: -I${includedir}/hunspell hunspell-1.7.2/config.h.in0000664000175000017500000000744014353370167012337 00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS /* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework. */ #undef HAVE_CFLOCALECOPYCURRENT /* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework. */ #undef HAVE_CFPREFERENCESCOPYAPPVALUE /* Define to 1 if you have the header file. */ #undef HAVE_CURSES_H /* define if the compiler supports basic C++11 syntax */ #undef HAVE_CXX11 /* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define if you have the iconv() function and it works. */ #undef HAVE_ICONV /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_LANGINFO_H /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file. */ #undef HAVE_NCURSESW_CURSES_H /* "Define if you have fancy command input editing with Readline" */ #undef HAVE_READLINE /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 or 0, depending whether the compiler supports simple visibility declarations. */ #undef HAVE_VISIBILITY /* "Define if you need warning messages" */ #undef HUNSPELL_WARNING_ON /* Define as const if the declaration of iconv() needs const. */ #undef ICONV_CONST /* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # undef __EXTENSIONS__ #endif /* Version number of package */ #undef VERSION /* Define to 1 if on MINIX. */ #undef _MINIX /* Define to 2 if the system does not provide POSIX.1 features except with this defined. */ #undef _POSIX_1_SOURCE /* Define to 1 if you need to in order for `stat' and other things to work. */ #undef _POSIX_SOURCE hunspell-1.7.2/ChangeLog0000644000175000017500000025554613422074107012067 000000000000002016-04-29 Caolán McNamara : * deprecate old api and add new one old one remains implemented in terms of new one and will eventually be removed * shrink exposed api down to just hunspell.hxx * next major release is likely to require C++11 2016-04-15 Caolán McNamara : * generally using std::string and std::vector internally 2016-04-13 Caolán McNamara : * gh#371 drop experimental code 2015-09-11 Caolán McNamara : * rhbz#1261421 crash on mashing hangul korean keyboard 2014-12-03 Németh László : * tools/hunspell.cxx: security fixes of the Hunspell executable - secure file name handling, the problem (checking OpenDocument files with malicious file names) reported by Eric Sesterhenn - using tmpnam() only with system("mkdir tempname && ...") 2014-10-17 Caolán McNamara : * sf#245 Feature from Anish Patil -S mode to show suggestions for completion of correctly spelled words * sf#248 Fix manpage about how to include 2014-10-16 Caolán McNamara : * rhbz#915448, sf#57, sf#185 report character offset and not byte offset in ispell mode * sf#56 segv in experimental mode * sf#228 don't translate init string 2014-09-22 Németh László : * fix crash in morphological analysis of the Hungarian compound word 'művészegyéniség', reported by Gáspár Sinai 2014-08-26 Németh László : * unmunch separates flags of prefixes from the word, bug reported by Daniel Naber 2014-08-05 Németh László : * moz#318040 Mozzilla accepts abbreviations without dots * myfopen(): add _wfullpath to expand relative parts of absolute paths 2014-07-16 Caolán McNamara : * moz#675553 Switch from PRBool to bool * moz#690892 replace PR_TRUE/PR_FALSE with true/false * Silence the warning about empty while body loop in clang * moz#777292 Make nsresult an enum * moz#579517 Use stdint types in gecko * moz#784776 consistently use FLAG_NULL * moz#927728 Convert PRUnichar to char16_t * moz#943268 Remove nsCharsetAlias and nsCharsetConverterManager * Don't include config.h in license.hunspell if MOZILLA_CLIENT is set 2014-06-26 Caolán McNamara : * clang scan-build: Allocator sizeof operand mismatch * clang scan-build: other low hanging warnings * clang scan-build: significant warnings 2014-06-02 Németh László : * escape spaces in paths of ODF files 2014-05-28 Németh László : * add long path/Unicode path support in WIN32 environment: - hunspell#233 (reported by mahak gark) and LibreOffice fdo#48017 * flat ODF support, eg.: hunspell doc.fodt cat doc.fodt | hunspell -l -O * new options: - -X (XML) input format - -O (ODF or flat ODF) input format - --check-apostrophe: check and force Unicode apostrophe usage (ASCII or Unicode apostrophe has to be in the WORDCHARS section of the affix file) * fix ODF support: - break 1-line XML of ODT documents at , too, not only at (limiting tokenization problems, when fgets stops within an XML tag) - show ODF file path on the UI instead of the temporary file * fix XML support: - ', ", &, < and > in replacements converted to XML entities - recognize &apos at tokenization, depending from WORDCHARS - ' in tokens converted to ' before spell checking and in the output of the pipe interface * better apostrophe usage: - WORDCHARS only with one of the Unicode or ASCII apostrophe results extended word tokenization: both of them will be part of the words (if they are inside: eg. word's, but not words'). - convert Unicode apostrophes to ASCII ones for 8-bit dictionaries (eg. English dictionaries), or for UTF-8 dictionaries only with ASCII apostrophe supports (eg. French dictionaries). * updated manual: - hunspell.4 renamed to hunspell.5, see hunspell#241 reported by Cristopher Yeleighton - updated translations - note about long/Unicode paths in WIN32 (hunspell.3) 2014-04-25 Németh László : * OpenDocument support, eg. hunspell *.odt hunspell -l *.odt * always load default personal dictionary (fix filtering bad words - reduce this word list - using it as a personal dictionary workflow) * fix parsing/URL recognition problem (bad tokens with aposthrophes) 2013-07-25 pchang9@cs.wisc.edu * moz#897255 Wasted work in line_uniq * moz#897780 Wasted work in SuggestMgr::twowords 2013-07-25 Caolán McNamara : * hunspell#167 layout problems with long lines - based on the original fix by xorho adapted to HEAD * rhbz#925562 upgrade config.guess for aarch64 2013-07-24 pchang9@cs.wisc.edu * moz#896301 Wasted work in SfxEntry::checkword * moz#896844 Wasted work in AffixMgr::defcpd_check 2013-06-13 Konstantin Khlebniko * #49 HashMgr::add_word computes wrong size for struct hentry 2013-06-13 Ville Skyttä * #53 Man page syntax fixes 2013-04-19 John Thomson * win_api: add remove() of Hunspell API (hun#3606435) 2013-04-19 Rouslan Solomokhin * fix crash in suggestions for 99-character long words by extending arrays of SuggestMgr::forgotchar_* (hun#3595024, also http://crbug.com/130128), thanks to also Paweł Hajdan to report the patch 2013-04-01 Caolán McNamara : * hunspell: -Werror=undef 2013-03-13 Caolán McNamara : * rhbz#918938 crash in interaction with danish thesaurus 2012-09-18 Németh László : * src/hunspell/affixmgr.*: - fix morphological analysis of compound words (hun#3544994, reported by Dávid Nemeskey, fdo#55045) 2012-06-29 Caolán McNamara : * fix various coverity warnings 2012-01-10 Ehsan Akhgari * moz#710940 Firefox Crash [@ AffixMgr::parse_file(char const*, char const*) ] 2011-12-16 Jared Wein * moz#710967 Incorrect argument passed to strncmp in AffixMgr::parse_convtable 2011-12-06 Caolán McNamara : * rhbz#759647 fixed tempname of hunSPELL.bak collides with other users when multiple edits in one dir 2011-10-13 Caolán McNamara : * moz#694002 crash in hunspell affixmgr on exit with bad .aff * leak in hunspell affixmgr with bad .aff 2011-09-19 Caolán McNamara : * make libparsers.a not installed thanks to Tomáš Chvátal 2011-06-23 Caolán McNamara : * fix some windows compiler warnings 2011-05-24 Németh László : * src/hunspell/affixmgr.*: allow twofold suffixes in compounds by extended version of Arno Teigseth's patch, see hun#3288562. - new option for this feature: COMPOUNDMORESUFFIXES 2011-02-16 Németh László : * src/*/Makefile.am: fix library versioning, the probem reported by Rene Engerhald and Simon Brouwer. * man/hunspell.4: new version based on the revised version of Ruud Baars 2011-02-02 Németh László : * suggestngr.cxx: fix ngram PHONE suggestion for input words with diacritics using UTF-8 encoded dictionaries (add byte length to the 8-bit phonet() argument instead of character length) * suggestmgr.cxx: fix missing csconv problem with UTF-8 encoding dictionares, when the input contains non-BMP characters - tests/utf8_nonbmp.sug: test file * suggestmgr.cxx: mixed and keyboard based character suggestions don't forbid ngram suggestion search (optimized tests/suggestiontest) * affixmgr.cxx: fix hun#2999225: interfering compounding mechanisms, tested on Dutch word list and reported by Ruud Baars * affixmgr.cxx: allomorph fix for hun#2970240 (Hungarian compound "vadász+gép" was analyzed as vad+ász+gép, and rejected by the ss->s rep rule (verb "vadássz"), but the analysis didn't continue for the longer word parts (vadász+gép). * csutil.cxx: add lang code "az_AZ", "hu_HU", "tr_TR" for back compatibility (fixing Azeri and Turkish casing conversion, also Hungarian compound handling) * affixmgr.cxx: fix morphological analysis 2011-01-26 Németh László : * affixmgr.cxx: fix for moz#626195 (memcheck problem with FULLSTRIP). * affixmgr.*, suggestmgr.cxx: FORBIDWARN parameter (see manual) 2011-01-24 Németh László : * suffixmgr.cxx: fix bad suggestion of forbidden compound words, eg. "termijndoel" with the Dutch dictionary. Reported by Ruud Baars. * latexparser.cxx: fix double apostrophe TeX quoation mark tokenization (hun#3119776), reported by Wybodekker at SF.net. * tests/suggestiontest/*: multilanguage and single Hunspell version, see README * tests/suggestiontest/prepare2: for make -f Makefile.orig single 2011-01-22 Németh László : * affixmgr.*, suggestmgr.*: new features ONLYMAXDIFF: remove all bad ngram suggestions (default mode keeps one) NONGRAMSUGGEST: similar to NOSUGGEST, but it forbids to use the word in ngram based (more, than 1-character distance) suggestions. 2011-01-21 Németh László : * suggestmgr.*: limit wild suggestions (hun#2970237 by Ruud Baars) - limited compound word suggestions - improved and limited ngram based suggestions * tests/*.sug: modified test files - feature MAXCPDSUGS: MAXCPDSUGS 0 : no compound suggestion, suggested by Finn Gruwier Larsen in hunfeat#2836033 MAXCPDSUGS n : max. ~n compound suggestions - feature MAXDIFF: differency limit for ngram suggestions: 0-10 eg. MAXDIFF 5: normal (default) limit MAXDIFF 0: only one ngram suggestion MAXDIFF 10: ~maxngramsugs ngram suggestions * affixmgr.*, hunspell.*: add flag FORCEUCASE (hun#2999228), force capitalization of compound words, see Hunspell 4 manual), suggested by Ruud Baars test/forceucase.*: test files * affixmgr.*, hunspell.*: add flag WARN (hun#1808861), optional warning feature for rare words, suggested by Ruud Baars tests/warn: test files * tools/hunspell.cxx: add option -r for optional filtering of rare words * affixmgr.cxx: fix hun#3161359 (gcc warnings) reported by Ryan VanderMeulen. 2011-01-17 Németh László : * suggestmgr.cxx: fix hun#3158994 and hun#3159027 (missing csconv table using awkward 8bit capitalization of UTF-8 encoded dictionary words with PHONE suggestion, reported by benjarobin and dicollecte at SF.net). 2011-01-13 Németh László : * affixmgr.cxx: ONLYINCOMPOUND fix for hun#2999224 (fogemorphene was allowed in end position of compoundings). Reported by Ruud Baars. * tests/onlyincompound2.*: test files 2011-01-10 Ingo H. de Boer : * win_api/{hunspell,libhunspell, testparser}.vcproj: updated project files for the library and the executables. Compiling problem also reported by Don Walker. 2011-01-06 Németh László : * affixmgr.cxx: fix freedesktop#32850 (program halt during Hungarian spell checking of the word "6csillagocska6", reported by András Tímár) * tools/hunspell.cxx: add Mac OS X Hunspell dictionary paths, asked by Vidar Gundersen in hunfeat#3142010 2011-01-05 Caolán McNamara : * moz#620626 NS_UNICHARUTIL_CID doesn't support case conversion 2011-01-03 Németh László : * NEWS and THANKS: update for release 1.2.13 2010-12-20 Németh László : * affixmgr.cxx: hun#3140784 2010-12-16 Németh László : * affixmgr.cxx: - improved fix of hun#2970242 (supporting zero affixes, reported by Ruud Baars - tests/opentaal_cpdpat{,2}: test files - switching off default BREAK parameters by BREAK 0, reported by Ruud Baars - hun#2999225: interfering compounding mechanisms, reported by Ruud Baars 2010-12-11 Németh László : * affixmgr.cxx: fix hun#2970242 (CHECKCOMPOUNDPATTERN only with flags), the bug reported by Ruud Baars * tests/2970242.*: test files * tests/2970240.*: test files for CHECKCOMPOUNDPATTERN fix (check all boundaries in compound words, fixed by the previous CHECKCOMPOUNDREP fix), the bug reported by Ruud Baars * win_api/Makefile.cygwin: update 2010-12-09 Caolán McNamara : * moz#617953 fix leak 2010-11-08 Caolán McNamara : * rhbz#650503 crash in arabic dictionary 2010-11-05 Caolán McNamara : * rhbz#648740 don't warn on empty flagvector 2010-11-03 Caolán McNamara : * logically we shouldn't need a csconv table in utf-8 mode 2010-10-27 Németh László : * hun#3000055 (requested by Ruud Baars) add REP boundary specifiation: REP ^word$ xxxx REP ^wordstarting xxxx REP wordending$ xxxx * hun#3008434 (requested by Adrián Chaves Fernández) and hun#3018929 (requested by Ruud Baars): REP with more than 2 words: REP morethantwo more_than_two * suggestmgr.cxx: fix incomplete suggestion list for capitalized words, eg. missing Machtstrijd->Machtsstrijd in the Dutch dictionary (reported by Ruud Bars) * tests, man: related updates 2010-10-12 Caolán McNamara : * moz#603311 HashMgr::load_tables leaks dict when decode_flags fails * fix mem leak found with new tests * hun#3084340 allow underscores in html entity names 2010-10-07 Németh László : * affixmgr.cxx: - hun#2970239 fix bad suggestion of forbidden compound words - hun#2999224 fix keepcase feature on compound words (only partial fix for COMPOUNDRULE based compounding) - fix checkcompoundrep feature in compound words (check all boundaries, not only the last one) Problems reported by Ruud Baars. * tests/opentaal_forbiddenword[12]*, tests/opentaal_keepcase*: new test files for the previous fixes * tests/checkcompoundrep: extended test file. 2010-09-05 Caolán McNamara : * moz#583582 fix double buffer gcc fortify issue 2010-08-13 Caolán McNamara : * moz#586671 AffixMgr::parse_convtable leaks pattern/pattern2 if it can't create both * moz#586686 tidy up get_xml_list and friends 2010-08-10 Caolán McNamara : * hun#3022860 fix remove duplicate code 2010-07-17 Caolán McNamara : * remove ununsed get_default_enc and avoid potential misrecognition of three letter language ids * normalize encoding names before lookup 2010-07-05 Caolán McNamara : * hun#2286060 add Hangul syllables to unicode tables 2010-06-26 Caolán McNamara : * moz#571728 keep new[]/delete[] wrappers in sync for embedded in moz case 2010-06-13 Caolán McNamara : * moz#571728 keep new[]/delete[] wrappers in sync for embedded in moz case 2010-06-02 Caolán McNamara : * moz#569611 compile cleanly under win64 2010-05-22 Caolán McNamara : * moz#525581 apply mozilla's current preferred get_current_cs impl 2010-05-17 Németh László : * affixmgr.cxx: fix bad limitation of parenthesized flags at COMPOUNDRULEs. Windows crash reported by Ruud Baars and Simon Brouwer. 2010-05-05 Caolán McNamara : * rhbz#589326 malloc of int that should have been of char** * hun#2997388 fix ironic misspellings 2010-04-28 Caolán McNamara : * moz#550942 get_xml_list doesn't handle failure from get_xml_par 2010-04-27 Caolán McNamara : * moz#465612 mozilla-specific code leaks * moz#430900 phone is dereferenced before oom check * moz#418348 ckey_utf alloc is used unchecked in SuggestMgr::badcharkey_utf * CID#1487 pointer "rl" dereferenced before NULL check * CID#1464 Returned without freeing storage "ptr" * CID#1459 Avoid duplicate strchr * CID#1443 Avoid any chance of dereferencing *slst * CID#1442 Unsafe to have a null morph * CID#1440 Avoid null filenames * CID#1302 Dereferencing NULL value "apostrophe" * CID#1441 Avoid deferencing null ppfx 2010-04-16 Caolán McNamara : * hun#2344123 fix U)ncap in utf-8 locale * fix up hunspell text UI and lines wider than terminal 2010-04-15 Caolán McNamara : * hun#2613701 fix small leak in FileMgr::FileMgr * fix small leak in tools/hunspell * hun#2871300 avoid crash if def and words are NULL * hun#2904479 fix length of hzip file * hun#2986756 mingw build fix * hun#2986756 fix double-free * hun#2059896 fix crash in interactive mode without nls * hun#2917914 add some extra words to the latexparser * make some structs static * C-api has duped symbol names * regenerate gettext/intl with recent version * hun#2796772 build a .dll under MinGW * rhbz#502387 allow cross-compiling for MinGW target * hun#2467643 update .vcproj files to include replist.?xx * unify visiblity/dll_export support across platforms * hun#2831289 sizeof(short) typo * hun#2986756 add -u3 gcc style output 2010-04-14 Caolán McNamara : * hun#2813804 fix segfault on hu_HU stemming 2010-04-13 Caolán McNamara : * hun#2806689 fix ironic misspellings * hun#2836240 add Italian translations 2010-04-09 Caolán McNamara : * fix titchy possible leak in command-line spellchecker 2010-04-07 Caolán McNamara : * hun#2973827 apply win64 patch * hun#2005643 fix broken mystrdup 2010-03-04 Caolán McNamara : * ooo#107768 fix crash in long strings in spellml mode * hun#1999737 add some malloc checks * hun#1999769 drop old buffer on realloc failure * hun#2005643 tidy string functions * hun#2005643 micro-opt * hun#2006077 free strings on failed dict parse * hun#2110783 ispell-alike verbose mode implementation 2010-03-03 Németh László : * hunspell/(affixmgr, suggestmgr).cxx: add character sequence support for MAP suggestion, using parenthesized character groups in the syntax, eg. MAP ß(ss). * man/hunspell.4, tests/map*: documentation and test files 2010-02-25 Németh László : * hunspell/hunspell.cxx: add recursion limit for BREAK (fix OOo Issue 106267) * hunspell/hunspell.cxx: fix crash in morphological analysis of capitalized words with ending dashes * affixmgr.cxx: fix morphological analysis of long numbers combined with dash, eg. 45-00000045 (reported by a@freeblog.hu). 2010-02-23 Caolán McNamara : * hun#2314461 improve ispell-alike mode * hun#2784983 improve default language detection * hun#2812045 fix some compiler warnings * hun#2910695 survive missing HOME dir * hun#2934195 fix suggestmgr crash * hun#2921129 remove unused variables * hun#2826164 make sure make check uses the in-tree libhunspell * bump toolchain to support --disable-rpath * hun#2843984 fix coverity warning * hun#2843986 fix coverity warning * hun#2077630 add iconv lib * make gcc strict-aliasing warning free * make cppcheck warning free 2008-11-01 Németh László : * replist.*, hunspell.cxx, affixmgr.cxx: new input and output conversion support, see ICONV and OCONV keywords in the Hunspell(4) manual page and the test examples. The input/output conversion problem of syllabic languages reported by Daniel Yacob and Shewangizaw Gulilat. - tests/{iconv,oconv}.*: test examples * tools/wordforms: word generation script for dictionary developers (Hunspell version of the unmunch program) * hunspell/hunspell.cxx: extended BREAK feature: ^ and $ mean in break patterns the beginning and end of the word. - tests/BREAK.*: modified examples. * hunspell/hunspell.cxx: set default break at hyphen characters. The associated problem reported by S Page in Hunspell Bug 2174061. See Mozilla Bug ID 355178 and OOo Issue 64400, too. - tests/breakdefault.*: test data The following definition is equivalent of the default word break: BREAK 3 BREAK - BREAK ^- BREAK -$ * affixmgr.cxx: SIMPLIFIEDTRIPLE is a new affix file keyword to allow simplified forms of the compound words with triple repeating letters. It is useful for Swedish and Norwegian languages. * affixmgr.cxx: extend CHECKCOMPOUNDPATTERN to support alternations of compound words for example by sandhi feature of Indian and other languages. The problem reported by Kiran Chittella associated with Telugu writing system (see Telugu example in tests/checkcompoundpattern4.test). The new optional field of CHECKCOMPOUNDPATTERN definition is the replacement of the compound boundary defined by the previous fields: CHECKCOMPOUNDPATTERN ff f ff means ff|f compound boundary has been replaced by "ff", like in the (prereform) German Schiffahrt (Schiff+fahrt). - CHECKCOMPOUNDPATTERN supports also optional flag conditions now: CHECKCOMPOUNDPATTERN ff/A f/B ff means that the first word of the compound needs flag "A" and the second word of the compound needs flag "B" to the operation. * tools/hunspell.cxx: add empty lines as separators to the output of the stemming and morphological analysis. * affixmgr.cxx: fix condition checking algorithm. Bad suggestion generation reported by Mehmet Akin in SF.net Bug 2124186 with help of Eleonora Goldman. * affixmgr,cxx: fix COMPOUNDWORDMAX feature. The problem and its code details reported by Göran Andersson under SF.net Bug ID 2138001. * csutil.cxx: fix bad conditional code for Mozilla compilation. Patch by Serge Gautherie. The problem reported by Ryan VanderMeulen. * hunspell/hunspell.cxx: add missing ngram suggestion for HUHINITCAP (capitalized mixed case) words. * w_char.hxx: use GCC conditions for GCC related code. Patch by Ryan VanderMeulen. * affixmgr.cxx: check morphological description in morphgen() (fix potential program fault by incomplete morphological description of affix rules) * src/win_api: config.h: switch on warning messages on Windows * tools/affixcompress: extended help for -h (use LC_ALL=C sort for input word list) * man/hunspell.4: updated manual: - new and modified features (SIMPLIFIEDTRIPLE, ICONV, OCONV, BREAK, CHECKCOMPOUNDPATTERN). - note about costs of zero affixes, suggested by Olivier Ronez. * hunspell/hunspell.cxx: remove deprecated word breaking codes. 2008-08-15 Németh László : * affentry.cxx: add FULLSTRIP option. With FULLSTRIP, affix rules can strip full words, not only one less characters. Suggested by Davide Prina and other developers in OOo Issue 80145. * tests/fullstrip.*: Test data based on Davide Prina's example. * tools/unmunch.cxx: modified for FULLSTRIP. * affixmgr.cxx: COMPOUNDRULE now works with long and numerical flag types by parenthesized flags. Syntax: (flag)*, (flag)(flag)?(flag)*. * tests/compoundrule[78].*: tests with parenthesized COMPOUNDRULE definitions. * suggestmgr.cxx: modified badchar*(), forgotchar*() and extrachar*() 1-character distance suggestion algorithms: search a TRY character in all position instead of all TRY characters in a character position (it can give more readable suggestion order, also better suggestions in the first positions, when TRY characters are sorted by frequency.) For example, suggestions for "moze": ooze, doze, Roze, maze, more etc. (Hunspell 1.2.6), maze, more, mote, ooze, mole etc. (Hunspell 1.2.7). * suggestmgr.cxx: extended compound word checking for better COMPOUNDRULE related suggestions, for example English ordinal numbers: 121323th -> 121323rd (it needs also a th->rd REP definition). * phonet.cxx: cast unsigned char parameter of isdigit() and fix isalpha by myisalpha() (potential problems in Windows environment). Reported by Thomas Lange in OOo Issue 92736. * hunspell/csutil.*,hunspell/{affentry,affixmgr,hunspell,suggestmgr}.cxx: fix potential buffer overloading under morphological analysis by the new mystrcat() function. Reported by Molnár Andor (dolhpy at true dot hu) in SF.net Bug 2026203. * affixmgr.cxx: add recursion limit to defcpd(). Fix OOo Issue 76067: crash-like deceleration by checking hexadecimal numbers with long FFF sequence (combinatory explosion by the en_US words "f" and "ff"). Missing fix reported by Mathias Bauer. * affixmgr.cxx: fix the difference in the Unicode and non-Unicode parts of cpdcase_check(). Bug report by Brett Wilson. * filemgr.*, affixmgr.cxx, csutil.*, hashmgr.*: warning messages now contain line numbers (use --with-warnings configure option for warning messages). * hunspell.cxx: analyze(): fix case conversion of stemming and morphological analysis of UTF-8 encoded input. Reported by Ferenc Godó. * tools/hunspell.cxx: fix LaTeX Unicode support in filter mode. Reported by Jan Seeger in SF.net Bug 2039990. * affixmgr.hxx: 0.5 or in 64 bit environment, 1 MB (virtual) memory saving using only the requested size for sFlag and pFlag arrays. Bug report by Brett Wilson. * affixmgr.cxx,tools/hunspell.cxx: get_version() returns with full VERSION affix parameter instead of its first word. Fixes for Hunspell's header. Some problems with Hunspell header reported in SF.net Bug 2043080. 2008-07-15 Németh László : * affentry.cxx: fixes of the affix rule matching algorithm (affected only the sk_SK dictionary from all OpenOffice.org dictionaries): - fix dot pattern + accented letters matching (in non Unicode encoding) - word-length conditions work again * tests/condition.*: extended test for the fix. * hashmgr.cxx: load multiword expressions: spaces may be parts of the dictionary words again (but spaces also work as morphological field separators: word word2 -> "word word2", word po:noun -> "word"). * man/hunspell.4: updated manual * tools/hunspell.cxx: add iconv character conversion support to stemming and morphological analysis * tools/hunspell.cxx: add /usr/share/myspell/dicts search path for Ubuntu support 2008-07-09 Németh László : * affentry.cxx: fixes of the affix rule matching algorithm: - right ASCII character handling in bracket expression; - fault-tolerant nextchar() for bad rules. Problem with the en_GB dictionary and nextchar() with a detailed code analysis reported by John Winters in SF.net Bug ID 2012753. * tests/condition.*: extended test for the fix. * hunspell/hunspell.*, parsers/*, tools/hunspell.cxx: fix compiler warnings (deprecated const-free char consts) * win_api/hunspelldll.*: add hunspell_free_list(), the problem reported by Laurier Mercer. 2008-06-30 Török László : * tests/affixmgr.cxx: fix morphological analysis: strcat() on an uninitialized char array in suffix_check_morph(). 2008-06-18 Németh László : * src/hunspell/affixmgr.cxx: fix GCC compiler warnings (comparisons with string literal results in unspecified behaviour). The problem reported by Ladislav Michnovič. 2008-06-17 Németh László : * src/hunspell/{hunspell.cxx,hunspell.h}: add free_list() to the C and C++ interface to deallocate suggestion lists. The problem reported by Laurie Mercer and Christophe Paris. * csutil.cxx: fix freelist() to deallocate non-NULL list, when n = 0. * tools/{analyze,example,chmorph,hunspell}.cxx: use free_list(). * tools/hunspell.cxx: fix only --with-readline compiling problem. Reported by Volkov Peter in SF.net Bug 1995842. * man/hunspell.3,hunspell.hxx: fix analyze and generate examples in the manual and comments (using char*** parameter instead of char**). * tools/example.cxx: fix suggestion example. 2008-06-17 Németh László : * affentry.cxx: fix the new affix rule matching algorithm of Hunspell 1.2. Arabic dictionary problem reported by Khaled Hosny in SF.net Bug ID 1975530. Mohamed Kebdani also sent a prepared test data. * tests/{1975530,condition*}: tests for the fix 2008-06-13 Ingo H. de Boer : * src/hunspell/{affixmgr.cxx,hunspell.cxx}: add missing type cast to strstr() calls for VC8 compatibility. 2008-06-13 Németh László : * suggestmgr.cxx: add also part1-part2 suggestion with dash for bad part1part2 word forms, suggested by Ruud Baars. For example, now suggestion of "parttime": "part time" and "part-time". NOTE: this feature will work only when the TRY definition contains "-" or the letter "a". * hunspell.cxx: new XML API in spell() and suggest() (see hunspell(3)). * src/hunspell/*: fixes for OpenOffice.org build environment. * man/{hunspell.3,hzip.1,hunzip.1}: add new manual pages for Hunspell programming API and dictionary compression and encryption utilities. * src/hunspell/*: handle failed mystrdup() calls and other potential insufficient memory problems. The problem reported by Elio Voci in OpenOffice.org Issue 90604 and others. * src/tools/affixmgr.cxx: restore original behaviour of get_wordchars without conditional code. Problem reported by Ingo H. de Boer in SF.net Bug 1763105. * win_api/hunspelldll.h: put_word() renamed to add() in the (old) Windows DLL API bug reported in SF.net Bug 1943236. Also reported by Bartkó Zoltán. * tools/hunspell.cxx: fix chench() for environments without native language support (ENABLE_NLS 0 in config.h), PHP system_exec() bug reported by Michel Weimerskirch in SF.net Bug 1951087. * hunspell.cxx, affixmgr.cxx: remove "result" from the (result && *result) conditions, when "result" is a static variable. The problem and a possible solution reported by Ladislav Michnovič. * affixmgr.cxx: parse_affix(): print line instead of NULL in the warning message, when affix class header is bad. The problem reported by Ladislav Michnovič. 2008-06-01 Christian Lohmaier * configure.ac: patch to fix --with-readline, --with-ui logic. Reported in the SF.net Bug 981395. 2008-05-04: Volkov Peter * configure.ac: fix LibTool 2.22 incompatibility by removing unused LT_* macros. Report and patch in SF.net Bug 1957383. The problem reported and fixed by Ladislav Michnovič, too. 2008-04-23: Ladislav Michnovič * hunspell.pc.in: fix wrongly set directories. 2008-04-12 Németh László : * src/tools/hunspell.cxx: - Multilingual spell checking and special dictionary support with -d. Multilingual spell checking suggested by Khaled Hosny (SF.net Bug 1834280). Example for the new syntax: -d en_US,en_geo,en_med,de_DE,de_med en_US and de_DE are base dictionaries, and en_geo, en_med, de_med are special dictionaries (dictionaries without affix file). Special dictionaries are optional extension of the base dictionaries. There is no explicit naming convention for special dictionaries, only the ".dic" extension: dictionaries without affix file will be an extension of the preceding base dictionary. First dictionary in -d parameter must have an affix file (it must be a base dictionary). - new options for debugging, morphological analysis and stemming: -m: morphological analysis or flag debug mode (without affix rule data it signs the flag of the affix rules) -s: stemming mode -D: show also available dictionaries and search path (suggested by Aaron Digulla in SF.net Bug 1902133) - add missing refresh() to print bad words before the slower suggestion search in UI (better user experience) - fix tabulator problems (reported by ugli-kid-joe AT sf DOT net) - fix different encoding of dic and input, and suggestions - add per mille sign to LANG hu_HU section. - rewrite program messages. Concatenating multiple printfs for easier translation suggested by András Tímár and Gábor Kelemen. * src/hunspell/csutil.cxx: set static encds variable. Patch by Rene Engerhald. SF.net Bug 1896207 and 1939988. * src/hunspell/w_char.hxx,csutil.hxx: reorganizing w_char typedef and HENTRY_DATA, HENTRY_FIND consts * src/hunspell/hunzip.cxx: fopen(): using rb options instead of r (fix for Windows) * src/tools/affixmgr.cxx: restore original behaviour of get_wordchars in an #ifdef WINSHELL section. Problem reported by Ingo H. de Boer in SF.net Bug 1763105. * src/tools/chmorph.cxx: remove the experimental modifications * src/tools/hzip.c: fopen(): using wb options instead of w (fix for Windows) * src/tools/hunzip.cxx: add missing MOZILLA_CLIENT. Reported by Ryan VanderMeulen. * man/*, man/hu/*: updated manual * man/hunspell.4: fix formatting problem (missing header) * tools/makealias: now works with the extra data fields. * phonet.cxx: use HASHSIZE const * tests/rep.aff: fix REP count * src/win_api/Makefile.cygwin, README: native Windows compilation in Cygwin environment without cygwin1.dll dependency (see README for compiling instructions). 2008-04-08 Roland Smith : * src/parsers/latexparser.cxx: fix PATTERN_LEN for AMD64 and other platforms with different struct padding (SF.net Bug 1937995). 2008-04-03 Kelemen Gábor : * po/POTFILES.in: fix path of the source file * po/Makevars: add --from-code=UTF-8 gettext option * hunspell.cxx: add comments for shortkey translation 2008-02-04 Flemming Frandsen * src/hunspell.h: fix Windows DLL support - this patch also reported by Zoltán Bartkó. 2008-01-30 Mark McClain * src/hunspell.cxx: stem(): fix function call side effect for PPC platform (SF.net Bug 1882105). 2008-01-30 Németh László : * hunspell.cxx, csutil.cxx, hunspelldll.c: fix SF.et Bug 1851246, patch also by Ingo H. de Boer. * hunspell.h: fix SF.net Bug 1856572 (C prototype problem), patch by Mark de Does. * hunspell.pc.in: fix SF.net Bug 1857450 wrong prefix, reported by Mark de Does. * hunspell.pc.in: reset numbering scheme: libhunspell-1.2. Fix SF.net Bug 1857512 reported by Mark de Does, also by Rene Engelhard. * csutil.cxx: patches for ARM platform, signed_chars.dpatch by Rene Engelhard and arm_structure_alignment.dpatch by Steinar H. Gunderson * hunzip.*, hzip.c: new hzip compression format * tools/affixcompressor: affix compressor utility (similar to munch, but it generates affix table automatically), works with million-words dictionaries of agglutinative languages. * README: fix problems reported by Pham Ngoc Khanh. * csutil.cxx, suggestmgr: Warning-free in OOo builds. * hashmgr.*, csutil.*: fix protected memory problems with stored pointers on several not x86 platforms by store_pointer(), get_stored_pointer(). * src/tools/hunspell.cxx: fix iconv support on Solaris platform. * tests/IJ.good: add missing test file * csutil.cxx: fix const char* related errors. Compiling bug with Visual C++ reported by Ryan VanderMeulen and Ingo H. de Boer. 2008-01-03 Caolan McNamara : * csutil.cxx: SF.net Bug 1863239, notrailingcomma patch and optimization of get_currect_cs(). 2007-11-01 Németh László : * hunspell/*: new feature: morphological generation, also fix experimental morphological analysis and stemming. - new API functions and improved API: - analyze(word): (instead of morph()) morphological analysis - stem(word): stemming - stem(list): stemming based on the result of an analysis - generate(word, word2): morphological generation - generate(word, list): morphological generation - add(word): add word to the run-time dictionary (renamed put_word()) - add_with_affix(word, word2): (renamed put_word_pattern()): add word to the run-time dictionary with affix flags of the second parameter: all affixed forms of the user words will be recognised by the spell checker. Especially useful for agglutinative languages. - remove(word): remove word from the run-time dictionary (not implemented) - see manual and hunspell/hunspell.hxx header and tests/morph.* * tests/morph.*: test data, example for morphological analysis, stemming and generation * tools/analyze, tools/chmorph: extended and new demo applications: - analyze (originally hunmorph): analyses and stems input words, generates word forms from input word pairs. - chmorph: morphological transformation filter * configure.ac, hunspell/makefile.am: set library version number. Bug reported by Rene Engelhard. * affentry.cxx, affixmgr.cxx: new pattern matching algorithm in condition checking of affix rules instead of the Dömölki-algorithm: - Unlimited condition length (instead of max. 8 characters). - Less memory consumption, especially useful for affix rich languages: 5,4 MB memory savings with hu_HU dictionary. - Speed change depends from dictionaries and CPU caches: English spell checking is 4% faster on Linux words with en_US dictionary, Hungarian spell checking is 25% slower on most frequent words of Hungarian Webcorpus. * tests/sug.*, sugutf.*: updated test data (use "a" and "lot" dictionary items instead of "a lot".) * src/hunspell/hunspell.cxx: free(csconv) instead of delete csconv. Report and patch by Sylvain Paschein in Mozilla Issue 398268. * suggestmgr.cxx, tools/hunspell.cxx: bad spelling of "misspelled". Ubuntu Bug #134792, patch by Malcolm Parsons. * tests/base_utf.*: use Unicode apostrophe instead of 8-bit one. * hunspell.cxx, hashmgr.cxx: add(): use HashMgr::add() 2007-10-25 Pavel Janík : * hunspell/csutil.cxx: Fix type cast warnings on 64bit Linux in printing of character positions in u8_u16(). OOo issue 82984. 2007-09-05 Németh László : * win_api/Hunspell.vproj, parsers/testparser.cxx,textparser.hxx: warning fixes and removing unnecessary Windows project file. Reported by Ingo H. de Boer. * hashmgr.*, {affixmgr,suggestmgr}.cxx: optimized data structure for variable-count fields (only "ph" transliteration field in this version, see next item). Also less memory consumption: -13% (0.75 MB) with en_US dictionary, -6% (1 MB) with hu_HU. * suggestmgr.cxx: dictionary based phonetic suggestion for special or foreign pronounciation (see also rule-based PHONE in manual). Usage: tab separated field in dictionary lines, started with "ph:". The field contains a phonetic transliteration of the word: Marseille ph:maarsayl * tests/phone.*: test data for dictionary and rule based phonetic suggestion. * hunspell.cxx: fix potential bad memory access in allcap word capitalization in suggest() (bug of previous version). * hunspell.cxx, atypes.hxx: set correct limit for UTF-8 encoded input words (256 byte). * suggestmgr.cxx: improved REP suggestions with spaces: it works without dictionary modification. OOo issue 80147, reported by Davide Prina. * tests/rep.*: new test data: higher priority for "alot" -> "a lot", and Italian suggestion "un'alunno" -> "un alunno". * affixmgr.cxx: fix Unicode ngram suggestions in expand_rootword(). (Suggestions with bad affixes.) Bug reported by Vitaly Piryatinksy . * tests/ngram_utf_fix.*: test based on Vitaly Piryatinksy's data. * suggestmgr.cxx: fix twowords() for last UTF-8 multibyte character. (conditional jump or move depended on uninitialised value). 2007-08-29 Ingo H. de Boer : * win_api/{hunspell,libhunspell, testparser}.vcproj: new project files for the library and the executables. * Hunspell.rc, Hunspell.sln, config.h: updated versions. Version number problem also reported by András Tímár. 2007-08-27 Németh László : * suggestmgr.hxx: put fixed version. Bug report by Ingo H. de Boer. * suggestmgr.cxx: remove variable-length local character array reported by Ingo H. de Boer. 2007-08-27 Németh László : * suggestmgr.hxx: change bad time_t to clock_t in header, too. Bug reports or patches by Ingo H. de Boer under SF.net Bug ID 1781951, János Mohácsi and Gábor Zahemszky, András Tímár, OMax3 at SF.net under SF.net Bug ID 1781592. * phonet.*: change variable-length local character array to portable fixed size character array. Problem reported by Ingo H. de Boer under SF.net Bug ID 1781951 and Ryan VanderMeulen. * suggestmgr.cxx: remove debug message (also by Ingo H. de Boer). 2007-08-26 Ingo H. de Boer : * win_api/Hunspell.vcproj: updated version (with phonet.*) 2007-08-23 Németh László : * phonet.{c,h}xx, suggestmgr.cxx: PHONE parameter: pronounciation based suggestion using Björn Jacke's original Aspell phonetic transcription algorithm (http://aspell.net), relicensed under GPL/LGPL/MPL tri-license with the permission of the author. Usage: see manual. * affixmgr,suggestmgr.cxx: add KEY parameter for keyboard and input method error related suggestions. Example: KEY qwertyuiop|asdfghjkl|zxcvbnm * man/hunspell.4: description about PHONE and KEY suggestion parameters. * suggestmgr.cxx: enhancements for better suggestions: - Set ngram suggestions for badchar-type errors and only two word and compound word suggestions, too. - Separate not compound and compound word suggestions for MAP suggestion, too. - Double swap suggestions for short words. For example: ahev -> have, hwihc -> which. - Better time limits using clock() instead of time() (tenths of a second resolution instead of second ones). - leftcommonsubstring() weigth function. * htype.hxx, hashmgr.cxx: blen (byte length) and clen (character length) fields instead of wlen * affixmgr.cxx: fix get_syllable() for bad Unicode inputs. * tests/suggestiontest/*: test environment for suggestions 2007-08-07 Martijn Wargers: * csutil.cxx: fix Mingw build error associated with ToUpper() call. Report and patch in Mozilla Issue 391447. 2007-08-07 Robert Longson: * atypes.cxx: use empty inline function HUNSPELL_WARNING instead of variadic macros to switch of Hunspell warnings. Reported by Gavin Sharp in Mozilla Issue 391147. 2007-08-05 Ginn Chen: * hashmgr.cxx: Hunspell failed to compile on OpenSolaris (use stdio instead of csdio). Report and patch in Mozilla Issue 391040. 2007-07-25 Németh László : * parsers/*.cxx: Hunspell executable recognises and accepts URLs, e-mail addresses, directory paths, reported by Jeppe Bundsgaard. * src/tools/hunspell.cxx: --check-url: new option of Hunspell program. Use --check-url, if you want check URLs, e-mail addresses and paths. * parsers/textparser.cxx: strip colon at end of words for Finnish and Swedish (colon may be in words in Finnish and Swedish). Problem reported by Lars Aronsson. * tests/colons_in_words.*: test data * tests/digits_in_words.*: example for using digits in words (eg. 1-jährig, 112-jährig etc. in German), reported by Lars Aronsson. * hashmgr.cxx: Hunspell accepts allcaps forms of mixed case words of personal dictionaries (+allcaps custom dictionary words with allcaps affixes). Sf.net Bug ID 1755272, reported by Ellis Miller. * hashmgr.cxx: fix small memory leaks with alias compressed dictionaries (free flag vectors of affixed personal dictionary words and flag vectors of hidden capitalized forms of mixed case and allcaps words). * affixmgr.cxx: fix COMPOUNDRULE checking with affixed compounds. Sf.net Bug ID 1706659, reported by Björn Jacke. Also fixing for OOo Issue 76067 (crash-like deceleration for hexadecimal numbers with long FFFFFF sequence using en_US dictionary). * tools/hunspell.cxx: add missing return to save_privdic(). * man/hunspell.4: add information about affixation of personal words: "Personal dictionaries are simple word lists, but with optional word patterns for affixation, separated by a slash: foo Foo/Simpson In this example, "foo" and "Foo" are personal words, plus Foo will be recognised with affixes of Simpson (Foo's etc.)." 2007-07-18 Németh László : * src/win_api/: add missing resource files, reported by Ingo H. de Boer. 2007-07-16 Németh László : * hunspell.cxx: fix dot removing from UTF-8 encoded words in cleanword2() (Capitalised words with dots, as "Something." were not recognised using Unicode encoded dictionaries.) * tests/{base.*,base_utf.*}: extended and new test files for dot removing and Unicode support. * tools/hunspell.cxx: fix Cygwin, OS X compatibility using platform specifics iconv() header by ICONV_CONST macro of Autoconf. Sf.net Bug ID 1746030, reported by Mike Tian-Jian Jiang. Sf.net Bug ID 1753939, reported by Jean-Christophe Helary. * tools/hunspell.cxx: fix missing global path setting with -d option. * tests/test.sh: fix broken Valgrind checking (missing warnings with VALGRIND=memcheck make check). * csutil.cxx: fix condition in u8_u16() to avoid invalid read of not null-terminated character arrays (detected by Valgrind in Hunspell executable: associated with 8-bit character table conversion in tools/hunspell.cxx). * csutil.cxx: free_utf_tbl(): use utf_tbl_count-- instead of utf_tbl--. Memory leak in Hunspell executable detected by Valgrind. * hashmgr.cxx: add missing free_utf_tbl(), memory leak in Hunspell executable detected by Valgrind. * hashmgr.cxx: load_tables(): fix memory error in spec. capitalization. Use sizeof(unsigned short) instead of bad sizeof(unsigned short*). Invalid memory read detected by Valgrind. * hashmgr.cxx: add_word(): fix memory error in spec. capitalization. Update also affix array length of capitalized homonyms. Invalid memory read detected by Valgrind. * hunspell.cxx: suggest(): fix invalid memory write and leak. Bad realloc() and missing free() detected by Valgrind associated with suggestions for "something.The" type spelling errors. * {dictmgr,csutil,hashmgr,suggestmgr}.cxx: check memory allocation. Sf.net Bug ID 1747507, based on the patch by Jose da Silva. 2007-07-13 Ingo H. de Boer : * atypes.cxx: fix Visual C compatibility: Using "HUNSPELL_WARNING(a,b,...} {}" macro instead of empty "X(a,b...)". * hunspell.cxx: changes for Windows API. * win_api/Hunspell.*: new resource files * win_api/hunspelldll.*: set optional Hunspell and Borland spec. codes Sf.net Bug ID 1753802, patch by Ingo H. de Boer. See also Sf.net Bug ID 1751406, patch by Mike Tian-Jian Jiang. 2007-07-09 Caolan McNamara : * {hunspell,hashmgr,affentry}.cxx: fix warnings of Coverity program analyzer. Sf.net Bug ID, 1750219. 2007-07-06 Németh László : * atypes.cxx: warning-free swallowing of conditional warning messages and their parameters using empty HUNSPELL_WARNING(a,b...) macro. * {affixmgr,atypes,csutil}.cxx: fix unused variable warnings using WARNVAR macro for conditionally named variables. * hashmgr.cxx: fix unused variable warning in add_word() by cond. name * hunspell.cxx: fix shadowed declaration of captype var. in suggest() 2006-06-29 Caolan McNamara : * hunspell.cxx: patch to fix possible memory leak in analyze() of experimental morphological analyzer code. Sf.net Bug ID 1745263. 2007-06-29 Németh László : improvements: * src/hunspell/hunspell.cxx: check bad capitalisation of Dutch letter IJ. - Sf.net Feature Request ID 1640985, reported by Frank Fesevur. - Solution: FORBIDDENWORD for capitalised word forms (need an improved Dutch dictionary with forbidden words: Ijs/*, etc.). * tests/IJ.*: test data and example. * hashmgr.cxx, hunspell.cxx: check capitalization of special word forms - words with mixed capitalisation: OpenOffice.org - OPENOFFICE.ORG Sf.net Bug ID 1398550, reported by Dmitri Gabinski. - allcap words and suffixes: UNICEF's - UNICEF'S - prefixes with apostrophe and proper names: Sant'Elia - SANT'ELIA For Catalan, French and Italian languages. Reported by Davide Prina in OOo Issue 68568. * tests/allcaps*: tests for OPENOFFICE.ORG, UNICEF'S capitalization. * tests/i68568*: tests for SANT'ELIA capitalization. * hunspell/hunspell.cxx: suggestion for missing sentence spacing: something.The -> something. The * tools/hunspell.cxx: multiple character encoding support - -i option: custom input encoding Sf.net Bug ID 1610866, reported by Thobias Schlemmer. Sf.net Bug ID 1633413, reported by Dan Kenigsberg. See also hunspell-1.1.5-encoding.patch of Fedora from Caolan Mc'Namara. * tests/*.test: add input encodings * tools/hunspell.cxx: use locale data for default dictionary names. Sf.net Bug ID 1731630, report and patch from Bernhard Rosenkraenzer, See also hunspell-1.1.4-defaultdictfromlang.patch of Fedora Linux from Caolan McNamara. * tools/hunspell.cxx: fix 8-bit tokenization (letters without casing, like ß or Hebrew characters now are handled well) * tools/hunspell.cxx: dictionary search path - DICPATH environmental variable - -D option: show directory path of loaded dictionary - automatic detection of OpenOffice.org directories fixes: * affixmgr.cxx: fault-tolerant patch for REP and other affix table data problems. Problem with Hunspell and en_GB dictionary reported by Thomas Lange in OOo Issue 76098 and Stephan Bergmann in OOo Issue 76100. Sf.net Bug ID 1698240, reported by Ingo H. de Boer. * csutil.cxx: fix mkallcap_utf() for allcaps suggestion in UTF-8. * suggestmgr.cxx: fix bad movechar_utf() (missing strlen()). * hunspell.cxx: fix bad degree sign detection in Unicode hu_HU environment. * hunspell/hunspell.cxx: free allocated memory of csconv in ported Mozilla code. - Mozilla Bugzilla Bug 383564, report and Mozilla MySpell patch by Andrew Geul. Reported by Ryan VanderMeulen for Hunspell. * suggestmgr.cxx: fix minor difference in Unicode suggestion (ngram suggestion of allcaps words in Unicode). * hashmgr.cxx: close file handle after errors. Sf.net Bug ID 1736286, reported by John Nisly. * configure.ac: syntax error (shell variable with spaces). Sf.net Bug ID 1731625, reported by Bernhard Rosenkraenzer. * hunspell.cxx: check_word(): fix bad usage of info pointer. * hashmgr.cxx: fix de_DE related bug (accept words with leading dash). Sf.net Bug ID 1696134, reported by Björn Jacke. * suggestmgr.cxx, tests/1695964.*: fix NEEDAFFIX homonym suggestion. Sf.net Bug ID 1695964, reported by Björn Jacke. * tests/1463589*: capitalized ngram suggestion test data for Sf.net Bug ID 1463589, reported by Frederik Fouvry. * csutil.cxx, affixmgr.cxx: fix possible heap error with multiple instances of utf_tbl. Sf.net Bug ID 1693875, reported by Ingo H. de Boer. * affixmgr.cxx, suggestmgr.cxx, license.hunspell: convert to ASCII. Locale dependent compiling problems. Sf.net Bug ID 1694379, reported by Mike Tian-Jian Jiang. OOo Issue 78018 reported by Thomas Lange. * tests/test.sh: compatibility issues - fix Valgrind support (check shared library instead of shell wrapper) - remove deprecated "tail +2" syntax - set 8-bit locale for testing (LC_ALL=C) * hunspell.hxx: remove license.* and config.h dependencies. - hunspell-1.1.5-badheader.patch from Caolan McNamara 2007-03-21 Németh László : * tools/Makefile.am, munch.h, unmunch.h: add missing munch.h and unmunch.h Reported by Björn Jacke and Khaled Hosny (sf.net Bug ID 1684144) * hunspell/hunspell.cxx, hunspell.hxx: fix --with-ui compliling error (add get_csconv()) Reported by Khaled Hosny (sf.net Bug ID 1685010) 2007-03-19 Németh László : * csutil.cxx, hunspell/hunspell.cxx: Unicode non BMP area (>65K character range) support (except conditional patterns and strip characters of affix rules) * tests/utf8_nonbmp*: test data * src/hunspell/*: add Mozilla patches from David Einstein - run-time generated 8-bit character tables - other Mozilla related changes (see Mozilla Bugzilla Bug 319778) * csutil.cxx, affixmgr.cxx, hashmgr.cxx: optimized version of IGNORE feature - IGNORE works with affixes (except strip characters and affix conditions) * tests/ignore*: test data with latin characters * tests/ignoreutf*: Unicode test data with Arabic diacritics (Harakat) * src/hunspell/suggestmgr.cxx: new edit distance suggestion methods - capitalization: nasa -> NASA - long swap: permenant -> permanent - long mov.: Ghandi -> Gandhi - double two characters: vacacation -> vacation * tests/sug.*: test data * src/hunspell/affixmgr.cxx: space in REP strings (alot -> a lot) Note: Underline character signs the space in REP strings: REP alot a_lot, and put the expression with space ("a lot") into the dic file (see tests/sug). * hashmgr.cxx, affixmgr.cxx: ignore Unicode byte order mark (BOM sequence) * tests/utf8_bom*: test data * hunspell/*.cxx: OOo Issue 68903 - Make lingucomponent warning-free on wntmsci10 - fix Hunspell related warning messages on Windows platform (except some assignment within conditional expressions). Reported and started by Stephan Bergmann. * hunspell/affixmgr.cxx: fix OOo Issue 66683 - hunspell dmake debug=x fails - Reported by Stephan Bergmann. * src/hunspell/hunspell.[ch]xx: thread safe API for Hunspell executable (removing prev*() functions, new spell(word, info, root) function) * configure.ac, src/hunspell/*: HUNSPELL_EXPERIMENTAL code --with-experimental configure option (conditional compiling of morphological analyser and stemmer tools) * configure.ac, src/hunspell/*: conditional Hunspell warning messages --with-warnings configure option * affixmgr.cxx: new, optimized parsing functions * affixmgr.cxx: fix homonym handling for German dictionary project, reported by Björn Jacke (sf.net Bug ID 1592880). * tests/1592880.*: test data by Björn Jacke * src/hunspell/affixmgr.cxx: fix CIRCUMFIX suggestion Bug reported by Erdal Ronahi. * hunspell.cxx: reverse root word output (complex prefixes) Bug reported by Munzir Taha. * tools/hunspell.cxx: fix Emacs compatibility, patch by marot at sf.net - no % command in PIPE mode (SourceForge BugTracker 1595607) - fix HUNSPELL_VERSION string * suggestmgr.[hc]xx: rename check() functions to checkword() (OOo Issue 68296) adopt MySpell patch by Bryan Petty (tierra at ooo) for Hunspell source * csutil.cxx, munch.c, unmunch.c: adopt relevant parts of the MinGW patch (OOo Issue 42504) by tonal at ooo * affigmgr.cxx: remove double candidate_check() call, reported by Bram Moolenaar * tests/test.sh: add LC_ALL="C" environment. Locale dependency of make check reported by Gentoo project. * src/tools/hunspell.cxx: UTF-8 highlighting fix for console UI (not solved: breaking long UTF-8 lines) * src/tools/unmunch.c: fix bad generation if strip is shorter than condition, reported by Davide Prina * src/tools/unmunch.h: increase 5000 -> 500000 * src/tools/hunspell.cxx: fix memory error in suggestion (uninitialized parameter), Bug also reported by Björn Jacke in SourceForge Bug 1469957 * csutil.cxx, affixmgr.cxx: fix Caolan McNamara's patch for non OOo environment 2006-11-11 Caolan McNamara : * csutil.cxx, affixmgr.cxx: UTF-8 table patch (OOo Issue 71449) Description: memory optimization (OOo doesn't use the large UTF-8 table). * Makefile.am: shared library patch (Sourceforge ID 1610756) * hunspell.h, hunspell.cxx: C API patch (Sourceforge ID 1616353) * hunspell.pc: pkgconfig patch (Sourceforge ID 1639128) 2006-10-17 Ryan Jones : * affixmgr.cxx: missing fclose(affixlst) calls Reported by in OOo Issue 70408 2007-07-11 Taha Zerrouki : * affixmgr.cxx, hunspell.cxx, hashmgr.cxx, csutil.cxx: IGNORE feature to remove optional Arabic and other characters from input and dictionary words. * src/hunspell/langnum.hxx: add Arabic language number, lang_ar=96 * tests/ignore.*: test data 2006-05-28 Miha Vrhovnik : * src/win_api/*: C API for Windows DLLs - also Delphi text editor example (see on Hunspell Sourceforge page) 2006-05-18 Kevin F. Quinn : * utf_info.cxx: struct -> static struct Shared library patch also developed by Gentoo developers (Hanno Meyer-Thurow, Diego Pettenò, Kevin F. Quinn) 2006-02-02 Németh László : * src/hunspell/hunspell.cxx: suggest(): replace "fooBar" -> "foo bar" suggestions with "fooBar" ->"foo Bar" (missing spaces are typical OCR bugs). Bug reported by stowrob at OOo in Issue 58202. * src/hunspell/suggestmgr.cxx: twowords(): permit 1-character words. (restore MySpell's original behavior). Here: "aNew" -> "a New". * tests/i58202.*: test data * src/parsers/textparser.cxx: fix Unicode tokenization in is_wordchar() (extra word characters (WORDCHARS) didn't work on big-endian platforms). * src/hunspell/{csutil,affixmgr}.cxx: inline isSubset(), isRevSubset(): little speed optimalization for languages with rich morphology. * src/tools/hunspell.cxx: fix bad --with-ui and --with-readline compiling when (N)curses is missing. Reported by Daniel Naber. 2006-01-19 Tor Lillqvist * src/hunspell/csutil.cxx: mystrsep(): fix locale-dependent isspace() tokenization 2006-01-06 András Tímár * src/hunspell/{hashmgr.hxx,hunspell.cxx}: fix Visual C++ compiling errors 2006-01-05 Németh László : * COPYING: set GPL/LGPL/MPL tri-license for Mozilla integration. Rationale: Mozilla source code contains an old MySpell version with GPL/LGPL/MPL tri-license. (MPL license is a copyleft license, similar to the LGPL, but it acts on file level.) * COPYING.LGPL: GNU Lesser General Public License 2.1 (LGPL) * COPYING.MPL: Mozilla Public License 1.1 (MPL) * license.hunspell, src/hunspell/license.hunspell: GPL/LGPL/MPL tri-license * src/hunspell/{affixmgr,hashmgr}.*: AF, AM alias definitions in affix file: compression of flag sets and morphological descriptions (see manual, and tests/alias* test files). Rationale: Alias compression is also good for loading time and memory efficiency, not only smaller resources. * src/tools/makealias: alias compression utility (usage: ./makealias file.dic file.aff) * tests/alias{,2,3}: AF, AM tests * man/hunspell.4: add AF, AM documentation * src/hunspell/affentry.cxx, atypes.hxx: add new opts bits (aeALIASM, aeALIASF) * tools/hunspell, src/parser/*, src/hunspell/*: Hunspell program tokenizes Unicode texts (only with UTF-8 encoded dictionaries). Missing Unicode tokenization reported by Björn Jacke, Egmont Koblinger, Jess Body and others. Note: Curses interactive interface hasn't worked perfectly yet. * tests/*.tests: remove -1 parameters of Hunspell * tests/*.{good,wrong}: remove tabulators * src/hunspell/{hunspell,affixmgr}.cxx: BREAK option: break words at specified break points and checking word parts separately (see manual). Note: COMPOUNDRULE is better (or will be better) for handling dashes and other compound joining characters or character strings. Use BREAK, if you want check words with dashes or other joining characters and there is no time or possibility to describe precise compound rules with COMPOUNDRULE. * tests/break.*: BREAK example. * src/hunspell/{affixmgr,hunspell}.cxx: add CHECKSHARPS declaration instead of LANG de_DE definitions to handle German sharp s in both spelling and suggestion. * src/hunspell/hunspell.cxx: With CHECKSHARPS, uppercase words are valid with both lower sharp s (it's is optional for names in German legal texts) and SS (MÜßIG, MÜSSIG). Missing lower sharp s form reported by Björn Jacke. * src/hunspell/hunspell.cxx: KEEPCASE flag on a sharp s word has a special meaning with CHECKSHARPS declaration: KEEPCASE permits capitalisation and SS upper casing of a sharp s word (Müßig and MÜSSIG), but forbids the upper cased form with lower sharp s character(s): *MÜßIG. * tests/germancompounding*: add CHECKSHARPS, remove LANG * tests/checksharps*: add CHECKSHARPS and KEEPCASE, remove LANG * src/hunspell/hunspell.cxx: improved suggestions: - suggestions for pressed Caps Lock problems: macARONI -> macaroni - suggestions for long shift problems: MAcaroni -> Macaroni, macaroni - suggestions for KEEPCASE words: KG -> kg * src/hunspell/csutil.cxx: fix mystrrep() function: - suggestions for lower sharp s in uppercased words: MÜßIG -> MÜSSIG * tests/checksharps{,utf}.sug: add tests for mystrrep() fix * src/hunspell/hashmgr.cxx: Now dictionary words can contain slashes with the "\/" syntax. Problem reported by Frederik Fouvry. * src/hunspell/hunspell.cxx: fix bad duplicate filter in suggest(). (Suggesting some capitalised compound words caused program crash with Hungarian dictionary, OOo Issue 59055). * src/hunspell/affixmgr.cxx: fix bad defcpd_check() call in compound_check(). (Overlapping new COMPOUNDRULE and old compounding methods caused program crash at suggestion.) * src/hunspell/affixmgr.{cxx,hxx}: check affix flag duplication at affix classes. Suggested by Daniel Naber. * src/hunspell/affentry.cxx: remove unused variable declarations (OOo i58338). Compiler warnings reported by András Tímár and Martin Hollmichel. * src/hunspell/hunspell.cxx: morph(): not analyse bad mixed uppercased forms (fix Arabic morphological analysis with Buckwalter's Arabic transliteration) * src/hunspell/affentry.{cxx,hxx}, atypes.hxx: little memory optimization in affentry: - using unsigned char fields instead of short (stripl, appndl, numconds) - rename xpflg field to opts - removing utf8 field, use aeUTF8 bit of opts field * configure.ac: set tests/maputf.test to XFAILED on ARM platform. Fail reported by Rene Engelhard. * configure.ac: link Ncursesw library, if exists. * BUGS: add BUGS file * tests/complexprefixes2.*: test for morphological analysis with COMPLEXPREFIXES * src/hunspell/affixmgr.cxx: use "COMPOUNDRULE" instead of "COMPOUND". The new name suggested by Bram Moolenaar. * tests/compoundrule*: modified and renamed compound.* test files * man/hunspell.4: AF, AM, BREAK, CHECKSHARPS, COMPOUNDRULE, KEEPCASE. - also new addition to the documentation: Header of the dictionary file define approximate dictionary size: ``A dictionary file (*.dic) contains a list of words, one per line. The first line of the dictionaries (except personal dictionaries) contains the _approximate_ word count (for optimal hash memory size).'' Asked by Frederik Foudry. One-character replacements in REP definitions: ``It's very useful to define replacements for the most typical one-character mistakes, too: with REP you can add higher priority to a subset of the TRY suggestions (suggestion list begins with the REP suggestions).'' 2005-11-11 Németh László : * src/hunspell/affixmgr.*: fix Unicode MAP errors (sorted only n-1 characters instead of n ones in UTF-16 MAP character lists). Bug reported by Rene Engelhard. * src/hunspell/affixmgr.*: fix infinite COMPOUND matching (default char type is unsigned on PowerPC, s390 and ARM platforms and it will never be negative). Bug reported by Rene Engelhard. * src/hunspell/{affixmgr,suggestmgr}.cxx: fix bad ONLYINCOMPOUND word suggestions. * tests/onlyincompound.sug: empty test file to check this fix. Bug reported by Björn Jacke. * src/hunspell/affixmgr.cxx: fix backtracking in COMPOUND pattern matching. * tests/compound6.*: test files to check this fix. * csutil.cxx: set bigger range types in flag_qsort() and flag_bsearch(). * affixmgr.hxx: set better type for cont_classes[] Boolean data (short -> char) * configure.ac, tests/automake.am: set platform specific XFAIL test (flagutf8.test on ARM platform) 2005-11-09 Németh László : improvements: * src/hunspell/affixmgr.*: new and improved affix file parameters: - COMPOUND definitions: compound patterns with regexp-like matching. See manual and test files: tests/compound*.* Suggested by Bram Moolenaar. Also useful for simple word-level lexical scanning, for example analysing numbers or words with numbers (OOo Issue #53643): http://qa.openoffice.org/issues/show_bug.cgi?id=53643 Examples: tests/compound{4,5}.*. - NOSUGGEST flag: words signed with NOSUGGEST flag are not suggested. Proposed flag for vulgar and obscene words (OOo Issue #55498). Example: tests/nosuggest.*. Problem reported by bobharvey at OOo: http://qa.openoffice.org/issues/show_bug.cgi?id=55498 - KEEPCASE flag: Forbid capitalized and uppercased forms of words signed with KEEPCASE flags. Useful for special ortographies (measurements and currency often keep their case in uppercased texts) and other writing systems (eg. keeping lower case of IPA characters). - CHECKCOMPOUNDCASE: Forbid upper case characters at word bound in compounds. Examples: tests/checkcompoundcase* and tests/germancompounding.* - FLAG UTF-8: New flag type: Unicode character encoded with UTF-8. Example: tests/flagutf8.*. Rationale: Unicode character type can be more readable (in a Unicode text editor) than `long' or `num' flag type. bug fixes: * src/hunspell/hunspell.cxx: accept numbers and numbers with separators (i53643) Bug reported by skelet at OOo: http://qa.openoffice.org/issues/show_bug.cgi?id=53643 * src/hunspell/csutil.cxx: fix casing data in ISO 8859-13 character table. * src/hunspell/csutil.cxx: add ISO-8859-15 character encoding (i54980) Rationale: ISO-8859-15 is the default encoding of the French OpenOffice.org dictionary. ISO-8859-15 is a modified version of ISO-8859-1 (latin-1) character encoding with French œ ligatures and euro symbol. Problem reported by cbrunet at OOo in OOo Issue 54980: http://qa.openoffice.org/issues/show_bug.cgi?id=54980 * src/hunspell/affixmgr.cxx: fix zero-byte malloc after a bad affix header. Patch by Harri Pitkänen. * src/hunspell/suggestmgr.cxx: fix bad NEEDAFFIX word suggestion in ngram suggestions. Reported by Daniel Naber and Friedel Wolff. * src/hunspell/hashmgr.cxx: fix bad white space checking in affix files. src/hunspell/{csutil,affixmgr}.cxx: add other white space separators. Problems with tabulators reported by Frederik Fouvry. * src/hunspell/*: replace system-dependent #include parameters with quoted ones. Problem reported by Dafydd Jones. * src/hunspell/hunspell.cxx: fix missing morphological analysis of dot(s) Reported by Trón Viktor. changes: * src/hunspell/affixmgr.cxx: rename PSEUDOROOT to NEEDAFFIX. Suggested by Bram Moolenaar. * src/hunspell/suggestmgr.hxx: Increase default maximum of ngram suggestions (3->5). Suggested by Kevin Hendricks. * src/hunspell/htypes.hxx: Increase MAXDELEN for long affix flags. * src/hunspell/suggestmgr.cxx: modify (perhaps fix) Unicode map suggestion. tests/maputf test fail on ARM platform reported by Rene Engelhard. * src/hunspell/{affentry.cxx,atypes.hxx}: remove [PREFIX] and MISSING_DESCRIPTION messages from morphological analysis. Problems reported by Trón Viktor. * tests/germancompounding.{aff,good}: Add "Computer-Arbeit" test word. Suggested by Daniel Naber. * doc/man/hunspell.4: Proof-reading patch by Goldman Eleonóra. * doc/man/hunspell.4: Fix bad affix example (replace `move' with `work'). Bug reported by Frederik Fouvry. * tests/*: new test files: affixes.*: simple affix compression example from Hunspell 4 manual page checkcompoundcase.*, checkcompoundcase2.*, checkcompoundcaseutf.* compound.*, compound2.*, compound3.*, compound4.*, compound5.* compoundflag.* (former compound.*) flagutf8.*: test for FLAG UTF-8 germancompounding.*: simplification with CHECKCOMPOUNDCASE. germancompoundingold.* (former germancompounding.*) i53643.*: check numbers with separators i54980.*: ISO8859-15 test keepcase.*: test for KEEPCASE needaffix*.* (former pseudoroot*.* tests) nosuggest.*: test for NOSUGGEST 2005-09-19 Németh László : * src/hunspell/suggestmgr.cxx: improved ngram suggestion: - detect not neighboring swap characters (pernament -> permanent) Rationale: ngram method has a significant error with not neighboring swap characters, especially when swap is in the middle of the word. - suggest uppercase forms (unesco -> UNESCO, siggraph's -> SIGGRAPH's) - suggest only ngram swap character and uppercase form, if they exist. Rationale: swap character and casing equivalence give mutch better suggestions as any other (weighted) ngram suggestions. - add uppercase suggestion (PERMENANT -> PERMANENT) * src/hunspell/*: complete comparison with MySpell 3.2 (in OOo beta 2): - affixmgr.cxx: add missing numrep initialization - hashmgr.cxx: add_word(): don't allocate temporary records - hunspell.cxx: in suggest(): - check capitalized words first (better sug. order for proper names), - check pSMgr->suggest() return value - set pSMgr->suggest() call to not optional in HUHCAP - csutil.cxx: fix bad KOI8-U -> koi8r_tbl reference in enc_entry encds - csutil.cxx: fix casing data in ISO 8859-2, Windows 1251 and KOI8-U encoding tables. Bug reported by Dmitri Gabinski. * src/hunspell/affixmgr.*: improved compound word and other features - generalize hu_HU specific compound word features with new affix file parameters, suggested by Bram Moolenaar: - CHECKCOMPOUNDDUP: forbid word duplication in compounds (eg. foo|foo) - CHECKCOMPOUNDTRIPLE: forbid triple letters in compounds (eg. foo|obar) - CHECKCOMPOUNDPATTERN: forbid patterns at word bounds in compounds - CHECKCOMPOUNDREP: using REP replacement table, forbid presumably bad compounds (useful for languages with unlimited number of compounds) - ONLYINCOMPOUND flag works also with words (see tests/onlyincompound.*) Suggested by Daniel Naber, Björn Jacke, Trón Viktor & Bram Moolenaar. - PSEUDOROOT works also with prefixes and prefix + suffix combinations (see tests/pseudoroot5.*). Suggested by Trón Viktor. - man/hunspell.4: updated man page * src/hunspell/affixmgr.*: fix incomplete prefix handling with twofold suffixes (delete unnecessary contclasses[] conditions in prefix_check_twosfx() and prefix_check_twosfx_morph()). Bug reported by Trón Viktor. * src/hunspell/affixmgr.*: complete also *_morph() functions with conditions of new Hunspell features (circumfix, pseudoroot etc.). * src/hunspell/suggestmgr.cxx: - fix missing suggestions for words with crossed prefix and suffix - fix redundant non-compound word checking - fix losing suggestions problem. Bug reported by Dmitri Gabinski. * src/hunspell/dictmgr.*: - add new dictionary manager for Hunspell UNO modul Problems with eo_ANY Esperanto locale reported by Dmitri Gabinski. * src/hunspell/*: use precise constant sizes for 8-bit and 16-bit character arrays with MAXWORDUTF8LEN and MAXSWUTF8L macros. * src/hunspell/affixmgr.cxx: fix bad MAXNGRAMSUGS parameter handling * src/hunspell/affixmgr.cxx, src/tools/{un}munch.*: fix GCC 4.0 warnings on fgets(), reported by Dvornik László * po/hu.po: improved translation by Dvornik László * tests/test.sh: improved test environment - add suggestion testing (see tests/*.sug) - add memory debugging environment, based on the excellent Valgrind debugger. Usage on Linux and experimental platforms of Valgrind: VALGRIND=memcheck make check - rename test_hunmorph to test.sh * tests/*: new tests: - base.*: base example based on MySpell's checkme.lst. - map{,utf}.*, rep{,utf}: MAP and REP suggestion examples - tests on new CHECKCOMPOUND, ONLYINCOMPOUND and PSEUDOROOT features - i54633.*: capitalized suggestion test for Issue 54633 from OOo's Issuezilla - i35725.*: improved ngram suggestion test for Issue 35725 2005-08-26 Németh László : improvements: * src/hunspell/suggestmgr.cxx: Unicode support in related character map suggestion * src/hunspell/suggestmgr.cxx: Unicode support in ngram suggestion * src/hunspell/{suggestmgr,affixmgr,hunspell}.cxx: improve ngram suggestion. Fix http://qa.openoffice.org/issues/show_bug.cgi?id=35725. See release notes for examples. This problem reported by beccablain at OOo. - ngram suggestions now are case insensitive (see `Permenant' bug in Issuezilla) - weight ngram suggestions (with the longest common subsequent algorithm, also considering lengths of bad word and suggestion, identical first letters and almost completely identical character positions) - set strict affix congruency in expand_rootword(). Now ngram suggestions are good for languages with rich morphology and also better for English. Rationale: affixed forms of the first ngram suggestion very often suppress the second and subsequent root word suggestions. But faults in affixes are more uncommon, and can be fix without suggestions. We must prefer the more informative second and subsequent root word suggestions instead of the suggestions for bad affixes. - a better suggestion may not be substring of a less good suggestion Rationale: Suggesting affixed forms of a root word is unnecessary, when root word has got better weighted ngram value. (Checking substrings is a good approximation for this refinement.) - lesser ngram suggestions (default 3 maximum instead of 10) Rationale: For users need a big extra effort to check a lot of bad ngram suggestions, nine times out of ten unnecessarily. It is very distracting, because ngram suggestions could be very different. Usually Myspell and Hunspell suggest one or two suggestions with the old suggestion algorithms (maximum is 15), with ngram algorithm often gives maximum number suggestions. With strict affix congruency and other refinements, the good suggestion there is usually among the first three elements. - new affix parameter: MAXNGRAMSUG * src/hunspell/*: support agglutinative languages with rich prefix morphology or with right-to-left writing system (for example, Turkic and Austronesian languages with (modified) Arabic scripts). - new affix parameter: COMPLEXPREFIXES Set twofold prefix stripping (but single suffix stripping) * src/hunspell/affixmgr.cxx: - speed up prefix loading with tree sorting algorithm. * tests/complexprefixes.*, tests/complexprefixesutf.*: Coptic example posted by Moheb Mekhaiel * src/hunspell/hashmgr.cxx: check size attribute in dic file suggested by Daniel Naber Rationale: With missing size attribute Hunspell allocates too small and more slower hash memory, and Hunspell can lose first dictionary word. * src/hunspell/affixmgr.cxx: check stripping characters and condition compatibility in affix rules (bugs detected in cs_CZ, es_ES, es_NEW, es_MX, lt_LT, nn_NO, pt_PT, ro_RO and sk_SK dictionaries). See release notes of Hunspell 1.0.9 in NEWS. * src/hunspell/affixmgr.cxx: check unnecessary fields in affix rules (bugs detected in ro_RO and sv_SE dictionaries). See release notes. * src/hunspell/affixmgr.cxx: remove redundant condition checking in affix rules with stripping characters (redundancy in OpenOffice.org dictionaries reported by Eleonóra Goldman) Rationale: this is a little optimization, but it was excellent for detect the bad ngram affixation with bad or weak affix conditions. * tests/germancompounding.aff: improve compound definition - use dash prefix instead of language specific tokenizer Rationale: Using uniform approach is the right way to check and analyze compound words. Language specific word breaking is deprecated, need a sophisticated grammar checking for word-like word pairs (for example in Hungarian there is a substandard, but accepted syntax with dash for word pairs: cats, dogs -> kutyák-macskák (like cats/dogs in English). * test Hunspell with 54 OpenOffice.org dictionaries: see release notes bug fixes: * src/hunspell/suggestmgr.*: add time limit to exponential algorithm of the related character map suggestion Rationale: a long word in agglutinative languages or a special pattern (for example a horizontal rule) made of map characters can `crash' the spell checker. * src/hunspell/affentry.cxx: add() functions: fix bad word generation checking stripping characters (see similar bug in unmunch) * src/hunspell/affixmgr.cxx: parse_file(): fix unconditional getNext() call for ~AffixMgr() when affix file is corrupt. * src/hunspell/affixmgr.*: AffixMgr(), parse_cpdsyllable(): fix missing string duplications for ~AffixMgr() when affix file is corrupt. * src/hunspell/affixmgr.*: parse_affix(): fix fprintf() call when affix file is corrupt. Bug reported by Daniel Naber. * suggestmgr.cxx: replace single usage of 'strdup' with 'mystrdup' patch by Chris Halls (debian.org) * src/hunspell/makefile.mk: add makefile.mk for compiling in OpenOffice.org See README in Hunspell UNO modul. Problems with separated compiling reported by Rene Engelhard * src/hunspell/hunspell.cxx: fix pseudoroot support - search a not pseudoroot homonym in check() * tests/pseudoroot4.*: test this fix * src/tools/unmunch.c: fix bad word generation when conditions are shorter or incompatible with stripping characters in affix rules * src/tools/unmunch.c: fix mychomp() for de_AT.dic and other dic files without last new line character. other changes: * src/hunspell/suggestmgr.*: erase ACCENT suggestion Rationale: ACCENT suggestion was the same as Kevin Hendrick's map suggestion algorithm, but with a less good interface in affix file. * src/hunspell/suggestmgr.*: combine cycle number limit in badchar(), and forgotchar() with a time limit. * src/hunspell/affixmgr.*: remove NOMAPSUGS affix parameter * src/hunspell/{suggestmgr,hunspell}.*: strip periods from suggestions (restore MySpell's original behaviour) Rationale: OpenOffice.org has an automatic period handling mechanism and suggestions look better without periods. - new affix file parameter: SUGSWITHDOTS Add period(s) to suggestions, if input word terminates in period(s). (No need for OpenOffice.org dictionaries.) * tests/germancompounding.aff: improve bad german affix in affix example (computeren->computern). Suggested by Daniel Naber. * src/tools/example.cxx: add Myspell's example * src/tools/munch.cxx: add Myspell's munch * man{,/hu}/hunspell.4: refresh manual pages 2005-08-01 Németh László : * add missing MySpell files and features: - add MySpell license.readme, README and CONTRIBUTORS ({license,README,AUTHORS}.myspell) - add MySpell unmunch program (src/tools/unmunch.c) - add licenses to source (src/hunspell/license.{myspell,hunspell}) - port MAP suggestion (with imperfect UTF-8 support) - add NOSPLITSUGS affix parameter - add NOMAPSUGS affix parameter * src/man/man.4: MAP, COMPOUNDPERMITFLAG, NOSPLITSUGS, NOMAPSUGS * src/hunspell/aff{entry,ixmgr}.cxx: - improve compound word support - new affix parameter: COMPOUNDPERMITFLAG (see manual) * src/tests/compoundaffix{,2}.*: examples for COMPOUNDPERMITFLAG * src/tests/germancompounding.*: new solution for German compounding Problems with German compounding reported by Daniel Naber * src/hunspell/hunspell.cxx: fix German uppercase word spelling with the spellsharps() recursive algorithm. Default recursive depth is 5 (MAXSHARPS). * src/tests/germansharps*: extended German sharp s tests * src/tools/hunspell.cxx: fix fatal memory bug in non-interactive subshells without HOME environmental variable Bug detected with PHP by András Izsók. 2005-07-22 Németh László : * src/hunspell/csutil.hxx: utf16_u8() - fix 3-byte UTF-8 character conversion 2005-07-21 Németh László : * src/hunspell/csutil.hxx: hunspell_version() for OOo UNO modul 2005-07-19 Németh László : * renaming: - src/morphbase -> src/hunspell - src/hunspell, src/hunmorph -> src/tools - src/huntokens -> src/parsers * src/tools/hunstem.cxx: add stemmer example 2005-07-18 Németh László : * configure.ac: --with-ui, --with-readline configure options * src/hunspell/hunspell.cxx: fix conditional compiling * src/hunspell/hunspell.cxx: set HunSPELL.bak temporaly file in the same dictionary with the checked file. * src/morphbase/morphbase.cxx: - handling German sharp s (ß) - fix (temporaly) analyize() * tests: a lot of new tests * po/, intl/, m4/: add gettext from GNU hello * po/hu.po: add Hungarian translation * doc/, man/: rename doc to man 2005-07-04 Németh László : * src/morphbase/hashmgr.cxx: set FLAG attributum instead of FLAG_NUM and FLAG_LONG * doc/hunspell.4: manual in English 2005-06-30 Németh László : * src/morphbase/csutil.cxx: add character tables from csutil.cxx of OOo 1.1.4 * src/morphbase/affentry.cxx: fix Unicode condition checking * tests/{,utf}compound.*: tests compounding 2005-06-27 Németh László : * src/morphbase/*: fix Unicode compound handling 2005-06-23 Halácsy Péter: * src/hunmorph/hunmorph.cxx: delete spelling error message and suggest_auto() call 2005-06-21 Németh László : * src/morphbase: Unicode support * tests/utf8.*: SET UTF-8 test * src/morphbase: checking and fixing with Valgrind Memory handling error reported by Ferenc Szidarovszky 2005-05-26 Németh László : * suggestmgr.cxx: fix stemming * AUTHORS, COPYING, ChangeLog: set CC-LGPL free software license 2004-05-25 Varga Dániel * src/stemtool: new subproject 2005-05-25 Halácsy Péter * AUTHORS, COPYING: set CC Attribution license 2004-05-23 Varga Dániel * src: - modifications for compiling with Visual C++ * src/hunmorph/csutil.cxx: correcting header of flag_qsort(), * src/hunmorph/*: correct csutil include 2005-05-19 Németh László * csutil.cxx: fix loop condition in lineuniq() bug reported by Viktor Nagy (nagyv nyelvtud hu). * morphbase.cxx: handle PSEUDOROOT with zero affixes bug reported by Viktor Nagy (nagyv nyelvtud hu). * tests/zeroaffix.*: add zeroaffix tests 2005-04-09 Németh László * config.h.in: reset with autoheader * src/hunspell/hunspell.cxx: set version 2005-04-06 Németh László * tests: tests * src/morphbase: New optional parameters in affix file: - PSEUDOROOT: for forbidding root with not forbidden suffixed forms. - COMPOUNDWORDMAX: max. words in compounds (default is no limit) - COMPOUNDROOT: signs compounds in dictionary for handling special compound rules - remove COMPOUNDWORD, ONLYROOT 2005-03-21 Németh László * src/morphbase/*: - 2-byte flags, FLAG_NUM, FLAG_LONG - CIRCUMFIX: signed suffixes and prefixes can only occur together - ONLYINCOMPOUND for fogemorpheme (Swedish, Danish) or Flute-elements (German) - COMPOUNDBEGIN: allow signed roots, and roots with signed suffix in begin of compounds - COMPOUNDMIDDLE: like before, but middle of compounds - COMPOUNDEND: like before, but end of compounds - remove COMPOUNDFIRST, COMPOUNDLAST hunspell-1.7.2/Makefile.am0000664000175000017500000000033714353255712012344 00000000000000ACLOCAL_AMFLAGS = -I m4 SUBDIRS= po src man tests pkgconfdir = $(libdir)/pkgconfig pkgconf_DATA = hunspell.pc EXTRA_DIST = license.myspell license.hunspell \ ChangeLog.O COPYING.LESSER COPYING.MPL hunspell.pc.in hunspell-1.7.2/install-sh0000755000175000017500000003546313424262414012315 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2014-09-12.12; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # 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. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) # $RANDOM is not portable (e.g. dash); use it when possible to # lower collision chance tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 # As "mkdir -p" follows symlinks and we work in /tmp possibly; so # create the $tmpdir first (and fail if unsuccessful) to make sure # that nobody tries to guess the $tmpdir name. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # 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 $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: