diff --git a/tools/train/svmtools/SVMTlearn b/tools/train/svmtools/SVMTlearn new file mode 100644 index 000000000..65b835812 --- /dev/null +++ b/tools/train/svmtools/SVMTlearn @@ -0,0 +1,182 @@ +#!/usr/bin/perl +# Author : Jess Gimnez +# Date : August 7, 2006 +# Description : SVM-based sequential learner. +# +# Usage: SVMTlearn [options] config-file +# +# -------------------------------------------------------------------------- +# ------------------------------------------------------------------------ + +#Copyright (C) 2004-2006 Jesus Gimenez and Lluis Marquez + +#This library is free software; you can redistribute it and/or +#modify it under the terms of the GNU Lesser General Public +#License as published by the Free Software Foundation; either +#version 2.1 of the License, or (at your option) any later version. + +#This library is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +#Lesser General Public License for more details. + +#You should have received a copy of the GNU Lesser General Public +#License along with this library; if not, write to the Free Software +#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +# ------------------------------------------------------------------------ + +use strict; +use IO; +use Benchmark; +use Data::Dumper; +use SVMTool::DICTIONARY; +use SVMTool::SVMTAGGER; +use SVMTool::COMMON; + +sub get_out +{ + $0 =~ /\/([^\/]*$)/; + print STDERR "Usage : ", $1, " [options] \n\n"; + print STDERR "options:\n"; + print STDERR " - V -> 0: none verbose\n"; + print STDERR " 1: low verbose [default]\n"; + print STDERR " 2: medium verbose\n"; + print STDERR " 3: high verbose\n"; + print STDERR "\nExample : $1 -V 2 config.svmt\n\n"; + exit; +} + +# -- main program -- +my $NARG = 1; + +# check number of argments +my $ARGLEN = scalar(@ARGV); +if ($ARGLEN < $NARG) { get_out(); } + +my $verbose = 1; +my $config; + +my $ARGOK = 0; +my $i = 0; +my $stop = 0; +while (($i < $ARGLEN) and (!$stop)) { + my $opt = shift(@ARGV); + if (($opt eq "-V") or ($opt eq "-v")) { $verbose = shift(@ARGV) + 0; } + else { + if ($opt ne "") { $config = $opt; $ARGOK = 1; $stop = 1; } + } + $i++; +} + +if (!($ARGOK)) { get_out(); } + +# ====================================================================================== +# ================================= MAIN PROGRAM ======================================= +# ====================================================================================== + +# ====================================================================================== +#READING CONFIGURATION FILE +my $CONFIG = SVMTAGGER::read_config_file($config); +my $corpus = $CONFIG->{corpus}; +my $trainset = $CONFIG->{trainset}; +my $valset = $CONFIG->{valset}; +my $testset = $CONFIG->{testset}; +my $model = $CONFIG->{model}; +#if ($model =~ /.*\/.*/) { $model =~ s/.*\///g; } + +# ====================================================================================== +#RANDOMIZE CORPUS (SPLITTING INTO TRAINING:VALIDATION:TEST) +if ((exists($CONFIG->{corpus})) and ((!exists($CONFIG->{trainset})) or (!exists($CONFIG->{testset})) or (!exists($CONFIG->{valset})))) { + $trainset = $model.".".$COMMON::trainext; #TRAINING SET (out) + $valset = $model.".".$COMMON::valext; #VALIDATION SET (out) + $testset = $model.".".$COMMON::testext; #TEST SET (out) + SVMTAGGER::randomize_sentences($corpus, $trainset, $valset, $testset, $CONFIG->{TRAINP}, $CONFIG->{VALP}, $CONFIG->{TESTP}); + $CONFIG->{trainset} = $trainset; + $CONFIG->{valset} = $valset; + $CONFIG->{testset} = $testset; +} + +# ====================================================================================== +#REPORT FILE +my $reportfile = $model.".".$COMMON::EXPEXT; #REPORT FILE +if ($verbose > 0) { + COMMON::report($reportfile, "----------------------------------------------------------------------------------------\n$COMMON::appname v$COMMON::appversion\n(C) $COMMON::appyear TALP RESEARCH CENTER.\nWritten by Jesus Gimenez and Lluis Marquez.\n----------------------------------------------------------------------------------------\n"); + if ($CONFIG->{corpus} ne "") { COMMON::report($reportfile, "CORPUS = ".$CONFIG->{corpus}."\n"); } + if ($CONFIG->{trainset} ne "") { COMMON::report($reportfile, "TRAINING SET = ".$CONFIG->{trainset}."\n"); } + if ($CONFIG->{valset} ne "") { COMMON::report($reportfile, "VALIDATION SET = ".$CONFIG->{valset}."\n"); } + if ($CONFIG->{testset} ne "") { COMMON::report($reportfile, "TEST SET = ".$CONFIG->{testset}."\n"); } + COMMON::report($reportfile, "----------------------------------------------------------------------------------------\n----------------------------------------------------------------------------------------\n\n"); +} + +if ($verbose > $COMMON::verbose2) { print Dumper ($CONFIG), "\n"; } + +# ====================================================================================== +#DICTIONARY CREATION +my $dict = $model.".".$COMMON::DICTEXT; #DICTIONARY +my $supervised = SVMTAGGER::create_dictionary($CONFIG->{trainset}, $CONFIG->{LEX}, $CONFIG->{BLEX}, $CONFIG->{R}, $CONFIG->{Dratio}, $dict, $reportfile, $verbose); + +# ====================================================================================== + +COMMON::write_list($CONFIG->{A0k}, $model.".".$COMMON::A0EXT); +COMMON::write_list($CONFIG->{A1k}, $model.".".$COMMON::A1EXT); +COMMON::write_list($CONFIG->{A2k}, $model.".".$COMMON::A2EXT); +COMMON::write_list($CONFIG->{A3k}, $model.".".$COMMON::A3EXT); +COMMON::write_list($CONFIG->{A4k}, $model.".".$COMMON::A4EXT); +COMMON::write_list($CONFIG->{A0u}, $model.".".$COMMON::A0EXT.".".$COMMON::unkext); +COMMON::write_list($CONFIG->{A1u}, $model.".".$COMMON::A1EXT.".".$COMMON::unkext); +COMMON::write_list($CONFIG->{A2u}, $model.".".$COMMON::A2EXT.".".$COMMON::unkext); +COMMON::write_list($CONFIG->{A3u}, $model.".".$COMMON::A3EXT.".".$COMMON::unkext); +COMMON::write_list($CONFIG->{A4u}, $model.".".$COMMON::A4EXT.".".$COMMON::unkext); +my @winsetup = ($CONFIG->{wlen}, $CONFIG->{wcore}); +COMMON::write_list(\@winsetup, $model.".".$COMMON::WINEXT); + +# ====================================================================================== + +my $rdict; +#FINDING/WRITING AMBP & UNKP +if (!(exists($CONFIG->{AP}))) { $CONFIG->{AP} = DICTIONARY::find_ambp($dict); } +if (!(exists($CONFIG->{UP}))) { $CONFIG->{UP} = DICTIONARY::find_unkp($dict); } +COMMON::write_list($CONFIG->{AP}, $model.".".$COMMON::AMBPEXT); +COMMON::write_list($CONFIG->{UP}, $model.".".$COMMON::UNKPEXT); +$rdict = new DICTIONARY($dict, $model.".".$COMMON::AMBPEXT, $model.".".$COMMON::UNKPEXT); +if ($verbose > 0) { COMMON::report($reportfile, "DICTIONARY <$dict> [".$rdict->get_nwords." words]\n"); } + +# ====================================================================================== + +# ------------------------------------------------------------------------------------------- +my $time1 = new Benchmark; +# ------------------------------------------------------------------------------------------- + +#PROCESSING ACTION ITEMS +if (scalar(@{$CONFIG->{do}}) != 0) { + foreach my $action (@{$CONFIG->{do}}) { + my @command = split(/:/, $action); + my $CKTopt = ""; + my $CUTopt = ""; + my $Topt = ""; #default [-> no test] + if ($command[2] =~ /^CK;/) { $CKTopt = $command[2]; } + elsif ($command[2] =~ /^CU;/) { $CUTopt = $command[2]; } + elsif ($command[2] =~ /^T/) { $Topt = $command[2]; } + if ($command[3] =~ /^CK;/) { $CKTopt = $command[3]; } + elsif ($command[3] =~ /^CU;/) { $CUTopt = $command[3]; } + elsif ($command[3] =~ /T/) { $Topt = $command[3]; } + if ($command[4] =~ /^CK;/) { $CKTopt = $command[4]; } + elsif ($command[4] =~ /^CU;/) { $CUTopt = $command[4]; } + elsif ($command[4] =~ /T/) { $Topt = $command[4]; } + SVMTAGGER::SVMT_learn($CONFIG, $command[0], $command[1], $CKTopt, $CUTopt, $Topt, $rdict, $supervised, $reportfile, $verbose); + } +} +else { + print STDERR "HEY MAN! THERE ARE NO ACTION ITEMS TO PROCESS!!\n"; +} + +# ------------------------------------------------------------------------------------------- +my $time2 = new Benchmark; +# ------------------------------------------------------------------------------------------- +if ($verbose > 0) { + COMMON::print_benchmark($time1, $time2, $reportfile); + print "\nTERMINATION... [DONE]\n"; +} + + diff --git a/tools/train/svmtools/SVMTool/ATTGEN.pm b/tools/train/svmtools/SVMTool/ATTGEN.pm new file mode 100644 index 000000000..d016cbaac --- /dev/null +++ b/tools/train/svmtools/SVMTool/ATTGEN.pm @@ -0,0 +1,888 @@ +package ATTGEN; + +#Copyright (C) 2004 Jesus Gimenez and Lluis Marquez + +#This library is free software; you can redistribute it and/or +#modify it under the terms of the GNU Lesser General Public +#License as published by the Free Software Foundation; either +#version 2.1 of the License, or (at your option) any later version. + +#This library is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +#Lesser General Public License for more details. + +#You should have received a copy of the GNU Lesser General Public +#License along with this library; if not, write to the Free Software +#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +use strict; +use Data::Dumper; +use SVMTool::COMMON; +use SVMTool::SWINDOW; +use SVMTool::DICTIONARY; + +# ================================== ATTRIB GEN ======================================== + +# ------------------- ATTGEN ---------------------------------- +my $fseparator = ","; +# ----------------- whole sentence features +my $slastw = "Swn"; +# ----------------------------------------------------------------------------- +my $WMARK = "w"; # words +my $PMARK = "p"; # POS' +my $KMARK = "k"; # ambiguity classes +my $MMARK = "m"; # maybe's +my $MFTMARG = "f"; # SENEN MFT f(-1) --> f-1:NN +my $aMARK = "a"; # prefixes +my $zMARK = "z"; # suffixes +my $caMARK = "ca"; # character [counting from the beginning of the token, starting at 1] +my $czMARK = "cz"; # character [counting from the end of the token, starting at 1] +my $LMARK = "L"; # token length +my $SAMARK = "SA"; # starts with capital letter +my $AAMARK = "AA"; # all upper case +my $NMARK = "SN"; # starts with number +my $saMARK = "sa"; # starts with lower case +my $aaMARK = "aa"; # all lower case +my $CAMARK = "CA"; # contains a capital letter +my $CAAMARK = "CAA"; # contains several capital letters +my $CPMARK = "CP"; # contains period(s) +my $CCMARK = "CC"; # contains comma(s) +my $CNMARK = "CN"; # contains number(s) +my $MWMARK = "MW"; # contains underscores (multi-word) +my $COLMARK = "C"; # contains underscores (multi-word) +my $DOUBLE = "DOU"; #double ¼ +my $BUSHOUA = "bsa"; #¼ +my $BUSHOUZ = "bsz"; #¼ +# ----------------------------------------------------------------------------- + +sub check_arguments +{ + #description _ returns true if feature arguments must be checked + #param1 _ feature mark + + my $f = shift; + + return (($f eq $WMARK) or ($f eq $PMARK) or ($f eq $KMARK) or ($f eq $MMARK) or ($f eq $COLMARK)); +} + + +sub push_COLUMN +{ + #description _ pushes a COLUMN feature onto a feature hash + #param1 _ feature hash + #param2 _ sliding window object + #param3 _ column index + #param4 _ argument list reference + + my $rattribs = shift; + my $rwin = shift; + my $column = shift; + my $args = shift; + + my $i = 0; + my @ctx; + my @f; + while ($i < scalar(@{$args})) { + push(@f, $rwin->get_col_relative($args->[$i], $column)); + push(@ctx, $args->[$i]); + $i++; + } + + $rattribs->{$COLMARK.$column.$COMMON::valseparator.join($fseparator, @ctx)} = join($COMMON::valseparator, @f); +} + +sub push_word +{ + #description _ pushes a word feature onto a feature hash + #param1 _ feature hash + #param2 _ sliding window object + #param3 _ argument list reference + + my $rattribs = shift; + my $rwin = shift; + my $args = shift; + + my $i = 0; + my @ctx; + my @f; + while ($i < scalar(@{$args})) { + push(@f, $rwin->get_word_relative($args->[$i])); + push(@ctx, $args->[$i]); + $i++; + } + + $rattribs->{$WMARK.join($fseparator, @ctx)} = join($COMMON::valseparator, @f); +} + +sub push_pos +{ + #description _ pushes a pos feature onto a feature hash + #param1 _ feature hash + #param2 _ sliding window object + #param3 _ argument list reference + + my $rattribs = shift; + my $rwin = shift; + my $args = shift; + + my $i = 0; + my @ctx; + my @f; + while ($i < scalar(@{$args})) { + my $pos = $rwin->get_pos_relative($args->[$i]); + if ($pos eq $COMMON::emptypos) { + my $word = $rwin->get_word_relative($args->[$i]); + if ($word eq $COMMON::emptyword) { + push(@f, $COMMON::emptypos); + } + else { + my $rpotser = $rwin->get_kamb_relative($args->[$i]); + if (defined(@{$rpotser})) { push(@f, join($COMMON::innerseparator, @{$rpotser})); } + else { push(@f, $COMMON::unkamb); } + } + } + else { push(@f, $pos); } + push(@ctx, $args->[$i]); + $i++; + } + + $rattribs->{$PMARK.join($fseparator, @ctx)} = join($COMMON::valseparator, @f); +} + +sub push_kamb +{ + #description _ pushes an ambiguity_class feature onto a feature hash + #param1 _ feature hash + #param2 _ sliding window object + #param3 _ argument list reference (not n-grams) + + my $rattribs = shift; + my $rwin = shift; + my $args = shift; + + my $word = $rwin->get_word_relative($args->[0]); + + if ($word eq $COMMON::emptyword) { + $rattribs->{$KMARK.$args->[0]} = $COMMON::emptypos; + } + else { + my $rpotser = $rwin->get_kamb_relative($args->[0]); + if (defined(@{$rpotser})) { + $rattribs->{$KMARK.$args->[0]} = join($COMMON::valseparator, @{$rpotser}); + } + else { + $rattribs->{$KMARK.$args->[0]} = $COMMON::unkamb; + } + } +} + +sub push_maybe +{ + #description _ pushes a maybe feature onto a feature hash + #param1 _ feature hash + #param2 _ sliding window object + #param3 _ argument list reference (not n-grams) + + my $rattribs = shift; + my $rwin = shift; + my $args = shift; + + my $word = $rwin->get_word_relative($args->[0]); + + if ($word eq $COMMON::emptyword) { + $rattribs->{$MMARK.$args->[0].$COMMON::valseparator.$COMMON::emptypos} = 1; + } + else { + my $rpotser = $rwin->get_kamb_relative($args->[0]); + if (defined(@{$rpotser})) { + foreach my $ps (@{$rpotser}) { + $rattribs->{$MMARK.$args->[0].$COMMON::valseparator.$ps} = 1; #POTSER + } + } + else { + $rattribs->{$MMARK.$args->[0].$COMMON::valseparator.$COMMON::unkamb} = 1; + } + } +} + +#Ķ +sub push_prefix +{ + #description _ pushes a prefix feature onto a feature hash + #param1 _ feature hash + #param2 _ sliding window object + #param3 _ argument list reference + + my $rattribs = shift; + my $rwin = shift; + my $args = shift; + + my $word = $rwin->get_core_word(); + my $n = $args->[0]; + my $len = length($word); + + if ($len >= $n) { $rattribs->{$aMARK.$n} = substr($word, 0, $n); } + else { + $rattribs->{$aMARK.$n} = substr($word, 0, $len); + my $i = $len; + while ($i < $n) { $rattribs->{$aMARK.$n} .= $COMMON::valseparator; $i++; } + } +} + +#Ķ +sub push_suffix +{ + #description _ pushes a suffix feature onto a feature hash + #param1 _ feature hash + #param2 _ sliding window object + #param3 _ argument list reference + + my $rattribs = shift; + my $rwin = shift; + my $args = shift; + + my $word = $rwin->get_core_word(); + my $n = $args->[0]; + my $len = length($word); + + if ($len >= $n) { $rattribs->{$zMARK.$n} = substr($word, $len-$n, $n); } + else { + my $i = $len; + while ($i < $n) { $rattribs->{$zMARK.$n} .= $COMMON::valseparator; $i++; } + $rattribs->{$zMARK.$n} .= substr($word, 0, $len); + } +} + +sub push_ca +{ + #description _ pushes a ca feature [character, counting from the beginning] onto a feature hash + #param1 _ feature hash + #param2 _ sliding window object + #param3 _ argument list reference + + my $rattribs = shift; + my $rwin = shift; + my $args = shift; + + my $word = $rwin->get_core_word(); + my $n = $args->[0]; + my $len = length($word); + + if ($len >= $n) { $rattribs->{$caMARK.$n} = substr($word, $n-1, 1); } + else { $rattribs->{$caMARK.$n} = $COMMON::valseparator; } +} + +sub push_cz +{ + #description _ pushes a ca feature [character, counting from the end] onto a feature hash + #param1 _ feature hash + #param2 _ sliding window object + #param3 _ argument list reference + + my $rattribs = shift; + my $rwin = shift; + my $args = shift; + + my $word = $rwin->get_core_word(); + my $n = $args->[0]; + my $len = length($word); + + if ($len >= $n) { $rattribs->{$czMARK.$n} = substr($word, $len-$n, 1); } + else { $rattribs->{$czMARK.$n} = $COMMON::valseparator; } +} + +sub push_length +{ + #description _ pushes a length feature [word length] + #param1 _ feature hash + #param2 _ sliding window object + #param3 _ argument list reference + + my $rattribs = shift; + my $rwin = shift; + my $args = shift; + + my $word = $rwin->get_core_word(); + my $len = length($word); + + $rattribs->{$LMARK} = $len; +} + +sub push_SA +{ + #description _ pushes an A feature [starts with capital letter] + #param1 _ feature hash + #param2 _ sliding window object + #param3 _ argument list reference + + my $rattribs = shift; + my $rwin = shift; + my $args = shift; + + my $word = $rwin->get_core_word(); + + if ($word =~ /^[A-Z].*$/) { $rattribs->{$SAMARK} = 1; } +} + +sub push_AA +{ + #description _ pushes an AA feature [all upper case] + #param1 _ feature hash + #param2 _ sliding window object + #param3 _ argument list reference + + my $rattribs = shift; + my $rwin = shift; + my $args = shift; + + my $word = $rwin->get_core_word(); + + if ($word =~ /^[A-Z]+$/) { $rattribs->{$AAMARK} = 1; } +} + +sub push_N +{ + #description _ pushes an N feature [starts with number] + #param1 _ feature hash + #param2 _ sliding window object + #param3 _ argument list reference + + my $rattribs = shift; + my $rwin = shift; + my $args = shift; + + my $word = $rwin->get_core_word(); + + if ($word =~ /^[0-9].*$/) { $rattribs->{$NMARK} = 1; } +} + +sub push_CN +{ + #description _ pushes a CN feature [contains a number] + #param1 _ feature hash + #param2 _ sliding window object + #param3 _ argument list reference + + my $rattribs = shift; + my $rwin = shift; + my $args = shift; + + my $word = $rwin->get_core_word(); + + if ($word =~ /^.*[0-9].*$/) { $rattribs->{$CNMARK} = 1; } +} + + +sub push_sa +{ + #description _ pushes a sa feature [starts with lower case] + #param1 _ feature hash + #param2 _ sliding window object + #param3 _ argument list reference + + my $rattribs = shift; + my $rwin = shift; + my $args = shift; + + my $word = $rwin->get_core_word(); + + if ($word =~ /^[a-z].*$/) { $rattribs->{$saMARK} = 1; } +} + +sub push_aa +{ + #description _ pushes an aa feature [all lower case] + #param1 _ feature hash + #param2 _ sliding window object + #param3 _ argument list reference + + my $rattribs = shift; + my $rwin = shift; + my $args = shift; + + my $word = $rwin->get_core_word(); + + if ($word =~ /^[a-z]+$/) { $rattribs->{$aaMARK} = 1; } +} + +sub push_CA +{ + #description _ pushes a CA feature [contains Capital Letter] + #param1 _ feature hash + #param2 _ sliding window object + #param3 _ argument list reference + + my $rattribs = shift; + my $rwin = shift; + my $args = shift; + + my $word = $rwin->get_core_word(); + + if ($word =~ /^.+[A-Z].*$/) { $rattribs->{$CAMARK} = 1; } +} + +sub push_CAA +{ + #description _ pushes a CAA feature [contains several Capital Letters] + #param1 _ feature hash + #param2 _ sliding window object + #param3 _ argument list reference + + my $rattribs = shift; + my $rwin = shift; + my $args = shift; + + my $word = $rwin->get_core_word(); + + if ($word =~ /^.*[A-Z].*[A-Z].*$/) { $rattribs->{$CAAMARK} = 1; } +} + +sub push_CP +{ + #description _ pushes a CP feature [contains a period] + #param1 _ feature hash + #param2 _ sliding window object + #param3 _ argument list reference + + my $rattribs = shift; + my $rwin = shift; + my $args = shift; + + my $word = $rwin->get_core_word(); + + if ($word =~ /^.*[\.].*$/) { $rattribs->{$CPMARK} = 1; } +} + +sub push_CC +{ + #description _ pushes a CC feature [contains a comma] + #param1 _ feature hash + #param2 _ sliding window object + #param3 _ argument list reference + + my $rattribs = shift; + my $rwin = shift; + my $args = shift; + + my $word = $rwin->get_core_word(); + + if ($word =~ /^.*[\,].*$/) { $rattribs->{$CCMARK} = 1; } +} + +sub push_MW +{ + #description _ pushes a CC feature [contains a comma] + #param1 _ feature hash + #param2 _ sliding window object + #param3 _ argument list reference + + my $rattribs = shift; + my $rwin = shift; + my $args = shift; + + my $word = $rwin->get_core_word(); + + if ($word =~ /^.*[\-].*$/) { $rattribs->{$MWMARK} = 1; } +} + +sub get_core_word_from_hash +{ + #description _ returns the feature hash core word + #param1 _ feature hash reference + #@return _ core word (w0:__XXX___) + + my $rattribs = shift; + + return $rattribs->{$WMARK."0"}; +} + +sub get_core_word_from_list +{ + #description _ returns the feature list core word + #param1 _ feature list reference + #@return _ core word (w0:__XXX___) + + my $lattribs = shift; + + my $len = @{$lattribs}; + my $i = 1; + my $stop = 0; + my $item; + + my $WT = $WMARK."0:"; + while (($i < $len) and (!$stop)) { + $item = $lattribs->[$i]; + chomp($item); + if ($item =~ /$WT/) { + $item =~ s/$WT//g; + $stop = 1; + } + else { $i++; } + } + + return $item; +} + +#¼ + + +#¼ +sub push_BSA +{ + my $rattribs = shift; + my $rwin = shift; + my $args = shift; + my $Unihan = shift; + my $BS = shift; + + my $word = $rwin->get_core_word(); + my $len = length($word); + my $n = $args->[0]; + + my @fs; + my $innum; + + if($len >= $n * 2) + { + my $k = 0; + while($k < $n) + { + my $key = substr($word, $k*2 ,2); + my $ind = 0; + if(exists $Unihan->{$key}) + { + $ind = oct($Unihan->{$key}); + } + my $i = 0; + foreach my $in (@{$BS}) + { + $innum = oct($in); + if( $ind < $innum ) + { + my $j = $i - 1 ; + push(@fs,$j); + last; + } + elsif($ind == $innum) + { + my $j = $i ; + push(@fs,$j); + last; + } + $i++; + } + $k++; + } + } + else + { + $n = $len / 2; + my $k = 0; + while($k < $n) + { + my $key = substr($word, $k*2 ,2); + my $ind = 0; + if(exists $Unihan->{$key}) + { + $ind = oct($Unihan->{$key}); + } + my $i = 0; + foreach my $in (@{$BS}) + { + $innum = oct($in); + if( $ind < $innum ) + { + my $j = $i - 1 ; + push(@fs,$j); + last; + } + elsif($ind == $innum) + { + my $j = $i ; + push(@fs,$j); + last; + } + $i++; + } + $k++; + } + } + $rattribs->{$BUSHOUA.$n} = join($COMMON::valseparator, @fs); + +} + +sub push_BSZ +{ + my $rattribs = shift; + my $rwin = shift; + my $args = shift; + my $Unihan = shift; + my $BS = shift; + + my $word = $rwin->get_core_word(); + my $len = length($word); + my $n = $args->[0]; + + my @fs; + my $innum; + if($len >= $n * 2) + { + my $k = $n; + while($k > 0) + { + my $key = substr($word, $len - $k*2,2); + my $ind = 0; + if(exists $Unihan->{$key}) + { + $ind = oct($Unihan->{$key}); + } + my $i = 0; + foreach my $in (@{$BS}) + { + $innum = oct($in); + if( $ind < $innum ) + { + my $j = $i - 1 ; + push(@fs,$j); + last; + } + elsif($ind == $innum) + { + my $j = $i ; + push(@fs,$j); + last; + } + $i++; + } + $k -= 1; + } + } + else + { + $n = $len / 2; + my $k = $n; + while($k > 0) + { + my $key = substr($word, $len - $k*2,2); + my $ind = 0; + if(exists $Unihan->{$key}) + { + $ind = oct($Unihan->{$key}); + } + my $i = 0; + foreach my $in (@{$BS}) + { + $innum = oct($in); + if( $ind < $innum ) + { + my $j = $i - 1 ; + push(@fs,$j); + last; + } + elsif($ind == $innum) + { + my $j = $i ; + push(@fs,$j); + last; + } + $i++; + } + $k -= 1; + } + } + $rattribs->{$BUSHOUZ.$n} = join($COMMON::valseparator, @fs); + +} + +#¼ +sub push_DOU +{ + #description _ pushes a CAA feature [contains several Capital Letters] + #param1 _ feature hash + #param2 _ sliding window object + #param3 _ argument list reference + + my $rattribs = shift; + my $rwin = shift; + my $args = shift; + + my $word = $rwin->get_core_word(); + my $len = length($word); + my $NULL = "NULL"; #double ¼ + #if($len == 4) + #{ + # my $first = substr($word,0,2); + # my $second = substr($word,2,2); + # if($first eq $second) + # { + # $rattribs->{$DOUBLE} = $first; + # } + #} + #elsif($len == 6) + #{ + # my $first = substr($word ,0,2); + # my $second = substr($word,4,2); + # if($first eq $second) + # { + # $rattribs->{$DOUBLE} = $first; + # } + #} + #elsif($len == 8) + #{ + # my $first = substr($word ,0,2); + # my $second = substr($word,2,2); + # my $third = substr($word,4,2); + # my $fourth = substr($word ,6,2); + # if(($first eq $second) and ($third eq $ fourth)) + # { + # $rattribs->{$DOUBLE} = $first.$third; + # } + # elsif(($first eq $third) and ($second eq $ fourth)) + # { + # $rattribs->{$DOUBLE} = $first.$second; + # } + # } + + if($len == 6) + { + my $first = substr($word ,0,2); + my $second = substr($word,2,2); + if($first eq $second) + { + $rattribs->{$DOUBLE} = $first; + } + else + { + $rattribs->{$DOUBLE} = $NULL; + } + } + elsif($len == 8) + { + my $first = substr($word ,0,2); + my $second = substr($word,2,2); + my $third = substr($word,4,2); + my $fourth = substr($word ,6,2); + if(($first eq $second) and ($third eq $fourth)) + { + $rattribs->{$DOUBLE} = $first.$third; + } + elsif(($first eq $third) and ($second eq $fourth)) + { + $rattribs->{$DOUBLE} = $first.$second; + } + else + { + $rattribs->{$DOUBLE} = $NULL; + } + } + else + { + $rattribs->{$DOUBLE} = $NULL; + } +} +# ----------------------------------------------------------------------------- + + +sub do_features +{ + #description _ responsible for generating a hash containing the attributes + # corresponding to the given window. + # + # -> + bigrams + trigrams (word, pos) + # + #param1 _ window reference + #param2 _ dictionary object reference + #param3 _ sentence general information list --> (last word) + #param4 _ feature set list reference + + my $rwin = shift; + my $rdict = shift; + my $sinfo = shift; + my $fs = shift; + my $Unihan = shift; + my $BS = shift; + + my $wlength = $rwin->get_len(); + my $wcorepos = $rwin->get_core(); + my %attribs; + + #loading ambiguity classes + my $i = 0; + while ($i < $wlength) { + $rwin->set_kamb($i, $rdict->get_potser($rwin->get_word($i))); + $i++; + } + + # whole sentence features + $attribs{$slastw} = $sinfo->[0]; + + foreach my $f (@{$fs}) { + if ($f->[0] eq $WMARK) { push_word(\%attribs, $rwin, $f->[1]); } + elsif ($f->[0] eq $PMARK) { push_pos(\%attribs, $rwin, $f->[1]); } + elsif ($f->[0] eq $KMARK) { push_kamb(\%attribs, $rwin, $f->[1]); } + elsif ($f->[0] eq $MMARK) { push_maybe(\%attribs, $rwin, $f->[1]); } + elsif ($f->[0] eq $aMARK) { push_prefix(\%attribs, $rwin, $f->[1]); } + elsif ($f->[0] eq $zMARK) { push_suffix(\%attribs, $rwin, $f->[1]); } + elsif ($f->[0] eq $caMARK) { push_ca(\%attribs, $rwin, $f->[1]); } + elsif ($f->[0] eq $czMARK) { push_cz(\%attribs, $rwin, $f->[1]); } + elsif ($f->[0] eq $LMARK) { push_length(\%attribs, $rwin, $f->[1]); } + elsif ($f->[0] eq $NMARK) { push_N(\%attribs, $rwin, $f->[1]); } + elsif ($f->[0] eq $SAMARK) { push_SA(\%attribs, $rwin, $f->[1]); } + elsif ($f->[0] eq $AAMARK) { push_AA(\%attribs, $rwin, $f->[1]); } + elsif ($f->[0] eq $saMARK) { push_sa(\%attribs, $rwin, $f->[1]); } + elsif ($f->[0] eq $aaMARK) { push_aa(\%attribs, $rwin, $f->[1]); } + elsif ($f->[0] eq $CAMARK) { push_CA(\%attribs, $rwin, $f->[1]); } + elsif ($f->[0] eq $CAAMARK) { push_CAA(\%attribs, $rwin, $f->[1]); } + elsif ($f->[0] eq $CPMARK) { push_CP(\%attribs, $rwin, $f->[1]); } + elsif ($f->[0] eq $CCMARK) { push_CC(\%attribs, $rwin, $f->[1]); } + elsif ($f->[0] eq $CNMARK) { push_CN(\%attribs, $rwin, $f->[1]); } + elsif ($f->[0] eq $MWMARK) { push_MW(\%attribs, $rwin, $f->[1]); } + elsif ($f->[0] eq $DOUBLE) { push_DOU(\%attribs, $rwin, $f->[1]); } + elsif ($f->[0] eq $BUSHOUA) { push_BSA(\%attribs, $rwin, $f->[1],$Unihan,$BS); } + elsif ($f->[0] eq $BUSHOUZ) { push_BSZ(\%attribs, $rwin, $f->[1],$Unihan,$BS); } + elsif ($f->[0] eq $COLMARK) { ### MULTIPLE-COLUMNS <----- + push_COLUMN(\%attribs, $rwin, $f->[1], $f->[2]); + } + else { print STDERR "UNKNOWN FEATURE TYPE! [", $f->[0], "]\n"; } + } + + return \%attribs; +} + +sub generate_features +{ + #description _ responsible for generating a hash containing the features + # corresponding to the given window. + # + # -> + bigrams + trigrams (word, pos) + # + #param1 _ window reference + #param2 _ dictionary object reference + #param3 _ sentence general information list --> (last word --> ',' '?' '!') + #param4 _ mode + # (generate_features 0-ambiguous-right :: 1-unambiguous-right :: 2-no-right) + # ( 3-unsupervised :: 4-unknown words on training...) + #param5 _ feature set list reference + #@return _ attribute hash reference + + my $rwin = shift; + my $rdict = shift; + my $sinfo = shift; + my $mode = shift; + my $fs = shift; + my $Unihan = shift; + my $BS = shift; + + if ($mode != $COMMON::mode1) { #pos information for unseen words is not available + my $i = $rwin->get_core; + while ($i < $rwin->get_len) { + $rwin->set_pos($i, $COMMON::emptypos); + $i++; + } + } + + return do_features($rwin, $rdict, $sinfo, $fs,$Unihan,$BS);# have modified add $Unihan +} + +1; diff --git a/tools/train/svmtools/SVMTool/COMMON.pm b/tools/train/svmtools/SVMTool/COMMON.pm new file mode 100644 index 000000000..f9ef73ab6 --- /dev/null +++ b/tools/train/svmtools/SVMTool/COMMON.pm @@ -0,0 +1,590 @@ +package COMMON; + +#Copyright (C) 2004 Jesus Gimenez and Lluis Marquez + +#This library is free software; you can redistribute it and/or +#modify it under the terms of the GNU Lesser General Public +#License as published by the Free Software Foundation; either +#version 2.1 of the License, or (at your option) any later version. + +#This library is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +#Lesser General Public License for more details. + +#You should have received a copy of the GNU Lesser General Public +#License along with this library; if not, write to the Free Software +#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +use strict; +use IO; + +use vars qw($appname $appversion $appyear $clsfext $smplext $trainext $valext $testext $mapext $unkext $svmext $SVMEXT $DICTEXT $EXPNDEXT $TAGSEXT $MRGEXT $mrgext $M0EXT $M1EXT $M2EXT $M3EXT $M4EXT $Wext $Bext $FOLDEXT $OUTEXT $DSFEXT $AMBPEXT $UNKPEXT $A0EXT $A1EXT $A2EXT $A3EXT $A4EXT $revext $lrext $rlext $lrmode $rlmode $lrlmode $glrlmode $mode0 $mode1 $mode2 $mode3 $mode4 $st0 $st1 $st2 $st3 $st4 $st5 $st6 $softmax0 $softmax1 $verbose0 $verbose1 $verbose2 $verbose3 $verbose4 $attvalseparator $innerseparator $valseparator $pairseparator $emptypos $unkpos $emptyword $d_separator $in_valseparator $out_valseparator $progress0 $progress1 $progress2 $progress3 $unkamb $WINEXT $IGNORE $SMARK $VERSION); + +# -------------------- #application name and version +$COMMON::appname = "SVMTool"; +$COMMON::VERSION = "1.3"; +$COMMON::appversion = "1.3"; +$COMMON::appyear = "2006"; +# -------------------- #file extensions +$COMMON::clsfext = "CLSF"; +$COMMON::smplext = "SAMPLES"; +$COMMON::DSFEXT = "DSF"; +$COMMON::trainext = "TRAIN"; +$COMMON::valext = "VAL"; +$COMMON::testext = "TEST"; +$COMMON::mapext = "MAP"; +$COMMON::knext = "KN"; +$COMMON::unkext = "UNK"; +$COMMON::svmext = "svm"; +$COMMON::SVMEXT = "SVM"; +$COMMON::Wext = "W"; +$COMMON::Bext = "B"; +$COMMON::DICTEXT = "DICT"; +$COMMON::EXPNDEXT = "XPND"; +$COMMON::TAGSEXT = "TAGS"; +$COMMON::MRGEXT = "MRG"; +$COMMON::mrgext = "mrg"; +$COMMON::EXPEXT = "EXP"; +$COMMON::revext = "REV"; +$COMMON::lrext = "LR"; +$COMMON::rlext = "RL"; +$COMMON::MORFEXT = "MORFO"; +$COMMON::M0EXT = "M0"; +$COMMON::M1EXT = "M1"; +$COMMON::M2EXT = "M2"; +$COMMON::M3EXT = "M3"; +$COMMON::M4EXT = "M4"; +$COMMON::FOLDEXT = "FLD"; +$COMMON::OUTEXT = "OUT"; +$COMMON::AMBPEXT = "AMBP"; +$COMMON::UNKPEXT = "UNKP"; +$COMMON::A0EXT = "A0"; +$COMMON::A1EXT = "A1"; +$COMMON::A2EXT = "A2"; +$COMMON::A3EXT = "A3"; +$COMMON::A4EXT = "A4"; +$COMMON::WINEXT = "WIN"; +# -------------------- #tagging directions +$COMMON::lrmode = "LR"; +$COMMON::rlmode = "RL"; +$COMMON::lrlmode = "LRL"; +$COMMON::glrlmode = "GLRL"; +# -------------------- #SVM model modes +$COMMON::mode0 = 0; +$COMMON::mode1 = 1; +$COMMON::mode2 = 2; +$COMMON::mode3 = 3; +$COMMON::mode4 = 4; +# -------------------- #tagging strategies +$COMMON::st0 = 0; +$COMMON::st1 = 1; +$COMMON::st2 = 2; +$COMMON::st3 = 3; +$COMMON::st4 = 4; +$COMMON::st5 = 5; +$COMMON::st6 = 6; +# -------------------- #softmax functions +$COMMON::softmax0 = 0; +$COMMON::softmax1 = 1; +# -------------------- #verbosity level +$COMMON::verbose0 = 0; +$COMMON::verbose1 = 1; +$COMMON::verbose2 = 2; +$COMMON::verbose3 = 3; +$COMMON::verbose4 = 4; +# -------------------- +$COMMON::in_valseparator = " "; #input separator +$COMMON::out_valseparator = " "; #output separator +$COMMON::pairseparator = " "; #pair separator +$COMMON::attvalseparator = ":"; #attribute-value separator +$COMMON::innerseparator = "_"; #value internal separator +$COMMON::d_separator = " "; #dictionary separator +$COMMON::valseparator = "~"; #value separator (cuidado porque joden el split de perl) +$COMMON::emptyword = "_"; #empty item +$COMMON::emptypos = "??"; #empty pos +$COMMON::unkpos = "*?"; #unknown pos +$COMMON::unkamb = "UNKNOWN"; #unknown ambiguity class +# -------------------- #ignore_line start character +$COMMON::IGNORE = "##"; +$COMMON::SMARK = ""; +# -------------------- #progress values +$COMMON::progress0 = 100; +$COMMON::progress1 = 1000; +$COMMON::progress2 = 10000; +$COMMON::progress3 = 10; + +# -------------------------------------------------------------------------------- + +sub report +{ + #description _ reports a give string onto STDOUT and FILE + #param1 _ report filename + #param2 _ string + + my $report = shift; + my $string = shift; + + print $string; + my $REPORT = new IO::File(">> $report") or die "Couldn't open report file: $report\n"; + print $REPORT $string; + $REPORT->close(); +} + +sub end_of_sentence +{ + #description _ returns true iif the given word is a candidate to end a sentence + #param1 _ given word + + my $word = shift; + + if(($word eq "") or ($word eq "") or ($word eq "")){ + return 1; + } + else + {return 0;} +} + +sub print_time +{ + #description _ given a time in seconds prints it in a HOUR:MIN:SEC + #param1 _ time in seconds + + my $nseconds = shift; + + my $hours = int($nseconds / 3600); + my $minutes = int(($nseconds % 3600) / 60); + my $seconds = $nseconds % 60; + print "REAL TIME: $hours hrs : $minutes min : $seconds sec\n"; +} + +sub print_time_file +{ + #description _ given a time in seconds prints it in a HOUR:MIN:SEC + #param1 _ time in seconds + #param2 _ output file handle + + my $nseconds = shift; + my $FILE = shift; + + my $hours = int($nseconds / 3600); + my $minutes = int(($nseconds % 3600) / 60); + my $seconds = $nseconds % 60; + print "TIME: $hours hrs : $minutes min : $seconds sec\n"; + print $FILE "TIME: $hours hrs : $minutes min : $seconds sec\n"; +} + +sub print_benchmark +{ + #description _ prints the benchmark + #param1 _ first benchmark + #param2 _ second benchmark + #@return _ time difference + + my $time1 = shift; + my $time2 = shift; + + #print STDERR "BENCHMARK TIME (1): ", Benchmark::timestr($time1) ,"\n"; + #print STDERR "BENCHMARK TIME (2): ", Benchmark::timestr($time2) ,"\n"; + printf STDERR "BENCHMARK TIME: %.4f\n", Benchmark::timestr(Benchmark::timediff($time2,$time1)); + + return (Benchmark::timediff($time2, $time1))->[1]; +} + +sub get_benchmark +{ + #description _ returns the benchmark time + #param1 _ first benchmark + #param2 _ second benchmark + #@return _ time difference + + my $time1 = shift; + my $time2 = shift; + + return (Benchmark::timediff($time2, $time1))->[1]; +} + +sub print_benchmark_file +{ + #description _ prints the benchmark + #param1 _ first benchmark + #param2 _ second benchmark + #param3 _ output file handle + + my $time1 = shift; + my $time2 = shift; + my $file = shift; + + my $FILE = new IO::File(">> $file") or die "Couldn't open report file: $file\n"; + + #print "BENCHMARK TIME (1): ", Benchmark::timestr($time1) ,"\n"; + #print "BENCHMARK TIME (2): ", Benchmark::timestr($time2) ,"\n"; + printf "BENCHMARK TIME: %.4f\n", Benchmark::timestr(Benchmark::timediff($time2,$time1)); + #print $FILE "BENCHMARK TIME (1): ", Benchmark::timestr($time1) ,"\n"; + #print $FILE "BENCHMARK TIME (2): ", Benchmark::timestr($time2) ,"\n"; + printf $FILE "BENCHMARK TIME: %.4f\n", Benchmark::timestr(Benchmark::timediff($time2,$time1)); + + $FILE->close(); +} + +sub compute_accuracy +{ + #description _ given nhits and nsamples, computes accuracy + #param1 _ nhits + #param2 _ nsamples + + my $hits = shift; + my $nsamples = shift; + + my $accuracy = 0; + if ($nsamples != 0) { $accuracy = $hits / $nsamples; } + + return $accuracy; +} + +sub print_accuracy +{ + #description _ given nhits and nsamples, computes accuracy and then prints it onto STDOUT + #param1 _ nhits + #param2 _ nsamples + + my $hits = shift; + my $nsamples = shift; + + my $accuracy = compute_accuracy($hits, $nsamples); + my $acc = sprintf("%.4f", $accuracy * 100) + 0; + + print "ACCURACY = $hits / $nsamples = $acc \%\n"; + + return $accuracy; +} + +sub print_acc +{ + #description _ given nhits and nsamples, computes accuracy and then prints it onto STDOUT + #param1 _ nhits + #param2 _ nsamples + + my $hits = shift; + my $nsamples = shift; + + my $accuracy = compute_accuracy($hits, $nsamples); + my $acc = sprintf("%.4f", $accuracy * 100) + 0; + + print "$acc"; + + return $accuracy; +} + +sub print_accuracy_file +{ + #description _ given nhits and nsamples, computes accuracy + #param1 _ nhits + #param2 _ nsamples + #param3 _ output file handle + + my $hits = shift; + my $nsamples = shift; + my $REPORT = shift; + + my $accuracy = 0; + + if ($nsamples != 0) { $accuracy = $hits / $nsamples; } + + print "ACCURACY = $hits / $nsamples = $accuracy\n"; + + print $REPORT "ACCURACY = $hits / $nsamples = $accuracy\n"; + + return $accuracy; +} + +sub do_hash +{ + #description _ responsible for generating a hash out from a list + #param1 _ list + #param2 _ : separator ('_' usually) + # ignored if empty -> every list item is a key + # values are set to 1 by default (boolean true) + #@return value -> hash reference + + my $rlist = shift; + my $separator = shift; + + my %hash; + + my $len = @{$rlist}; + my $i = 0; + my @item; + + while ($i < $len) { + if ($separator ne "") { + @item = split(/$separator/, $rlist->[$i]); + $hash{$item[0]} = $item[1]; + } + else { + $hash{$rlist->[$i]} = 1; + } + $i++; + } + + return \%hash; +} + +sub randomize{ + #description _ Randomly distributes a corpus into 3 sets... + # (training 60%; validation 20%; test 20%) + #param1 _ input corpus filename + #param2 _ training set filename + #param3 _ validation set filename + #param4 _ test set filename + #param5 _ percentage for training (60%) + #param6 _ percentage for validation (20%) + #param7 _ percentage for test (20%) + + my $smplset = shift; + my $trainset = shift; + my $valset = shift; + my $testset = shift; + my $Xtrain = shift; + my $Xval = shift; + my $Xtest = shift; + + my $CORPUS = new IO::File("< $smplset") or die "Couldn't open input file: $smplset\n"; + my $TRAIN = new IO::File("> $trainset") or die "Couldn't open output file: $trainset\n"; + my $VAL = new IO::File("> $valset") or die "Couldn't open output file: $valset\n"; + my $TEST = new IO::File("> $testset") or die "Couldn't open output file: $testset\n"; + + print "RANDOMLY SPLITTNG THE CORPUS...<$smplset> INTO\n"; + my $pctrain = $Xtrain / ($Xtrain + $Xval + $Xtest); + my $pcval = $Xval / ($Xtrain + $Xval + $Xtest); + my $pctest = $Xtest / ($Xtrain + $Xval + $Xtest); + print "<$trainset> - $pctrain% -\n<$valset> - $pcval% -\n<$pctest> - 20% -\n"; + + srand(); + my $rn; + + my $ntrain = 0; + my $nval = 0; + my $ntest = 0; + + while (defined(my $line = $CORPUS->getline())) { + $rn = rand ($Xtrain + $Xval + $Xtest); + if ($rn < $Xtrain) { print $TRAIN $line; $ntrain++; } + elsif (($rn >= $Xtrain) && ($rn < $Xtrain + $Xval)) { print $VAL $line; $nval++; } + elsif (($rn >= $Xtrain + $Xval) && ($rn < $Xtrain + $Xval + $Xtest)) { print $TEST $line; $ntest++; } + } + + $CORPUS->close(); + $TRAIN->close(); + $VAL->close(); + $TEST->close(); +} + +sub create_folders{ + #description _ Randomly splits a corpus into equal size folders + #param1 _ input corpus filename + #param2 _ folded corpus filename + #param3 _ number of folders + #param4 _ report file + #param5 _ verbosity + + my $corpus = shift; + my $folded = shift; + my $nfolders = shift; + my $report = shift; + my $verbose = shift; + + my $CORPUS = new IO::File("< $corpus") or die "Couldn't open input file: $corpus\n"; + my $FOLDED = new IO::File("> $folded") or die "Couldn't open output file: $folded\n"; + + if ($verbose > $COMMON::verbose1) { COMMON::report($report, "CREATING $nfolders FOLDERS from <$corpus> into <$folded>\n"); } + + srand(); + my $rn; + $rn = rand ($nfolders); + my $sentence = ""; + while (defined(my $line = $CORPUS->getline())) { + chomp($line); + $sentence .= sprintf("%d", $rn).$COMMON::in_valseparator.$line."\n"; + my @item = split($COMMON::in_valseparator, $line); + if (end_of_sentence($item[0])) { + print $FOLDED $sentence; + $sentence = ""; + $rn = rand ($nfolders); + } + } + + $CORPUS->close(); + $FOLDED->close(); +} + +sub pick_up_folders{ + #description _ Randomly splits a corpus into equal size folders + #param1 _ folded corpus filename + #param2 _ train corpus filename + #param3 _ test corpus filename + #param4 _ folder number + #param5 _ report file + #param6 _ verbosity + + my $folded = shift; + my $train = shift; + my $test = shift; + my $f = shift; + my $report = shift; + my $verbose = shift; + + my $FOLDED = new IO::File("< $folded") or die "Couldn't open input file: $folded\n"; + my $TRAIN = new IO::File("> $train") or die "Couldn't open output file: $train\n"; + my $TEST = new IO::File("> $test") or die "Couldn't open output file: $test\n"; + + if ($verbose > $COMMON::verbose1) { COMMON::report($report, "\n---------------------------------------------------------------------------------------------\nFOLDER $f\n---------------------------------------------------------------------------------------------\nPICKING UP <$train> and <$test> FOLDERS from $folded\n"); } + + while (defined(my $line = $FOLDED->getline())) { + chomp($line); + my @entry = split(/$COMMON::in_valseparator/, $line); + my $linef = shift(@entry); + my $new = join("$COMMON::in_valseparator", @entry); + if ($linef eq $f) { print $TEST "$new\n"; } + else { print $TRAIN "$new\n"; } + } + + $FOLDED->close(); + $TRAIN->close(); + $TEST->close(); +} + +sub show_progress_stdout +{ + #description _ prints progress bar onto standard error output + #param1 _ iteration number + #param2 _ print "." after N p1 iterations + #param3 _ print "#iter" after N p2 iterations + + my $iter = shift; + my $p1 = shift; + my $p2 = shift; + + if (($iter % $p1) == 0) { print "."; } + if (($iter % $p2) == 0) { print "$iter"; } +} + +sub show_progress_stderr +{ + #description _ prints progress bar onto standard error output + #param1 _ iteration number + #param2 _ print "." after N p1 iterations + #param3 _ print "#iter" after N p2 iterations + + my $iter = shift; + my $p1 = shift; + my $p2 = shift; + + if (($iter % $p1) == 0) { print STDERR "."; } + if (($iter % $p2) == 0) { print STDERR "$iter"; } +} + +sub show_progress +{ + #description _ prints progress bar onto standard error output + #param1 _ iteration number + #param2 _ print "." after N p1 iterations + #param3 _ print "#iter" after N p2 iterations + + my $iter = shift; + my $p1 = shift; + my $p2 = shift; + + if (($iter % $p1) == 0) { print STDERR "."; } + if (($iter % $p2) == 0) { print STDERR "$iter"; } +} + +sub reverse_list +{ + #description _ responsible for inverting the order of the elements inside a list + #param1 _ input list + #@return _ reverted list + + my $input = shift; + + my @output; + my $i = scalar(@{$input}); + while ($i > 0) { + push(@output, $input->[$i-1]); + $i--; + } + + return \@output; +} + +sub write_list +{ + #description _ sorts and writes a list onto a file + #param1 _ list reference + #param2 _ filename + #param3 _ verbosity + + my $list = shift; + my $file = shift; + my $verbose = shift; + + my $FILE = new IO::File("> $file") or die "Couldn't open output file: $file\n"; + + if ($verbose > 0) { print STDERR "STORING <$file>\n"; } + foreach my $elem (@{$list}) { + print $FILE "$elem\n"; + } + + $FILE->close(); +} + +sub read_list +{ + #description _ reads a list from a file + #param1 _ filename + + my $file = shift; + + my @list; + + my $FILE = new IO::File("< $file") or die "Couldn't open input file: $file\n"; + + while (defined(my $line = $FILE->getline())) { + chomp($line); + push(@list, $line); + } + + $FILE->close(); + + return(\@list); +} + + +sub reverse_file +{ + #description _ reverses a file (equivalent to the 'tac' command) + #param1 _ input filename + #param2 _ output filename + + my $infile = shift; + my $outfile = shift; + + #system ("tac $infile > $outfile"); + + my $IN = new IO::File("< $infile") or die "Couldn't open input file: $infile\n"; + my $OUT = new IO::File("> $outfile") or die "Couldn't open output file: $outfile\n"; + + my @content; + while (defined(my $line = $IN->getline())) { + unshift(@content, $line); + } + + foreach my $line (@content) { + print $OUT $line; + } + + $IN->close(); + $OUT->close(); +} + +1; diff --git a/tools/train/svmtools/SVMTool/DICTIONARY.pm b/tools/train/svmtools/SVMTool/DICTIONARY.pm new file mode 100644 index 000000000..7c1c0ec45 --- /dev/null +++ b/tools/train/svmtools/SVMTool/DICTIONARY.pm @@ -0,0 +1,466 @@ +package DICTIONARY; + +#Copyright (C) 2004 Jesus Gimenez and Lluis Marquez + +#This library is free software; you can redistribute it and/or +#modify it under the terms of the GNU Lesser General Public +#License as published by the Free Software Foundation; either +#version 2.1 of the License, or (at your option) any later version. + +#This library is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +#Lesser General Public License for more details. + +#You should have received a copy of the GNU Lesser General Public +#License along with this library; if not, write to the Free Software +#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +use strict; +use IO; +use Data::Dumper; +use SVMTool::COMMON; + +# ====================================================================================== +# ================================= DICTIONARY METHODS ================================= +# ====================================================================================== + +sub new +{ + #description _ creates, given a dictionary file name, the corresponding + # instance of a dictionary object. + #param1 _ dictionary file name + #param2 _ ambiguous pos list file + #param3 _ unknown pos list file + + my $class = shift; + my $dict = shift; + my $fambp = shift; + my $funkp = shift; + + my $rdict = {}; + + $rdict = { "nwords" => 0, "dict" => {}, rAP => 0, rUP => 0, rAMBP => 0, rUNKP => 0, AVGF => 0 }; + + bless $rdict, $class; + + if ($dict ne "0") { + my $F = 0; + my $N = 0; + my $DICTIONARY = new IO::File("< $dict") or die "Couldn't open input file: $dict\n"; + while (defined(my $line = $DICTIONARY->getline())) { + chomp($line); + my @entrada = split(/ +/, $line); + my $word = $entrada[0]; + $F += $entrada[1]; + $N++; + shift @entrada; + my $newline = join($COMMON::d_separator, @entrada); + $rdict->write_entry($word, $newline); + } + $DICTIONARY->close(); + $rdict->{AVGF} = $F / $N; #average_frequency + } + + if (-e $fambp) { + $rdict->{rAP} = COMMON::read_list($fambp); + $rdict->{rAMBP} = COMMON::do_hash($rdict->{rAP}, ""); + } + else { + $rdict->{rAP} = (); + $rdict->{rAMBP} = {}; + } + + if (-e $funkp) { + $rdict->{rUP} = COMMON::read_list($funkp); + $rdict->{rUNKP} = COMMON::do_hash($rdict->{rUP}, ""); + } + else { + $rdict->{rUP} = (); + $rdict->{rUNKP} = {}; + } + + return $rdict; +} + +sub write_entry +{ + #description _ writes the given entry for the given word onto the given dictionary. + #param1 _ dictionary reference (implicit) + #param2 _ word + #param3 _ entry + + my $rdict = shift; + my $word = shift; + my $entry = shift; + + my @l = split($COMMON::d_separator, $entry); + $rdict->{"dict"}->{$word} = \@l; + $rdict->{"nwords"}++; +} + +sub read_entry +{ + #description _ given a word returns its dictionary entry + #param1 _ dictionary object reference (implicit) + #param2 _ word to retrieve + + my $rdict = shift; + my $word = shift; + + if (defined($rdict->{"dict"}->{$word})) { return(@{$rdict->{"dict"}->{$word}}); } + else { return (); } +} + +sub get_potser_old +{ + #description _ given a word returns its dictionary "potsers". + #param1 _ dictionary object reference (implicit) + #param2 _ word + + my $rdict = shift; + my $word = shift; + + my @entry = $rdict->read_entry($word); + my $rpotser=[]; + + if (defined(@entry)) { + my $n = $entry[1]; + my $i = 2; + + while ($i <= ($n * 2) ) + { + push(@{$rpotser}, $entry[$i]); + $i+=2; + } + } + + return($rpotser); +} + + +sub get_potser +{ + #description _ given a word returns its dictionary "potsers". + # (modified to be robust on dictionary errors) + #param1 _ dictionary object reference (implicit) + #param2 _ word + + my $rdict = shift; + my $word = shift; + + my @entry = $rdict->read_entry($word); + my @ps; + + my $n = $entry[1]; + my $i = 2; + + my $stop = 0; + while (($i <= ($n * 2)) && ($stop == 0)) { + if (exists($rdict->{rAMBP}->{$entry[$i]})) { #check only possibly ambiguous POS + push(@ps, $entry[$i]); + } + else { #is it a DICTIONARY ERROR? + my $mft = $rdict->get_mft($word); + my $pos = $entry[$i]; + if ($entry[$i] eq $mft) { #ERROR ~ to 27249 3 IN 2 JJ 1 TO 27246 + @ps = ($mft); + $stop = 1; + } + } + $i+=2; + } + + return(\@ps); +} + +sub get_real_potser +{ + #description _ given a word returns its dictionary "potsers". + # (modified to be robust on dictionary errors) + #param1 _ dictionary object reference (implicit) + #param2 _ word + + my $rdict = shift; + my $word = shift; + + my @entry = $rdict->read_entry($word); + my @ps; + + if ((scalar(@entry) > 0) and ($entry[1] != 0)) { #KNOWN WORD + my $n = $entry[1]; + my $i = 2; + + my $stop = 0; + while (($i <= ($n * 2)) && ($stop == 0)) { + if (exists($rdict->{rAMBP}->{$entry[$i]})) { #check only possibly ambiguous POS + push(@ps, $entry[$i]); + } + else { #is it a DICTIONARY ERROR? + my $mft = $rdict->get_mft($word); + my $pos = $entry[$i]; + if ($entry[$i] eq $mft) { #ERROR ~ to 27249 3 IN 2 JJ 1 TO 27246 + @ps = ($mft); + $stop = 1; + } + } + $i+=2; + } + + return(\@ps); + } + else { #UNKNOWN WORD + if ($word =~ /^[0-9]+$/) { return $rdict->get_real_potser("\@CARD"); } + elsif ($word =~ /^[0-9]+[\.\,\!\?:]+$/) { return $rdict->get_real_potser("\@CARDPUNCT"); } + elsif ($word =~ /^[0-9]+[:\.\,\/\\\-][0-9\.\,\-\\\/]+$/) { return $rdict->get_real_potser("\@CARDSEPS"); } + elsif ($word =~ /^[0-9]+[^0-9]+.*$/) { return $rdict->get_real_potser("\@CARDSUFFIX"); } + else { return $rdict->{rUP}; } + } +} + +sub get_mft +{ + #description _ given a word returns the most frequent tag. + #param1 _ dictionary object reference (implicit) + #param2 _ word + + my $rdict = shift; + my $word = shift; + + my @entry = $rdict->read_entry($word); + + if (scalar(@entry) == 0) { return ""; } + + my $mft; + my $n = $entry[1]; + my $i = 2; + my $max = -1; + while ($i <= ($n * 2) ) + { + if ($entry[$i+1] > $max) { $mft = $entry[$i]; $max = $entry[$i+1]; } + $i+=2; + } + + return($mft); +} + +sub frequent_word +{ + #description _ returns true only if the window core word is a reasonably frequent one + # (modified for dictionary error robustness) + #param1 _ dictionary object reference (implicit) + #param2 _ candidate word + + my $rdict = shift; + my $word = shift; + + my @entrada = $rdict->read_entry($word); + + if ($entrada[0] > $rdict->{AVGF}) { return 1; } + else { return 0; } +} + +sub ambiguous_word +{ + #description _ returns true only if the window core word is a POS ambiguous one + # (modified for dictionary error robustness) + #param1 _ dictionary object reference (implicit) + #param2 _ candidate word + + my $rdict = shift; + my $word = shift; + + my $mft = $rdict->get_mft($word); + my @entrada = $rdict->read_entry($word); + + if (exists($rdict->{rAMBP}->{$mft})) { return ($entrada[1] > 1); } + else { return 0; } +} + +sub unknown_word +{ + #description _ returns true only if the window core word is an unknown one + # (not in the dictionary) + #param1 _ dictionary object reference (implicit) + #param2 _ candidate word + + my $rdict = shift; + my $word = shift; + + return ((!(exists($rdict->{"dict"}->{$word}))) or ($rdict->{"dict"}->{$word}->[1] == 0)); +} + +sub get_nwords +{ + #description _ returns the number of words in the dictionary + #param1 _ dictionary object reference (implicit) + + my $rdict = shift; + + return($rdict->{nwords}); +} + + +sub find_ambp +{ + #description _ finds ambiguous parts-of-speech, given a generated dictionary + # (trick: look up ambiguous entries) + #param1 _ DICTIONARY filename + + my $dict = shift; + + my %AP; + my $rdict = new DICTIONARY($dict, "", ""); + + foreach my $word (keys %{$rdict->{"dict"}}) { + my @entry = $rdict->read_entry($word); + if ($entry[1] > 1) { #word is ambiguous + my $i = 2; + while ($i <= ($entry[1] * 2) ) + { + $AP{$entry[$i]} = 1; + $i+=2; + } + } + } + + my @AP; + foreach my $pos (keys %AP) { + push(@AP, $pos); + } + + my @SAP = sort @AP; + + return (\@SAP); +} + +sub find_unkp +{ + #description _ finds open-class parts-of-speech, given a generated dictionary + # (trick: look up words appearing just once) + #param1 _ DICTIONARY filename + + my $dict = shift; + + my %UP; + my $rdict = new DICTIONARY($dict, "", ""); + + foreach my $word (keys %{$rdict->{"dict"}}) { + my @entry = $rdict->read_entry($word); + if ($entry[0] == 1) { #word appears just once + $UP{$entry[2]} = 1; + } + } + + my @UP; + foreach my $pos (keys %UP) { + push(@UP, $pos); + } + + my @SUP = sort @UP; + + return (\@SUP); +} + +sub determine_eq_classes +{ + #description _ finds classes of equivalence for all parts-of-speech in a given list; + # a class of equivalence groups classes among which ambiguity conflicts arise. + #param1 _ dictionary object reference (implicit) + #param2 _ part-of-speech list reference + #param3 _ Eratio (to compute classes of equivalence in unsupervised mode) (input) + #@return _ classes of equivalence hash reference + + my $rdict = shift; + my $rpos = shift; + my $Eratio = shift; + + my %reqC; + foreach my $pos (@{$rpos}) { #initialize classes of equivalence + my %auxh; + #foreach my $pos (@{$rpos}) { + # $auxh{$pos} = 0; + #} + $reqC{$pos} = \%auxh; + } + + #my $M = 0; my $P = 0; + #foreach my $word (keys %{$rdict->{"dict"}}) { + # my @entry = $rdict->read_entry($word); + # if ($entry[1] > 1) { $M += $entry[0]; $P++; } + #} + #print "#AMBWORDS = $M :: DISTINCT = $P :: AVG = ", $M/$P, "\n"; + #my $AVG = $M / $P; + + foreach my $word (keys %{$rdict->{"dict"}}) { + my @entry = $rdict->read_entry($word); + + if ($word !~ /^\@CARD.*/) { + if ($entry[1] > 1) { #word is ambiguous + my $i = 2; + while ($i <= ($entry[1] * 2) ) { + my $j = 2; + while ($j <= ($entry[1] * 2) ) { + if ($i != $j) { + $reqC{$entry[$i]}->{$entry[$j]}++; + } + $j+=2; + } + $i+=2; + } + } + } + } + +if (0) { + foreach my $pos (sort keys %reqC) { #CLASS FILTERING + my $N; + my %aux; + foreach my $v (keys %{$reqC{$pos}}) { $N += $reqC{$pos}->{$v}; } + my $Nratio = $N / scalar(keys %{$reqC{$pos}}) / 3; + foreach my $v (keys %{$reqC{$pos}}) { + #print "$pos --> [$v] :: ", $reqC{$pos}->{$v}, " [", $Nratio, "]"; + if ($reqC{$pos}->{$v} >= $Nratio) { #CLASS FILTERING + #push(@aux, $v); + $aux{$v} = $reqC{$pos}->{$v}; + #print " ***"; + } + #print "\n"; + } + $reqC{$pos} = \%aux; + } +} + + foreach my $pos (sort keys %reqC) { #CLASS RE-BALANCING NEG(X,Y) -> POS(Y,X) + foreach my $v (keys %{$reqC{$pos}}) { + $reqC{$v}->{$pos} = $reqC{$pos}->{$v}; + } + } + + foreach my $pos (sort keys %reqC) { # output + my @aux; + foreach my $v (keys %{$reqC{$pos}}) { push(@aux, $v); } + my @aux2 = sort @aux; + $reqC{$pos} = \@aux2; + } + + return \%reqC; +} + +sub tag +{ + #description _ if the given word is unambiguous returns its associated tag, + # otherwise returns 'emptypos' + #param1 _ dictionary object reference (implicit) + #param2 _ word + + my $rdict = shift; + my $word = shift; + + my @entrada = $rdict->read_entry($word); + + if ($entrada[1] > 1) { return $COMMON::unkpos; } + else { return $rdict->get_mft($word); } +} + +1; diff --git a/tools/train/svmtools/SVMTool/ENTRY.pm b/tools/train/svmtools/SVMTool/ENTRY.pm new file mode 100644 index 000000000..36e8dc7ea --- /dev/null +++ b/tools/train/svmtools/SVMTool/ENTRY.pm @@ -0,0 +1,296 @@ +package ENTRY; + +#Copyright (C) 2004 Jesus Gimenez and Lluis Marquez + +#This library is free software; you can redistribute it and/or +#modify it under the terms of the GNU Lesser General Public +#License as published by the Free Software Foundation; either +#version 2.1 of the License, or (at your option) any later version. + +#This library is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +#Lesser General Public License for more details. + +#You should have received a copy of the GNU Lesser General Public +#License along with this library; if not, write to the Free Software +#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +use strict; +use Data::Dumper; +use SVMTool::COMMON; + +sub read_sentence_stdin +{ #description _ reads input from STDIN + #param1 _ EOS usage? (1: YES, 0: NO) + #@return _ (stdin [STDIN sentence as is], in [STDIN sentence prepared for SVMTool], stop condition) + + my $EOS = shift; + + my @STDIN_LR; + my @INPUT_LR; + my $stop = 0; + while (!$stop) { + if (my $entry = ) { + chomp($entry); + my @line = split($COMMON::in_valseparator, $entry); + if ($EOS) { + if ($entry ne $COMMON::SMARK) { push(@STDIN_LR, $entry); } + if (($line[0] ne $COMMON::IGNORE) and ($line[0] ne "") and ($entry ne $COMMON::SMARK)) { + my $input = new ENTRY($line[0], $COMMON::emptypos, 0, \@line); + push(@INPUT_LR, $input); + } + $stop = ($entry eq $COMMON::SMARK); + } + else { + push(@STDIN_LR, $entry); + if (($line[0] ne $COMMON::IGNORE) and ($line[0] ne "")) { + my $input = new ENTRY($line[0], $COMMON::emptypos, 0, \@line); + push(@INPUT_LR, $input); + } + $stop = (COMMON::end_of_sentence($line[0])); + } + } + else { $stop = 2; } + } + + return (\@STDIN_LR, \@INPUT_LR, $stop == 2); +} + +sub read_sentence_file +{ #description _ reads input from STDIN + #param1 _ filehandle + #@return _ (sentence as is, sentence prepared for SVMT, stop condition) + + my $INPUT = shift; + + my @STDIN_LR; + my @INPUT_LR; + my $stop = 0; + while (!$stop) { + if (defined(my $entry = $INPUT->getline())) { + chomp($entry); + my @line = split($COMMON::in_valseparator, $entry); + push(@STDIN_LR, $entry); + if (($line[0] ne $COMMON::IGNORE) and ($line[0] ne "")) { + my $input = new ENTRY($line[0], $COMMON::emptypos, 0, \@line); + push(@INPUT_LR, $input); + } + $stop = COMMON::end_of_sentence($line[0]); + } + else { $stop = 2; } + } + + return (\@STDIN_LR, \@INPUT_LR, $stop == 2); +} + +# ====================================================================================== +# =============================== ENTRY OBJECT METHODS ================================= +# ====================================================================================== + +sub new +{ + #description _ creates a new ENTRY object + #param1 _ word + #param2 _ pos + #param3 _ pos-prediction hash reference + #param4 _ whole input line (list) + + my $class = shift; #implicit parameter + my $word = shift; + my $pos = shift; + my $pp = shift; + my $line = shift; + + my @l; + if (defined(@{$line})) { + my $j = 0; + while ($j < scalar(@{$line})) { + push(@l, $line->[$j]); + $j++; + } + } + my $rout = { word => $word, pos => $pos, pp => $pp, COLS => \@l }; + bless $rout, $class; + + return $rout; +} + +sub print +{ + #description _ prints the contents of an ENTRY object + + my $rout = shift; #implicit parameter + + print "\n====================================\n"; + print "WORD: \t", $rout->{word}, "\n"; + print "POS: \t", $rout->{pos}, "\n"; + if (defined($rout->{pp})) { + print "PREDICTIONS:\n"; + foreach my $elem (keys %{$rout->{pp}}) { + print "\t", $elem, " -> ", $rout->{pp}->{$elem}, "\n"; + } + } +} + +sub sort_pos +{ + #description _ returns a sorted list of predictions + + my $rout = shift; #implicit parameter + my @sorted; + my %REV; + + if (defined($rout->{pp})) { + foreach my $elem (keys %{$rout->{pp}}) { + $REV{$rout->{pp}->{$elem}} = $elem; + } + foreach my $pred (sort{$b <=> $a} keys %REV) { + push(@sorted, $REV{$pred}); + } + } + + return \@sorted; +} + +sub sort_pred +{ + #description _ returns a sorted list of predictions + + my $rout = shift; #implicit parameter + my @sorted; + my %REV; + + if (defined($rout->{pp})) { + foreach my $elem (keys %{$rout->{pp}}) { + $REV{$rout->{pp}->{$elem}} = $elem; + } + foreach my $pred (sort{$b <=> $a} keys %REV) { + push(@sorted, $pred); + } + } + + return \@sorted; +} + +sub get_word +{ + #description _ returns word + #@return _ word + + my $rout = shift; #implicit parameter + + return $rout->{word}; +} + +sub get_pos +{ + #description _ returns pos + #@return _ pos + + my $rout = shift; #implicit parameter + + return $rout->{pos}; +} + +sub get_pp +{ + #description _ returns pos-prediction hash + #@return _ pp + + my $rout = shift; #implicit parameter + + return $rout->{pp}; +} + +sub get_cols +{ + #description _ returns COLUMNS list + #@return _ COLS + + my $rout = shift; #implicit parameter + + return $rout->{COLS}; +} + +sub set_word +{ + #description _ sets word + #param1 _ word + + my $rout = shift; #implicit parameter + my $word = shift; + + $rout->{word} = $word; +} + +sub set_pos +{ + #description _ sets pos + #param1 _ pos + + my $rout = shift; #implicit parameter + my $pos = shift; + + $rout->{pos} = $pos; +} + +sub set_pp +{ + #description _ sets pos-prediction hash + #param1 _ pp + + my $rout = shift; #implicit parameter + my $pp = shift; + + $rout->{pp} = $pp; +} + +sub set_COLS +{ + #description _ sets COLUMNS list + #param1 _ COLS + + my $rout = shift; #implicit parameter + my $cols = shift; + + $rout->{COLS} = $cols; +} + +sub get_pred +{ + #description _ returns prediction for the winner pos + #@return _ prediction + + my $rout = shift; #implicit parameter + + return $rout->{pp}->{$rout->{pos}}; +} + +sub get_pred_2 +{ + #description _ returns prediction for a given pos + #param1 _ pos + #@return _ prediction + + my $rout = shift; #implicit parameter + my $pos = shift; + + return $rout->{pp}->{$pos}; +} + +sub push_pp +{ + #description _ pushes pos-prediction onto the pp hash + #param1 _ pos + #param2 _ prediction + + my $rout = shift; #implicit parameter + my $pos = shift; + my $pred = shift; + + $rout->{pp}->{$pos} = $pred; +} + +1; + diff --git a/tools/train/svmtools/SVMTool/LEMMATIZER.pm b/tools/train/svmtools/SVMTool/LEMMATIZER.pm new file mode 100644 index 000000000..dff53c80d --- /dev/null +++ b/tools/train/svmtools/SVMTool/LEMMATIZER.pm @@ -0,0 +1,59 @@ +package LEMMATIZER; + +use SVMTool::COMMON; + +# ------------------------------------- SUBS ------------------------------------------ + +sub LT_load +{ + #description _ loads a dictionary + #param1 _ dictionary filename + #param2 _ verbose + #@return _ dictionary hash ref + + my $dict = shift; + my $verbose = shift; + + my $FDICT = new IO::File("< $dict") or die "Couldn't open dictionary file: $dict\n"; + + my %DICT; + my $iter; + while (defined (my $line = <$FDICT>)) { + #abandoned VBD abandon + #print $line; + chomp ($line); + my @entry = split(" ", $line); + $DICT{$entry[0].$COMMON::out_valseparator.$entry[1]} = $entry[2]; + $iter++; + if ($verbose) { + if (($iter%10000) == 0) { print STDERR "."; } + if (($iter%100000) == 0) { print STDERR "$iter"; } + } + } + + $FDICT->close(); + + if ($verbose) { print STDERR "...$iter forms [DONE]\n"; } + + return \%DICT; +} + +sub LT_tag +{ + #description _ given a word/pos pair returns the lemma according to the given dictionary + #param1 _ dictionary + #param2 _ word + #param3 _ pos + + my $dict = shift; + my $word = shift; + my $pos = shift; + + if (exists($dict->{$word.$COMMON::out_valseparator.$pos})) { return $dict->{$word.$COMMON::out_valseparator.$pos}; } + else { + if (exists($dict->{lc($word).$COMMON::out_valseparator.$pos})) { return $dict->{lc($word).$COMMON::out_valseparator.$pos}; } + else { return $word; } + } +} + +1; diff --git a/tools/train/svmtools/SVMTool/LGPL.txt b/tools/train/svmtools/SVMTool/LGPL.txt new file mode 100644 index 000000000..43c496d29 --- /dev/null +++ b/tools/train/svmtools/SVMTool/LGPL.txt @@ -0,0 +1,459 @@ + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS diff --git a/tools/train/svmtools/SVMTool/MAPPING.pm b/tools/train/svmtools/SVMTool/MAPPING.pm new file mode 100644 index 000000000..6ba1889e4 --- /dev/null +++ b/tools/train/svmtools/SVMTool/MAPPING.pm @@ -0,0 +1,371 @@ +package MAPPING; + +#Copyright (C) 2004 Jesus Gimenez and Lluis Marquez + +#This library is free software; you can redistribute it and/or +#modify it under the terms of the GNU Lesser General Public +#License as published by the Free Software Foundation; either +#version 2.1 of the License, or (at your option) any later version. + +#This library is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +#Lesser General Public License for more details. + +#You should have received a copy of the GNU Lesser General Public +#License along with this library; if not, write to the Free Software +#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +use strict; +use IO; +use Data::Dumper; +use SVMTool::COMMON; + +# ==================================== MAPPING ========================================= + +sub get_size +{ + my $file = shift; + + my $FILE = new IO::File("< $file") or die "Couldn't open input file: $file\n"; + my $size; + + while (defined(my $line = $FILE->getline())) { + $size++; + } + + $FILE->close(); + + return $size; +} + +sub filter_mapping +{ + #description _ creates a MAPPING file + #param1 _ SAMPLE MAPPING structure reference + #param2 _ mapping min frequency + #param3 _ mapping max number of entries + #param4 _ report file + #param5 _ verbosity [0..3] + + my $rM = shift; + my $minfr = shift; + my $mapsize = shift; + my $report = shift; + my $verbose = shift; + + if ($verbose > $COMMON::verbose1) { COMMON::report($report, "FILTERING MAPING (minfreq = $minfr :: maxmapsize = $mapsize)\n"); } + + if ($verbose > $COMMON::verbose2) { COMMON::report($report, "MAPPING SIZE (1) -> size == ".scalar(keys %{$rM})."\n"); } + + if ($minfr > 1) { + $rM = reduce_mapping($rM, $minfr); + if ($verbose > $COMMON::verbose2) { COMMON::report($report, "REDUCING MAPPING ($minfr) -> size == ".scalar(keys %{$rM})."\n"); } + } + else { $minfr = 1; } + my $i = $minfr + 1; + while (scalar(keys %{$rM}) > $mapsize) { + $rM = reduce_mapping($rM, $i); + if ($verbose > $COMMON::verbose2) { COMMON::report($report, "REDUCING MAPPING ($i) -> size == ".scalar(keys %{$rM})."\n"); } + $i++; + } + + return $rM; +} + +sub reduce_mapping +{ + #description _ creates a MAPPING file + #param1 _ mapping hash reference + #param2 _ filtering coefficient + + my $rM = shift; + my $f = shift; + + my %M; + + foreach my $k (keys %{$rM}) { + if ($rM->{$k} >= $f) { $M{$k} = $rM->{$k}; } + } + + %{$rM} = (); + + return(\%M); +} + +sub make_mapping +{ + #description _ creates a MAPPING file + #param1 _ SAMPLE SET filename + #param2 _ report file + #param3 _ verbosity [0..3] + #@return _ SAMPLE MAPPING structure reference + + my $smplset = shift; + my $report = shift; + my $verbose = shift; + + if ($verbose > $COMMON::verbose1) { COMMON::report($report, "MAKING MAPPING from <$smplset>..."); } + + + my $SMPLF = new IO::File("< $smplset") or die "Couldn't open input file: $smplset\n"; + + my %MAP; + while (defined(my $line = $SMPLF->getline())) { + chomp($line); + my @entry = split(" ", $line); + my $size = scalar(@entry); + my $i = 1; + while ($i < $size) { + if (exists($MAP{$entry[$i]})) { $MAP{$entry[$i]}++; } + else { $MAP{$entry[$i]} = 1; } + $i++; + } + } + + $SMPLF->close(); + + if ($verbose > $COMMON::verbose1) { COMMON::report($report, " [DONE]\n"); } + + return \%MAP; +} + +sub write_mapping +{ + #description _ creates a MAPPING file + #param1 _ SAMPLE MAPPING structure reference + #param2 _ SAMPLE MAPPING filename + #param3 _ report file + #param4 _ verbosity [0..3] + + my $rM = shift; + my $map = shift; + my $report = shift; + my $verbose = shift; + + if ($verbose > $COMMON::verbose1) { COMMON::report($report, "WRITING MAPPING <$map>..."); } + + my $MAPF = new IO::File("> $map") or die "Couldn't open output file: $map\n"; + + my $i = 1; + my $freq = -1; + foreach my $k (sort keys %{$rM}) { + if (($freq == -1) or ($rM->{$k} < $freq)) { $freq = $rM->{$k}; } + print $MAPF $i." ".$k." ".$rM->{$k}."\n"; + $i++; + } + + if ($verbose > $COMMON::verbose1) { COMMON::report($report, " [FREQ = ".$freq."] :: [SIZE = ".(scalar(keys %{$rM}))."] [DONE]\n"); } + + $MAPF->close(); +} + +sub map_set +{ + #description _ MAPS a set given set file and a MAPPING file + #param1 _ SAMPLE SET filename + #param2 _ SAMPLE MAPPING filename + #param3 _ TARGET SAMPLE MAPPED filename + #param4 _ report file + #param5 _ verbosity [0..3] + + my $smplset = shift; + my $smplmap = shift; + my $smpldsf = shift; + my $report = shift; + my $verbose = shift; + + if ($verbose > $COMMON::verbose1) { COMMON::report($report, "MAPPING DATA FEATURES from <$smplset> to <$smpldsf>..."); } + if ($verbose > $COMMON::verbose2) { COMMON::report($report, "\n"); } + + + my $SMPLF = new IO::File("< $smplset") or die "Couldn't open input file: $smplset\n"; + my $MAPF = new IO::File("< $smplmap") or die "Couldn't open input file: $smplmap\n"; + my $DSFF = new IO::File("> $smpldsf") or die "Couldn't open output file: $smpldsf\n"; + + my $MAP = read_mapping_B($smplmap); + + my $iter = 0; + while (defined(my $line = $SMPLF->getline())) { + chomp($line); + my @entry = split(" ", $line); + my $i = 1; + my %features; + while ($i < scalar(@entry)) { # JOIN + UNIQ + if (exists($MAP->{$entry[$i]})) { $features{$MAP->{$entry[$i]}} = 1; } + $i++; + } + my @sample; + push(@sample, $entry[0]); + foreach my $f (sort {$a <=> $b} keys %features) { # SORT + push(@sample, $f.":".$features{$f}); + } + print $DSFF join(" ", @sample), "\n"; + $iter++; + if ($verbose > $COMMON::verbose1) { COMMON::show_progress($iter, $COMMON::progress1, $COMMON::progress2); } + } + + if ($verbose > $COMMON::verbose1) { COMMON::report($report, "..$iter [DONE]\n"); } + + $SMPLF->close(); + $DSFF->close(); +} + +sub read_mapping +{ + #description _ reads a mapping file from disk onto memory + #param1 _ MAPPING FILE (input) + #@return _ mapping hash reference (*) [see options...] + # return only reverse mapping -> attrib.name + + my $smplmap = shift; + + my $SMPLMAP = new IO::File("< $smplmap") or die "Couldn't open input file: $smplmap\n"; + my %MAP; + while (defined(my $m = $SMPLMAP->getline())) { + chomp $m; + my @line = split(" ",$m); + $MAP{$line[0]} = $line[1]; + } + $SMPLMAP->close(); + + return \%MAP; +} + +sub read_mapping_B +{ + #description _ reads a mapping file from disk onto memory + #param1 _ MAPPING FILE (input) + #@return _ mapping hash reference (*) [see options...] + # return mapping attrib.name -> + + my $smplmap = shift; + + my $SMPLMAP = new IO::File("< $smplmap") or die "Couldn't open input file: $smplmap\n"; + my %MAP; + while (defined(my $m = $SMPLMAP->getline())) { + chomp $m; + my @line = split(" ",$m); + $MAP{$line[1]} = $line[0]; + } + $SMPLMAP->close(); + + return \%MAP; +} + +sub read_mapping_C +{ + #description _ reads a mapping file from disk onto memory + #param1 _ MAPPING FILE (input) + #@return _ mapping hash reference (*) [see options...] + # return only reverse mapping -> attrib.name + + my $smplmap = shift; + + my $SMPLMAP = new IO::File("< $smplmap") or die "Couldn't open input file: $smplmap\n"; + my %MAP; + while (defined(my $m = $SMPLMAP->getline())) { + chomp $m; + my @line = split(" ",$m); + $MAP{$line[1]} = $line[2]; + } + $SMPLMAP->close(); + + return \%MAP; +} + +sub map_sample +{ + #description _ runs a given test/val set, given a mapping, through the + # given models (assuming they've already been learned). + #param1 _ SAMPLE attribute list reference (input) + #param2 _ SAMPLE MAPPING hash reference (input) + #@return _ binarized sample (output) + + my $rsample = shift; + my $rmap = shift; + + my $pos = shift(@{$rsample}); + my @dsf; + + push(@dsf, $pos); + foreach my $elem (@{$rsample}) { + my $bin; + if (exists($rmap->{$elem})) { $bin = $rmap->{$elem}.":1"; push(@dsf, $bin); } + } + + return \@dsf; +} + + +sub load_mapping #OUT OF DATE +{ + #description _ loads a MAPPING file (discarding attributes under a certain frequency) + #param1 _ SOURCE SAMPLE MAPPING filename + #param2 _ min frequency + + my $smplmap = shift; + my $min = shift; + + print "LOADING MAPPING <$smplmap>\n"; + + my $MAP = new IO::File("< $smplmap") or die "Couldn't open input file: $smplmap\n"; + my @M; + my $i = 1; + while (defined(my $line = $MAP->getline())) { + my @entry = split(" ", $line); + my @l = ($entry[1], $entry[2]); + if ( $entry[2] >= $min) { $M[$i - 1] = \@l; $i++; } + } + $MAP->close(); + + print "-> size == ", scalar(@M), "\n"; + + return(\@M); +} + +sub save_mapping #OUT OF DATE +{ + #description _ saves a MAPPING file + #param1 _ TARGET SAMPLE MAPPING filename + #param2 _ mapping list reference + + my $smplmap = shift; + my $rM = shift; + + print "SAVING MAPPING <$smplmap>\n"; + + my $MAP = new IO::File("> $smplmap") or die "Couldn't open output file: $smplmap\n"; + + my $i = 0; + while ($i < scalar(@{$rM})) { + print $MAP $i+1, " ", $rM->[$i]->[0], " ", $rM->[$i]->[1], "\n"; + $i++; + } + $MAP->close(); + + return (scalar(@{$rM})); +} + +sub extend +{ + #description _ extends a MAPPING file + #param1 _ input mapping filename + #param2 _ set of new features (hash ref) + #param3 _ extended mapping filename + + my $map = shift; + my $rNEW = shift; + my $newmap = shift; + + my $rM = read_mapping_C($map); + + foreach my $k (keys %{$rNEW}) { + if (exists($rM->{$k})) { die "FEATURE ALREADY EXISTED!!\n"; } + else { $rM->{$k} = $rNEW->{$k}; } + } + + write_mapping($rM, $newmap, "", 0); +} + +1; diff --git a/tools/train/svmtools/SVMTool/STATS.pm b/tools/train/svmtools/SVMTool/STATS.pm new file mode 100644 index 000000000..7ca44624e --- /dev/null +++ b/tools/train/svmtools/SVMTool/STATS.pm @@ -0,0 +1,355 @@ +package STATS; + +#Copyright (C) 2004 Jesus Gimenez and Lluis Marquez + +#This library is free software; you can redistribute it and/or +#modify it under the terms of the GNU Lesser General Public +#License as published by the Free Software Foundation; either +#version 2.1 of the License, or (at your option) any later version. + +#This library is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +#Lesser General Public License for more details. + +#You should have received a copy of the GNU Lesser General Public +#License along with this library; if not, write to the Free Software +#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +use strict; +use IO; +use Data::Dumper; +use SVMTool::COMMON; +use SVMTool::DICTIONARY; + +# ------------------------------------------------------------------------------------------ +# COMPUTE STATISTICS + +sub do_statistics +{ + #description _ compute some figures, percentages... + #param1 _ model + #param2 _ input filename + #param3 _ output filename + #param4 _ verbosity (0..3) + #@return _ stat structure reference + + my $model = shift; + my $input = shift; + my $output = shift; + my $verbose = shift; + + if ($verbose > $COMMON::verbose1) { print "EVALUATING <$output> vs. <$input> on model <$model>...\n"; } + + my $dict = $model.".".$COMMON::DICTEXT; + my $fambp = $model.".".$COMMON::AMBPEXT; + my $funkp = $model.".".$COMMON::UNKPEXT; + + my $DIE = 0; + + my $INPUT = new IO::File("< $input") or die "Couldn't open input file: $input\n"; + my $OUTPUT = new IO::File("< $output") or $DIE = 1; + + if ($DIE) { print "\n"; die "Couldn't open input file: $output\n"; } + + #dictionary generation + my $rdict = new DICTIONARY($dict, $fambp, $funkp); + + my $nsamples = 0; + my $unknown = 0; + my $ambiguous = 0; + my $nhits = 0; + my $mfthits = 0; + my $nambhits = 0; + my $nunkhits = 0; + my $avgamb = 0; + my $hit = 0; + my %ambN; + my %ambK; + my %ambP; + + while (defined(my $in = $INPUT->getline()) and defined(my $out = $OUTPUT->getline())) { + chomp ($in); + chomp ($out); + my @linein = split(/$COMMON::in_valseparator/, $in); + my @lineout = split(/$COMMON::out_valseparator/, $out); + my $wordin = $linein[0]; + my $wordout = $lineout[0]; + my $posin = $linein[1]; + my $posout = $lineout[1]; + + if ((($linein[0] ne $COMMON::IGNORE) and ($linein[0] ne "")) and (($lineout[0] ne $COMMON::IGNORE) and ($lineout[0] ne ""))) { + + $nsamples++; + if ($verbose > $COMMON::verbose2) { COMMON::show_progress($nsamples, $COMMON::progress1, $COMMON::progress2); } + + if ($posin eq $posout) { $nhits++; $hit = 1; } #HIT + else { $hit = 0; } + + my $posmft = $rdict->get_mft($wordin); + + if ($rdict->unknown_word($wordin)) { #UNKNOWN WORD + $unknown++; + if ($hit) { $nunkhits++; } + } + else { #KNOWN WORD + if ($posmft eq $posin) { $mfthits++; } + if ($rdict->ambiguous_word($wordin)) { #ambiguous + $ambiguous++; + if ($hit) { $nambhits++; } + } + } + + my $rpotser = $rdict->get_real_potser($wordin); + $avgamb += scalar(@{$rpotser}); + + #AMBIGUITY LEVEL + if (exists($ambN{scalar(@{$rpotser})})) { + $ambN{scalar(@{$rpotser})}[0]++; + if ($hit) { $ambN{scalar(@{$rpotser})}[1]++; } + if ($posmft eq $posin) { $ambN{scalar(@{$rpotser})}[2]++; } + } + else { + my @laux = (1, 0, 0); + if ($hit) { $laux[1]++; } + if ($posmft eq $posin) { $laux[2]++; } + $ambN{scalar(@{$rpotser})} = \@laux; + } + + #AMBIGUITY KIND + my $potser = join($COMMON::innerseparator, @{$rpotser}); + if (exists($ambK{$potser})) { + $ambK{$potser}[0]++; + if ($hit) { $ambK{$potser}[1]++; } + if ($posmft eq $posin) { $ambK{$potser}[2]++; } + } + else { + my @laux = (1, 0, 0); + if ($hit) { $laux[1]++; } + if ($posmft eq $posin) { $laux[2]++; } + $ambK{$potser} = \@laux; + } + + #POS + if (exists($ambP{$posin})) { + $ambP{$posin}[0]++; + if ($hit) { $ambP{$posin}[1]++; } + if ($posmft eq $posin) { $ambP{$posin}[2]++; } + } + else { + my @laux = (1, 0, 0); + if ($hit) { $laux[1]++; } + if ($posmft eq $posin) { $laux[2]++; } + $ambP{$posin} = \@laux; + } + } + } + if ($verbose > $COMMON::verbose2) { print STDERR "...$nsamples tokens [DONE]\n"; } + + $INPUT->close(); + $OUTPUT->close(); + + my %stats; + $stats{nsamples} = $nsamples; + $stats{namb} = $ambiguous; + $stats{nunk} = $unknown; + $stats{nhits} = $nhits; + $stats{nambhits} = $nambhits; + $stats{nunkhits} = $nunkhits; + $stats{mfthits} = $mfthits; + $stats{avgamb} = ($nsamples > 0)? $avgamb / $nsamples : 0; + + $stats{ambN} = \%ambN; + $stats{ambK} = \%ambK; + $stats{ambP} = \%ambP; + + return(\%stats); +} + +# ------------------------------------------------------------------------------------------ +# PRINT STDOUT + +sub print_stats_header +{ + #description_ prints header of statistics + #param1 _ statistics hash reference + + my $stats = shift; + + my $nsamples = $stats->{nsamples}; + my $ambiguous = $stats->{namb}; + my $unknown = $stats->{nunk}; + my $nhits = $stats->{nhits}; + my $nambhits = $stats->{nambhits}; + my $nunkhits = $stats->{nunkhits}; + my $mfthits = $stats->{mfthits}; + my $avgamb = $stats->{avgamb}; + + my $ambpc = ($nsamples > 0)? $ambiguous / $nsamples * 100 : 0; + my $mftacc = ($nsamples > 0)? $mfthits / $nsamples * 100 : 0; + my $knownpc = ($nsamples > 0)? ($nsamples - $unknown) / $nsamples * 100 : 0; + my $unknownpc = ($nsamples > 0)? $unknown / $nsamples * 100 : 0; + + print "* ================= TAGGING SUMMARY =======================================================\n"; + printf STDOUT "#TOKENS = %s\n", $nsamples; + printf STDOUT "AVERAGE_AMBIGUITY = %.4f tags per token\n", $avgamb + 0; + print "* -----------------------------------------------------------------------------------------\n"; + my $known = $nsamples - $unknown; + printf STDOUT "#KNOWN = %7.4f%% --> %16s / %-16s\n", $knownpc + 0, $known, $nsamples; + printf STDOUT "#UNKNOWN = %7.4f%% --> %16s / %-16s\n", $unknownpc + 0, $unknown, $nsamples; + printf STDOUT "#AMBIGUOUS = %7.4f%% --> %16s / %-16s\n", $ambpc + 0, $ambiguous, $nsamples; + printf STDOUT "#MFT baseline = %7.4f%% --> %16s / %-16s\n", $mftacc + 0, $mfthits, $nsamples; +} + +sub print_stats_overall +{ + #description_ prints header of statistics + #param1 _ statistics hash reference + + my $stats = shift; + + my $nsamples = $stats->{nsamples}; + my $nhits = $stats->{nhits}; + my $mfthits = $stats->{mfthits}; + + print "* ================= OVERALL ACCURACY ======================================================\n"; + printf STDOUT "%16s %16s %16s %16s\n", "HITS", "TRIALS", "ACCURACY", "MFT"; + print "* -----------------------------------------------------------------------------------------\n"; + printf STDOUT "%16d %16d %16.4f%% %16.4f%%\n", $nhits, $nsamples, ($nsamples > 0)? ($nhits / $nsamples) * 100 : 0, ($nsamples > 0)? ($mfthits / $nsamples) * 100 : 0; + print "* =========================================================================================\n"; +} + +sub print_stats_ambU +{ + #description_ prints accuracy comparing known vs. unkown tokens + #param1 _ statistics hash reference + + my $stats = shift; + + my $ambh = $stats->{ambN}; + + my $nsamples = $stats->{nsamples}; + my $ambiguous = $stats->{namb}; + my $unknown = $stats->{nunk}; + my $nhits = $stats->{nhits}; + my $nambhits = $stats->{nambhits}; + my $nunkhits = $stats->{nunkhits}; + my $mfthits = $stats->{mfthits}; + + print "* ================= KNOWN vs UNKNOWN TOKENS ===============================================\n"; + printf STDOUT "%16s %16s %16s\n", "HITS", "TRIALS", "ACCURACY"; + print "* -----------------------------------------------------------------------------------------\n"; + print "* ======= known ===========================================================================\n"; + printf STDOUT "%16d %16d %10.4f%%\n", $nhits - $nunkhits, $nsamples - $unknown, (($nsamples - $unknown) > 0)? (($nhits - $nunkhits) / ($nsamples - $unknown)) * 100 : 0; + print "-------- known unambiguous tokens ---------------------------------------------------------\n"; + printf STDOUT "%16d %16d %10.4f%%\n", $nhits - $nunkhits - $nambhits, $nsamples - $unknown - $ambiguous, (($nsamples - $unknown - $ambiguous) > 0)? (($nhits - $nunkhits - $nambhits) / ($nsamples - $unknown - $ambiguous)) * 100 : 0; + print "-------- known ambiguous tokens -----------------------------------------------------------\n"; + printf STDOUT "%16d %16d %10.4f%%\n", $nambhits, $ambiguous, ($ambiguous > 0)? ($nambhits / $ambiguous) * 100 : 0; + print "* ======= unknown =========================================================================\n"; + printf STDOUT "%16d %16d %10.4f%%\n", $nunkhits, $unknown, ($unknown > 0)? ($nunkhits / $unknown) * 100 : 0; + print "* =========================================================================================\n"; +} + +sub print_stats_ambN +{ + #description_ prints accuracy per ambiguity level + #param1 _ statistics hash reference + + my $stats = shift; + + my $ambh = $stats->{ambN}; + + my $nsamples; + my $nhits; + print "* ================= ACCURACY PER LEVEL OF AMBIGUITY =======================================\n"; + print "#CLASSES = ", scalar(keys %{$ambh}), "\n"; + print "* =========================================================================================\n"; + printf STDOUT "%10s %16s %16s %10s %10s\n", "LEVEL", "HITS", "TRIALS", "ACCURACY", "MFT"; + print "* -----------------------------------------------------------------------------------------\n"; + foreach my $k (sort{$a <=> $b} keys %{$ambh}) { + $nhits += $ambh->{$k}->[1]; + $nsamples += $ambh->{$k}->[0]; + printf STDOUT "%10d %16d %16d %10.4f%% %10.4f%%\n", $k, $ambh->{$k}[1], $ambh->{$k}[0], ($ambh->{$k}[0] > 0)? ($ambh->{$k}[1] / $ambh->{$k}[0]) * 100 : 0, ($ambh->{$k}[0] > 0)? ($ambh->{$k}[2] / $ambh->{$k}[0]) * 100 : 0; + } +} + +sub print_stats_ambK +{ + #description_ prints accuracy per ambiguity kind + #param1 _ statistics hash reference + + my $stats = shift; + + my $ambh = $stats->{ambK}; + + my $nsamples; + my $nhits; + print "* ================= ACCURACY PER CLASS OF AMBIGUITY =======================================\n"; + print "#CLASSES = ", scalar(keys %{$ambh}), "\n"; + print "* =========================================================================================\n"; + printf STDOUT "%30s %16s %16s %10s %10s\n", "CLASS", "HITS", "TRIALS", "ACCURACY", "MFT"; + print "* -----------------------------------------------------------------------------------------\n"; + foreach my $k (sort keys %{$ambh}) { + $nhits += $ambh->{$k}->[1]; + $nsamples += $ambh->{$k}->[0]; + printf STDOUT "%-30s %16d %16d %10.4f%% %10.4f%%\n", $k, $ambh->{$k}[1], $ambh->{$k}[0], ($ambh->{$k}[0] > 0)? ($ambh->{$k}[1] / $ambh->{$k}[0]) * 100 : 0, ($ambh->{$k}[0] > 0)? ($ambh->{$k}[2] / $ambh->{$k}[0]) * 100 : 0; + } +} + +sub print_stats_ambP +{ + #description_ prints accuracy per part-of-speech + #param1 _ statistics hash reference + + my $stats = shift; + + my $ambh = $stats->{ambP}; + + my $nsamples; + my $nhits; + print "* ================= ACCURACY PER PART-OF-SPEECH ===========================================\n"; + printf STDOUT "%10s %16s %16s %10s %10s\n", "POS", "HITS", "TRIALS", "ACCURACY", "MFT"; + print "* -----------------------------------------------------------------------------------------\n"; + foreach my $k (sort keys %{$ambh}) { + $nhits += $ambh->{$k}->[1]; + $nsamples += $ambh->{$k}->[0]; + printf STDOUT "%10s %16d %16d %10.4f%% %10.4f%%\n", $k, $ambh->{$k}[1], $ambh->{$k}[0], ($ambh->{$k}[0] > 0)? ($ambh->{$k}[1] / $ambh->{$k}[0]) * 100 : 0, ($ambh->{$k}[0] > 0)? ($ambh->{$k}[2] / $ambh->{$k}[0]) * 100 : 0; + } +} + +sub print_results +{ + #description_ prints results + #param1 _ statistics hash reference + + my $stats = shift; + + my ($acckn, $accamb, $accunk, $accuracy) = STATS::get_accuracies($stats); + print "$acckn\t$accamb\t$accunk\t$accuracy\n"; +} + +sub get_accuracies +{ + #description_ prints results + #param1 _ statistics hash reference + #@return _ (accuracy for known words, accuracy for ambiguous known words, + # accuracy for unknown words, overall accuracy) + + my $stats = shift; + + my $nsamples = $stats->{nsamples}; + my $ambiguous = $stats->{namb}; + my $unknown = $stats->{nunk}; + my $nhits = $stats->{nhits}; + my $nambhits = $stats->{nambhits}; + my $nunkhits = $stats->{nunkhits}; + + my $acckn = sprintf("%.4f", COMMON::compute_accuracy($nhits - $nunkhits, $nsamples - $unknown) * 100) + 0; + my $accamb = sprintf("%.4f", COMMON::compute_accuracy($nambhits, $ambiguous) * 100) + 0; + my $accunk = sprintf("%.4f", COMMON::compute_accuracy($nunkhits, $unknown) * 100) + 0; + my $accuracy = sprintf("%.4f", COMMON::compute_accuracy($nhits, $nsamples) * 100) + 0; + + return ($acckn, $accamb, $accunk, $accuracy); +} + +1; diff --git a/tools/train/svmtools/SVMTool/SVM.pm b/tools/train/svmtools/SVMTool/SVM.pm new file mode 100644 index 000000000..74b9fce83 --- /dev/null +++ b/tools/train/svmtools/SVMTool/SVM.pm @@ -0,0 +1,733 @@ +package SVM; + +#Copyright (C) 2004 Jesus Gimenez and Lluis Marquez + +#This library is free software; you can redistribute it and/or +#modify it under the terms of the GNU Lesser General Public +#License as published by the Free Software Foundation; either +#version 2.1 of the License, or (at your option) any later version. + +#This library is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +#Lesser General Public License for more details. + +#You should have received a copy of the GNU Lesser General Public +#License along with this library; if not, write to the Free Software +#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +use strict; +use IO; +use Data::Dumper; +use SVMTool::COMMON; +#use Fcntl; +#use DB_File; + +# ---------------- SVM ---------------------------------------- +$SVM::KTYPE = "ktype"; +$SVM::TL = 0; # 0: linear (default) +$SVM::TP = 1; # 1: polynomial (s a*b+c)^d +$SVM::TR = 2; # 2: radial basis function exp(-gamma ||a-b||^2) +$SVM::TS = 3; # 3: sigmoid tanh(s a*b + c) +$SVM::TU = 4; # 4: user defined kernel from kernel.h +$SVM::svmseparator = ":"; + +# ------------------------------------------------------------- + +# ===================================== SVM ============================================ + + sub svm_learn +{ + #description _ calls svm_learn + #param1 _ MODEL NAME + #param2 _ SAMPLE SET DSF filename + #param3 _ TAG + #param4 _ svm_learn options (parameter C...) + #param5 _ SVM model file extension + #param6 _ SVM-light directory (Joachims software) (input) + #param7 _ REPORT filename (input/output) + #param8 _ verbosity + + my $model = shift; + my $currenttraindsf = shift; + my $pos = shift; + my $options = shift; + my $svmext = shift; + my $svmdir = shift; + my $report = shift; + my $verbose = shift; + + #print "\n\n------\n$svmdir------\n\n"; + if ($svmdir !~ /\/$/) { $svmdir .= "/"; } + if ($verbose > $COMMON::verbose3) { print "$svmdir"."svm_learn -v 0 $options $currenttraindsf $model.$pos.$svmext\n"; } + #print "---\n$svmdir"."svm_learn -v 0 $options $currenttraindsf $model.$pos.$svmext\n"; + system("$svmdir"."svm_learn -v 0 $options $currenttraindsf $model.$pos.$svmext >/dev/null") == 0 or die "system failed: $?"; +} + +#sub svm_classify +#{ +# #description _ calls svm_classify +# #param1 _ SAMPLE SET DSF filename +# #param2 _ POS +# #param3 _ SVM model file extension +# #param4 _ CLSF classification file extension +# #param5 _ MODEL directory (where svm models are) +# #param6 _ SVM-light directory (Joachims software) (input) +# #param7 _ REPORT filename (input/output) +# #param8 _ verbosity + +# my $currenttestdsf = shift; +# my $pos = shift; +# my $svmext = shift; +# my $clsfext = shift; +# my $modeldir = shift; +# my $svmdir = shift; +# my $report = shift; +# my $verbose = shift; + +# if ($svmdir !~ /\/$/) { $svmdir .= "/"; } +# my $svmfile; +# if ($modeldir ne "") { $svmfile = $modeldir."/"; } +# $pos =~ s/\'/\\\'/g; +# $pos =~ s/\`/\\\`/g; +# $pos =~ s/\"/\\\"/g; +# $pos =~ s/\(/\\\(/g; +# $pos =~ s/\)/\\\)/g; +# $svmfile .= $pos.".".$svmext; +# if ($verbose > $COMMON::verbose3) { print "$svmdir"."svm_classify -v 0 $currenttestdsf $svmfile $pos.$clsfext\n"; } +# system("$svmdir"."svm_classify -v 0 $currenttestdsf $svmfile $pos.$clsfext >/dev/null") == 0 or die "system failed: $?"; +#} + +sub svm_classify_sample_primal +{ + #description _ SVM classify + #param1 _ sample to classify + #param2 _ referencia al vector de pesos primal (esparso -> hash) + #param3 _ coeficiente b primal + #param4 _ EPSILON threshold for W features relevance (input) + #@return _ prediction + + my $sample = shift; + my $rW = shift; + my $b = shift; + my $epsilon = shift; + + my $sum = 0; + foreach my $s (@{$sample}) { + my @sl = split($SVM::svmseparator, $s); + #if (exists($rW->{$sl[0]})) { $sum += $sl[1] * $rW->{$sl[0]}; } + if (exists($rW->{$sl[0]})) { + #if (abs($rW->{$sl[0]}) >= abs($epsilon)) { + $sum += $sl[1] * $rW->{$sl[0]}; + #} + } + } + $sum -= $b; + return $sum; +} + +sub svm_classify_sample +{ + #description _ SVM classify + #param1 _ sample to classify + #param2 _ all svm models + #param3 _ POS + #@return _ prediction + + my $sample = shift; + my $rmodels = shift; + my $pos = shift; + + my $model=$rmodels->{$pos}; + my @svm = @{$model}; + + #print "--> ($pos) "; + #my $pred = svm_classify_sample_on_disk($sample, "/home/usuaris/jgimenez/SVM/MODELS/LINEAR/$pos.$SVMEXT"); + + #read svm model + my $aux1; + my @aux2; + + shift(@svm); # version + $aux1 = shift(@svm); # kernel type + @aux2 = split(/ /, $aux1); + my $ktype = @aux2[0]; + $aux1 = shift(@svm); # kernel parameter -d + @aux2 = split(/ /, $aux1); + my $kd = @aux2[0]; + $aux1 = shift(@svm); # kernel parameter -g + @aux2 = split(/ /, $aux1); + my $kg = @aux2[0]; + $aux1 = shift(@svm); # kernel parameter -s + @aux2 = split(/ /, $aux1); + my $ks = @aux2[0]; + $aux1 = shift(@svm); # kernel parameter -r + @aux2 = split(/ /, $aux1); + my $kr = @aux2[0]; + $aux1 = shift(@svm); # empty kernel parameter -u + @aux2 = split(/ /, $aux1); + my $ku = @aux2[0]; + $aux1 = shift(@svm); # highest feature index + @aux2 = split(/ /, $aux1); + my $hfi = @aux2[0]; + $aux1 = shift(@svm); # number of training documents + @aux2 = split(/ /, $aux1); + my $ntd = @aux2[0]; + $aux1 = shift(@svm); # number of support vectors plus 1 + @aux2 = split(/ /, $aux1); + my $nsv = @aux2[0]; + $aux1 = shift(@svm); # threshold b + @aux2 = split(/ /, $aux1); + my $b = @aux2[0]; + + #print "KTYPE=$ktype, KD=$kd, KG=$kg, KS=$ks, KR=$kr, HFI=$hfi, NTD=$ntd, NSV=$nsv, b=$b\n"; + # -t int -> type of kernel function: + # 0: linear (default) + # 1: polynomial (s a*b+c)^d + # 2: radial basis function exp(-gamma ||a-b||^2) + # 3: sigmoid tanh(s a*b + c) + # 4: user defined kernel from kernel.h + + my %SMPL; + my @sl; + foreach my $s (@{$sample}) { + @sl = split($SVM::svmseparator, $s); + $SMPL{$sl[0]} = $sl[1]; # filling out sample hash + } + + my $sum = 0; + my @vl; + while (scalar(@svm) > 0) { + my $line = shift(@svm); #each following line is a SV (starting with alpha*y) + my @entry = split(/ /, $line); + my $alphay = shift(@entry); + my $ps = 0; + foreach my $v (@entry) { + @vl = split($SVM::svmseparator, $v); + if (exists($SMPL{$vl[0]})) { + $ps += ($SMPL{$vl[0]} * $vl[1]); + } + } + if ($ktype == 1) { $ps = ($ps + $kr) ** $kd; } #polynomial + $sum += ($alphay * $ps); + } + + $sum -= $b; + + #print "$sum VS $pred\n"; + + return $sum; +} + +# =================================== MODELS ========================================== + +sub read_svm_header +{ + #description _ reads a svm model header + #param1 _ MODEL filehandle + + my $SVM = shift; + + my ($version, $ktype, $kd, $kg, $ks, $kr, $ku, $hfi, $ntd, $nsv, $b); + my @aux; + my $s; + + if (defined($s = $SVM->getline())) { chomp($s); $version = $s; } # version + if (defined($s = $SVM->getline())) { @aux = split(/ /, $s); $ktype = $aux[0]; } # kernel type + if (defined($s = $SVM->getline())) { @aux = split(/ /, $s); $kd = $aux[0]; } # kernel parameter -d + if (defined($s = $SVM->getline())) { @aux = split(/ /, $s); $kg = $aux[0]; } # kernel parameter -g + if (defined($s = $SVM->getline())) { @aux = split(/ /, $s); $ks = $aux[0]; } # kernel parameter -s + if (defined($s = $SVM->getline())) { @aux = split(/ /, $s); $kr = $aux[0]; } # kernel parameter -r + if (defined($s = $SVM->getline())) { @aux = split(/ /, $s); $ku = $aux[0]; } # empty kernel parameter -u + if (defined($s = $SVM->getline())) { @aux = split(/ /, $s); $hfi = $aux[0]; } # highest feature index + if (defined($s = $SVM->getline())) { @aux = split(/ /, $s); $ntd = $aux[0]; } # number of training documents + if (defined($s = $SVM->getline())) { @aux = split(/ /, $s); $nsv = $aux[0]; } # number of support vectors plus 1 + if (defined($s = $SVM->getline())) { @aux = split(/ /, $s); $b = $aux[0]; } # threshold b + + #print "KTYPE=$ktype, KD=$kd, KG=$kg, KS=$ks, KR=$kr, HFI=$hfi, NTD=$ntd, NSV=$nsv, b=$b\n"; + + return ($version, $ktype, $kd, $kg, $ks, $kr, $ku, $hfi, $ntd, $nsv, $b); +} + +sub read_models +{ + #description _ reads SVM model files from disk onto memory + #param1 _ MODEL NAME (input) + #param2 _ POS list reference (input) + #param3 _ optional extension (used for unknown words SVM) (input) + #param4 _ EPSILON/OMEGA threshold for W features relevance (input) + #param5 _ MAPPING dictionary hash reference (input) + #param6 _ VERBOSE (input) + #@return _ (Weight vector hash reference, Biases hash reference) + + my $model = shift; + my $rpos = shift; + my $optext = shift; + my $epsilon = shift; + my $rmap = shift; + my $verbose = shift; + + my $fileW = $model; + my $fileB = $model; + + if ($optext ne "") { + $fileW .= ".$optext"; + $fileB .= ".$optext"; + $optext .= "."; + } + + $fileW .= ".$COMMON::Wext"; + $fileB .= ".$COMMON::Bext"; + + my $dir = $model; + if ($dir =~ /.*\/.*/) { $dir =~ s/\/[^\/]*/\//g; } + else { $dir = "./"; } + my ($rW, $rB, $N) = read_primal_models($model, $dir, $rpos, $fileW, $fileB, $optext, $epsilon, $rmap, $verbose); + + return ($rW, $rB); +} + + +sub read_primal_models +{ + #description _ reads primal models assumed they've been stored in the given directory, + # otherwise dual formulation is read and then primal models are written back, + # although they might be useless if the kernel type's not linear. + #param1 _ MODEL NAME (input) + #param2 _ MODELS directory (input) + #param3 _ POS list reference + #param4 _ W filename + #param5 _ B filename + #param6 _ optional extension (used for unknown words SVM) (input) + #param7 _ EPSILON threshold for W features relevance (input) + #param8 _ MAPPING dictionary hash reference (input) + #param9 _ VERBOSE (input) + #@return _ (rW, rB, average W size) + + my $model = shift; + my $dir = shift; + my $tagset = shift; + my $fileW = shift; + my $fileB = shift; + my $optext = shift; + my $epsilon = shift; + my $rmap = shift; + my $verbose = shift; + + my ($rW, $rB) = read_dual_models($model, $dir, $tagset, $optext, $epsilon, $rmap, $verbose); + write_primal_models($rW, $rB, $fileW, $fileB); + my $ID = 0; + while ($ID < scalar(@{$tagset})) { # *.SVM won't be longer necessary + system "rm -f $dir$model.$ID.$optext$COMMON::SVMEXT"; #REMOVE ORIGINAL SVM files + $ID++; + } + + my $WM = new IO::File("< $fileW") or die "Couldn't open input file: $fileW\n"; + my $BM = new IO::File("< $fileB") or die "Couldn't open input file: $fileB\n"; + + my $n = 0; + my %W; + while (defined(my $line = $WM->getline())) { + my @entry = split(" ", $line); + my $pos = shift(@entry); + my %Wpos; + foreach my $v (@entry) { + my @vl = split($SVM::svmseparator, $v); + $Wpos{$vl[0]} = $vl[1]; + $n++; + } + $W{$pos} = \%Wpos; + } + $WM->close(); + + my $N = 0; + if (scalar(keys %W) > 0) { $N = $n / scalar(keys %W); } + + my %B; + while (defined(my $line = $BM->getline())) { + chomp($line); + my @entry = split($SVM::svmseparator, $line); + $B{$entry[0]} = $entry[1]; + } + $BM->close(); + + #system("rm $fileW"); + #system("rm $fileB"); + + return (\%W, \%B, $N); +} + + +sub read_dual_models +{ + #description _ reads SVM model files from disk onto memory (in their dual formulation) + #param1 _ MODEL NAME (input) + #param2 _ MODELS directory (input) + #param3 _ POS list reference (input) + #param4 _ optional extension (used for unknown words SVM) (input) + #param5 _ EPSILON threshold for W features relevance (input) + #param6 _ MAPPING dictionary hash reference (input) + #param7 _ VERBOSE (input) + #@return _ (Weight vector hash reference, B coefficient hash reference) + + my $model = shift; + my $dir = shift; + my $tagset = shift; + my $optext = shift; + my $epsilon = shift; + my $rmap = shift; + my $verbose = shift; + + my %W; + my %B; + + my $ID = 0; + while ($ID < scalar(@{$tagset})) { + my $tag = $tagset->[$ID]; + + if ($verbose > $COMMON::verbose1) { print "$tag.."; } + my $SVM = new IO::File("< $dir$model.$ID.$optext$COMMON::SVMEXT") or die "Couldn't open input file: $dir$model.$ID.$optext$COMMON::SVMEXT\n"; + + my ($version, $ktype, $kd, $kg, $ks, $kr, $ku, $hfi, $ntd, $nsv, $b) = read_svm_header($SVM); + my @model = ($version, $ktype, $kd, $kg, $ks, $kr, $ku, $hfi, $ntd, $nsv, $b); + + # ---------------------------------------------------- + $B{$tag} = $b; + # ---------------------------------------------------- + + my %Wpos; + while (defined(my $s = $SVM->getline())) { + chomp($s); + push(@model, $s); + my @entry = split(/ /, $s); + my $alphay = shift(@entry); + foreach my $v (@entry) { + my @vl = split($SVM::svmseparator, $v); + if (exists($Wpos{$vl[0]})) { + $Wpos{$vl[0]} += $alphay * $vl[1]; + } + else { + $Wpos{$vl[0]} = $alphay * $vl[1]; + } + } + } + + if ($epsilon != 0) { + # now's the time for filtering irrelevant features out + my %Wposf; + foreach my $w (keys %Wpos) { + if (abs($Wpos{$w}) >= abs($epsilon)) { #feature is rellevant + $Wposf{$w} = $Wpos{$w}; + } + } + $W{$tag} = \%Wposf; + } + else { #epsilon == 0 --> don't filter + $W{$tag} = \%Wpos; + } + + # ---------------------------------------------------- + + $SVM->close(); + $ID++; + } + if ($verbose > $COMMON::verbose1) { print "[DONE]\n"; } + + return (\%W, \%B); +} + + +sub write_primal_models +{ + #description _ writes primal models onto the given directory + #param1 _ referencia al hash de vectores de pesos + #param2 _ referencia al hash de coeficientes b + #param3 _ W filename + #param4 _ B filename + + my $rW = shift; + my $rB = shift; + my $fileW = shift; + my $fileB = shift; + + my $WM = new IO::File("> $fileW") or die "Couldn't open output file: $fileW\n"; + foreach my $p (sort keys %{$rW}) { + my $entry = "$p "; + foreach my $v (sort keys %{$rW->{$p}}) { + $entry .= $v.$SVM::svmseparator.$rW->{$p}->{$v}." "; + } + chop($entry); + print $WM "$entry\n"; + } + $WM->close(); + + my $BM = new IO::File("> $fileB") or die "Couldn't open output file: $fileB\n"; + foreach my $p (sort keys %{$rB}) { + print $BM $p, $SVM::svmseparator, $rB->{$p}, "\n"; + } + + $BM->close(); +} + +sub write_merged_models +{ + #description _ writes merged models + #param1 _ referencia al hash que contiene el MERGED MODEL + #param2 _ Biases hash reference + #param3 _ config structure + #param4 _ file name + #param5 _ (1/0) unknown/known model + + my $rM = shift; + my $rB = shift; + my $config = shift; + my $fileM = shift; + my $unknown = shift; + + my $FM = new IO::File("> $fileM") or die "Couldn't open output file: $fileM\n"; + + print $FM "# $COMMON::appname v$COMMON::appversion MERGED PRIMAL MODEL\n# SLIDING WINDOW: length [$config->{wlen}] :: core [$config->{wcore}]\n# FEATURE FILTERING: min frequency [$config->{fmin}] :: max mapping size [$config->{maxmapsize}]\n# C-PARAMETER: ".($unknown? $config->{Cu} : $config->{Ck})."\n# =========================================================================\n"; + + my @bline; + foreach my $bias (sort keys %{$rB}) { + push(@bline, $bias.$SVM::svmseparator.$rB->{$bias}); + } + print $FM "BIASES ".join(" ", @bline)."\n"; + + foreach my $att (sort keys %{$rM}) { + my @wline; + foreach my $pos (sort keys %{$rM->{$att}}) { + push(@wline, $pos.$SVM::svmseparator.$rM->{$att}->{$pos}); + } + print $FM "$att ", join(" ", @wline), "\n"; + } + + $FM->close(); +} + +#sub write_merged_models_BDB +#{ + #description _ writes merged models + #param1 _ referencia al hash que contiene el MERGED MODEL + #param2 _ Biases hash reference + #param3 _ file name + +# my $rM = shift; +# my $rB = shift; +# my $fileM = shift; + +# my %h; +# tie(%h,'DB_File', $fileM, O_RDWR|O_CREAT , 0644 , $DB_HASH) or die "can't tie DB_File $! $fileM"; + +# my @bline; +# foreach my $bias (sort keys %{$rB}) { +# push(@bline, $bias.$SVM::svmseparator.$rB->{$bias}); +# } +# $h{"BIASES"} = join(" ", @bline)."\n"; + +# foreach my $att (sort keys %{$rM}) { +# my @wline; +# foreach my $pos (sort keys %{$rM->{$att}}) { +# push(@wline, $pos.$SVM::svmseparator.$rM->{$att}->{$pos}); +# } +# $h{$att} = join(" ", @wline); +# } + +# untie %h; # Flush and close the dbm file +#} + + +sub read_B +{ + #description _ reads only B coefficients from an SVM model + #param1 _ file name (input) + #@return _ B coefficient hash reference + + my $fB = shift; + + my $BM = new IO::File("< $fB") or die "Couldn't open input file: $fB\n"; + my %B; + + while (defined(my $line = $BM->getline())) { + my @entry = split($SVM::svmseparator, $line); + $B{$entry[0]} = $entry[1]; + } + + $BM->close(); + + return (\%B); +} + +sub read_merged_models +{ + #description _ reads merged models + #param1 _ file name + #param2 _ EPSILON threshold for W features relevance (input) + #param3 _ VERBOSE (input) + #@return _ referencia al hash que contendra el MERGED MODEL + + my $fileM = shift; + my $epsilon = shift; + my $verbose = shift; + + my $FM = new IO::File("< $fileM") or die "Couldn't open input file: $fileM\n"; + my %B; + my %M; + my $N; + my $Nout; + + while (defined(my $line = $FM->getline())) { + if (($line ne "") and ($line !~ /^\#.*/)) { + if ($line =~ /^BIASES /) { + my @biases = split(" ", $line); + my $i = 1; + while ($i < scalar(@biases)) { + my @elem = split($SVM::svmseparator, $biases[$i]); + $B{$elem[0]} = $elem[1]; + $i++; + } + } + else { + my @entry = split(" ", $line); + my $att = shift(@entry); + my %Matt; + foreach my $v (@entry) { + my @vl = split($SVM::svmseparator, $v); + if (abs($vl[1]) >= abs($epsilon)) { # now's the time for filtering irrelevant features out + $Matt{$vl[0]} = $vl[1]; #feature is rellevant + } + else { $Nout++; } + $N++; + } + $M{$att} = \%Matt; + } + } + } + + $FM->close(); + + if (($verbose) and ($epsilon > 0)) { print STDERR "[filtering weights on +/- $epsilon] --> [", $Nout+0, " / $N] = ", sprintf("%.4f", $Nout/$N * 100) + 0, " % discarded\n"; } + + #print STDERR "WRITING BDB MERGED MODELS < $fileM.2 >\n"; + #SVM::write_merged_models_BDB(\%M, \%B, "$fileM.2"); + + return (\%M, \%B, $N, $Nout); +} + +#sub read_merged_models_BDB +#{ + #description _ reads merged models + #param1 _ file name + #param2 _ EPSILON threshold for W features relevance (input) + #param3 _ VERBOSE (input) + #@return _ referencia al hash que contendra el MERGED MODEL + +# my $fileM = shift; +# my $epsilon = shift; +# my $verbose = shift; + +# my %B; +# my %M; +# my $N; +# my $Nout; + +# my %h; +# tie(%h,'DB_File', $fileM, O_RDWR|O_CREAT , 0644 , $DB_HASH) or die "can't tie DB_File $! $fileM"; + +# foreach my $k (keys %h) { +# if ($k eq "BIASES") { #biases +# my @biases = split(" ", $h{$k}); +# my $i = 0; +# while ($i < scalar(@biases)) { +# my @elem = split($SVM::svmseparator, $biases[$i]); +# $B{$elem[0]} = $elem[1]; +# $i++; +# } +# } +# else { #weights +# my @entry = split(" ", $h{$k}); +# my %Matt; +# foreach my $v (@entry) { +# my @vl = split($SVM::svmseparator, $v); +# if (abs($vl[1]) >= abs($epsilon)) { # now's the time for filtering irrelevant features out +# $Matt{$vl[0]} = $vl[1]; #feature is rellevant +# } +# else { $Nout++; } +# $N++; +# } +# $M{$k} = \%Matt; +# } +# } + +# if (($verbose) and ($epsilon > 0)) { print STDERR "[filtering weights on +/- $epsilon] --> [", $Nout+0, " / $N] = ", sprintf("%.4f", $Nout/$N * 100) + 0, " % discarded\n"; } + +# untie %h; # Flush and close the dbm file + +# return (\%M, \%B, $N, $Nout); +#} + +sub merge_models +{ + #description _ merges mapping and primal weights onto a new model. + #param1 _ reverse mapping hash reference + #param2 _ referencia al hash de vectores de pesos primal + #@return _ merged model hash reference + + my $rmap = shift; + my $rW = shift; + + my %MODEL; + + foreach my $pos (keys %{$rW}) { + foreach my $att2 (keys %{$rW->{$pos}}) { + $MODEL{$rmap->{$att2}}->{$pos} = $rW->{$pos}->{$att2}; + } + } + + return(\%MODEL); +} + +sub write_mem_sample +{ + #description _ responsible for writing down a sample onto memory. + # + #param1 _ sample attributes hash reference + #@return value : attribute list + + my $rattribs = shift; + + my @output; + + foreach my $sample (keys %{$rattribs}) { #sorting is not necessary + push(@output, $sample.$COMMON::attvalseparator.$rattribs->{$sample}); + } + + return \@output; +} + +sub write_sample +{ + #description _ responsible for writing the sample onto the corresponding files. + #param1 _ label tag (word:pos) + #param2 _ sample attributes hash reference + #param3 _ sample file handle + + my $label = shift; + my $rattribs = shift; + my $SMPLSET = shift; + + if (defined($SMPLSET)) { + my @output; + push(@output, $label); + + foreach my $sample (sort keys %{$rattribs}) { #sorting is mandatory + push(@output, $sample.$COMMON::attvalseparator.$rattribs->{$sample}); + } + + #actually writing the sample onto the file + print $SMPLSET join($COMMON::pairseparator, @output)."\n"; + } +} + +1; + diff --git a/tools/train/svmtools/SVMTool/SVMTAGGER.pm b/tools/train/svmtools/SVMTool/SVMTAGGER.pm new file mode 100644 index 000000000..f374b89dd --- /dev/null +++ b/tools/train/svmtools/SVMTool/SVMTAGGER.pm @@ -0,0 +1,4659 @@ +package SVMTAGGER; + +#Copyright (C) 2004 Jesus Gimenez and Lluis Marquez + +#This library is free software; you can redistribute it and/or +#modify it under the terms of the GNU Lesser General Public +#License as published by the Free Software Foundation; either +#version 2.1 of the License, or (at your option) any later version. + +#This library is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +#Lesser General Public License for more details. + +#You should have received a copy of the GNU Lesser General Public +#License along with this library; if not, write to the Free Software +#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +use strict; +use IO; +use Benchmark; +use Data::Dumper; +use SVMTool::COMMON; +use SVMTool::DICTIONARY; +use SVMTool::SWINDOW; +use SVMTool::SVM; +use SVMTool::MAPPING; +use SVMTool::ATTGEN; +use SVMTool::ENTRY; +use SVMTool::STATS; + +# ----------------------------------------------------------------------------------- +# local variables +# ----------------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------------- +#DEFAULT VALUES + +# -- SVM +$SVMTAGGER::MIN_VALUE = -99999999; +$SVMTAGGER::Ck = 0; +$SVMTAGGER::Cu = 0; + +# -- X +$SVMTAGGER::X = 3; +# -- Derr +$SVMTAGGER::dicterr = 0.001; #heuristic dictionary +# -- EQerr +$SVMTAGGER::eqerr = 0.01; #classes of equivalence +# -- Kfilter +$SVMTAGGER::Kfilter = 0; #weight filtering for known words +# -- Ufilter +$SVMTAGGER::Ufilter = 0; #weight filtering for unknown words + +# -- sliding window -- +$SVMTAGGER::wlength = 5; +$SVMTAGGER::wcorepos = 2; + +#tagging modes +$SVMTAGGER::Mdefault = 0; +$SVMTAGGER::Mspecial = 1; +$SVMTAGGER::Mviterbi = 2; + +#viterbi +$SVMTAGGER::ENDCTX = "END"; + +#remove intermediate files +$SVMTAGGER::rmfiles = 1; + +#remake folders for cross-validation +$SVMTAGGER::remakeFLDS = 1; + +#corpus splitting probabilities +$SVMTAGGER::TRAINP = 0.8; +$SVMTAGGER::TESTP = 0.1; +$SVMTAGGER::VALP = 0.1; + +#cross-validation number of folders +$SVMTAGGER::NFOLDERS = 10; + +# ----------------------------------------------------------------------------------- +#ambiguous-right [default] +my @lATT0k = ("w(-2)", "w(-1)", "w(0)", "w(1)", "w(2)", "w(-2,-1)", "w(-1,0)", "w(0,1)", "w(-1,1)", "w(1,2)", "w(-2,-1,0)", "w(-2,-1,1)", "w(-1,0,1)", "w(-1,1,2)", "w(0,1,2)", "p(-2)", "p(-1)", "p(-2,-1)", "p(-1,1)", "p(1,2)", "p(-2,-1,1)", "p(-1,1,2)", "k(0)", "k(1)", "k(2)", "m(0)", "m(1)", "m(2)"); +$SVMTAGGER::rATT0k = \@lATT0k; +my @lATT0u = ("w(-2)", "w(-1)", "w(0)", "w(1)", "w(2)", "w(-2,-1)", "w(-1,0)", "w(0,1)", "w(-1,1)", "w(1,2)", "w(-2,-1,0)", "w(-2,-1,1)", "w(-1,0,1)", "w(-1,1,2)", "w(0,1,2)", "p(-2)", "p(-1)", "p(-2,-1)", "p(-1,1)", "p(1,2)", "p(-2,-1,1)", "p(-1,1,2)", "k(0)", "k(1)", "k(2)", "m(0)", "m(1)", "m(2)", "a(2)", "a(3)", "a(4)", "z(2)", "z(3)", "z(4)", "ca(1)", "cz(1)", "L", "SA", "AA", "SN", "CA", "CAA", "CP", "CC", "CN", "MW"); +$SVMTAGGER::rATT0u = \@lATT0u; +# ----------------------------------------------------------------------------------- +#unambiguous-right +my @lATT1k = ("w(-2)", "w(-1)", "w(0)", "w(1)", "w(2)", "w(-2,-1)", "w(-1,0)", "w(0,1)", "w(-1,1)", "w(1,2)", "w(-2,-1,0)", "w(-2,-1,1)", "w(-1,0,1)", "w(-1,1,2)", "w(0,1,2)", "p(-2)", "p(-1)", "p(1)", "p(2)", "p(-2,-1)", "p(-1,0)", "p(-1,1)", "p(0,1)", "p(1,2)", "p(-2,-1,0)", "p(-2,-1,1)", "p(-1,0,1)", "p(-1,1,2)", "k(0)", "k(1)", "k(2)", "m(0)", "m(1)", "m(2)"); +$SVMTAGGER::rATT1k = \@lATT1k; +my @lATT1u = ("w(-2)", "w(-1)", "w(0)", "w(1)", "w(2)", "w(-2,-1)", "w(-1,0)", "w(0,1)", "w(-1,1)", "w(1,2)", "w(-2,-1,0)", "w(-2,-1,1)", "w(-1,0,1)", "w(-1,1,2)", "w(0,1,2)", "p(-2)", "p(-1)", "p(1)", "p(2)", "p(-2,-1)", "p(-1,0)", "p(-1,1)", "p(0,1)", "p(1,2)", "p(-2,-1,0)", "p(-2,-1,1)", "p(-1,0,1)", "p(-1,1,2)", "k(0)", "k(1)", "k(2)", "m(0)", "m(1)", "m(2)", "a(2)", "a(3)", "a(4)", "z(2)", "z(3)", "z(4)", "ca(1)", "cz(1)", "L", "SA", "AA", "SN", "CA", "CAA", "CP", "CC", "CN", "MW"); +$SVMTAGGER::rATT1u = \@lATT1u; +# ----------------------------------------------------------------------------------- +#no-right +my @lATT2k = ("w(-2)", "w(-1)", "w(0)", "w(1)", "w(2)", "w(-2,-1)", "w(-1,0)", "w(0,1)", "w(-1,1)", "w(1,2)", "w(-2,-1,0)", "w(-2,-1,1)", "w(-1,0,1)", "w(-1,1,2)", "w(0,1,2)", "p(-2)", "p(-1)", "p(-2,-1)", "k(0)", "m(0)"); +$SVMTAGGER::rATT2k = \@lATT2k; +my @lATT2u = ("w(-2)", "w(-1)", "w(0)", "w(1)", "w(2)", "w(-2,-1)", "w(-1,0)", "w(0,1)", "w(-1,1)", "w(1,2)", "w(-2,-1,0)", "w(-2,-1,1)", "w(-1,0,1)", "w(-1,1,2)", "w(0,1,2)", "p(-2)", "p(-1)", "p(-2,-1)", "k(0)", "m(0)", "a(2)", "a(3)", "a(4)", "z(2)", "z(3)", "z(4)", "ca(1)", "cz(1)", "L", "SA", "AA", "SN", "CA", "CAA", "CP", "CC", "CN", "MW"); +$SVMTAGGER::rATT2u = \@lATT2u; +# ----------------------------------------------------------------------------------- +#unsupervised-learning +my @lATT3k = ("w(-2)", "w(-1)", "w(0)", "w(1)", "w(2)", "w(-2,-1)", "w(-1,0)", "w(0,1)", "w(-1,1)", "w(1,2)", "w(-2,-1,0)", "w(-2,-1,1)", "w(-1,0,1)", "w(-1,1,2)", "w(0,1,2)", "p(-2)", "p(-1)", "p(-2,-1)", "p(-1,1)", "p(1,2)", "p(-2,-1,1)", "p(-1,1,2)", "k(-2)", "k(-1)", "k(1)", "k(2)", "m(-2)", "m(-1)", "m(1)", "m(2)"); +$SVMTAGGER::rATT3k = \@lATT3k; +my @lATT3u = ("w(-2)", "w(-1)", "w(0)", "w(1)", "w(2)", "w(-2,-1)", "w(-1,0)", "w(0,1)", "w(-1,1)", "w(1,2)", "w(-2,-1,0)", "w(-2,-1,1)", "w(-1,0,1)", "w(-1,1,2)", "w(0,1,2)", "p(-2)", "p(-1)", "p(-2,-1)", "p(-1,1)", "p(1,2)", "p(-2,-1,1)", "p(-1,1,2)", "k(-2)", "k(-1)", "k(1)", "k(2)", "m(-2)", "m(-1)", "m(1)", "m(2)", "a(2)", "a(3)", "a(4)", "z(2)", "z(3)", "z(4)", "ca(1)", "cz(1)", "L", "SA", "AA", "SN", "CA", "CAA", "CP", "CC", "CN", "MW"); +$SVMTAGGER::rATT3u = \@lATT3u; +# ----------------------------------------------------------------------------------- + +$SVMTAGGER::rSTRATS = { $COMMON::mode0 => $COMMON::st0, $COMMON::mode1 => $COMMON::st1, $COMMON::mode2 => $COMMON::st1, $COMMON::mode3 => $COMMON::st3, $COMMON::mode4 => $COMMON::st4}; +$SVMTAGGER::rMEXTS = { $COMMON::mode0 => $COMMON::M0EXT, $COMMON::mode1 => $COMMON::M1EXT, $COMMON::mode2 => $COMMON::M2EXT, $COMMON::mode3 => $COMMON::M3EXT, $COMMON::mode4 => $COMMON::M4EXT}; + +# ----------------------------------------------------------------------------------- +# ----------------------------------------------------------------------------------- + + +# ============================================================================================= +# =============================== PRIVATE METHODS ============================================= +# ============================================================================================= + +# =================================== GENERAL ========================================= +sub read_unihan +{ + my $input = "result.TXT"; + open INF, "<$input" or die "open file err: $input\n"; + + my %Unihan; + while () { + chomp; + my @line = split(/ /,$_); + $Unihan{$line[1]} = $line[0]; + } + close INF; + return \%Unihan; +} + +sub read_bs +{ + my $input = "bs.TXT"; + open INF, "<$input" or die "open file err: $input\n"; + + my @BS; + my $i=0; + while () { + chomp; + my @line = split(/ /,$_); + $BS[$i] = $line[0]; + $i++; + } + close INF; + return \@BS; +} + +sub read_fs_list +{ + #description _ conveniently reads and transforms a feature set list + #param1 _ list + #param2 _ window setup + #@return _ feature set list + + my $fslist = shift; + my $wlen = shift; + my $wcore = shift; + + my @fs; + my $minpos = 0 - $wcore; + my $maxpos = $wlen - $wcore - 1; + foreach my $f (@{$fslist}) { + my @action = split(/[()]/, $f); + my @args; + my $column; + if ($action[0] eq "C") { #MULTIPLE-COLUMNS + my @ARGS = split(/[;]/, $action[1]); + $column = $ARGS[0]; + @args = split(/[,]/, $ARGS[1]); + } + else { + @args = split(/[,]/, $action[1]); + } + my $valid = 1; + if (ATTGEN::check_arguments($action[0])) { + if (scalar(@args) == 0) { die "[WRONG FEATURE!!] a range must be specified for feature $f\n"; } + foreach my $a (@args) { + if (!(($a >= $minpos) and ($a <= $maxpos))) { + die "[WRONG FEATURE!!] invalid range for feature $f [$a]\n"; + } + } + } + my @feature; + if ($action[0] eq "C") { #MULTIPLE-COLUMNS + @feature = ($action[0], $column, \@args); + } + else { + @feature = ($action[0], \@args); + } + push(@fs, \@feature); + } + + return(\@fs); +} + +sub read_fs +{ + #description _ conveniently reads and transforms a feature set list file + #param1 _ filename + #param2 _ window setup + #@return _ feature set list + + my $file = shift; + my $winsetup = shift; + + my $FILE = new IO::File("< $file") or die "Couldn't open input file: $file\n"; + my @list; + + my $minpos = 0 - $winsetup->[1]; + my $maxpos = $winsetup->[0] - $winsetup->[1] - 1; + + while (defined(my $line = $FILE->getline())) { + chomp($line); + my @action = split(/[()]/, $line); + my @args; + my $column; + if ($action[0] eq "C") { #MULTIPLE-COLUMNS + my @ARGS = split(/[;]/, $action[1]); + $column = $ARGS[0]; + @args = split(/[,]/, $ARGS[1]); + } + else { + @args = split(/[,]/, $action[1]); + } + my $valid = 1; + if (ATTGEN::check_arguments($action[0])) { + if (scalar(@args) == 0) { die "[WRONG FEATURE!!] a range must be specified for feature $action[0]\n"; } + foreach my $a (@args) { + if (!(($a >= $minpos) and ($a <= $maxpos))) { + die "[WRONG FEATURE!!] invalid range for feature $action[0] [$a]\n"; + } + } + } + my @feature; + if ($action[0] eq "C") { #MULTIPLE-COLUMNS + @feature = ($action[0], $column, \@args); + } + else { + @feature = ($action[0], \@args); + } + push(@list, \@feature); + } + + $FILE->close(); + + return(\@list); +} + +sub read_config_file +{ + #description _ reads an SVMT configuration file and creates + # the corresponiding config hash. + #param1 _ config-filename + #@return _ config hash reference + + my $config = shift; + + my %CONFIG; + my $fCONFIG = new IO::File("< $config") or die "Couldn't open configuration file: $config\n"; + + $CONFIG{wlen} = $SVMTAGGER::wlength; + $CONFIG{wcore} = $SVMTAGGER::wcorepos; + $CONFIG{F} = 0; + $CONFIG{Ck} = $SVMTAGGER::Ck; + $CONFIG{Cu} = $SVMTAGGER::Cu; + $CONFIG{X} = $SVMTAGGER::X; + $CONFIG{Dratio} = $SVMTAGGER::dicterr; + $CONFIG{Eratio} = $SVMTAGGER::eqerr; + $CONFIG{Kfilter} = $SVMTAGGER::Kfilter; + $CONFIG{Ufilter} = $SVMTAGGER::Ufilter; + $CONFIG{R} = ""; + $CONFIG{BLEX} = ""; + $CONFIG{LEX} = ""; + $CONFIG{A0k} = $SVMTAGGER::rATT0k; + $CONFIG{A1k} = $SVMTAGGER::rATT1k; + $CONFIG{A2k} = $SVMTAGGER::rATT2k; + $CONFIG{A3k} = $SVMTAGGER::rATT3k; + $CONFIG{A4k} = $SVMTAGGER::rATT0k; + $CONFIG{A0u} = $SVMTAGGER::rATT0u; + $CONFIG{A1u} = $SVMTAGGER::rATT1u; + $CONFIG{A2u} = $SVMTAGGER::rATT2u; + $CONFIG{A3u} = $SVMTAGGER::rATT3u; + $CONFIG{A4u} = $SVMTAGGER::rATT0u; + $CONFIG{rmfiles} = $SVMTAGGER::rmfiles; + $CONFIG{remakeFLDS} = $SVMTAGGER::remakeFLDS; + $CONFIG{TRAINP} = $SVMTAGGER::TRAINP; + $CONFIG{VALP} = $SVMTAGGER::VALP; + $CONFIG{TESTP} = $SVMTAGGER::TESTP; + + my @DO; + + my $l = 1; + while (defined(my $line = $fCONFIG->getline())) { + chomp($line); + if (($line ne "") and ($line !~ /^\#.*/)) { + $line =~ s/( )*=( )*/=/g; + if ($line =~ /^do .*/) { + if ($line =~ /^[^=]*=[^=]*/) { print STDERR "ERRONEOUS CONFIG-FILE: $config [line $l]\n"; exit; } + my @command = split(/ +/, $line); + if (scalar(@command) < 3) { print STDERR "ERRONEOUS CONFIG-FILE (Wrong DO Action) [line $l]: $config\n"; exit; } + if ($command[0] eq "do") { + my $extra; + if (scalar(@command) > 3) { $command[3] =~ s/:/;/g; $extra .= ":".$command[3]; } + if (scalar(@command) > 4) { $command[4] =~ s/:/;/g; $extra .= ":".$command[4]; } + if (scalar(@command) > 5) { $command[5] =~ s/:/;/g; $extra .= ":".$command[5]; } + if ($command[1] eq "M0") { + if ($command[2] eq "LR"){ push(@DO, "0:LR$extra"); } + if ($command[2] eq "RL"){ push(@DO, "0:RL$extra"); } + if ($command[2] eq "LRL"){ push(@DO, "0:LR$extra"); push(@DO, "0:RL$extra"); } + } + if ($command[1] eq "M1") { + if ($command[2] eq "LR"){ push(@DO, "1:LR$extra"); } + if ($command[2] eq "RL"){ push(@DO, "1:RL$extra"); } + if ($command[2] eq "LRL"){ push(@DO, "1:LR$extra"); push(@DO, "1:RL$extra"); } + } + if ($command[1] eq "M2") { + if ($command[2] eq "LR"){ push(@DO, "2:LR$extra"); } + if ($command[2] eq "RL"){ push(@DO, "2:RL$extra"); } + if ($command[2] eq "LRL"){ push(@DO, "2:LR$extra"); push(@DO, "2:RL$extra"); } + } + if ($command[1] eq "M3") { + if ($command[2] eq "LR"){ push(@DO, "3:LR$extra"); } + if ($command[2] eq "RL"){ push(@DO, "3:RL$extra"); } + if ($command[2] eq "LRL"){ push(@DO, "3:LR$extra"); push(@DO, "3:RL$extra"); } + } + if ($command[1] eq "M4") { + if ($command[2] eq "LR"){ push(@DO, "4:LR$extra"); } + if ($command[2] eq "RL"){ push(@DO, "4:RL$extra"); } + if ($command[2] eq "LRL"){ push(@DO, "4:LR$extra"); push(@DO, "4:RL$extra"); } + } + } + } + else { + if ($line !~ /^[^=]*=[^=]*/) { print STDERR "ERRONEOUS CONFIG-FILE: $config [line $l]\n"; exit; } + my @entry = split(/=/, $line); + my $opt = $entry[0]; + my @args = split(/ +/, $entry[1]); + if (scalar(@args) == 0) { print STDERR "ERRONEOUS CONFIG-FILE: $config [line $l]\n"; exit; } + if ($opt eq "NAME") { + $CONFIG{model} = $args[0]; + } + elsif ($opt eq "SET") { + if (-e $args[0]) { $CONFIG{set} = $args[0]; } + } + elsif ($opt eq "TRAINP") { $CONFIG{TRAINP} = $args[0]; } + elsif ($opt eq "VALP") { $CONFIG{VALP} = $args[0]; } + elsif ($opt eq "TESTP") { $CONFIG{TESTP} = $args[0]; } + elsif ($opt eq "TRAINSET") { + if (-e $args[0]) { $CONFIG{trainset} = $args[0]; } + } + elsif ($opt eq "VALSET") { + if (-e $args[0]) { $CONFIG{valset} = $args[0]; } + } + elsif ($opt eq "TESTSET") { + if (-e $args[0]) { $CONFIG{testset} = $args[0]; } + } + elsif ($opt eq "SVMDIR") { + if (-e $args[0]) { $CONFIG{SVMDIR} = $args[0]; } + } + elsif ($opt eq "R") { + if (-e $args[0]) { $CONFIG{R} = $args[0]; } + } + elsif ($opt eq "BLEX") { + if (-e $args[0]) { $CONFIG{BLEX} = $args[0]; } + } + elsif ($opt eq "LEX") { + if (-e $args[0]) { $CONFIG{LEX} = $args[0]; } + } + elsif ($opt eq "W") { + if (scalar(@args) < 2) { print STDERR "ERRONEOUS CONFIG-FILE (Wrong Sliding Window Definition) [line $l]: $config\n"; exit; } + if ($args[0] < $args[1]) { print STDERR "ERRONEOUS CONFIG-FILE (Wrong Sliding Window Definition) [line $l]: $config\n"; exit; } + $CONFIG{wlen} = $args[0]; + $CONFIG{wcore} = $args[1]; + } + elsif ($opt eq "F") { + if (scalar(@args) < 2) { print STDERR "ERRONEOUS CONFIG-FILE (Wrong Feature Filtering Definition) [line $l]: $config\n"; exit; } + $CONFIG{F} = 1; + $CONFIG{fmin} = $args[0]; + $CONFIG{maxmapsize} = $args[1]; + } + elsif ($opt eq "CK") { $CONFIG{Ck} = $args[0]; } + elsif ($opt eq "CU") { $CONFIG{Cu} = $args[0]; } + elsif ($opt eq "X") { $CONFIG{X} = $args[0]; } + elsif ($opt eq "Dratio") { $CONFIG{Dratio} = $args[0]; } + elsif ($opt eq "Eratio") { $CONFIG{Eratio} = $args[0]; } + elsif ($opt eq "Kfilter") { $CONFIG{Kfilter} = $args[0]; } + elsif ($opt eq "Ufilter") { $CONFIG{Ufilter} = $args[0]; } + elsif (($opt eq "REMOVE_FILES") or ($opt eq "RM")) { $CONFIG{rmfiles} = $args[0]; } + elsif (($opt eq "REMAKE_FOLDERS") or ($opt eq "RF")) { $CONFIG{remakeFLDS} = $args[0]; } + elsif ($opt eq "AP") { + if (scalar(@args) > 0) { $CONFIG{AP} = \@args; } + } + elsif ($opt eq "UP") { + if (scalar(@args) > 0) { $CONFIG{UP} = \@args; } + } + elsif ($opt eq "A0k") { + if (scalar(@args) > 0) { $CONFIG{A0k} = \@args; } + } + elsif ($opt eq "A1k") { + if (scalar(@args) > 0) { $CONFIG{A1k} = \@args; } + } + elsif ($opt eq "A2k") { + if (scalar(@args) > 0) { $CONFIG{A2k} = \@args; } + } + elsif ($opt eq "A3k") { + if (scalar(@args) > 0) { $CONFIG{A3k} = \@args; } + } + elsif ($opt eq "A4k") { + if (scalar(@args) > 0) { $CONFIG{A4k} = \@args; } + } + elsif ($opt eq "A0u") { + if (scalar(@args) > 0) { $CONFIG{A0u} = \@args; } + } + elsif ($opt eq "A1u") { + if (scalar(@args) > 0) { $CONFIG{A1u} = \@args; } + } + elsif ($opt eq "A2u") { + if (scalar(@args) > 0) { $CONFIG{A2u} = \@args; } + } + elsif ($opt eq "A3u") { + if (scalar(@args) > 0) { $CONFIG{A3u} = \@args; } + } + elsif ($opt eq "A4u") { + if (scalar(@args) > 0) { $CONFIG{A4u} = \@args; } + } + } + } + $l++; + } + if ((!(exists($CONFIG{set}))) and (!(exists($CONFIG{trainset})))) { print STDERR "ERRONEOUS CONFIG-FILE [BAD/MISSING TRAINSET]: $config\n"; exit; } + if (!(exists($CONFIG{model}))) { print STDERR "ERRONEOUS CONFIG-FILE [BAD/MISSING NAME]: $config\n"; exit; } + if (!(exists($CONFIG{SVMDIR}))) { print STDERR "ERRONEOUS CONFIG-FILE [BAD/MISSING SVMDIR]: $config\n"; exit; } + + $CONFIG{do} = \@DO; + + $fCONFIG->close(); + return \%CONFIG; +} + +# --------------- RANDOMIZE ---------------------------------------------------------------- + +sub randomize_sentences{ + #description _ Randomly distributes a corpus sentences into 3 sets... + # (training 60%; validation 20%; test 20%) + #param1 _ input corpus filename + #param2 _ training set filename + #param3 _ validation set filename + #param4 _ test set filename + #param5 _ percentage for training (60%) + #param6 _ percentage for validation (20%) + #param7 _ percentage for test (20%) + + my $smplset = shift; + my $trainset = shift; + my $valset = shift; + my $testset = shift; + my $Xtrain = shift; + my $Xval = shift; + my $Xtest = shift; + + my $CORPUS = new IO::File("< $smplset") or die "Couldn't open input file: $smplset\n"; + my $TRAIN = new IO::File("> $trainset") or die "Couldn't open output file: $trainset\n"; + my $VAL = new IO::File("> $valset") or die "Couldn't open output file: $valset\n"; + my $TEST = new IO::File("> $testset") or die "Couldn't open output file: $testset\n"; + + print "RANDOMLY SPLITTNG THE CORPUS...<$smplset> INTO\n"; + my $pctrain = $Xtrain / ($Xtrain + $Xval + $Xtest); + my $pcval = $Xval / ($Xtrain + $Xval + $Xtest); + my $pctest = $Xtest / ($Xtrain + $Xval + $Xtest); + print "<$trainset> - ", $pctrain * 100, "%\n"; + print "<$valset> - ", $pcval * 100, "%\n"; + print "<$testset> - ", $pctest * 100, "%\n"; + + srand(); + my $rn; + + my $ntrain = 0; + my $nval = 0; + my $ntest = 0; + my $wtrain = 0; + my $wval = 0; + my $wtest = 0; + + my $sentence = ""; + my $nwords = 0; + while (defined(my $line = $CORPUS->getline())) { + $nwords++; + $sentence .= $line; + chomp($line); + my @item = split($COMMON::in_valseparator, $line); + if (COMMON::end_of_sentence($item[0])) { + $rn = rand($Xtrain + $Xval + $Xtest); + if ($rn < $Xtrain) { print $TRAIN $sentence; $ntrain++; $wtrain += $nwords; } + elsif (($rn >= $Xtrain) && ($rn < $Xtrain + $Xval)) { print $VAL $sentence; $nval++; $wval += $nwords; } + elsif (($rn >= $Xtrain + $Xval) && ($rn <= $Xtrain + $Xval + $Xtest)) { print $TEST $sentence; $ntest++; $wtest += $nwords;} + $sentence = ""; + $nwords = 0; + } + } + + print "TRAINING -> $ntrain sentences :: $wtrain words\n"; + print "VALIDATION -> $nval sentences :: $wval words\n"; + print "TEST -> $ntest sentences :: $wtest words\n"; + + $TEST->close(); + $VAL->close(); + $TRAIN->close(); + $CORPUS->close(); +} + +# --------------- DICTIONARY --------------------------------------------------------------- + +sub create_dictionary +{ + #description _ dictionary creation [construction, expansion, repairing] + #param1 _ source corpus + #param2 _ source dictionary (for unsupervised learning) + #param3 _ backup lexicon + #param4 _ repairing list + #param5 _ dictionary error ratio for automatic repairing + #param6 _ target dictionary filename + #param7 _ report filename + #param8 _ verbosity + #@return _ supervised corpus? + + my $trainset = shift; + my $lex = shift; + my $blex = shift; + my $RLIST = shift; + my $Dratio = shift; + my $dict = shift; + my $reportfile = shift; + my $verbose = shift; + + if ($verbose > $COMMON::verbose1) { COMMON::report($reportfile, "CREATING DICTIONARY <$dict> FROM <$trainset>\n"); } + my $supervised = SVMTAGGER::generate_dictionary($trainset, $dict, 0, -1); + if (!$supervised) { + if ($lex ne "") { + if ($verbose > $COMMON::verbose1) { COMMON::report($reportfile, "LEXICON... <$lex>\n"); } + system "cp $lex $dict"; + } + else { die "[LEX] UNSUPERVISED LEXICON UNDEFINED\n"; } + } + srand(); + my $DICT = $dict.".".rand(100000); + if (($blex ne "") and (-e $blex)) { + SVMTAGGER::expand_dictionary($dict, $blex, $DICT); + if ($verbose > $COMMON::verbose1) { COMMON::report($reportfile, "EXPANDING DICTIONARY <$dict> [using ".$blex."]\n"); } + system ("mv $DICT $dict"); + } + if (($RLIST ne "") and (-e $RLIST)) { + my $N = SVMTAGGER::repair_dictionary($dict, $RLIST, $DICT); + if ($verbose > $COMMON::verbose1) { COMMON::report($reportfile, "REPAIRING DICTIONARY <$dict> [using ".$RLIST."] (#REPAIRINGS = $N)\n"); } + system ("mv $DICT $dict"); + } + + my $N = SVMTAGGER::repair_dictionary_H($dict, $DICT, $Dratio); + if ($verbose > $COMMON::verbose1) { COMMON::report($reportfile, "AUTOMATICALLY REPAIRING DICTIONARY <$dict> [$Dratio] (#REPAIRINGS = $N)\n"); } + system ("mv $DICT $dict"); + + return $supervised; +} + +sub generate_dictionary +{ + #description _ generates a dictionary out from a given corpus + # skipping the portion from [$start..$end] both + # $start and $end skipped + #param1 _ TRAINING CORPUS filename + #param2 _ TARGET DICTIONARY filename + #param3 _ slice START POINT (if START == 0 then read from the beginning of the corpus) + #param4 _ slice END POINT (if END == -1 then read until the end of the corpus) + #@return _ supervised corpus? + + my $corpus = shift; + my $dict = shift; + my $start = shift; + my $end = shift; + + #Dictionary format : {(POS1, n_oc1)..(POSN, n_ocN)} + + my $CORPUS = new IO::File("< $corpus") or die "Couldn't open input file: $corpus\n"; + my $supervised = 1; + + my $i = 0; + my %DICT; + while (defined(my $line = $CORPUS->getline())) { + chomp($line); + if ($line ne "") { + if (($i < $start) or ($i > $end)) { + my @entry = split($COMMON::in_valseparator, $line); + if (scalar(@entry) > 0) { #line is not empty + if (scalar(@entry) == 1) { + if (exists($DICT{$entry[0]})) { + $DICT{$entry[0]}[0]++; + } + else { + my %l; + my @v = (1, \%l); + $DICT{$entry[0]} = \@v; + } + $supervised = 0; + } + else { + #%DICT --> [n_occurrences] [%l --> {(POS1, n_oc1)..(POSN, n_ocN)}] + if (exists($DICT{$entry[0]})) { + $DICT{$entry[0]}[0]++; + my $l = $DICT{$entry[0]}[1]; + if (exists($l->{$entry[1]})) { $l->{$entry[1]}++; } + else { $l->{$entry[1]} = 1; } + } + else { + my %l = ("$entry[1]" => 1); + my @v = (1, \%l); + $DICT{$entry[0]} = \@v; + } + } + } + } + } + $i++; + } + + $CORPUS->close(); + + my $DICTIONARY = new IO::File("> $dict") or die "Couldn't open output file: $dict\n"; + #Dictionary format : {(POS1, n_oc1)..(POSN, n_ocN)} + foreach my $w (sort keys %DICT) { + my $entry = $w.$COMMON::d_separator.$DICT{$w}[0].$COMMON::d_separator.scalar(keys %{$DICT{$w}[1]}); + foreach my $p (sort keys %{$DICT{$w}[1]}) { #sorting is important for ambiguity classes + $entry .= $COMMON::d_separator.$p.$COMMON::d_separator.$DICT{$w}[1]->{$p}; + } + $entry =~ s/ +/ /g; + print $DICTIONARY "$entry\n"; + } + + $DICTIONARY->close(); + + return $supervised; +} + +sub repair_dictionary +{ + #description _ wisely repairs a SVMT dictionary file + #param1 _ dictionary to repair filename + #param2 _ 200 repaired word list + #param3 _ TARGET DICTIONARY filename + #@return _ number of repairings + + my $dict = shift; + my $WSJ200 = shift; + my $DICT = shift; + + my $N = 0; + + my $LEX = new IO::File("< $dict") or die "Couldn't open input file: $dict\n"; + my $LIST = new IO::File("< $WSJ200") or die "Couldn't open input file: $WSJ200\n"; + my $OUT = new IO::File("> $DICT") or die "Couldn't open output file: $DICT\n"; + + my %NEW; + while (defined(my $elem = $LIST->getline())) { + chomp($elem); + my @l = split($COMMON::d_separator, $elem); + my $key = $l[0]; + shift(@l); + shift(@l); + shift(@l); + my $i = 0; + my %h; + while ($i < scalar(@l)) { + $h{$l[$i]} = 1; + $i+=2; + } + $NEW{$key} = \%h; + } + + my %OUTH; + my %CARD; + my %CARDPUNCT; + my %CARDSUFFIX; + my %CARDSEPS; + $CARD{"n_occ"} = 0; + $CARDPUNCT{"n_occ"} = 0; + $CARDSUFFIX{"n_occ"} = 0; + $CARDSEPS{"n_occ"} = 0; + + while (defined(my $entry = $LEX->getline())) { + chomp($entry); + my @line = split($COMMON::d_separator, $entry); + my $word = $line[0]; + my $nocc = $line[1]; + my $npos = $line[2]; + if ($word =~ /^[0-9]+$/) { + $CARD{"n_occ"} += $nocc; + my $i = 3; + while ($i < scalar(@line)) { + if (exists($CARD{$line[$i]})) { $CARD{$line[$i]} += $line[$i+1]; } + else { $CARD{$line[$i]} = $line[$i+1]; } + $i+=2 + } + } + elsif ($word =~ /^[0-9]+[\.\,\!\?:]+$/) { + $CARDPUNCT{"n_occ"} += $nocc; + my $i = 3; + while ($i < scalar(@line)) { + if (exists($CARDPUNCT{$line[$i]})) { $CARDPUNCT{$line[$i]} += $line[$i+1]; } + else { $CARDPUNCT{$line[$i]} = $line[$i+1]; } + $i+=2 + } + } + elsif ($word =~ /^[0-9]+[:\.\,\/\\\-][0-9\.\,\-\\\/]+$/) { + $CARDSEPS{"n_occ"} += $nocc; + my $i = 3; + while ($i < scalar(@line)) { + if (exists($CARDSEPS{$line[$i]})) { $CARDSEPS{$line[$i]} += $line[$i+1]; } + else { $CARDSEPS{$line[$i]} = $line[$i+1]; } + $i+=2 + } + } + elsif ($word =~ /^[0-9]+[^0-9]+.*$/) { + $CARDSUFFIX{"n_occ"} += $nocc; + my $i = 3; + while ($i < scalar(@line)) { + if (exists($CARDSUFFIX{$line[$i]})) { $CARDSUFFIX{$line[$i]} += $line[$i+1]; } + else { $CARDSUFFIX{$line[$i]} = $line[$i+1]; } + $i+=2 + } + } + + if (exists($NEW{$word})) { # entry must be repaired + my $newline; + shift(@line); + shift(@line); + shift(@line); + my $i = 0; + my $newnpos = 0; + while ($i < scalar(@line)) { + if (exists($NEW{$word}->{$line[$i]})) { $newline .= $COMMON::d_separator.$line[$i].$COMMON::d_separator.$line[$i+1]; $newnpos++; } + else { $N++; } + $i+=2; + } + $OUTH{$word} = $word.$COMMON::d_separator.$nocc.$COMMON::d_separator.$newnpos.$newline; + } + else { # entry stays the same + $OUTH{$word} = $entry; + } + } + + # ------------------------------------------------------------------ + my $len = scalar(keys(%CARD)) - 1; + my $card = "\@CARD ".$CARD{"n_occ"}.$COMMON::d_separator.$len.$COMMON::d_separator; + foreach my $c (sort keys %CARD) { + if ($c ne "n_occ") { $card .= $c.$COMMON::d_separator.$CARD{$c}.$COMMON::d_separator; } + } + chop($card); + $OUTH{"\@CARD"} = $card; + # ------------------------------------------------------------------ + $len = scalar(keys(%CARDPUNCT)) - 1; + $card = "\@CARDPUNCT ".$CARDPUNCT{"n_occ"}.$COMMON::d_separator.$len.$COMMON::d_separator; + foreach my $c (sort keys %CARDPUNCT) { + if ($c ne "n_occ") { $card .= $c.$COMMON::d_separator.$CARDPUNCT{$c}.$COMMON::d_separator; } + } + chop($card); + $OUTH{"\@CARDPUNCT"} = $card; + # ------------------------------------------------------------------ + $len = scalar(keys(%CARDSUFFIX)) - 1; + $card = "\@CARDSUFFIX ".$CARDSUFFIX{"n_occ"}.$COMMON::d_separator.$len.$COMMON::d_separator; + foreach my $c (sort keys %CARDSUFFIX) { + if ($c ne "n_occ") { $card .= $c.$COMMON::d_separator.$CARDSUFFIX{$c}.$COMMON::d_separator; } + } + chop($card); + $OUTH{"\@CARDSUFFIX"} = $card; + # ------------------------------------------------------------------ + $len = scalar(keys(%CARDSEPS)) - 1; + $card = "\@CARDSEPS ".$CARDSEPS{"n_occ"}.$COMMON::d_separator.$len.$COMMON::d_separator; + foreach my $c (sort keys %CARDSEPS) { + if ($c ne "n_occ") { $card .= $c.$COMMON::d_separator.$CARDSEPS{$c}.$COMMON::d_separator; } + } + chop($card); + $OUTH{"\@CARDSEPS"} = $card; + # ------------------------------------------------------------------ + + foreach my $v (sort keys %OUTH) { + my $entry .= $OUTH{$v}; + $entry =~ s/ +/ /g; + print $OUT "$entry\n"; + } + + # ------------------------------------------------------------------ + + $LEX->close(); + $LIST->close(); + $OUT->close(); + + return($N); +} + +sub repair_dictionary_H +{ + #description _ wisely repairs a SVMT dictionary file + #param1 _ dictionary to repair filename + #param2 _ TARGET DICTIONARY filename + #param3 _ relevance coefficient + #return _ number of repairings + + my $dict = shift; + my $DICT = shift; + my $CR = shift; + + my $N = 0; + + my $LEX = new IO::File("< $dict") or die "Couldn't open input file: $dict\n"; + my $OUT = new IO::File("> $DICT") or die "Couldn't open output file: $DICT\n"; + + my %OUTH; + my %CARD; + my %CARDPUNCT; + my %CARDSUFFIX; + my %CARDSEPS; + $CARD{"n_occ"} = 0; + $CARDPUNCT{"n_occ"} = 0; + $CARDSUFFIX{"n_occ"} = 0; + $CARDSEPS{"n_occ"} = 0; + + while (defined(my $entry = $LEX->getline())) { + chomp($entry); + my @line = split($COMMON::d_separator, $entry); + my $word = $line[0]; + my $nocc = $line[1]; + my $npos = $line[2]; + if ($word =~ /^[0-9]+$/) { + $CARD{"n_occ"} += $nocc; + my $i = 3; + while ($i < scalar(@line)) { + if (exists($CARD{$line[$i]})) { $CARD{$line[$i]} += $line[$i+1]; } + else { $CARD{$line[$i]} = $line[$i+1]; } + $i+=2 + } + } + elsif ($word =~ /^[0-9]+[\.\,\!\?:]+$/) { + $CARDPUNCT{"n_occ"} += $nocc; + my $i = 3; + while ($i < scalar(@line)) { + if (exists($CARDPUNCT{$line[$i]})) { $CARDPUNCT{$line[$i]} += $line[$i+1]; } + else { $CARDPUNCT{$line[$i]} = $line[$i+1]; } + $i+=2 + } + } + elsif ($word =~ /^[0-9]+[:\.\,\/\\\-][0-9\.\,\-\\\/]+$/) { + $CARDSEPS{"n_occ"} += $nocc; + my $i = 3; + while ($i < scalar(@line)) { + if (exists($CARDSEPS{$line[$i]})) { $CARDSEPS{$line[$i]} += $line[$i+1]; } + else { $CARDSEPS{$line[$i]} = $line[$i+1]; } + $i+=2 + } + } + elsif ($word =~ /^[0-9]+[^0-9]+.*$/) { + $CARDSUFFIX{"n_occ"} += $nocc; + my $i = 3; + while ($i < scalar(@line)) { + if (exists($CARDSUFFIX{$line[$i]})) { $CARDSUFFIX{$line[$i]} += $line[$i+1]; } + else { $CARDSUFFIX{$line[$i]} = $line[$i+1]; } + $i+=2 + } + } + + my $newline; + my $neww = shift(@line); + my $newn = shift(@line); + my $newp = shift(@line); + my $i = 0; + while ($i < scalar(@line)) { + if ($line[$i+1] < ($newn * $CR)) { + $N++; + $newp--; + $newn -= $line[$i+1]; + } + else { + $newline .= $COMMON::d_separator.$line[$i].$COMMON::d_separator.$line[$i+1]; + } + $i+=2; + } + $OUTH{$word} = "$neww $newn $newp$newline"; + + } + + # ------------------------------------------------------------------ + my $len = scalar(keys(%CARD)) - 1; + my $card = "\@CARD ".$CARD{"n_occ"}.$COMMON::d_separator.$len.$COMMON::d_separator; + foreach my $c (sort keys %CARD) { + if ($c ne "n_occ") { $card .= $c.$COMMON::d_separator.$CARD{$c}.$COMMON::d_separator; } + } + chop($card); + $OUTH{"\@CARD"} = $card; + # ------------------------------------------------------------------ + $len = scalar(keys(%CARDPUNCT)) - 1; + $card = "\@CARDPUNCT ".$CARDPUNCT{"n_occ"}.$COMMON::d_separator.$len.$COMMON::d_separator; + foreach my $c (sort keys %CARDPUNCT) { + if ($c ne "n_occ") { $card .= $c.$COMMON::d_separator.$CARDPUNCT{$c}.$COMMON::d_separator; } + } + chop($card); + $OUTH{"\@CARDPUNCT"} = $card; + # ------------------------------------------------------------------ + $len = scalar(keys(%CARDSUFFIX)) - 1; + $card = "\@CARDSUFFIX ".$CARDSUFFIX{"n_occ"}.$COMMON::d_separator.$len.$COMMON::d_separator; + foreach my $c (sort keys %CARDSUFFIX) { + if ($c ne "n_occ") { $card .= $c.$COMMON::d_separator.$CARDSUFFIX{$c}.$COMMON::d_separator; } + } + chop($card); + $OUTH{"\@CARDSUFFIX"} = $card; + # ------------------------------------------------------------------ + $len = scalar(keys(%CARDSEPS)) - 1; + $card = "\@CARDSEPS ".$CARDSEPS{"n_occ"}.$COMMON::d_separator.$len.$COMMON::d_separator; + foreach my $c (sort keys %CARDSEPS) { + if ($c ne "n_occ") { $card .= $c.$COMMON::d_separator.$CARDSEPS{$c}.$COMMON::d_separator; } + } + chop($card); + $OUTH{"\@CARDSEPS"} = $card; + # ------------------------------------------------------------------ + + foreach my $v (sort keys %OUTH) { + my $entry .= $OUTH{$v}; + $entry =~ s/ +/ /g; + print $OUT "$entry\n"; + } + + # ------------------------------------------------------------------ + + $LEX->close(); + $OUT->close(); + + return($N); +} + +sub enrich_dictionary +{ + #description _ a dictionary is enriched + # (entries matching an expanded dictionary are enriched) + #param1 _ dictionary to enrich (filename) + #param2 _ expanded dictionary (filename) + + my $dict = shift; + my $dictexpnd = shift; + + my $DICT = new IO::File("< $dict") or die "Couldn't open input file: $dict\n"; + my $DICTEXPND = new IO::File("< $dictexpnd") or die "Couldn't open input file: $dictexpnd\n"; + + #%DICT --> [n_occurrences] [n_pos --> {(POS1, n_oc1)..(POSN, n_ocN)}] + my %D; + while (defined(my $line = $DICT->getline())) { + chomp($line); + my @entry = split($COMMON::d_separator, $line); + my %posl; + my $i = 0; + while ($i < 2 * $entry[2]) { + $posl{$entry[$i+3]} = $entry[$i+4]; + $i += 2; + } + my @l = ($entry[1], \%posl); + $D{$entry[0]} = \@l; + } + $DICT->close(); + + while (defined(my $line = $DICTEXPND->getline())) { + chomp($line); + my @entry = split($COMMON::d_separator, $line); + if (exists($D{$entry[0]})) { + my $i = 0; + while ($i < 2 * $entry[2]) { + if (!exists($D{$entry[0]}->[1]->{$entry[$i+3]})) { + $D{$entry[0]}->[1]->{$entry[$i+3]} = $entry[$i+4]; + } + $i += 2; + } + } + } + $DICTEXPND->close(); + + my $DICT = new IO::File("> $dict") or die "Couldn't open output file: $dict\n"; + foreach my $w (sort keys %D) { + my $entry = $w.$COMMON::d_separator.$D{$w}[0].$COMMON::d_separator.scalar(keys %{$D{$w}[1]}); + foreach my $p (sort keys %{$D{$w}[1]}) { + $entry .= $COMMON::d_separator.$p.$COMMON::d_separator.$D{$w}[1]->{$p}; + } + $entry =~ s/ +/ /g; + print $DICT "$entry\n"; + } + $DICT->close(); + +} + +sub expand_dictionary +{ + #description _ merges two different SVMT dictionary files onto a single one + # (entries matching and not matching) + #param1 _ dictionary to expand filename + #param2 _ backup lexicon + #param3 _ TARGET DICTIONARY filename + #param4 _ VERBOSE + + my $dict = shift; + my $blex = shift; + my $DICT = shift; + my $verbose = shift; + + my $LEX = new IO::File("< $dict") or die "Couldn't open input file: $dict\n"; + my $BLEX = new IO::File("< $blex") or die "Couldn't open input file: $blex\n"; + my $OUT = new IO::File("> $DICT") or die "Couldn't open output file: $DICT\n"; + + + if ($verbose) { print STDERR "READING DICTIONARY <$dict>\n"; } + my %OUTH; + my $iter = 0; + while (defined(my $entry = $LEX->getline())) { + chomp($entry); + my @line = split($COMMON::d_separator, $entry); + my $word = shift(@line); + my $nocc = shift(@line); + my $npos = shift(@line); + my $i = 0; + my %h; + while ($i < scalar(@line)) { #reading dictionary entry + $h{$line[$i]} = $line[$i+1]; + $i+=2; + } + my @laux = ($nocc, $npos, \%h); + $OUTH{$word} = \@laux; + $iter++; + if ($verbose) { COMMON::show_progress($iter, $COMMON::progress1, $COMMON::progress2); } + } + $LEX->close(); + + if ($verbose) { print STDERR ".$iter [DONE]\nREADING BACKUP LEXICON <$blex>\n"; } + my %NEW; + $iter = 0; + while (defined(my $elem = $BLEX->getline())) { + chomp($elem); + my @line = split($COMMON::d_separator, $elem); + my $word = shift(@line); + my $nocc = shift(@line); + my $npos = shift(@line); + if (exists($OUTH{$word})) { #entry may be expanded / may not + my $i = 0; + while ($i < scalar(@line)) { + if (!(exists($OUTH{$word}->[2]->{$line[$i]}))) { + $OUTH{$word}->[1]++; + $OUTH{$word}->[2]->{$line[$i]} = 0; + } + $OUTH{$word}->[2]->{$line[$i]} += $line[$i+1]; + $OUTH{$word}->[0] += $line[$i+1]; + $i+=2; + } + } + else { #new entry is appended + $OUTH{$word} = $elem; + my $i = 0; + my %h; + while ($i < scalar(@line)) { #reading dictionary entry + $h{$line[$i]} = $line[$i+1]; + $i+=2; + } + my @laux = ($nocc, $npos, \%h); + $OUTH{$word} = \@laux; + } + $iter++; + if ($verbose) { COMMON::show_progress($iter, $COMMON::progress1, $COMMON::progress2); } + } + $BLEX->close(); + + if ($verbose) { print STDERR ".$iter [DONE]\nWRITING EXPANDED DICTIONARY <$DICT>\n"; } + $iter = 0; + foreach my $v (sort keys %OUTH) { + my $entry = $v.$COMMON::d_separator.$OUTH{$v}[0].$COMMON::d_separator.$OUTH{$v}[1]; + foreach my $p (sort keys %{$OUTH{$v}[2]}) { + $entry .= $COMMON::d_separator.$p.$COMMON::d_separator.$OUTH{$v}[2]->{$p}; + } + $entry =~ s/ +/ /g; + print $OUT "$entry\n"; + $iter++; + if ($verbose) { COMMON::show_progress($iter, $COMMON::progress1, $COMMON::progress2); } + } + $OUT->close(); + + if ($verbose) { print STDERR ".$iter [DONE]\n"; } +} + +# --------------- AUXILIAR ----------------------------------------------------------------- + +sub any_unknown +{ + #description _ returns true only if true if there's any unknown word at the right of the + # core previous to the end/beginning of the sentence. + #param1 _ window containing the candidate to be ambiguous word as its core item + #param2 _ dictionary object reference + #@return _ true if there's any unknown word at the right of the core previous + # to the end/beginning of the sentence. + + my $rwin = shift; + my $rdict = shift; + + my $i = $rwin->get_core; + my $eos = 0; + my $unknown = 0; + while (($i < $rwin->get_len) and (!$eos) and (!$unknown)) { + my $w = $rwin->get_word($i); + if (COMMON::end_of_sentence($w) or ($w eq $COMMON::emptyword)) { $eos = 1; } + else { $unknown = $rdict->unknown_word($w); } + $i++; + } + + return $unknown; +} + +sub frequent_word_window +{ + #description _ returns true only if the window core word is reasonably frequent + #param1 _ window containing the candidate to be ambiguous word as its core item + #param2 _ dictionary object reference + + my $rwin = shift; + my $rdict = shift; + + return $rdict->frequent_word($rwin->get_core_word()); +} + +sub ambiguous_word_window +{ + #description _ returns true only if the window core word is a POS ambiguous one + #param1 _ window containing the candidate to be ambiguous word as its core item + #param2 _ dictionary object reference + #param3 _ mode (generate_features 0-ambiguous-right :: 1-unambiguous-right :: 2-no-right) + # ( 3-unsupervised :: 4-unkown words on training) + + my $rwin = shift; + my $rdict = shift; + my $mode = shift; + + if ($mode == $COMMON::mode3) { return $rdict->ambiguous_word($rwin->get_core_actual_word()); } + else { return $rdict->ambiguous_word($rwin->get_core_word()); } + + #return $rdict->ambiguous_word($rwin->get_core_word()); +} + +sub unknown_word_window +{ + #description _ returns true only if the window core word is an unknown one + #param1 _ window containing the candidate to be unknown word as its core item + #param2 _ dictionary object reference where to look up + #param3 _ mode (generate_features 0-ambiguous-right :: 1-unambiguous-right :: 2-no-right) + # ( 3-unsupervised :: 4-unkown words on training) + + + my $rwin = shift; + my $rdict = shift; + my $mode = shift; + + if ($mode == $COMMON::mode3) { return $rdict->unknown_word($rwin->get_core_actual_word()); } + else { return $rdict->unknown_word($rwin->get_core_word()); } + + #return $rdict->unknown_word($rwin->get_core_word()); +} + +sub sfp_window{ + #description _ returns true only if the window core word POS is a + # sentence-final punctuation one. + #param1 _ window reference + + my $rwin = shift; + + return (COMMON::end_of_sentence($rwin->get_core_word())); +} + +sub get_sentence_info +{ + #description _ some sentence general information is retrieved. + #param1 _ CORPUS filename + #param2 _ text direction "LR" for left-to-right ; "RL" for right-to-left + #param3 _ current token being read + #@return - punctuation ([.?!]) + + my $CORPUS = shift; + my $direction = shift; + my $token = shift; + + my @info; + + my $current = $CORPUS->getpos; + + my $lastw = $token; + + if ($direction eq $COMMON::lrmode) { # left-to-right (as usual) + # last word ------------------------------------ + my $stop = 0; + my @entry; + while ((my $line = $CORPUS->getline()) and (!$stop)) { + chomp($line); + @entry = split($COMMON::in_valseparator, $line); + if (COMMON::end_of_sentence($entry[0])) { $stop = 1; } + } + # ---------------------------------------------- + if ($stop) { $lastw = $entry[0]; } + } + + $CORPUS->setpos($current); + + push(@info, $lastw); + + return \@info; +} + +sub get_sentence_info_list +{ + #description _ some sentence general information is retrieved. + #param1 _ CORPUS list reference + #param2 _ text direction "LR" for left-to-right ; "RL" for right-to-left + #param3 _ current position being read + #@return - punctuation ([.?!]) + + my $LIST = shift; + my $direction = shift; + my $i = shift; + + my @entry = split(/$COMMON::in_valseparator/, $LIST->[$i]); + my $lastw = $entry[0]; + + if ($direction eq $COMMON::lrmode) { # left-to-right (as usual) + # last word ------------------------------------ + my $stop = 0; + my $SIZE = scalar(@{$LIST}); + while (($i < $SIZE) and (!$stop)) { + @entry = split($COMMON::in_valseparator, $LIST->[$i]); + if (COMMON::end_of_sentence($entry[0])) { $stop = 1; } + $i++; + } + if ($stop) { $lastw = $entry[0]; } + } + + my @info; + push(@info, $lastw); + + return \@info; +} + + +sub get_sentence_info_list_entry +{ + #description _ some sentence general information is retrieved. + #param1 _ CORPUS entry list reference + #param2 _ text direction "LR" for left-to-right ; "RL" for right-to-left + #param3 _ current position being read + #@return - punctuation ([.?!]) + + my $LIST = shift; + my $direction = shift; + my $i = shift; + + my $lastw = $LIST->[$i]->get_word; + + if ($direction eq $COMMON::lrmode) { # left-to-right (as usual) + # last word ------------------------------------ + my $stop = 0; + my $SIZE = scalar(@{$LIST}); + my $w; + while (($i < $SIZE) and (!$stop)) { + $w = $LIST->[$i]->get_word; + if (COMMON::end_of_sentence($w)) { $stop = 1; } + $i++; + } + if ($stop) { $lastw = $w; } + } + + my @info; + push(@info, $lastw); + + return \@info; +} + +# ============================== SAMPLE EXTRACTION ==================================== + +sub do_attribs_kn +{ + #description _ creates a convenient set of samples (attrib:value list) out from a given corpus + #param1 _ CORPUS filename + #param2 _ DICTIONARY object reference + #param3 _ target SAMPLE SET filename + #param4 _ text direction "LR" for left-to-right ; "RL" for right-to-left + #param5 _ mode (generate_features 0-ambiguous-right :: 1-unambiguous-right :: 2-no-right) + # ( 3-unsupervised :: 4-unkown words on training) + #param6 _ configuration hash reference + #param7 _ report file + #param8 _ verbosity [0..3] + #@return _ number of positive and negative examples + + my $corpus = shift; + my $rdict = shift; + my $smplset = shift; + my $direction = shift; + my $mode = shift; + my $config = shift; + my $report = shift; + my $verbose = shift; + my $Unihan = shift; + my $BS = shift; + + my $CORPUS = new IO::File("< $corpus") or die "Couldn't open input file: $corpus\n"; + my $SMPLSET = new IO::File("> $smplset") or die "Couldn't open output file: $smplset\n"; + if ($verbose > $COMMON::verbose1) { COMMON::report($report, "FEATURE EXTRACTION from < $corpus > onto < $smplset > ..."); } + if ($verbose > $COMMON::verbose2) { COMMON::report($report, "\n"); } + + my $fs; + if ($mode == $COMMON::mode0) { + $fs = SVMTAGGER::read_fs_list($config->{A0k}, $config->{wlen}, $config->{wcore}); + } + elsif ($mode == $COMMON::mode1) { + $fs = SVMTAGGER::read_fs_list($config->{A1k}, $config->{wlen}, $config->{wcore}); + } + elsif ($mode == $COMMON::mode2) { + $fs = SVMTAGGER::read_fs_list($config->{A2k}, $config->{wlen}, $config->{wcore}); + } + elsif ($mode == $COMMON::mode3) { + $fs = SVMTAGGER::read_fs_list($config->{A3k}, $config->{wlen}, $config->{wcore}); + } + else { die "BAD MODE [$mode]\n"; } + + #sliding window generation + my $rwindow = new SWINDOW($config->{wlen}, $config->{wcore}); + + my $sinfo; + if ($direction eq $COMMON::lrmode) { $sinfo = get_sentence_info($CORPUS, $direction, ""); } + my $iter = 0; + + while (defined(my $line = $CORPUS->getline())) { + chomp($line); + + my @entry = split($COMMON::in_valseparator, $line); + if (COMMON::end_of_sentence($entry[0])) { + $sinfo = get_sentence_info($CORPUS, $direction, $entry[0]); + } + + $iter++; + if ($verbose > $COMMON::verbose1) { COMMON::show_progress_stdout($iter, $COMMON::progress1, $COMMON::progress2); } + + #shift sliding window one position left + $rwindow->lshift(1); + #push current entry onto the sliding window + my @columns = @entry; shift(@columns); shift(@columns); + $rwindow->push($entry[0], (scalar(@entry) > 1)? $entry[1] : $rdict->tag($entry[0]), $config->{wlen} - 1, \@columns); + + #print STDERR Dumper($rwindow); + + #is the core item active? + if ($rwindow->active()) { + #is the core word ambiguous? + #$rwindow->print; + if ((($mode == $COMMON::mode3) and (!(ambiguous_word_window($rwindow, $rdict, $mode)))) or (($mode != $COMMON::mode3) and (ambiguous_word_window($rwindow, $rdict, $mode)))) { + #window preparation + my $rattribw = $rwindow->prepare($direction); + #window attribute generation + my $rattribs = ATTGEN::generate_features($rattribw, $rdict, $sinfo, $mode, $fs,$Unihan,$BS);# have modified add $Unihan + #write sample onto file + SVM::write_sample($rwindow->get_core_word().$COMMON::attvalseparator.$rwindow->get_core_pos(), $rattribs, $SMPLSET); + } + } + } + + my $i = $config->{wlen} - $config->{wcore} - 1; + while ($i > 0) { #process last words + $rwindow->lshift(1); + if ($rwindow->active()) { + if ((($mode == $COMMON::mode3) and (!(ambiguous_word_window($rwindow, $rdict, $mode)))) or (($mode != $COMMON::mode3) and (ambiguous_word_window($rwindow, $rdict, $mode)))) { + my $rattribw = $rwindow->prepare($direction); + my $rattribs = ATTGEN::generate_features($rattribw, $rdict, $sinfo, $mode, $fs,$Unihan,$BS);# have modified add $Unihan + SVM::write_sample($rwindow->get_core_word().$COMMON::attvalseparator.$rwindow->get_core_pos(), $rattribs, $SMPLSET); + } + } + $i--; + } + + if ($verbose > $COMMON::verbose1) { COMMON::report($report, "...$iter WORDS [DONE]\n"); } + + $CORPUS->close(); + $SMPLSET->close(); +} + +sub do_attribs_kn_unk +{ + #description _ creates a convenient set of samples (attrib:value list) out from a given corpus + # for unknown words + #param1 _ MODEL NAME (WSJ / WSJTP) + #param2 _ TRAINING CORPUS filename + #param3 _ target SAMPLE SET filename + #param4 _ text direction "LR" for left-to-right ; "RL" for right-to-left + #param5 _ mode (generate_features 4-ambiguous-right ++ unknown words on training) + #param6 _ configuration hash reference + #param7 _ report file + #param8 _ verbosity [0..3] + + my $model = shift; + my $corpus = shift; + my $smplset = shift; + my $direction = shift; + my $mode = shift; + my $config = shift; + my $report = shift; + my $verbose = shift; + my $Unihan = shift; + my $BS = shift; + + my $fambp = $model.".".$COMMON::AMBPEXT; + my $funkp = $model.".".$COMMON::UNKPEXT; + + my $CORPUS = new IO::File("< $corpus") or die "Couldn't open input file: $corpus\n"; + my $SMPLSET = new IO::File("> $smplset") or die "Couldn't open output file: $smplset\n"; + if ($verbose > $COMMON::verbose1) { COMMON::report($report, "FEATURE EXTRACTION from < $corpus > onto < $smplset > ..."); } + if ($verbose > $COMMON::verbose2) { COMMON::report($report, "\n"); } + + srand(); + my $fs; + if ($mode == $COMMON::mode4) { $fs = SVMTAGGER::read_fs_list($config->{A4k}, $config->{wlen}, $config->{wcore}); } + else { die "BAD MODE [$mode]\n"; } + + my $dict = $model.".".$COMMON::DICTEXT.".".rand(100000); + my $DICT = $dict.".R"; + my $rdict; + #sliding window generation + my $rwindow = new SWINDOW($config->{wlen}, $config->{wcore}); + + my ($trainsize, $nchunks) = SVMTAGGER::get_train_size($corpus, $config->{X}); + if ($verbose > $COMMON::verbose2) { print "CHUNKSIZE = $trainsize\nnCHUNKS = $nchunks\n"; } + my $sinfo; + if ($direction eq $COMMON::lrmode) { $sinfo = SVMTAGGER::get_sentence_info($CORPUS, $direction, ""); } + my $iter = 0; + my $chunk = 0; + while (defined(my $line = $CORPUS->getline())) { + chomp($line); + + my @entry = split($COMMON::in_valseparator, $line); + if (COMMON::end_of_sentence($entry[0])) { + $sinfo = get_sentence_info($CORPUS, $direction, $entry[0]); + } + + if (($iter % $trainsize) == 0) { + if ($verbose > $COMMON::verbose2) { print "STARTING CHUNK $chunk : reading word -> $iter\n"; } + #dictionary generation + SVMTAGGER::generate_dictionary($corpus, $dict, $chunk * $trainsize, ($chunk + 1) * $trainsize - 1); + my $N; + if ($mode != $COMMON::mode3) { + #dictionary repairing + if ($config->{R} ne "") { + $N = SVMTAGGER::repair_dictionary($dict, $config->{R}, $DICT); + } + else { + $N = SVMTAGGER::repair_dictionary_H($dict, $DICT, $config->{Dratio}); + } + system "mv $DICT $dict"; + #dictionary enriching + if ($config->{BLEX} ne "") { SVMTAGGER::enrich_dictionary($dict, $config->{BLEX}); } + } + $rdict = new DICTIONARY($dict, $fambp, $funkp); + system "rm -f $dict"; + if ($verbose > $COMMON::verbose2) { print " -> number of words $rdict->{nwords} [#REPAIRINGS = $N]\n"; } + $chunk++; + } + + #shift sliding window one position left + $rwindow->lshift(1); + #push current entry onto the sliding window + my @columns = @entry; shift(@columns); shift(@columns); + $rwindow->push($entry[0], (scalar(@entry) > 1)? $entry[1] : $rdict->tag($entry[0]), $config->{wlen} - 1, \@columns); + + #is the core item active? + if ($rwindow->active()) { + #is the core word ambiguous? + if (ambiguous_word_window($rwindow, $rdict, $mode)) { + #window preparation + my $rattribw = $rwindow->prepare($direction); + #window attribute generation + my $rattribs = ATTGEN::generate_features($rattribw, $rdict, $sinfo, $mode, $fs,$Unihan,$BS);# have modified add $Unihan + #write sample onto file + SVM::write_sample($rwindow->get_core_word().$COMMON::attvalseparator.$rwindow->get_core_pos(), $rattribs, $SMPLSET); + } + } + + $iter++; + } + + my $i = $config->{wlen} - $config->{wcore} - 1; + while ($i > 0) { #process last words + $rwindow->lshift(1); + if ($rwindow->active()) { + if (ambiguous_word_window($rwindow, $rdict, $mode)) { + my $rattribw = $rwindow->prepare($direction); + my $rattribs = ATTGEN::generate_features($rattribw, $rdict, $sinfo, $mode, $fs,$Unihan,$BS);# have modified add $Unihan + SVM::write_sample($rwindow->get_core_word().$COMMON::attvalseparator.$rwindow->get_core_pos(), $rattribs, $SMPLSET); + } + } + $i--; + } + + if ($verbose > $COMMON::verbose1) { COMMON::report($report, "...$iter WORDS [DONE]\n"); } + + $CORPUS->close(); + $SMPLSET->close(); +} + +sub do_attribs_unk +{ + #description _ creates a convenient set of samples (attrib:value list) out from a given corpus + # for unknown words + #param1 _ MODEL NAME (WSJ / WSJTP) + #param2 _ TRAINING CORPUS filename + #param3 _ DICTIONARY object reference + #param4 _ target SAMPLE SET filename + #param5 _ text direction "LR" for left-to-right ; "RL" for right-to-left + #param6 _ mode (generate_features 0-ambiguous-right :: 1-unambiguous-right :: 2-no-right) + # ( 3-unsupervised :: 4-unkown words on training) + #param7 _ configuration hash reference + #param8 _ report file + #param9 _ verbosity [0..3] + + my $model = shift; + my $corpus = shift; + my $rlex = shift; + my $smplset = shift; + my $direction = shift; + my $mode = shift; + my $config = shift; + my $report = shift; + my $verbose = shift; + my $Unihan = shift; + my $BS = shift; + + my $fambp = $model.".".$COMMON::AMBPEXT; + my $funkp = $model.".".$COMMON::UNKPEXT; + + my $CORPUS = new IO::File("< $corpus") or die "Couldn't open input file: $corpus\n"; + my $SMPLSET = new IO::File("> $smplset") or die "Couldn't open output file: $smplset\n"; + if ($verbose > $COMMON::verbose1) { COMMON::report($report, "FEATURE EXTRACTION from < $corpus > onto < $smplset > ..."); } + if ($verbose > $COMMON::verbose2) { COMMON::report($report, "\n"); } + + srand(); + my $fs; + if ($mode == $COMMON::mode0) { + $fs = SVMTAGGER::read_fs_list($config->{A0u}, $config->{wlen}, $config->{wcore}); + } + elsif ($mode == $COMMON::mode1) { + $fs = SVMTAGGER::read_fs_list($config->{A1u}, $config->{wlen}, $config->{wcore}); + } + elsif ($mode == $COMMON::mode2) { + $fs = SVMTAGGER::read_fs_list($config->{A2u}, $config->{wlen}, $config->{wcore}); + } + elsif ($mode == $COMMON::mode3) { + $fs = SVMTAGGER::read_fs_list($config->{A3u}, $config->{wlen}, $config->{wcore}); + } + elsif ($mode == $COMMON::mode4) { + $fs = SVMTAGGER::read_fs_list($config->{A4u}, $config->{wlen}, $config->{wcore}); + } + else { die "BAD MODE [$mode]\n"; } + + my $dict = $model.".".$COMMON::DICTEXT.".".rand(100000); + my $DICT = $dict.".R"; + my $rdict; + #sliding window generation + my $rwindow = new SWINDOW($config->{wlen}, $config->{wcore}); + my ($trainsize, $nchunks) = SVMTAGGER::get_train_size($corpus, $config->{X}); + if ($verbose > $COMMON::verbose2) { print "X = ", $config->{X}, " :: CHUNKSIZE = $trainsize :: CHUNKS = $nchunks\n"; } + my $sinfo; + if ($direction eq $COMMON::lrmode) { $sinfo = SVMTAGGER::get_sentence_info($CORPUS, $direction, ""); } + my $iter = 0; + my $chunk = 0; + while (defined(my $line = $CORPUS->getline())) { + chomp($line); + + my @entry = split($COMMON::in_valseparator, $line); + if (COMMON::end_of_sentence($entry[0])) { + $sinfo = get_sentence_info($CORPUS, $direction, $entry[0]); + } + + if (($iter % $trainsize) == 0) { + if ($verbose > $COMMON::verbose2) { print "STARTING CHUNK $chunk : reading word -> $iter\n"; } + elsif ($verbose > $COMMON::verbose1) { print "."; } + #dictionary generation + SVMTAGGER::generate_dictionary($corpus, $dict, $chunk * $trainsize, ($chunk + 1) * $trainsize - 1); + my $N = 0; + if ($mode != $COMMON::mode3) { + #dictionary repairing + if ($config->{R} ne "") { + $N = SVMTAGGER::repair_dictionary($dict, $config->{R}, $DICT); + } + else { + $N = SVMTAGGER::repair_dictionary_H($dict, $DICT, $config->{Dratio}); + } + system "mv $DICT $dict"; + } + else { + #dictionary enriching [unsupervised] + if ($config->{LEX} ne "") { SVMTAGGER::enrich_dictionary($dict, $config->{LEX}); } + } + #dictionary enriching + if ($config->{BLEX} ne "") { SVMTAGGER::enrich_dictionary($dict, $config->{BLEX}); } + $rdict = new DICTIONARY($dict, $fambp, $funkp); + system "rm -f $dict"; + if ($verbose > $COMMON::verbose2) { print " -> number of words $rdict->{nwords} [#REPAIRINGS = $N]\n"; } + $chunk++; + } + + + #shift sliding window one position left + $rwindow->lshift(1); + #push current entry onto the sliding window + my @columns = @entry; shift(@columns); shift(@columns); + $rwindow->push($entry[0], (scalar(@entry) > 1)? $entry[1] : $rlex->tag($entry[0]), $config->{wlen} - 1, \@columns); + + #print STDERR Dumper($rwindow); + + #is the core item active? + if ($rwindow->active()) { + #is the core word unknown? + if (unknown_word_window($rwindow, $rdict, $mode)) { + if (($mode == $COMMON::mode3)? !(ambiguous_word_window($rwindow, $rlex, $mode)) : 1) { + #window preparation + my $rattribw = $rwindow->prepare($direction); + #window attribute generation + my $rattribs = ATTGEN::generate_features($rattribw, $rdict, $sinfo, $mode, $fs,$Unihan,$BS);# have modified add $Unihan + #write sample onto file + SVM::write_sample($rwindow->get_core_word().$COMMON::attvalseparator.$rwindow->get_core_pos(), $rattribs, $SMPLSET); + } + } + } + + $iter++; + } + + my $i = $config->{wlen} - $config->{wcore} - 1; + while ($i > 0) { #process last words + $rwindow->lshift(1); + if ($rwindow->active()) { + if (unknown_word_window($rwindow, $rdict, $mode)) { + if (($mode == $COMMON::mode3)? !(ambiguous_word_window($rwindow, $rlex, $mode)) : 1) { + my $rattribw = $rwindow->prepare($direction); + my $rattribs = ATTGEN::generate_features($rattribw, $rdict, $sinfo, $mode, $fs,$Unihan,$BS);# have modified add $Unihan + SVM::write_sample($rwindow->get_core_word().$COMMON::attvalseparator.$rwindow->get_core_pos(), $rattribs, $SMPLSET); + } + } + } + $i--; + } + + if ($verbose > $COMMON::verbose1) { COMMON::report($report, "...$iter WORDS [DONE]\n"); } + + $CORPUS->close(); + $SMPLSET->close(); +} + +# ====================================================================================== +# ========================== LEARNING/CLASSIFYING/TAGGING ============================== +# ====================================================================================== + +# ===================================== LEARN ========================================= + +sub dress_naked_set_train{ + #description _ performs example selection of a DSF file + # given a <+1|-1> {attrib:val}* file + #param1 _ dictionary object reference + #param2 _ naked set filename + #param3 _ current POS being processed + #param4 _ dressed dataset filename (onto store the dressed samples for POS SVM) + + my $rdict = shift; + my $nakedsmpl = shift; + my $pos = shift; + my $dataset = shift; + + my $Npositive = 0; + my $Nnegative = 0; + + my $NAKEDSMPL = new IO::File("< $nakedsmpl") or die "Couldn't open input file: $nakedsmpl\n"; + my $DATASET = new IO::File("> $dataset") or die "Couldn't open output file: $dataset\n"; + + while (defined(my $entry = $NAKEDSMPL->getline())) { + + my @line = split(/$COMMON::pairseparator/, $entry); + my $len = @line; + my @WP = split(/$COMMON::attvalseparator/, $line[0]); + my $sampleword = $WP[0]; + my $samplepos = $WP[1]; + + my $new_entry; + if ($samplepos eq $pos) { $new_entry = "+1"; } + else { $new_entry = "-1"; } + my $i = 1; + while ($i < $len) { + $new_entry = $new_entry.$COMMON::pairseparator.$line[$i]; + $i++; + } + + my $amb = $rdict->get_potser($sampleword); + + foreach my $Ci (@{$amb}) { + #write only possible POSs + if ($Ci eq $pos) { + print $DATASET $new_entry; + if ($samplepos eq $pos) { $Npositive++; } + else { $Nnegative++; } + } + } + } + + $NAKEDSMPL->close(); + $DATASET->close(); + + return($Npositive, $Nnegative); +} + +sub dress_naked_set_train_unsupervised{ + #description _ given a POS, transforms a naked set + # {attrib:val}* + # to a smv_classify format for training + # <+1|-1> {attrib:val}* + #param1 _ dictionary object reference + #param2 _ equivalence classes hash reference + #param3 _ naked set filename + #param4 _ current POS being processed + #param5 _ dressed dataset filename (onto store the dressed samples for POS SVM) + #@return _ number of positive and negative examples + + my $rdict = shift; + my $eqC = shift; + my $nakedsmpl = shift; + my $pos = shift; + my $dataset = shift; + + my $Npositive = 0; + my $Nnegative = 0; + + my $NAKEDSMPL = new IO::File("< $nakedsmpl") or die "Couldn't open input file: $nakedsmpl\n"; + my $DATASET = new IO::File("> $dataset") or die "Couldn't open output file: $dataset\n"; + + while (defined(my $entry = $NAKEDSMPL->getline())) { + my @line = split(/$COMMON::pairseparator/, $entry); + my $len = @line; + my @WP = split(/$COMMON::attvalseparator/, $line[0]); + my $sampleword = $WP[0]; + my $samplepos = $WP[1]; + + my $new_entry; + my $i = 1; + while ($i < $len) { + $new_entry = $new_entry.$COMMON::pairseparator.$line[$i]; + $i++; + } + + if ($samplepos eq $pos) { + $new_entry = "+1".$new_entry; + print $DATASET $new_entry; + $Npositive++; + } + else { + #if (1) { + if ($rdict->frequent_word($sampleword)) { + #print STDERR Dumper($eqC->{$samplepos}); + foreach my $Ci (@{$eqC->{$samplepos}}) { + #print STDERR "$Ci vs. $pos\n"; + if ($Ci eq $pos) { + $new_entry = "-1".$new_entry; + print $DATASET $new_entry; + $Nnegative++; + } + } + } + } + } + + $NAKEDSMPL->close(); + $DATASET->close(); + + return($Npositive, $Nnegative); +} + +sub dress_naked_set_train_unk{ + #description _ given a POS, transforms a naked set + # {attrib:val}* + # to a smv_classify format for training + # <+1|-1> {attrib:val}* + #param1 _ naked set filename + #param2 _ current POS being processed + #param3 _ dressed dataset filename (onto store the dressed samples for POS SVM) + #@return _ number of positive and negative examples + + my $nakedsmpl = shift; + my $pos = shift; + my $dataset = shift; + + my $Npositive = 0; + my $Nnegative = 0; + + my $NAKEDSMPL = new IO::File("< $nakedsmpl") or die "Couldn't open input file: $nakedsmpl\n"; + my $DATASET = new IO::File("> $dataset") or die "Couldn't open output file: $dataset\n"; + + while (defined(my $entry = $NAKEDSMPL->getline())) { + + my @line = split(/$COMMON::pairseparator/, $entry); + my $len = @line; + my @WP = split(/$COMMON::attvalseparator/, $line[0]); + my $samplepos = $WP[1]; + + my $new_entry; + if ($samplepos eq $pos) { $new_entry = "+1"; $Npositive++; } + else { $new_entry = "-1"; $Nnegative++; } + my $i = 1; + while ($i < $len) { + $new_entry = $new_entry.$COMMON::pairseparator.$line[$i]; + $i++; + } + + print $DATASET $new_entry; + } + + $NAKEDSMPL->close(); + $DATASET->close(); + + return($Npositive, $Nnegative); +} + +sub do_learn +{ + #description _ svm learning of POS-tagging for known words. + #param1 _ dictionary object reference + #param2 _ SAMPLE MAPPING filename + #param3 _ AMBIGUOUS POS list reference + #param4 _ MODEL NAME + #param5 _ model type file EXTENSION + #param6 _ model direction file EXTENSION + #param7 _ TRAINING SET filename + #param8 _ C parameter + #param9 _ kernel type + #param10 _ kernel degree + #param11 _ mode + #param12 _ SVM-light directory (Joachims software) + #param13 _ Eratio (to compute classes of equivalence in unsupervised mode) + #param14 _ REPORT filename + #param15 _ verbosity + + my $rdict = shift; + my $smplmap = shift; + my $rambpos = shift; + my $model = shift; + my $modext = shift; + my $dirext = shift; + my $traindsf = shift; + my $C = shift; + my $kernel = shift; + my $degree = shift; + my $mode = shift; + my $svmdir = shift; + my $Eratio = shift; + my $report = shift; + my $verbose = shift; + + my $options; + if ($C != 0) { $options = " -c $C"; } + if ($kernel != 0) { $options .= " -t $kernel"; } + if ($degree != 0) { $options .= " -d $degree"; } + + # -- intermediate common files + srand(); + + my $Npositive; + my $Nnegative; + + my $eqCs; + + if ($mode == $COMMON::mode3) { + if ($verbose > $COMMON::verbose1) { COMMON::report($report, "EXTRACTING EQUIVALENCE CLASSES [ratio = $Eratio]...\n"); } + $eqCs = $rdict->determine_eq_classes($rambpos, $Eratio); + if ($verbose > $COMMON::verbose2) { + foreach my $e (sort keys %{$eqCs}) { + COMMON::report($report, $e." \t: \t".join(" ", @{$eqCs->{$e}})."\n"); + } + } + } + + if ($verbose > $COMMON::verbose1) { COMMON::report($report, "LEARNING SVM MODELS... [C = ".($C + 0)."] "); } + if ($verbose > $COMMON::verbose2) { COMMON::report($report, "\n"); } + + my $timeA = new Benchmark; + + my $ID = 0; + while ($ID < scalar(@{$rambpos})) { + my $tag = $rambpos->[$ID]; + + my $time1 = new Benchmark; + + my $currenttraindsf = "$model.$modext.$dirext.$COMMON::smplext.$ID.$COMMON::DSFEXT.".rand(100000); + + #PREPARING 4 TRAINING + if ($verbose == $COMMON::verbose2) { + COMMON::report($report, "..$tag"); + } + elsif ($verbose > $COMMON::verbose2) { + print "********************************************************************************************\nPREPARING TRAINING SET for < $tag >...\n"; + } + if ($mode == $COMMON::mode3) { + ($Npositive, $Nnegative) = dress_naked_set_train_unsupervised($rdict, $eqCs, $traindsf, $tag, $currenttraindsf); + } + else { + ($Npositive, $Nnegative) = dress_naked_set_train($rdict, $traindsf, $tag, $currenttraindsf); + } + + #TRAINING + if ($verbose > $COMMON::verbose2) { COMMON::report($report, "LEARNING < $tag > (OPTIONS: $options) [#EXAMPLES = ".($Npositive + $Nnegative)." :: (+) ".$Npositive." :: (-) ".$Nnegative."]\n"); } + SVM::svm_learn($model, $currenttraindsf, $ID, $options, "$modext.$dirext.$COMMON::SVMEXT", $svmdir, $report, $verbose); + my $time2 = new Benchmark; + if ($verbose > $COMMON::verbose2) { COMMON::print_benchmark_file($time1, $time2, $report); } + system "rm -f $currenttraindsf"; + $ID++; + } + + my $timeB = new Benchmark; + + if ($verbose == $COMMON::verbose2) { COMMON::report($report, " [DONE]\n"); } + + if ($verbose > $COMMON::verbose1) { COMMON::print_benchmark_file($timeA, $timeB, $report); } +} + +sub do_learn_unk +{ + #description _ svm learning of POS-tagging for unknown words. + #param1 _ SAMPLE MAPPING filename + #param2 _ UNKNOWN POS list reference + #param3 _ MODEL NAME + #param4 _ model type file EXTENSION + #param5 _ model direction file EXTENSION + #param6 _ TRAINING SET filename + #param7 _ C parameter + #param8 _ kernel type + #param9 _ kernel degree + #param10 _ mode + #param11 _ SVM-light directory (Joachims software) + #param12 _ REPORT filename + #param13 _ verbosity + + my $smplmap = shift; + my $runkpos = shift; + my $model = shift; + my $modext = shift; + my $dirext = shift; + my $traindsf = shift; + my $C = shift; + my $kernel = shift; + my $degree = shift; + my $mode = shift; + my $svmdir = shift; + my $report = shift; + my $verbose = shift; + + my $options = ""; + if ($C != 0) { $options = "-c $C"; } + if ($kernel != 0) { $options .= " -t $kernel"; } + if ($degree != 0) { $options .= " -d $degree"; } + + # -- intermediate common files + srand(); + + if ($verbose > $COMMON::verbose1) { COMMON::report($report, "LEARNING SVM MODELS... [C = ".($C + 0)."] "); } + if ($verbose > $COMMON::verbose2) { COMMON::report($report, "\n"); } + + my $timeA = new Benchmark; + + my $ID = 0; + while ($ID < scalar(@{$runkpos})) { + my $tag = $runkpos->[$ID]; + + my $time1 = new Benchmark; + my $currenttraindsf = "$model.$modext.$dirext.$COMMON::smplext.$ID.$COMMON::DSFEXT.".rand(100000); + + if ($verbose == $COMMON::verbose2) { + COMMON::report($report, "..$tag"); + } + elsif ($verbose > $COMMON::verbose2) { + print "********************************************************************************************\nPREPARING TRAINING SET for < $tag >...\n"; + } + my ($Npositive, $Nnegative) = dress_naked_set_train_unk($traindsf, $tag, $currenttraindsf); + + #TRAINING + if ($verbose > $COMMON::verbose2) { COMMON::report($report, "LEARNING < $tag > (OPTIONS: $options) [#EXAMPLES = ".($Npositive + $Nnegative)." :: (+) ".$Npositive." :: (-) ".$Nnegative."]\n"); } + SVM::svm_learn($model, $currenttraindsf, $ID, $options, "$COMMON::unkext.$modext.$dirext.$COMMON::SVMEXT", $svmdir, $report, $verbose); + my $time2 = new Benchmark; + if ($verbose > $COMMON::verbose2) { COMMON::print_benchmark_file($time1, $time2, $report); } + system "rm -f $currenttraindsf"; + $ID++; + } + + my $timeB = new Benchmark; + + if ($verbose == $COMMON::verbose2) { COMMON::report($report, " [DONE]\n"); } + + if ($verbose > $COMMON::verbose1) { COMMON::print_benchmark_file($timeA, $timeB, $report); } +} + +# =================================== CLASSIFY ======================================== + +sub dress_naked_set_classify{ + #description _ given a POS, transforms a naked set + # {attrib:val}* + # to a smv_classify format for classifying + # <+1|-1> {attrib:val}* + #param1 _ naked set filename + #param2 _ current POS being processed + #param3 _ dressed dataset filename (onto store the dressed samples for POS SVM) + #@return _ number of samples in the set + + my $nakedsmpl = shift; + my $pos = shift; + my $dataset = shift; + + my $N = 0; + + my $NAKEDSMPL = new IO::File("< $nakedsmpl") or die "Couldn't open input file: $nakedsmpl\n"; + my $DATASET = new IO::File("> $dataset") or die "Couldn't open output file: $dataset\n"; + + my $samplepos; + + while (defined(my $entry = $NAKEDSMPL->getline())) { + my @line = split(/$COMMON::pairseparator/, $entry); + my $len = @line; + $samplepos = $line[0]; + + my $new_entry; + if ($samplepos eq $pos) { $new_entry = "+1"; } + else { $new_entry = "-1"; } + my $i = 1; + while ($i < $len) { + $new_entry = $new_entry.$COMMON::pairseparator.$line[$i]; + $i++; + } + + print $DATASET $new_entry; + $N++; + } + + $NAKEDSMPL->close(); + $DATASET->close(); + + return($N); +} + +# ====================================================================================== +# ================================= SVM TAGGER ========================================= +# ====================================================================================== + + +sub get_train_size +{ + #description _ figures out what the size of the training chunk must be so as to + # comprise a given percentage of unknown words + #param1 _ TRAINING SET filename + #param2 _ unknown word percentage + #@return _ (chunk size, nchunks) + + my $corpus = shift; + my $X = shift; + + # read the corpus + my $nwords; + my $ndwords; + my %WORDS; + my $CORPUS = new IO::File("< $corpus") or die "Couldn't open input file: $corpus\n"; + while (defined(my $line = $CORPUS->getline())) { + $nwords++; + my @entry = split($COMMON::in_valseparator, $line); + if (exists($WORDS{$entry[0]})) { $WORDS{$entry[0]} += 1; } + else { $WORDS{$entry[0]} = 1; $ndwords++; } + } + $CORPUS->close(); + + # read again until a certain point where X is met --> $ndwords * (100 - $X) / 100; + my $meeting = $ndwords * (100 - $X) / 100; + my $nwords2; + my $ndwords2; + my %WORDS2; + $CORPUS = new IO::File("< $corpus") or die "Couldn't open input file: $corpus\n"; + while (defined(my $line = $CORPUS->getline()) and ($ndwords2 < $meeting)) { + $nwords2++; + my @entry = split($COMMON::in_valseparator, $line); + if (exists($WORDS2{$entry[0]})) { $WORDS2{$entry[0]} += 1; } + else { $WORDS2{$entry[0]} = 1; $ndwords2++; } + } + $CORPUS->close(); + + my $chunks = 1; my $size = $nwords; + if ($nwords - $nwords2 > 0) { + $chunks = sprintf("%d", $nwords / ($nwords - $nwords2)); + $size = sprintf("%d", $nwords / $chunks) + 1; + } + return ($size, $chunks); +} + + +# ================================= TAGGING KN + UNK ==================================== +# --------------------------------------------------------------------------------------- +# =================================== merged models ===================================== +# ======================================================================================= + +sub load_models +{ + #description _ responsible for loading svm models in a certain manner. + #param1 _ MODEL NAME + #param2 _ EPSILON threshold for W features relevance [KNOWN WORDS] + #param3 _ OMEGA threshold for W features relevance [UNKNOWN WORDS] + #param4 _ VERBOSE + #param5 _ text direction "LR" for left-to-right ; "RL" for right-to-left; "LRL" for both + #param6 _ mode (generate_features 0-ambiguous-right :: 1-unambiguous-right :: 2-no-right) + # ( 3-unsupervised :: 4-unkown words on training) + #param7 _ ambiguous pos list reference + #param8 _ unknown pos list reference + #param9 _ feature set list reference for KNOWN WORDS + #param10 _ feature set list reference for UNKNOWN WORDS + #@return _ SVMT models + + my $corpus = shift; + my $epsilon = shift; + my $omega = shift; + my $verbose = shift; + my $direction = shift; + my $mode = shift; + my $rambp = shift; + my $runkp = shift; + my $fsk = shift; + my $fsu = shift; + + if ($verbose > $COMMON::verbose1) { + print STDERR "READING MODELS < DIRECTION = "; + if ($direction eq $COMMON::lrmode) { print STDERR "left-to-right"; } + elsif ($direction eq $COMMON::rlmode) { print STDERR "right-to-left"; } + elsif ($direction eq $COMMON::lrlmode) { print STDERR "left-to-right then right-to-left"; } + elsif ($direction eq $COMMON::glrlmode) { print STDERR "left-to-right then right-to-left (global)"; } + else { print STDERR "$direction"; } + print STDERR " :: MODEL = "; + if ($mode == $COMMON::mode0) { print STDERR "ambiguous context"; } + elsif ($mode == $COMMON::mode1) { print STDERR "disambiguated context"; } + elsif ($mode == $COMMON::mode2) { print STDERR "no context"; } + elsif ($mode == $COMMON::mode3) { print STDERR "unsupervised"; } + elsif ($mode == $COMMON::mode4) { print STDERR "ambiguous context [unknown words on training]"; } + else { print STDERR $mode; } + print STDERR " >\n"; + } + + my $dirext; + if ($direction eq $COMMON::lrmode) { + $dirext .= "$COMMON::lrext"; + } + elsif ($direction eq $COMMON::rlmode) { + $dirext .= "$COMMON::rlext"; + } + my $modext = SVMTAGGER::find_mext($mode); + + #SAMPLE MAPPING (in) + my $smplmap = $corpus.".".$modext.".".$dirext.".".$COMMON::smplext.".".$COMMON::mapext; + #UNKNOWN WORDS MAPPING (in) + my $unksmplmap = $corpus.".".$COMMON::unkext.".".$modext.".".$dirext.".".$COMMON::smplext.".".$COMMON::mapext; + + if ($verbose > $COMMON::verbose1) { print STDERR "(1) READING MODELS (weights and biases) FOR KNOWN WORDS <$corpus.$modext.$dirext.$COMMON::MRGEXT>...\n"; } + my ($KNMODEL, $rB, $Nk, $Nkout) = SVM::read_merged_models($corpus.".".$modext.".".$dirext.".".$COMMON::MRGEXT, $epsilon, $verbose); + if ($verbose > $COMMON::verbose1) { print STDERR "(2) READING MODELS (weights and biases) FOR UNKNOWN WORDS <$corpus.$COMMON::unkext.$modext.$dirext.$COMMON::MRGEXT>...\n"; } + my ($UNKMODEL, $runkB, $Nu, $Nuout) = SVM::read_merged_models($corpus.".".$COMMON::unkext.".".$modext.".".$dirext.".".$COMMON::MRGEXT, $omega, $verbose); + + my %M; + $M{KNMODEL} = $KNMODEL; + $M{UNKMODEL} = $UNKMODEL; + $M{rB} = $rB; + $M{runkB} = $runkB; + $M{mode} = $mode; + $M{fsk} = $fsk; + $M{fsu} = $fsu; + + return \%M; +} + +sub SVMT_load_models +{ + #description _ responsible for loading SVMT models. + #param1 _ model directory + #param2 _ direction mode (LR/RL/LRL) + #param3 _ mode (generate_features 0-ambiguous-right :: 1-unambiguous-right :: 2-no-right) + # ( 3-unsupervised :: 4-unkown words on training) + #param4 _ EPSILON threshold for W features relevance [KNOWN WORDS] + #param5 _ OMEGA threshold for W features relevance [UNKNOWN WORDS] + #param6 _ VERBOSE + #param7 _ ambiguous pos list reference + #param8 _ unknown pos list reference + #param9 _ feature set list reference for KNOWN words + #param10 _ feature set list reference for UNKNOWN words + #@return _ SVMT models + + my $model = shift; + my $direction = shift; + my $mode = shift; + my $epsilon = shift; + my $omega = shift; + my $verbose = shift; + my $rambp = shift; + my $runkp = shift; + my $fsk = shift; + my $fsu = shift; + + my %M; + if (($direction eq $COMMON::lrmode) or ($direction eq $COMMON::lrlmode) or ($direction eq $COMMON::glrlmode)) { #LEFT-TO-RIGHT or both + $M{LR} = load_models($model, $epsilon, $omega, $verbose, $COMMON::lrmode, $mode, $rambp, $runkp, $fsk, $fsu); + } + if (($direction eq $COMMON::rlmode) or ($direction eq $COMMON::lrlmode) or ($direction eq $COMMON::glrlmode)) { #LEFT-TO-RIGHT or both + $M{RL} = load_models($model, $epsilon, $omega, $verbose, $COMMON::rlmode, $mode, $rambp, $runkp, $fsk, $fsu); + } + $M{direction} = $direction; + + return \%M; +} + +sub SVMT_load_dict +{ + #description _ responsible for loading an SVMT dictionary. + #param1 _ dictionary filename + #param2 _ ambiguous pos list file + #param3 _ unknown pos list file + #param4 _ VERBOSE + #@return _ dictionary object + + my $dict = shift; + my $fambp = shift; + my $funkp = shift; + my $verbose = shift; + + #dictionary generation + if ($verbose > $COMMON::verbose1) { print STDERR "READING DICTIONARY <$dict>...\n"; } + my $rdict = new DICTIONARY($dict, $fambp, $funkp); + if ($verbose > $COMMON::verbose1) { print STDERR "[DONE]\n"; } + + return $rdict; +} + +# ========================================================================================== +# ========================== TAGGING ======================================================= +# ========================================================================================== + + +sub tag_sample +{ + #description _ returns the tag scoring the highest among the possible ones + #param1 _ CLSF filename hash reference + #param2 _ dictionary object + #param3 _ word + #param4 _ verbosity level + #@return _ (max_pos, max_score) + + my $rclsf = shift; + my $rdict = shift; + my $w = shift; + my $verbose = shift; + + my $Cj = $COMMON::emptypos; + my $max = $SVMTAGGER::MIN_VALUE; + + foreach my $Ci (keys %{$rclsf}) { + #print "($Ci) $$rclsf->{$Ci} $max)\n"; + if ($rclsf->{$Ci} > $max) { $max = $rclsf->{$Ci}; $Cj = $Ci; } + elsif ($rclsf->{$Ci} == $max) { + my $mftpos = $rdict->get_mft($w); + if ($mftpos eq $Ci) { $Cj = $Ci; } + } + } + + if ($verbose > $COMMON::verbose2) { + print STDERR "---------------------------------------------------------------------------------------------\n"; + #print STDERR Dumper($rclsf); + foreach my $p (keys %{$rclsf}) { + print STDERR "score[$w, $p] = $rclsf->{$p}\n"; + } + print STDERR "---------------------------------------------------------------------------------------------\n"; + } + + return ($Cj, $max); +} + +sub classify_sample_merged +{ + #description _ runs a given ambiguous sample, given a mapping, through the + # given models (assuming they've already been learned). + #param1 _ AMBPOS (ambiguous POSs) hash reference + #param2 _ WORD POTSER's DICTIONARY list reference + #param3 _ SAMPLE attribute list reference + #param4 _ biases hash reference + #param5 _ weights MERGED MODEL (mapping + primal weights) + #param6 _ VERBOSE + #@return _ CLSF file hash reference + + my $rambpos = shift; + my $potser = shift; + my $sample = shift; + my $rB = shift; + my $rW = shift; + my $verbose = shift; + + my %CLSF; #predictions + + foreach my $pos (@{$potser}) { + if ($verbose > $COMMON::verbose3) { print STDERR "---------------------------------------------------------------------------------------------\nPOS = $pos\n---------------------------------------------------------------------------------------------\n"; } + + if (exists($rambpos->{$pos})) { #check only possibly ambiguous POS + $CLSF{$pos} = 0; #INITIALIZE PREDICTION + foreach my $att (@{$sample}) { + if (defined($rW->{$att})) { + if (defined($rW->{$att}->{$pos})) { + if ($verbose > $COMMON::verbose3) + { print STDERR "W[$att, $pos] = $rW->{$att}->{$pos}\n"; } + my $w = $rW->{$att}->{$pos}; + $CLSF{$pos} = $CLSF{$pos} + $w; + } + } + } + } + + #TERMINATE PREDICTIONS + if ($verbose > $COMMON::verbose3) { + print STDERR "W[$pos] = $CLSF{$pos}\n"; + print STDERR "B[$pos] = $rB->{$pos}\n"; + print STDERR "score[$pos] = $CLSF{$pos} - $rB->{$pos} = ", $CLSF{$pos} - $rB->{$pos}, "\n"; + print STDERR "---------------------------------------------------------------------------------------------\n"; + } + $CLSF{$pos} -= $rB->{$pos}; + } + + return \%CLSF; +} + +sub pos_tag_sample { + #description _ procedure to determine the part-of-speech given a context. + #param1 _ sliding window object + #param2 _ DICTIONARY object + #param3 _ given word + #param4 _ SENTENCE general INFO + #param5 _ is the word unknown? + #param6 _ all POS hash reference + #param7 _ possible POS hash reference + #param8 _ SVMT model (LR/RL) + #param9 _ direction + #param10 _ VERBOSE + #@return _ (part-of-speech, pred, rclsf, Ftime, Ctime) + + my $rwindow = shift; + my $rdict = shift; + my $w = shift; + my $sinfo = shift; + my $unknown = shift; + my $all = shift; + my $possible = shift; + my $M = shift; + my $direction = shift; + my $verbose = shift; + my $Unihan = shift; + my $BS = shift; + + my $rattribw = $rwindow->prepare($direction); + my $Ftime1 = new Benchmark; + my $rattribs = ATTGEN::generate_features($rattribw, $rdict, $sinfo, $M->{mode}, $unknown ? $M->{fsu} : $M->{fsk},$Unihan,$BS);# have modified add $Unihan + my $Ftime2 = new Benchmark; + my $Ftime = Benchmark::timediff($Ftime2,$Ftime1); + my $sample = SVM::write_mem_sample($rattribs); + my $rclsf; + + if ($verbose > $COMMON::verbose2) { + print STDERR "---------------------------------------------------------------------------------------------\nWORD = $w [", $unknown? "U" : "K" ,"]\n---------------------------------------------------------------------------------------------\n"; + $rattribw->print; + print STDERR "---------------------------------------------------------------------------------------------\n"; + } + + my $Ctime1 = new Benchmark; + if ($unknown) { $rclsf = classify_sample_merged($all, $possible, $sample, $M->{runkB}, $M->{UNKMODEL}, $verbose); } + else { $rclsf = classify_sample_merged($all, $possible, $sample, $M->{rB}, $M->{KNMODEL}, $verbose); } + my $Ctime2 = new Benchmark; + my $Ctime = Benchmark::timediff($Ctime2,$Ctime1); + my ($pos, $pred) = tag_sample($rclsf, $rdict, $w, $verbose); + + return ($pos, $pred, $rclsf, $Ftime, $Ctime); +} + +sub analyze_sample +{ + #description _ procedure to determine the part-of-speech given a context. + #param1 _ sliding window object + #param2 _ WHOLE MODELS + #param3 _ SENTENCE general INFO + #param4 _ SVMT model (LR/RL) 1 + #param5 _ SVMT model (LR/RL) 2 + #param6 _ mode? boolean: 0 -> do_normal :: 1 -> do_special :: 2 -> do_viterbi + #param7 _ direction + #param8 _ VERBOSE + #@return _ (word, part-of-speech, pred, rclsf, Ftime, Ctime) + + my $rwindow = shift; + my $M = shift; + my $sinfo = shift; + my $M1 = shift; + my $M2 = shift; + my $mode = shift; + my $direction = shift; + my $verbose = shift; + my $Unihan = shift; + my $BS = shift; + + my $pos; + my $pred; + my $rclsf; + my $Ftime; + my $Ctime; + + my $w = $rwindow->get_core_word(); + my $potser = $M->{dict}->get_real_potser($w); + my $all; + + if ($M->{dict}->unknown_word($w)) { $all = $M->{rUP}; } #UNKNOWN WORD + else { + if ($M->{dict}->ambiguous_word($w)) { $all = $M->{rAP}; } #AMBIGUOUS WORD + else { return ($w, $potser->[0], 0, {$potser->[0] => 0}); } #KNOWN and NOT AMBIGUOUS + } + + if ($mode == $SVMTAGGER::Mspecial) { + if (any_unknown($rwindow, $M->{dict})) { + ($pos, $pred, $rclsf, $Ftime, $Ctime) = pos_tag_sample($rwindow, $M->{dict}, $w, $sinfo, $M->{dict}->unknown_word($w), $all, $potser, $M2, $direction, $verbose,$Unihan,$BS);# have modified add $Unihan + } + else { + ($pos, $pred, $rclsf, $Ftime, $Ctime) = pos_tag_sample($rwindow, $M->{dict}, $w, $sinfo, $M->{dict}->unknown_word($w), $all, $potser, $M1, $direction, $verbose,$Unihan,$BS);# have modified add $Unihan + } + } + else { #Mdefault + ($pos, $pred, $rclsf, $Ftime, $Ctime) = pos_tag_sample($rwindow, $M->{dict}, $w, $sinfo, $M->{dict}->unknown_word($w), $all, $potser, $M1, $direction, $verbose,$Unihan,$BS);# have modified add $Unihan + } + + return ($w, $pos, $pred, $rclsf, $Ftime, $Ctime); +} + +sub process_sample_merged { + #description _ procedure to determine the part-of-speech given a context. + #param1 _ sliding window object + #param2 _ given word + #param3 _ given word pos (if available --> 2 passes) + #param4 _ WHOLE MODELS + #param5 _ SVMT model (LR/RL) 1 + #param6 _ SVMT model (LR/RL) 2 + #param7 _ SENTENCE general INFO + #param8 _ mode? boolean: 0 -> do_normal :: 1 -> do_special :: 2 -> do_viterbi + #param9 _ direction + #param10 _ whole element entry (list), e.g {WORD PoS IOB ...} + #param11 _ VERBOSE + #@return _ (word, part-of-speech, pred, rclsf, Ftime, Ctime) + + my $rwindow = shift; + my $word = shift; + my $wordpos = shift; + my $M = shift; + my $M1 = shift; + my $M2 = shift; + my $sinfo = shift; + my $mode = shift; + my $direction = shift; + my $entry = shift; + my $verbose = shift; + my $Unihan = shift; + my $BS = shift; + + my $w; + my $pos; + my $pred; + my $rclsf; + my $Ftime; + my $Ctime; + + #shift sliding window one position left + $rwindow->lshift(1); + + #push current entry onto the sliding window + if ($word ne "") { + if ($wordpos ne "") { $rwindow->push($word, $wordpos, $rwindow->get_len - 1, $entry); } + else { $rwindow->push($word, $COMMON::emptypos, $rwindow->get_len - 1, $entry); } + } + + #is the core item active? + if ($rwindow->active()) { + ($w, $pos, $pred, $rclsf, $Ftime, $Ctime) = analyze_sample($rwindow, $M, $sinfo, $M1, $M2, $mode, $direction, $verbose,$Unihan,$BS);# have modified add $Unihan + # --> feed back always + $rwindow->push($w, $pos, $rwindow->get_core); + } + + + return ($w, $pos, $pred, $rclsf, $Ftime, $Ctime); +} + +sub do_greedy_tagging +{ + #description _ responsible for tagging in one-pass [one-pass LR/RL] + #param1 _ WHOLE MODELS + #param2 _ VERBOSE + #param3 _ text direction "LR" for left-to-right ; "RL" for right-to-left; + #param4 _ input list reference + #param5 _ SVMT model (LR/RL) 1 + #param6 _ SVMT model (LR/RL) 2 + #param7 _ mode? boolean: 0 -> do_normal :: 1 -> do_special :: 2 -> do_viterbi + #@return _ (output LR list reference, global score, Feature-time, Computation-time-svm) + + my $M = shift; + my $verbose = shift; + my $direction = shift; + my $input_LR = shift; + my $M1 = shift; + my $M2 = shift; + my $mode = shift; + my $Unihan = shift; + my $BS = shift; + + my @OUT; + my $SIZE = scalar(@{$input_LR}); + my $Ftime; + my $Ctime; + + my $iter = 0; + my $sinfo; + my $word; + my $wordpos; + my $rwindow = new SWINDOW($M->{WS}->[0], $M->{WS}->[1]); #sliding window generation + + if ($direction eq $COMMON::lrmode) { + $sinfo = get_sentence_info_list_entry($input_LR, $COMMON::lrmode, 0); + } + elsif ($direction eq $COMMON::rlmode) { + $sinfo = get_sentence_info_list_entry($input_LR, $COMMON::rlmode, $SIZE - 1); + } + + if ($verbose > $COMMON::verbose2) { + if ($direction eq $COMMON::lrmode) { print STDERR $iter; } + elsif ($direction eq $COMMON::rlmode) { print STDERR $SIZE; } + } + + while ($iter < $SIZE) { + my $columns; + if ($direction eq $COMMON::lrmode) { + $word = $input_LR->[$iter]->get_word; + $wordpos = $input_LR->[$iter]->get_pos; + if (COMMON::end_of_sentence($word)) { + $sinfo = get_sentence_info_list_entry($input_LR, $direction, $iter); + } + $columns = $input_LR->[$iter]->get_cols; + } + elsif ($direction eq $COMMON::rlmode) { + $word = $input_LR->[$SIZE - $iter - 1]->get_word; + $wordpos = $input_LR->[$SIZE - $iter - 1]->get_pos; + if (COMMON::end_of_sentence($word)) { + $sinfo = get_sentence_info_list_entry($input_LR, $direction, $SIZE - $iter - 1); + } + $columns = $input_LR->[$SIZE - $iter - 1]->get_cols; + } + if ($word ne "") { # don't process emtpy lines + shift(@{$columns}); + my ($w, $pos, $pred, $rclsf, $SFtime, $SCtime) = process_sample_merged($rwindow, $word, $wordpos, $M, $M1, $M2, $sinfo, $mode, $direction, $columns, $verbose,$Unihan,$BS);# have modified add $Unihan + if (defined($SFtime)) { $Ftime += $SFtime->[1]; } + if (defined($SCtime)) { $Ctime += $SCtime->[1]; } + if ($w ne "") { # empty words don't get tagged + my $rOUT = new ENTRY($w, $pos, $rclsf, $columns); + if ($direction eq $COMMON::lrmode) { push(@OUT, $rOUT); } + elsif ($direction eq $COMMON::rlmode) { unshift(@OUT, $rOUT); } + } + } + $iter++; + if ($verbose > $COMMON::verbose2) { + if ($direction eq $COMMON::lrmode) { COMMON::show_progress($iter, $COMMON::progress1, $COMMON::progress2); } + elsif ($direction eq $COMMON::rlmode) { COMMON::show_progress($SIZE - $iter - 1, $COMMON::progress1, $COMMON::progress2); } + } + } + + # ------------------------------------ last words ------------------------------------------- + my $i = $M->{WS}->[0] - $M->{WS}->[1] - 1; + while ($i > 0) { #process last words in the sliding window + my ($w, $pos, $pred, $rclsf, $SFtime, $SCtime) = process_sample_merged($rwindow, $COMMON::emptyword, $COMMON::emptypos, $M, $M1, $M2, $sinfo, $mode, $direction, 0, $verbose,$Unihan,$BS);# have modified add $Unihan + if (defined($SFtime)) { $Ftime += $SFtime->[1]; } + if (defined($SCtime)) { $Ctime += $SCtime->[1]; } + if ($w ne "") { # empty words don't get tagged + my $rOUT = new ENTRY($w, $pos, $rclsf, 0); + if ($direction eq $COMMON::lrmode) { push(@OUT, $rOUT); } + elsif ($direction eq $COMMON::rlmode) { unshift(@OUT, $rOUT); } + } + $i--; + } + + if ($verbose > $COMMON::verbose2) { + if ($direction eq $COMMON::lrmode) { print STDERR ".$iter [DONE]\n"; } + elsif ($direction eq $COMMON::rlmode) { print STDERR " [DONE]\n"; } + } + + return(\@OUT, 0, $Ftime, $Ctime); +} + +sub build_window +{ + #description _ responsible for constructing a new window + #param1 _ input sentence + #param2 _ core index + #param3 _ window setup + #param4 _ DICTIONARY object + #@return _ sliding window + + my $sentence = shift; + my $core = shift; + my $winsetup = shift; + my $rdict = shift; + + my $SIZE = scalar(@{$sentence}); + my $rwindow = new SWINDOW($winsetup->[0], $winsetup->[1]); #sliding window generation + my $i = 0; + while ($i < $winsetup->[0]) { + my $current; + $current = $core + $i - ($winsetup->[1]); + if (($current >= 0) and ($current < $SIZE)) { + $rwindow->push($sentence->[$current], $COMMON::emptypos, $i); + my $potser = $rdict->get_real_potser($rwindow->get_word($i)); + #my $potser = $rdict->get_real_potser($rwindow->get_actual_word($i)); + $rwindow->set_kamb($i, $potser); + } + $i++; + } + + return $rwindow; +} + +sub apply_softmax { + #description _ apply softmax function over a set of predictions. + #param1 _ prediction hash reference + #param2 _ softmax mode 0: do nothing + # _ 1: do ln(e^score(i) / [sum:1<=j<=N:[e^score(j)]]) + + my $rclsf = shift; + my $mode = shift; + + if ($mode > 0) { #APPLY SOFTMAX? + my $Psum = 0; + foreach my $Ci (keys %{$rclsf}) { $Psum += exp($rclsf->{$Ci}); } + foreach my $Ci (keys %{$rclsf}) { $rclsf->{$Ci} = log(exp($rclsf->{$Ci}) / $Psum); } + } + + return $rclsf; +} + +sub path_beam_cutoff +{ + #description _ beam cutoff procedure + #param1 _ path structure element + #param2 _ beam count cutoff + #param3 _ beam ratio cutoff + + my $elem = shift; + my $nbeams = shift; + my $bratio = shift; + + my @l; #list of predictions + foreach my $k (keys %{$elem->[0]}) { push(@l, $elem->[0]->{$k}); } + my @lsorted = sort {$a <=> $b} @l; #sorted list of predictions + + #nbeam cutoff + if (($nbeams >= 1) and (scalar(@lsorted) > $nbeams)) { #select beams over cutoff point + my $cutoff = $lsorted[scalar(@lsorted) - $nbeams]; + foreach my $p (keys %{$elem->[0]}) { + if ($elem->[0]->{$p} < $cutoff) { delete $elem->[0]->{$p}; delete $elem->[1]->{$p} } + } + } + + #beam ratio cutoff + if ($bratio != 0) { #select beams over cutoff point + my $cutoff = $lsorted[scalar(@lsorted) - 1]; + $cutoff = ($cutoff >= 0)? $cutoff * $bratio : $cutoff /$bratio; + foreach my $p (keys %{$elem->[0]}) { + if ($elem->[0]->{$p} < $cutoff) { delete $elem->[0]->{$p}; delete $elem->[1]->{$p} } + } + } +} + +sub build_left_context +{ + #description _ builds left window context + #param1 _ window + #param2 _ path + #param3 _ path position + #param4 _ current PoS + + my $rwindow = shift; + my $path = shift; + my $i = shift; + my $pos = shift; + + my $core = $rwindow->get_core; + my $len = $rwindow->get_len; + + $rwindow->set_pos($core - 1, $pos); + + my $j = 1; + while (($j < ($len - $core + 1)) and ($i > 0) and (!($rwindow->is_empty($core - $j - 1)))) { + $pos = $path->[$i][1]{$pos}; + $rwindow->set_pos($core - $j - 1, $pos); + $j++; + $i--; + } +} + +sub compute_tagging +{ + #description _ computes the tagging + #param1 _ window + #param2 _ whole models + #param3 _ SENTENCE general INFO + #param4 _ DICTIONARY object + #param5 _ direction (LR/RL) + #param6 _ ambiguous pos hash reference + #param7 _ unknown pos hash reference + #param8 _ verbose + + my $rwindow = shift; + my $M = shift; + my $sinfo = shift; + my $rdict = shift; + my $direction = shift; + my $rambp = shift; + my $runkp = shift; + my $verbose = shift; + my $Unihan = shift; + my $BS = shift; + + my $word = $rwindow->get_core_word(); + #my $word = $rwindow->get_core_actual_word(); + my $possible = $rdict->get_real_potser($word); + my $unknown = $rdict->unknown_word($word); + my $rB; + my $MODEL; + my $rall; + if ($unknown) { $rB = $M->{runkB}; $MODEL = $M->{UNKMODEL}; $rall = $runkp; } #UNKNOWN WORD + else { $rB = $M->{rB}; $MODEL = $M->{KNMODEL}; $rall = $rambp; } #AMBIGUOUS KNOWN WORD + + #generate features + my $rattribw = $rwindow->prepare($direction); + if ($verbose > $COMMON::verbose2) { + print STDERR "---- compute tagging scores -----------------------------------------------------------------\nWORD = $word [", $unknown? "U" : "K" ,"]\n---------------------------------------------------------------------------------------------\n"; + $rattribw->print; + print STDERR "---------------------------------------------------------------------------------------------\n"; + } + my $Ftime1 = new Benchmark; + my $rattribs = ATTGEN::generate_features($rattribw, $rdict, $sinfo, $M->{mode}, $unknown ? $M->{fsu} : $M->{fsk},$Unihan,$BS);# have modified add $Unihan + my $Ftime2 = new Benchmark; + my $Ftimediff = Benchmark::timediff($Ftime2,$Ftime1); + my $Ftime = $Ftimediff->[1]; + my $sample = SVM::write_mem_sample($rattribs); + + #get_SVM_score + my $Ctime1 = new Benchmark; + my $rclsf = classify_sample_merged($rall, $possible, $sample, $rB, $MODEL, $verbose); + my $Ctime2 = new Benchmark; + my $Ctimediff = Benchmark::timediff($Ctime2,$Ctime1); + my $Ctime = $Ctimediff->[1]; + + if ($verbose > $COMMON::verbose2) { + foreach my $k (keys %{$rclsf}) { + print STDERR "score($k) = ", $rclsf->{$k}, "\n"; + } + } + + return($rclsf, $Ftime, $Ctime); +} + +sub compute_scores_old { + #description _ viterbi sentence-level PoS-tagging (induction step) + #param1 _ sliding window object + #param2 _ DICTIONARY object + #param3 _ SENTENCE general INFO + #param4 _ SVMT model (LR/RL) + #param5 _ path structure + #param6 _ current sentence position index + #param7 _ direction (LR/RL) + #param8 _ ambiguous pos hash reference + #param9 _ unknown pos hash reference + #param10 _ beam count cutoff + #param11 _ beam search ratio + #param12 _ softmax mode 0: do nothing + # _ 1: do ln(e^score(i) / [sum:1<=j<=N:[e^score(j)]]) + #param13 _ VERBOSE + #@return _ (part-of-speech, global pred, local rclsf, Ftime, Ctime) + + my $rwindow = shift; + my $rdict = shift; + my $sinfo = shift; + my $M = shift; + my $path = shift; + my $i = shift; + my $direction = shift; + my $rambp = shift; + my $runkp = shift; + my $nbeams = shift; + my $bratio = shift; + my $softmax = shift; + my $verbose = shift; + my $Unihan = shift; + my $BS = shift; + + my $word = $rwindow->get_core_word(); + my $possible = $rdict->get_real_potser($word); + + my $Ftime = 0; #Feature extraction time (FEX) + my $Ctime = 0; #Calculation time (SVM) + my %CLSFG; #global predictions + + my %maxpred; + my %maxGpred; + my %maxGpos; + foreach my $t (@{$possible}) { + $maxpred{$t} = $SVMTAGGER::MIN_VALUE; + $maxGpred{$t} = $SVMTAGGER::MIN_VALUE; + $maxGpos{$t} = $COMMON::emptypos; + } + foreach my $tj (@{$possible}) { + #print STDERR "------------------------------ i = $i :: tj = $tj ---------------------------------\n"; + my $max = $SVMTAGGER::MIN_VALUE; + if ($i == 0) { # no left context is available + my ($rclsf, $ftime, $ctime) = compute_tagging($rwindow, $M, $sinfo, $rdict, $direction, $rambp, $runkp, $verbose,$Unihan,$BS);# have modified add $Unihan + #APPLY softmax + apply_softmax($rclsf, $softmax); + $Ftime += $ftime; $Ctime += $ctime; + foreach my $k (keys %{$rclsf}) { + if ($rclsf->{$k} >= $maxGpred{$k}) { $maxGpred{$k} = $rclsf->{$k}; $maxpred{$k} = $rclsf->{$k}; } + } + } + else { # left context must be build according to the current path + foreach my $tk (keys %{$path->[$i]->[0]}) { + build_left_context($rwindow, $path, $i, $tk); + #print STDERR "****** tk = $tk ******\n"; + my ($rclsf, $ftime, $ctime) = compute_tagging($rwindow, $M, $sinfo, $rdict, $direction, $rambp, $runkp, $verbose,$Unihan,$BS);# have modified add $Unihan + #APPLY softmax + apply_softmax($rclsf, $softmax); + $Ftime += $ftime; $Ctime += $ctime; + if ($softmax) { #PRODUCT + foreach my $k (keys %{$rclsf}) { + if (($rclsf->{$k} * $path->[$i]->[0]->{$tk}) >= $maxGpred{$k}) { + $maxGpred{$k} = $rclsf->{$k} * $path->[$i]->[0]->{$tk}; + $maxpred{$k} = $rclsf->{$k}; + } + } + if (($rclsf->{$tj} * $path->[$i]->[0]->{$tk}) >= $max) + { $max = $rclsf->{$tj} * $path->[$i]->[0]->{$tk}; $maxGpos{$tj} = $tk; } + } + else { #ADD + foreach my $k (keys %{$rclsf}) { + if (($rclsf->{$k} + $path->[$i]->[0]->{$tk}) >= $maxGpred{$k}) { + $maxGpred{$k} = $rclsf->{$k} + $path->[$i]->[0]->{$tk}; + $maxpred{$k} = $rclsf->{$k}; + } + } + if (($rclsf->{$tj} + $path->[$i]->[0]->{$tk}) >= $max) + { $max = $rclsf->{$tj} + $path->[$i]->[0]->{$tk}; $maxGpos{$tj} = $tk; } + } + } + } + $path->[$i+1]->[0]->{$tj} = $maxGpred{$tj}; + $path->[$i+1]->[1]->{$tj} = $maxGpos{$tj}; + $path->[$i+1]->[2]->{$tj} = $maxpred{$tj}; + if ($verbose > $COMMON::verbose2) { + print STDERR "---------------------------------------\n"; + print STDERR "score(", $i+1, ", ", $tj, ") = ", $path->[$i+1]->[2]->{$tj}, "\n"; + print STDERR "d(", $i+1, ", ", $tj, ") = ", $path->[$i+1]->[0]->{$tj}, "\n"; + print STDERR "f(", $i+1, ", ", $tj, ") = ", $path->[$i+1]->[1]->{$tj}, "\n"; + } + } + + if (($nbeams > 0) or ($bratio != 0)) { path_beam_cutoff($path->[$i+1], $nbeams, $bratio); } + + return ($Ftime, $Ctime); +} + +sub compute_scores { + #description _ viterbi sentence-level PoS-tagging (induction step) + #param1 _ sliding window object + #param2 _ DICTIONARY object + #param3 _ SENTENCE general INFO + #param4 _ SVMT model (LR/RL) + #param5 _ path structure + #param6 _ current sentence position index + #param7 _ direction (LR/RL) + #param8 _ ambiguous pos hash reference + #param9 _ unknown pos hash reference + #param10 _ beam count cutoff + #param11 _ beam search ratio + #param12 _ softmax mode 0: do nothing + # _ 1: do ln(e^score(i) / [sum:1<=j<=N:[e^score(j)]]) + #param13 _ VERBOSE + #@return _ (part-of-speech, global pred, local rclsf, Ftime, Ctime) + + my $rwindow = shift; + my $rdict = shift; + my $sinfo = shift; + my $M = shift; + my $path = shift; + my $i = shift; + my $direction = shift; + my $rambp = shift; + my $runkp = shift; + my $nbeams = shift; + my $bratio = shift; + my $softmax = shift; + my $verbose = shift; + my $Unihan = shift; + my $BS = shift; + + my $word = $rwindow->get_core_word(); + my $possible = $rdict->get_real_potser($word); + + my $Ftime = 0; #Feature extraction time (FEX) + my $Ctime = 0; #Calculation time (SVM) + my %CLSFG; #global predictions + + my %maxpred; + my %maxGpred; + my %maxGpos; + foreach my $t (@{$possible}) { + $maxpred{$t} = $SVMTAGGER::MIN_VALUE; + $maxGpred{$t} = $SVMTAGGER::MIN_VALUE; + $maxGpos{$t} = $COMMON::emptypos; + } + + foreach my $tk (keys %{$path->[$i]->[0]}) { + my $max = $SVMTAGGER::MIN_VALUE; + if ($i == 0) { # no left context is available + my ($rclsf, $ftime, $ctime) = compute_tagging($rwindow, $M, $sinfo, $rdict, $direction, $rambp, $runkp, $verbose,$Unihan,$BS);# have modified add $Unihan + apply_softmax($rclsf, $softmax); + $Ftime += $ftime; $Ctime += $ctime; + foreach my $k (keys %{$rclsf}) { + if ($rclsf->{$k} >= $maxGpred{$k}) { $maxGpred{$k} = $rclsf->{$k}; $maxpred{$k} = $rclsf->{$k}; } + } + } + else { # left context must be build according to the current path + build_left_context($rwindow, $path, $i, $tk); + my ($rclsf, $ftime, $ctime) = compute_tagging($rwindow, $M, $sinfo, $rdict, $direction, $rambp, $runkp, $verbose,$Unihan,$BS);# have modified add $Unihan + $Ftime += $ftime; $Ctime += $ctime; + foreach my $tj (@{$possible}) { + apply_softmax($rclsf, $softmax); + foreach my $k (keys %{$rclsf}) { + if (($rclsf->{$k} + $path->[$i]->[0]->{$tk}) >= $maxGpred{$k}) { + $maxGpred{$k} = $rclsf->{$k} + $path->[$i]->[0]->{$tk}; + $maxpred{$k} = $rclsf->{$k}; + $maxGpos{$k} = $tk; + } + } + } + } + } + + foreach my $tj (@{$possible}) { + $path->[$i+1]->[0]->{$tj} = $maxGpred{$tj}; #d(i+1, $tj) + $path->[$i+1]->[1]->{$tj} = $maxGpos{$tj}; #f(i+1, $tj) + $path->[$i+1]->[2]->{$tj} = $maxpred{$tj}; + if ($verbose > $COMMON::verbose2) { + print STDERR "---------------------------------------\n"; + print STDERR "score(", $i+1, ", ", $tj, ") = ", $path->[$i+1]->[2]->{$tj}, "\n"; + print STDERR "d(", $i+1, ", ", $tj, ") = ", $path->[$i+1]->[0]->{$tj}, "\n"; + print STDERR "f(", $i+1, ", ", $tj, ") = ", $path->[$i+1]->[1]->{$tj}, "\n"; + } + } + + if (($nbeams > 0) or ($bratio != 0)) { path_beam_cutoff($path->[$i+1], $nbeams, $bratio); } + + return ($Ftime, $Ctime); +} + +sub Hmax +{ + #description _ returns the (key, value) pair of the max value found in a hash structure. + #param1 _ hash structure + #@return _ (maxkey, maxvalue) + + my $hash = shift; + + my $maxk; + my $maxv = $SVMTAGGER::MIN_VALUE; + foreach my $k (keys %{$hash}) { + if ($hash->{$k} > $maxv) { $maxv = $hash->{$k}; $maxk = $k; } + } + + return ($maxk, $maxv); +} + +sub do_viterbi_sentence +{ + #description _ responsible for performing viterbi tagging + #param1 _ WHOLE MODELS + #param2 _ text direction "LR" for left-to-right ; "RL" for right-to-left; "LRL" for both + #param3 _ input LR sentence list reference + #param4 _ SVMT models (LR/RL) + #param5 _ VERBOSE + #@return _ (output LR sentence list reference, global score, Ftime, Ctime) + + my $M = shift; + my $direction = shift; + my $input_LR = shift; + my $VM = shift; + my $verbose = shift; + my $Unihan = shift; + my $BS = shift; + + #INITIALIZATION + my @OUT; + my @PATH; + my $Ctime = 0; # (SVM) + my $Ftime = 0; # (FEX) + my $SIZE = scalar(@{$input_LR}); + my $sinfo = get_sentence_info_list($input_LR, $COMMON::lrmode, scalar(@{$input_LR}) - 1); + my $input; + if ($direction eq $COMMON::lrmode) { $input = $input_LR; } + elsif ($direction eq $COMMON::rlmode) { $input = COMMON::reverse_list($input_LR); } + $PATH[0] = [{ "." => 0 }, { "." => $COMMON::emptypos }, { "." => 0 }]; + + #INDUCTION + my $i = 0; + while ($i < $SIZE) { + my $rwindow = build_window($input, $i, $M->{WS}, $M->{dict}); + my $word = $rwindow->get_core_word(); + + if (($M->{dict}->unknown_word($word)) or ($M->{dict}->ambiguous_word($word))) { + # word is either unknown or known_ambiguous + my ($SFtime, $SCtime) = compute_scores($rwindow, $M->{dict}, $sinfo, $VM, \@PATH, $i, $direction, $M->{rAP}, $M->{rUP}, $M->{nbeams}, $M->{bratio}, $M->{softmax}, $verbose,$Unihan,$BS);# have modified add $Unihan + $Ftime += $SFtime; $Ctime += $SCtime; + } + else { # word is known_unambiguous + my $pos = $M->{dict}->get_mft($word); + my ($maxk, $maxv) = Hmax($PATH[$i][0]); + $PATH[$i+1]->[0]->{$pos} = $maxv; + $PATH[$i+1]->[1]->{$pos} = $maxk; + $PATH[$i+1]->[2]->{$pos} = 0; + } + + $i++; + } + + #EXAMINE FINAL PATH + if ($verbose > $COMMON::verbose2) { + print STDERR "---------------------------------------\n"; + print STDERR "viterbi path structure\n"; + my $j = 0; + while ($j < scalar(@PATH)) { + print STDERR "------------------ $j -----------------\n"; + foreach my $k (keys %{$PATH[$j]->[0]}) { + print STDERR "d($j, $k) = ", $PATH[$j][0]->{$k}, "\n"; + print STDERR "f($j, $k) = ", $PATH[$j][1]->{$k}, "\n"; + print STDERR "s($j, $k) = ", $PATH[$j][2]->{$k}, "\n"; + } + $j++; + } + print STDERR "---------------------------------------\n"; + } + + #TERMINATION -> path readout + $i = $SIZE - 1; + my ($pos, $Gscore) = Hmax($PATH[$i+1]->[0]); + while ($i >= 0) { + my $rOUT = new ENTRY($input->[$i], $pos, $PATH[$i+1]->[2], 0); + if ($direction eq $COMMON::lrmode) { unshift(@OUT, $rOUT); } + else { push(@OUT, $rOUT); } + $pos = $PATH[$i+1]->[1]{$pos}; + $i--; + } + + return(\@OUT, $Gscore, $Ftime, $Ctime); +} + +sub push_sentence +{ + #description _ it appends a sentence list to another + #param1 _ target list + #param2 _ source list + + my $target = shift; + my $source = shift; + + my $i; + while ($i < scalar(@{$source})) { + push(@{$target}, $source->[$i]); + $i++; + } + +} + +sub do_viterbi_tagging +{ + #description _ responsible for performing tagging one-pass [one-pass + LRL] + #param1 _ WHOLE MODELS + #param2 _ VERBOSE + #param3 _ text direction "LR" for left-to-right ; "RL" for right-to-left; "LRL" for both + #param4 _ input LR list reference + #param5 _ SVMT models + #@return _ (output LR list reference, global score, Ftime, Ctime) + + my $M = shift; + my $verbose = shift; + my $direction = shift; + my $input_LR = shift; + my $VM = shift; + my $Unihan = shift; + my $BS = shift; + + my @OUT; + my @SENTENCE; + my $Ftime = 0; # (FEX) + my $Ctime = 0; # (SVM) + my $Gscore = 0; + + my $iter = 0; + my $SIZE = scalar(@{$input_LR}); + + if ($verbose > $COMMON::verbose2) { + if ($direction eq $COMMON::lrmode) { print STDERR $iter; } + elsif ($direction eq $COMMON::rlmode) { print STDERR $SIZE; } + } + + while ($iter < $SIZE) { + my $word = $input_LR->[$iter]->get_word; + if ($word ne "") { # don't process emtpy lines + push(@SENTENCE, $word); + if ((COMMON::end_of_sentence($word)) or ($iter == $SIZE - 1)) { + if (!(COMMON::end_of_sentence($word))) { push(@SENTENCE, ""); }#modify "." + my ($out, $auxGscore, $SFtime, $SCtime) = do_viterbi_sentence($M, $direction, \@SENTENCE, $VM, $verbose,$Unihan,$BS);# have modified add $Unihan + $Ftime += $SFtime; $Ctime += $SCtime; $Gscore += $auxGscore; + push_sentence(\@OUT, $out); + @SENTENCE = (); + } + } + $iter++; + if ($verbose > $COMMON::verbose2) { + if ($direction eq $COMMON::lrmode) { COMMON::show_progress($iter, $COMMON::progress1, $COMMON::progress2); } + elsif ($direction eq $COMMON::rlmode) { COMMON::show_progress($SIZE - $iter - 1, $COMMON::progress1, $COMMON::progress2); } + } + } + + if ($verbose > $COMMON::verbose2) { + if ($direction eq $COMMON::lrmode) { print STDERR ".$iter [DONE]\n"; } + elsif ($direction eq $COMMON::rlmode) { print STDERR " [DONE]\n"; } + } + + return(\@OUT, $Gscore, $Ftime, $Ctime); +} + +sub do_tagging +{ + #description _ responsible for tagging in one-pass [one-pass LR/RL] + #param1 _ WHOLE MODELS + #param2 _ VERBOSE + #param3 _ text direction "LR" for left-to-right ; "RL" for right-to-left; + #param4 _ input LR list reference + #param5 _ SVMT model (LR/RL) 1 + #param6 _ SVMT model (LR/RL) 2 + #param7 _ mode? boolean: 0 -> do_normal :: 1 -> do_special :: 2 -> do_viterbi + #@return _ (output LR list reference, global score, Feature-time, Computation-time-svm) + + my $M = shift; + my $verbose = shift; + my $direction = shift; + my $input_LR = shift; + my $M1 = shift; + my $M2 = shift; + my $mode = shift; + my $Unihan = shift; + my $BS = shift; + + my @OUT; + + if ($verbose > $COMMON::verbose2) { + print STDERR "TAGGING < DIRECTION = "; + if ($direction eq $COMMON::lrmode) { print STDERR "left-to-right"; } + elsif ($direction eq $COMMON::rlmode) { print STDERR "right-to-left"; } + elsif ($direction eq $COMMON::lrlmode) { print STDERR "left-to-right then right-to-left"; } + elsif ($direction eq $COMMON::glrlmode) { print STDERR "left-to-right then right-to-left (global)"; } + else { print STDERR "$direction"; } + print STDERR " :: MODE = "; + if ($mode == $SVMTAGGER::Mdefault) { print STDERR "normal"; } + elsif ($mode == $SVMTAGGER::Mspecial) { print STDERR "special"; } + elsif ($mode == $SVMTAGGER::Mviterbi) { print STDERR "viterbi"; } + else { print STDERR "$mode"; } + print STDERR " :: MODEL = "; + if ($M1->{mode} == $COMMON::mode0) { print STDERR "ambiguous context"; } + elsif ($M1->{mode} == $COMMON::mode1) { print STDERR "disambiguated context"; } + elsif ($M1->{mode} == $COMMON::mode2) { print STDERR "no context"; } + else { print STDERR $M1->{mode}; } + if ($M2 != 0) { + print STDERR " :: MODEL2 = "; + if ($M2->{mode} == $COMMON::mode0) { print STDERR "ambiguous context"; } + elsif ($M2->{mode} == $COMMON::mode1) { print STDERR "disambiguated context"; } + elsif ($M2->{mode} == $COMMON::mode2) { print STDERR "no context"; } + else { print STDERR $M2->{mode}; } + } + print STDERR " >\n"; + } + + if ($mode == $SVMTAGGER::Mviterbi) { + return do_viterbi_tagging($M, $verbose, $direction, $input_LR, $M1,$Unihan,$BS);# have modified add $Unihan + } + else { #Mdefault or Mspecial + return do_greedy_tagging($M, $verbose, $direction, $input_LR, $M1, $M2, $mode,$Unihan,$BS);# have modified add $Unihan + } +} + +sub do_tagging_LRL_1P +{ + #description _ responsible for performing tagging one-pass [one-pass + LRL] + #param1 _ WHOLE MODELS + #param2 _ VERBOSE + #param3 _ text direction "LR" for left-to-right ; "RL" for right-to-left; "LRL" for both + #param4 _ input list reference + #param5 _ SVMT models 1 + #param6 _ SVMT models 2 + #param7 _ mode: 0 -> do_normal :: 1 -> do_special :: 2 -> do_viterbi + #@return _ (output list reference, Ftime, Ctime) + + my $M = shift; + my $verbose = shift; + my $direction = shift; + my $input_LR = shift; + my $M1 = shift; + my $M2 = shift; + my $mode = shift; + my $Unihan = shift; + my $BS = shift; + + my $OUT_LR; + my $OUT_RL; + my $GscoreLR; + my $GscoreRL; + my $Ftime; + my $Ctime; + my $FtimeLR; + my $CtimeLR; + my $FtimeRL; + my $CtimeRL; + + # -----> TAGGING ------------------------------------------------------------------------------ + + if ($direction eq $COMMON::lrmode) { # LEFT-TO-RIGHT + if ($M2 == 0) { + ($OUT_LR, $GscoreLR, $Ftime, $Ctime) = do_tagging($M, $verbose, $COMMON::lrmode, $input_LR, $M1->{LR}, 0, $mode,$Unihan,$BS);# have modified add $Unihan + } + else { + ($OUT_LR, $GscoreLR, $Ftime, $Ctime) = do_tagging($M, $verbose, $COMMON::lrmode, $input_LR, $M1->{LR}, $M2->{LR}, $mode,$Unihan,$BS);# have modified add $Unihan + } + return($OUT_LR, $Ftime, $Ctime); + } + elsif ($direction eq $COMMON::rlmode) { # RIGHT-TO-LEFT + if ($M2 == 0) { + ($OUT_RL, $GscoreRL, $Ftime, $Ctime) = do_tagging($M, $verbose, $COMMON::rlmode, $input_LR, $M1->{RL}, 0, $mode,$Unihan,$BS);# have modified add $Unihan + } + else { + ($OUT_RL, $GscoreRL, $Ftime, $Ctime) = do_tagging($M, $verbose, $COMMON::rlmode, $input_LR, $M1->{RL}, $M2->{RL}, $mode,$Unihan,$BS);# have modified add $Unihan + } + return($OUT_RL, $Ftime, $Ctime); + } + elsif ($direction eq $COMMON::lrlmode) { #both LEFT-TO-RIGHT and RIGHT-TO-LEFT + if ($M2 == 0) { + ($OUT_LR, $GscoreLR, $FtimeLR, $CtimeLR) = do_tagging($M, $verbose, $COMMON::lrmode, $input_LR, $M1->{LR}, 0, $mode,$Unihan,$BS);# have modified add $Unihan + ($OUT_RL, $GscoreRL, $FtimeRL, $CtimeRL) = do_tagging($M, $verbose, $COMMON::rlmode, $input_LR, $M1->{RL}, 0, $mode,$Unihan,$BS);# have modified add $Unihan + $Ftime = $FtimeLR + $FtimeRL; + $Ctime = $CtimeLR + $CtimeRL; + } + else { + ($OUT_LR, $GscoreLR, $FtimeLR, $CtimeLR) = do_tagging($M, $verbose, $COMMON::lrmode, $input_LR, $M1->{LR}, $M2->{LR}, $mode,$Unihan,$BS);# have modified add $Unihan + ($OUT_RL, $GscoreRL, $FtimeRL, $CtimeRL) = do_tagging($M, $verbose, $COMMON::rlmode, $input_LR, $M1->{RL}, $M2->{RL}, $mode,$Unihan,$BS);# have modified add $Unihan + $Ftime = $FtimeLR + $FtimeRL; + $Ctime = $CtimeLR + $CtimeRL; + } + if ($verbose > $COMMON::verbose2) { print STDERR "COMBINING LR/RL...0"; } + my $iter = 0; + my $SIZE = scalar(@{$input_LR}); + my @OUT_LRL; + while ($iter < $SIZE) { + apply_softmax($OUT_LR->[$iter]->get_pp, $M->{softmax}); + apply_softmax($OUT_RL->[$iter]->get_pp, $M->{softmax}); + if ($OUT_LR->[$iter]->get_pred >= $OUT_RL->[$iter]->get_pred) { push(@OUT_LRL, $OUT_LR->[$iter]); } + else { push(@OUT_LRL, $OUT_RL->[$iter]); } + $iter++; + if ($verbose > $COMMON::verbose2) { COMMON::show_progress($iter, $COMMON::progress1, $COMMON::progress2); } + } + if ($verbose > $COMMON::verbose2) { print STDERR ".$iter [DONE]\n"; } + return(\@OUT_LRL, $Ftime, $Ctime); + } + elsif (($direction eq $COMMON::glrlmode) and ($mode == $SVMTAGGER::Mviterbi)) { #both LEFT-TO-RIGHT and RIGHT-TO-LEFT + if ($M2 == 0) { + ($OUT_LR, $GscoreLR, $FtimeLR, $CtimeLR) = do_tagging($M, $verbose, $COMMON::lrmode, $input_LR, $M1->{LR}, 0, $mode,$Unihan,$BS);# have modified add $Unihan + ($OUT_RL, $GscoreRL, $FtimeRL, $CtimeRL) = do_tagging($M, $verbose, $COMMON::rlmode, $input_LR, $M1->{RL}, 0, $mode,$Unihan,$BS);# have modified add $Unihan + $Ftime = $FtimeLR + $FtimeRL; + $Ctime = $CtimeLR + $CtimeRL; + } + else { + ($OUT_LR, $GscoreLR, $FtimeLR, $CtimeLR) = do_tagging($M, $verbose, $COMMON::lrmode, $input_LR, $M1->{LR}, $M2->{LR}, $mode,$Unihan,$BS);# have modified add $Unihan + ($OUT_RL, $GscoreRL, $FtimeRL, $CtimeRL) = do_tagging($M, $verbose, $COMMON::rlmode, $input_LR, $M1->{RL}, $M2->{RL}, $mode,$Unihan,$BS);# have modified add $Unihan + $Ftime = $FtimeLR + $FtimeRL; + $Ctime = $CtimeLR + $CtimeRL; + } + if ($verbose > $COMMON::verbose2) { + print STDERR "COMBINING LR/RL...\n"; + print STDERR "G-score(LR) = $GscoreLR\n"; + print STDERR "G-score(RL) = $GscoreRL\n"; + } + if ($GscoreLR > $GscoreRL) { return($OUT_LR, $Ftime, $Ctime); } + else { return($OUT_RL, $Ftime, $Ctime); } + } + else { die "[TAGGING] WRONG DIRECTION ($direction)\n"; } +} + +sub do_tagging_LRL_2P +{ + #description _ responsible for performing tagging in a M0 strategy. (usual) + # right context is considered ambiguous. + #param1 _ WHOLE MODELS + #param2 _ VERBOSE + #param3 _ text direction "LR" for left-to-right ; "RL" for right-to-left; "LRL" for both + #param4 _ input list reference + #param5 _ 1st pass SVMT MODELS 1 + #param6 _ 1st pass SVMT MODELS 2 + #param7 _ 2nd pass SVMT MODELS 1 + #param8 _ 2nd pass SVMT MODELS 2 + #param9 _ mode: 0 -> do_normal :: 1 -> do_special :: 2 -> do_viterbi + #param10 _ mode: 0 -> do_normal :: 1 -> do_special :: 2 -> do_viterbi + #@return _ (output list reference, Ftime, Ctime) + + my $M = shift; + my $verbose = shift; + my $direction = shift; + my $input_LR = shift; + my $M1 = shift; + my $M2 = shift; + my $M3 = shift; + my $M4 = shift; + my $mode1 = shift; + my $mode2 = shift; + my $Unihan = shift; + my $BS = shift; + + if ($verbose > $COMMON::verbose2) { print STDERR "1st PASS\n"; } + my ($auxl, $Ftime, $Ctime) = do_tagging_LRL_1P($M, $verbose, $direction, $input_LR, $M1, $M2, $mode1,$Unihan,$BS);# have modified add $Unihan + if ($verbose > $COMMON::verbose2) { print STDERR "2nd PASS\n"; } + return (do_tagging_LRL_1P($M, $verbose, $direction, $auxl, $M3, $M4, $mode2,$Unihan,$BS), $Ftime, $Ctime);# have modified add $Unihan +} + +# ============================================================================================= +# =============================== EXPORTABLE METHODS ========================================== +# ============================================================================================= + +# -------------- EVALUATOR ----------------------------------------------------------------- + +sub SVMT_brief_eval +{ + #description _ briefly compute and print [known-acc amb-acc unk-acc overall-acc] + #param1 _ model + #param2 _ input filename + #param3 _ output filename + #param4 _ verbose (0/1) + + my $model = shift; + my $input = shift; + my $output = shift; + my $verbose = shift; + + my $statistics = STATS::do_statistics($model, $input, $output, $verbose); + STATS::print_results($statistics); +} + +sub SVMT_deep_eval +{ + #description _ deeply evaluate and print SVMT results for several sets of words + #param1 _ model + #param2 _ input filename + #param3 _ output filename + #param4 _ mode + #param5 _ verbose (0/1/2) + #@return _ ($nhits, $nsamples) + + my $model = shift; + my $input = shift; + my $output = shift; + my $mode = shift; + my $verbose = shift; + + print "* ========================= SVMTeval report ==============================\n"; + print "* model = [$model]\n"; + print "* testset (gold) = [$input]\n"; + print "* testset (predicted) = [$output]\n"; + print "* ========================================================================\n"; + + my $statistics = STATS::do_statistics($model, $input, $output, $verbose); + STATS::print_stats_header($statistics); + + if ($mode == 0) { #complete report (everything) + STATS::print_stats_ambU($statistics); + STATS::print_stats_ambN($statistics); + STATS::print_stats_ambK($statistics); + STATS::print_stats_ambP($statistics); + } + elsif ($mode == 2) { #accuracy of known vs. unknown words + STATS::print_stats_ambU($statistics); + } + elsif ($mode == 3) { #accuracy per level of ambiguity + STATS::print_stats_ambN($statistics); + } + elsif ($mode == 4) { #accuracy per kind of ambiguity + STATS::print_stats_ambK($statistics); + } + elsif ($mode == 5) { #accuracy per part-of-speech + STATS::print_stats_ambP($statistics); + } + + STATS::print_stats_overall($statistics); +} + +# -------------- TAGGER -------------------------------------------------------------------- + +sub do_SVMT_file +{ + #description _ performs a given word per line tokenized corpus tagging. + # (includes known and unknown words) + # right-to-left direction + #param1 _ MODEL NAME + #param2 _ EPSILON threshold for W features relevance [KNOWN WORDS] + #param3 _ OMEGA threshold for W features relevance [UNKNOWN WORDS] + #param4 _ VERBOSE + #param5 _ text direction "LR" for left-to-right ; "RL" for right-to-left; "LRL" for both + #param6 _ strategy --> 0: 1-pass ambiguous right + # 1: 2-passes (1)no-right (2)unambiguous-right + # 2: 1-pass with 2 models (1)no-right (2)unambiguous-right + # 3: 1-pass unsupervised learning + # 4: 1-pass unknown words seen in training of known words + # 5: 1-pass viterbi tagging (M0) + # 6: 1-pass viterbi tagging (M4) + #param7 _ backup lexicon if available + #param8 _ input filename + #param9 _ output filename + #param10 _ verbosity + + my $model = shift; + my $epsilon = shift; + my $omega = shift; + my $verbose = shift; + my $direction = shift; + my $strategy = shift; + my $blexicon = shift; + my $input_file = shift; + my $output_file = shift; + my $verbose = shift; + + my $INPUT = new IO::File("< $input_file") or die "Couldn't open input file: $input_file\n"; + my $OUTPUT = new IO::File("> $output_file") or die "Couldn't open output file: $output_file\n"; + + if ($verbose > $COMMON::verbose1) { print "---------------------------------------------------------------------------------------------\nTESTING MODEL ON <$input_file>...\n"; } + + # ======================== READING SVMT MODEL =============================================== + my $M = SVMT_load($model, $strategy, $direction, $epsilon, $omega, $blexicon, $verbose); + + my $s = 0; + my $stop = 0; + while (!$stop) { + my $input; + my $in; + ($input, $in, $stop) = ENTRY::read_sentence_file($INPUT); + my ($out, $time) = SVMTAGGER::SVMT_tag($strategy, -1, 0, $COMMON::softmax1, $direction, $in, $M, 0); + $s++; + my $i = 0; + my $iter = 0; + while ($iter < scalar(@{$input})) { + my @line = split($COMMON::in_valseparator, ${$input}[$iter]); + if ((scalar(@line) == 0) or ($line[0] eq $COMMON::IGNORE)) { + print $OUTPUT $input->[$iter]."\n"; + } + else { + shift(@line); + unshift(@line, $out->[$i]->get_pos); + unshift(@line, $in->[$i]->get_word); + print $OUTPUT join($COMMON::out_valseparator, @line)."\n"; + $i++; + } + $iter++; + } + if ($verbose > $COMMON::verbose2) { COMMON::show_progress($s, $COMMON::progress3, $COMMON::progress0); } + } + if ($verbose > $COMMON::verbose1) { print STDERR "...", $s - 1, " sentences [DONE]\n"; } +} + +sub do_SVMT_list +{ + #description _ performs a given word per line tokenized corpus tagging. + # (includes known and unknown words) + # right-to-left direction + #param1 _ MODEL NAME + #param2 _ EPSILON threshold for W features relevance [KNOWN WORDS] + #param3 _ OMEGA threshold for W features relevance [UNKNOWN WORDS] + #param4 _ VERBOSE + #param5 _ text direction "LR" for left-to-right ; "RL" for right-to-left; "LRL" for both + #param6 _ strategy --> 0: 1-pass ambiguous right + # 1: 2-passes (1)no-right (2)unambiguous-right + # 2: 1-pass with 2 models (1)no-right (2)unambiguous-right + # 3: 1-pass unsupervised learning + # 4: 1-pass unknown words seen in training of known words + # 5: 1-pass viterbi tagging (M0) + # 6: 1-pass viterbi tagging (M4) + #param7 _ backup lexicon if available + #param8 _ input list reference + + my $model = shift; + my $epsilon = shift; + my $omega = shift; + my $verbose = shift; + my $direction = shift; + my $strategy = shift; + my $blexicon = shift; + my $INPUT_LR = shift; + + # ======================== READING SVMT MODEL =============================================== + my $M = SVMT_load($model, $strategy, $direction, $epsilon, $omega, $blexicon, $verbose); + + # =========================== POS-TAGGING =================================================== + return SVMT_tag($strategy, -1, 0, $COMMON::softmax1, $direction, $INPUT_LR, $M, $verbose); +} + +sub SVMT_load +{ + #description _ responsible for loading SVMT (models + dictionary) + #param1 _ model name + #param2 _ strategy --> 0: 1-pass ambiguous right + # 1: 2-passes (1)no-right (2)unambiguous-right + # 2: 1-pass with 2 models (0)ambiguous-right (2)unambiguous-right + # 3: 1-pass unsupervised learning + # 4: 1-pass unknown words seen in training of known words + # 5: 1-pass viterbi tagging (M0) + # 6: 1-pass viterbi tagging (M4) + #param3 _ direction mode (LR/RL/LRL) + #param4 _ EPSILON threshold for W features relevance [KNOWN WORDS] + #param5 _ OMEGA threshold for W features relevance [UNKNOWN WORDS] + #param6 _ backup lexicon if available + #param7 _ VERBOSE + #@return _ SVMT models + + my $model = shift; + my $strategy = shift; + my $direction = shift; + my $epsilon = shift; + my $omega = shift; + my $blexicon = shift; + my $verbose = shift; + + my %M; #SVMT COMPLETE MODEL + + # ========================== READING DICTIONARY ============================================= + my $dict; + if ($blexicon ne "") { #joining backup lexicon + srand(); + my $xpnddict = $COMMON::DICTEXT.".".rand(100000); + if ($verbose) { print STDERR "EXPANDING DICTIONARY <".$model.".".$COMMON::DICTEXT."> WITH <".$blexicon."> ONTO <".$xpnddict.">\n"; } + expand_dictionary($model.".".$COMMON::DICTEXT, $blexicon, $xpnddict, $verbose); + $dict = SVMT_load_dict($xpnddict, $model.".".$COMMON::AMBPEXT, $model.".".$COMMON::UNKPEXT, $verbose); + system "rm -f $xpnddict"; + } + else { + $dict = SVMT_load_dict($model.".".$COMMON::DICTEXT, $model.".".$COMMON::AMBPEXT, $model.".".$COMMON::UNKPEXT, $verbose); + } + $M{dict} = $dict; + + # ========================== READING SLIDING WINDOW INFO ==================================== + $M{WS} = COMMON::read_list($model.".".$COMMON::WINEXT); + # ========================== READING POS lists ============================================== + my $rambp = COMMON::read_list($model.".".$COMMON::AMBPEXT); + my $runkp = COMMON::read_list($model.".".$COMMON::UNKPEXT); + $M{rAP} = COMMON::do_hash($rambp, ""); + $M{rUP} = COMMON::do_hash($runkp, ""); + + # ========================== READING MODELS and feature sets ================================ + if ($strategy == $COMMON::st0) { + #one-pass [right context is ambiguous] (default) + $M{A0k} = SVMTAGGER::read_fs($model.".".$COMMON::A0EXT, $M{WS}); + $M{A0u} = SVMTAGGER::read_fs($model.".".$COMMON::A0EXT.".".$COMMON::unkext, $M{WS}); + $M{P1} = SVMT_load_models($model, $direction, $COMMON::mode0, $epsilon, $omega, $verbose, $rambp, $runkp, $M{A0k}, $M{A0u}); + } + elsif ($strategy == $COMMON::st1) { + #two-passes [1st no-right :: 2nd unambiguous-right] + $M{A2k} = SVMTAGGER::read_fs($model.".".$COMMON::A2EXT, $M{WS}); + $M{A2u} = SVMTAGGER::read_fs($model.".".$COMMON::A2EXT.".".$COMMON::unkext, $M{WS}); + $M{A1k} = SVMTAGGER::read_fs($model.".".$COMMON::A1EXT, $M{WS}); + $M{A1u} = SVMTAGGER::read_fs($model.".".$COMMON::A1EXT.".".$COMMON::unkext, $M{WS}); + $M{P1} = SVMT_load_models($model, $direction, $COMMON::mode2, $epsilon, $omega, $verbose, $rambp, $runkp, $M{A2k}, $M{A2u}); + $M{P2} = SVMT_load_models($model, $direction, $COMMON::mode1, $epsilon, $omega, $verbose, $rambp, $runkp, $M{A1k}, $M{A1u}); + } + elsif ($strategy == $COMMON::st2) { + #one-pass [unknown words are special] + $M{A0k} = SVMTAGGER::read_fs($model.".".$COMMON::A0EXT, $M{WS}); + $M{A0u} = SVMTAGGER::read_fs($model.".".$COMMON::A0EXT.".".$COMMON::unkext, $M{WS}); + $M{A2k} = SVMTAGGER::read_fs($model.".".$COMMON::A2EXT, $M{WS}); + $M{A2u} = SVMTAGGER::read_fs($model.".".$COMMON::A2EXT.".".$COMMON::unkext, $M{WS}); + $M{P1} = SVMT_load_models($model, $direction, $COMMON::mode0, $epsilon, $omega, $verbose, $rambp, $runkp, $M{A0k}, $M{A0u}); + $M{P2} = SVMT_load_models($model, $direction, $COMMON::mode2, $epsilon, $omega, $verbose, $rambp, $runkp, $M{A2k}, $M{A2u}); + } + elsif ($strategy == $COMMON::st3) { + #one-pass unsupervised learning models + $M{A3k} = SVMTAGGER::read_fs($model.".".$COMMON::A3EXT, $M{WS}); + $M{A3u} = SVMTAGGER::read_fs($model.".".$COMMON::A3EXT.".".$COMMON::unkext, $M{WS}); + $M{P1} = SVMT_load_models($model, $direction, $COMMON::mode3, $epsilon, $omega, $verbose, $rambp, $runkp, $M{A3k}, $M{A3u}); + } + elsif ($strategy == $COMMON::st4) { + #one-pass [right context is ambiguous] [there are unknown words on training] + $M{A4k} = SVMTAGGER::read_fs($model.".".$COMMON::A4EXT, $M{WS}); + $M{A4u} = SVMTAGGER::read_fs($model.".".$COMMON::A4EXT.".".$COMMON::unkext, $M{WS}); + $M{P1} = SVMT_load_models($model, $direction, $COMMON::mode4, $epsilon, $omega, $verbose, $rambp, $runkp, $M{A4k}, $M{A4u}); + } + elsif ($strategy == $COMMON::st5) { + #one-pass TRELLIS [unambiguous-right] VITERBI sentence-level M0 + $M{A0k} = SVMTAGGER::read_fs($model.".".$COMMON::A0EXT, $M{WS}); + $M{A0u} = SVMTAGGER::read_fs($model.".".$COMMON::A0EXT.".".$COMMON::unkext, $M{WS}); + $M{P1} = SVMT_load_models($model, $direction, $COMMON::mode0, $epsilon, $omega, $verbose, $rambp, $runkp, $M{A0k}, $M{A0u}); + } + elsif ($strategy == $COMMON::st6) { + #one-pass TRELLIS [unambiguous-right] VITERBI sentence-level M4 + #$M{A1k} = SVMTAGGER::read_fs($model.".".$COMMON::A1EXT, $M{WS}); + #$M{A1u} = SVMTAGGER::read_fs($model.".".$COMMON::A1EXT.".".$COMMON::unkext, $M{WS}); + #$M{P1} = SVMT_load_models($model, $direction, $COMMON::mode1, $epsilon, $omega, $verbose, $rambp, $runkp, $M{A1k}, $M{A1u}); + $M{A4k} = SVMTAGGER::read_fs($model.".".$COMMON::A4EXT, $M{WS}); + $M{A4u} = SVMTAGGER::read_fs($model.".".$COMMON::A4EXT.".".$COMMON::unkext, $M{WS}); + $M{P1} = SVMT_load_models($model, $direction, $COMMON::mode4, $epsilon, $omega, $verbose, $rambp, $runkp, $M{A4k}, $M{A4u}); + } + + return \%M; +} + +sub SVMT_tag +{ + #description _ given a list of tokens, performs the SVM-based pos-tagging. + #param1 _ strategy --> 0: 1-pass ambiguous right + # 1: 2-passes (1)no-right (2)unambiguous-right + # 2: 1-pass with 2 models (1)no-right (2)unambiguous-right + # 3: 1-pass unsupervised learning + # 4: 1-pass unknown words seen in training of known words + # 5: 1-pass viterbi tagging (M0) + # 6: 1-pass viterbi tagging (M4) + #param2 _ beam count cutoff [only applicable under sentence-level strategy] + #param3 _ beam search ratio [only applicable under sentence-level strategy] + #param4 _ softmax mode 0: do nothing + # _ 1: do ln(e^score(i) / [sum:1<=j<=N:[e^score(j)]]) + #param5 _ direction mode (LR/RL/LRL) + #param6 _ input list reference + #param7 _ SVMT models + #param8 _ VERBOSE + #@return _ (output list reference, Ftime, Ctime) + + my $strategy = shift; + my $nbeams = shift; + my $bratio = shift; + my $softmax = shift; + my $direction = shift; + my $INPUT_LR = shift; + my $M = shift; + my $verbose = shift; + + my $out; + my $Ftime; + my $Ctime; + + my $Unihan = read_unihan(); + my $BS = read_bs(); + + if (!(defined($M))) { die "[SVMT] model is unavailable!!\n"; } + + $M->{nbeams} = $nbeams; + $M->{softmax} = $softmax; + $M->{bratio} = $bratio; + + if (scalar(@{$INPUT_LR}) > 0) { # list isn't empty + if (($strategy == $COMMON::st0) or ($strategy == $COMMON::st3) or ($strategy == $COMMON::st4)) { + #one-pass default + ($out, $Ftime, $Ctime) = do_tagging_LRL_1P($M, $verbose, $direction, $INPUT_LR, $M->{P1}, 0, $SVMTAGGER::Mdefault,$Unihan,$BS);# have modified add $Unihan + } + elsif ($strategy == $COMMON::st1) { #two-passes [1st no-right :: 2nd unambiguous-right] + ($out, $Ftime, $Ctime) = do_tagging_LRL_2P($M, $verbose, $direction, $INPUT_LR, $M->{P1}, 0, $M->{P2}, 0, $SVMTAGGER::Mdefault, $SVMTAGGER::Mdefault,$Unihan,$BS);# have modified add $Unihan + } + elsif ($strategy == $COMMON::st2) { #one-pass [unknown words are special] + ($out, $Ftime, $Ctime) = do_tagging_LRL_1P($M, $verbose, $direction, $INPUT_LR, $M->{P1}, $M->{P2}, $SVMTAGGER::Mspecial,$Unihan,$BS);# have modified add $Unihan + } + elsif (($strategy == $COMMON::st5) or ($strategy == $COMMON::st6)) { + #one-pass sentence-level likelihood VITERBI [ambiguous right] + ($out, $Ftime, $Ctime) = do_tagging_LRL_1P($M, $verbose, $direction, $INPUT_LR, $M->{P1}, 0, $SVMTAGGER::Mviterbi,$Unihan,$BS);# have modified add $Unihan + } + } + + my @time = ($Ftime, $Ctime); + + return ($out, \@time); +} + +sub SVMT_prepare_input +{ + #description _ transforms a list of words into a list of entries + #param1 _ list of tokens + #@return _ list of entries + + my $tokens = shift; + + my @entries; + my $i = 0; + while ($i < scalar(@{$tokens})) { + if ($tokens->[$i] ne "") { + my @l = split(" ", $tokens->[$i]); + my $word = shift(@l); + my $elem = new ENTRY($word, $COMMON::emptypos, 0, \@l); + push(@entries, $elem); + } + $i++; + } + + return \@entries; +} + +# -------------- LEARNER ------------------------------------------------------------------- + +sub learn_known +{ + #description _ responsible for learning an SVMT model for known tokens. + #param1 _ model name + #param2 _ training set filename + #param3 _ sample set filename + #param4 _ sample set binary mapping filename + #param5 _ dictionary object reference + #param6 _ model type + # (generate_features 0-ambiguous-right :: 1-unambiguous-right :: 2-no-right) + # ( 3-unsupervised :: 4-unkown words on training) + #param7 _ model type file EXTENSION + #param8 _ model direction + #param9 _ model direction file EXTENSION + #param10 _ configuration hash reference + #param11 _ remake? 1 -> features are extracted (out from scratch) from trainset + # 0 -> existing sample file is used (also mapping) + #param12 _ report file + #param13 _ verbosity [0..3] + + my $model = shift; + my $trainset = shift; + my $smplset = shift; + my $smplmap = shift; + my $rdict = shift; + my $mode = shift; + my $modext = shift; + my $direction = shift; + my $dirext = shift; + my $config = shift; + my $remakeF = shift; + my $report = shift; + my $verbose = shift; + my $Unihan = shift; + my $BS = shift; + + my $smpldsf = $smplset.".".$COMMON::DSFEXT; + + # ----------------- KNOWN WORDS ---------------------------------------------------------- + if ($verbose > $COMMON::verbose1) { COMMON::report($report, "---------------- KNOWN WORDS... [MODE = $mode :: DIRECTON = $direction] -------------------\n"); } + + if ($remakeF) { + if ($mode == $COMMON::mode4) { + SVMTAGGER::do_attribs_kn_unk($model, $trainset, $smplset, $direction, $mode, $config, $report, $verbose,$Unihan,$BS);# have modified add $Unihan + } + else { + SVMTAGGER::do_attribs_kn($trainset, $rdict, $smplset, $direction, $mode, $config, $report, $verbose,$Unihan,$BS);# have modified add $Unihan + } + my $rM = MAPPING::make_mapping($smplset, $report, $verbose); + if ($config->{F} == 1) { + $rM = MAPPING::filter_mapping($rM, $config->{fmin}, $config->{maxmapsize}, $report, $verbose); + } + MAPPING::write_mapping($rM, $smplmap, $report, $verbose); + MAPPING::map_set($smplset, $smplmap, $smpldsf, $report, $verbose); + } + + SVMTAGGER::do_learn($rdict, $smplmap, $config->{AP}, $model, $modext, $dirext, $smpldsf, $config->{Ck}, 0, 0, $mode, $config->{SVMDIR}, $config->{Eratio}, $report, $verbose); + + if ($config->{rmfiles}) { system "rm -f $smplset"; system "rm -f $smpldsf";} +} + +sub learn_unknown +{ + #description _ responsible for learning an SVMT model for unknown tokens. + #param1 _ model name + #param2 _ training set filename + #param3 _ sample set filename + #param4 _ sample set binary mapping filename + #param5 _ dictionary object reference + #param6 _ model type + #param7 _ model type file EXTENSION + # (generate_features 0-ambiguous-right :: 1-unambiguous-right :: 2-no-right) + # ( 3-unsupervised :: 4-unkown words on training) + #param8 _ model direction + #param9 _ model direction file EXTENSION + #param10 _ configuration hash reference + #param11 _ remake? 1 -> features are extracted (out from scratch) from trainset + # 0 -> existing sample file is used (also mapping) + #param12 _ report file + #param13 _ verbosity [0..3] + + my $model = shift; + my $trainset = shift; + my $unksmplset = shift; + my $unksmplmap = shift; + my $rdict = shift; + my $mode = shift; + my $modext = shift; + my $direction = shift; + my $dirext = shift; + my $config = shift; + my $remakeF = shift; + my $report = shift; + my $verbose = shift; + my $Unihan = shift; + my $BS = shift; + + my $unksmpldsf = $unksmplset.".".$COMMON::DSFEXT; + + # --------------- UNKNOWN WORDS ---------------------------------------------------------- + if ($verbose > $COMMON::verbose1) { COMMON::report($report, "---------------- UNKNOWN WORDS... [MODE = $mode :: DIRECTON = $direction] -------------------\n"); } + + if ($remakeF) { + SVMTAGGER::do_attribs_unk($model, $trainset, $rdict, $unksmplset, $direction, $mode, $config, $report, $verbose,$Unihan,$BS);# have modified add $Unihan + my $rUM = MAPPING::make_mapping($unksmplset, $report, $verbose); + if ($config->{F} == 1) { + $rUM = MAPPING::filter_mapping($rUM, $config->{fmin}, $config->{maxmapsize}, $report, $verbose); + } + MAPPING::write_mapping($rUM, $unksmplmap, $report, $verbose); + MAPPING::map_set($unksmplset, $unksmplmap, $unksmpldsf, $report, $verbose); + } + + SVMTAGGER::do_learn_unk($unksmplmap, $config->{UP}, $model, $modext, $dirext, $unksmpldsf, $config->{Cu}, 0, 0, $mode, $config->{SVMDIR}, $report, $verbose); + if ($config->{rmfiles}) { system "rm -f $unksmplset"; system "rm -f $unksmpldsf"; } +} + +sub merge_models +{ + #description _ responsible for merging SVMT models. + #param1 _ model name + #param2 _ model type file EXTENSION + #param3 _ model direction file EXTENSION + #param4 _ sample set binary mapping filename for known words + #param5 _ sample set binary mapping filename for unknown words + #param6 _ configuration hash reference + #param7 _ merged file extension + #param8 _ which models to merge (0 -> only known words : 1 -> only unknown words : 2 -> both + #param9 _ report file + #param10 _ verbosity [0..3] + + my $model = shift; + my $modext = shift; + my $dirext = shift; + my $smplmap = shift; + my $unksmplmap = shift; + my $config = shift; + my $MRGEXT = shift; + my $which = shift; + my $report = shift; + my $verbose = shift; + + # ------------------------------------------------------------------------------------------- + # ----------------------- WRITING MERGED MODELS --------------------------------------------- + + if (($which == 0) or ($which == 2)) { + # -------------------------- MAPPING -------------------------------------------------------- + if ($verbose > $COMMON::verbose1) { print "READING MAPPING FOR KNOWN WORDS...<$smplmap>\n"; } + my $rmap = MAPPING::read_mapping($smplmap); + # -------------------------- SVM ------------------------------------------------------------ + # models are read [and optionally irrelevant weights may be filtered out] + if ($verbose > $COMMON::verbose1) { print "READING SVM-MODELS FOR KNOWN WORDS...\n"; } + my ($rW, $rB) = SVM::read_models($model, $config->{AP}, "$modext.$dirext", $config->{Kfilter}, $rmap, $verbose); + # -------------------------- MODEL/MAPPING merging optimization ----------------------------- + if ($verbose > $COMMON::verbose1) { print "MERGING MAPPING and MODELS FOR KNOWN WORDS...\n"; } + my $KNMODEL = SVM::merge_models($rmap, $rW); + if ($verbose > $COMMON::verbose1) { print "WRITING MERGED MODELS FOR KNOWN WORDS...<$model.$modext.$dirext.$MRGEXT>\n"; } + SVM::write_merged_models($KNMODEL, $rB, $config, "$model.$modext.$dirext.$MRGEXT", 0); + if ($config->{rmfiles}) { + system "rm -f $smplmap"; + system "rm -f $model.$modext.$dirext.$COMMON::Bext"; + system "rm -f $model.$modext.$dirext.$COMMON::Wext"; + } + } + if (($which == 1) or ($which == 2)) { + # -------------------------- MAPPING -------------------------------------------------------- + if ($verbose > $COMMON::verbose1) { print "READING MAPPING FOR UNKNOWN WORDS...<$unksmplmap>\n"; } + my $runkmap = MAPPING::read_mapping($unksmplmap); + if ($verbose > $COMMON::verbose1) { print "READING SVM-MODELS FOR UNKNOWN WORDS...\n"; } + # -------------------------- SVM ------------------------------------------------------------ + # models are read [and optionally irrelevant weights may be filtered out] + my ($runkW, $runkB) = SVM::read_models($model, $config->{UP}, "$COMMON::unkext.$modext.$dirext", $config->{Ufilter}, $runkmap, $verbose); + # -------------------------- MODEL/MAPPING merging optimization ----------------------------- + if ($verbose > $COMMON::verbose1) { print "MERGING MAPPING and MODELS FOR UNKNOWN WORDS...\n"; } + my $UNKMODEL = SVM::merge_models($runkmap, $runkW); + if ($verbose > $COMMON::verbose1) { print "WRITING MERGED MODELS FOR UNKNOWN WORDS...<$model.$COMMON::unkext.$modext.$dirext.$MRGEXT>\n"; } + SVM::write_merged_models($UNKMODEL, $runkB, $config, "$model.$COMMON::unkext.$modext.$dirext.$MRGEXT", 1); + if ($config->{rmfiles}) { + system "rm -f $unksmplmap"; + system "rm -f $model.$COMMON::unkext.$modext.$dirext.$COMMON::Wext"; + system "rm -f $model.$COMMON::unkext.$modext.$dirext.$COMMON::Bext"; + } + } +} + +sub build_SVMT +{ + #description _ responsible for building SVMT models [given a current setting]. + #param1 _ model name + #param2 _ training set filename + #param3 _ dictionary object reference + #param4 _ model type + # (generate_features 0-ambiguous-right :: 1-unambiguous-right :: 2-no-right) + # ( 3-unsupervised :: 4-unkown words on training) + #param5 _ model direction + #param6 _ configuration hash reference + #param7 _ which models to build (0 -> only known words : 1 -> only unknown words : 2 -> both + #param8 _ remake? 1 -> features are extracted (out from scratch) from trainset + # KNOWN 0 -> existing sample file is used (also mapping) + #param9 _ remake? 1 -> features are extracted (out from scratch) from trainset + # UNKNOWN 0 -> existing sample file is used (also mapping) + #param10 _ report file + #param11 _ verbosity [0..3] + + + my $model = shift; + my $trainset = shift; + my $rdict = shift; + my $mode = shift; + my $direction = shift; + my $config = shift; + my $which = shift; + my $remakeFK = shift; + my $remakeFU = shift; + my $report = shift; + my $verbose = shift; + my $Unihan = shift; + my $BS = shift; + + my $dirext; + if ($direction eq $COMMON::lrmode) { $dirext .= "$COMMON::lrext"; } + elsif ($direction eq $COMMON::rlmode) { $dirext .= "$COMMON::rlext"; } + my $modext = SVMTAGGER::find_mext($mode); + + if ($remakeFK) { + if (-e "$model.$modext.$dirext*") { + if ($verbose > $COMMON::verbose1) { + print "ERASING previous work on same models KNOWN < $model :: $modext :: $dirext >\n"; + } + system "rm -f $model.$modext.$dirext*"; + } + } + if ($remakeFU > $COMMON::verbose1) { + if (-e "$model.$COMMON::unkext.$modext.$dirext.*") { + if ($verbose) { + print "ERASING previous work on same models UNKNOWN < $model :: $COMMON::unkext :: $modext :: $dirext >\n"; + } + system "rm -f $model.$COMMON::unkext.$modext.$dirext.*"; + } + } + + my $smplset = $model.".".$modext.".".$dirext.".".$COMMON::smplext; #SAMPLE SET + my $smplmap = $smplset.".".$COMMON::mapext; #SAMPLE MAPPING + my $unksmplset = $model.".".$COMMON::unkext.".".$modext.".".$dirext.".".$COMMON::smplext; #SAMPLE SET + my $unksmplmap = $unksmplset.".".$COMMON::mapext; #SAMPLE MAPPING + + if (($which == 0) or ($which == 2)) { + SVMTAGGER::learn_known($model, $trainset, $smplset, $smplmap, $rdict, $mode, $modext, $direction, $dirext, $config, $remakeFK, $report, $verbose,$Unihan,$BS);# have modified add $Unihan + } + if (($which == 1) or ($which == 2)) { + SVMTAGGER::learn_unknown($model, $trainset, $unksmplset, $unksmplmap, $rdict, $mode, $modext, $direction, $dirext, $config, $remakeFU, $report, $verbose,$Unihan,$BS);# have modified add $Unihan + } + SVMTAGGER::merge_models($model, $modext, $dirext, $smplmap, $unksmplmap, $config, $COMMON::MRGEXT, $which, $report, $verbose); +} + +sub adjust_C +{ + #description _ responsible for tuning C parameter for SVMT models. + #param1 _ model name + #param2 _ training set filename + #param3 _ dictionary object reference + #param4 _ model type + # (generate_features 0-ambiguous-right :: 1-unambiguous-right :: 2-no-right) + # ( 3-unsupervised :: 4-unkown words on training) + #param5 _ model direction + #param6 _ configuration hash reference + #param7 _ C parameter tuning options + # C:begin:end:n_iters:n_segments:[log|nolog]:[V|CV]:CV_n_folders + # e.g. C:0.001:10:3:5:log:V + # e.g. C:0.001:10:3:5:nolog:V + # e.g. C:0.001:10:3:5:log:CV:10 + #param8 _ validation set + #param9 _ adjust C for (0) known words (1) unknown words + #param10 _ report file + #param11 _ verbosity [0..3] + #@return _ (optimal C, remake features?) + + my $model = shift; + my $trainset = shift; + my $rdict = shift; + my $mode = shift; + my $direction = shift; + my $config = shift; + my $CTopt = shift; + my $valset = shift; + my $unknown = shift; + my $report = shift; + my $verbose = shift; + my $Unihan = shift; + my $BS = shift; + + my @CToptions = split(/;/, $CTopt); + my $MIN_C = $CToptions[1]; + my $MAX_C = $CToptions[2]; + my $MAX_DEPTH = $CToptions[3]; + my $nSEGMENTS = $CToptions[4]; + my $LOG = ($CToptions[5] eq "log"); + + if ($verbose) { + COMMON::report($report, "*********************************************************************************************\nC-PARAMETER TUNING\non <$trainset>\non [".($unknown? "UNKNOWN" : "KNOWN")."]\nC-RANGE = [$MIN_C..$MAX_C] :: [$CToptions[5]] :: #LEVELS = ".$MAX_DEPTH." :: SEGMENTATION RATIO = ".$nSEGMENTS."\n*********************************************************************************************\n"); + } + my $dirext; + my $strategy = SVMTAGGER::find_strategy($mode); + if ($direction eq $COMMON::lrmode) { $dirext .= "$COMMON::lrext"; } + elsif ($direction eq $COMMON::rlmode) { $dirext .= "$COMMON::rlext"; } + + my $modext = SVMTAGGER::find_mext($mode); + + #BUILIDING COOPERATIVE MODELS [working together] ONLY IF NOT EXISTED + if ($mode == $COMMON::mode1) { + if ($verbose) { COMMON::report($report, "[INIT] BUILDING COOPERATIVE MODELS [M1 -> M2]...\n"); } + if ((!(-e "$model.$COMMON::M2EXT.$dirext.$COMMON::MRGEXT")) or (!(-e "$model.$COMMON::unkext.$COMMON::M2EXT.$dirext.$COMMON::MRGEXT"))) { #build cooperative models [working together] only if they didn't existed + SVMTAGGER::build_SVMT($model, $trainset, $rdict, $COMMON::mode2, $direction, $config, 2, 1, 1, $report, $verbose,$Unihan,$BS);# have modified add $Unihan + } + } + elsif ($mode == $COMMON::mode2) { + if ($verbose) { COMMON::report($report, "[INIT] BUILDING COOPERATIVE MODELS [M2 -> M1]...\n"); } + if ((!(-e "$model.$COMMON::M1EXT.$dirext.$COMMON::MRGEXT")) or (!(-e "$model.$COMMON::unkext.$COMMON::M1EXT.$dirext.$COMMON::MRGEXT"))) { + SVMTAGGER::build_SVMT($model, $trainset, $rdict, $COMMON::mode1, $direction, $config, 2, 1, 1, $report, $verbose,$Unihan,$BS);# have modified add $Unihan + } + } + + my $smplset = $model.".".$modext.".".$dirext.".".$COMMON::smplext; #SAMPLE SET + my $smplmap = $smplset.".".$COMMON::mapext; #SAMPLE MAPPING + my $unksmplset = $model.".".$COMMON::unkext.".".$modext.".".$dirext.".".$COMMON::smplext; #SAMPLE SET + my $unksmplmap = $unksmplset.".".$COMMON::mapext; #SAMPLE MAPPING + + my $accuracy = 0; #final accuracy + my $maxC = $MIN_C; #C found + my $maxiter = 0; #where C was found + my $maxdepth = 0; #wher C was found + my $factor = ($MAX_C - $MIN_C) / ($nSEGMENTS); #factor to scale greedy exploration + + if ($LOG) { $factor = 10; } #first step goes logarithmically + + my $maxacc = -1; + my $depth = 0; + my $C; + + my $remakeF = 1; #REMAKE FEATURES? [only the first iteration] + while ($depth < $MAX_DEPTH){ + if ($verbose) { + COMMON::report($report, "\n=============================================================================================\nLEVEL = $depth :: C-RANGE = [$MIN_C..$MAX_C] :: FACTOR = [".($LOG? "*" : "+")." $factor ]\n=============================================================================================\n"); } + + my $i = 0; + $C = $MIN_C; + + while (((sprintf("%.4f", $MAX_C - $C) + 0) >= 0) && ($C >= 0)) { + + if (($depth == 0) and ($i == 0)) { #BUILDING COMPLEMENTARY MODELS - only if they didn't exist + if ($verbose) { COMMON::report($report, "\n[INIT] BUILDING COMPLEMENTARY MODELS [known <-> unknown]...\n"); } + if ($unknown) { #train complementary model (one not being tuned) outside the loop + if (!(-e "$model.$modext.$dirext.$COMMON::MRGEXT")) { + SVMTAGGER::learn_known($model, $trainset, $smplset, $smplmap, $rdict, $mode, $modext, $direction, $dirext, $config, 1, $report, $verbose,$Unihan,$BS);# have modified add $Unihan + SVMTAGGER::merge_models($model, $modext, $dirext, $smplmap, $unksmplmap, $config, $COMMON::MRGEXT, !$unknown, $report, $verbose); + } + } + else { + if (!(-e "$model.$COMMON::unkext.$modext.$dirext.$COMMON::MRGEXT")) { + SVMTAGGER::learn_unknown($model, $trainset, $unksmplset, $unksmplmap, $rdict, $mode, $modext, $direction, $dirext, $config, 1, $report, $verbose,$Unihan,$BS);# have modified add $Unihan + SVMTAGGER::merge_models($model, $modext, $dirext, $smplmap, $unksmplmap, $config, $COMMON::MRGEXT, !$unknown, $report, $verbose); + } + } + } + + $i++; + if ($verbose) { COMMON::report($report, "\n---------------------------------------------------------------------------------------------\n******************************** level - $depth : ITERATION ".($i - 1)." - C = $C - [M$mode :: $direction]\n---------------------------------------------------------------------------------------------\n\n"); } + + if ($unknown) { + $config->{Cu} = $C; + $remakeF = (!(-e "$model.$COMMON::unkext.$modext.$dirext.$COMMON::smplext.$COMMON::DSFEXT")); + SVMTAGGER::learn_unknown($model, $trainset, $unksmplset, $unksmplmap, $rdict, $mode, $modext, $direction, $dirext, $config, $remakeF, $report, $verbose,$Unihan,$BS);# have modified add $Unihan + } + else { + $config->{Ck} = $C; + $remakeF = (!(-e "$model.$modext.$dirext.$COMMON::smplext.$COMMON::DSFEXT")); + SVMTAGGER::learn_known($model, $trainset, $smplset, $smplmap, $rdict, $mode, $modext, $direction, $dirext, $config, $remakeF, $report, $verbose,$Unihan,$BS);# have modified add $Unihan + } + if ($direction eq $COMMON::rlmode) { system "rm -f $model.$COMMON::revext"; } + if ($remakeF == 1) { $remakeF = 0; } + + #backup previous models (if they existed) + if (-e "$model.$modext.$dirext.$COMMON::MRGEXT") { system "cp $model.$modext.$dirext.$COMMON::MRGEXT $model.$modext.$dirext.$COMMON::mrgext" == 0 or die "system failed: $?"; + } + if (-e "$model.$COMMON::unkext.$modext.$dirext.$COMMON::MRGEXT") { system "cp $model.$COMMON::unkext.$modext.$dirext.$COMMON::MRGEXT $model.$COMMON::unkext.$modext.$dirext.$COMMON::mrgext" == 0 or die "system failed: $?"; } + SVMTAGGER::merge_models($model, $modext, $dirext, $smplmap, $unksmplmap, $config, $COMMON::MRGEXT, $unknown, $report, $verbose); + srand(); + my $output_file = "$model.$modext.$dirext.$COMMON::clsfext.".rand(100000); + SVMTAGGER::do_SVMT_file($model, 0, 0, 1, $direction, $strategy, "", $valset, $output_file, $verbose); + my $stats = STATS::do_statistics($model, $valset, $output_file, $verbose); + system "rm -f $output_file"; + my ($acckn, $accamb, $accunk, $accuracy) = STATS::get_accuracies($stats); + + if ($accuracy > $maxacc) { $maxacc = $accuracy; $maxiter = $i; $maxdepth = $depth; $maxC = $C; } + else { #restore previous models + if (-e "$model.$modext.$dirext.$COMMON::mrgext") { system "mv $model.$modext.$dirext.$COMMON::mrgext $model.$modext.$dirext.$COMMON::MRGEXT" == 0 or die "system failed: $?"; } + if (-e "$model.$COMMON::unkext.$modext.$dirext.$COMMON::mrgext") { system "mv $model.$COMMON::unkext.$modext.$dirext.$COMMON::mrgext $model.$COMMON::unkext.$modext.$dirext.$COMMON::MRGEXT" == 0 or die "system failed: $?"; } + } + + if ($verbose) { + COMMON::report($report, "OVERALL ACCURACY [Ck = $config->{Ck} :: Cu = $config->{Cu}] : $accuracy%\nKNOWN [ $acckn% ] AMBIG.KNOWN [ $accamb% ] UNKNOWN [ $accunk% ]\nMAX ACCURACY -> $maxacc :: C-value = $maxC :: depth = $maxdepth :: iter = $maxiter\n"); + } + #update on C + if (($depth == 0) && ($LOG == 1)) { $C = $C * $factor; } + else { $C = $C + $factor; } + } + + #update on EXPLORATION INTERVAL + if (($depth == 0) && ($LOG)) { $MIN_C = $maxC / 2; $MAX_C = $maxC * $factor / 2; } + else { $MIN_C = $maxC - ($factor / 2); $MAX_C = $maxC + ($factor / 2); } + + #update on EXPLORATION FACTOR + my $olddepth = $depth; + $depth++; + if ($depth < $MAX_DEPTH) { + $factor = ($MAX_C - $MIN_C) / $nSEGMENTS; + if ($verbose) { + COMMON::report($report, "\nJUMPING FROM LEVEL $olddepth INTO LEVEL $depth : C = $maxC : built up on iter = $maxiter\n"); } + } + } + + return ($maxC, $remakeF); +} + +sub adjust_C_CV +{ + #description _ responsible for tuning C parameter for SVMT models. + #param1 _ model name + #param2 _ training set filename + #param3 _ dictionary object reference + #param4 _ number of folders + #param5 _ model type + # (generate_features 0-ambiguous-right :: 1-unambiguous-right :: 2-no-right) + # ( 3-unsupervised :: 4-unkown words on training) + #param6 _ model direction + #param7 _ configuration hash reference + #param8 _ C parameter tuning options + # C:begin:end:n_iters:n_segments:[log|nolog]:[V|CV]:CV_n_folders + # e.g. C:0.001:10:3:5:log:V + # e.g. C:0.001:10:3:5:nolog:V + # e.g. C:0.001:10:3:5:log:CV:10 + #param9 _ adjust C for (0) known words (1) unknown words + #param10 _ remake CV folders? + #param11 _ report file + #param12 _ verbosity [0..3] + #@return _ optimal C + + my $model = shift; + my $trainset = shift; + my $rdict = shift; + my $nfolders = shift; + my $mode = shift; + my $direction = shift; + my $config = shift; + my $CTopt = shift; + my $unknown = shift; + my $remakeFLDS = shift; + my $report = shift; + my $verbose = shift; + my $Unihan = shift; + my $BS = shift; + + my @CToptions = split(/;/, $CTopt); + my $MIN_C = $CToptions[1]; + my $MAX_C = $CToptions[2]; + my $MAX_DEPTH = $CToptions[3]; + my $nSEGMENTS = $CToptions[4]; + my $LOG = ($CToptions[5] eq "log"); + + if ($verbose) { + COMMON::report($report, "*********************************************************************************************\nC-PARAMETER TUNING by $nfolders-fold CROSS-VALIDATION\non <$trainset>\non [".($unknown? "UNKNOWN" : "KNOWN")."]\nC-RANGE = [$MIN_C..$MAX_C] :: [$CToptions[5]] :: #LEVELS = ".$MAX_DEPTH." :: SEGMENTATION RATIO = ".$nSEGMENTS."\n*********************************************************************************************\n"); + } + my $dirext; + my $strategy = SVMTAGGER::find_strategy($mode); + if ($direction eq $COMMON::lrmode) { $dirext .= "$COMMON::lrext"; } + elsif ($direction eq $COMMON::rlmode) { $dirext .= "$COMMON::rlext"; } + + my $modext = SVMTAGGER::find_mext($mode); + if ($mode == $COMMON::mode1) { + if ($verbose) { COMMON::report($report, "[INIT] BUILDING COOPERATIVE MODELS [M1 -> M2]...\n"); } + if ((!(-e "$model.$COMMON::M2EXT.$dirext.$COMMON::MRGEXT")) or (!(-e "$model.$COMMON::unkext.$COMMON::M2EXT.$dirext.$COMMON::MRGEXT"))) { #build cooperative models [working together] only if they didn't existed + SVMTAGGER::build_SVMT($model, $trainset, $rdict, $COMMON::mode2, $direction, $config, 2, 1, 1, $report, $verbose,$Unihan,$BS);# have modified add $Unihan + } + } + elsif ($mode == $COMMON::mode2) { + if ($verbose) { COMMON::report($report, "[INIT] BUILDING COOPERATIVE MODELS [M2 -> M1]...\n"); } + if ((!(-e "$model.$COMMON::M1EXT.$dirext.$COMMON::MRGEXT")) or (!(-e "$model.$COMMON::unkext.$COMMON::M1EXT.$dirext.$COMMON::MRGEXT"))) { #build cooperative models [working together] only if not existed + SVMTAGGER::build_SVMT($model, $trainset, $rdict, $COMMON::mode1, $direction, $config, 2, 1, 1, $report, $verbose,$Unihan,$BS);# have modified add $Unihan + } + } + + my $smplset = $model.".".$modext.".".$dirext.".".$COMMON::smplext; #SAMPLE SET + my $smplmap = $smplset.".".$COMMON::mapext; #SAMPLE MAPPING + my $unksmplset = $model.".".$COMMON::unkext.".".$modext.".".$dirext.".".$COMMON::smplext; #SAMPLE SET + my $unksmplmap = $unksmplset.".".$COMMON::mapext; #SAMPLE MAPPING + + my $accuracy = 0; #final accuracy + my $maxC = $MIN_C; #C found + my $maxiter = 0; #where C was found + my $maxdepth = 0; #wher C was found + my $factor = ($MAX_C - $MIN_C) / ($nSEGMENTS); #factor to scale greedy exploration + + if ($LOG) { $factor = 10; } #first step goes logarithmically + + my $maxacc = -1; + my $depth = 0; + my $C; + + while ($depth < $MAX_DEPTH){ + if ($verbose) { + COMMON::report($report, "\n=============================================================================================\nLEVEL = $depth :: C-RANGE = [$MIN_C..$MAX_C] :: FACTOR = [".($LOG? "*" : "+")." $factor ]\n=============================================================================================\n"); } + + my $i = 0; + $C = $MIN_C; + + while (((sprintf("%.4f", $MAX_C - $C) + 0) >= 0) && ($C >= 0)) { + + if (($depth == 0) and ($i == -1)) { #BUILDING COMPLEMENTARY MODELS - only if they didn't exist + if ($verbose) { COMMON::report($report, "\n[INIT] BUILDING COMPLEMENTARY MODELS...\n"); } + if ($unknown) { #train complementary model (one not being tuned) outside the loop + if (!(-e "$model.$modext.$dirext.$COMMON::MRGEXT")) { + SVMTAGGER::learn_known($model, $trainset, $smplset, $smplmap, $rdict, $mode, $modext, $direction, $dirext, $config, 1, $report, $verbose,$Unihan,$BS);# have modified add $Unihan + SVMTAGGER::merge_models($model, $modext, $dirext, $smplmap, $unksmplmap, $config, $COMMON::MRGEXT, 0, $report, $verbose); + } + } + else { + if (!(-e "$model.$COMMON::unkext.$modext.$dirext.$COMMON::MRGEXT")) { + SVMTAGGER::learn_unknown($model, $trainset, $unksmplset, $unksmplmap, $rdict, $mode, $modext, $direction, $dirext, $config, 1, $report, $verbose,$Unihan,$BS);# have modified add $Unihan + SVMTAGGER::merge_models($model, $modext, $dirext, $smplmap, $unksmplmap, $config, $COMMON::MRGEXT, 1, $report, $verbose); + } + } + } + + $i++; + if ($verbose) { COMMON::report($report, "\n---------------------------------------------------------------------------------------------\n******************************** level - $depth : ITERATION ".($i - 1)." - C = $C - [M$mode :: $direction]\n---------------------------------------------------------------------------------------------\n\n"); } + + my $acckn; my $accamb; my $accunk; my $accuracy; + + if ($unknown) { + $config->{Cu} = $C; + ($acckn, $accamb, $accunk, $accuracy) = do_CV($config, $mode, $direction, $trainset, $nfolders, $rdict, 1, $remakeFLDS, $report, $verbose,$Unihan,$BS);# have modified add $Unihan + } + else { + $config->{Ck} = $C; + ($acckn, $accamb, $accunk, $accuracy) = do_CV($config, $mode, $direction, $trainset, $nfolders, $rdict, 0, $remakeFLDS, $report, $verbose,$Unihan,$BS);# have modified add $Unihan + } + $remakeFLDS = 0; + + if ($accuracy > $maxacc) { $maxacc = $accuracy; $maxiter = $i; $maxdepth = $depth; $maxC = $C; } + + if ($verbose) { + COMMON::report($report, "MAX ACCURACY -> $maxacc :: C-value = $maxC :: depth = $maxdepth :: iter = $maxiter\n"); + } + #update on C + if (($depth == 0) && ($LOG == 1)) { $C = $C * $factor; } + else { $C = $C + $factor; } + } + + #update on EXPLORATION INTERVAL + if (($depth == 0) && ($LOG)) { $MIN_C = $maxC / 2; $MAX_C = $maxC * $factor / 2; } + else { $MIN_C = $maxC - ($factor / 2); $MAX_C = $maxC + ($factor / 2); } + + #update on EXPLORATION FACTOR + my $olddepth = $depth; + $depth++; + if ($depth < $MAX_DEPTH) { + $factor = ($MAX_C - $MIN_C) / $nSEGMENTS; + if ($verbose) { + COMMON::report($report, "\nJUMPING FROM LEVEL $olddepth INTO LEVEL $depth : C = $maxC : built up on iter = $maxiter\n"); } + } + } + if ($config->{rmfiles}) { system "rm -f $config->{model}.$COMMON::FOLDEXT*"; } + + return ($maxC, $remakeFLDS); +} + +sub find_strategy { + #description _ returns what strategy should be better evaluated on a certain model + #param1 _ model type + # (generate_features 0-ambiguous-right :: 1-unambiguous-right :: 2-no-right) + # ( 3-unsupervised :: 4-unkown words on training) + #@return _ tagging strategy + + my $mode = shift; + + return $SVMTAGGER::rSTRATS->{$mode}; +} + +sub find_mext { + #description _ returns what file extension is associated to a certain model type + #param1 _ model type + # (generate_features 0-ambiguous-right :: 1-unambiguous-right :: 2-no-right) + # ( 3-unsupervised :: 4-unkown words on training) + #@return _ tagging strategy + + my $mode = shift; + + return $SVMTAGGER::rMEXTS->{$mode}; +} + +sub test_SVMT +{ + #description _ responsible for testing a given SVMT model. + #param1 _ model NAME + #param2 _ tagging strategy + #param3 _ model direction + #param4 _ test set + #param5 _ output file + #param6 _ report file + #param7 _ verbosity [0..3] + #@return _ ($nhits, $nsamples) + + my $model = shift; + my $strategy = shift; + my $direction = shift; + my $testset = shift; + my $output_file = shift; + my $report = shift; + my $verbose = shift; + + SVMTAGGER::do_SVMT_file($model, 0, 0, 1, $direction, $strategy, "", $testset, $output_file, $verbose); + my $stats = STATS::do_statistics($model, $testset, $output_file, $verbose); + my ($acckn, $accamb, $accunk, $accuracy) = STATS::get_accuracies($stats); + + if ($verbose > $COMMON::verbose1) { + COMMON::report($report, "\n---------------------------------------------------------------------------------------------\n"); + } + if ($verbose > $COMMON::verbose0) { + COMMON::report($report, "TEST ACCURACY: $accuracy%\nKNOWN [ $acckn% ] AMBIG.KNOWN [ $accamb% ] UNKNOWN [ $accunk% ]\n"); + } + if ($verbose > $COMMON::verbose1) { + COMMON::report($report, "---------------------------------------------------------------------------------------------\n"); + } + return ($acckn, $accamb, $accunk, $accuracy); +} + +sub do_CV +{ + #description _ responsible for learning a given SVMT model. + #param1 _ configuration hash reference + #param2 _ model type + # (generate_features 0-ambiguous-right :: 1-unambiguous-right :: 2-no-right) + # ( 3-unsupervised :: 4-unkown words on training) + #param3 _ model direction + #param4 _ training set + #param5 _ number of folders + #param6 _ dictionary object reference + #param7 _ which models to build (0 -> only known words : 1 -> only unknown words : 2 -> both + #param8 _ remake CV folders? + #param9 _ report file + #param10 _ verbosity [0..3] + #@return _ (accuracy for known words, accuracy for ambiguous known words, + # accuracy for unknown words, overall accuracy) + + my $config = shift; + my $mode = shift; + my $direction = shift; + my $trainset = shift; + my $nfolders = shift; + my $rdict = shift; + my $which = shift; + my $remakeFLDS = shift; + my $report = shift; + my $verbose = shift; + my $Unihan = shift; + my $BS = shift; + + if ($verbose > $COMMON::verbose1) { + COMMON::report($report, "---------------------------------------------------------------------------------------------\nPERFORMING $nfolders-fold CROSS-VALIDATION\non <$trainset>\n---------------------------------------------------------------------------------------------\n"); + } + + my $dirext; + if ($direction eq $COMMON::lrmode) { $dirext .= "$COMMON::lrext"; } + elsif ($direction eq $COMMON::rlmode) { $dirext .= "$COMMON::rlext"; } + my $model = $config->{model}; + + if ($mode == $COMMON::mode1) { #COOPERATIVE MODELS M1 and M2 -> build counterpart + if ((!(-e "$model.$COMMON::M2EXT.$dirext.$COMMON::MRGEXT")) or (!(-e "$model.$COMMON::unkext.$COMMON::M2EXT.$dirext.$COMMON::MRGEXT"))) { #build cooperative models [working together] only if they didn't existed + SVMTAGGER::build_SVMT($model, $trainset, $rdict, $COMMON::mode2, $direction, $config, 2, 1, 1, $report, $verbose,$Unihan,$BS);# have modified add $Unihan + } + } + elsif ($mode == $COMMON::mode2) { + if ((!(-e "$model.$COMMON::M1EXT.$dirext.$COMMON::MRGEXT")) or (!(-e "$model.$COMMON::unkext.$COMMON::M1EXT.$dirext.$COMMON::MRGEXT"))) { #build cooperative models [working together] only if not existed + SVMTAGGER::build_SVMT($model, $trainset, $rdict, $COMMON::mode1, $direction, $config, 2, 1, 1, $report, $verbose,$Unihan,$BS);# have modified add $Unihan + } + } + + my $strategy = SVMTAGGER::find_strategy($mode); + my $modext = SVMTAGGER::find_mext($mode); + my @winsetup = ($config->{wlen}, $config->{wcore}); + + my $ACCKN = 0; + my $ACCAMB = 0; + my $ACCUNK = 0; + my $ACCURACY = 0; + + my $folded = $config->{model}.".".$COMMON::FOLDEXT; + + if (($remakeFLDS) or (!(-e $folded))) { #CREATING FOLDERS + COMMON::create_folders($trainset, $folded, $nfolders, $report, $verbose); + } + + my $i = 0; + while ($i < $nfolders) { + my $ftrainset = "$folded.$i.$COMMON::trainext"; + my $ftestset = "$folded.$i.$COMMON::testext"; + my $fmodel = $config->{model}.".".$COMMON::FOLDEXT.".".$i; + COMMON::pick_up_folders($folded, $ftrainset, $ftestset, $i, $report, $verbose); #SELECTING FOLDER(i) + + my $dict = "$fmodel.$COMMON::DICTEXT"; #DICTIONARY + + my $supervised = SVMTAGGER::create_dictionary($ftrainset, $config->{LEX}, $config->{BLEX}, $config->{R}, $config->{Dratio}, $dict, $report, $verbose); + + if ($direction eq $COMMON::rlmode) { #right-to-left --> reverse input corpus + COMMON::reverse_file($ftrainset, "$ftrainset.$COMMON::revext"); + if ($config->{rmfiles}) { system "rm -f $ftrainset"; } + $ftrainset = "$ftrainset.$COMMON::revext"; + } + + #train complementary model (one not being tuned) outside the loop + my $fwhich = $which; + if ($fwhich == 1) { + if (!(-e "$fmodel.$modext.$dirext.$COMMON::MRGEXT")) { $fwhich = 2; } + } + else { + if (!(-e "$fmodel.$COMMON::unkext.$modext.$dirext.$COMMON::MRGEXT")) { $fwhich = 2; } + } + + COMMON::write_list($config->{A0k}, $fmodel.".".$COMMON::A0EXT); + COMMON::write_list($config->{A1k}, $fmodel.".".$COMMON::A1EXT); + COMMON::write_list($config->{A2k}, $fmodel.".".$COMMON::A2EXT); + COMMON::write_list($config->{A3k}, $fmodel.".".$COMMON::A3EXT); + COMMON::write_list($config->{A4k}, $fmodel.".".$COMMON::A4EXT); + COMMON::write_list($config->{A0u}, $fmodel.".".$COMMON::A0EXT.".".$COMMON::unkext); + COMMON::write_list($config->{A1u}, $fmodel.".".$COMMON::A1EXT.".".$COMMON::unkext); + COMMON::write_list($config->{A2u}, $fmodel.".".$COMMON::A2EXT.".".$COMMON::unkext); + COMMON::write_list($config->{A3u}, $fmodel.".".$COMMON::A3EXT.".".$COMMON::unkext); + COMMON::write_list($config->{A4u}, $fmodel.".".$COMMON::A4EXT.".".$COMMON::unkext); + COMMON::write_list(\@winsetup, $fmodel.".".$COMMON::WINEXT); + COMMON::write_list(DICTIONARY::find_ambp($dict), $fmodel.".".$COMMON::AMBPEXT); + COMMON::write_list(DICTIONARY::find_unkp($dict), $fmodel.".".$COMMON::UNKPEXT); + + my $frdict = new DICTIONARY($dict, "$fmodel.$COMMON::AMBPEXT", "$fmodel.$COMMON::UNKPEXT"); + if ($verbose > $COMMON::verbose1) { COMMON::report($report, "DICTIONARY <$dict> [".$frdict->get_nwords." words]\n"); } + + SVMTAGGER::build_SVMT($fmodel, $ftrainset, $frdict, $mode, $direction, $config, $fwhich, ($fwhich != 1), ($fwhich != 0), $report, $verbose,$Unihan,$BS);# have modified add $Unihan + + my ($acckn, $accamb, $accunk, $accuracy) = test_SVMT($fmodel, $strategy, $direction, $ftestset, "$model.TEST.T$strategy.$direction.$i", $report, $verbose); + + $ACCURACY += $accuracy; + $ACCKN += $acckn; + $ACCAMB += $accamb; + $ACCUNK += $accunk; + + if ($config->{rmfiles}) { system "rm -f $ftrainset"; + system "rm -f $ftestset"; + system "rm -f $model.TEST.T$strategy.$direction.$i"; + } + + $i++; + } + + $ACCURACY /= $nfolders; + $ACCKN /= $nfolders; + $ACCAMB /= $nfolders; + $ACCUNK /= $nfolders; + + if ($verbose > $COMMON::verbose1) { + COMMON::report($report, "\n---------------------------------------------------------------------------------------------\n$nfolders-fold CROSS-VALIDATION\n"); + } + if ($verbose > $COMMON::verbose0) { + COMMON::report($report, "OVERALL ACCURACY [Ck = $config->{Ck} :: Cu = $config->{Cu}] : $ACCURACY%\nKNOWN [ $ACCKN% ] AMBIG.KNOWN [ $ACCAMB% ] UNKNOWN [ $ACCUNK% ]\n"); + } + if ($verbose > $COMMON::verbose1) { + COMMON::report($report, "---------------------------------------------------------------------------------------------\n\n"); + } + + return ($ACCKN, $ACCAMB, $ACCUNK, $ACCURACY); +} + +sub SVMT_learn +{ + #description _ responsible for learning a given SVMT model. + #param1 _ configuration hash reference + #param2 _ model type + # (generate_features 0-ambiguous-right :: 1-unambiguous-right :: 2-no-right) + # ( 3-unsupervised :: 4-unkown words on training) + #param3 _ model direction + #param4 _ C parameter tuning options for KNOWN WORDS + # C:begin:end:n_iters:n_segments:[log|nolog]:[V|CV]:CV_n_folders + # e.g. C:0.001:10:3:5:log:V + # e.g. C:0.001:10:3:5:nolog:V + # e.g. C:0.001:10:3:5:log:CV:10 + #param5 _ C parameter tuning options for UNKNOWN WORDS + # C:begin:end:n_iters:n_segments:[log|nolog]:[V|CV]:CV_n_folders + # e.g. C:0.001:10:3:5:log:V + # e.g. C:0.001:10:3:5:nolog:V + # e.g. C:0.001:10:3:5:log:CV:10 + #param6 _ test options + # T[:CV_n_folders] + # e.g T + # e.g T:10 + #param7 _ dictionary object reference + #param8 _ supervised corpus? 0/1 + #param9 _ report file + #param10 _ verbosity [0..3] + + my $config = shift; + my $mode = shift; + my $direction = shift; + my $CKTopt = shift; + my $CUTopt = shift; + my $Topt = shift; + my $rdict = shift; + my $supervised = shift; + my $report = shift; + my $verbose = shift; + + my $Unihan = read_unihan(); # new added + my $BS = read_bs(); + + if ((!$supervised) and ($mode != $COMMON::mode3)) { die "[mode $mode] SUPERVISED CORPUS NOT AVAILABLE!\n"; } + if ($mode == $COMMON::mode3) { die "[mode $mode] UNSUPERVISED LEARNING NOT AVAILABLE!\n"; } + + if (!($supervised)) { + my $eqCs = $rdict->determine_eq_classes($config->{AP}, $config->{Eratio}); + foreach my $e (sort keys %{$eqCs}) { + print $e, " \t: \t", join(" ", @{$eqCs->{$e}}), "\n"; + } + } + #exit; + + if ($verbose) { + COMMON::report($report, "\n*********************************************************************************************\nBUILDING MODELS... [MODE = $mode :: DIRECTON = $direction]\n*********************************************************************************************\n\n"); + } + #my $set = $config->{set}; #BIGGER SET + my $trainset = $config->{trainset}; + my $valset = $config->{valset}; + my $testset = $config->{testset}; + my $model = $config->{model}; + + if ($direction eq $COMMON::rlmode) { #right-to-left --> reverse input corpus + #system ("tac $trainset > $model.$COMMON::revext"); + COMMON::reverse_file($trainset, "$model.$COMMON::revext"); + $trainset = "$model.$COMMON::revext"; + } + + my $remakeFK = 1; #remake samples for known words + my $remakeFU = 1; #remake samples for unknown words + my $remakeFLDS = $config->{remakeFLDS}; #remake CV folders + + my @Toptions = split(/;/, $Topt); + my $NFOLDERS = $Toptions[1]; + my $TTYPE = $Toptions[0]; + my @CKToptions = split(/;/, $CKTopt); + my @CUToptions = split(/;/, $CUTopt); + my $doCK = (scalar(@CKToptions) > 2); + my $doCU = (scalar(@CUToptions) > 2); + + if ((!$doCK) and (scalar(@CKToptions) == 2)) { $config->{Ck} = $CKToptions[1]; } + if ((!$doCU) and (scalar(@CUToptions) == 2)) { $config->{Cu} = $CUToptions[1]; } + + my $Ck = $config->{Ck}; + my $Cu = $config->{Cu}; + + if (($TTYPE eq "T") and ($NFOLDERS > 1)) { $TTYPE = "CVT"; } + if ($NFOLDERS == 0) { $NFOLDERS = $SVMTAGGER::NFOLDERS; } + + if ($doCK or $doCU) { #C PARAMETER TUNING + my $oldrm = $config->{rmfiles}; $config->{rmfiles} = 0; #remove disabled [to avoid remaking features!] + + if (($TTYPE eq "T") or ($TTYPE eq "")) { #ON VALIDATION SET + if ($config->{valset} ne "") { + if ($doCK) { + ($Ck, $remakeFK) = SVMTAGGER::adjust_C($model, $trainset, $rdict, $mode, $direction, $config, $CKTopt, $config->{valset}, 0, $report, $verbose,$Unihan,$BS); # have modified add $Unihan #TUNE KNOWN WORDS + $config->{Ck} = $Ck; + } + if ($doCU) { + ($Cu, $remakeFU) = SVMTAGGER::adjust_C($model, $trainset, $rdict, $mode, $direction, $config, $CUTopt, $config->{valset}, 1, $report, $verbose,$Unihan,$BS); # have modified add $Unihan #TUNE UNKNOWN WORDS + $config->{Cu} = $Cu; + } + } + else { + if ($verbose) { + COMMON::report($report, "[ERROR] NO VALIDATION SET PROVIDED -> SKIPPING C PARAMETER TUNING!\n"); + } + } + } + else { #CVT CROSS-VALIDATION~alike + if ($doCK) { + ($Ck, $remakeFLDS) = SVMTAGGER::adjust_C_CV($model, $config->{trainset}, $rdict, $NFOLDERS, $mode, $direction, $config, $CKTopt, 0, $remakeFLDS, $report, $verbose,$Unihan,$BS); # have modified add $Unihan #TUNE KNOWN WORDS + $config->{Ck} = $Ck; + } + if ($doCU) { + ($Cu, $remakeFLDS) = SVMTAGGER::adjust_C_CV($model, $config->{trainset}, $rdict, $NFOLDERS, $mode, $direction, $config, $CUTopt, 1, $remakeFLDS, $report, $verbose,$Unihan,$BS); # have modified add $Unihan #TUNE UNKNOWN WORDS + $config->{Cu} = $Cu; + } + } + + $config->{rmfiles} = $oldrm; + } + + if ($verbose) { COMMON::report($report, "\n=============================================================================================\n=============================================================================================\n"); } + + if ($TTYPE ne "CVT") { #TRADITIONAL 1-fold + if ($verbose) { + COMMON::report($report, "---------------------------------------------------------------------------------------------\n---------------------------------------------------------------------------------------------\nBUILDING MODELS ON WHOLE CORPUS <".$trainset.">\nC PARAMETER [MODE = $mode :: DIRECTON = $direction]: KNOWN [ C = ".$config->{Ck}." ] :: UNKNOWN [ C = ".$config->{Cu}." ]\n---------------------------------------------------------------------------------------------\n---------------------------------------------------------------------------------------------\n"); + } + SVMTAGGER::build_SVMT($model, $trainset, $rdict, $mode, $direction, $config, 2, $remakeFK, $remakeFU, $report, $verbose,$Unihan,$BS);# have modified add $Unihan + if (($TTYPE eq "T") and ($config->{testset} ne "")) { #ON VALIDATION SET if available + my $strategy = SVMTAGGER::find_strategy($mode); + my ($acckn, $accamb, $accunk, $accuracy) = test_SVMT($model, $strategy, $direction, $config->{testset}, "$model.TEST.T$strategy.$direction", $report, $verbose); + } + } + else { #CROSS-VALIDATION~alike + if ($verbose) { + COMMON::report($report, "--------------------------------------------------------------------------------------------\nTRAINING/TESTING MODELS [fair $NFOLDERS-cross-validation]\non <".$config->{trainset}.">\nKNOWN [ C = ".$config->{Ck}." ] :: UNKNOWN [ C = ".$config->{Cu}." ]\n--------------------------------------------------------------------------------------------\n"); + } + my ($acckn, $accamb, $accunk, $accuracy) = do_CV($config, $mode, $direction, $config->{trainset}, $NFOLDERS, $rdict, 2, $remakeFLDS, $report, $verbose,$Unihan,$BS);# have modified add $Unihan + if ($config->{rmfiles}) { system "rm -f $config->{model}.$COMMON::FOLDEXT*"; } + if ($verbose) { + COMMON::report($report, "---------------------------------------------------------------------------------------------\n---------------------------------------------------------------------------------------------\nBUILDING MODELS ON WHOLE CORPUS <".$trainset.">\nC PARAMETER [MODE = $mode :: DIRECTON = $direction]: KNOWN [ C = ".$config->{Ck}." ] :: UNKNOWN [ C = ".$config->{Cu}." ]\n---------------------------------------------------------------------------------------------\n---------------------------------------------------------------------------------------------\n"); + } + SVMTAGGER::build_SVMT($model, $trainset, $rdict, $mode, $direction, $config, 2, 1, 1, $report, $verbose,$Unihan,$BS);# have modified add $Unihan + } + + if (($direction eq $COMMON::rlmode) and ($config->{rmfiles})) { + if (-e "$model.$COMMON::revext") { + system "rm -f $model.$COMMON::revext"; + } + } +} + +1; diff --git a/tools/train/svmtools/SVMTool/SWINDOW.pm b/tools/train/svmtools/SVMTool/SWINDOW.pm new file mode 100644 index 000000000..2469d455e --- /dev/null +++ b/tools/train/svmtools/SVMTool/SWINDOW.pm @@ -0,0 +1,567 @@ +package SWINDOW; + +#Copyright (C) 2004 Jesus Gimenez and Lluis Marquez + +#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 Foudation; either +#version 2.1 of the License, or (at your option) any later version. + +#This library is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +#Lesser General Public License for more details. + +#You should have received a copy of the GNU Lesser General Public +#License along with this library; if not, write to the Free Software +#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +use strict; +use IO; +use Data::Dumper; +use SVMTool::COMMON; + +# ====================================================================================== +# =================================== WINDOW METHODS =================================== +# ====================================================================================== + +sub new +{ + #description _ creates a new window of a given length + # + # WINDOW --> length of the window + # window itself + # + #param1 _ length of the window + #param2 _ window core word position + + my $class = shift; #implicit parameter + my $length = shift; + my $corepos = shift; + + my $rwindow = { len => $length, core => $corepos, win => [] }; + + my $win = $rwindow->{win}; + + while ($length > 0) { + my @elem = (0, $COMMON::emptyword, $COMMON::emptypos, $COMMON::emptypos, $COMMON::emptyword); + push(@{$win}, \@elem); + $length--; + } + + bless $rwindow, $class; + + return $rwindow; +} + +sub get_len +{ + #description _ returns the length of the given window + #param1 _ window reference (implicit) + + my $rwin = shift; + + return $rwin->{len}; +} + +sub get_core +{ + #description _ returns the core word position of the given window + #param1 _ window reference (implicit) + + my $rwin = shift; + + return $rwin->{core}; +} + +sub copy +{ + #description _ creates a copy of the given window + #param1 _ window reference (implicit) + + my $rwin = shift; + + my $rwindow = { len => $rwin->get_len, core => $rwin->get_core, win => [] }; + my $i = 0; + + my $win = $rwindow->{win}; + + while ($i < $rwin->get_len) { + my @elem = @{$rwin->{win}[$i]}; + push(@{$win}, \@elem); + $i++; + } + + bless $rwindow, ref($rwin); + + return $rwindow; +} + +sub reset +{ + #description _ resets a given window position + #param1 _ window reference (implicit) + #param2 _ i position where to push the new item + + my $rwin = shift; + my $i = shift; + + $rwin->{win}[$i]->[0] = 0; + $rwin->{win}[$i]->[1] = $COMMON::emptyword; + $rwin->{win}[$i]->[2] = $COMMON::emptypos; + $rwin->{win}[$i]->[3] = $COMMON::emptypos; + $rwin->{win}[$i]->[4] = $COMMON::emptyword; + my $j = 5; + while ($j < scalar(@{$rwin->{win}[$i]})) { + $rwin->{win}[$i]->[$j] = $COMMON::emptypos; + $j++; + } +} + +sub is_empty +{ + #description _ returns true if the i-th position is empty + #param1 _ window reference (implicit) + #param2 _ i position where to push the new item + + my $rwin = shift; + my $i = shift; + + return($rwin->{win}[$i]->[0] == 0); +} + +sub set_cols +{ + #description _ sets extra COLUMNS in a given position, assumed the position is not empty + #param1 _ window reference (implicit) + #param2 _ i position where to push the new item + #param3 _ columns to push + + my $rwin = shift; + my $i = shift; + my $entry = shift; + + if (defined(@{$entry})) { + my $j = 0; + while ($j < scalar(@{$entry})) { + $rwin->{win}[$i]->[5+$j] = $entry->[$j]; + $j++; + } + } +} + +sub set_word +{ + #description _ sets the WORD in a given position, assumed the position is not empty + #param1 _ window reference (implicit) + #param2 _ i position where to push the new item + #param3 _ word to push + + my $rwin = shift; + my $i = shift; + my $word = shift; + + $rwin->{win}[$i]->[1] = $word; +} + +sub set_pos +{ + #description _ sets the POS in a given position, assumed the position is not empty + #param1 _ window reference (implicit) + #param2 _ i position where to push the new item + #param3 _ pos to push + + my $rwin = shift; + my $i = shift; + my $pos = shift; + + $rwin->{win}[$i]->[2] = $pos; +} + +sub set_kamb +{ + #description _ sets the AMBIGUITY CLASS in a given position, assumed the position is not empty + #param1 _ window reference (implicit) + #param2 _ i position where to push the new item + #param3 _ ambiguity class list reference to push + + my $rwin = shift; + my $i = shift; + my $kamb = shift; + + $rwin->{win}[$i]->[3] = $kamb; +} + +sub set_actual_word +{ + #description _ sets the ACTUAL WORD in a given position, assumed the position is not empty + #param1 _ window reference (implicit) + #param2 _ i position where to push the new item + #param3 _ word to push + + my $rwin = shift; + my $i = shift; + my $word = shift; + + $rwin->{win}[$i]->[4] = $word; +} + +sub set_core_word +{ + #description _ sets the WORD in the core position, assumed the position is not empty + #param1 _ window reference (implicit) + #param2 _ word to push + + my $rwin = shift; + my $word = shift; + + $rwin->{win}[$rwin->get_core]->[1] = $word; +} + +sub set_core_pos +{ + #description _ sets the POS in the core position, assumed the position is not empty + #param1 _ window reference (implicit) + #param2 _ pos to push + + my $rwin = shift; + my $pos = shift; + + $rwin->{win}[$rwin->get_core]->[2] = $pos; +} + +sub set_core_actual_word +{ + #description _ sets the ACTUAL WORD in the core position, assumed the position is not empty + #param1 _ window reference (implicit) + #param2 _ word to push + + my $rwin = shift; + my $word = shift; + + $rwin->{win}[$rwin->get_core]->[4] = $word; +} + +sub get_col_relative +{ + #description _ returns the COLUMN in a given position, relative to the window core, + # assumed the position is not empty + #param1 _ window reference (implicit) + #param2 _ relative item position + #param3 _ column index + + my $rwin = shift; + my $i = shift; + my $column = shift; + + if ($column < 2) { + return($rwin->{win}[$rwin->get_core+$i]->[1+$column]); + } + else { + return($rwin->{win}[$rwin->get_core+$i]->[3+$column]); + } +} + +sub get_word +{ + #description _ returns the WORD in a given position, assumed the position is not empty + #param1 _ window reference (implicit) + #param2 _ item position + + my $rwin = shift; + my $i = shift; + + return($rwin->{win}[$i]->[1]); +} + +sub get_word_relative +{ + #description _ returns the WORD in a given position, relative to the window core, + # assumed the position is not empty + #param1 _ window reference (implicit) + #param2 _ relative item position + + my $rwin = shift; + my $i = shift; + + return($rwin->{win}[$rwin->get_core+$i]->[1]); +} + +sub get_pos +{ + #description _ returns the POS in a given position, assumed the position is not empty + #param1 _ window reference (implicit) + #param2 _ item position + + my $rwin = shift; + my $i = shift; + + return($rwin->{win}[$i]->[2]); +} + +sub get_pos_relative +{ + #description _ returns the POS in a given position, relative to the window core, + # assumed the position is not empty + #param1 _ window reference (implicit) + #param2 _ relative item position + + my $rwin = shift; + my $i = shift; + + return($rwin->{win}[$rwin->get_core+$i]->[2]); +} + +sub get_kamb +{ + #description _ returns the AMBIGUITY CLASS in a given position, assumed the position is not empty + #param1 _ window reference (implicit) + #param2 _ item position + + my $rwin = shift; + my $i = shift; + + return($rwin->{win}[$i]->[3]); +} + +sub get_kamb_relative +{ + #description _ returns the AMBIGUITY CLASS in a given position, relative to the window core, + # assumed the position is not empty + #param1 _ window reference (implicit) + #param2 _ relative item position + + my $rwin = shift; + my $i = shift; + + return($rwin->{win}[$rwin->get_core+$i]->[3]); +} + +sub get_actual_word +{ + #description _ returns the ACTUAL WORD in a given position, assumed the position is not empty + #param1 _ window reference (implicit) + #param2 _ item position + + my $rwin = shift; + my $i = shift; + + return($rwin->{win}[$i]->[4]); +} + +sub get_actual_word_relative +{ + #description _ returns the ACTUAL WORD in a given position, relative to the window core, + # assumed the position is not empty + #param1 _ window reference (implicit) + #param2 _ relative item position + + my $rwin = shift; + my $i = shift; + + return($rwin->{win}[$rwin->get_core+$i]->[4]); +} + +sub get_core_word +{ + #description _ returns the WORD in the core position, assumed the position is not empty + #param1 _ window reference (implicit) + + my $rwin = shift; + + return($rwin->{win}[$rwin->get_core]->[1]); +} + +sub get_core_pos +{ + #description _ returns the POS in the core position, assumed the position is not empty + #param1 _ window reference (implicit) + + my $rwin = shift; + + return($rwin->{win}[$rwin->get_core]->[2]); +} + +sub get_core_kamb +{ + #description _ returns the AMBIGUITY CLASS in the core position, assumed the position is not empty + #param1 _ window reference (implicit) + + my $rwin = shift; + + return($rwin->{win}[$rwin->get_core]->[3]); +} + +sub get_core_actual_word +{ + #description _ returns the ACTUAL WORD in the core position, assumed the position is not empty + #param1 _ window reference (implicit) + + my $rwin = shift; + + return($rwin->{win}[$rwin->get_core]->[4]); +} + + +sub prepare +{ + #description _ resets items according to the text direction either + # at the right of the core right-nearest sentence-final (LR) + # or at the left of the core left-nearest sentence-final (RL) + #param1 _ window reference (implicit) + #param2 _ text direction (LR/RL) + + my $rw = shift; + my $direction = shift; + + my $rwin = $rw->copy(); + + my $i = $rwin->get_core; + my $eos = 0; + while (($i < $rwin->get_len) and (!$eos)) { + my $item = $rwin->get_word($i); + if (COMMON::end_of_sentence($item)) { $eos = 1; } + $i++; + } + if (($direction eq $COMMON::rlmode) and ($eos)) { $i--; } + while ($i < $rwin->get_len) { + $rwin->reset($i); + $i++; + } + + $i = $rwin->get_core; + $eos = 0; + while (($i >= 0) and (!$eos)) { + my $item = $rwin->get_word($i); + if (COMMON::end_of_sentence($item)) { $eos = 1; } + $i--; + } + if (($direction eq $COMMON::lrmode) and ($eos)) { $i++; } + while ($i >= 0) { + $rwin->reset($i); + $i--; + } + + $rwin->set_core_pos($COMMON::emptypos); + + return $rwin; +} + +sub active +{ + #description _ returns true if the given window is an active one. + # That is, the core item is not empty. (!=$wseparator). + #param1 _ window reference (implicit) + + my $rwin = shift; + + return (!($rwin->is_empty($rwin->get_core))); +} + +sub lshift +{ + #description _ shift sliding window n positions left + #param1 _ window reference (implicit) + #param2 _ n + + my $rwin = shift; + my $n = shift; + + while ($n>0) { + my $i = 1; + while ($i < $rwin->get_len) { + my $j = 0; + while ($j < scalar(@{$rwin->{win}[$i]})) { + $rwin->{win}[$i-1]->[$j] = $rwin->{win}[$i]->[$j]; + $j++; + } + $i++; + } + $rwin->reset($rwin->get_len - 1); + $n--; + } +} + +sub print +{ + #description _ print onto the standard output raw the window content; + #param1 _ window reference (implicit) + + my $rwin = shift; + + my $i = 0; + + while ($i < $rwin->get_len) { + print STDERR "W", $i - $rwin->get_core, ": \t"; + printf STDERR "%-20s %-20s %-5s %-20s", $rwin->{win}[$i]->[1], "(".$rwin->{win}[$i]->[4].")", $rwin->{win}[$i]->[2], (($rwin->{win}[$i]->[3]) == $COMMON::emptypos ? $rwin->{win}[$i]->[3] : join($COMMON::innerseparator, @{$rwin->{win}[$i]->[3]})); + my $j = 5; + while ($j < scalar(@{$rwin->{win}[$i]})) { + printf STDERR " %-10s", $rwin->{win}[$i]->[$j]; + $j++; + } + printf STDERR "\n"; + $i++; + } +} + +sub push +{ + #description _ push a given entry onto the sliding window at the given position + # ++ CARD generalization + #param1 _ window reference (implicit) + #param2 _ word to push + #param3 _ pos to push + #param4 _ i position where to push the new item + #param5 _ extra columns (list), e.g {IOB ...} + + my $rwin = shift; + my $word = shift; + my $pos = shift; + my $i = shift; + my $entry = shift; + + $rwin->{win}[$i]->[3] = $COMMON::emptypos; + $rwin->{win}[$i]->[4] = $word; + + if ($word =~ /^[0-9]+$/) { $word = "\@CARD"; } + elsif ($word =~ /^[0-9]+[\.\,\!\?:]+$/) { $word = "\@CARDPUNCT"; } + elsif ($word =~ /^[0-9]+[:\.\,\/\\\-][0-9\.\,\-\\\/]+$/) { $word = "\@CARDSEPS"; } + elsif ($word =~ /^[0-9]+[^0-9]+.*$/) { $word = "\@CARDSUFFIX"; } + + $rwin->{win}[$i]->[0] = 1; + $rwin->{win}[$i]->[1] = $word; + $rwin->{win}[$i]->[2] = $pos; + + if (defined(@{$entry})) { + my $j = 0; + while ($j < scalar(@{$entry})) { + $rwin->{win}[$i]->[5+$j] = $entry->[$j]; + $j++; + } + } +} + +sub pop +{ + #description _ retrieves the item at the given position + #param1 _ window reference (implicit) + #param2 _ position of the item inside the window + + my $rwin = shift; + my $i = shift; + + return($rwin->{win}[$i]->[1], $rwin->{win}[$i]->[2]); +} + +sub pop_core +{ + #description _ retrieves the item at the core position + #param1 _ window reference (implicit) + + my $rwin = shift; + + return($rwin->{win}[$rwin->get_core]->[1], $rwin->{win}[$rwin->get_core]->[2]); +} + + +1; diff --git a/tools/train/svmtools/SVMTool/result.TXT b/tools/train/svmtools/SVMTool/result.TXT new file mode 100644 index 000000000..873402019 --- /dev/null +++ b/tools/train/svmtools/SVMTool/result.TXT @@ -0,0 +1,20902 @@ +0x4E00 һ +0x4E01 +0x4E02 @ +0x4E03 +0x4E04 A +0x4E05 B +0x4E06 C +0x4E07 +0x4E08 +0x4E09 +0x4E0A +0x4E0B +0x4E0C آ +0x4E0D +0x4E0E +0x4E0F D +0x4E10 ؤ +0x4E11 +0x4E12 E +0x4E13 ר +0x4E14 +0x4E15 ا +0x4E16 +0x4E17 F +0x4E18 +0x4E19 +0x4E1A ҵ +0x4E1B +0x4E1C +0x4E1D ˿ +0x4E1E ة +0x4E1F G +0x4E20 H +0x4E21 I +0x4E22 +0x4E23 J +0x4E24 +0x4E25 +0x4E26 K +0x4E27 ɥ +0x4E28 ح +0x4E29 L +0x4E2A +0x4E2B Ѿ +0x4E2C +0x4E2D +0x4E2E M +0x4E2F N +0x4E30 +0x4E31 O +0x4E32 +0x4E33 P +0x4E34 +0x4E35 Q +0x4E36 ؼ +0x4E37 R +0x4E38 +0x4E39 +0x4E3A Ϊ +0x4E3B +0x4E3C S +0x4E3D +0x4E3E +0x4E3F د +0x4E40 T +0x4E41 U +0x4E42 V +0x4E43 +0x4E44 W +0x4E45 +0x4E46 X +0x4E47 ر +0x4E48 ô +0x4E49 +0x4E4A Y +0x4E4B ֮ +0x4E4C +0x4E4D է +0x4E4E +0x4E4F +0x4E50 +0x4E51 Z +0x4E52 ƹ +0x4E53 +0x4E54 +0x4E55 [ +0x4E56 +0x4E57 \ +0x4E58 +0x4E59 +0x4E5A ] +0x4E5B ^ +0x4E5C ؿ +0x4E5D +0x4E5E +0x4E5F Ҳ +0x4E60 ϰ +0x4E61 +0x4E62 _ +0x4E63 ` +0x4E64 a +0x4E65 b +0x4E66 +0x4E67 c +0x4E68 d +0x4E69 +0x4E6A e +0x4E6B f +0x4E6C g +0x4E6D h +0x4E6E i +0x4E6F j +0x4E70 +0x4E71 +0x4E72 k +0x4E73 +0x4E74 l +0x4E75 m +0x4E76 n +0x4E77 o +0x4E78 p +0x4E79 q +0x4E7A r +0x4E7B s +0x4E7C t +0x4E7D u +0x4E7E Ǭ +0x4E7F v +0x4E80 w +0x4E81 x +0x4E82 y +0x4E83 z +0x4E84 { +0x4E85 | +0x4E86 +0x4E87 } +0x4E88 +0x4E89 +0x4E8A ~ +0x4E8B +0x4E8C +0x4E8D ء +0x4E8E +0x4E8F +0x4E90 +0x4E91 +0x4E92 +0x4E93 +0x4E94 +0x4E95 +0x4E96 +0x4E97 +0x4E98 ب +0x4E99 +0x4E9A +0x4E9B Щ +0x4E9C +0x4E9D +0x4E9E +0x4E9F ؽ +0x4EA0 +0x4EA1 +0x4EA2 +0x4EA3 +0x4EA4 +0x4EA5 +0x4EA6 +0x4EA7 +0x4EA8 +0x4EA9 Ķ +0x4EAA +0x4EAB +0x4EAC +0x4EAD ͤ +0x4EAE +0x4EAF +0x4EB0 +0x4EB1 +0x4EB2 +0x4EB3 +0x4EB4 +0x4EB5 +0x4EB6 +0x4EB7 +0x4EB8 +0x4EB9 +0x4EBA +0x4EBB +0x4EBC +0x4EBD +0x4EBE +0x4EBF +0x4EC0 ʲ +0x4EC1 +0x4EC2 +0x4EC3 +0x4EC4 +0x4EC5 +0x4EC6 +0x4EC7 +0x4EC8 +0x4EC9 +0x4ECA +0x4ECB +0x4ECC +0x4ECD +0x4ECE +0x4ECF +0x4ED0 +0x4ED1 +0x4ED2 +0x4ED3 +0x4ED4 +0x4ED5 +0x4ED6 +0x4ED7 +0x4ED8 +0x4ED9 +0x4EDA +0x4EDB +0x4EDC +0x4EDD +0x4EDE +0x4EDF Ǫ +0x4EE0 +0x4EE1 +0x4EE2 +0x4EE3 +0x4EE4 +0x4EE5 +0x4EE6 +0x4EE7 +0x4EE8 +0x4EE9 +0x4EEA +0x4EEB +0x4EEC +0x4EED +0x4EEE +0x4EEF +0x4EF0 +0x4EF1 +0x4EF2 +0x4EF3 +0x4EF4 +0x4EF5 +0x4EF6 +0x4EF7 +0x4EF8 +0x4EF9 +0x4EFA +0x4EFB +0x4EFC +0x4EFD +0x4EFE +0x4EFF +0x4F00 +0x4F01 +0x4F02 +0x4F03 +0x4F04 +0x4F05 +0x4F06 +0x4F07 +0x4F08 +0x4F09 +0x4F0A +0x4F0B +0x4F0C +0x4F0D +0x4F0E +0x4F0F +0x4F10 +0x4F11 +0x4F12 +0x4F13 +0x4F14 +0x4F15 +0x4F16 +0x4F17 +0x4F18 +0x4F19 +0x4F1A +0x4F1B +0x4F1C +0x4F1D +0x4F1E ɡ +0x4F1F ΰ +0x4F20 +0x4F21 +0x4F22 +0x4F23 +0x4F24 +0x4F25 +0x4F26 +0x4F27 +0x4F28 +0x4F29 +0x4F2A α +0x4F2B +0x4F2C +0x4F2D +0x4F2E +0x4F2F +0x4F30 +0x4F31 +0x4F32 ٣ +0x4F33 +0x4F34 +0x4F35 +0x4F36 +0x4F37 +0x4F38 +0x4F39 +0x4F3A +0x4F3B +0x4F3C +0x4F3D ٤ +0x4F3E +0x4F3F +0x4F40 +0x4F41 +0x4F42 +0x4F43 +0x4F44 +0x4F45 +0x4F46 +0x4F47 +0x4F48 +0x4F49 +0x4F4A +0x4F4B +0x4F4C +0x4F4D λ +0x4F4E +0x4F4F ס +0x4F50 +0x4F51 +0x4F52 +0x4F53 +0x4F54 +0x4F55 +0x4F56 +0x4F57 ٢ +0x4F58 +0x4F59 +0x4F5A +0x4F5B +0x4F5C +0x4F5D +0x4F5E +0x4F5F ١ +0x4F60 +0x4F61 +0x4F62 +0x4F63 Ӷ +0x4F64 +0x4F65 +0x4F66 +0x4F67 +0x4F68 +0x4F69 +0x4F6A +0x4F6B +0x4F6C +0x4F6D +0x4F6E +0x4F6F +0x4F70 +0x4F71 +0x4F72 +0x4F73 +0x4F74 ٦ +0x4F75 +0x4F76 ٥ +0x4F77 +0x4F78 +0x4F79 +0x4F7A +0x4F7B ٬ +0x4F7C ٮ +0x4F7D +0x4F7E ٫ +0x4F7F ʹ +0x4F80 +0x4F81 +0x4F82 +0x4F83 ٩ +0x4F84 ֶ +0x4F85 +0x4F86 +0x4F87 +0x4F88 +0x4F89 ٨ +0x4F8A +0x4F8B +0x4F8C +0x4F8D +0x4F8E +0x4F8F ٪ +0x4F90 +0x4F91 ٧ +0x4F92 +0x4F93 +0x4F94 ٰ +0x4F95 +0x4F96 +0x4F97 +0x4F98 +0x4F99 +0x4F9A +0x4F9B +0x4F9C +0x4F9D +0x4F9E +0x4F9F +0x4FA0 +0x4FA1 +0x4FA2 +0x4FA3 +0x4FA4 @ +0x4FA5 +0x4FA6 +0x4FA7 +0x4FA8 +0x4FA9 +0x4FAA ٭ +0x4FAB A +0x4FAC ٯ +0x4FAD B +0x4FAE +0x4FAF +0x4FB0 C +0x4FB1 D +0x4FB2 E +0x4FB3 F +0x4FB4 G +0x4FB5 +0x4FB6 H +0x4FB7 I +0x4FB8 J +0x4FB9 K +0x4FBA L +0x4FBB M +0x4FBC N +0x4FBD O +0x4FBE P +0x4FBF +0x4FC0 Q +0x4FC1 R +0x4FC2 S +0x4FC3 +0x4FC4 +0x4FC5 ٴ +0x4FC6 T +0x4FC7 U +0x4FC8 V +0x4FC9 W +0x4FCA +0x4FCB X +0x4FCC Y +0x4FCD Z +0x4FCE +0x4FCF +0x4FD0 +0x4FD1 ٸ +0x4FD2 [ +0x4FD3 \ +0x4FD4 ] +0x4FD5 ^ +0x4FD6 _ +0x4FD7 +0x4FD8 +0x4FD9 ` +0x4FDA ٵ +0x4FDB a +0x4FDC ٷ +0x4FDD +0x4FDE +0x4FDF ٹ +0x4FE0 b +0x4FE1 +0x4FE2 c +0x4FE3 ٶ +0x4FE4 d +0x4FE5 e +0x4FE6 ٱ +0x4FE7 f +0x4FE8 ٲ +0x4FE9 +0x4FEA ٳ +0x4FEB g +0x4FEC h +0x4FED +0x4FEE +0x4FEF +0x4FF0 i +0x4FF1 +0x4FF2 j +0x4FF3 ٽ +0x4FF4 k +0x4FF5 l +0x4FF6 m +0x4FF7 n +0x4FF8 ٺ +0x4FF9 o +0x4FFA +0x4FFB p +0x4FFC q +0x4FFD r +0x4FFE +0x4FFF s +0x5000 t +0x5001 u +0x5002 v +0x5003 w +0x5004 x +0x5005 y +0x5006 z +0x5007 { +0x5008 | +0x5009 } +0x500A ~ +0x500B +0x500C +0x500D +0x500E +0x500F ٿ +0x5010 +0x5011 +0x5012 +0x5013 +0x5014 +0x5015 +0x5016 +0x5017 +0x5018 +0x5019 +0x501A +0x501B +0x501C +0x501D +0x501E +0x501F +0x5020 +0x5021 +0x5022 +0x5023 +0x5024 +0x5025 +0x5026 +0x5027 +0x5028 +0x5029 ٻ +0x502A +0x502B +0x502C پ +0x502D +0x502E +0x502F +0x5030 +0x5031 +0x5032 +0x5033 +0x5034 +0x5035 +0x5036 +0x5037 +0x5038 +0x5039 +0x503A ծ +0x503B +0x503C ֵ +0x503D +0x503E +0x503F +0x5040 +0x5041 +0x5042 +0x5043 +0x5044 +0x5045 +0x5046 +0x5047 +0x5048 +0x5049 +0x504A +0x504B +0x504C ټ +0x504D +0x504E +0x504F ƫ +0x5050 +0x5051 +0x5052 +0x5053 +0x5054 +0x5055 +0x5056 +0x5057 +0x5058 +0x5059 +0x505A +0x505B +0x505C ͣ +0x505D +0x505E +0x505F +0x5060 +0x5061 +0x5062 +0x5063 +0x5064 +0x5065 +0x5066 +0x5067 +0x5068 +0x5069 +0x506A +0x506B +0x506C +0x506D +0x506E +0x506F +0x5070 +0x5071 +0x5072 +0x5073 +0x5074 +0x5075 +0x5076 ż +0x5077 ͵ +0x5078 +0x5079 +0x507A +0x507B +0x507C +0x507D +0x507E +0x507F +0x5080 +0x5081 +0x5082 +0x5083 +0x5084 +0x5085 +0x5086 +0x5087 +0x5088 +0x5089 +0x508A +0x508B +0x508C +0x508D +0x508E +0x508F +0x5090 +0x5091 +0x5092 +0x5093 +0x5094 +0x5095 +0x5096 +0x5097 +0x5098 +0x5099 +0x509A +0x509B +0x509C +0x509D +0x509E +0x509F +0x50A0 +0x50A1 +0x50A2 +0x50A3 +0x50A4 +0x50A5 +0x50A6 +0x50A7 +0x50A8 +0x50A9 +0x50AA +0x50AB +0x50AC +0x50AD +0x50AE +0x50AF +0x50B0 +0x50B1 +0x50B2 +0x50B3 +0x50B4 +0x50B5 +0x50B6 +0x50B7 +0x50B8 +0x50B9 +0x50BA +0x50BB ɵ +0x50BC +0x50BD @ +0x50BE A +0x50BF B +0x50C0 C +0x50C1 D +0x50C2 E +0x50C3 F +0x50C4 G +0x50C5 H +0x50C6 I +0x50C7 J +0x50C8 K +0x50C9 L +0x50CA M +0x50CB N +0x50CC O +0x50CD P +0x50CE Q +0x50CF +0x50D0 R +0x50D1 S +0x50D2 T +0x50D3 U +0x50D4 V +0x50D5 W +0x50D6 +0x50D7 X +0x50D8 Y +0x50D9 Z +0x50DA +0x50DB [ +0x50DC \ +0x50DD ] +0x50DE ^ +0x50DF _ +0x50E0 ` +0x50E1 a +0x50E2 b +0x50E3 c +0x50E4 d +0x50E5 e +0x50E6 +0x50E7 ɮ +0x50E8 f +0x50E9 g +0x50EA h +0x50EB i +0x50EC +0x50ED +0x50EE +0x50EF j +0x50F0 k +0x50F1 l +0x50F2 m +0x50F3 +0x50F4 n +0x50F5 +0x50F6 o +0x50F7 p +0x50F8 q +0x50F9 r +0x50FA s +0x50FB Ƨ +0x50FC t +0x50FD u +0x50FE v +0x50FF w +0x5100 x +0x5101 y +0x5102 z +0x5103 { +0x5104 | +0x5105 } +0x5106 +0x5107 +0x5108 ~ +0x5109 +0x510A +0x510B +0x510C +0x510D +0x510E +0x510F +0x5110 +0x5111 +0x5112 +0x5113 +0x5114 +0x5115 +0x5116 +0x5117 +0x5118 +0x5119 +0x511A +0x511B +0x511C +0x511D +0x511E +0x511F +0x5120 +0x5121 +0x5122 +0x5123 +0x5124 +0x5125 +0x5126 +0x5127 +0x5128 +0x5129 +0x512A +0x512B +0x512C +0x512D +0x512E +0x512F +0x5130 +0x5131 +0x5132 +0x5133 +0x5134 +0x5135 +0x5136 +0x5137 +0x5138 +0x5139 +0x513A +0x513B +0x513C +0x513D +0x513E +0x513F +0x5140 أ +0x5141 +0x5142 +0x5143 Ԫ +0x5144 +0x5145 +0x5146 +0x5147 +0x5148 +0x5149 +0x514A +0x514B +0x514C +0x514D +0x514E +0x514F +0x5150 +0x5151 +0x5152 +0x5153 +0x5154 +0x5155 +0x5156 +0x5157 +0x5158 +0x5159 +0x515A +0x515B +0x515C +0x515D +0x515E +0x515F +0x5160 +0x5161 +0x5162 +0x5163 +0x5164 +0x5165 +0x5166 +0x5167 +0x5168 ȫ +0x5169 +0x516A +0x516B +0x516C +0x516D +0x516E +0x516F +0x5170 +0x5171 +0x5172 +0x5173 +0x5174 +0x5175 +0x5176 +0x5177 +0x5178 +0x5179 +0x517A +0x517B +0x517C +0x517D +0x517E +0x517F +0x5180 +0x5181 +0x5182 +0x5183 +0x5184 +0x5185 +0x5186 +0x5187 +0x5188 +0x5189 Ƚ +0x518A +0x518B +0x518C +0x518D +0x518E +0x518F +0x5190 +0x5191 +0x5192 ð +0x5193 +0x5194 +0x5195 +0x5196 ڢ +0x5197 +0x5198 +0x5199 д +0x519A +0x519B +0x519C ũ +0x519D +0x519E +0x519F +0x51A0 +0x51A1 +0x51A2 ڣ +0x51A3 +0x51A4 ԩ +0x51A5 ڤ +0x51A6 +0x51A7 +0x51A8 +0x51A9 +0x51AA +0x51AB +0x51AC +0x51AD +0x51AE +0x51AF +0x51B0 +0x51B1 +0x51B2 +0x51B3 +0x51B4 +0x51B5 +0x51B6 ұ +0x51B7 +0x51B8 +0x51B9 +0x51BA +0x51BB +0x51BC +0x51BD +0x51BE +0x51BF +0x51C0 +0x51C1 +0x51C2 +0x51C3 +0x51C4 +0x51C5 +0x51C6 ׼ +0x51C7 ڡ +0x51C8 +0x51C9 +0x51CA +0x51CB +0x51CC +0x51CD +0x51CE +0x51CF +0x51D0 +0x51D1 +0x51D2 +0x51D3 +0x51D4 +0x51D5 +0x51D6 +0x51D7 +0x51D8 @ +0x51D9 A +0x51DA B +0x51DB +0x51DC C +0x51DD +0x51DE D +0x51DF E +0x51E0 +0x51E1 +0x51E2 F +0x51E3 G +0x51E4 +0x51E5 H +0x51E6 I +0x51E7 J +0x51E8 K +0x51E9 L +0x51EA M +0x51EB +0x51EC N +0x51ED ƾ +0x51EE O +0x51EF +0x51F0 +0x51F1 P +0x51F2 Q +0x51F3 +0x51F4 R +0x51F5 +0x51F6 +0x51F7 S +0x51F8 ͹ +0x51F9 +0x51FA +0x51FB +0x51FC +0x51FD +0x51FE T +0x51FF +0x5200 +0x5201 +0x5202 +0x5203 +0x5204 U +0x5205 V +0x5206 +0x5207 +0x5208 +0x5209 W +0x520A +0x520B X +0x520C Y +0x520D ۻ +0x520E +0x520F Z +0x5210 [ +0x5211 +0x5212 +0x5213 \ +0x5214 ] +0x5215 ^ +0x5216 +0x5217 +0x5218 +0x5219 +0x521A +0x521B +0x521C _ +0x521D +0x521E ` +0x521F a +0x5220 ɾ +0x5221 b +0x5222 c +0x5223 d +0x5224 +0x5225 e +0x5226 f +0x5227 g +0x5228 +0x5229 +0x522A h +0x522B +0x522C i +0x522D +0x522E +0x522F j +0x5230 +0x5231 k +0x5232 l +0x5233 +0x5234 m +0x5235 n +0x5236 +0x5237 ˢ +0x5238 ȯ +0x5239 ɲ +0x523A +0x523B +0x523C o +0x523D +0x523E p +0x523F +0x5240 +0x5241 +0x5242 +0x5243 +0x5244 q +0x5245 r +0x5246 s +0x5247 t +0x5248 u +0x5249 v +0x524A +0x524B w +0x524C +0x524D ǰ +0x524E x +0x524F y +0x5250 +0x5251 +0x5252 z +0x5253 { +0x5254 +0x5255 | +0x5256 +0x5257 } +0x5258 ~ +0x5259 +0x525A +0x525B +0x525C +0x525D +0x525E +0x525F +0x5260 +0x5261 +0x5262 +0x5263 +0x5264 +0x5265 +0x5266 +0x5267 +0x5268 +0x5269 ʣ +0x526A +0x526B +0x526C +0x526D +0x526E +0x526F +0x5270 +0x5271 +0x5272 +0x5273 +0x5274 +0x5275 +0x5276 +0x5277 +0x5278 +0x5279 +0x527A +0x527B +0x527C +0x527D +0x527E +0x527F +0x5280 +0x5281 +0x5282 +0x5283 +0x5284 +0x5285 +0x5286 +0x5287 +0x5288 +0x5289 +0x528A +0x528B +0x528C +0x528D +0x528E +0x528F +0x5290 +0x5291 +0x5292 +0x5293 +0x5294 +0x5295 +0x5296 +0x5297 +0x5298 +0x5299 +0x529A +0x529B +0x529C +0x529D Ȱ +0x529E +0x529F +0x52A0 +0x52A1 +0x52A2 ۽ +0x52A3 +0x52A4 +0x52A5 +0x52A6 +0x52A7 +0x52A8 +0x52A9 +0x52AA Ŭ +0x52AB +0x52AC ۾ +0x52AD ۿ +0x52AE +0x52AF +0x52B0 +0x52B1 +0x52B2 +0x52B3 +0x52B4 +0x52B5 +0x52B6 +0x52B7 +0x52B8 +0x52B9 +0x52BA +0x52BB +0x52BC +0x52BD +0x52BE +0x52BF +0x52C0 +0x52C1 +0x52C2 +0x52C3 +0x52C4 +0x52C5 +0x52C6 +0x52C7 +0x52C8 +0x52C9 +0x52CA +0x52CB ѫ +0x52CC +0x52CD +0x52CE +0x52CF +0x52D0 +0x52D1 +0x52D2 +0x52D3 +0x52D4 +0x52D5 +0x52D6 +0x52D7 +0x52D8 +0x52D9 +0x52DA +0x52DB +0x52DC +0x52DD +0x52DE +0x52DF ļ +0x52E0 +0x52E1 +0x52E2 +0x52E3 +0x52E4 +0x52E5 +0x52E6 +0x52E7 +0x52E8 +0x52E9 +0x52EA +0x52EB +0x52EC +0x52ED +0x52EE +0x52EF +0x52F0 +0x52F1 +0x52F2 +0x52F3 +0x52F4 +0x52F5 +0x52F6 +0x52F7 +0x52F8 +0x52F9 +0x52FA +0x52FB +0x52FC +0x52FD +0x52FE +0x52FF +0x5300 +0x5301 +0x5302 +0x5303 +0x5304 +0x5305 +0x5306 +0x5307 +0x5308 +0x5309 +0x530A +0x530B +0x530C +0x530D +0x530E +0x530F +0x5310 +0x5311 @ +0x5312 A +0x5313 B +0x5314 C +0x5315 ذ +0x5316 +0x5317 +0x5318 D +0x5319 +0x531A +0x531B E +0x531C F +0x531D +0x531E G +0x531F H +0x5320 +0x5321 +0x5322 I +0x5323 ϻ +0x5324 J +0x5325 K +0x5326 +0x5327 L +0x5328 M +0x5329 N +0x532A +0x532B O +0x532C P +0x532D Q +0x532E +0x532F R +0x5330 S +0x5331 T +0x5332 U +0x5333 V +0x5334 W +0x5335 X +0x5336 Y +0x5337 Z +0x5338 [ +0x5339 ƥ +0x533A +0x533B ҽ +0x533C \ +0x533D ] +0x533E +0x533F +0x5340 ^ +0x5341 ʮ +0x5342 _ +0x5343 ǧ +0x5344 ` +0x5345 ئ +0x5346 a +0x5347 +0x5348 +0x5349 +0x534A +0x534B b +0x534C c +0x534D d +0x534E +0x534F Э +0x5350 e +0x5351 +0x5352 +0x5353 ׿ +0x5354 f +0x5355 +0x5356 +0x5357 +0x5358 g +0x5359 h +0x535A +0x535B i +0x535C +0x535D j +0x535E +0x535F ߲ +0x5360 ռ +0x5361 +0x5362 ¬ +0x5363 +0x5364 ± +0x5365 k +0x5366 +0x5367 +0x5368 l +0x5369 +0x536A m +0x536B +0x536C n +0x536D o +0x536E ش +0x536F î +0x5370 ӡ +0x5371 Σ +0x5372 p +0x5373 +0x5374 ȴ +0x5375 +0x5376 q +0x5377 +0x5378 ж +0x5379 r +0x537A +0x537B s +0x537C t +0x537D u +0x537E v +0x537F +0x5380 w +0x5381 x +0x5382 +0x5383 y +0x5384 +0x5385 +0x5386 +0x5387 z +0x5388 { +0x5389 +0x538A | +0x538B ѹ +0x538C +0x538D +0x538E } +0x538F ~ +0x5390 +0x5391 +0x5392 +0x5393 +0x5394 +0x5395 +0x5396 +0x5397 +0x5398 +0x5399 +0x539A +0x539B +0x539C +0x539D +0x539E +0x539F ԭ +0x53A0 +0x53A1 +0x53A2 +0x53A3 +0x53A4 +0x53A5 +0x53A6 +0x53A7 +0x53A8 +0x53A9 +0x53AA +0x53AB +0x53AC +0x53AD +0x53AE +0x53AF +0x53B0 +0x53B1 +0x53B2 +0x53B3 +0x53B4 +0x53B5 +0x53B6 +0x53B7 +0x53B8 +0x53B9 +0x53BA +0x53BB ȥ +0x53BC +0x53BD +0x53BE +0x53BF +0x53C0 +0x53C1 +0x53C2 +0x53C3 +0x53C4 +0x53C5 +0x53C6 +0x53C7 +0x53C8 +0x53C9 +0x53CA +0x53CB +0x53CC ˫ +0x53CD +0x53CE +0x53CF +0x53D0 +0x53D1 +0x53D2 +0x53D3 +0x53D4 +0x53D5 +0x53D6 ȡ +0x53D7 +0x53D8 +0x53D9 +0x53DA +0x53DB +0x53DC +0x53DD +0x53DE +0x53DF +0x53E0 +0x53E1 +0x53E2 +0x53E3 +0x53E4 +0x53E5 +0x53E6 +0x53E7 +0x53E8 ߶ +0x53E9 ߵ +0x53EA ֻ +0x53EB +0x53EC +0x53ED +0x53EE +0x53EF +0x53F0 ̨ +0x53F1 ߳ +0x53F2 ʷ +0x53F3 +0x53F4 +0x53F5 +0x53F6 Ҷ +0x53F7 +0x53F8 ˾ +0x53F9 ̾ +0x53FA +0x53FB ߷ +0x53FC +0x53FD ߴ +0x53FE +0x53FF +0x5400 +0x5401 +0x5402 +0x5403 +0x5404 +0x5405 +0x5406 ߺ +0x5407 +0x5408 +0x5409 +0x540A +0x540B +0x540C ͬ +0x540D +0x540E +0x540F +0x5410 +0x5411 +0x5412 ߸ +0x5413 +0x5414 +0x5415 +0x5416 ߹ +0x5417 +0x5418 +0x5419 +0x541A +0x541B +0x541C +0x541D +0x541E +0x541F +0x5420 +0x5421 +0x5422 +0x5423 +0x5424 +0x5425 +0x5426 +0x5427 +0x5428 +0x5429 +0x542A +0x542B +0x542C +0x542D +0x542E ˱ +0x542F +0x5430 +0x5431 ֨ +0x5432 +0x5433 +0x5434 +0x5435 +0x5436 +0x5437 +0x5438 +0x5439 +0x543A +0x543B +0x543C +0x543D +0x543E +0x543F +0x5440 ѽ +0x5441 +0x5442 +0x5443 +0x5444 +0x5445 +0x5446 +0x5447 +0x5448 +0x5449 +0x544A +0x544B ߻ +0x544C +0x544D +0x544E +0x544F +0x5450 +0x5451 +0x5452 ߼ +0x5453 ߽ +0x5454 ߾ +0x5455 Ż +0x5456 ߿ +0x5457 +0x5458 Ա +0x5459 +0x545A +0x545B Ǻ +0x545C +0x545D +0x545E +0x545F +0x5460 +0x5461 +0x5462 +0x5463 +0x5464 +0x5465 +0x5466 +0x5467 +0x5468 +0x5469 +0x546A +0x546B +0x546C +0x546D +0x546E +0x546F +0x5470 +0x5471 +0x5472 +0x5473 ζ +0x5474 +0x5475 +0x5476 +0x5477 +0x5478 +0x5479 +0x547A +0x547B +0x547C +0x547D +0x547E +0x547F +0x5480 +0x5481 +0x5482 +0x5483 +0x5484 +0x5485 +0x5486 +0x5487 +0x5488 +0x5489 +0x548A +0x548B զ +0x548C +0x548D +0x548E +0x548F ӽ +0x5490 +0x5491 +0x5492 +0x5493 +0x5494 +0x5495 +0x5496 +0x5497 +0x5498 +0x5499 +0x549A +0x549B +0x549C +0x549D +0x549E +0x549F +0x54A0 +0x54A1 +0x54A2 @ +0x54A3 +0x54A4 +0x54A5 A +0x54A6 +0x54A7 +0x54A8 +0x54A9 +0x54AA +0x54AB +0x54AC ҧ +0x54AD +0x54AE B +0x54AF +0x54B0 C +0x54B1 +0x54B2 D +0x54B3 +0x54B4 +0x54B5 E +0x54B6 F +0x54B7 G +0x54B8 +0x54B9 H +0x54BA I +0x54BB +0x54BC J +0x54BD +0x54BE K +0x54BF +0x54C0 +0x54C1 Ʒ +0x54C2 +0x54C3 L +0x54C4 +0x54C5 M +0x54C6 +0x54C7 +0x54C8 +0x54C9 +0x54CA N +0x54CB O +0x54CC +0x54CD +0x54CE +0x54CF +0x54D0 +0x54D1 +0x54D2 +0x54D3 +0x54D4 +0x54D5 +0x54D6 P +0x54D7 +0x54D8 Q +0x54D9 +0x54DA +0x54DB R +0x54DC +0x54DD +0x54DE +0x54DF Ӵ +0x54E0 S +0x54E1 T +0x54E2 U +0x54E3 V +0x54E4 W +0x54E5 +0x54E6 Ŷ +0x54E7 +0x54E8 +0x54E9 +0x54EA +0x54EB X +0x54EC Y +0x54ED +0x54EE +0x54EF Z +0x54F0 [ +0x54F1 \ +0x54F2 +0x54F3 +0x54F4 ] +0x54F5 ^ +0x54F6 _ +0x54F7 ` +0x54F8 a +0x54F9 b +0x54FA +0x54FB c +0x54FC +0x54FD +0x54FE d +0x54FF +0x5500 e +0x5501 +0x5502 f +0x5503 g +0x5504 h +0x5505 i +0x5506 +0x5507 +0x5508 j +0x5509 +0x550A k +0x550B l +0x550C m +0x550D n +0x550E o +0x550F +0x5510 +0x5511 +0x5512 p +0x5513 q +0x5514 +0x5515 r +0x5516 s +0x5517 t +0x5518 u +0x5519 v +0x551A w +0x551B +0x551C x +0x551D y +0x551E z +0x551F { +0x5520 +0x5521 | +0x5522 +0x5523 +0x5524 +0x5525 } +0x5526 ~ +0x5527 +0x5528 +0x5529 +0x552A +0x552B +0x552C +0x552D +0x552E +0x552F Ψ +0x5530 +0x5531 +0x5532 +0x5533 +0x5534 +0x5535 +0x5536 +0x5537 +0x5538 +0x5539 +0x553A +0x553B +0x553C +0x553D +0x553E +0x553F +0x5540 +0x5541 +0x5542 +0x5543 +0x5544 +0x5545 +0x5546 +0x5547 +0x5548 +0x5549 +0x554A +0x554B +0x554C +0x554D +0x554E +0x554F +0x5550 +0x5551 +0x5552 +0x5553 +0x5554 +0x5555 +0x5556 +0x5557 +0x5558 +0x5559 +0x555A +0x555B +0x555C +0x555D +0x555E +0x555F +0x5560 +0x5561 +0x5562 +0x5563 +0x5564 ơ +0x5565 ɶ +0x5566 +0x5567 +0x5568 +0x5569 +0x556A ž +0x556B +0x556C +0x556D +0x556E +0x556F +0x5570 +0x5571 +0x5572 +0x5573 +0x5574 +0x5575 +0x5576 +0x5577 +0x5578 Х +0x5579 +0x557A +0x557B +0x557C +0x557D +0x557E +0x557F +0x5580 +0x5581 +0x5582 ι +0x5583 +0x5584 +0x5585 +0x5586 +0x5587 +0x5588 +0x5589 +0x558A +0x558B +0x558C +0x558D +0x558E +0x558F +0x5590 +0x5591 +0x5592 +0x5593 +0x5594 +0x5595 +0x5596 +0x5597 +0x5598 +0x5599 +0x559A +0x559B +0x559C ϲ +0x559D +0x559E +0x559F +0x55A0 +0x55A1 +0x55A2 +0x55A3 +0x55A4 +0x55A5 +0x55A6 +0x55A7 +0x55A8 +0x55A9 +0x55AA +0x55AB +0x55AC +0x55AD +0x55AE +0x55AF +0x55B0 +0x55B1 +0x55B2 +0x55B3 +0x55B4 +0x55B5 +0x55B6 +0x55B7 +0x55B8 +0x55B9 +0x55BA +0x55BB +0x55BC +0x55BD +0x55BE +0x55BF +0x55C0 +0x55C1 +0x55C2 +0x55C3 +0x55C4 +0x55C5 +0x55C6 +0x55C7 +0x55C8 +0x55C9 +0x55CA +0x55CB +0x55CC +0x55CD +0x55CE +0x55CF +0x55D0 +0x55D1 +0x55D2 +0x55D3 ɤ +0x55D4 +0x55D5 +0x55D6 +0x55D7 +0x55D8 +0x55D9 +0x55DA +0x55DB +0x55DC +0x55DD +0x55DE +0x55DF +0x55E0 +0x55E1 +0x55E2 +0x55E3 +0x55E4 +0x55E5 +0x55E6 +0x55E7 +0x55E8 +0x55E9 +0x55EA +0x55EB +0x55EC +0x55ED +0x55EE +0x55EF +0x55F0 +0x55F1 +0x55F2 +0x55F3 +0x55F4 +0x55F5 +0x55F6 +0x55F7 +0x55F8 +0x55F9 +0x55FA +0x55FB +0x55FC +0x55FD +0x55FE +0x55FF +0x5600 +0x5601 +0x5602 +0x5603 +0x5604 +0x5605 +0x5606 @ +0x5607 A +0x5608 +0x5609 +0x560A B +0x560B C +0x560C +0x560D D +0x560E +0x560F +0x5610 E +0x5611 F +0x5612 G +0x5613 H +0x5614 I +0x5615 J +0x5616 K +0x5617 L +0x5618 +0x5619 M +0x561A N +0x561B +0x561C O +0x561D P +0x561E +0x561F +0x5620 Q +0x5621 R +0x5622 S +0x5623 +0x5624 +0x5625 T +0x5626 U +0x5627 +0x5628 V +0x5629 W +0x562A X +0x562B Y +0x562C +0x562D +0x562E Z +0x562F [ +0x5630 \ +0x5631 +0x5632 +0x5633 ] +0x5634 +0x5635 ^ +0x5636 ˻ +0x5637 _ +0x5638 ` +0x5639 +0x563A a +0x563B +0x563C b +0x563D c +0x563E d +0x563F +0x5640 e +0x5641 f +0x5642 g +0x5643 h +0x5644 i +0x5645 j +0x5646 k +0x5647 l +0x5648 m +0x5649 n +0x564A o +0x564B p +0x564C +0x564D +0x564E ҭ +0x564F q +0x5650 r +0x5651 s +0x5652 t +0x5653 u +0x5654 +0x5655 v +0x5656 w +0x5657 +0x5658 +0x5659 +0x565A x +0x565B y +0x565C +0x565D z +0x565E { +0x565F | +0x5660 } +0x5661 ~ +0x5662 +0x5663 +0x5664 +0x5665 +0x5666 +0x5667 +0x5668 +0x5669 ج +0x566A +0x566B +0x566C +0x566D +0x566E +0x566F +0x5670 +0x5671 +0x5672 +0x5673 +0x5674 +0x5675 +0x5676 +0x5677 +0x5678 +0x5679 +0x567A +0x567B +0x567C +0x567D +0x567E +0x567F +0x5680 +0x5681 +0x5682 +0x5683 +0x5684 +0x5685 +0x5686 +0x5687 +0x5688 +0x5689 +0x568A +0x568B +0x568C +0x568D +0x568E +0x568F +0x5690 +0x5691 +0x5692 +0x5693 +0x5694 +0x5695 +0x5696 +0x5697 +0x5698 +0x5699 +0x569A +0x569B +0x569C +0x569D +0x569E +0x569F +0x56A0 +0x56A1 +0x56A2 +0x56A3 +0x56A4 +0x56A5 +0x56A6 +0x56A7 +0x56A8 +0x56A9 +0x56AA +0x56AB +0x56AC +0x56AD +0x56AE +0x56AF +0x56B0 +0x56B1 +0x56B2 +0x56B3 +0x56B4 +0x56B5 +0x56B6 +0x56B7 +0x56B8 +0x56B9 +0x56BA +0x56BB +0x56BC +0x56BD +0x56BE +0x56BF +0x56C0 +0x56C1 +0x56C2 +0x56C3 +0x56C4 +0x56C5 +0x56C6 +0x56C7 +0x56C8 +0x56C9 +0x56CA +0x56CB +0x56CC +0x56CD +0x56CE +0x56CF +0x56D0 +0x56D1 +0x56D2 +0x56D3 +0x56D4 +0x56D5 +0x56D6 +0x56D7 +0x56D8 +0x56D9 +0x56DA +0x56DB +0x56DC +0x56DD +0x56DE +0x56DF ض +0x56E0 +0x56E1 +0x56E2 +0x56E3 +0x56E4 +0x56E5 +0x56E6 +0x56E7 +0x56E8 +0x56E9 +0x56EA +0x56EB +0x56EC +0x56ED ԰ +0x56EE +0x56EF +0x56F0 +0x56F1 +0x56F2 +0x56F3 +0x56F4 Χ +0x56F5 +0x56F6 +0x56F7 +0x56F8 +0x56F9 +0x56FA +0x56FB +0x56FC +0x56FD +0x56FE ͼ +0x56FF +0x5700 +0x5701 +0x5702 +0x5703 +0x5704 +0x5705 +0x5706 Բ +0x5707 +0x5708 Ȧ +0x5709 +0x570A +0x570B +0x570C +0x570D +0x570E +0x570F +0x5710 +0x5711 +0x5712 @ +0x5713 A +0x5714 B +0x5715 C +0x5716 D +0x5717 E +0x5718 F +0x5719 G +0x571A H +0x571B I +0x571C +0x571D J +0x571E K +0x571F +0x5720 L +0x5721 M +0x5722 N +0x5723 ʥ +0x5724 O +0x5725 P +0x5726 Q +0x5727 R +0x5728 +0x5729 +0x572A +0x572B S +0x572C +0x572D +0x572E +0x572F +0x5730 +0x5731 T +0x5732 U +0x5733 +0x5734 V +0x5735 W +0x5736 X +0x5737 Y +0x5738 Z +0x5739 +0x573A +0x573B +0x573C [ +0x573D \ +0x573E +0x573F ] +0x5740 ַ +0x5741 ^ +0x5742 +0x5743 _ +0x5744 ` +0x5745 a +0x5746 b +0x5747 +0x5748 c +0x5749 d +0x574A +0x574B e +0x574C +0x574D ̮ +0x574E +0x574F +0x5750 +0x5751 +0x5752 f +0x5753 g +0x5754 h +0x5755 i +0x5756 j +0x5757 +0x5758 k +0x5759 l +0x575A +0x575B ̳ +0x575C +0x575D +0x575E +0x575F +0x5760 ׹ +0x5761 +0x5762 m +0x5763 n +0x5764 +0x5765 o +0x5766 ̹ +0x5767 p +0x5768 +0x5769 +0x576A ƺ +0x576B +0x576C q +0x576D +0x576E r +0x576F +0x5770 s +0x5771 t +0x5772 u +0x5773 +0x5774 v +0x5775 w +0x5776 +0x5777 +0x5778 x +0x5779 y +0x577A z +0x577B +0x577C +0x577D { +0x577E | +0x577F } +0x5780 ~ +0x5781 +0x5782 +0x5783 +0x5784 ¢ +0x5785 +0x5786 +0x5787 +0x5788 +0x5789 +0x578A +0x578B +0x578C +0x578D +0x578E +0x578F +0x5790 +0x5791 +0x5792 +0x5793 +0x5794 +0x5795 +0x5796 +0x5797 +0x5798 +0x5799 +0x579A +0x579B +0x579C +0x579D +0x579E +0x579F +0x57A0 +0x57A1 +0x57A2 +0x57A3 ԫ +0x57A4 +0x57A5 +0x57A6 +0x57A7 +0x57A8 +0x57A9 +0x57AA +0x57AB +0x57AC +0x57AD +0x57AE +0x57AF +0x57B0 +0x57B1 +0x57B2 +0x57B3 +0x57B4 +0x57B5 +0x57B6 +0x57B7 +0x57B8 +0x57B9 +0x57BA +0x57BB +0x57BC +0x57BD +0x57BE +0x57BF +0x57C0 +0x57C1 +0x57C2 +0x57C3 +0x57C4 +0x57C5 +0x57C6 +0x57C7 +0x57C8 +0x57C9 +0x57CA +0x57CB +0x57CC +0x57CD +0x57CE +0x57CF +0x57D0 +0x57D1 +0x57D2 +0x57D3 +0x57D4 +0x57D5 +0x57D6 +0x57D7 +0x57D8 +0x57D9 +0x57DA +0x57DB +0x57DC +0x57DD +0x57DE +0x57DF +0x57E0 +0x57E1 +0x57E2 +0x57E3 +0x57E4 +0x57E5 +0x57E6 +0x57E7 +0x57E8 +0x57E9 +0x57EA +0x57EB +0x57EC +0x57ED ܤ +0x57EE +0x57EF +0x57F0 +0x57F1 +0x57F2 +0x57F3 +0x57F4 +0x57F5 +0x57F6 +0x57F7 +0x57F8 +0x57F9 +0x57FA +0x57FB +0x57FC +0x57FD ܣ +0x57FE +0x57FF +0x5800 ܥ +0x5801 +0x5802 +0x5803 +0x5804 +0x5805 +0x5806 +0x5807 +0x5808 +0x5809 +0x580A +0x580B ܡ +0x580C +0x580D ܢ +0x580E +0x580F +0x5810 +0x5811 ǵ +0x5812 +0x5813 +0x5814 +0x5815 +0x5816 +0x5817 +0x5818 +0x5819 ܧ +0x581A +0x581B +0x581C +0x581D +0x581E ܦ +0x581F +0x5820 ܩ +0x5821 +0x5822 +0x5823 +0x5824 +0x5825 +0x5826 +0x5827 +0x5828 +0x5829 +0x582A +0x582B +0x582C +0x582D +0x582E +0x582F +0x5830 +0x5831 +0x5832 +0x5833 +0x5834 +0x5835 +0x5836 +0x5837 +0x5838 +0x5839 +0x583A +0x583B +0x583C +0x583D +0x583E @ +0x583F A +0x5840 B +0x5841 C +0x5842 D +0x5843 E +0x5844 ܨ +0x5845 F +0x5846 G +0x5847 H +0x5848 I +0x5849 J +0x584A K +0x584B L +0x584C +0x584D +0x584E M +0x584F N +0x5850 O +0x5851 +0x5852 P +0x5853 Q +0x5854 +0x5855 R +0x5856 S +0x5857 T +0x5858 +0x5859 U +0x585A V +0x585B W +0x585C X +0x585D Y +0x585E +0x585F Z +0x5860 [ +0x5861 \ +0x5862 ] +0x5863 ^ +0x5864 _ +0x5865 ܪ +0x5866 ` +0x5867 a +0x5868 b +0x5869 c +0x586A d +0x586B +0x586C ܫ +0x586D e +0x586E f +0x586F g +0x5870 h +0x5871 i +0x5872 j +0x5873 k +0x5874 l +0x5875 m +0x5876 n +0x5877 o +0x5878 p +0x5879 q +0x587A r +0x587B s +0x587C t +0x587D u +0x587E +0x587F v +0x5880 ܯ +0x5881 ܬ +0x5882 w +0x5883 +0x5884 x +0x5885 +0x5886 y +0x5887 z +0x5888 { +0x5889 ܭ +0x588A | +0x588B } +0x588C ~ +0x588D +0x588E +0x588F +0x5890 +0x5891 +0x5892 +0x5893 Ĺ +0x5894 +0x5895 +0x5896 +0x5897 +0x5898 +0x5899 ǽ +0x589A ܮ +0x589B +0x589C +0x589D +0x589E +0x589F +0x58A0 +0x58A1 +0x58A2 +0x58A3 +0x58A4 +0x58A5 +0x58A6 +0x58A7 +0x58A8 ī +0x58A9 +0x58AA +0x58AB +0x58AC +0x58AD +0x58AE +0x58AF +0x58B0 +0x58B1 +0x58B2 +0x58B3 +0x58B4 +0x58B5 +0x58B6 +0x58B7 +0x58B8 +0x58B9 +0x58BA +0x58BB +0x58BC +0x58BD +0x58BE +0x58BF +0x58C0 +0x58C1 +0x58C2 +0x58C3 +0x58C4 +0x58C5 +0x58C6 +0x58C7 +0x58C8 +0x58C9 +0x58CA +0x58CB +0x58CC +0x58CD +0x58CE +0x58CF +0x58D0 +0x58D1 +0x58D2 +0x58D3 +0x58D4 +0x58D5 +0x58D6 +0x58D7 +0x58D8 +0x58D9 +0x58DA +0x58DB +0x58DC +0x58DD +0x58DE +0x58DF +0x58E0 +0x58E1 +0x58E2 +0x58E3 +0x58E4 +0x58E5 +0x58E6 +0x58E7 +0x58E8 +0x58E9 +0x58EA +0x58EB ʿ +0x58EC +0x58ED +0x58EE ׳ +0x58EF +0x58F0 +0x58F1 +0x58F2 +0x58F3 +0x58F4 +0x58F5 +0x58F6 +0x58F7 +0x58F8 +0x58F9 Ҽ +0x58FA +0x58FB +0x58FC +0x58FD +0x58FE +0x58FF +0x5900 +0x5901 +0x5902 +0x5903 +0x5904 +0x5905 +0x5906 +0x5907 +0x5908 +0x5909 +0x590A +0x590B +0x590C +0x590D +0x590E +0x590F +0x5910 +0x5911 +0x5912 +0x5913 +0x5914 +0x5915 Ϧ +0x5916 +0x5917 +0x5918 +0x5919 +0x591A +0x591B +0x591C ҹ +0x591D +0x591E +0x591F +0x5920 +0x5921 +0x5922 +0x5923 +0x5924 +0x5925 +0x5926 +0x5927 +0x5928 +0x5929 +0x592A ̫ +0x592B +0x592C +0x592D ز +0x592E +0x592F +0x5930 +0x5931 ʧ +0x5932 +0x5933 +0x5934 ͷ +0x5935 +0x5936 +0x5937 +0x5938 +0x5939 +0x593A +0x593B +0x593C +0x593D @ +0x593E A +0x593F B +0x5940 C +0x5941 +0x5942 ۼ +0x5943 D +0x5944 +0x5945 E +0x5946 F +0x5947 +0x5948 +0x5949 +0x594A G +0x594B +0x594C H +0x594D I +0x594E +0x594F +0x5950 J +0x5951 +0x5952 K +0x5953 L +0x5954 +0x5955 +0x5956 +0x5957 +0x5958 +0x5959 M +0x595A +0x595B N +0x595C O +0x595D P +0x595E Q +0x595F R +0x5960 +0x5961 S +0x5962 +0x5963 T +0x5964 U +0x5965 +0x5966 V +0x5967 W +0x5968 X +0x5969 Y +0x596A Z +0x596B [ +0x596C \ +0x596D ] +0x596E ^ +0x596F _ +0x5970 ` +0x5971 a +0x5972 b +0x5973 Ů +0x5974 ū +0x5975 c +0x5976 +0x5977 d +0x5978 +0x5979 +0x597A e +0x597B f +0x597C g +0x597D +0x597E h +0x597F i +0x5980 j +0x5981 +0x5982 +0x5983 +0x5984 +0x5985 k +0x5986 ױ +0x5987 +0x5988 +0x5989 l +0x598A +0x598B m +0x598C n +0x598D +0x598E o +0x598F p +0x5990 q +0x5991 r +0x5992 +0x5993 +0x5994 s +0x5995 t +0x5996 +0x5997 +0x5998 u +0x5999 +0x599A v +0x599B w +0x599C x +0x599D y +0x599E +0x599F z +0x59A0 { +0x59A1 | +0x59A2 } +0x59A3 +0x59A4 +0x59A5 +0x59A6 ~ +0x59A7 +0x59A8 +0x59A9 +0x59AA +0x59AB +0x59AC +0x59AD +0x59AE +0x59AF +0x59B0 +0x59B1 +0x59B2 +0x59B3 +0x59B4 +0x59B5 +0x59B6 +0x59B7 +0x59B8 +0x59B9 +0x59BA +0x59BB +0x59BC +0x59BD +0x59BE +0x59BF +0x59C0 +0x59C1 +0x59C2 +0x59C3 +0x59C4 +0x59C5 +0x59C6 ķ +0x59C7 +0x59C8 +0x59C9 +0x59CA +0x59CB ʼ +0x59CC +0x59CD +0x59CE +0x59CF +0x59D0 +0x59D1 +0x59D2 +0x59D3 +0x59D4 ί +0x59D5 +0x59D6 +0x59D7 +0x59D8 +0x59D9 +0x59DA Ҧ +0x59DB +0x59DC +0x59DD +0x59DE +0x59DF +0x59E0 +0x59E1 +0x59E2 +0x59E3 +0x59E4 +0x59E5 +0x59E6 +0x59E7 +0x59E8 +0x59E9 +0x59EA +0x59EB +0x59EC +0x59ED +0x59EE +0x59EF +0x59F0 +0x59F1 +0x59F2 +0x59F3 +0x59F4 +0x59F5 +0x59F6 +0x59F7 +0x59F8 +0x59F9 +0x59FA +0x59FB +0x59FC +0x59FD +0x59FE +0x59FF +0x5A00 +0x5A01 +0x5A02 +0x5A03 +0x5A04 ¦ +0x5A05 +0x5A06 +0x5A07 +0x5A08 +0x5A09 +0x5A0A +0x5A0B +0x5A0C +0x5A0D +0x5A0E +0x5A0F +0x5A10 +0x5A11 +0x5A12 +0x5A13 +0x5A14 +0x5A15 +0x5A16 +0x5A17 +0x5A18 +0x5A19 +0x5A1A +0x5A1B +0x5A1C +0x5A1D +0x5A1E +0x5A1F +0x5A20 +0x5A21 +0x5A22 +0x5A23 +0x5A24 +0x5A25 +0x5A26 +0x5A27 +0x5A28 +0x5A29 +0x5A2A +0x5A2B +0x5A2C +0x5A2D +0x5A2E +0x5A2F +0x5A30 +0x5A31 +0x5A32 +0x5A33 +0x5A34 +0x5A35 +0x5A36 Ȣ +0x5A37 +0x5A38 +0x5A39 +0x5A3A +0x5A3B +0x5A3C +0x5A3D +0x5A3E +0x5A3F +0x5A40 +0x5A41 +0x5A42 +0x5A43 +0x5A44 +0x5A45 +0x5A46 +0x5A47 +0x5A48 +0x5A49 +0x5A4A +0x5A4B +0x5A4C +0x5A4D +0x5A4E +0x5A4F +0x5A50 +0x5A51 +0x5A52 +0x5A53 +0x5A54 +0x5A55 +0x5A56 +0x5A57 +0x5A58 +0x5A59 +0x5A5A +0x5A5B +0x5A5C +0x5A5D +0x5A5E +0x5A5F +0x5A60 +0x5A61 @ +0x5A62 +0x5A63 A +0x5A64 B +0x5A65 C +0x5A66 D +0x5A67 +0x5A68 E +0x5A69 F +0x5A6A +0x5A6B G +0x5A6C H +0x5A6D I +0x5A6E J +0x5A6F K +0x5A70 L +0x5A71 M +0x5A72 N +0x5A73 O +0x5A74 Ӥ +0x5A75 +0x5A76 +0x5A77 +0x5A78 P +0x5A79 Q +0x5A7A +0x5A7B R +0x5A7C S +0x5A7D T +0x5A7E U +0x5A7F +0x5A80 V +0x5A81 W +0x5A82 X +0x5A83 Y +0x5A84 Z +0x5A85 [ +0x5A86 \ +0x5A87 ] +0x5A88 ^ +0x5A89 _ +0x5A8A ` +0x5A8B a +0x5A8C b +0x5A8D c +0x5A8E d +0x5A8F e +0x5A90 f +0x5A91 g +0x5A92 ý +0x5A93 h +0x5A94 i +0x5A95 j +0x5A96 k +0x5A97 l +0x5A98 m +0x5A99 n +0x5A9A +0x5A9B +0x5A9C o +0x5A9D p +0x5A9E q +0x5A9F r +0x5AA0 s +0x5AA1 t +0x5AA2 u +0x5AA3 v +0x5AA4 w +0x5AA5 x +0x5AA6 y +0x5AA7 z +0x5AA8 { +0x5AA9 | +0x5AAA +0x5AAB } +0x5AAC ~ +0x5AAD +0x5AAE +0x5AAF +0x5AB0 +0x5AB1 +0x5AB2 +0x5AB3 ϱ +0x5AB4 +0x5AB5 +0x5AB6 +0x5AB7 +0x5AB8 +0x5AB9 +0x5ABA +0x5ABB +0x5ABC +0x5ABD +0x5ABE +0x5ABF +0x5AC0 +0x5AC1 +0x5AC2 ɩ +0x5AC3 +0x5AC4 +0x5AC5 +0x5AC6 +0x5AC7 +0x5AC8 +0x5AC9 +0x5ACA +0x5ACB +0x5ACC +0x5ACD +0x5ACE +0x5ACF +0x5AD0 +0x5AD1 +0x5AD2 +0x5AD3 +0x5AD4 +0x5AD5 +0x5AD6 +0x5AD7 +0x5AD8 +0x5AD9 +0x5ADA +0x5ADB +0x5ADC +0x5ADD +0x5ADE +0x5ADF +0x5AE0 +0x5AE1 +0x5AE2 +0x5AE3 +0x5AE4 +0x5AE5 +0x5AE6 +0x5AE7 +0x5AE8 +0x5AE9 +0x5AEA +0x5AEB +0x5AEC +0x5AED +0x5AEE +0x5AEF +0x5AF0 +0x5AF1 +0x5AF2 +0x5AF3 +0x5AF4 +0x5AF5 +0x5AF6 +0x5AF7 +0x5AF8 +0x5AF9 +0x5AFA +0x5AFB +0x5AFC +0x5AFD +0x5AFE +0x5AFF +0x5B00 +0x5B01 +0x5B02 +0x5B03 +0x5B04 +0x5B05 +0x5B06 +0x5B07 +0x5B08 +0x5B09 +0x5B0A +0x5B0B +0x5B0C +0x5B0D +0x5B0E +0x5B0F +0x5B10 +0x5B11 +0x5B12 +0x5B13 +0x5B14 +0x5B15 +0x5B16 +0x5B17 +0x5B18 +0x5B19 +0x5B1A +0x5B1B +0x5B1C +0x5B1D +0x5B1E +0x5B1F +0x5B20 +0x5B21 +0x5B22 +0x5B23 +0x5B24 +0x5B25 +0x5B26 +0x5B27 +0x5B28 +0x5B29 +0x5B2A +0x5B2B +0x5B2C +0x5B2D +0x5B2E +0x5B2F +0x5B30 +0x5B31 +0x5B32 +0x5B33 +0x5B34 +0x5B35 +0x5B36 +0x5B37 +0x5B38 +0x5B39 +0x5B3A +0x5B3B +0x5B3C +0x5B3D +0x5B3E +0x5B3F +0x5B40 +0x5B41 +0x5B42 +0x5B43 +0x5B44 +0x5B45 +0x5B46 +0x5B47 +0x5B48 @ +0x5B49 A +0x5B4A B +0x5B4B C +0x5B4C D +0x5B4D E +0x5B4E F +0x5B4F G +0x5B50 +0x5B51 +0x5B52 H +0x5B53 +0x5B54 +0x5B55 +0x5B56 I +0x5B57 +0x5B58 +0x5B59 +0x5B5A +0x5B5B +0x5B5C +0x5B5D Т +0x5B5E J +0x5B5F +0x5B60 K +0x5B61 L +0x5B62 +0x5B63 +0x5B64 +0x5B65 +0x5B66 ѧ +0x5B67 M +0x5B68 N +0x5B69 +0x5B6A +0x5B6B O +0x5B6C ث +0x5B6D P +0x5B6E Q +0x5B6F R +0x5B70 +0x5B71 +0x5B72 S +0x5B73 +0x5B74 T +0x5B75 +0x5B76 U +0x5B77 V +0x5B78 W +0x5B79 X +0x5B7A +0x5B7B Y +0x5B7C Z +0x5B7D +0x5B7E [ +0x5B7F \ +0x5B80 +0x5B81 +0x5B82 ] +0x5B83 +0x5B84 +0x5B85 լ +0x5B86 ^ +0x5B87 +0x5B88 +0x5B89 +0x5B8A _ +0x5B8B +0x5B8C +0x5B8D ` +0x5B8E a +0x5B8F +0x5B90 b +0x5B91 c +0x5B92 d +0x5B93 +0x5B94 e +0x5B95 +0x5B96 f +0x5B97 +0x5B98 +0x5B99 +0x5B9A +0x5B9B +0x5B9C +0x5B9D +0x5B9E ʵ +0x5B9F g +0x5BA0 +0x5BA1 +0x5BA2 +0x5BA3 +0x5BA4 +0x5BA5 +0x5BA6 +0x5BA7 h +0x5BA8 i +0x5BA9 j +0x5BAA +0x5BAB +0x5BAC k +0x5BAD l +0x5BAE m +0x5BAF n +0x5BB0 +0x5BB1 o +0x5BB2 p +0x5BB3 +0x5BB4 +0x5BB5 +0x5BB6 +0x5BB7 q +0x5BB8 +0x5BB9 +0x5BBA r +0x5BBB s +0x5BBC t +0x5BBD +0x5BBE +0x5BBF +0x5BC0 u +0x5BC1 v +0x5BC2 +0x5BC3 w +0x5BC4 +0x5BC5 +0x5BC6 +0x5BC7 +0x5BC8 x +0x5BC9 y +0x5BCA z +0x5BCB { +0x5BCC +0x5BCD | +0x5BCE } +0x5BCF ~ +0x5BD0 +0x5BD1 +0x5BD2 +0x5BD3 Ԣ +0x5BD4 +0x5BD5 +0x5BD6 +0x5BD7 +0x5BD8 +0x5BD9 +0x5BDA +0x5BDB +0x5BDC +0x5BDD +0x5BDE į +0x5BDF +0x5BE0 +0x5BE1 +0x5BE2 +0x5BE3 +0x5BE4 +0x5BE5 +0x5BE6 +0x5BE7 +0x5BE8 կ +0x5BE9 +0x5BEA +0x5BEB +0x5BEC +0x5BED +0x5BEE +0x5BEF +0x5BF0 +0x5BF1 +0x5BF2 +0x5BF3 +0x5BF4 +0x5BF5 +0x5BF6 +0x5BF7 +0x5BF8 +0x5BF9 +0x5BFA +0x5BFB Ѱ +0x5BFC +0x5BFD +0x5BFE +0x5BFF +0x5C00 +0x5C01 +0x5C02 +0x5C03 +0x5C04 +0x5C05 +0x5C06 +0x5C07 +0x5C08 +0x5C09 ξ +0x5C0A +0x5C0B +0x5C0C +0x5C0D +0x5C0E +0x5C0F С +0x5C10 +0x5C11 +0x5C12 +0x5C13 +0x5C14 +0x5C15 +0x5C16 +0x5C17 +0x5C18 +0x5C19 +0x5C1A +0x5C1B +0x5C1C +0x5C1D +0x5C1E +0x5C1F +0x5C20 +0x5C21 +0x5C22 +0x5C23 +0x5C24 +0x5C25 +0x5C26 +0x5C27 Ң +0x5C28 +0x5C29 +0x5C2A +0x5C2B +0x5C2C +0x5C2D +0x5C2E +0x5C2F +0x5C30 +0x5C31 +0x5C32 +0x5C33 +0x5C34 +0x5C35 +0x5C36 +0x5C37 +0x5C38 ʬ +0x5C39 +0x5C3A +0x5C3B +0x5C3C +0x5C3D +0x5C3E β +0x5C3F +0x5C40 +0x5C41 ƨ +0x5C42 +0x5C43 +0x5C44 +0x5C45 +0x5C46 +0x5C47 +0x5C48 +0x5C49 +0x5C4A +0x5C4B +0x5C4C +0x5C4D +0x5C4E ʺ +0x5C4F +0x5C50 +0x5C51 м +0x5C52 +0x5C53 +0x5C54 +0x5C55 չ +0x5C56 +0x5C57 +0x5C58 +0x5C59 +0x5C5A +0x5C5B +0x5C5C +0x5C5D +0x5C5E +0x5C5F +0x5C60 +0x5C61 +0x5C62 +0x5C63 +0x5C64 +0x5C65 +0x5C66 +0x5C67 +0x5C68 +0x5C69 +0x5C6A +0x5C6B +0x5C6C +0x5C6D +0x5C6E +0x5C6F +0x5C70 +0x5C71 ɽ +0x5C72 +0x5C73 +0x5C74 +0x5C75 +0x5C76 +0x5C77 +0x5C78 +0x5C79 +0x5C7A +0x5C7B +0x5C7C +0x5C7D +0x5C7E +0x5C7F +0x5C80 +0x5C81 +0x5C82 +0x5C83 +0x5C84 +0x5C85 +0x5C86 +0x5C87 +0x5C88 +0x5C89 +0x5C8A +0x5C8B +0x5C8C +0x5C8D +0x5C8E +0x5C8F +0x5C90 +0x5C91 +0x5C92 +0x5C93 +0x5C94 +0x5C95 +0x5C96 +0x5C97 +0x5C98 +0x5C99 +0x5C9A +0x5C9B +0x5C9C +0x5C9D +0x5C9E +0x5C9F +0x5CA0 +0x5CA1 +0x5CA2 +0x5CA3 +0x5CA4 +0x5CA5 +0x5CA6 +0x5CA7 +0x5CA8 +0x5CA9 +0x5CAA @ +0x5CAB +0x5CAC +0x5CAD +0x5CAE A +0x5CAF B +0x5CB0 C +0x5CB1 +0x5CB2 D +0x5CB3 +0x5CB4 E +0x5CB5 +0x5CB6 F +0x5CB7 +0x5CB8 +0x5CB9 G +0x5CBA H +0x5CBB I +0x5CBC J +0x5CBD +0x5CBE K +0x5CBF +0x5CC0 L +0x5CC1 +0x5CC2 M +0x5CC3 N +0x5CC4 +0x5CC5 O +0x5CC6 P +0x5CC7 Q +0x5CC8 R +0x5CC9 S +0x5CCA T +0x5CCB +0x5CCC U +0x5CCD V +0x5CCE W +0x5CCF X +0x5CD0 Y +0x5CD1 Z +0x5CD2 +0x5CD3 [ +0x5CD4 \ +0x5CD5 ] +0x5CD6 ^ +0x5CD7 _ +0x5CD8 ` +0x5CD9 +0x5CDA a +0x5CDB b +0x5CDC c +0x5CDD d +0x5CDE e +0x5CDF f +0x5CE0 g +0x5CE1 Ͽ +0x5CE2 h +0x5CE3 i +0x5CE4 +0x5CE5 +0x5CE6 +0x5CE7 j +0x5CE8 +0x5CE9 k +0x5CEA +0x5CEB l +0x5CEC m +0x5CED +0x5CEE n +0x5CEF o +0x5CF0 +0x5CF1 p +0x5CF2 q +0x5CF3 r +0x5CF4 s +0x5CF5 t +0x5CF6 u +0x5CF7 v +0x5CF8 w +0x5CF9 x +0x5CFA y +0x5CFB +0x5CFC z +0x5CFD { +0x5CFE | +0x5CFF } +0x5D00 ~ +0x5D01 +0x5D02 +0x5D03 +0x5D04 +0x5D05 +0x5D06 +0x5D07 +0x5D08 +0x5D09 +0x5D0A +0x5D0B +0x5D0C +0x5D0D +0x5D0E +0x5D0F +0x5D10 +0x5D11 +0x5D12 +0x5D13 +0x5D14 +0x5D15 +0x5D16 +0x5D17 +0x5D18 +0x5D19 +0x5D1A +0x5D1B +0x5D1C +0x5D1D +0x5D1E +0x5D1F +0x5D20 +0x5D21 +0x5D22 +0x5D23 +0x5D24 +0x5D25 +0x5D26 +0x5D27 +0x5D28 +0x5D29 +0x5D2A +0x5D2B +0x5D2C +0x5D2D ո +0x5D2E +0x5D2F +0x5D30 +0x5D31 +0x5D32 +0x5D33 +0x5D34 +0x5D35 +0x5D36 +0x5D37 +0x5D38 +0x5D39 +0x5D3A +0x5D3B +0x5D3C +0x5D3D +0x5D3E +0x5D3F +0x5D40 +0x5D41 +0x5D42 +0x5D43 +0x5D44 +0x5D45 +0x5D46 +0x5D47 +0x5D48 +0x5D49 +0x5D4A +0x5D4B +0x5D4C Ƕ +0x5D4D +0x5D4E +0x5D4F +0x5D50 +0x5D51 +0x5D52 +0x5D53 +0x5D54 +0x5D55 +0x5D56 +0x5D57 +0x5D58 +0x5D59 +0x5D5A +0x5D5B +0x5D5C +0x5D5D +0x5D5E +0x5D5F +0x5D60 +0x5D61 +0x5D62 +0x5D63 +0x5D64 +0x5D65 +0x5D66 +0x5D67 +0x5D68 +0x5D69 +0x5D6A +0x5D6B +0x5D6C +0x5D6D +0x5D6E +0x5D6F +0x5D70 +0x5D71 +0x5D72 +0x5D73 +0x5D74 +0x5D75 +0x5D76 +0x5D77 +0x5D78 +0x5D79 +0x5D7A +0x5D7B +0x5D7C +0x5D7D +0x5D7E +0x5D7F +0x5D80 +0x5D81 +0x5D82 +0x5D83 +0x5D84 +0x5D85 +0x5D86 +0x5D87 +0x5D88 +0x5D89 +0x5D8A +0x5D8B +0x5D8C +0x5D8D +0x5D8E +0x5D8F +0x5D90 +0x5D91 +0x5D92 +0x5D93 +0x5D94 +0x5D95 +0x5D96 +0x5D97 +0x5D98 +0x5D99 +0x5D9A +0x5D9B +0x5D9C +0x5D9D +0x5D9E +0x5D9F +0x5DA0 +0x5DA1 @ +0x5DA2 A +0x5DA3 B +0x5DA4 C +0x5DA5 D +0x5DA6 E +0x5DA7 F +0x5DA8 G +0x5DA9 H +0x5DAA I +0x5DAB J +0x5DAC K +0x5DAD L +0x5DAE M +0x5DAF N +0x5DB0 O +0x5DB1 P +0x5DB2 Q +0x5DB3 R +0x5DB4 S +0x5DB5 T +0x5DB6 U +0x5DB7 +0x5DB8 V +0x5DB9 W +0x5DBA X +0x5DBB Y +0x5DBC Z +0x5DBD [ +0x5DBE \ +0x5DBF ] +0x5DC0 ^ +0x5DC1 _ +0x5DC2 ` +0x5DC3 a +0x5DC4 b +0x5DC5 +0x5DC6 c +0x5DC7 d +0x5DC8 e +0x5DC9 f +0x5DCA g +0x5DCB h +0x5DCC i +0x5DCD Ρ +0x5DCE j +0x5DCF k +0x5DD0 l +0x5DD1 m +0x5DD2 n +0x5DD3 o +0x5DD4 p +0x5DD5 q +0x5DD6 r +0x5DD7 s +0x5DD8 t +0x5DD9 u +0x5DDA v +0x5DDB +0x5DDC w +0x5DDD +0x5DDE +0x5DDF x +0x5DE0 y +0x5DE1 Ѳ +0x5DE2 +0x5DE3 z +0x5DE4 { +0x5DE5 +0x5DE6 +0x5DE7 +0x5DE8 +0x5DE9 +0x5DEA | +0x5DEB +0x5DEC } +0x5DED ~ +0x5DEE +0x5DEF +0x5DF0 +0x5DF1 +0x5DF2 +0x5DF3 +0x5DF4 +0x5DF5 +0x5DF6 +0x5DF7 +0x5DF8 +0x5DF9 +0x5DFA +0x5DFB +0x5DFC +0x5DFD +0x5DFE +0x5DFF +0x5E00 +0x5E01 +0x5E02 +0x5E03 +0x5E04 +0x5E05 ˧ +0x5E06 +0x5E07 +0x5E08 ʦ +0x5E09 +0x5E0A +0x5E0B +0x5E0C ϣ +0x5E0D +0x5E0E +0x5E0F +0x5E10 +0x5E11 +0x5E12 +0x5E13 +0x5E14 +0x5E15 +0x5E16 +0x5E17 +0x5E18 +0x5E19 +0x5E1A +0x5E1B +0x5E1C +0x5E1D +0x5E1E +0x5E1F +0x5E20 +0x5E21 +0x5E22 +0x5E23 +0x5E24 +0x5E25 +0x5E26 +0x5E27 ֡ +0x5E28 +0x5E29 +0x5E2A +0x5E2B +0x5E2C +0x5E2D ϯ +0x5E2E +0x5E2F +0x5E30 +0x5E31 +0x5E32 +0x5E33 +0x5E34 +0x5E35 +0x5E36 +0x5E37 +0x5E38 +0x5E39 +0x5E3A +0x5E3B +0x5E3C +0x5E3D ñ +0x5E3E +0x5E3F +0x5E40 +0x5E41 +0x5E42 +0x5E43 +0x5E44 +0x5E45 +0x5E46 +0x5E47 +0x5E48 +0x5E49 +0x5E4A +0x5E4B +0x5E4C +0x5E4D +0x5E4E +0x5E4F +0x5E50 +0x5E51 +0x5E52 +0x5E53 +0x5E54 +0x5E55 Ļ +0x5E56 +0x5E57 +0x5E58 +0x5E59 +0x5E5A +0x5E5B +0x5E5C +0x5E5D +0x5E5E +0x5E5F +0x5E60 +0x5E61 +0x5E62 +0x5E63 +0x5E64 +0x5E65 +0x5E66 +0x5E67 +0x5E68 +0x5E69 +0x5E6A +0x5E6B +0x5E6C +0x5E6D +0x5E6E +0x5E6F +0x5E70 +0x5E71 +0x5E72 +0x5E73 ƽ +0x5E74 +0x5E75 +0x5E76 +0x5E77 +0x5E78 +0x5E79 +0x5E7A +0x5E7B +0x5E7C +0x5E7D +0x5E7E +0x5E7F +0x5E80 +0x5E81 +0x5E82 +0x5E83 +0x5E84 ׯ +0x5E85 +0x5E86 +0x5E87 +0x5E88 +0x5E89 +0x5E8A +0x5E8B +0x5E8C +0x5E8D +0x5E8E +0x5E8F +0x5E90 ® +0x5E91 +0x5E92 +0x5E93 +0x5E94 Ӧ +0x5E95 +0x5E96 +0x5E97 +0x5E98 +0x5E99 +0x5E9A +0x5E9B +0x5E9C +0x5E9D +0x5E9E +0x5E9F +0x5EA0 +0x5EA1 +0x5EA2 +0x5EA3 +0x5EA4 +0x5EA5 +0x5EA6 +0x5EA7 +0x5EA8 +0x5EA9 +0x5EAA +0x5EAB +0x5EAC +0x5EAD ͥ +0x5EAE +0x5EAF +0x5EB0 +0x5EB1 +0x5EB2 +0x5EB3 +0x5EB4 +0x5EB5 +0x5EB6 +0x5EB7 +0x5EB8 ӹ +0x5EB9 +0x5EBA +0x5EBB +0x5EBC +0x5EBD +0x5EBE +0x5EBF +0x5EC0 +0x5EC1 +0x5EC2 +0x5EC3 +0x5EC4 +0x5EC5 +0x5EC6 @ +0x5EC7 A +0x5EC8 B +0x5EC9 +0x5ECA +0x5ECB C +0x5ECC D +0x5ECD E +0x5ECE F +0x5ECF G +0x5ED0 H +0x5ED1 +0x5ED2 +0x5ED3 +0x5ED4 I +0x5ED5 J +0x5ED6 +0x5ED7 K +0x5ED8 L +0x5ED9 M +0x5EDA N +0x5EDB +0x5EDC O +0x5EDD P +0x5EDE Q +0x5EDF R +0x5EE0 S +0x5EE1 T +0x5EE2 U +0x5EE3 V +0x5EE4 W +0x5EE5 X +0x5EE6 Y +0x5EE7 Z +0x5EE8 +0x5EE9 [ +0x5EEA +0x5EEB \ +0x5EEC ] +0x5EED ^ +0x5EEE _ +0x5EEF ` +0x5EF0 a +0x5EF1 b +0x5EF2 c +0x5EF3 d +0x5EF4 +0x5EF5 e +0x5EF6 +0x5EF7 ͢ +0x5EF8 f +0x5EF9 g +0x5EFA +0x5EFB h +0x5EFC i +0x5EFD j +0x5EFE +0x5EFF إ +0x5F00 +0x5F01 +0x5F02 +0x5F03 +0x5F04 Ū +0x5F05 k +0x5F06 l +0x5F07 m +0x5F08 +0x5F09 n +0x5F0A +0x5F0B ߮ +0x5F0C o +0x5F0D p +0x5F0E q +0x5F0F ʽ +0x5F10 r +0x5F11 ߱ +0x5F12 s +0x5F13 +0x5F14 t +0x5F15 +0x5F16 u +0x5F17 +0x5F18 +0x5F19 v +0x5F1A w +0x5F1B +0x5F1C x +0x5F1D y +0x5F1E z +0x5F1F +0x5F20 +0x5F21 { +0x5F22 | +0x5F23 } +0x5F24 ~ +0x5F25 +0x5F26 +0x5F27 +0x5F28 +0x5F29 +0x5F2A +0x5F2B +0x5F2C +0x5F2D +0x5F2E +0x5F2F +0x5F30 +0x5F31 +0x5F32 +0x5F33 +0x5F34 +0x5F35 +0x5F36 +0x5F37 +0x5F38 +0x5F39 +0x5F3A ǿ +0x5F3B +0x5F3C +0x5F3D +0x5F3E +0x5F3F +0x5F40 +0x5F41 +0x5F42 +0x5F43 +0x5F44 +0x5F45 +0x5F46 +0x5F47 +0x5F48 +0x5F49 +0x5F4A +0x5F4B +0x5F4C +0x5F4D +0x5F4E +0x5F4F +0x5F50 +0x5F51 +0x5F52 +0x5F53 +0x5F54 +0x5F55 ¼ +0x5F56 +0x5F57 +0x5F58 +0x5F59 +0x5F5A +0x5F5B +0x5F5C +0x5F5D +0x5F5E +0x5F5F +0x5F60 +0x5F61 +0x5F62 +0x5F63 +0x5F64 ͮ +0x5F65 +0x5F66 +0x5F67 +0x5F68 +0x5F69 +0x5F6A +0x5F6B +0x5F6C +0x5F6D +0x5F6E +0x5F6F +0x5F70 +0x5F71 Ӱ +0x5F72 +0x5F73 +0x5F74 +0x5F75 +0x5F76 +0x5F77 +0x5F78 +0x5F79 +0x5F7A +0x5F7B +0x5F7C +0x5F7D +0x5F7E +0x5F7F +0x5F80 +0x5F81 +0x5F82 +0x5F83 +0x5F84 +0x5F85 +0x5F86 +0x5F87 +0x5F88 +0x5F89 +0x5F8A +0x5F8B +0x5F8C +0x5F8D +0x5F8E +0x5F8F +0x5F90 +0x5F91 +0x5F92 ͽ +0x5F93 +0x5F94 +0x5F95 +0x5F96 +0x5F97 +0x5F98 +0x5F99 +0x5F9A +0x5F9B +0x5F9C +0x5F9D +0x5F9E +0x5F9F +0x5FA0 +0x5FA1 +0x5FA2 +0x5FA3 +0x5FA4 +0x5FA5 +0x5FA6 +0x5FA7 +0x5FA8 +0x5FA9 +0x5FAA ѭ +0x5FAB +0x5FAC +0x5FAD +0x5FAE ΢ +0x5FAF +0x5FB0 +0x5FB1 +0x5FB2 +0x5FB3 +0x5FB4 +0x5FB5 +0x5FB6 +0x5FB7 +0x5FB8 +0x5FB9 +0x5FBA +0x5FBB +0x5FBC +0x5FBD +0x5FBE +0x5FBF +0x5FC0 +0x5FC1 +0x5FC2 +0x5FC3 +0x5FC4 +0x5FC5 +0x5FC6 +0x5FC7 +0x5FC8 +0x5FC9 +0x5FCA +0x5FCB +0x5FCC +0x5FCD +0x5FCE +0x5FCF +0x5FD0 +0x5FD1 +0x5FD2 ߯ +0x5FD3 +0x5FD4 +0x5FD5 +0x5FD6 +0x5FD7 ־ +0x5FD8 +0x5FD9 æ +0x5FDA +0x5FDB +0x5FDC +0x5FDD +0x5FDE +0x5FDF +0x5FE0 +0x5FE1 +0x5FE2 +0x5FE3 +0x5FE4 +0x5FE5 +0x5FE6 +0x5FE7 +0x5FE8 +0x5FE9 +0x5FEA +0x5FEB +0x5FEC +0x5FED +0x5FEE +0x5FEF +0x5FF0 +0x5FF1 +0x5FF2 +0x5FF3 +0x5FF4 +0x5FF5 +0x5FF6 +0x5FF7 +0x5FF8 +0x5FF9 +0x5FFA +0x5FFB +0x5FFC +0x5FFD +0x5FFE +0x5FFF +0x6000 +0x6001 ̬ +0x6002 +0x6003 +0x6004 +0x6005 +0x6006 +0x6007 +0x6008 @ +0x6009 A +0x600A +0x600B B +0x600C C +0x600D +0x600E +0x600F +0x6010 D +0x6011 E +0x6012 ŭ +0x6013 F +0x6014 +0x6015 +0x6016 +0x6017 G +0x6018 H +0x6019 +0x601A I +0x601B +0x601C +0x601D ˼ +0x601E J +0x601F K +0x6020 +0x6021 +0x6022 L +0x6023 M +0x6024 N +0x6025 +0x6026 +0x6027 +0x6028 Թ +0x6029 +0x602A +0x602B +0x602C O +0x602D P +0x602E Q +0x602F +0x6030 R +0x6031 S +0x6032 T +0x6033 U +0x6034 V +0x6035 +0x6036 W +0x6037 X +0x6038 Y +0x6039 Z +0x603A [ +0x603B +0x603C +0x603D \ +0x603E ] +0x603F +0x6040 ^ +0x6041 +0x6042 +0x6043 +0x6044 _ +0x6045 ` +0x6046 a +0x6047 b +0x6048 c +0x6049 d +0x604A e +0x604B +0x604C f +0x604D +0x604E g +0x604F h +0x6050 +0x6051 i +0x6052 +0x6053 j +0x6054 k +0x6055 ˡ +0x6056 l +0x6057 m +0x6058 n +0x6059 +0x605A +0x605B o +0x605C p +0x605D +0x605E q +0x605F r +0x6060 s +0x6061 t +0x6062 +0x6063 +0x6064 +0x6065 u +0x6066 v +0x6067 +0x6068 +0x6069 +0x606A +0x606B +0x606C +0x606D +0x606E w +0x606F Ϣ +0x6070 ǡ +0x6071 x +0x6072 y +0x6073 +0x6074 z +0x6075 { +0x6076 +0x6077 | +0x6078 +0x6079 +0x607A +0x607B +0x607C +0x607D +0x607E } +0x607F +0x6080 ~ +0x6081 +0x6082 +0x6083 +0x6084 +0x6085 +0x6086 +0x6087 +0x6088 +0x6089 Ϥ +0x608A +0x608B +0x608C +0x608D +0x608E +0x608F +0x6090 +0x6091 +0x6092 +0x6093 +0x6094 +0x6095 +0x6096 +0x6097 +0x6098 +0x6099 +0x609A +0x609B +0x609C +0x609D +0x609E +0x609F +0x60A0 +0x60A1 +0x60A2 +0x60A3 +0x60A4 +0x60A5 +0x60A6 +0x60A7 +0x60A8 +0x60A9 +0x60AA +0x60AB +0x60AC +0x60AD +0x60AE +0x60AF +0x60B0 +0x60B1 +0x60B2 +0x60B3 +0x60B4 +0x60B5 +0x60B6 +0x60B7 +0x60B8 +0x60B9 +0x60BA +0x60BB +0x60BC +0x60BD +0x60BE +0x60BF +0x60C0 +0x60C1 +0x60C2 +0x60C3 +0x60C4 +0x60C5 +0x60C6 +0x60C7 +0x60C8 +0x60C9 +0x60CA +0x60CB +0x60CC +0x60CD +0x60CE +0x60CF +0x60D0 +0x60D1 +0x60D2 +0x60D3 +0x60D4 +0x60D5 +0x60D6 +0x60D7 +0x60D8 +0x60D9 +0x60DA +0x60DB +0x60DC ϧ +0x60DD +0x60DE +0x60DF Ω +0x60E0 +0x60E1 +0x60E2 +0x60E3 +0x60E4 +0x60E5 +0x60E6 +0x60E7 +0x60E8 +0x60E9 +0x60EA +0x60EB +0x60EC +0x60ED +0x60EE +0x60EF +0x60F0 +0x60F1 +0x60F2 +0x60F3 +0x60F4 +0x60F5 +0x60F6 +0x60F7 +0x60F8 +0x60F9 +0x60FA +0x60FB +0x60FC +0x60FD +0x60FE +0x60FF +0x6100 +0x6101 +0x6102 +0x6103 +0x6104 +0x6105 +0x6106 +0x6107 +0x6108 +0x6109 +0x610A +0x610B +0x610C +0x610D +0x610E +0x610F +0x6110 +0x6111 +0x6112 +0x6113 +0x6114 +0x6115 +0x6116 +0x6117 +0x6118 +0x6119 +0x611A +0x611B +0x611C +0x611D +0x611E +0x611F +0x6120 +0x6121 +0x6122 +0x6123 +0x6124 +0x6125 +0x6126 +0x6127 +0x6128 +0x6129 +0x612A +0x612B +0x612C +0x612D +0x612E +0x612F +0x6130 +0x6131 +0x6132 +0x6133 +0x6134 +0x6135 +0x6136 +0x6137 +0x6138 +0x6139 +0x613A +0x613B +0x613C +0x613D +0x613E +0x613F Ը +0x6140 +0x6141 +0x6142 +0x6143 +0x6144 +0x6145 +0x6146 +0x6147 @ +0x6148 +0x6149 A +0x614A +0x614B B +0x614C +0x614D C +0x614E +0x614F D +0x6150 E +0x6151 +0x6152 F +0x6153 G +0x6154 H +0x6155 Ľ +0x6156 I +0x6157 J +0x6158 K +0x6159 L +0x615A M +0x615B N +0x615C O +0x615D +0x615E P +0x615F Q +0x6160 R +0x6161 S +0x6162 +0x6163 T +0x6164 U +0x6165 V +0x6166 W +0x6167 +0x6168 +0x6169 X +0x616A Y +0x616B Z +0x616C [ +0x616D \ +0x616E ] +0x616F ^ +0x6170 ο +0x6171 _ +0x6172 ` +0x6173 a +0x6174 b +0x6175 +0x6176 c +0x6177 +0x6178 d +0x6179 e +0x617A f +0x617B g +0x617C h +0x617D i +0x617E j +0x617F k +0x6180 l +0x6181 m +0x6182 n +0x6183 o +0x6184 p +0x6185 q +0x6186 r +0x6187 s +0x6188 t +0x6189 u +0x618A v +0x618B +0x618C w +0x618D x +0x618E +0x618F y +0x6190 z +0x6191 { +0x6192 | +0x6193 } +0x6194 +0x6195 ~ +0x6196 +0x6197 +0x6198 +0x6199 +0x619A +0x619B +0x619C +0x619D +0x619E +0x619F +0x61A0 +0x61A1 +0x61A2 +0x61A3 +0x61A4 +0x61A5 +0x61A6 +0x61A7 +0x61A8 +0x61A9 +0x61AA +0x61AB +0x61AC +0x61AD +0x61AE +0x61AF +0x61B0 +0x61B1 +0x61B2 +0x61B3 +0x61B4 +0x61B5 +0x61B6 +0x61B7 +0x61B8 +0x61B9 +0x61BA +0x61BB +0x61BC +0x61BD +0x61BE +0x61BF +0x61C0 +0x61C1 +0x61C2 +0x61C3 +0x61C4 +0x61C5 +0x61C6 +0x61C7 +0x61C8 и +0x61C9 +0x61CA +0x61CB +0x61CC +0x61CD +0x61CE +0x61CF +0x61D0 +0x61D1 +0x61D2 +0x61D3 +0x61D4 +0x61D5 +0x61D6 +0x61D7 +0x61D8 +0x61D9 +0x61DA +0x61DB +0x61DC +0x61DD +0x61DE +0x61DF +0x61E0 +0x61E1 +0x61E2 +0x61E3 +0x61E4 +0x61E5 +0x61E6 ų +0x61E7 +0x61E8 +0x61E9 +0x61EA +0x61EB +0x61EC +0x61ED +0x61EE +0x61EF +0x61F0 +0x61F1 +0x61F2 +0x61F3 +0x61F4 +0x61F5 +0x61F6 +0x61F7 +0x61F8 +0x61F9 +0x61FA +0x61FB +0x61FC +0x61FD +0x61FE +0x61FF ܲ +0x6200 +0x6201 +0x6202 +0x6203 +0x6204 +0x6205 +0x6206 +0x6207 +0x6208 +0x6209 +0x620A +0x620B +0x620C +0x620D +0x620E +0x620F Ϸ +0x6210 +0x6211 +0x6212 +0x6213 +0x6214 +0x6215 +0x6216 +0x6217 +0x6218 ս +0x6219 +0x621A +0x621B +0x621C +0x621D +0x621E +0x621F +0x6220 +0x6221 +0x6222 +0x6223 +0x6224 +0x6225 +0x6226 +0x6227 +0x6228 +0x6229 +0x622A +0x622B +0x622C +0x622D +0x622E ¾ +0x622F +0x6230 +0x6231 +0x6232 +0x6233 +0x6234 +0x6235 +0x6236 +0x6237 +0x6238 +0x6239 +0x623A +0x623B +0x623C +0x623D +0x623E +0x623F +0x6240 +0x6241 +0x6242 +0x6243 +0x6244 +0x6245 +0x6246 +0x6247 +0x6248 +0x6249 +0x624A +0x624B +0x624C +0x624D +0x624E +0x624F @ +0x6250 A +0x6251 +0x6252 +0x6253 +0x6254 +0x6255 B +0x6256 C +0x6257 D +0x6258 +0x6259 E +0x625A F +0x625B +0x625C G +0x625D H +0x625E I +0x625F J +0x6260 K +0x6261 L +0x6262 M +0x6263 +0x6264 N +0x6265 O +0x6266 Ǥ +0x6267 ִ +0x6268 P +0x6269 +0x626A +0x626B ɨ +0x626C +0x626D Ť +0x626E +0x626F +0x6270 +0x6271 Q +0x6272 R +0x6273 +0x6274 S +0x6275 T +0x6276 +0x6277 U +0x6278 V +0x6279 +0x627A W +0x627B X +0x627C +0x627D Y +0x627E +0x627F +0x6280 +0x6281 Z +0x6282 [ +0x6283 \ +0x6284 +0x6285 ] +0x6286 ^ +0x6287 _ +0x6288 ` +0x6289 +0x628A +0x628B a +0x628C b +0x628D c +0x628E d +0x628F e +0x6290 f +0x6291 +0x6292 +0x6293 ץ +0x6294 g +0x6295 Ͷ +0x6296 +0x6297 +0x6298 +0x6299 h +0x629A +0x629B +0x629C i +0x629D j +0x629E k +0x629F +0x62A0 +0x62A1 +0x62A2 +0x62A3 l +0x62A4 +0x62A5 +0x62A6 m +0x62A7 n +0x62A8 +0x62A9 o +0x62AA p +0x62AB +0x62AC ̧ +0x62AD q +0x62AE r +0x62AF s +0x62B0 t +0x62B1 +0x62B2 u +0x62B3 v +0x62B4 w +0x62B5 +0x62B6 x +0x62B7 y +0x62B8 z +0x62B9 Ĩ +0x62BA { +0x62BB +0x62BC Ѻ +0x62BD +0x62BE | +0x62BF +0x62C0 } +0x62C1 ~ +0x62C2 +0x62C3 +0x62C4 +0x62C5 +0x62C6 +0x62C7 Ĵ +0x62C8 +0x62C9 +0x62CA +0x62CB +0x62CC +0x62CD +0x62CE +0x62CF +0x62D0 +0x62D1 +0x62D2 +0x62D3 +0x62D4 +0x62D5 +0x62D6 +0x62D7 +0x62D8 +0x62D9 ׾ +0x62DA +0x62DB +0x62DC +0x62DD +0x62DE +0x62DF +0x62E0 +0x62E1 +0x62E2 £ +0x62E3 +0x62E4 +0x62E5 ӵ +0x62E6 +0x62E7 š +0x62E8 +0x62E9 +0x62EA +0x62EB +0x62EC +0x62ED +0x62EE +0x62EF +0x62F0 +0x62F1 +0x62F2 +0x62F3 ȭ +0x62F4 ˩ +0x62F5 +0x62F6 +0x62F7 +0x62F8 +0x62F9 +0x62FA +0x62FB +0x62FC ƴ +0x62FD ק +0x62FE ʰ +0x62FF +0x6300 +0x6301 +0x6302 +0x6303 +0x6304 +0x6305 +0x6306 +0x6307 ָ +0x6308 +0x6309 +0x630A +0x630B +0x630C +0x630D +0x630E +0x630F +0x6310 +0x6311 +0x6312 +0x6313 +0x6314 +0x6315 +0x6316 +0x6317 +0x6318 +0x6319 +0x631A ֿ +0x631B +0x631C +0x631D +0x631E ̢ +0x631F Ю +0x6320 +0x6321 +0x6322 +0x6323 +0x6324 +0x6325 +0x6326 +0x6327 +0x6328 +0x6329 +0x632A Ų +0x632B +0x632C +0x632D +0x632E +0x632F +0x6330 +0x6331 +0x6332 +0x6333 +0x6334 +0x6335 +0x6336 +0x6337 +0x6338 +0x6339 +0x633A ͦ +0x633B +0x633C +0x633D +0x633E +0x633F +0x6340 +0x6341 +0x6342 +0x6343 +0x6344 +0x6345 ͱ +0x6346 +0x6347 +0x6348 +0x6349 ׽ +0x634A +0x634B +0x634C +0x634D +0x634E +0x634F +0x6350 +0x6351 +0x6352 +0x6353 +0x6354 +0x6355 +0x6356 +0x6357 +0x6358 +0x6359 +0x635A +0x635B +0x635C +0x635D +0x635E +0x635F +0x6360 +0x6361 +0x6362 +0x6363 +0x6364 +0x6365 +0x6366 +0x6367 +0x6368 +0x6369 +0x636A +0x636B +0x636C +0x636D +0x636E +0x636F +0x6370 +0x6371 +0x6372 +0x6373 +0x6374 +0x6375 +0x6376 +0x6377 +0x6378 +0x6379 +0x637A +0x637B +0x637C +0x637D +0x637E +0x637F +0x6380 +0x6381 +0x6382 +0x6383 +0x6384 +0x6385 +0x6386 +0x6387 +0x6388 +0x6389 +0x638A +0x638B +0x638C +0x638D +0x638E +0x638F +0x6390 +0x6391 +0x6392 +0x6393 +0x6394 +0x6395 +0x6396 Ҵ +0x6397 +0x6398 +0x6399 +0x639A +0x639B +0x639C +0x639D +0x639E +0x639F +0x63A0 +0x63A1 +0x63A2 ̽ +0x63A3 +0x63A4 +0x63A5 +0x63A6 +0x63A7 +0x63A8 +0x63A9 +0x63AA +0x63AB +0x63AC +0x63AD +0x63AE +0x63AF +0x63B0 +0x63B1 +0x63B2 +0x63B3 ° +0x63B4 +0x63B5 +0x63B6 +0x63B7 +0x63B8 +0x63B9 +0x63BA +0x63BB +0x63BC +0x63BD +0x63BE +0x63BF +0x63C0 +0x63C1 @ +0x63C2 A +0x63C3 B +0x63C4 +0x63C5 C +0x63C6 +0x63C7 D +0x63C8 E +0x63C9 +0x63CA F +0x63CB G +0x63CC H +0x63CD +0x63CE +0x63CF +0x63D0 +0x63D1 I +0x63D2 +0x63D3 J +0x63D4 K +0x63D5 L +0x63D6 Ҿ +0x63D7 M +0x63D8 N +0x63D9 O +0x63DA P +0x63DB Q +0x63DC R +0x63DD S +0x63DE +0x63DF T +0x63E0 +0x63E1 +0x63E2 U +0x63E3 +0x63E4 V +0x63E5 W +0x63E6 X +0x63E7 Y +0x63E8 Z +0x63E9 +0x63EA +0x63EB [ +0x63EC \ +0x63ED +0x63EE ] +0x63EF ^ +0x63F0 _ +0x63F1 ` +0x63F2 +0x63F3 a +0x63F4 Ԯ +0x63F5 b +0x63F6 +0x63F7 c +0x63F8 +0x63F9 d +0x63FA e +0x63FB f +0x63FC g +0x63FD +0x63FE h +0x63FF +0x6400 +0x6401 +0x6402 § +0x6403 i +0x6404 j +0x6405 +0x6406 k +0x6407 l +0x6408 m +0x6409 n +0x640A o +0x640B +0x640C +0x640D p +0x640E q +0x640F +0x6410 +0x6411 r +0x6412 s +0x6413 +0x6414 ɦ +0x6415 t +0x6416 u +0x6417 v +0x6418 w +0x6419 x +0x641A y +0x641B +0x641C +0x641D z +0x641E +0x641F { +0x6420 +0x6421 +0x6422 | +0x6423 } +0x6424 ~ +0x6425 +0x6426 +0x6427 +0x6428 +0x6429 +0x642A +0x642B +0x642C +0x642D +0x642E +0x642F +0x6430 +0x6431 +0x6432 +0x6433 +0x6434 +0x6435 +0x6436 +0x6437 +0x6438 +0x6439 +0x643A Я +0x643B +0x643C +0x643D +0x643E +0x643F +0x6440 +0x6441 +0x6442 +0x6443 +0x6444 +0x6445 +0x6446 +0x6447 ҡ +0x6448 +0x6449 +0x644A ̯ +0x644B +0x644C +0x644D +0x644E +0x644F +0x6450 +0x6451 +0x6452 +0x6453 +0x6454 ˤ +0x6455 +0x6456 +0x6457 +0x6458 ժ +0x6459 +0x645A +0x645B +0x645C +0x645D +0x645E +0x645F +0x6460 +0x6461 +0x6462 +0x6463 +0x6464 +0x6465 +0x6466 +0x6467 +0x6468 +0x6469 Ħ +0x646A +0x646B +0x646C +0x646D +0x646E +0x646F +0x6470 +0x6471 +0x6472 +0x6473 +0x6474 +0x6475 +0x6476 +0x6477 +0x6478 +0x6479 ġ +0x647A ߡ +0x647B +0x647C +0x647D +0x647E +0x647F +0x6480 +0x6481 +0x6482 +0x6483 +0x6484 +0x6485 +0x6486 +0x6487 Ʋ +0x6488 +0x6489 +0x648A +0x648B +0x648C +0x648D +0x648E +0x648F +0x6490 +0x6491 +0x6492 +0x6493 +0x6494 +0x6495 ˺ +0x6496 +0x6497 +0x6498 +0x6499 ߤ +0x649A +0x649B +0x649C +0x649D +0x649E ײ +0x649F +0x64A0 +0x64A1 +0x64A2 +0x64A3 +0x64A4 +0x64A5 +0x64A6 +0x64A7 +0x64A8 +0x64A9 +0x64AA +0x64AB +0x64AC +0x64AD +0x64AE +0x64AF +0x64B0 ׫ +0x64B1 +0x64B2 +0x64B3 +0x64B4 +0x64B5 +0x64B6 +0x64B7 ߢ +0x64B8 ߣ +0x64B9 +0x64BA ߥ +0x64BB +0x64BC +0x64BD +0x64BE +0x64BF +0x64C0 ߦ +0x64C1 +0x64C2 +0x64C3 +0x64C4 +0x64C5 +0x64C6 +0x64C7 +0x64C8 +0x64C9 +0x64CA +0x64CB +0x64CC +0x64CD +0x64CE +0x64CF +0x64D0 ߧ +0x64D1 +0x64D2 +0x64D3 +0x64D4 +0x64D5 +0x64D6 +0x64D7 ߨ +0x64D8 +0x64D9 +0x64DA +0x64DB @ +0x64DC A +0x64DD B +0x64DE +0x64DF C +0x64E0 D +0x64E1 E +0x64E2 ߪ +0x64E3 F +0x64E4 ߩ +0x64E5 G +0x64E6 +0x64E7 H +0x64E8 I +0x64E9 J +0x64EA K +0x64EB L +0x64EC M +0x64ED N +0x64EE O +0x64EF P +0x64F0 Q +0x64F1 R +0x64F2 S +0x64F3 T +0x64F4 U +0x64F5 V +0x64F6 W +0x64F7 X +0x64F8 Y +0x64F9 Z +0x64FA [ +0x64FB \ +0x64FC ] +0x64FD ^ +0x64FE _ +0x64FF ` +0x6500 +0x6501 a +0x6502 b +0x6503 c +0x6504 d +0x6505 e +0x6506 f +0x6507 g +0x6508 h +0x6509 ߫ +0x650A i +0x650B j +0x650C k +0x650D l +0x650E m +0x650F n +0x6510 o +0x6511 p +0x6512 +0x6513 q +0x6514 r +0x6515 s +0x6516 t +0x6517 u +0x6518 +0x6519 v +0x651A w +0x651B x +0x651C y +0x651D z +0x651E { +0x651F | +0x6520 } +0x6521 ~ +0x6522 +0x6523 +0x6524 +0x6525 ߬ +0x6526 +0x6527 +0x6528 +0x6529 +0x652A +0x652B +0x652C +0x652D +0x652E ߭ +0x652F ֧ +0x6530 +0x6531 +0x6532 +0x6533 +0x6534 +0x6535 +0x6536 +0x6537 +0x6538 +0x6539 +0x653A +0x653B +0x653C +0x653D +0x653E +0x653F +0x6540 +0x6541 +0x6542 +0x6543 +0x6544 +0x6545 +0x6546 +0x6547 +0x6548 Ч +0x6549 +0x654A +0x654B +0x654C +0x654D +0x654E +0x654F +0x6550 +0x6551 +0x6552 +0x6553 +0x6554 +0x6555 +0x6556 +0x6557 +0x6558 +0x6559 +0x655A +0x655B +0x655C +0x655D +0x655E +0x655F +0x6560 +0x6561 +0x6562 +0x6563 ɢ +0x6564 +0x6565 +0x6566 +0x6567 +0x6568 +0x6569 +0x656A +0x656B +0x656C +0x656D +0x656E +0x656F +0x6570 +0x6571 +0x6572 +0x6573 +0x6574 +0x6575 +0x6576 +0x6577 +0x6578 +0x6579 +0x657A +0x657B +0x657C +0x657D +0x657E +0x657F +0x6580 +0x6581 +0x6582 +0x6583 +0x6584 +0x6585 +0x6586 +0x6587 +0x6588 +0x6589 +0x658A +0x658B ի +0x658C +0x658D +0x658E +0x658F +0x6590 +0x6591 +0x6592 +0x6593 +0x6594 +0x6595 +0x6596 +0x6597 +0x6598 +0x6599 +0x659A +0x659B +0x659C б +0x659D +0x659E +0x659F +0x65A0 +0x65A1 +0x65A2 +0x65A3 +0x65A4 +0x65A5 +0x65A6 +0x65A7 +0x65A8 +0x65A9 ն +0x65AA +0x65AB +0x65AC +0x65AD +0x65AE +0x65AF ˹ +0x65B0 +0x65B1 +0x65B2 +0x65B3 +0x65B4 +0x65B5 +0x65B6 +0x65B7 +0x65B8 +0x65B9 +0x65BA +0x65BB +0x65BC +0x65BD ʩ +0x65BE +0x65BF +0x65C0 +0x65C1 +0x65C2 +0x65C3 +0x65C4 +0x65C5 +0x65C6 +0x65C7 +0x65C8 +0x65C9 +0x65CA +0x65CB +0x65CC +0x65CD +0x65CE +0x65CF +0x65D0 +0x65D1 +0x65D2 +0x65D3 +0x65D4 +0x65D5 +0x65D6 +0x65D7 +0x65D8 +0x65D9 +0x65DA +0x65DB +0x65DC +0x65DD +0x65DE +0x65DF +0x65E0 +0x65E1 +0x65E2 +0x65E3 +0x65E4 +0x65E5 +0x65E6 +0x65E7 +0x65E8 ּ +0x65E9 +0x65EA +0x65EB +0x65EC Ѯ +0x65ED +0x65EE +0x65EF +0x65F0 +0x65F1 +0x65F2 @ +0x65F3 A +0x65F4 B +0x65F5 C +0x65F6 ʱ +0x65F7 +0x65F8 D +0x65F9 E +0x65FA +0x65FB F +0x65FC G +0x65FD H +0x65FE I +0x65FF J +0x6600 +0x6601 K +0x6602 +0x6603 +0x6604 L +0x6605 M +0x6606 +0x6607 N +0x6608 O +0x6609 P +0x660A +0x660B Q +0x660C +0x660D R +0x660E +0x660F +0x6610 S +0x6611 T +0x6612 U +0x6613 +0x6614 +0x6615 +0x6616 V +0x6617 W +0x6618 X +0x6619 +0x661A Y +0x661B Z +0x661C [ +0x661D +0x661E \ +0x661F +0x6620 ӳ +0x6621 ] +0x6622 ^ +0x6623 _ +0x6624 ` +0x6625 +0x6626 a +0x6627 +0x6628 +0x6629 b +0x662A c +0x662B d +0x662C e +0x662D +0x662E f +0x662F +0x6630 g +0x6631 +0x6632 h +0x6633 i +0x6634 +0x6635 +0x6636 +0x6637 j +0x6638 k +0x6639 l +0x663A m +0x663B n +0x663C +0x663D o +0x663E +0x663F p +0x6640 q +0x6641 +0x6642 r +0x6643 +0x6644 s +0x6645 t +0x6646 u +0x6647 v +0x6648 w +0x6649 x +0x664A y +0x664B +0x664C +0x664D z +0x664E { +0x664F +0x6650 | +0x6651 } +0x6652 ɹ +0x6653 +0x6654 +0x6655 +0x6656 +0x6657 +0x6658 ~ +0x6659 +0x665A +0x665B +0x665C +0x665D +0x665E +0x665F +0x6660 +0x6661 +0x6662 +0x6663 +0x6664 +0x6665 +0x6666 +0x6667 +0x6668 +0x6669 +0x666A +0x666B +0x666C +0x666D +0x666E +0x666F +0x6670 +0x6671 +0x6672 +0x6673 +0x6674 +0x6675 +0x6676 +0x6677 +0x6678 +0x6679 +0x667A +0x667B +0x667C +0x667D +0x667E +0x667F +0x6680 +0x6681 +0x6682 +0x6683 +0x6684 +0x6685 +0x6686 +0x6687 Ͼ +0x6688 +0x6689 +0x668A +0x668B +0x668C +0x668D +0x668E +0x668F +0x6690 +0x6691 +0x6692 +0x6693 +0x6694 +0x6695 +0x6696 ů +0x6697 +0x6698 +0x6699 +0x669A +0x669B +0x669C +0x669D +0x669E +0x669F +0x66A0 +0x66A1 +0x66A2 +0x66A3 +0x66A4 +0x66A5 +0x66A6 +0x66A7 +0x66A8 +0x66A9 +0x66AA +0x66AB +0x66AC +0x66AD +0x66AE ĺ +0x66AF +0x66B0 +0x66B1 +0x66B2 +0x66B3 +0x66B4 +0x66B5 +0x66B6 +0x66B7 +0x66B8 +0x66B9 +0x66BA +0x66BB +0x66BC +0x66BD +0x66BE +0x66BF +0x66C0 +0x66C1 +0x66C2 +0x66C3 +0x66C4 +0x66C5 +0x66C6 +0x66C7 +0x66C8 +0x66C9 +0x66CA +0x66CB +0x66CC +0x66CD +0x66CE +0x66CF +0x66D0 +0x66D1 +0x66D2 +0x66D3 +0x66D4 +0x66D5 +0x66D6 +0x66D7 +0x66D8 +0x66D9 +0x66DA +0x66DB +0x66DC +0x66DD +0x66DE +0x66DF +0x66E0 +0x66E1 +0x66E2 +0x66E3 +0x66E4 +0x66E5 +0x66E6 +0x66E7 +0x66E8 +0x66E9 +0x66EA +0x66EB +0x66EC +0x66ED +0x66EE +0x66EF +0x66F0 Ի +0x66F1 +0x66F2 +0x66F3 ҷ +0x66F4 +0x66F5 +0x66F6 +0x66F7 +0x66F8 +0x66F9 +0x66FA +0x66FB +0x66FC +0x66FD +0x66FE +0x66FF +0x6700 +0x6701 +0x6702 +0x6703 +0x6704 @ +0x6705 A +0x6706 B +0x6707 C +0x6708 +0x6709 +0x670A +0x670B +0x670C D +0x670D +0x670E E +0x670F F +0x6710 +0x6711 G +0x6712 H +0x6713 I +0x6714 ˷ +0x6715 +0x6716 J +0x6717 +0x6718 K +0x6719 L +0x671A M +0x671B +0x671C N +0x671D +0x671E O +0x671F +0x6720 P +0x6721 Q +0x6722 R +0x6723 S +0x6724 T +0x6725 U +0x6726 +0x6727 V +0x6728 ľ +0x6729 W +0x672A δ +0x672B ĩ +0x672C +0x672D +0x672E X +0x672F +0x6730 Y +0x6731 +0x6732 Z +0x6733 [ +0x6734 +0x6735 +0x6736 \ +0x6737 ] +0x6738 ^ +0x6739 _ +0x673A +0x673B ` +0x673C a +0x673D +0x673E b +0x673F c +0x6740 ɱ +0x6741 d +0x6742 +0x6743 Ȩ +0x6744 e +0x6745 f +0x6746 +0x6747 g +0x6748 +0x6749 ɼ +0x674A h +0x674B i +0x674C +0x674D j +0x674E +0x674F +0x6750 +0x6751 +0x6752 k +0x6753 +0x6754 l +0x6755 m +0x6756 +0x6757 n +0x6758 o +0x6759 p +0x675A q +0x675B r +0x675C +0x675D s +0x675E +0x675F +0x6760 +0x6761 +0x6762 t +0x6763 u +0x6764 v +0x6765 +0x6766 w +0x6767 x +0x6768 +0x6769 +0x676A +0x676B y +0x676C z +0x676D +0x676E { +0x676F +0x6770 +0x6771 | +0x6772 +0x6773 +0x6774 } +0x6775 +0x6776 ~ +0x6777 +0x6778 +0x6779 +0x677A +0x677B +0x677C +0x677D +0x677E +0x677F +0x6780 +0x6781 +0x6782 +0x6783 +0x6784 +0x6785 +0x6786 +0x6787 +0x6788 +0x6789 +0x678A +0x678B +0x678C +0x678D +0x678E +0x678F +0x6790 +0x6791 +0x6792 +0x6793 +0x6794 +0x6795 +0x6796 +0x6797 +0x6798 +0x6799 +0x679A ö +0x679B +0x679C +0x679D ֦ +0x679E +0x679F +0x67A0 +0x67A1 +0x67A2 +0x67A3 +0x67A4 +0x67A5 +0x67A6 +0x67A7 +0x67A8 +0x67A9 +0x67AA ǹ +0x67AB +0x67AC +0x67AD +0x67AE +0x67AF +0x67B0 +0x67B1 +0x67B2 +0x67B3 +0x67B4 +0x67B5 +0x67B6 +0x67B7 +0x67B8 +0x67B9 +0x67BA +0x67BB +0x67BC +0x67BD +0x67BE +0x67BF +0x67C0 +0x67C1 +0x67C2 +0x67C3 +0x67C4 +0x67C5 +0x67C6 +0x67C7 +0x67C8 +0x67C9 +0x67CA +0x67CB +0x67CC +0x67CD +0x67CE +0x67CF +0x67D0 ij +0x67D1 +0x67D2 +0x67D3 Ⱦ +0x67D4 +0x67D5 +0x67D6 +0x67D7 +0x67D8 +0x67D9 +0x67DA +0x67DB +0x67DC +0x67DD +0x67DE +0x67DF +0x67E0 +0x67E1 +0x67E2 +0x67E3 +0x67E4 +0x67E5 +0x67E6 +0x67E7 +0x67E8 +0x67E9 +0x67EA +0x67EB +0x67EC +0x67ED +0x67EE +0x67EF +0x67F0 +0x67F1 +0x67F2 +0x67F3 +0x67F4 +0x67F5 +0x67F6 +0x67F7 +0x67F8 +0x67F9 +0x67FA +0x67FB +0x67FC +0x67FD +0x67FE +0x67FF +0x6800 +0x6801 +0x6802 +0x6803 +0x6804 +0x6805 դ +0x6806 +0x6807 +0x6808 ջ +0x6809 +0x680A +0x680B +0x680C +0x680D +0x680E +0x680F +0x6810 +0x6811 +0x6812 +0x6813 ˨ +0x6814 +0x6815 +0x6816 +0x6817 +0x6818 +0x6819 +0x681A +0x681B +0x681C +0x681D +0x681E +0x681F +0x6820 +0x6821 У +0x6822 +0x6823 +0x6824 +0x6825 +0x6826 +0x6827 +0x6828 +0x6829 +0x682A +0x682B +0x682C +0x682D +0x682E +0x682F +0x6830 +0x6831 +0x6832 +0x6833 +0x6834 +0x6835 +0x6836 +0x6837 +0x6838 +0x6839 +0x683A +0x683B +0x683C +0x683D +0x683E +0x683F +0x6840 +0x6841 +0x6842 +0x6843 +0x6844 +0x6845 Φ +0x6846 +0x6847 +0x6848 +0x6849 +0x684A +0x684B +0x684C +0x684D +0x684E +0x684F +0x6850 ͩ +0x6851 ɣ +0x6852 +0x6853 +0x6854 +0x6855 +0x6856 +0x6857 +0x6858 +0x6859 +0x685A +0x685B +0x685C @ +0x685D A +0x685E B +0x685F C +0x6860 +0x6861 +0x6862 +0x6863 +0x6864 +0x6865 +0x6866 +0x6867 +0x6868 +0x6869 ׮ +0x686A D +0x686B +0x686C E +0x686D F +0x686E G +0x686F H +0x6870 I +0x6871 J +0x6872 K +0x6873 L +0x6874 +0x6875 M +0x6876 Ͱ +0x6877 +0x6878 N +0x6879 O +0x687A P +0x687B Q +0x687C R +0x687D S +0x687E T +0x687F U +0x6880 V +0x6881 +0x6882 W +0x6883 +0x6884 X +0x6885 ÷ +0x6886 +0x6887 Y +0x6888 Z +0x6889 [ +0x688A \ +0x688B ] +0x688C ^ +0x688D _ +0x688E ` +0x688F +0x6890 a +0x6891 b +0x6892 c +0x6893 +0x6894 d +0x6895 e +0x6896 f +0x6897 +0x6898 g +0x6899 h +0x689A i +0x689B j +0x689C k +0x689D l +0x689E m +0x689F n +0x68A0 o +0x68A1 p +0x68A2 +0x68A3 q +0x68A4 r +0x68A5 s +0x68A6 +0x68A7 +0x68A8 +0x68A9 t +0x68AA u +0x68AB v +0x68AC w +0x68AD +0x68AE x +0x68AF +0x68B0 е +0x68B1 y +0x68B2 z +0x68B3 +0x68B4 { +0x68B5 +0x68B6 | +0x68B7 } +0x68B8 ~ +0x68B9 +0x68BA +0x68BB +0x68BC +0x68BD +0x68BE +0x68BF +0x68C0 +0x68C1 +0x68C2 +0x68C3 +0x68C4 +0x68C5 +0x68C6 +0x68C7 +0x68C8 +0x68C9 +0x68CA +0x68CB +0x68CC +0x68CD +0x68CE +0x68CF +0x68D0 +0x68D1 +0x68D2 +0x68D3 +0x68D4 +0x68D5 +0x68D6 +0x68D7 +0x68D8 +0x68D9 +0x68DA +0x68DB +0x68DC +0x68DD +0x68DE +0x68DF +0x68E0 +0x68E1 +0x68E2 +0x68E3 +0x68E4 +0x68E5 +0x68E6 +0x68E7 +0x68E8 +0x68E9 +0x68EA +0x68EB +0x68EC +0x68ED +0x68EE ɭ +0x68EF +0x68F0 +0x68F1 +0x68F2 +0x68F3 +0x68F4 +0x68F5 +0x68F6 +0x68F7 +0x68F8 +0x68F9 +0x68FA +0x68FB +0x68FC +0x68FD +0x68FE +0x68FF +0x6900 +0x6901 +0x6902 +0x6903 +0x6904 +0x6905 +0x6906 +0x6907 +0x6908 +0x6909 +0x690A +0x690B +0x690C +0x690D ֲ +0x690E ׵ +0x690F +0x6910 +0x6911 +0x6912 +0x6913 +0x6914 +0x6915 +0x6916 +0x6917 +0x6918 +0x6919 +0x691A +0x691B +0x691C +0x691D +0x691E +0x691F +0x6920 +0x6921 +0x6922 +0x6923 +0x6924 +0x6925 +0x6926 +0x6927 +0x6928 +0x6929 +0x692A +0x692B +0x692C +0x692D +0x692E +0x692F +0x6930 Ҭ +0x6931 +0x6932 +0x6933 +0x6934 +0x6935 +0x6936 +0x6937 +0x6938 +0x6939 +0x693A +0x693B +0x693C +0x693D +0x693E +0x693F +0x6940 +0x6941 +0x6942 +0x6943 +0x6944 +0x6945 +0x6946 +0x6947 +0x6948 +0x6949 +0x694A +0x694B +0x694C +0x694D +0x694E +0x694F +0x6950 +0x6951 +0x6952 +0x6953 +0x6954 Ш +0x6955 +0x6956 +0x6957 +0x6958 +0x6959 +0x695A +0x695B +0x695C +0x695D +0x695E +0x695F +0x6960 +0x6961 @ +0x6962 A +0x6963 +0x6964 B +0x6965 C +0x6966 +0x6967 D +0x6968 E +0x6969 F +0x696A G +0x696B +0x696C H +0x696D I +0x696E +0x696F J +0x6970 K +0x6971 +0x6972 L +0x6973 M +0x6974 N +0x6975 O +0x6976 P +0x6977 +0x6978 +0x6979 +0x697A Q +0x697B R +0x697C ¥ +0x697D S +0x697E T +0x697F U +0x6980 +0x6981 V +0x6982 +0x6983 W +0x6984 +0x6985 X +0x6986 +0x6987 +0x6988 +0x6989 +0x698A Y +0x698B Z +0x698C [ +0x698D +0x698E \ +0x698F ] +0x6990 ^ +0x6991 _ +0x6992 ` +0x6993 a +0x6994 +0x6995 +0x6996 b +0x6997 c +0x6998 +0x6999 d +0x699A e +0x699B +0x699C +0x699D f +0x699E g +0x699F h +0x69A0 i +0x69A1 j +0x69A2 k +0x69A3 l +0x69A4 m +0x69A5 n +0x69A6 o +0x69A7 +0x69A8 ե +0x69A9 p +0x69AA q +0x69AB +0x69AC r +0x69AD +0x69AE s +0x69AF t +0x69B0 u +0x69B1 +0x69B2 v +0x69B3 w +0x69B4 +0x69B5 x +0x69B6 y +0x69B7 ȶ +0x69B8 z +0x69B9 { +0x69BA | +0x69BB +0x69BC } +0x69BD ~ +0x69BE +0x69BF +0x69C0 +0x69C1 +0x69C2 +0x69C3 +0x69C4 +0x69C5 +0x69C6 +0x69C7 +0x69C8 +0x69C9 +0x69CA +0x69CB +0x69CC +0x69CD +0x69CE +0x69CF +0x69D0 +0x69D1 +0x69D2 +0x69D3 +0x69D4 +0x69D5 +0x69D6 +0x69D7 +0x69D8 +0x69D9 +0x69DA +0x69DB +0x69DC +0x69DD +0x69DE +0x69DF +0x69E0 +0x69E1 +0x69E2 +0x69E3 +0x69E4 +0x69E5 +0x69E6 +0x69E7 +0x69E8 +0x69E9 +0x69EA +0x69EB +0x69EC +0x69ED +0x69EE +0x69EF +0x69F0 +0x69F1 +0x69F2 +0x69F3 +0x69F4 +0x69F5 +0x69F6 +0x69F7 +0x69F8 +0x69F9 +0x69FA +0x69FB +0x69FC +0x69FD +0x69FE +0x69FF +0x6A00 +0x6A01 +0x6A02 +0x6A03 +0x6A04 +0x6A05 +0x6A06 +0x6A07 +0x6A08 +0x6A09 +0x6A0A +0x6A0B +0x6A0C +0x6A0D +0x6A0E +0x6A0F +0x6A10 +0x6A11 +0x6A12 +0x6A13 +0x6A14 +0x6A15 +0x6A16 +0x6A17 +0x6A18 +0x6A19 +0x6A1A +0x6A1B +0x6A1C +0x6A1D +0x6A1E +0x6A1F +0x6A20 +0x6A21 ģ +0x6A22 +0x6A23 +0x6A24 +0x6A25 +0x6A26 +0x6A27 +0x6A28 +0x6A29 +0x6A2A +0x6A2B +0x6A2C +0x6A2D +0x6A2E +0x6A2F +0x6A30 +0x6A31 ӣ +0x6A32 +0x6A33 +0x6A34 +0x6A35 +0x6A36 +0x6A37 +0x6A38 +0x6A39 +0x6A3A +0x6A3B +0x6A3C +0x6A3D +0x6A3E +0x6A3F +0x6A40 +0x6A41 +0x6A42 +0x6A43 +0x6A44 +0x6A45 +0x6A46 +0x6A47 +0x6A48 +0x6A49 +0x6A4A +0x6A4B +0x6A4C +0x6A4D +0x6A4E +0x6A4F +0x6A50 +0x6A51 +0x6A52 +0x6A53 +0x6A54 +0x6A55 +0x6A56 +0x6A57 +0x6A58 +0x6A59 +0x6A5A +0x6A5B +0x6A5C @ +0x6A5D A +0x6A5E B +0x6A5F C +0x6A60 D +0x6A61 +0x6A62 E +0x6A63 F +0x6A64 G +0x6A65 +0x6A66 H +0x6A67 I +0x6A68 J +0x6A69 K +0x6A6A L +0x6A6B M +0x6A6C N +0x6A6D O +0x6A6E P +0x6A6F Q +0x6A70 R +0x6A71 +0x6A72 S +0x6A73 T +0x6A74 U +0x6A75 V +0x6A76 W +0x6A77 X +0x6A78 Y +0x6A79 +0x6A7A Z +0x6A7B [ +0x6A7C +0x6A7D \ +0x6A7E ] +0x6A7F ^ +0x6A80 ̴ +0x6A81 _ +0x6A82 ` +0x6A83 a +0x6A84 ϭ +0x6A85 b +0x6A86 c +0x6A87 d +0x6A88 e +0x6A89 f +0x6A8A g +0x6A8B h +0x6A8C i +0x6A8D j +0x6A8E +0x6A8F k +0x6A90 +0x6A91 +0x6A92 l +0x6A93 m +0x6A94 n +0x6A95 o +0x6A96 p +0x6A97 +0x6A98 q +0x6A99 r +0x6A9A s +0x6A9B t +0x6A9C u +0x6A9D v +0x6A9E w +0x6A9F x +0x6AA0 +0x6AA1 y +0x6AA2 z +0x6AA3 { +0x6AA4 | +0x6AA5 } +0x6AA6 ~ +0x6AA7 +0x6AA8 +0x6AA9 +0x6AAA +0x6AAB +0x6AAC +0x6AAD +0x6AAE +0x6AAF +0x6AB0 +0x6AB1 +0x6AB2 +0x6AB3 +0x6AB4 +0x6AB5 +0x6AB6 +0x6AB7 +0x6AB8 +0x6AB9 +0x6ABA +0x6ABB +0x6ABC +0x6ABD +0x6ABE +0x6ABF +0x6AC0 +0x6AC1 +0x6AC2 +0x6AC3 +0x6AC4 +0x6AC5 +0x6AC6 +0x6AC7 +0x6AC8 +0x6AC9 +0x6ACA +0x6ACB +0x6ACC +0x6ACD +0x6ACE +0x6ACF +0x6AD0 +0x6AD1 +0x6AD2 +0x6AD3 +0x6AD4 +0x6AD5 +0x6AD6 +0x6AD7 +0x6AD8 +0x6AD9 +0x6ADA +0x6ADB +0x6ADC +0x6ADD +0x6ADE +0x6ADF +0x6AE0 +0x6AE1 +0x6AE2 +0x6AE3 +0x6AE4 +0x6AE5 +0x6AE6 +0x6AE7 +0x6AE8 +0x6AE9 +0x6AEA +0x6AEB +0x6AEC +0x6AED +0x6AEE +0x6AEF +0x6AF0 +0x6AF1 +0x6AF2 +0x6AF3 +0x6AF4 +0x6AF5 +0x6AF6 +0x6AF7 +0x6AF8 +0x6AF9 +0x6AFA +0x6AFB +0x6AFC +0x6AFD +0x6AFE +0x6AFF +0x6B00 +0x6B01 +0x6B02 +0x6B03 +0x6B04 +0x6B05 +0x6B06 +0x6B07 +0x6B08 +0x6B09 +0x6B0A +0x6B0B +0x6B0C +0x6B0D +0x6B0E +0x6B0F +0x6B10 +0x6B11 +0x6B12 +0x6B13 +0x6B14 +0x6B15 +0x6B16 +0x6B17 +0x6B18 +0x6B19 +0x6B1A +0x6B1B +0x6B1C +0x6B1D +0x6B1E +0x6B1F +0x6B20 Ƿ +0x6B21 +0x6B22 +0x6B23 +0x6B24 +0x6B25 +0x6B26 +0x6B27 ŷ +0x6B28 +0x6B29 +0x6B2A +0x6B2B +0x6B2C +0x6B2D +0x6B2E +0x6B2F @ +0x6B30 A +0x6B31 B +0x6B32 +0x6B33 C +0x6B34 D +0x6B35 E +0x6B36 F +0x6B37 +0x6B38 G +0x6B39 +0x6B3A +0x6B3B H +0x6B3C I +0x6B3D J +0x6B3E +0x6B3F K +0x6B40 L +0x6B41 M +0x6B42 N +0x6B43 +0x6B44 O +0x6B45 P +0x6B46 +0x6B47 Ъ +0x6B48 Q +0x6B49 Ǹ +0x6B4A R +0x6B4B S +0x6B4C +0x6B4D T +0x6B4E U +0x6B4F V +0x6B50 W +0x6B51 X +0x6B52 Y +0x6B53 Z +0x6B54 [ +0x6B55 \ +0x6B56 ] +0x6B57 ^ +0x6B58 _ +0x6B59 +0x6B5A ` +0x6B5B a +0x6B5C b +0x6B5D c +0x6B5E d +0x6B5F e +0x6B60 f +0x6B61 g +0x6B62 ֹ +0x6B63 +0x6B64 +0x6B65 +0x6B66 +0x6B67 +0x6B68 h +0x6B69 i +0x6B6A +0x6B6B j +0x6B6C k +0x6B6D l +0x6B6E m +0x6B6F n +0x6B70 o +0x6B71 p +0x6B72 q +0x6B73 r +0x6B74 s +0x6B75 t +0x6B76 u +0x6B77 v +0x6B78 w +0x6B79 +0x6B7A x +0x6B7B +0x6B7C +0x6B7D y +0x6B7E z +0x6B7F { +0x6B80 | +0x6B81 +0x6B82 +0x6B83 +0x6B84 +0x6B85 } +0x6B86 +0x6B87 +0x6B88 ~ +0x6B89 ѳ +0x6B8A +0x6B8B +0x6B8C +0x6B8D +0x6B8E +0x6B8F +0x6B90 +0x6B91 +0x6B92 +0x6B93 +0x6B94 +0x6B95 +0x6B96 ֳ +0x6B97 +0x6B98 +0x6B99 +0x6B9A +0x6B9B +0x6B9C +0x6B9D +0x6B9E +0x6B9F +0x6BA0 +0x6BA1 +0x6BA2 +0x6BA3 +0x6BA4 +0x6BA5 +0x6BA6 +0x6BA7 +0x6BA8 +0x6BA9 +0x6BAA +0x6BAB +0x6BAC +0x6BAD +0x6BAE +0x6BAF +0x6BB0 +0x6BB1 +0x6BB2 +0x6BB3 +0x6BB4 Ź +0x6BB5 +0x6BB6 +0x6BB7 +0x6BB8 +0x6BB9 +0x6BBA +0x6BBB +0x6BBC +0x6BBD +0x6BBE +0x6BBF +0x6BC0 +0x6BC1 +0x6BC2 +0x6BC3 +0x6BC4 +0x6BC5 +0x6BC6 +0x6BC7 +0x6BC8 +0x6BC9 +0x6BCA +0x6BCB +0x6BCC +0x6BCD ĸ +0x6BCE +0x6BCF ÿ +0x6BD0 +0x6BD1 +0x6BD2 +0x6BD3 ع +0x6BD4 +0x6BD5 +0x6BD6 +0x6BD7 +0x6BD8 +0x6BD9 +0x6BDA +0x6BDB ë +0x6BDC +0x6BDD +0x6BDE +0x6BDF +0x6BE0 +0x6BE1 ձ +0x6BE2 +0x6BE3 +0x6BE4 +0x6BE5 +0x6BE6 +0x6BE7 +0x6BE8 +0x6BE9 +0x6BEA +0x6BEB +0x6BEC +0x6BED +0x6BEE +0x6BEF ̺ +0x6BF0 +0x6BF1 +0x6BF2 +0x6BF3 +0x6BF4 +0x6BF5 +0x6BF6 +0x6BF7 +0x6BF8 +0x6BF9 +0x6BFA +0x6BFB +0x6BFC +0x6BFD +0x6BFE +0x6BFF +0x6C00 +0x6C01 +0x6C02 +0x6C03 +0x6C04 +0x6C05 +0x6C06 +0x6C07 +0x6C08 +0x6C09 +0x6C0A +0x6C0B +0x6C0C +0x6C0D +0x6C0E +0x6C0F +0x6C10 ص +0x6C11 +0x6C12 +0x6C13 å +0x6C14 +0x6C15 +0x6C16 +0x6C17 +0x6C18 +0x6C19 +0x6C1A +0x6C1B +0x6C1C +0x6C1D +0x6C1E +0x6C1F +0x6C20 +0x6C21 +0x6C22 +0x6C23 +0x6C24 +0x6C25 +0x6C26 +0x6C27 +0x6C28 +0x6C29 +0x6C2A +0x6C2B +0x6C2C +0x6C2D +0x6C2E +0x6C2F +0x6C30 +0x6C31 +0x6C32 +0x6C33 +0x6C34 ˮ +0x6C35 +0x6C36 +0x6C37 +0x6C38 +0x6C39 +0x6C3A +0x6C3B +0x6C3C +0x6C3D +0x6C3E +0x6C3F +0x6C40 ͡ +0x6C41 ֭ +0x6C42 +0x6C43 +0x6C44 +0x6C45 +0x6C46 +0x6C47 +0x6C48 +0x6C49 +0x6C4A +0x6C4B +0x6C4C +0x6C4D +0x6C4E +0x6C4F +0x6C50 ϫ +0x6C51 +0x6C52 +0x6C53 +0x6C54 +0x6C55 +0x6C56 +0x6C57 +0x6C58 +0x6C59 @ +0x6C5A A +0x6C5B Ѵ +0x6C5C +0x6C5D +0x6C5E +0x6C5F +0x6C60 +0x6C61 +0x6C62 B +0x6C63 C +0x6C64 +0x6C65 D +0x6C66 E +0x6C67 F +0x6C68 +0x6C69 +0x6C6A +0x6C6B G +0x6C6C H +0x6C6D I +0x6C6E J +0x6C6F K +0x6C70 ̭ +0x6C71 L +0x6C72 +0x6C73 M +0x6C74 +0x6C75 N +0x6C76 +0x6C77 O +0x6C78 P +0x6C79 +0x6C7A Q +0x6C7B R +0x6C7C S +0x6C7D +0x6C7E +0x6C7F T +0x6C80 U +0x6C81 +0x6C82 +0x6C83 +0x6C84 V +0x6C85 +0x6C86 +0x6C87 W +0x6C88 +0x6C89 +0x6C8A X +0x6C8B Y +0x6C8C +0x6C8D Z +0x6C8E [ +0x6C8F +0x6C90 +0x6C91 \ +0x6C92 ] +0x6C93 +0x6C94 +0x6C95 ^ +0x6C96 _ +0x6C97 ` +0x6C98 a +0x6C99 ɳ +0x6C9A b +0x6C9B +0x6C9C c +0x6C9D d +0x6C9E e +0x6C9F +0x6CA0 f +0x6CA1 û +0x6CA2 g +0x6CA3 +0x6CA4 Ž +0x6CA5 +0x6CA6 +0x6CA7 +0x6CA8 h +0x6CA9 +0x6CAA +0x6CAB ĭ +0x6CAC i +0x6CAD +0x6CAE +0x6CAF j +0x6CB0 k +0x6CB1 +0x6CB2 +0x6CB3 +0x6CB4 l +0x6CB5 m +0x6CB6 n +0x6CB7 o +0x6CB8 +0x6CB9 +0x6CBA p +0x6CBB +0x6CBC +0x6CBD +0x6CBE մ +0x6CBF +0x6CC0 q +0x6CC1 r +0x6CC2 s +0x6CC3 t +0x6CC4 й +0x6CC5 +0x6CC6 u +0x6CC7 v +0x6CC8 w +0x6CC9 Ȫ +0x6CCA +0x6CCB x +0x6CCC +0x6CCD y +0x6CCE z +0x6CCF { +0x6CD0 +0x6CD1 | +0x6CD2 } +0x6CD3 +0x6CD4 +0x6CD5 +0x6CD6 +0x6CD7 +0x6CD8 ~ +0x6CD9 +0x6CDA +0x6CDB +0x6CDC +0x6CDD +0x6CDE Ţ +0x6CDF +0x6CE0 +0x6CE1 +0x6CE2 +0x6CE3 +0x6CE4 +0x6CE5 +0x6CE6 +0x6CE7 +0x6CE8 ע +0x6CE9 +0x6CEA +0x6CEB +0x6CEC +0x6CED +0x6CEE +0x6CEF +0x6CF0 ̩ +0x6CF1 +0x6CF2 +0x6CF3 Ӿ +0x6CF4 +0x6CF5 +0x6CF6 +0x6CF7 +0x6CF8 +0x6CF9 +0x6CFA +0x6CFB к +0x6CFC +0x6CFD +0x6CFE +0x6CFF +0x6D00 +0x6D01 +0x6D02 +0x6D03 +0x6D04 +0x6D05 +0x6D06 +0x6D07 +0x6D08 +0x6D09 +0x6D0A +0x6D0B +0x6D0C +0x6D0D +0x6D0E +0x6D0F +0x6D10 +0x6D11 +0x6D12 +0x6D13 +0x6D14 +0x6D15 +0x6D16 +0x6D17 ϴ +0x6D18 +0x6D19 +0x6D1A +0x6D1B +0x6D1C +0x6D1D +0x6D1E +0x6D1F +0x6D20 +0x6D21 +0x6D22 +0x6D23 +0x6D24 +0x6D25 +0x6D26 +0x6D27 +0x6D28 +0x6D29 +0x6D2A +0x6D2B +0x6D2C +0x6D2D +0x6D2E +0x6D2F +0x6D30 +0x6D31 +0x6D32 +0x6D33 +0x6D34 +0x6D35 +0x6D36 +0x6D37 +0x6D38 +0x6D39 +0x6D3A +0x6D3B +0x6D3C +0x6D3D Ǣ +0x6D3E +0x6D3F +0x6D40 +0x6D41 +0x6D42 +0x6D43 +0x6D44 +0x6D45 dz +0x6D46 +0x6D47 +0x6D48 +0x6D49 +0x6D4A +0x6D4B +0x6D4C +0x6D4D +0x6D4E +0x6D4F +0x6D50 +0x6D51 +0x6D52 +0x6D53 Ũ +0x6D54 +0x6D55 +0x6D56 +0x6D57 +0x6D58 +0x6D59 +0x6D5A +0x6D5B +0x6D5C +0x6D5D +0x6D5E +0x6D5F +0x6D60 +0x6D61 +0x6D62 +0x6D63 +0x6D64 +0x6D65 +0x6D66 +0x6D67 +0x6D68 +0x6D69 +0x6D6A +0x6D6B +0x6D6C +0x6D6D +0x6D6E +0x6D6F +0x6D70 +0x6D71 +0x6D72 +0x6D73 +0x6D74 ԡ +0x6D75 +0x6D76 +0x6D77 +0x6D78 +0x6D79 +0x6D7A +0x6D7B +0x6D7C +0x6D7D +0x6D7E +0x6D7F +0x6D80 +0x6D81 +0x6D82 Ϳ +0x6D83 +0x6D84 +0x6D85 +0x6D86 +0x6D87 +0x6D88 +0x6D89 +0x6D8A +0x6D8B +0x6D8C ӿ +0x6D8D +0x6D8E +0x6D8F +0x6D90 +0x6D91 +0x6D92 +0x6D93 +0x6D94 +0x6D95 +0x6D96 +0x6D97 +0x6D98 +0x6D99 +0x6D9A +0x6D9B +0x6D9C +0x6D9D +0x6D9E +0x6D9F +0x6DA0 +0x6DA1 +0x6DA2 +0x6DA3 +0x6DA4 +0x6DA5 +0x6DA6 +0x6DA7 +0x6DA8 +0x6DA9 ɬ +0x6DAA +0x6DAB +0x6DAC +0x6DAD +0x6DAE +0x6DAF +0x6DB0 +0x6DB1 +0x6DB2 Һ +0x6DB3 +0x6DB4 +0x6DB5 +0x6DB6 +0x6DB7 +0x6DB8 +0x6DB9 +0x6DBA +0x6DBB +0x6DBC +0x6DBD +0x6DBE +0x6DBF +0x6DC0 +0x6DC1 +0x6DC2 +0x6DC3 +0x6DC4 +0x6DC5 +0x6DC6 +0x6DC7 +0x6DC8 +0x6DC9 +0x6DCA +0x6DCB +0x6DCC +0x6DCD @ +0x6DCE A +0x6DCF B +0x6DD0 C +0x6DD1 +0x6DD2 D +0x6DD3 E +0x6DD4 F +0x6DD5 G +0x6DD6 +0x6DD7 H +0x6DD8 +0x6DD9 +0x6DDA I +0x6DDB J +0x6DDC K +0x6DDD +0x6DDE +0x6DDF L +0x6DE0 +0x6DE1 +0x6DE2 M +0x6DE3 N +0x6DE4 +0x6DE5 O +0x6DE6 +0x6DE7 P +0x6DE8 Q +0x6DE9 R +0x6DEA S +0x6DEB +0x6DEC +0x6DED T +0x6DEE +0x6DEF U +0x6DF0 V +0x6DF1 +0x6DF2 W +0x6DF3 +0x6DF4 X +0x6DF5 Y +0x6DF6 Z +0x6DF7 +0x6DF8 [ +0x6DF9 +0x6DFA \ +0x6DFB +0x6DFC +0x6DFD ] +0x6DFE ^ +0x6DFF _ +0x6E00 ` +0x6E01 a +0x6E02 b +0x6E03 c +0x6E04 d +0x6E05 +0x6E06 e +0x6E07 f +0x6E08 g +0x6E09 h +0x6E0A Ԩ +0x6E0B i +0x6E0C +0x6E0D +0x6E0E +0x6E0F j +0x6E10 +0x6E11 +0x6E12 k +0x6E13 l +0x6E14 +0x6E15 m +0x6E16 +0x6E17 +0x6E18 n +0x6E19 o +0x6E1A +0x6E1B p +0x6E1C q +0x6E1D +0x6E1E r +0x6E1F s +0x6E20 +0x6E21 +0x6E22 t +0x6E23 +0x6E24 +0x6E25 +0x6E26 u +0x6E27 v +0x6E28 w +0x6E29 +0x6E2A x +0x6E2B +0x6E2C y +0x6E2D μ +0x6E2E z +0x6E2F +0x6E30 { +0x6E31 | +0x6E32 +0x6E33 } +0x6E34 +0x6E35 ~ +0x6E36 +0x6E37 +0x6E38 +0x6E39 +0x6E3A +0x6E3B +0x6E3C +0x6E3D +0x6E3E +0x6E3F +0x6E40 +0x6E41 +0x6E42 +0x6E43 +0x6E44 +0x6E45 +0x6E46 +0x6E47 +0x6E48 +0x6E49 +0x6E4A +0x6E4B +0x6E4C +0x6E4D +0x6E4E +0x6E4F +0x6E50 +0x6E51 +0x6E52 +0x6E53 +0x6E54 +0x6E55 +0x6E56 +0x6E57 +0x6E58 +0x6E59 +0x6E5A +0x6E5B տ +0x6E5C +0x6E5D +0x6E5E +0x6E5F +0x6E60 +0x6E61 +0x6E62 +0x6E63 +0x6E64 +0x6E65 +0x6E66 +0x6E67 +0x6E68 +0x6E69 +0x6E6A +0x6E6B +0x6E6C +0x6E6D +0x6E6E +0x6E6F +0x6E70 +0x6E71 +0x6E72 +0x6E73 +0x6E74 +0x6E75 +0x6E76 +0x6E77 +0x6E78 +0x6E79 +0x6E7A +0x6E7B +0x6E7C +0x6E7D +0x6E7E +0x6E7F ʪ +0x6E80 +0x6E81 +0x6E82 +0x6E83 +0x6E84 +0x6E85 +0x6E86 +0x6E87 +0x6E88 +0x6E89 +0x6E8A +0x6E8B +0x6E8C +0x6E8D +0x6E8E +0x6E8F +0x6E90 Դ +0x6E91 +0x6E92 +0x6E93 +0x6E94 +0x6E95 +0x6E96 +0x6E97 +0x6E98 +0x6E99 +0x6E9A +0x6E9B +0x6E9C +0x6E9D +0x6E9E +0x6E9F +0x6EA0 +0x6EA1 +0x6EA2 +0x6EA3 +0x6EA4 +0x6EA5 +0x6EA6 +0x6EA7 +0x6EA8 +0x6EA9 +0x6EAA Ϫ +0x6EAB +0x6EAC +0x6EAD +0x6EAE +0x6EAF +0x6EB0 +0x6EB1 +0x6EB2 +0x6EB3 +0x6EB4 +0x6EB5 +0x6EB6 +0x6EB7 +0x6EB8 +0x6EB9 +0x6EBA +0x6EBB +0x6EBC +0x6EBD +0x6EBE +0x6EBF +0x6EC0 +0x6EC1 +0x6EC2 +0x6EC3 +0x6EC4 +0x6EC5 +0x6EC6 +0x6EC7 +0x6EC8 +0x6EC9 +0x6ECA +0x6ECB +0x6ECC +0x6ECD +0x6ECE +0x6ECF +0x6ED0 +0x6ED1 +0x6ED2 +0x6ED3 +0x6ED4 +0x6ED5 +0x6ED6 +0x6ED7 +0x6ED8 +0x6ED9 +0x6EDA +0x6EDB +0x6EDC +0x6EDD +0x6EDE +0x6EDF +0x6EE0 +0x6EE1 +0x6EE2 +0x6EE3 +0x6EE4 +0x6EE5 +0x6EE6 +0x6EE7 +0x6EE8 +0x6EE9 ̲ +0x6EEA +0x6EEB +0x6EEC +0x6EED +0x6EEE +0x6EEF +0x6EF0 @ +0x6EF1 A +0x6EF2 B +0x6EF3 C +0x6EF4 +0x6EF5 D +0x6EF6 E +0x6EF7 F +0x6EF8 G +0x6EF9 +0x6EFA H +0x6EFB I +0x6EFC J +0x6EFD K +0x6EFE L +0x6EFF M +0x6F00 N +0x6F01 O +0x6F02 Ư +0x6F03 P +0x6F04 Q +0x6F05 R +0x6F06 +0x6F07 S +0x6F08 T +0x6F09 +0x6F0A U +0x6F0B V +0x6F0C W +0x6F0D X +0x6F0E Y +0x6F0F © +0x6F10 Z +0x6F11 [ +0x6F12 \ +0x6F13 +0x6F14 +0x6F15 +0x6F16 ] +0x6F17 ^ +0x6F18 _ +0x6F19 ` +0x6F1A a +0x6F1B b +0x6F1C c +0x6F1D d +0x6F1E e +0x6F1F f +0x6F20 Į +0x6F21 g +0x6F22 h +0x6F23 i +0x6F24 +0x6F25 j +0x6F26 k +0x6F27 l +0x6F28 m +0x6F29 +0x6F2A +0x6F2B +0x6F2C n +0x6F2D +0x6F2E o +0x6F2F +0x6F30 p +0x6F31 +0x6F32 q +0x6F33 +0x6F34 r +0x6F35 s +0x6F36 +0x6F37 t +0x6F38 u +0x6F39 v +0x6F3A w +0x6F3B x +0x6F3C y +0x6F3D z +0x6F3E +0x6F3F { +0x6F40 | +0x6F41 } +0x6F42 ~ +0x6F43 +0x6F44 +0x6F45 +0x6F46 +0x6F47 +0x6F48 +0x6F49 +0x6F4A +0x6F4B +0x6F4C +0x6F4D Ϋ +0x6F4E +0x6F4F +0x6F50 +0x6F51 +0x6F52 +0x6F53 +0x6F54 +0x6F55 +0x6F56 +0x6F57 +0x6F58 +0x6F59 +0x6F5A +0x6F5B +0x6F5C DZ +0x6F5D +0x6F5E º +0x6F5F +0x6F60 +0x6F61 +0x6F62 +0x6F63 +0x6F64 +0x6F65 +0x6F66 +0x6F67 +0x6F68 +0x6F69 +0x6F6A +0x6F6B +0x6F6C +0x6F6D ̶ +0x6F6E +0x6F6F +0x6F70 +0x6F71 +0x6F72 +0x6F73 +0x6F74 +0x6F75 +0x6F76 +0x6F77 +0x6F78 +0x6F79 +0x6F7A +0x6F7B +0x6F7C +0x6F7D +0x6F7E +0x6F7F +0x6F80 +0x6F81 +0x6F82 +0x6F83 +0x6F84 +0x6F85 +0x6F86 +0x6F87 +0x6F88 +0x6F89 +0x6F8A +0x6F8B +0x6F8C +0x6F8D +0x6F8E +0x6F8F +0x6F90 +0x6F91 +0x6F92 +0x6F93 +0x6F94 +0x6F95 +0x6F96 +0x6F97 +0x6F98 +0x6F99 +0x6F9A +0x6F9B +0x6F9C +0x6F9D +0x6F9E +0x6F9F +0x6FA0 +0x6FA1 +0x6FA2 +0x6FA3 +0x6FA4 +0x6FA5 +0x6FA6 +0x6FA7 +0x6FA8 +0x6FA9 +0x6FAA +0x6FAB +0x6FAC +0x6FAD +0x6FAE +0x6FAF +0x6FB0 +0x6FB1 +0x6FB2 +0x6FB3 +0x6FB4 +0x6FB5 +0x6FB6 +0x6FB7 +0x6FB8 +0x6FB9 +0x6FBA +0x6FBB +0x6FBC +0x6FBD +0x6FBE +0x6FBF +0x6FC0 +0x6FC1 +0x6FC2 +0x6FC3 +0x6FC4 +0x6FC5 +0x6FC6 +0x6FC7 +0x6FC8 +0x6FC9 +0x6FCA +0x6FCB +0x6FCC +0x6FCD +0x6FCE +0x6FCF +0x6FD0 +0x6FD1 +0x6FD2 +0x6FD3 +0x6FD4 +0x6FD5 +0x6FD6 +0x6FD7 +0x6FD8 +0x6FD9 +0x6FDA +0x6FDB +0x6FDC +0x6FDD +0x6FDE +0x6FDF +0x6FE0 +0x6FE1 +0x6FE2 +0x6FE3 +0x6FE4 +0x6FE5 +0x6FE6 @ +0x6FE7 A +0x6FE8 B +0x6FE9 C +0x6FEA D +0x6FEB E +0x6FEC F +0x6FED G +0x6FEE +0x6FEF +0x6FF0 H +0x6FF1 I +0x6FF2 J +0x6FF3 K +0x6FF4 L +0x6FF5 M +0x6FF6 N +0x6FF7 O +0x6FF8 P +0x6FF9 Q +0x6FFA R +0x6FFB S +0x6FFC T +0x6FFD U +0x6FFE V +0x6FFF W +0x7000 X +0x7001 Y +0x7002 Z +0x7003 [ +0x7004 \ +0x7005 ] +0x7006 ^ +0x7007 _ +0x7008 ` +0x7009 a +0x700A b +0x700B c +0x700C d +0x700D e +0x700E f +0x700F g +0x7010 h +0x7011 +0x7012 i +0x7013 j +0x7014 k +0x7015 l +0x7016 m +0x7017 n +0x7018 o +0x7019 p +0x701A +0x701B +0x701C q +0x701D r +0x701E s +0x701F t +0x7020 u +0x7021 v +0x7022 w +0x7023 +0x7024 x +0x7025 y +0x7026 z +0x7027 { +0x7028 | +0x7029 } +0x702A ~ +0x702B +0x702C +0x702D +0x702E +0x702F +0x7030 +0x7031 +0x7032 +0x7033 +0x7034 +0x7035 +0x7036 +0x7037 +0x7038 +0x7039 +0x703A +0x703B +0x703C +0x703D +0x703E +0x703F +0x7040 +0x7041 +0x7042 +0x7043 +0x7044 +0x7045 +0x7046 +0x7047 +0x7048 +0x7049 +0x704A +0x704B +0x704C +0x704D +0x704E +0x704F +0x7050 +0x7051 +0x7052 +0x7053 +0x7054 +0x7055 +0x7056 +0x7057 +0x7058 +0x7059 +0x705A +0x705B +0x705C +0x705D +0x705E +0x705F +0x7060 +0x7061 +0x7062 +0x7063 +0x7064 +0x7065 +0x7066 +0x7067 +0x7068 +0x7069 +0x706A +0x706B +0x706C +0x706D +0x706E +0x706F +0x7070 +0x7071 +0x7072 +0x7073 +0x7074 +0x7075 +0x7076 +0x7077 +0x7078 +0x7079 +0x707A +0x707B +0x707C +0x707D +0x707E +0x707F +0x7080 +0x7081 +0x7082 +0x7083 +0x7084 +0x7085 +0x7086 +0x7087 +0x7088 +0x7089 ¯ +0x708A +0x708B +0x708C +0x708D +0x708E +0x708F +0x7090 +0x7091 +0x7092 +0x7093 +0x7094 Ȳ +0x7095 +0x7096 +0x7097 +0x7098 +0x7099 +0x709A +0x709B +0x709C +0x709D +0x709E +0x709F +0x70A0 +0x70A1 +0x70A2 +0x70A3 +0x70A4 +0x70A5 +0x70A6 +0x70A7 +0x70A8 +0x70A9 +0x70AA +0x70AB +0x70AC +0x70AD ̿ +0x70AE +0x70AF +0x70B0 +0x70B1 +0x70B2 +0x70B3 +0x70B4 +0x70B5 +0x70B6 +0x70B7 +0x70B8 ը +0x70B9 +0x70BA +0x70BB +0x70BC +0x70BD +0x70BE +0x70BF +0x70C0 +0x70C1 ˸ +0x70C2 +0x70C3 +0x70C4 +0x70C5 +0x70C6 +0x70C7 +0x70C8 +0x70C9 +0x70CA +0x70CB +0x70CC +0x70CD +0x70CE +0x70CF +0x70D0 +0x70D1 +0x70D2 +0x70D3 +0x70D4 +0x70D5 +0x70D6 +0x70D7 +0x70D8 +0x70D9 +0x70DA +0x70DB +0x70DC @ +0x70DD A +0x70DE B +0x70DF +0x70E0 C +0x70E1 D +0x70E2 E +0x70E3 F +0x70E4 +0x70E5 G +0x70E6 +0x70E7 +0x70E8 +0x70E9 +0x70EA H +0x70EB +0x70EC +0x70ED +0x70EE I +0x70EF ϩ +0x70F0 J +0x70F1 K +0x70F2 L +0x70F3 M +0x70F4 N +0x70F5 O +0x70F6 P +0x70F7 +0x70F8 Q +0x70F9 +0x70FA R +0x70FB S +0x70FC T +0x70FD +0x70FE U +0x70FF V +0x7100 W +0x7101 X +0x7102 Y +0x7103 Z +0x7104 [ +0x7105 \ +0x7106 ] +0x7107 ^ +0x7108 _ +0x7109 +0x710A +0x710B ` +0x710C a +0x710D b +0x710E c +0x710F d +0x7110 +0x7111 e +0x7112 f +0x7113 +0x7114 g +0x7115 +0x7116 +0x7117 h +0x7118 +0x7119 +0x711A +0x711B i +0x711C j +0x711D k +0x711E l +0x711F m +0x7120 n +0x7121 o +0x7122 p +0x7123 q +0x7124 r +0x7125 s +0x7126 +0x7127 t +0x7128 u +0x7129 v +0x712A w +0x712B x +0x712C y +0x712D z +0x712E { +0x712F +0x7130 +0x7131 +0x7132 | +0x7133 } +0x7134 ~ +0x7135 +0x7136 Ȼ +0x7137 +0x7138 +0x7139 +0x713A +0x713B +0x713C +0x713D +0x713E +0x713F +0x7140 +0x7141 +0x7142 +0x7143 +0x7144 +0x7145 +0x7146 +0x7147 +0x7148 +0x7149 +0x714A +0x714B +0x714C +0x714D +0x714E +0x714F +0x7150 +0x7151 +0x7152 +0x7153 +0x7154 +0x7155 +0x7156 +0x7157 +0x7158 +0x7159 +0x715A +0x715B +0x715C +0x715D +0x715E ɷ +0x715F +0x7160 +0x7161 +0x7162 +0x7163 +0x7164 ú +0x7165 +0x7166 +0x7167 +0x7168 +0x7169 +0x716A +0x716B +0x716C +0x716D +0x716E +0x716F +0x7170 +0x7171 +0x7172 +0x7173 +0x7174 +0x7175 +0x7176 +0x7177 +0x7178 +0x7179 +0x717A +0x717B +0x717C +0x717D ɿ +0x717E +0x717F +0x7180 +0x7181 +0x7182 +0x7183 +0x7184 Ϩ +0x7185 +0x7186 +0x7187 +0x7188 +0x7189 +0x718A +0x718B +0x718C +0x718D +0x718E +0x718F Ѭ +0x7190 +0x7191 +0x7192 +0x7193 +0x7194 +0x7195 +0x7196 +0x7197 +0x7198 +0x7199 +0x719A +0x719B +0x719C +0x719D +0x719E +0x719F +0x71A0 +0x71A1 +0x71A2 +0x71A3 +0x71A4 +0x71A5 +0x71A6 +0x71A7 +0x71A8 +0x71A9 +0x71AA +0x71AB +0x71AC +0x71AD +0x71AE +0x71AF +0x71B0 +0x71B1 +0x71B2 +0x71B3 +0x71B4 +0x71B5 +0x71B6 +0x71B7 +0x71B8 +0x71B9 +0x71BA +0x71BB +0x71BC +0x71BD +0x71BE +0x71BF +0x71C0 +0x71C1 +0x71C2 +0x71C3 ȼ +0x71C4 +0x71C5 +0x71C6 +0x71C7 +0x71C8 +0x71C9 +0x71CA +0x71CB +0x71CC +0x71CD +0x71CE +0x71CF +0x71D0 +0x71D1 +0x71D2 +0x71D3 +0x71D4 +0x71D5 +0x71D6 @ +0x71D7 A +0x71D8 B +0x71D9 C +0x71DA D +0x71DB E +0x71DC F +0x71DD G +0x71DE H +0x71DF I +0x71E0 +0x71E1 J +0x71E2 K +0x71E3 L +0x71E4 M +0x71E5 +0x71E6 N +0x71E7 +0x71E8 O +0x71E9 P +0x71EA Q +0x71EB R +0x71EC S +0x71ED T +0x71EE +0x71EF U +0x71F0 V +0x71F1 W +0x71F2 X +0x71F3 Y +0x71F4 Z +0x71F5 [ +0x71F6 \ +0x71F7 ] +0x71F8 ^ +0x71F9 +0x71FA _ +0x71FB ` +0x71FC a +0x71FD b +0x71FE c +0x71FF d +0x7200 e +0x7201 f +0x7202 g +0x7203 h +0x7204 i +0x7205 j +0x7206 +0x7207 k +0x7208 l +0x7209 m +0x720A n +0x720B o +0x720C p +0x720D q +0x720E r +0x720F s +0x7210 t +0x7211 u +0x7212 v +0x7213 w +0x7214 x +0x7215 y +0x7216 z +0x7217 { +0x7218 | +0x7219 } +0x721A ~ +0x721B +0x721C +0x721D +0x721E +0x721F +0x7220 +0x7221 +0x7222 +0x7223 +0x7224 +0x7225 +0x7226 +0x7227 +0x7228 +0x7229 +0x722A צ +0x722B +0x722C +0x722D +0x722E +0x722F +0x7230 +0x7231 +0x7232 +0x7233 +0x7234 +0x7235 +0x7236 +0x7237 ү +0x7238 +0x7239 +0x723A +0x723B س +0x723C +0x723D ˬ +0x723E +0x723F +0x7240 +0x7241 +0x7242 +0x7243 +0x7244 +0x7245 +0x7246 +0x7247 Ƭ +0x7248 +0x7249 +0x724A +0x724B +0x724C +0x724D +0x724E +0x724F +0x7250 +0x7251 +0x7252 +0x7253 +0x7254 +0x7255 +0x7256 +0x7257 +0x7258 +0x7259 +0x725A +0x725B ţ +0x725C +0x725D +0x725E +0x725F IJ +0x7260 +0x7261 ĵ +0x7262 +0x7263 +0x7264 +0x7265 +0x7266 +0x7267 +0x7268 +0x7269 +0x726A +0x726B +0x726C +0x726D +0x726E +0x726F +0x7270 +0x7271 +0x7272 +0x7273 +0x7274 +0x7275 ǣ +0x7276 +0x7277 +0x7278 +0x7279 +0x727A +0x727B +0x727C +0x727D +0x727E +0x727F +0x7280 Ϭ +0x7281 +0x7282 +0x7283 +0x7284 +0x7285 +0x7286 +0x7287 +0x7288 +0x7289 +0x728A +0x728B +0x728C +0x728D +0x728E +0x728F +0x7290 +0x7291 +0x7292 +0x7293 +0x7294 +0x7295 +0x7296 +0x7297 +0x7298 +0x7299 +0x729A +0x729B +0x729C +0x729D +0x729E +0x729F +0x72A0 +0x72A1 +0x72A2 +0x72A3 +0x72A4 +0x72A5 +0x72A6 +0x72A7 +0x72A8 +0x72A9 +0x72AA +0x72AB +0x72AC Ȯ +0x72AD +0x72AE +0x72AF +0x72B0 +0x72B1 +0x72B2 +0x72B3 +0x72B4 +0x72B5 +0x72B6 ״ +0x72B7 +0x72B8 +0x72B9 +0x72BA +0x72BB +0x72BC +0x72BD +0x72BE +0x72BF +0x72C0 +0x72C1 +0x72C2 +0x72C3 +0x72C4 +0x72C5 +0x72C6 +0x72C7 +0x72C8 +0x72C9 +0x72CA +0x72CB +0x72CC +0x72CD +0x72CE +0x72CF +0x72D0 +0x72D1 +0x72D2 +0x72D3 +0x72D4 +0x72D5 +0x72D6 +0x72D7 +0x72D8 +0x72D9 +0x72DA +0x72DB +0x72DC @ +0x72DD A +0x72DE +0x72DF B +0x72E0 +0x72E1 +0x72E2 C +0x72E3 D +0x72E4 E +0x72E5 F +0x72E6 G +0x72E7 H +0x72E8 +0x72E9 +0x72EA I +0x72EB J +0x72EC +0x72ED +0x72EE ʨ +0x72EF +0x72F0 +0x72F1 +0x72F2 +0x72F3 +0x72F4 +0x72F5 K +0x72F6 L +0x72F7 +0x72F8 +0x72F9 M +0x72FA +0x72FB +0x72FC +0x72FD N +0x72FE O +0x72FF P +0x7300 Q +0x7301 +0x7302 R +0x7303 +0x7304 S +0x7305 T +0x7306 U +0x7307 V +0x7308 W +0x7309 X +0x730A +0x730B Y +0x730C Z +0x730D [ +0x730E +0x730F \ +0x7310 ] +0x7311 ^ +0x7312 _ +0x7313 +0x7314 ` +0x7315 +0x7316 +0x7317 +0x7318 a +0x7319 b +0x731A c +0x731B +0x731C +0x731D +0x731E +0x731F d +0x7320 e +0x7321 +0x7322 +0x7323 f +0x7324 g +0x7325 +0x7326 h +0x7327 i +0x7328 j +0x7329 +0x732A +0x732B è +0x732C +0x732D k +0x732E +0x732F l +0x7330 m +0x7331 +0x7332 n +0x7333 o +0x7334 +0x7335 p +0x7336 q +0x7337 +0x7338 +0x7339 +0x733A r +0x733B s +0x733C t +0x733D u +0x733E +0x733F Գ +0x7340 v +0x7341 w +0x7342 x +0x7343 y +0x7344 z +0x7345 { +0x7346 | +0x7347 } +0x7348 ~ +0x7349 +0x734A +0x734B +0x734C +0x734D +0x734E +0x734F +0x7350 +0x7351 +0x7352 +0x7353 +0x7354 +0x7355 +0x7356 +0x7357 +0x7358 +0x7359 +0x735A +0x735B +0x735C +0x735D +0x735E +0x735F +0x7360 +0x7361 +0x7362 +0x7363 +0x7364 +0x7365 +0x7366 +0x7367 +0x7368 +0x7369 +0x736A +0x736B +0x736C +0x736D ̡ +0x736E +0x736F +0x7370 +0x7371 +0x7372 @ +0x7373 A +0x7374 B +0x7375 C +0x7376 D +0x7377 E +0x7378 F +0x7379 G +0x737A H +0x737B I +0x737C J +0x737D K +0x737E +0x737F L +0x7380 M +0x7381 N +0x7382 O +0x7383 P +0x7384 +0x7385 Q +0x7386 R +0x7387 +0x7388 S +0x7389 +0x738A T +0x738B +0x738C U +0x738D V +0x738E +0x738F W +0x7390 X +0x7391 +0x7392 Y +0x7393 Z +0x7394 [ +0x7395 \ +0x7396 +0x7397 ] +0x7398 ^ +0x7399 _ +0x739A ` +0x739B +0x739C a +0x739D b +0x739E c +0x739F +0x73A0 d +0x73A1 e +0x73A2 +0x73A3 f +0x73A4 g +0x73A5 h +0x73A6 i +0x73A7 j +0x73A8 k +0x73A9 +0x73AA l +0x73AB õ +0x73AC m +0x73AD n +0x73AE +0x73AF +0x73B0 +0x73B1 o +0x73B2 +0x73B3 +0x73B4 p +0x73B5 q +0x73B6 r +0x73B7 +0x73B8 s +0x73B9 t +0x73BA +0x73BB +0x73BC u +0x73BD v +0x73BE w +0x73BF x +0x73C0 +0x73C1 y +0x73C2 +0x73C3 z +0x73C4 { +0x73C5 | +0x73C6 } +0x73C7 ~ +0x73C8 +0x73C9 +0x73CA ɺ +0x73CB +0x73CC +0x73CD +0x73CE +0x73CF +0x73D0 +0x73D1 +0x73D2 +0x73D3 +0x73D4 +0x73D5 +0x73D6 +0x73D7 +0x73D8 +0x73D9 +0x73DA +0x73DB +0x73DC +0x73DD +0x73DE +0x73DF +0x73E0 +0x73E1 +0x73E2 +0x73E3 +0x73E4 +0x73E5 +0x73E6 +0x73E7 +0x73E8 +0x73E9 +0x73EA +0x73EB +0x73EC +0x73ED +0x73EE +0x73EF +0x73F0 +0x73F1 +0x73F2 +0x73F3 +0x73F4 +0x73F5 +0x73F6 +0x73F7 +0x73F8 @ +0x73F9 A +0x73FA B +0x73FB C +0x73FC D +0x73FD E +0x73FE F +0x73FF G +0x7400 H +0x7401 I +0x7402 J +0x7403 +0x7404 K +0x7405 +0x7406 +0x7407 L +0x7408 M +0x7409 +0x740A +0x740B N +0x740C O +0x740D P +0x740E Q +0x740F +0x7410 +0x7411 R +0x7412 S +0x7413 T +0x7414 U +0x7415 V +0x7416 W +0x7417 X +0x7418 Y +0x7419 Z +0x741A +0x741B +0x741C [ +0x741D \ +0x741E ] +0x741F ^ +0x7420 _ +0x7421 ` +0x7422 +0x7423 a +0x7424 b +0x7425 +0x7426 +0x7427 c +0x7428 +0x7429 d +0x742A +0x742B e +0x742C +0x742D f +0x742E +0x742F g +0x7430 +0x7431 h +0x7432 i +0x7433 +0x7434 +0x7435 +0x7436 +0x7437 j +0x7438 k +0x7439 l +0x743A m +0x743B n +0x743C +0x743D o +0x743E p +0x743F q +0x7440 r +0x7441 +0x7442 s +0x7443 t +0x7444 u +0x7445 v +0x7446 w +0x7447 x +0x7448 y +0x7449 z +0x744A { +0x744B | +0x744C } +0x744D ~ +0x744E +0x744F +0x7450 +0x7451 +0x7452 +0x7453 +0x7454 +0x7455 +0x7456 +0x7457 +0x7458 +0x7459 +0x745A +0x745B +0x745C +0x745D +0x745E +0x745F ɪ +0x7460 +0x7461 +0x7462 +0x7463 +0x7464 +0x7465 +0x7466 +0x7467 +0x7468 +0x7469 +0x746A +0x746B +0x746C +0x746D +0x746E +0x746F +0x7470 +0x7471 +0x7472 +0x7473 +0x7474 +0x7475 +0x7476 +0x7477 +0x7478 +0x7479 +0x747A +0x747B @ +0x747C A +0x747D B +0x747E +0x747F C +0x7480 +0x7481 +0x7482 D +0x7483 +0x7484 E +0x7485 F +0x7486 G +0x7487 +0x7488 H +0x7489 I +0x748A J +0x748B +0x748C K +0x748D L +0x748E +0x748F M +0x7490 +0x7491 N +0x7492 O +0x7493 P +0x7494 Q +0x7495 R +0x7496 S +0x7497 T +0x7498 U +0x7499 V +0x749A W +0x749B X +0x749C +0x749D Y +0x749E +0x749F Z +0x74A0 [ +0x74A1 \ +0x74A2 ] +0x74A3 ^ +0x74A4 _ +0x74A5 ` +0x74A6 a +0x74A7 +0x74A8 +0x74A9 +0x74AA b +0x74AB c +0x74AC d +0x74AD e +0x74AE f +0x74AF g +0x74B0 h +0x74B1 i +0x74B2 j +0x74B3 k +0x74B4 l +0x74B5 m +0x74B6 n +0x74B7 o +0x74B8 p +0x74B9 q +0x74BA +0x74BB r +0x74BC s +0x74BD t +0x74BE u +0x74BF v +0x74C0 w +0x74C1 x +0x74C2 y +0x74C3 z +0x74C4 { +0x74C5 | +0x74C6 } +0x74C7 ~ +0x74C8 +0x74C9 +0x74CA +0x74CB +0x74CC +0x74CD +0x74CE +0x74CF +0x74D0 +0x74D1 +0x74D2 +0x74D3 +0x74D4 +0x74D5 +0x74D6 +0x74D7 +0x74D8 +0x74D9 +0x74DA +0x74DB +0x74DC +0x74DD +0x74DE +0x74DF +0x74E0 +0x74E1 +0x74E2 ư +0x74E3 +0x74E4 ȿ +0x74E5 +0x74E6 +0x74E7 +0x74E8 +0x74E9 +0x74EA +0x74EB +0x74EC +0x74ED +0x74EE +0x74EF +0x74F0 +0x74F1 +0x74F2 +0x74F3 @ +0x74F4 +0x74F5 A +0x74F6 ƿ +0x74F7 +0x74F8 B +0x74F9 C +0x74FA D +0x74FB E +0x74FC F +0x74FD G +0x74FE H +0x74FF +0x7500 I +0x7501 J +0x7502 K +0x7503 L +0x7504 +0x7505 M +0x7506 N +0x7507 O +0x7508 P +0x7509 Q +0x750A R +0x750B S +0x750C T +0x750D +0x750E U +0x750F +0x7510 V +0x7511 +0x7512 W +0x7513 +0x7514 X +0x7515 Y +0x7516 Z +0x7517 [ +0x7518 +0x7519 ߰ +0x751A +0x751B \ +0x751C +0x751D ] +0x751E ^ +0x751F +0x7520 _ +0x7521 ` +0x7522 a +0x7523 b +0x7524 c +0x7525 +0x7526 d +0x7527 e +0x7528 +0x7529 ˦ +0x752A f +0x752B +0x752C +0x752D +0x752E g +0x752F +0x7530 +0x7531 +0x7532 +0x7533 +0x7534 h +0x7535 +0x7536 i +0x7537 +0x7538 +0x7539 j +0x753A +0x753B +0x753C k +0x753D l +0x753E +0x753F m +0x7540 +0x7541 n +0x7542 o +0x7543 p +0x7544 q +0x7545 +0x7546 r +0x7547 s +0x7548 +0x7549 t +0x754A u +0x754B +0x754C +0x754D v +0x754E +0x754F η +0x7550 w +0x7551 x +0x7552 y +0x7553 z +0x7554 +0x7555 { +0x7556 | +0x7557 } +0x7558 ~ +0x7559 +0x755A +0x755B +0x755C +0x755D +0x755E +0x755F +0x7560 +0x7561 +0x7562 +0x7563 +0x7564 +0x7565 +0x7566 +0x7567 +0x7568 +0x7569 +0x756A +0x756B +0x756C +0x756D +0x756E +0x756F +0x7570 +0x7571 +0x7572 +0x7573 +0x7574 +0x7575 +0x7576 +0x7577 +0x7578 +0x7579 +0x757A +0x757B +0x757C +0x757D +0x757E +0x757F +0x7580 +0x7581 +0x7582 +0x7583 +0x7584 +0x7585 +0x7586 +0x7587 +0x7588 @ +0x7589 A +0x758A B +0x758B +0x758C C +0x758D D +0x758E E +0x758F +0x7590 F +0x7591 +0x7592 +0x7593 G +0x7594 +0x7595 H +0x7596 +0x7597 +0x7598 I +0x7599 +0x759A +0x759B J +0x759C K +0x759D +0x759E L +0x759F ű +0x75A0 +0x75A1 +0x75A2 M +0x75A3 +0x75A4 +0x75A5 +0x75A6 N +0x75A7 O +0x75A8 P +0x75A9 Q +0x75AA R +0x75AB +0x75AC +0x75AD S +0x75AE +0x75AF +0x75B0 +0x75B1 +0x75B2 ƣ +0x75B3 +0x75B4 +0x75B5 +0x75B6 T +0x75B7 U +0x75B8 +0x75B9 +0x75BA V +0x75BB W +0x75BC +0x75BD +0x75BE +0x75BF X +0x75C0 Y +0x75C1 Z +0x75C2 +0x75C3 +0x75C4 +0x75C5 +0x75C6 [ +0x75C7 ֢ +0x75C8 Ӹ +0x75C9 +0x75CA Ȭ +0x75CB \ +0x75CC ] +0x75CD +0x75CE ^ +0x75CF _ +0x75D0 ` +0x75D1 a +0x75D2 +0x75D3 b +0x75D4 +0x75D5 +0x75D6 +0x75D7 c +0x75D8 +0x75D9 d +0x75DA e +0x75DB ʹ +0x75DC f +0x75DD g +0x75DE Ʀ +0x75DF h +0x75E0 i +0x75E1 j +0x75E2 +0x75E3 +0x75E4 +0x75E5 k +0x75E6 +0x75E7 +0x75E8 +0x75E9 l +0x75EA +0x75EB +0x75EC m +0x75ED n +0x75EE o +0x75EF p +0x75F0 ̵ +0x75F1 +0x75F2 q +0x75F3 r +0x75F4 +0x75F5 s +0x75F6 t +0x75F7 u +0x75F8 v +0x75F9 +0x75FA w +0x75FB x +0x75FC +0x75FD y +0x75FE z +0x75FF +0x7600 +0x7601 +0x7602 { +0x7603 +0x7604 | +0x7605 +0x7606 } +0x7607 ~ +0x7608 +0x7609 +0x760A +0x760B +0x760C +0x760D +0x760E +0x760F +0x7610 +0x7611 +0x7612 +0x7613 +0x7614 +0x7615 +0x7616 +0x7617 +0x7618 +0x7619 +0x761A +0x761B +0x761C +0x761D +0x761E +0x761F +0x7620 +0x7621 +0x7622 +0x7623 +0x7624 +0x7625 +0x7626 +0x7627 +0x7628 +0x7629 +0x762A +0x762B ̱ +0x762C +0x762D +0x762E +0x762F +0x7630 +0x7631 +0x7632 +0x7633 +0x7634 +0x7635 +0x7636 +0x7637 +0x7638 ȳ +0x7639 +0x763A +0x763B +0x763C +0x763D +0x763E +0x763F +0x7640 +0x7641 +0x7642 +0x7643 +0x7644 +0x7645 @ +0x7646 A +0x7647 B +0x7648 C +0x7649 D +0x764A E +0x764B F +0x764C +0x764D +0x764E G +0x764F H +0x7650 I +0x7651 J +0x7652 K +0x7653 L +0x7654 +0x7655 M +0x7656 +0x7657 N +0x7658 O +0x7659 P +0x765A Q +0x765B R +0x765C +0x765D S +0x765E +0x765F T +0x7660 U +0x7661 V +0x7662 W +0x7663 Ѣ +0x7664 X +0x7665 Y +0x7666 Z +0x7667 [ +0x7668 \ +0x7669 ] +0x766A ^ +0x766B +0x766C _ +0x766D ` +0x766E a +0x766F +0x7670 b +0x7671 c +0x7672 d +0x7673 e +0x7674 f +0x7675 g +0x7676 h +0x7677 i +0x7678 +0x7679 j +0x767A k +0x767B +0x767C l +0x767D +0x767E +0x767F m +0x7680 n +0x7681 o +0x7682 +0x7683 p +0x7684 +0x7685 q +0x7686 +0x7687 +0x7688 +0x7689 r +0x768A s +0x768B +0x768C t +0x768D u +0x768E +0x768F v +0x7690 w +0x7691 +0x7692 x +0x7693 +0x7694 y +0x7695 z +0x7696 +0x7697 { +0x7698 | +0x7699 +0x769A } +0x769B ~ +0x769C +0x769D +0x769E +0x769F +0x76A0 +0x76A1 +0x76A2 +0x76A3 +0x76A4 +0x76A5 +0x76A6 +0x76A7 +0x76A8 +0x76A9 +0x76AA +0x76AB +0x76AC +0x76AD +0x76AE Ƥ +0x76AF +0x76B0 +0x76B1 +0x76B2 +0x76B3 +0x76B4 +0x76B5 +0x76B6 +0x76B7 +0x76B8 +0x76B9 +0x76BA +0x76BB +0x76BC +0x76BD +0x76BE +0x76BF +0x76C0 +0x76C1 +0x76C2 +0x76C3 +0x76C4 @ +0x76C5 +0x76C6 +0x76C7 A +0x76C8 ӯ +0x76C9 B +0x76CA +0x76CB C +0x76CC D +0x76CD +0x76CE +0x76CF յ +0x76D0 +0x76D1 +0x76D2 +0x76D3 E +0x76D4 +0x76D5 F +0x76D6 +0x76D7 +0x76D8 +0x76D9 G +0x76DA H +0x76DB ʢ +0x76DC I +0x76DD J +0x76DE K +0x76DF +0x76E0 L +0x76E1 M +0x76E2 N +0x76E3 O +0x76E4 P +0x76E5 +0x76E6 Q +0x76E7 R +0x76E8 S +0x76E9 T +0x76EA U +0x76EB V +0x76EC W +0x76ED X +0x76EE Ŀ +0x76EF +0x76F0 Y +0x76F1 +0x76F2 ä +0x76F3 Z +0x76F4 ֱ +0x76F5 [ +0x76F6 \ +0x76F7 ] +0x76F8 +0x76F9 +0x76FA ^ +0x76FB _ +0x76FC +0x76FD ` +0x76FE +0x76FF a +0x7700 b +0x7701 ʡ +0x7702 c +0x7703 d +0x7704 +0x7705 e +0x7706 f +0x7707 +0x7708 +0x7709 ü +0x770A g +0x770B +0x770C h +0x770D +0x770E i +0x770F j +0x7710 k +0x7711 l +0x7712 m +0x7713 n +0x7714 o +0x7715 p +0x7716 q +0x7717 r +0x7718 s +0x7719 +0x771A +0x771B t +0x771C u +0x771D v +0x771E w +0x771F +0x7720 +0x7721 x +0x7722 +0x7723 y +0x7724 z +0x7725 { +0x7726 +0x7727 | +0x7728 գ +0x7729 ѣ +0x772A } +0x772B ~ +0x772C +0x772D +0x772E +0x772F +0x7730 +0x7731 +0x7732 +0x7733 +0x7734 +0x7735 +0x7736 +0x7737 +0x7738 +0x7739 +0x773A +0x773B +0x773C +0x773D +0x773E +0x773F +0x7740 +0x7741 +0x7742 +0x7743 +0x7744 +0x7745 +0x7746 +0x7747 +0x7748 +0x7749 +0x774A +0x774B +0x774C +0x774D +0x774E +0x774F +0x7750 +0x7751 +0x7752 +0x7753 +0x7754 +0x7755 +0x7756 +0x7757 +0x7758 +0x7759 +0x775A +0x775B +0x775C +0x775D @ +0x775E A +0x775F B +0x7760 C +0x7761 ˯ +0x7762 +0x7763 +0x7764 D +0x7765 +0x7766 +0x7767 E +0x7768 +0x7769 F +0x776A G +0x776B +0x776C +0x776D H +0x776E I +0x776F J +0x7770 K +0x7771 L +0x7772 M +0x7773 N +0x7774 O +0x7775 P +0x7776 Q +0x7777 R +0x7778 S +0x7779 +0x777A T +0x777B U +0x777C V +0x777D +0x777E غ +0x777F +0x7780 +0x7781 W +0x7782 X +0x7783 Y +0x7784 +0x7785 +0x7786 Z +0x7787 [ +0x7788 \ +0x7789 ] +0x778A ^ +0x778B _ +0x778C +0x778D +0x778E Ϲ +0x778F ` +0x7790 a +0x7791 +0x7792 +0x7793 b +0x7794 c +0x7795 d +0x7796 e +0x7797 f +0x7798 g +0x7799 h +0x779A i +0x779B j +0x779C k +0x779D l +0x779E m +0x779F +0x77A0 +0x77A1 n +0x77A2 ޫ +0x77A3 o +0x77A4 p +0x77A5 Ƴ +0x77A6 q +0x77A7 +0x77A8 r +0x77A9 +0x77AA +0x77AB s +0x77AC ˲ +0x77AD t +0x77AE u +0x77AF v +0x77B0 +0x77B1 w +0x77B2 x +0x77B3 ͫ +0x77B4 y +0x77B5 +0x77B6 z +0x77B7 { +0x77B8 | +0x77B9 } +0x77BA ~ +0x77BB հ +0x77BC +0x77BD +0x77BE +0x77BF +0x77C0 +0x77C1 +0x77C2 +0x77C3 +0x77C4 +0x77C5 +0x77C6 +0x77C7 +0x77C8 +0x77C9 +0x77CA +0x77CB +0x77CC +0x77CD +0x77CE +0x77CF +0x77D0 +0x77D1 +0x77D2 +0x77D3 +0x77D4 +0x77D5 +0x77D6 +0x77D7 +0x77D8 +0x77D9 +0x77DA +0x77DB ì +0x77DC +0x77DD +0x77DE +0x77DF +0x77E0 +0x77E1 +0x77E2 ʸ +0x77E3 +0x77E4 +0x77E5 ֪ +0x77E6 @ +0x77E7 +0x77E8 A +0x77E9 +0x77EA B +0x77EB +0x77EC +0x77ED +0x77EE +0x77EF C +0x77F0 D +0x77F1 E +0x77F2 F +0x77F3 ʯ +0x77F4 G +0x77F5 H +0x77F6 +0x77F7 I +0x77F8 +0x77F9 J +0x77FA K +0x77FB L +0x77FC M +0x77FD +0x77FE +0x77FF +0x7800 +0x7801 +0x7802 ɰ +0x7803 N +0x7804 O +0x7805 P +0x7806 Q +0x7807 R +0x7808 S +0x7809 +0x780A T +0x780B U +0x780C +0x780D +0x780E V +0x780F W +0x7810 X +0x7811 +0x7812 +0x7813 Y +0x7814 +0x7815 Z +0x7816 ש +0x7817 +0x7818 +0x7819 [ +0x781A +0x781B \ +0x781C +0x781D +0x781E ] +0x781F +0x7820 ^ +0x7821 _ +0x7822 ` +0x7823 +0x7824 a +0x7825 +0x7826 +0x7827 +0x7828 b +0x7829 +0x782A c +0x782B d +0x782C +0x782D +0x782E e +0x782F f +0x7830 +0x7831 g +0x7832 h +0x7833 i +0x7834 +0x7835 j +0x7836 k +0x7837 +0x7838 +0x7839 +0x783A +0x783B +0x783C +0x783D l +0x783E +0x783F m +0x7840 +0x7841 n +0x7842 o +0x7843 p +0x7844 q +0x7845 +0x7846 r +0x7847 +0x7848 s +0x7849 t +0x784A u +0x784B v +0x784C +0x784D w +0x784E +0x784F x +0x7850 +0x7851 y +0x7852 +0x7853 z +0x7854 { +0x7855 ˶ +0x7856 +0x7857 +0x7858 | +0x7859 } +0x785A ~ +0x785B +0x785C +0x785D +0x785E +0x785F +0x7860 +0x7861 +0x7862 +0x7863 +0x7864 +0x7865 +0x7866 +0x7867 +0x7868 +0x7869 +0x786A +0x786B +0x786C Ӳ +0x786D +0x786E ȷ +0x786F +0x7870 +0x7871 +0x7872 +0x7873 +0x7874 +0x7875 +0x7876 +0x7877 +0x7878 +0x7879 +0x787A +0x787B +0x787C +0x787D +0x787E +0x787F +0x7880 +0x7881 +0x7882 +0x7883 +0x7884 @ +0x7885 A +0x7886 B +0x7887 +0x7888 C +0x7889 +0x788A D +0x788B E +0x788C µ +0x788D +0x788E +0x788F F +0x7890 G +0x7891 +0x7892 H +0x7893 +0x7894 I +0x7895 J +0x7896 K +0x7897 +0x7898 +0x7899 L +0x789A +0x789B +0x789C +0x789D M +0x789E N +0x789F +0x78A0 O +0x78A1 +0x78A2 P +0x78A3 +0x78A4 Q +0x78A5 +0x78A6 R +0x78A7 +0x78A8 S +0x78A9 T +0x78AA U +0x78AB V +0x78AC W +0x78AD X +0x78AE Y +0x78AF Z +0x78B0 +0x78B1 +0x78B2 +0x78B3 ̼ +0x78B4 +0x78B5 [ +0x78B6 \ +0x78B7 ] +0x78B8 ^ +0x78B9 +0x78BA _ +0x78BB ` +0x78BC a +0x78BD b +0x78BE +0x78BF c +0x78C0 d +0x78C1 +0x78C2 e +0x78C3 f +0x78C4 g +0x78C5 +0x78C6 h +0x78C7 i +0x78C8 j +0x78C9 +0x78CA +0x78CB +0x78CC k +0x78CD l +0x78CE m +0x78CF n +0x78D0 +0x78D1 o +0x78D2 p +0x78D3 q +0x78D4 +0x78D5 +0x78D6 r +0x78D7 s +0x78D8 t +0x78D9 +0x78DA u +0x78DB v +0x78DC w +0x78DD x +0x78DE y +0x78DF z +0x78E0 { +0x78E1 | +0x78E2 } +0x78E3 ~ +0x78E4 +0x78E5 +0x78E6 +0x78E7 +0x78E8 ĥ +0x78E9 +0x78EA +0x78EB +0x78EC +0x78ED +0x78EE +0x78EF +0x78F0 +0x78F1 +0x78F2 +0x78F3 +0x78F4 +0x78F5 +0x78F6 +0x78F7 +0x78F8 +0x78F9 +0x78FA +0x78FB +0x78FC +0x78FD +0x78FE +0x78FF +0x7900 +0x7901 +0x7902 +0x7903 +0x7904 +0x7905 +0x7906 +0x7907 +0x7908 +0x7909 +0x790A +0x790B +0x790C +0x790D @ +0x790E A +0x790F B +0x7910 C +0x7911 D +0x7912 E +0x7913 +0x7914 F +0x7915 G +0x7916 H +0x7917 I +0x7918 J +0x7919 K +0x791A L +0x791B M +0x791C N +0x791D O +0x791E +0x791F P +0x7920 Q +0x7921 R +0x7922 S +0x7923 T +0x7924 +0x7925 U +0x7926 V +0x7927 W +0x7928 X +0x7929 Y +0x792A Z +0x792B [ +0x792C \ +0x792D ] +0x792E ^ +0x792F _ +0x7930 ` +0x7931 a +0x7932 b +0x7933 c +0x7934 +0x7935 d +0x7936 e +0x7937 f +0x7938 g +0x7939 h +0x793A ʾ +0x793B +0x793C +0x793D i +0x793E +0x793F j +0x7940 +0x7941 +0x7942 k +0x7943 l +0x7944 m +0x7945 n +0x7946 +0x7947 o +0x7948 +0x7949 +0x794A p +0x794B q +0x794C r +0x794D s +0x794E t +0x794F u +0x7950 v +0x7951 w +0x7952 x +0x7953 +0x7954 y +0x7955 z +0x7956 +0x7957 +0x7958 { +0x7959 | +0x795A +0x795B +0x795C +0x795D ף +0x795E +0x795F +0x7960 +0x7961 } +0x7962 +0x7963 ~ +0x7964 +0x7965 +0x7966 +0x7967 +0x7968 Ʊ +0x7969 +0x796A +0x796B +0x796C +0x796D +0x796E +0x796F +0x7970 +0x7971 +0x7972 +0x7973 +0x7974 +0x7975 +0x7976 +0x7977 +0x7978 +0x7979 +0x797A +0x797B +0x797C +0x797D +0x797E +0x797F +0x7980 +0x7981 +0x7982 +0x7983 +0x7984 » +0x7985 +0x7986 +0x7987 +0x7988 +0x7989 +0x798A +0x798B +0x798C +0x798D +0x798E +0x798F +0x7990 +0x7991 +0x7992 +0x7993 @ +0x7994 A +0x7995 B +0x7996 C +0x7997 D +0x7998 E +0x7999 F +0x799A +0x799B G +0x799C H +0x799D I +0x799E J +0x799F K +0x79A0 L +0x79A1 M +0x79A2 N +0x79A3 O +0x79A4 P +0x79A5 Q +0x79A6 R +0x79A7 +0x79A8 S +0x79A9 T +0x79AA U +0x79AB V +0x79AC W +0x79AD X +0x79AE Y +0x79AF Z +0x79B0 [ +0x79B1 \ +0x79B2 ] +0x79B3 +0x79B4 ^ +0x79B5 _ +0x79B6 ` +0x79B7 a +0x79B8 b +0x79B9 +0x79BA خ +0x79BB +0x79BC c +0x79BD +0x79BE +0x79BF d +0x79C0 +0x79C1 ˽ +0x79C2 e +0x79C3 ͺ +0x79C4 f +0x79C5 g +0x79C6 +0x79C7 h +0x79C8 i +0x79C9 +0x79CA j +0x79CB +0x79CC k +0x79CD +0x79CE l +0x79CF m +0x79D0 n +0x79D1 +0x79D2 +0x79D3 o +0x79D4 p +0x79D5 +0x79D6 q +0x79D7 r +0x79D8 +0x79D9 s +0x79DA t +0x79DB u +0x79DC v +0x79DD w +0x79DE x +0x79DF +0x79E0 y +0x79E1 z +0x79E2 { +0x79E3 +0x79E4 +0x79E5 | +0x79E6 +0x79E7 +0x79E8 } +0x79E9 +0x79EA ~ +0x79EB +0x79EC +0x79ED +0x79EE +0x79EF +0x79F0 +0x79F1 +0x79F2 +0x79F3 +0x79F4 +0x79F5 +0x79F6 +0x79F7 +0x79F8 +0x79F9 +0x79FA +0x79FB +0x79FC +0x79FD +0x79FE +0x79FF +0x7A00 ϡ +0x7A01 +0x7A02 +0x7A03 +0x7A04 +0x7A05 +0x7A06 +0x7A07 +0x7A08 +0x7A09 +0x7A0A +0x7A0B +0x7A0C +0x7A0D +0x7A0E ˰ +0x7A0F +0x7A10 +0x7A11 +0x7A12 +0x7A13 +0x7A14 +0x7A15 +0x7A16 +0x7A17 +0x7A18 +0x7A19 +0x7A1A +0x7A1B +0x7A1C +0x7A1D @ +0x7A1E +0x7A1F A +0x7A20 +0x7A21 B +0x7A22 C +0x7A23 +0x7A24 D +0x7A25 E +0x7A26 F +0x7A27 G +0x7A28 H +0x7A29 I +0x7A2A J +0x7A2B K +0x7A2C L +0x7A2D M +0x7A2E N +0x7A2F O +0x7A30 P +0x7A31 Q +0x7A32 R +0x7A33 +0x7A34 S +0x7A35 T +0x7A36 U +0x7A37 +0x7A38 V +0x7A39 +0x7A3A W +0x7A3B +0x7A3C +0x7A3D +0x7A3E X +0x7A3F +0x7A40 Y +0x7A41 Z +0x7A42 [ +0x7A43 \ +0x7A44 ] +0x7A45 ^ +0x7A46 +0x7A47 _ +0x7A48 ` +0x7A49 a +0x7A4A b +0x7A4B c +0x7A4C d +0x7A4D e +0x7A4E f +0x7A4F g +0x7A50 h +0x7A51 +0x7A52 i +0x7A53 j +0x7A54 k +0x7A55 l +0x7A56 m +0x7A57 +0x7A58 n +0x7A59 o +0x7A5A p +0x7A5B q +0x7A5C r +0x7A5D s +0x7A5E t +0x7A5F u +0x7A60 v +0x7A61 w +0x7A62 x +0x7A63 y +0x7A64 z +0x7A65 { +0x7A66 | +0x7A67 } +0x7A68 ~ +0x7A69 +0x7A6A +0x7A6B +0x7A6C +0x7A6D +0x7A6E +0x7A6F +0x7A70 +0x7A71 +0x7A72 +0x7A73 +0x7A74 Ѩ +0x7A75 +0x7A76 +0x7A77 +0x7A78 +0x7A79 +0x7A7A +0x7A7B +0x7A7C +0x7A7D +0x7A7E +0x7A7F +0x7A80 +0x7A81 ͻ +0x7A82 +0x7A83 +0x7A84 խ +0x7A85 +0x7A86 +0x7A87 +0x7A88 +0x7A89 +0x7A8A +0x7A8B +0x7A8C +0x7A8D +0x7A8E +0x7A8F +0x7A90 +0x7A91 Ҥ +0x7A92 +0x7A93 +0x7A94 +0x7A95 +0x7A96 +0x7A97 +0x7A98 +0x7A99 +0x7A9A +0x7A9B +0x7A9C +0x7A9D +0x7A9E +0x7A9F +0x7AA0 +0x7AA1 +0x7AA2 +0x7AA3 @ +0x7AA4 A +0x7AA5 +0x7AA6 +0x7AA7 B +0x7AA8 +0x7AA9 C +0x7AAA D +0x7AAB E +0x7AAC +0x7AAD +0x7AAE F +0x7AAF G +0x7AB0 H +0x7AB1 I +0x7AB2 J +0x7AB3 +0x7AB4 K +0x7AB5 L +0x7AB6 M +0x7AB7 N +0x7AB8 O +0x7AB9 P +0x7ABA Q +0x7ABB R +0x7ABC S +0x7ABD T +0x7ABE U +0x7ABF +0x7AC0 V +0x7AC1 W +0x7AC2 X +0x7AC3 Y +0x7AC4 Z +0x7AC5 [ +0x7AC6 \ +0x7AC7 ] +0x7AC8 ^ +0x7AC9 _ +0x7ACA ` +0x7ACB +0x7ACC a +0x7ACD b +0x7ACE c +0x7ACF d +0x7AD0 e +0x7AD1 f +0x7AD2 g +0x7AD3 h +0x7AD4 i +0x7AD5 j +0x7AD6 +0x7AD7 k +0x7AD8 l +0x7AD9 վ +0x7ADA m +0x7ADB n +0x7ADC o +0x7ADD p +0x7ADE +0x7ADF +0x7AE0 +0x7AE1 q +0x7AE2 r +0x7AE3 +0x7AE4 s +0x7AE5 ͯ +0x7AE6 +0x7AE7 t +0x7AE8 u +0x7AE9 v +0x7AEA w +0x7AEB x +0x7AEC y +0x7AED +0x7AEE z +0x7AEF +0x7AF0 { +0x7AF1 | +0x7AF2 } +0x7AF3 ~ +0x7AF4 +0x7AF5 +0x7AF6 +0x7AF7 +0x7AF8 +0x7AF9 +0x7AFA +0x7AFB +0x7AFC +0x7AFD +0x7AFE +0x7AFF +0x7B00 +0x7B01 +0x7B02 +0x7B03 +0x7B04 +0x7B05 +0x7B06 +0x7B07 +0x7B08 +0x7B09 +0x7B0A +0x7B0B +0x7B0C +0x7B0D +0x7B0E +0x7B0F +0x7B10 +0x7B11 Ц +0x7B12 +0x7B13 +0x7B14 +0x7B15 +0x7B16 +0x7B17 +0x7B18 +0x7B19 +0x7B1A +0x7B1B +0x7B1C +0x7B1D +0x7B1E +0x7B1F +0x7B20 +0x7B21 +0x7B22 +0x7B23 +0x7B24 +0x7B25 +0x7B26 +0x7B27 +0x7B28 +0x7B29 +0x7B2A +0x7B2B +0x7B2C +0x7B2D +0x7B2E +0x7B2F @ +0x7B30 A +0x7B31 +0x7B32 B +0x7B33 +0x7B34 C +0x7B35 D +0x7B36 E +0x7B37 F +0x7B38 +0x7B39 G +0x7B3A +0x7B3B H +0x7B3C +0x7B3D I +0x7B3E +0x7B3F J +0x7B40 K +0x7B41 L +0x7B42 M +0x7B43 N +0x7B44 O +0x7B45 +0x7B46 P +0x7B47 +0x7B48 Q +0x7B49 +0x7B4A R +0x7B4B +0x7B4C +0x7B4D S +0x7B4E T +0x7B4F +0x7B50 +0x7B51 +0x7B52 Ͳ +0x7B53 U +0x7B54 +0x7B55 V +0x7B56 +0x7B57 W +0x7B58 +0x7B59 X +0x7B5A +0x7B5B ɸ +0x7B5C Y +0x7B5D +0x7B5E Z +0x7B5F [ +0x7B60 +0x7B61 \ +0x7B62 +0x7B63 ] +0x7B64 ^ +0x7B65 _ +0x7B66 ` +0x7B67 a +0x7B68 b +0x7B69 c +0x7B6A d +0x7B6B e +0x7B6C f +0x7B6D g +0x7B6E +0x7B6F h +0x7B70 i +0x7B71 +0x7B72 +0x7B73 j +0x7B74 k +0x7B75 +0x7B76 l +0x7B77 +0x7B78 m +0x7B79 +0x7B7A n +0x7B7B +0x7B7C o +0x7B7D p +0x7B7E ǩ +0x7B7F q +0x7B80 +0x7B81 r +0x7B82 s +0x7B83 t +0x7B84 u +0x7B85 +0x7B86 v +0x7B87 w +0x7B88 x +0x7B89 y +0x7B8A z +0x7B8B { +0x7B8C | +0x7B8D +0x7B8E } +0x7B8F ~ +0x7B90 +0x7B91 +0x7B92 +0x7B93 +0x7B94 +0x7B95 +0x7B96 +0x7B97 +0x7B98 +0x7B99 +0x7B9A +0x7B9B +0x7B9C +0x7B9D +0x7B9E +0x7B9F +0x7BA0 +0x7BA1 +0x7BA2 +0x7BA3 +0x7BA4 +0x7BA5 +0x7BA6 +0x7BA7 +0x7BA8 +0x7BA9 +0x7BAA +0x7BAB +0x7BAC +0x7BAD +0x7BAE +0x7BAF +0x7BB0 +0x7BB1 +0x7BB2 +0x7BB3 +0x7BB4 +0x7BB5 +0x7BB6 +0x7BB7 +0x7BB8 +0x7BB9 +0x7BBA +0x7BBB +0x7BBC +0x7BBD +0x7BBE +0x7BBF +0x7BC0 +0x7BC1 +0x7BC2 +0x7BC3 +0x7BC4 +0x7BC5 @ +0x7BC6 ׭ +0x7BC7 ƪ +0x7BC8 A +0x7BC9 B +0x7BCA C +0x7BCB D +0x7BCC +0x7BCD E +0x7BCE F +0x7BCF G +0x7BD0 H +0x7BD1 +0x7BD2 I +0x7BD3 ¨ +0x7BD4 J +0x7BD5 K +0x7BD6 L +0x7BD7 M +0x7BD8 N +0x7BD9 +0x7BDA +0x7BDB O +0x7BDC P +0x7BDD +0x7BDE Q +0x7BDF R +0x7BE0 S +0x7BE1 +0x7BE2 T +0x7BE3 U +0x7BE4 V +0x7BE5 +0x7BE6 +0x7BE7 W +0x7BE8 X +0x7BE9 Y +0x7BEA +0x7BEB Z +0x7BEC [ +0x7BED \ +0x7BEE +0x7BEF ] +0x7BF0 ^ +0x7BF1 +0x7BF2 _ +0x7BF3 ` +0x7BF4 a +0x7BF5 b +0x7BF6 c +0x7BF7 +0x7BF8 d +0x7BF9 e +0x7BFA f +0x7BFB g +0x7BFC +0x7BFD h +0x7BFE +0x7BFF i +0x7C00 j +0x7C01 k +0x7C02 l +0x7C03 m +0x7C04 n +0x7C05 o +0x7C06 p +0x7C07 +0x7C08 q +0x7C09 r +0x7C0A s +0x7C0B +0x7C0C +0x7C0D t +0x7C0E u +0x7C0F +0x7C10 v +0x7C11 w +0x7C12 x +0x7C13 y +0x7C14 z +0x7C15 { +0x7C16 +0x7C17 | +0x7C18 } +0x7C19 ~ +0x7C1A +0x7C1B +0x7C1C +0x7C1D +0x7C1E +0x7C1F +0x7C20 +0x7C21 +0x7C22 +0x7C23 +0x7C24 +0x7C25 +0x7C26 +0x7C27 +0x7C28 +0x7C29 +0x7C2A +0x7C2B +0x7C2C +0x7C2D +0x7C2E +0x7C2F +0x7C30 +0x7C31 +0x7C32 +0x7C33 +0x7C34 +0x7C35 +0x7C36 +0x7C37 +0x7C38 +0x7C39 +0x7C3A +0x7C3B +0x7C3C +0x7C3D +0x7C3E +0x7C3F +0x7C40 +0x7C41 +0x7C42 +0x7C43 @ +0x7C44 A +0x7C45 B +0x7C46 C +0x7C47 D +0x7C48 E +0x7C49 F +0x7C4A G +0x7C4B H +0x7C4C I +0x7C4D +0x7C4E J +0x7C4F K +0x7C50 L +0x7C51 M +0x7C52 N +0x7C53 O +0x7C54 P +0x7C55 Q +0x7C56 R +0x7C57 S +0x7C58 T +0x7C59 U +0x7C5A V +0x7C5B W +0x7C5C X +0x7C5D Y +0x7C5E Z +0x7C5F [ +0x7C60 \ +0x7C61 ] +0x7C62 ^ +0x7C63 _ +0x7C64 ` +0x7C65 a +0x7C66 b +0x7C67 c +0x7C68 d +0x7C69 e +0x7C6A f +0x7C6B g +0x7C6C h +0x7C6D i +0x7C6E j +0x7C6F k +0x7C70 l +0x7C71 m +0x7C72 n +0x7C73 +0x7C74 +0x7C75 o +0x7C76 p +0x7C77 q +0x7C78 r +0x7C79 s +0x7C7A t +0x7C7B +0x7C7C +0x7C7D +0x7C7E u +0x7C7F v +0x7C80 w +0x7C81 x +0x7C82 y +0x7C83 z +0x7C84 { +0x7C85 | +0x7C86 } +0x7C87 ~ +0x7C88 +0x7C89 +0x7C8A +0x7C8B +0x7C8C +0x7C8D +0x7C8E +0x7C8F +0x7C90 +0x7C91 +0x7C92 +0x7C93 +0x7C94 +0x7C95 +0x7C96 +0x7C97 +0x7C98 ճ +0x7C99 +0x7C9A +0x7C9B +0x7C9C +0x7C9D +0x7C9E +0x7C9F +0x7CA0 +0x7CA1 +0x7CA2 +0x7CA3 +0x7CA4 +0x7CA5 +0x7CA6 +0x7CA7 +0x7CA8 +0x7CA9 +0x7CAA +0x7CAB +0x7CAC +0x7CAD +0x7CAE +0x7CAF +0x7CB0 +0x7CB1 +0x7CB2 +0x7CB3 +0x7CB4 +0x7CB5 +0x7CB6 +0x7CB7 +0x7CB8 +0x7CB9 +0x7CBA +0x7CBB +0x7CBC +0x7CBD +0x7CBE +0x7CBF @ +0x7CC0 A +0x7CC1 +0x7CC2 B +0x7CC3 C +0x7CC4 D +0x7CC5 +0x7CC6 E +0x7CC7 +0x7CC8 +0x7CC9 F +0x7CCA +0x7CCB G +0x7CCC +0x7CCD +0x7CCE H +0x7CCF I +0x7CD0 J +0x7CD1 K +0x7CD2 L +0x7CD3 M +0x7CD4 N +0x7CD5 +0x7CD6 +0x7CD7 +0x7CD8 O +0x7CD9 +0x7CDA P +0x7CDB Q +0x7CDC +0x7CDD R +0x7CDE S +0x7CDF +0x7CE0 +0x7CE1 T +0x7CE2 U +0x7CE3 V +0x7CE4 W +0x7CE5 X +0x7CE6 Y +0x7CE7 Z +0x7CE8 +0x7CE9 [ +0x7CEA \ +0x7CEB ] +0x7CEC ^ +0x7CED _ +0x7CEE ` +0x7CEF Ŵ +0x7CF0 a +0x7CF1 b +0x7CF2 c +0x7CF3 d +0x7CF4 e +0x7CF5 f +0x7CF6 g +0x7CF7 h +0x7CF8 +0x7CF9 i +0x7CFA j +0x7CFB ϵ +0x7CFC k +0x7CFD l +0x7CFE m +0x7CFF n +0x7D00 o +0x7D01 p +0x7D02 q +0x7D03 r +0x7D04 s +0x7D05 t +0x7D06 u +0x7D07 v +0x7D08 w +0x7D09 x +0x7D0A +0x7D0B y +0x7D0C z +0x7D0D { +0x7D0E | +0x7D0F } +0x7D10 ~ +0x7D11 +0x7D12 +0x7D13 +0x7D14 +0x7D15 +0x7D16 +0x7D17 +0x7D18 +0x7D19 +0x7D1A +0x7D1B +0x7D1C +0x7D1D +0x7D1E +0x7D1F +0x7D20 +0x7D21 +0x7D22 +0x7D23 +0x7D24 +0x7D25 +0x7D26 +0x7D27 +0x7D28 +0x7D29 +0x7D2A +0x7D2B +0x7D2C +0x7D2D +0x7D2E +0x7D2F +0x7D30 +0x7D31 +0x7D32 +0x7D33 +0x7D34 +0x7D35 +0x7D36 +0x7D37 @ +0x7D38 A +0x7D39 B +0x7D3A C +0x7D3B D +0x7D3C E +0x7D3D F +0x7D3E G +0x7D3F H +0x7D40 I +0x7D41 J +0x7D42 K +0x7D43 L +0x7D44 M +0x7D45 N +0x7D46 O +0x7D47 P +0x7D48 Q +0x7D49 R +0x7D4A S +0x7D4B T +0x7D4C U +0x7D4D V +0x7D4E W +0x7D4F X +0x7D50 Y +0x7D51 Z +0x7D52 [ +0x7D53 \ +0x7D54 ] +0x7D55 ^ +0x7D56 _ +0x7D57 ` +0x7D58 a +0x7D59 b +0x7D5A c +0x7D5B d +0x7D5C e +0x7D5D f +0x7D5E g +0x7D5F h +0x7D60 i +0x7D61 j +0x7D62 k +0x7D63 l +0x7D64 m +0x7D65 n +0x7D66 o +0x7D67 p +0x7D68 q +0x7D69 r +0x7D6A s +0x7D6B t +0x7D6C u +0x7D6D v +0x7D6E +0x7D6F w +0x7D70 x +0x7D71 y +0x7D72 z +0x7D73 { +0x7D74 | +0x7D75 } +0x7D76 ~ +0x7D77 +0x7D78 +0x7D79 +0x7D7A +0x7D7B +0x7D7C +0x7D7D +0x7D7E +0x7D7F +0x7D80 +0x7D81 +0x7D82 +0x7D83 +0x7D84 +0x7D85 +0x7D86 +0x7D87 +0x7D88 +0x7D89 +0x7D8A +0x7D8B +0x7D8C +0x7D8D +0x7D8E +0x7D8F +0x7D90 +0x7D91 +0x7D92 +0x7D93 +0x7D94 +0x7D95 +0x7D96 +0x7D97 +0x7D98 +0x7D99 @ +0x7D9A A +0x7D9B B +0x7D9C C +0x7D9D D +0x7D9E E +0x7D9F F +0x7DA0 G +0x7DA1 H +0x7DA2 I +0x7DA3 J +0x7DA4 K +0x7DA5 L +0x7DA6 +0x7DA7 M +0x7DA8 N +0x7DA9 O +0x7DAA P +0x7DAB Q +0x7DAC R +0x7DAD S +0x7DAE +0x7DAF T +0x7DB0 U +0x7DB1 V +0x7DB2 W +0x7DB3 X +0x7DB4 Y +0x7DB5 Z +0x7DB6 [ +0x7DB7 \ +0x7DB8 ] +0x7DB9 ^ +0x7DBA _ +0x7DBB ` +0x7DBC a +0x7DBD b +0x7DBE c +0x7DBF d +0x7DC0 e +0x7DC1 f +0x7DC2 g +0x7DC3 h +0x7DC4 i +0x7DC5 j +0x7DC6 k +0x7DC7 l +0x7DC8 m +0x7DC9 n +0x7DCA o +0x7DCB p +0x7DCC q +0x7DCD r +0x7DCE s +0x7DCF t +0x7DD0 u +0x7DD1 v +0x7DD2 w +0x7DD3 x +0x7DD4 y +0x7DD5 z +0x7DD6 { +0x7DD7 | +0x7DD8 } +0x7DD9 ~ +0x7DDA +0x7DDB +0x7DDC +0x7DDD +0x7DDE +0x7DDF +0x7DE0 +0x7DE1 +0x7DE2 +0x7DE3 +0x7DE4 +0x7DE5 +0x7DE6 +0x7DE7 +0x7DE8 +0x7DE9 +0x7DEA +0x7DEB +0x7DEC +0x7DED +0x7DEE +0x7DEF +0x7DF0 +0x7DF1 +0x7DF2 +0x7DF3 +0x7DF4 +0x7DF5 +0x7DF6 +0x7DF7 +0x7DF8 +0x7DF9 +0x7DFA +0x7DFB @ +0x7DFC A +0x7DFD B +0x7DFE C +0x7DFF D +0x7E00 E +0x7E01 F +0x7E02 G +0x7E03 H +0x7E04 I +0x7E05 J +0x7E06 K +0x7E07 L +0x7E08 M +0x7E09 N +0x7E0A O +0x7E0B P +0x7E0C Q +0x7E0D R +0x7E0E S +0x7E0F T +0x7E10 U +0x7E11 V +0x7E12 W +0x7E13 X +0x7E14 Y +0x7E15 Z +0x7E16 [ +0x7E17 \ +0x7E18 ] +0x7E19 ^ +0x7E1A _ +0x7E1B ` +0x7E1C a +0x7E1D b +0x7E1E c +0x7E1F d +0x7E20 e +0x7E21 f +0x7E22 g +0x7E23 h +0x7E24 i +0x7E25 j +0x7E26 k +0x7E27 l +0x7E28 m +0x7E29 n +0x7E2A o +0x7E2B p +0x7E2C q +0x7E2D r +0x7E2E s +0x7E2F t +0x7E30 u +0x7E31 v +0x7E32 w +0x7E33 x +0x7E34 y +0x7E35 z +0x7E36 { +0x7E37 | +0x7E38 } +0x7E39 ~ +0x7E3A +0x7E3B +0x7E3C +0x7E3D +0x7E3E +0x7E3F +0x7E40 +0x7E41 +0x7E42 +0x7E43 +0x7E44 +0x7E45 +0x7E46 +0x7E47 +0x7E48 +0x7E49 +0x7E4A +0x7E4B +0x7E4C +0x7E4D +0x7E4E +0x7E4F +0x7E50 +0x7E51 +0x7E52 +0x7E53 +0x7E54 +0x7E55 +0x7E56 +0x7E57 +0x7E58 +0x7E59 +0x7E5A +0x7E5B +0x7E5C +0x7E5D +0x7E5E @ +0x7E5F A +0x7E60 B +0x7E61 C +0x7E62 D +0x7E63 E +0x7E64 F +0x7E65 G +0x7E66 H +0x7E67 I +0x7E68 J +0x7E69 K +0x7E6A L +0x7E6B M +0x7E6C N +0x7E6D O +0x7E6E P +0x7E6F Q +0x7E70 R +0x7E71 S +0x7E72 T +0x7E73 U +0x7E74 V +0x7E75 W +0x7E76 X +0x7E77 Y +0x7E78 Z +0x7E79 [ +0x7E7A \ +0x7E7B ] +0x7E7C ^ +0x7E7D _ +0x7E7E ` +0x7E7F a +0x7E80 b +0x7E81 c +0x7E82 +0x7E83 d +0x7E84 e +0x7E85 f +0x7E86 g +0x7E87 h +0x7E88 i +0x7E89 j +0x7E8A k +0x7E8B l +0x7E8C m +0x7E8D n +0x7E8E o +0x7E8F p +0x7E90 q +0x7E91 r +0x7E92 s +0x7E93 t +0x7E94 u +0x7E95 v +0x7E96 w +0x7E97 x +0x7E98 y +0x7E99 z +0x7E9A { +0x7E9B +0x7E9C | +0x7E9D } +0x7E9E ~ +0x7E9F +0x7EA0 +0x7EA1 +0x7EA2 +0x7EA3 +0x7EA4 +0x7EA5 +0x7EA6 Լ +0x7EA7 +0x7EA8 +0x7EA9 +0x7EAA +0x7EAB +0x7EAC γ +0x7EAD +0x7EAE +0x7EAF +0x7EB0 +0x7EB1 ɴ +0x7EB2 +0x7EB3 +0x7EB4 +0x7EB5 +0x7EB6 +0x7EB7 +0x7EB8 ֽ +0x7EB9 +0x7EBA +0x7EBB +0x7EBC +0x7EBD Ŧ +0x7EBE +0x7EBF +0x7EC0 +0x7EC1 +0x7EC2 +0x7EC3 +0x7EC4 +0x7EC5 +0x7EC6 ϸ +0x7EC7 ֯ +0x7EC8 +0x7EC9 +0x7ECA +0x7ECB +0x7ECC +0x7ECD +0x7ECE +0x7ECF +0x7ED0 +0x7ED1 +0x7ED2 +0x7ED3 +0x7ED4 +0x7ED5 +0x7ED6 +0x7ED7 +0x7ED8 +0x7ED9 +0x7EDA Ѥ +0x7EDB +0x7EDC +0x7EDD +0x7EDE +0x7EDF ͳ +0x7EE0 +0x7EE1 +0x7EE2 +0x7EE3 +0x7EE4 +0x7EE5 +0x7EE6 +0x7EE7 +0x7EE8 +0x7EE9 +0x7EEA +0x7EEB +0x7EEC +0x7EED +0x7EEE +0x7EEF +0x7EF0 +0x7EF1 +0x7EF2 +0x7EF3 +0x7EF4 ά +0x7EF5 +0x7EF6 +0x7EF7 +0x7EF8 +0x7EF9 +0x7EFA +0x7EFB +0x7EFC +0x7EFD +0x7EFE +0x7EFF +0x7F00 ׺ +0x7F01 +0x7F02 +0x7F03 +0x7F04 +0x7F05 +0x7F06 +0x7F07 +0x7F08 +0x7F09 +0x7F0A +0x7F0B +0x7F0C +0x7F0D +0x7F0E +0x7F0F +0x7F10 +0x7F11 +0x7F12 +0x7F13 +0x7F14 +0x7F15 +0x7F16 +0x7F17 +0x7F18 Ե +0x7F19 +0x7F1A +0x7F1B +0x7F1C +0x7F1D +0x7F1E +0x7F1F +0x7F20 +0x7F21 +0x7F22 +0x7F23 +0x7F24 +0x7F25 +0x7F26 +0x7F27 +0x7F28 ӧ +0x7F29 +0x7F2A +0x7F2B +0x7F2C +0x7F2D +0x7F2E +0x7F2F +0x7F30 +0x7F31 +0x7F32 +0x7F33 +0x7F34 +0x7F35 +0x7F36 +0x7F37 +0x7F38 +0x7F39 +0x7F3A ȱ +0x7F3B +0x7F3C +0x7F3D +0x7F3E +0x7F3F +0x7F40 +0x7F41 +0x7F42 +0x7F43 +0x7F44 +0x7F45 +0x7F46 +0x7F47 +0x7F48 +0x7F49 +0x7F4A +0x7F4B +0x7F4C +0x7F4D +0x7F4E +0x7F4F +0x7F50 +0x7F51 +0x7F52 +0x7F53 +0x7F54 +0x7F55 +0x7F56 @ +0x7F57 +0x7F58 +0x7F59 A +0x7F5A +0x7F5B B +0x7F5C C +0x7F5D D +0x7F5E E +0x7F5F +0x7F60 F +0x7F61 +0x7F62 +0x7F63 G +0x7F64 H +0x7F65 I +0x7F66 J +0x7F67 K +0x7F68 +0x7F69 +0x7F6A +0x7F6B L +0x7F6C M +0x7F6D N +0x7F6E +0x7F6F O +0x7F70 P +0x7F71 +0x7F72 +0x7F73 Q +0x7F74 +0x7F75 R +0x7F76 S +0x7F77 T +0x7F78 U +0x7F79 +0x7F7A V +0x7F7B W +0x7F7C X +0x7F7D Y +0x7F7E +0x7F7F Z +0x7F80 [ +0x7F81 +0x7F82 \ +0x7F83 ] +0x7F84 ^ +0x7F85 _ +0x7F86 ` +0x7F87 a +0x7F88 b +0x7F89 c +0x7F8A +0x7F8B d +0x7F8C Ǽ +0x7F8D e +0x7F8E +0x7F8F f +0x7F90 g +0x7F91 h +0x7F92 i +0x7F93 j +0x7F94 +0x7F95 k +0x7F96 l +0x7F97 m +0x7F98 n +0x7F99 o +0x7F9A +0x7F9B p +0x7F9C q +0x7F9D +0x7F9E +0x7F9F +0x7FA0 r +0x7FA1 +0x7FA2 s +0x7FA3 t +0x7FA4 Ⱥ +0x7FA5 u +0x7FA6 v +0x7FA7 +0x7FA8 w +0x7FA9 x +0x7FAA y +0x7FAB z +0x7FAC { +0x7FAD | +0x7FAE } +0x7FAF +0x7FB0 +0x7FB1 ~ +0x7FB2 +0x7FB3 +0x7FB4 +0x7FB5 +0x7FB6 +0x7FB7 +0x7FB8 +0x7FB9 +0x7FBA +0x7FBB +0x7FBC +0x7FBD +0x7FBE +0x7FBF +0x7FC0 +0x7FC1 +0x7FC2 +0x7FC3 +0x7FC4 +0x7FC5 +0x7FC6 +0x7FC7 +0x7FC8 +0x7FC9 +0x7FCA +0x7FCB +0x7FCC +0x7FCD +0x7FCE +0x7FCF +0x7FD0 +0x7FD1 +0x7FD2 +0x7FD3 +0x7FD4 +0x7FD5 +0x7FD6 +0x7FD7 +0x7FD8 +0x7FD9 +0x7FDA +0x7FDB +0x7FDC +0x7FDD +0x7FDE +0x7FDF +0x7FE0 +0x7FE1 +0x7FE2 +0x7FE3 +0x7FE4 @ +0x7FE5 +0x7FE6 +0x7FE7 A +0x7FE8 B +0x7FE9 +0x7FEA C +0x7FEB D +0x7FEC E +0x7FED F +0x7FEE +0x7FEF G +0x7FF0 +0x7FF1 +0x7FF2 H +0x7FF3 +0x7FF4 I +0x7FF5 J +0x7FF6 K +0x7FF7 L +0x7FF8 M +0x7FF9 N +0x7FFA O +0x7FFB +0x7FFC +0x7FFD P +0x7FFE Q +0x7FFF R +0x8000 ҫ +0x8001 +0x8002 S +0x8003 +0x8004 +0x8005 +0x8006 +0x8007 T +0x8008 U +0x8009 V +0x800A W +0x800B +0x800C +0x800D ˣ +0x800E X +0x800F Y +0x8010 +0x8011 Z +0x8012 +0x8013 [ +0x8014 +0x8015 +0x8016 +0x8017 +0x8018 +0x8019 +0x801A \ +0x801B ] +0x801C +0x801D ^ +0x801E _ +0x801F ` +0x8020 +0x8021 a +0x8022 +0x8023 b +0x8024 c +0x8025 +0x8026 +0x8027 +0x8028 +0x8029 +0x802A +0x802B d +0x802C e +0x802D f +0x802E g +0x802F h +0x8030 i +0x8031 +0x8032 j +0x8033 +0x8034 k +0x8035 +0x8036 Ү +0x8037 +0x8038 +0x8039 l +0x803A m +0x803B +0x803C n +0x803D +0x803E o +0x803F +0x8040 p +0x8041 q +0x8042 +0x8043 +0x8044 r +0x8045 s +0x8046 +0x8047 t +0x8048 u +0x8049 v +0x804A +0x804B +0x804C ְ +0x804D +0x804E w +0x804F x +0x8050 y +0x8051 z +0x8052 +0x8053 { +0x8054 +0x8055 | +0x8056 } +0x8057 ~ +0x8058 Ƹ +0x8059 € +0x805A +0x805B  +0x805C ‚ +0x805D ƒ +0x805E „ +0x805F … +0x8060 † +0x8061 ‡ +0x8062 ˆ +0x8063 ‰ +0x8064 Š +0x8065 ‹ +0x8066 Œ +0x8067  +0x8068 Ž +0x8069 +0x806A +0x806B  +0x806C  +0x806D ‘ +0x806E ’ +0x806F “ +0x8070 ” +0x8071 +0x8072 • +0x8073 – +0x8074 — +0x8075 ˜ +0x8076 ™ +0x8077 š +0x8078 › +0x8079 œ +0x807A  +0x807B ž +0x807C Ÿ +0x807D   +0x807E @ +0x807F +0x8080 +0x8081 A +0x8082 B +0x8083 +0x8084 +0x8085 C +0x8086 +0x8087 +0x8088 D +0x8089 +0x808A E +0x808B +0x808C +0x808D F +0x808E G +0x808F H +0x8090 I +0x8091 J +0x8092 K +0x8093 +0x8094 L +0x8095 M +0x8096 Ф +0x8097 N +0x8098 +0x8099 O +0x809A +0x809B +0x809C +0x809D +0x809E P +0x809F +0x80A0 +0x80A1 +0x80A2 ֫ +0x80A3 Q +0x80A4 +0x80A5 +0x80A6 R +0x80A7 S +0x80A8 T +0x80A9 +0x80AA +0x80AB +0x80AC U +0x80AD +0x80AE +0x80AF +0x80B0 V +0x80B1 +0x80B2 +0x80B3 W +0x80B4 +0x80B5 X +0x80B6 Y +0x80B7 +0x80B8 Z +0x80B9 [ +0x80BA +0x80BB \ +0x80BC +0x80BD +0x80BE +0x80BF +0x80C0 +0x80C1 в +0x80C2 +0x80C3 θ +0x80C4 +0x80C5 ] +0x80C6 +0x80C7 ^ +0x80C8 _ +0x80C9 ` +0x80CA a +0x80CB b +0x80CC +0x80CD +0x80CE ̥ +0x80CF c +0x80D0 d +0x80D1 e +0x80D2 f +0x80D3 g +0x80D4 h +0x80D5 i +0x80D6 +0x80D7 +0x80D8 j +0x80D9 +0x80DA +0x80DB +0x80DC ʤ +0x80DD +0x80DE +0x80DF k +0x80E0 l +0x80E1 +0x80E2 m +0x80E3 n +0x80E4 ط +0x80E5 +0x80E6 o +0x80E7 +0x80E8 +0x80E9 +0x80EA +0x80EB +0x80EC +0x80ED +0x80EE p +0x80EF +0x80F0 +0x80F1 +0x80F2 +0x80F3 +0x80F4 +0x80F5 q +0x80F6 +0x80F7 r +0x80F8 +0x80F9 s +0x80FA +0x80FB t +0x80FC +0x80FD +0x80FE u +0x80FF v +0x8100 w +0x8101 x +0x8102 ֬ +0x8103 y +0x8104 z +0x8105 { +0x8106 +0x8107 | +0x8108 } +0x8109 +0x810A +0x810B ~ +0x810C À +0x810D +0x810E +0x810F +0x8110 +0x8111 +0x8112 +0x8113 ŧ +0x8114 +0x8115 Á +0x8116 +0x8117  +0x8118 +0x8119 à +0x811A +0x811B Ä +0x811C Å +0x811D Æ +0x811E +0x811F Ç +0x8120 È +0x8121 É +0x8122 Ê +0x8123 Ë +0x8124 Ì +0x8125 Í +0x8126 Î +0x8127 Ï +0x8128 Ð +0x8129 Ñ +0x812A Ò +0x812B Ó +0x812C +0x812D Ô +0x812E Õ +0x812F +0x8130 Ö +0x8131 +0x8132 +0x8133 × +0x8134 Ø +0x8135 Ù +0x8136 +0x8137 Ú +0x8138 +0x8139 Û +0x813A Ü +0x813B Ý +0x813C Þ +0x813D ß +0x813E Ƣ +0x813F à +0x8140 @ +0x8141 A +0x8142 B +0x8143 C +0x8144 D +0x8145 E +0x8146 +0x8147 F +0x8148 +0x8149 G +0x814A +0x814B Ҹ +0x814C +0x814D H +0x814E I +0x814F J +0x8150 +0x8151 +0x8152 K +0x8153 +0x8154 ǻ +0x8155 +0x8156 L +0x8157 M +0x8158 N +0x8159 +0x815A +0x815B O +0x815C P +0x815D Q +0x815E R +0x815F S +0x8160 +0x8161 T +0x8162 U +0x8163 V +0x8164 W +0x8165 +0x8166 X +0x8167 +0x8168 Y +0x8169 +0x816A Z +0x816B [ +0x816C \ +0x816D +0x816E +0x816F ] +0x8170 +0x8171 +0x8172 ^ +0x8173 _ +0x8174 +0x8175 ` +0x8176 a +0x8177 b +0x8178 c +0x8179 +0x817A +0x817B +0x817C +0x817D +0x817E +0x817F +0x8180 +0x8181 d +0x8182 +0x8183 e +0x8184 f +0x8185 g +0x8186 h +0x8187 i +0x8188 +0x8189 j +0x818A +0x818B k +0x818C l +0x818D m +0x818E n +0x818F +0x8190 o +0x8191 +0x8192 p +0x8193 q +0x8194 r +0x8195 s +0x8196 t +0x8197 u +0x8198 +0x8199 v +0x819A w +0x819B +0x819C Ĥ +0x819D ϥ +0x819E x +0x819F y +0x81A0 z +0x81A1 { +0x81A2 | +0x81A3 +0x81A4 } +0x81A5 ~ +0x81A6 +0x81A7 Ā +0x81A8 +0x81A9 ā +0x81AA +0x81AB Ă +0x81AC ă +0x81AD Ą +0x81AE ą +0x81AF Ć +0x81B0 ć +0x81B1 Ĉ +0x81B2 ĉ +0x81B3 +0x81B4 Ċ +0x81B5 ċ +0x81B6 Č +0x81B7 č +0x81B8 Ď +0x81B9 ď +0x81BA +0x81BB +0x81BC Đ +0x81BD đ +0x81BE Ē +0x81BF ē +0x81C0 +0x81C1 +0x81C2 +0x81C3 ӷ +0x81C4 Ĕ +0x81C5 ĕ +0x81C6 +0x81C7 Ė +0x81C8 ė +0x81C9 Ę +0x81CA +0x81CB ę +0x81CC +0x81CD Ě +0x81CE ě +0x81CF Ĝ +0x81D0 ĝ +0x81D1 Ğ +0x81D2 ğ +0x81D3 Ġ +0x81D4 @ +0x81D5 A +0x81D6 B +0x81D7 C +0x81D8 D +0x81D9 E +0x81DA F +0x81DB G +0x81DC H +0x81DD I +0x81DE J +0x81DF K +0x81E0 L +0x81E1 M +0x81E2 N +0x81E3 +0x81E4 O +0x81E5 P +0x81E6 Q +0x81E7 +0x81E8 R +0x81E9 S +0x81EA +0x81EB T +0x81EC +0x81ED +0x81EE U +0x81EF V +0x81F0 W +0x81F1 X +0x81F2 Y +0x81F3 +0x81F4 +0x81F5 Z +0x81F6 [ +0x81F7 \ +0x81F8 ] +0x81F9 ^ +0x81FA _ +0x81FB +0x81FC +0x81FD ` +0x81FE +0x81FF a +0x8200 Ҩ +0x8201 +0x8202 +0x8203 b +0x8204 +0x8205 +0x8206 +0x8207 c +0x8208 d +0x8209 e +0x820A f +0x820B g +0x820C +0x820D +0x820E h +0x820F i +0x8210 +0x8211 j +0x8212 +0x8213 k +0x8214 +0x8215 l +0x8216 m +0x8217 n +0x8218 o +0x8219 p +0x821A q +0x821B +0x821C ˴ +0x821D r +0x821E +0x821F +0x8220 s +0x8221 +0x8222 +0x8223 +0x8224 t +0x8225 u +0x8226 v +0x8227 w +0x8228 +0x8229 x +0x822A +0x822B +0x822C +0x822D +0x822E y +0x822F +0x8230 +0x8231 +0x8232 z +0x8233 +0x8234 +0x8235 +0x8236 +0x8237 +0x8238 +0x8239 +0x823A { +0x823B +0x823C | +0x823D } +0x823E +0x823F ~ +0x8240 ŀ +0x8241 Ł +0x8242 ł +0x8243 Ń +0x8244 +0x8245 ń +0x8246 Ņ +0x8247 ͧ +0x8248 ņ +0x8249 +0x824A Ň +0x824B +0x824C ň +0x824D ʼn +0x824E Ŋ +0x824F +0x8250 ŋ +0x8251 Ō +0x8252 ō +0x8253 Ŏ +0x8254 ŏ +0x8255 Ő +0x8256 ő +0x8257 Œ +0x8258 +0x8259 œ +0x825A +0x825B Ŕ +0x825C ŕ +0x825D Ŗ +0x825E ŗ +0x825F +0x8260 Ř +0x8261 ř +0x8262 Ś +0x8263 ś +0x8264 Ŝ +0x8265 ŝ +0x8266 Ş +0x8267 ş +0x8268 +0x8269 Š +0x826A @ +0x826B A +0x826C B +0x826D C +0x826E +0x826F +0x8270 +0x8271 D +0x8272 ɫ +0x8273 +0x8274 +0x8275 E +0x8276 F +0x8277 G +0x8278 H +0x8279 ܳ +0x827A +0x827B I +0x827C J +0x827D ܴ +0x827E +0x827F ܵ +0x8280 K +0x8281 L +0x8282 +0x8283 M +0x8284 ܹ +0x8285 N +0x8286 O +0x8287 P +0x8288 +0x8289 Q +0x828A ܷ +0x828B +0x828C R +0x828D +0x828E ܺ +0x828F ܶ +0x8290 S +0x8291 ܻ +0x8292 â +0x8293 T +0x8294 U +0x8295 V +0x8296 W +0x8297 ܼ +0x8298 +0x8299 ܽ +0x829A X +0x829B Y +0x829C +0x829D ֥ +0x829E Z +0x829F +0x82A0 [ +0x82A1 +0x82A2 \ +0x82A3 ] +0x82A4 +0x82A5 +0x82A6 « +0x82A7 ^ +0x82A8 ܸ +0x82A9 +0x82AA +0x82AB ܾ +0x82AC +0x82AD +0x82AE +0x82AF о +0x82B0 +0x82B1 +0x82B2 _ +0x82B3 +0x82B4 +0x82B5 ` +0x82B6 a +0x82B7 +0x82B8 ܿ +0x82B9 +0x82BA b +0x82BB c +0x82BC d +0x82BD ѿ +0x82BE +0x82BF e +0x82C0 f +0x82C1 +0x82C2 g +0x82C3 h +0x82C4 +0x82C5 i +0x82C6 j +0x82C7 έ +0x82C8 +0x82C9 k +0x82CA +0x82CB +0x82CC +0x82CD +0x82CE +0x82CF +0x82D0 l +0x82D1 Է +0x82D2 +0x82D3 +0x82D4 ̦ +0x82D5 +0x82D6 m +0x82D7 +0x82D8 +0x82D9 n +0x82DA o +0x82DB +0x82DC +0x82DD p +0x82DE +0x82DF +0x82E0 +0x82E1 +0x82E2 q +0x82E3 +0x82E4 +0x82E5 +0x82E6 +0x82E7 r +0x82E8 s +0x82E9 t +0x82EA u +0x82EB ɻ +0x82EC v +0x82ED w +0x82EE x +0x82EF +0x82F0 y +0x82F1 Ӣ +0x82F2 z +0x82F3 { +0x82F4 +0x82F5 | +0x82F6 } +0x82F7 +0x82F8 ~ +0x82F9 ƻ +0x82FA ƀ +0x82FB +0x82FC Ɓ +0x82FD Ƃ +0x82FE ƃ +0x82FF Ƅ +0x8300 ƅ +0x8301 +0x8302 ï +0x8303 +0x8304 +0x8305 é +0x8306 +0x8307 +0x8308 +0x8309 +0x830A Ɔ +0x830B Ƈ +0x830C +0x830D ƈ +0x830E +0x830F +0x8310 Ɖ +0x8311 +0x8312 Ɗ +0x8313 Ƌ +0x8314 +0x8315 +0x8316 ƌ +0x8317 +0x8318 ƍ +0x8319 Ǝ +0x831A +0x831B ݢ +0x831C +0x831D Ə +0x831E Ɛ +0x831F Ƒ +0x8320 ƒ +0x8321 Ɠ +0x8322 Ɣ +0x8323 ƕ +0x8324 Ɩ +0x8325 Ɨ +0x8326 Ƙ +0x8327 +0x8328 +0x8329 ƙ +0x832A ƚ +0x832B ã +0x832C +0x832D +0x832E ƛ +0x832F +0x8330 Ɯ +0x8331 +0x8332 Ɲ +0x8333 +0x8334 +0x8335 +0x8336 +0x8337 ƞ +0x8338 +0x8339 +0x833A +0x833B Ɵ +0x833C +0x833D Ơ +0x833E @ +0x833F A +0x8340 +0x8341 B +0x8342 C +0x8343 +0x8344 D +0x8345 E +0x8346 +0x8347 +0x8348 F +0x8349 +0x834A G +0x834B H +0x834C I +0x834D J +0x834E K +0x834F +0x8350 +0x8351 +0x8352 +0x8353 L +0x8354 +0x8355 M +0x8356 N +0x8357 O +0x8358 P +0x8359 Q +0x835A +0x835B +0x835C +0x835D R +0x835E +0x835F +0x8360 +0x8361 +0x8362 S +0x8363 +0x8364 +0x8365 +0x8366 +0x8367 ӫ +0x8368 ݡ +0x8369 ݣ +0x836A ݥ +0x836B +0x836C ݤ +0x836D ݦ +0x836E ݧ +0x836F ҩ +0x8370 T +0x8371 U +0x8372 V +0x8373 W +0x8374 X +0x8375 Y +0x8376 Z +0x8377 +0x8378 ݩ +0x8379 [ +0x837A \ +0x837B ݶ +0x837C ݱ +0x837D ݴ +0x837E ] +0x837F ^ +0x8380 _ +0x8381 ` +0x8382 a +0x8383 b +0x8384 c +0x8385 ݰ +0x8386 +0x8387 d +0x8388 e +0x8389 +0x838A f +0x838B g +0x838C h +0x838D i +0x838E ɯ +0x838F j +0x8390 k +0x8391 l +0x8392 +0x8393 ݮ +0x8394 m +0x8395 n +0x8396 o +0x8397 p +0x8398 ݷ +0x8399 q +0x839A r +0x839B +0x839C ݯ +0x839D s +0x839E ݸ +0x839F t +0x83A0 ݬ +0x83A1 u +0x83A2 v +0x83A3 w +0x83A4 x +0x83A5 y +0x83A6 z +0x83A7 { +0x83A8 ݹ +0x83A9 ݳ +0x83AA ݭ +0x83AB Ī +0x83AC | +0x83AD } +0x83AE ~ +0x83AF ǀ +0x83B0 ݨ +0x83B1 +0x83B2 +0x83B3 ݪ +0x83B4 ݫ +0x83B5 ǁ +0x83B6 ݲ +0x83B7 +0x83B8 ݵ +0x83B9 Ө +0x83BA ݺ +0x83BB ǂ +0x83BC ݻ +0x83BD ç +0x83BE ǃ +0x83BF DŽ +0x83C0 +0x83C1 ݼ +0x83C2 Dž +0x83C3 dž +0x83C4 LJ +0x83C5 +0x83C6 Lj +0x83C7 +0x83C8 lj +0x83C9 NJ +0x83CA +0x83CB Nj +0x83CC +0x83CD nj +0x83CE Ǎ +0x83CF +0x83D0 ǎ +0x83D1 Ǐ +0x83D2 ǐ +0x83D3 Ǒ +0x83D4 +0x83D5 ǒ +0x83D6 +0x83D7 Ǔ +0x83D8 ݿ +0x83D9 ǔ +0x83DA Ǖ +0x83DB ǖ +0x83DC +0x83DD +0x83DE Ǘ +0x83DF +0x83E0 +0x83E1 +0x83E2 ǘ +0x83E3 Ǚ +0x83E4 ǚ +0x83E5 ݾ +0x83E6 Ǜ +0x83E7 ǜ +0x83E8 ǝ +0x83E9 +0x83EA +0x83EB Ǟ +0x83EC ǟ +0x83ED Ǡ +0x83EE @ +0x83EF A +0x83F0 +0x83F1 +0x83F2 +0x83F3 B +0x83F4 C +0x83F5 D +0x83F6 E +0x83F7 F +0x83F8 +0x83F9 +0x83FA G +0x83FB H +0x83FC I +0x83FD +0x83FE J +0x83FF K +0x8400 L +0x8401 ݽ +0x8402 M +0x8403 +0x8404 +0x8405 N +0x8406 +0x8407 O +0x8408 P +0x8409 Q +0x840A R +0x840B +0x840C +0x840D Ƽ +0x840E ή +0x840F +0x8410 S +0x8411 +0x8412 T +0x8413 U +0x8414 V +0x8415 W +0x8416 X +0x8417 Y +0x8418 +0x8419 Z +0x841A [ +0x841B \ +0x841C +0x841D +0x841E ] +0x841F ^ +0x8420 _ +0x8421 ` +0x8422 a +0x8423 b +0x8424 ө +0x8425 Ӫ +0x8426 +0x8427 +0x8428 +0x8429 c +0x842A d +0x842B e +0x842C f +0x842D g +0x842E h +0x842F i +0x8430 j +0x8431 +0x8432 k +0x8433 l +0x8434 m +0x8435 n +0x8436 o +0x8437 p +0x8438 +0x8439 q +0x843A r +0x843B s +0x843C +0x843D +0x843E t +0x843F u +0x8440 v +0x8441 w +0x8442 x +0x8443 y +0x8444 z +0x8445 { +0x8446 +0x8447 | +0x8448 } +0x8449 ~ +0x844A Ȁ +0x844B ȁ +0x844C Ȃ +0x844D ȃ +0x844E Ȅ +0x844F ȅ +0x8450 Ȇ +0x8451 +0x8452 ȇ +0x8453 Ȉ +0x8454 ȉ +0x8455 Ȋ +0x8456 ȋ +0x8457 +0x8458 Ȍ +0x8459 +0x845A +0x845B +0x845C +0x845D ȍ +0x845E Ȏ +0x845F ȏ +0x8460 Ȑ +0x8461 +0x8462 ȑ +0x8463 +0x8464 Ȓ +0x8465 ȓ +0x8466 Ȕ +0x8467 ȕ +0x8468 Ȗ +0x8469 +0x846A ȗ +0x846B +0x846C +0x846D +0x846E Ș +0x846F ș +0x8470 Ț +0x8471 +0x8472 ț +0x8473 +0x8474 Ȝ +0x8475 +0x8476 +0x8477 ȝ +0x8478 +0x8479 Ȟ +0x847A +0x847B ȟ +0x847C Ƞ +0x847D @ +0x847E A +0x847F B +0x8480 C +0x8481 D +0x8482 +0x8483 E +0x8484 F +0x8485 G +0x8486 H +0x8487 +0x8488 +0x8489 +0x848A I +0x848B +0x848C +0x848D J +0x848E +0x848F K +0x8490 L +0x8491 M +0x8492 N +0x8493 O +0x8494 P +0x8495 Q +0x8496 R +0x8497 +0x8498 S +0x8499 +0x849A T +0x849B U +0x849C +0x849D V +0x849E W +0x849F X +0x84A0 Y +0x84A1 +0x84A2 Z +0x84A3 [ +0x84A4 \ +0x84A5 ] +0x84A6 ^ +0x84A7 _ +0x84A8 ` +0x84A9 a +0x84AA b +0x84AB c +0x84AC d +0x84AD e +0x84AE f +0x84AF +0x84B0 g +0x84B1 h +0x84B2 +0x84B3 i +0x84B4 +0x84B5 j +0x84B6 k +0x84B7 l +0x84B8 +0x84B9 +0x84BA +0x84BB m +0x84BC n +0x84BD +0x84BE o +0x84BF +0x84C0 p +0x84C1 +0x84C2 q +0x84C3 r +0x84C4 +0x84C5 s +0x84C6 t +0x84C7 u +0x84C8 v +0x84C9 +0x84CA +0x84CB w +0x84CC x +0x84CD +0x84CE y +0x84CF z +0x84D0 +0x84D1 +0x84D2 { +0x84D3 +0x84D4 | +0x84D5 } +0x84D6 +0x84D7 ~ +0x84D8 ɀ +0x84D9 Ɂ +0x84DA ɂ +0x84DB Ƀ +0x84DC Ʉ +0x84DD +0x84DE Ʌ +0x84DF +0x84E0 +0x84E1 Ɇ +0x84E2 ɇ +0x84E3 +0x84E4 Ɉ +0x84E5 +0x84E6 +0x84E7 ɉ +0x84E8 Ɋ +0x84E9 ɋ +0x84EA Ɍ +0x84EB ɍ +0x84EC +0x84ED Ɏ +0x84EE ɏ +0x84EF ɐ +0x84F0 +0x84F1 ɑ +0x84F2 ɒ +0x84F3 ɓ +0x84F4 ɔ +0x84F5 ɕ +0x84F6 ɖ +0x84F7 ɗ +0x84F8 ɘ +0x84F9 ə +0x84FA ɚ +0x84FB ɛ +0x84FC ޤ +0x84FD ɜ +0x84FE ɝ +0x84FF ޣ +0x8500 ɞ +0x8501 ɟ +0x8502 ɠ +0x8503 @ +0x8504 A +0x8505 B +0x8506 C +0x8507 D +0x8508 E +0x8509 F +0x850A G +0x850B H +0x850C +0x850D I +0x850E J +0x850F K +0x8510 L +0x8511 +0x8512 M +0x8513 +0x8514 N +0x8515 O +0x8516 P +0x8517 +0x8518 Q +0x8519 R +0x851A ε +0x851B S +0x851C T +0x851D U +0x851E V +0x851F +0x8520 W +0x8521 +0x8522 X +0x8523 Y +0x8524 Z +0x8525 [ +0x8526 \ +0x8527 ] +0x8528 ^ +0x8529 _ +0x852A ` +0x852B +0x852C +0x852D a +0x852E b +0x852F c +0x8530 d +0x8531 e +0x8532 f +0x8533 g +0x8534 h +0x8535 i +0x8536 j +0x8537 Ǿ +0x8538 +0x8539 +0x853A +0x853B ޢ +0x853C +0x853D +0x853E k +0x853F l +0x8540 m +0x8541 n +0x8542 o +0x8543 ެ +0x8544 p +0x8545 q +0x8546 r +0x8547 s +0x8548 ަ +0x8549 +0x854A +0x854B t +0x854C u +0x854D v +0x854E w +0x854F x +0x8550 y +0x8551 z +0x8552 { +0x8553 | +0x8554 } +0x8555 ~ +0x8556 ޡ +0x8557 ʀ +0x8558 ʁ +0x8559 ޥ +0x855A ʂ +0x855B ʃ +0x855C ʄ +0x855D ʅ +0x855E ީ +0x855F ʆ +0x8560 ʇ +0x8561 ʈ +0x8562 ʉ +0x8563 ʊ +0x8564 ި +0x8565 ʋ +0x8566 ʌ +0x8567 ʍ +0x8568 ާ +0x8569 ʎ +0x856A ʏ +0x856B ʐ +0x856C ʑ +0x856D ʒ +0x856E ʓ +0x856F ʔ +0x8570 ʕ +0x8571 ʖ +0x8572 ޭ +0x8573 ʗ +0x8574 +0x8575 ʘ +0x8576 ʙ +0x8577 ʚ +0x8578 ʛ +0x8579 ޳ +0x857A ު +0x857B ޮ +0x857C ʜ +0x857D ʝ +0x857E +0x857F ʞ +0x8580 ʟ +0x8581 ʠ +0x8582 @ +0x8583 A +0x8584 +0x8585 ޶ +0x8586 B +0x8587 ޱ +0x8588 C +0x8589 D +0x858A E +0x858B F +0x858C G +0x858D H +0x858E I +0x858F ޲ +0x8590 J +0x8591 K +0x8592 L +0x8593 M +0x8594 N +0x8595 O +0x8596 P +0x8597 Q +0x8598 R +0x8599 S +0x859A T +0x859B Ѧ +0x859C ޵ +0x859D U +0x859E V +0x859F W +0x85A0 X +0x85A1 Y +0x85A2 Z +0x85A3 [ +0x85A4 ޯ +0x85A5 \ +0x85A6 ] +0x85A7 ^ +0x85A8 ް +0x85A9 _ +0x85AA н +0x85AB ` +0x85AC a +0x85AD b +0x85AE ޴ +0x85AF +0x85B0 ޹ +0x85B1 c +0x85B2 d +0x85B3 e +0x85B4 f +0x85B5 g +0x85B6 h +0x85B7 ޸ +0x85B8 i +0x85B9 ޷ +0x85BA j +0x85BB k +0x85BC l +0x85BD m +0x85BE n +0x85BF o +0x85C0 p +0x85C1 ޻ +0x85C2 q +0x85C3 r +0x85C4 s +0x85C5 t +0x85C6 u +0x85C7 v +0x85C8 w +0x85C9 +0x85CA x +0x85CB y +0x85CC z +0x85CD { +0x85CE | +0x85CF +0x85D0 +0x85D1 } +0x85D2 ~ +0x85D3 ޺ +0x85D4 ˀ +0x85D5 ź +0x85D6 ˁ +0x85D7 ˂ +0x85D8 ˃ +0x85D9 ˄ +0x85DA ˅ +0x85DB ˆ +0x85DC ޼ +0x85DD ˇ +0x85DE ˈ +0x85DF ˉ +0x85E0 ˊ +0x85E1 ˋ +0x85E2 ˌ +0x85E3 ˍ +0x85E4 +0x85E5 ˎ +0x85E6 ˏ +0x85E7 ː +0x85E8 ˑ +0x85E9 +0x85EA ˒ +0x85EB ˓ +0x85EC ˔ +0x85ED ˕ +0x85EE ˖ +0x85EF ˗ +0x85F0 ˘ +0x85F1 ˙ +0x85F2 ˚ +0x85F3 ˛ +0x85F4 ˜ +0x85F5 ˝ +0x85F6 ˞ +0x85F7 ˟ +0x85F8 ˠ +0x85F9 @ +0x85FA A +0x85FB +0x85FC B +0x85FD C +0x85FE D +0x85FF ޽ +0x8600 E +0x8601 F +0x8602 G +0x8603 H +0x8604 I +0x8605 ޿ +0x8606 J +0x8607 K +0x8608 L +0x8609 M +0x860A N +0x860B O +0x860C P +0x860D Q +0x860E R +0x860F S +0x8610 T +0x8611 Ģ +0x8612 U +0x8613 V +0x8614 W +0x8615 X +0x8616 +0x8617 Y +0x8618 Z +0x8619 [ +0x861A \ +0x861B ] +0x861C ^ +0x861D _ +0x861E ` +0x861F a +0x8620 b +0x8621 c +0x8622 d +0x8623 e +0x8624 f +0x8625 g +0x8626 h +0x8627 ޾ +0x8628 i +0x8629 +0x862A j +0x862B k +0x862C l +0x862D m +0x862E n +0x862F o +0x8630 p +0x8631 q +0x8632 r +0x8633 s +0x8634 t +0x8635 u +0x8636 v +0x8637 w +0x8638 պ +0x8639 x +0x863A y +0x863B z +0x863C +0x863D { +0x863E | +0x863F } +0x8640 ~ +0x8641 ̀ +0x8642 ́ +0x8643 ̂ +0x8644 ̃ +0x8645 ̄ +0x8646 ̅ +0x8647 ̆ +0x8648 ̇ +0x8649 ̈ +0x864A ̉ +0x864B ̊ +0x864C ̋ +0x864D +0x864E +0x864F ² +0x8650 Ű +0x8651 +0x8652 ̌ +0x8653 ̍ +0x8654 +0x8655 ̎ +0x8656 ̏ +0x8657 ̐ +0x8658 ̑ +0x8659 ̒ +0x865A +0x865B ̓ +0x865C ̔ +0x865D ̕ +0x865E +0x865F ̖ +0x8660 ̗ +0x8661 ̘ +0x8662 +0x8663 ̙ +0x8664 ̚ +0x8665 ̛ +0x8666 ̜ +0x8667 ̝ +0x8668 ̞ +0x8669 ̟ +0x866A ̠ +0x866B +0x866C +0x866D @ +0x866E +0x866F A +0x8670 B +0x8671 ʭ +0x8672 C +0x8673 D +0x8674 E +0x8675 F +0x8676 G +0x8677 H +0x8678 I +0x8679 +0x867A +0x867B +0x867C +0x867D +0x867E Ϻ +0x867F +0x8680 ʴ +0x8681 +0x8682 +0x8683 J +0x8684 K +0x8685 L +0x8686 M +0x8687 N +0x8688 O +0x8689 P +0x868A +0x868B +0x868C +0x868D +0x868E Q +0x868F R +0x8690 S +0x8691 T +0x8692 U +0x8693 +0x8694 V +0x8695 +0x8696 W +0x8697 X +0x8698 Y +0x8699 Z +0x869A [ +0x869B \ +0x869C +0x869D +0x869E ] +0x869F ^ +0x86A0 _ +0x86A1 ` +0x86A2 a +0x86A3 +0x86A4 +0x86A5 b +0x86A6 c +0x86A7 +0x86A8 +0x86A9 +0x86AA +0x86AB d +0x86AC +0x86AD e +0x86AE f +0x86AF +0x86B0 +0x86B1 +0x86B2 g +0x86B3 h +0x86B4 +0x86B5 +0x86B6 +0x86B7 i +0x86B8 j +0x86B9 k +0x86BA +0x86BB l +0x86BC m +0x86BD n +0x86BE o +0x86BF p +0x86C0 +0x86C1 q +0x86C2 r +0x86C3 s +0x86C4 +0x86C5 t +0x86C6 +0x86C7 +0x86C8 u +0x86C9 +0x86CA +0x86CB +0x86CC v +0x86CD w +0x86CE +0x86CF +0x86D0 +0x86D1 +0x86D2 x +0x86D3 y +0x86D4 +0x86D5 z +0x86D6 { +0x86D7 | +0x86D8 +0x86D9 +0x86DA } +0x86DB +0x86DC ~ +0x86DD ̀ +0x86DE +0x86DF +0x86E0 ́ +0x86E1 ͂ +0x86E2 ̓ +0x86E3 ̈́ +0x86E4 +0x86E5 ͅ +0x86E6 ͆ +0x86E7 ͇ +0x86E8 ͈ +0x86E9 +0x86EA ͉ +0x86EB ͊ +0x86EC ͋ +0x86ED +0x86EE +0x86EF ͌ +0x86F0 +0x86F1 +0x86F2 +0x86F3 +0x86F4 +0x86F5 ͍ +0x86F6 ͎ +0x86F7 ͏ +0x86F8 +0x86F9 Ӽ +0x86FA ͐ +0x86FB ͑ +0x86FC ͒ +0x86FD ͓ +0x86FE +0x86FF ͔ +0x8700 +0x8701 ͕ +0x8702 +0x8703 +0x8704 ͖ +0x8705 ͗ +0x8706 ͘ +0x8707 +0x8708 +0x8709 +0x870A +0x870B ͙ +0x870C ͚ +0x870D +0x870E ͛ +0x870F ͜ +0x8710 ͝ +0x8711 ͞ +0x8712 +0x8713 +0x8714 ͟ +0x8715 +0x8716 ͠ +0x8717 +0x8718 ֩ +0x8719 @ +0x871A +0x871B A +0x871C +0x871D B +0x871E +0x871F C +0x8720 D +0x8721 +0x8722 +0x8723 +0x8724 E +0x8725 +0x8726 F +0x8727 G +0x8728 H +0x8729 +0x872A I +0x872B J +0x872C K +0x872D L +0x872E +0x872F M +0x8730 N +0x8731 +0x8732 O +0x8733 P +0x8734 +0x8735 Q +0x8736 R +0x8737 +0x8738 S +0x8739 T +0x873A U +0x873B +0x873C V +0x873D W +0x873E +0x873F +0x8740 X +0x8741 Y +0x8742 Z +0x8743 [ +0x8744 \ +0x8745 ] +0x8746 ^ +0x8747 Ӭ +0x8748 +0x8749 +0x874A _ +0x874B ` +0x874C +0x874D a +0x874E Ы +0x874F b +0x8750 c +0x8751 d +0x8752 e +0x8753 +0x8754 f +0x8755 g +0x8756 h +0x8757 +0x8758 i +0x8759 +0x875A j +0x875B k +0x875C l +0x875D m +0x875E n +0x875F o +0x8760 +0x8761 p +0x8762 q +0x8763 +0x8764 +0x8765 +0x8766 r +0x8767 s +0x8768 t +0x8769 u +0x876A v +0x876B w +0x876C x +0x876D y +0x876E +0x876F z +0x8770 +0x8771 { +0x8772 | +0x8773 } +0x8774 +0x8775 ~ +0x8776 +0x8777 ΀ +0x8778 ΁ +0x8779 ΂ +0x877A ΃ +0x877B +0x877C +0x877D +0x877E +0x877F ΄ +0x8780 ΅ +0x8781 Ά +0x8782 +0x8783 +0x8784 · +0x8785 +0x8786 Έ +0x8787 Ή +0x8788 +0x8789 Ί +0x878A ΋ +0x878B +0x878C Ό +0x878D +0x878E ΍ +0x878F Ύ +0x8790 Ώ +0x8791 ΐ +0x8792 Α +0x8793 +0x8794 Β +0x8795 Γ +0x8796 Δ +0x8797 +0x8798 Ε +0x8799 Ζ +0x879A Η +0x879B Θ +0x879C Ι +0x879D Κ +0x879E Λ +0x879F +0x87A0 Μ +0x87A1 Ν +0x87A2 Ξ +0x87A3 Ο +0x87A4 Π +0x87A5 @ +0x87A6 A +0x87A7 B +0x87A8 +0x87A9 C +0x87AA D +0x87AB +0x87AC +0x87AD +0x87AE E +0x87AF +0x87B0 F +0x87B1 G +0x87B2 H +0x87B3 +0x87B4 I +0x87B5 +0x87B6 J +0x87B7 K +0x87B8 L +0x87B9 M +0x87BA +0x87BB N +0x87BC O +0x87BD +0x87BE P +0x87BF Q +0x87C0 +0x87C1 R +0x87C2 S +0x87C3 T +0x87C4 U +0x87C5 V +0x87C6 +0x87C7 W +0x87C8 X +0x87C9 Y +0x87CA +0x87CB +0x87CC Z +0x87CD [ +0x87CE \ +0x87CF ] +0x87D0 ^ +0x87D1 +0x87D2 +0x87D3 +0x87D4 _ +0x87D5 ` +0x87D6 a +0x87D7 b +0x87D8 c +0x87D9 d +0x87DA e +0x87DB +0x87DC f +0x87DD g +0x87DE h +0x87DF i +0x87E0 +0x87E1 j +0x87E2 k +0x87E3 l +0x87E4 m +0x87E5 +0x87E6 n +0x87E7 o +0x87E8 p +0x87E9 q +0x87EA +0x87EB r +0x87EC s +0x87ED t +0x87EE +0x87EF u +0x87F0 v +0x87F1 w +0x87F2 x +0x87F3 y +0x87F4 z +0x87F5 { +0x87F6 | +0x87F7 } +0x87F8 ~ +0x87F9 з +0x87FA π +0x87FB ρ +0x87FC ς +0x87FD σ +0x87FE +0x87FF τ +0x8800 υ +0x8801 φ +0x8802 χ +0x8803 +0x8804 ψ +0x8805 ω +0x8806 ϊ +0x8807 ϋ +0x8808 ό +0x8809 ύ +0x880A +0x880B ώ +0x880C Ϗ +0x880D ϐ +0x880E ϑ +0x880F ϒ +0x8810 ϓ +0x8811 ϔ +0x8812 ϕ +0x8813 +0x8814 ϖ +0x8815 +0x8816 +0x8817 ϗ +0x8818 Ϙ +0x8819 ϙ +0x881A Ϛ +0x881B +0x881C ϛ +0x881D Ϝ +0x881E ϝ +0x881F Ϟ +0x8820 ϟ +0x8821 +0x8822 +0x8823 Ϡ +0x8824 @ +0x8825 A +0x8826 B +0x8827 C +0x8828 D +0x8829 E +0x882A F +0x882B G +0x882C H +0x882D I +0x882E J +0x882F K +0x8830 L +0x8831 M +0x8832 +0x8833 N +0x8834 O +0x8835 P +0x8836 Q +0x8837 R +0x8838 S +0x8839 +0x883A T +0x883B U +0x883C +0x883D V +0x883E W +0x883F X +0x8840 Ѫ +0x8841 Y +0x8842 Z +0x8843 [ +0x8844 +0x8845 +0x8846 \ +0x8847 ] +0x8848 ^ +0x8849 _ +0x884A ` +0x884B a +0x884C +0x884D +0x884E b +0x884F c +0x8850 d +0x8851 e +0x8852 f +0x8853 g +0x8854 +0x8855 h +0x8856 i +0x8857 +0x8858 j +0x8859 +0x885A k +0x885B l +0x885C m +0x885D n +0x885E o +0x885F p +0x8860 q +0x8861 +0x8862 +0x8863 +0x8864 +0x8865 +0x8866 r +0x8867 s +0x8868 +0x8869 +0x886A t +0x886B +0x886C +0x886D u +0x886E +0x886F v +0x8870 ˥ +0x8871 w +0x8872 +0x8873 x +0x8874 y +0x8875 z +0x8876 { +0x8877 +0x8878 | +0x8879 } +0x887A ~ +0x887B Ѐ +0x887C Ё +0x887D +0x887E +0x887F +0x8880 Ђ +0x8881 Ԭ +0x8882 +0x8883 Ѓ +0x8884 +0x8885 +0x8886 Є +0x8887 Ѕ +0x8888 +0x8889 І +0x888A Ї +0x888B +0x888C Ј +0x888D +0x888E Љ +0x888F Њ +0x8890 Ћ +0x8891 Ќ +0x8892 ̻ +0x8893 Ѝ +0x8894 Ў +0x8895 Џ +0x8896 +0x8897 А +0x8898 Б +0x8899 В +0x889A Г +0x889B Д +0x889C +0x889D Е +0x889E Ж +0x889F З +0x88A0 И +0x88A1 Й +0x88A2 +0x88A3 К +0x88A4 +0x88A5 Л +0x88A6 М +0x88A7 Н +0x88A8 О +0x88A9 П +0x88AA Р +0x88AB +0x88AC @ +0x88AD Ϯ +0x88AE A +0x88AF B +0x88B0 C +0x88B1 +0x88B2 D +0x88B3 E +0x88B4 F +0x88B5 G +0x88B6 H +0x88B7 +0x88B8 I +0x88B9 J +0x88BA K +0x88BB L +0x88BC +0x88BD M +0x88BE N +0x88BF O +0x88C0 P +0x88C1 +0x88C2 +0x88C3 Q +0x88C4 R +0x88C5 װ +0x88C6 +0x88C7 S +0x88C8 T +0x88C9 +0x88CA U +0x88CB V +0x88CC W +0x88CD X +0x88CE +0x88CF Y +0x88D0 Z +0x88D1 [ +0x88D2 +0x88D3 \ +0x88D4 +0x88D5 ԣ +0x88D6 ] +0x88D7 ^ +0x88D8 +0x88D9 ȹ +0x88DA _ +0x88DB ` +0x88DC a +0x88DD b +0x88DE c +0x88DF +0x88E0 d +0x88E1 e +0x88E2 +0x88E3 +0x88E4 +0x88E5 +0x88E6 f +0x88E7 g +0x88E8 +0x88E9 h +0x88EA i +0x88EB j +0x88EC k +0x88ED l +0x88EE m +0x88EF n +0x88F0 +0x88F1 +0x88F2 o +0x88F3 +0x88F4 +0x88F5 p +0x88F6 q +0x88F7 r +0x88F8 +0x88F9 +0x88FA s +0x88FB t +0x88FC +0x88FD u +0x88FE +0x88FF v +0x8900 w +0x8901 x +0x8902 +0x8903 y +0x8904 z +0x8905 { +0x8906 | +0x8907 } +0x8908 ~ +0x8909 р +0x890A +0x890B с +0x890C т +0x890D у +0x890E ф +0x890F х +0x8910 +0x8911 ц +0x8912 +0x8913 +0x8914 ч +0x8915 ш +0x8916 щ +0x8917 ъ +0x8918 ы +0x8919 +0x891A +0x891B +0x891C ь +0x891D э +0x891E ю +0x891F я +0x8920 ѐ +0x8921 +0x8922 ё +0x8923 ђ +0x8924 ѓ +0x8925 +0x8926 є +0x8927 ѕ +0x8928 і +0x8929 ї +0x892A +0x892B +0x892C ј +0x892D љ +0x892E њ +0x892F ћ +0x8930 +0x8931 ќ +0x8932 ѝ +0x8933 ў +0x8934 +0x8935 џ +0x8936 +0x8937 Ѡ +0x8938 @ +0x8939 A +0x893A B +0x893B C +0x893C D +0x893D E +0x893E F +0x893F G +0x8940 H +0x8941 +0x8942 I +0x8943 J +0x8944 +0x8945 K +0x8946 L +0x8947 M +0x8948 N +0x8949 O +0x894A P +0x894B Q +0x894C R +0x894D S +0x894E T +0x894F U +0x8950 V +0x8951 W +0x8952 X +0x8953 Y +0x8954 Z +0x8955 [ +0x8956 \ +0x8957 ] +0x8958 ^ +0x8959 _ +0x895A ` +0x895B a +0x895C b +0x895D c +0x895E +0x895F +0x8960 d +0x8961 e +0x8962 f +0x8963 g +0x8964 h +0x8965 i +0x8966 +0x8967 j +0x8968 k +0x8969 l +0x896A m +0x896B n +0x896C o +0x896D p +0x896E q +0x896F r +0x8970 s +0x8971 t +0x8972 u +0x8973 v +0x8974 w +0x8975 x +0x8976 y +0x8977 z +0x8978 { +0x8979 | +0x897A } +0x897B +0x897C ~ +0x897D Ҁ +0x897E ҁ +0x897F +0x8980 ҂ +0x8981 Ҫ +0x8982 ҃ +0x8983 +0x8984 ҄ +0x8985 ҅ +0x8986 +0x8987 ҆ +0x8988 ҇ +0x8989 ҈ +0x898A ҉ +0x898B Ҋ +0x898C ҋ +0x898D Ҍ +0x898E ҍ +0x898F Ҏ +0x8990 ҏ +0x8991 Ґ +0x8992 ґ +0x8993 Ғ +0x8994 ғ +0x8995 Ҕ +0x8996 ҕ +0x8997 Җ +0x8998 җ +0x8999 Ҙ +0x899A ҙ +0x899B Қ +0x899C қ +0x899D Ҝ +0x899E ҝ +0x899F Ҟ +0x89A0 ҟ +0x89A1 Ҡ +0x89A2 @ +0x89A3 A +0x89A4 B +0x89A5 C +0x89A6 D +0x89A7 E +0x89A8 F +0x89A9 G +0x89AA H +0x89AB I +0x89AC J +0x89AD K +0x89AE L +0x89AF M +0x89B0 N +0x89B1 O +0x89B2 P +0x89B3 Q +0x89B4 R +0x89B5 S +0x89B6 T +0x89B7 U +0x89B8 V +0x89B9 W +0x89BA X +0x89BB Y +0x89BC Z +0x89BD [ +0x89BE \ +0x89BF ] +0x89C0 ^ +0x89C1 +0x89C2 +0x89C3 _ +0x89C4 +0x89C5 +0x89C6 +0x89C7 +0x89C8 +0x89C9 +0x89CA +0x89CB +0x89CC +0x89CD ` +0x89CE +0x89CF +0x89D0 +0x89D1 +0x89D2 +0x89D3 a +0x89D4 b +0x89D5 c +0x89D6 +0x89D7 d +0x89D8 e +0x89D9 f +0x89DA +0x89DB g +0x89DC +0x89DD h +0x89DE +0x89DF i +0x89E0 j +0x89E1 k +0x89E2 l +0x89E3 +0x89E4 m +0x89E5 +0x89E6 +0x89E7 n +0x89E8 o +0x89E9 p +0x89EA q +0x89EB +0x89EC r +0x89ED s +0x89EE t +0x89EF +0x89F0 u +0x89F1 v +0x89F2 w +0x89F3 +0x89F4 x +0x89F5 y +0x89F6 z +0x89F7 { +0x89F8 | +0x89F9 } +0x89FA ~ +0x89FB Ӏ +0x89FC Ӂ +0x89FD ӂ +0x89FE Ӄ +0x89FF ӄ +0x8A00 +0x8A01 Ӆ +0x8A02 ӆ +0x8A03 Ӈ +0x8A04 ӈ +0x8A05 Ӊ +0x8A06 ӊ +0x8A07 +0x8A08 Ӌ +0x8A09 ӌ +0x8A0A Ӎ +0x8A0B ӎ +0x8A0C ӏ +0x8A0D Ӑ +0x8A0E ӑ +0x8A0F Ӓ +0x8A10 ӓ +0x8A11 Ӕ +0x8A12 ӕ +0x8A13 Ӗ +0x8A14 ӗ +0x8A15 Ә +0x8A16 ә +0x8A17 Ӛ +0x8A18 ӛ +0x8A19 Ӝ +0x8A1A ӝ +0x8A1B Ӟ +0x8A1C ӟ +0x8A1D Ӡ +0x8A1E @ +0x8A1F A +0x8A20 B +0x8A21 C +0x8A22 D +0x8A23 E +0x8A24 F +0x8A25 G +0x8A26 H +0x8A27 I +0x8A28 J +0x8A29 K +0x8A2A L +0x8A2B M +0x8A2C N +0x8A2D O +0x8A2E P +0x8A2F Q +0x8A30 R +0x8A31 S +0x8A32 T +0x8A33 U +0x8A34 V +0x8A35 W +0x8A36 X +0x8A37 Y +0x8A38 Z +0x8A39 [ +0x8A3A \ +0x8A3B ] +0x8A3C ^ +0x8A3D _ +0x8A3E +0x8A3F ` +0x8A40 a +0x8A41 b +0x8A42 c +0x8A43 d +0x8A44 e +0x8A45 f +0x8A46 g +0x8A47 h +0x8A48 +0x8A49 i +0x8A4A j +0x8A4B k +0x8A4C l +0x8A4D m +0x8A4E n +0x8A4F o +0x8A50 p +0x8A51 q +0x8A52 r +0x8A53 s +0x8A54 t +0x8A55 u +0x8A56 v +0x8A57 w +0x8A58 x +0x8A59 y +0x8A5A z +0x8A5B { +0x8A5C | +0x8A5D } +0x8A5E ~ +0x8A5F Ԁ +0x8A60 ԁ +0x8A61 Ԃ +0x8A62 ԃ +0x8A63 Ԅ +0x8A64 ԅ +0x8A65 Ԇ +0x8A66 ԇ +0x8A67 Ԉ +0x8A68 ԉ +0x8A69 Ԋ +0x8A6A ԋ +0x8A6B Ԍ +0x8A6C ԍ +0x8A6D Ԏ +0x8A6E ԏ +0x8A6F Ԑ +0x8A70 ԑ +0x8A71 Ԓ +0x8A72 ԓ +0x8A73 Ԕ +0x8A74 ԕ +0x8A75 Ԗ +0x8A76 ԗ +0x8A77 Ԙ +0x8A78 ԙ +0x8A79 ղ +0x8A7A Ԛ +0x8A7B ԛ +0x8A7C Ԝ +0x8A7D ԝ +0x8A7E Ԟ +0x8A7F ԟ +0x8A80 Ԡ +0x8A81 @ +0x8A82 A +0x8A83 B +0x8A84 C +0x8A85 D +0x8A86 E +0x8A87 F +0x8A88 G +0x8A89 +0x8A8A +0x8A8B H +0x8A8C I +0x8A8D J +0x8A8E K +0x8A8F L +0x8A90 M +0x8A91 N +0x8A92 O +0x8A93 +0x8A94 P +0x8A95 Q +0x8A96 R +0x8A97 S +0x8A98 T +0x8A99 U +0x8A9A V +0x8A9B W +0x8A9C X +0x8A9D Y +0x8A9E Z +0x8A9F [ +0x8AA0 \ +0x8AA1 ] +0x8AA2 ^ +0x8AA3 _ +0x8AA4 ` +0x8AA5 a +0x8AA6 b +0x8AA7 c +0x8AA8 d +0x8AA9 e +0x8AAA f +0x8AAB g +0x8AAC h +0x8AAD i +0x8AAE j +0x8AAF k +0x8AB0 l +0x8AB1 m +0x8AB2 n +0x8AB3 o +0x8AB4 p +0x8AB5 q +0x8AB6 r +0x8AB7 s +0x8AB8 t +0x8AB9 u +0x8ABA v +0x8ABB w +0x8ABC x +0x8ABD y +0x8ABE z +0x8ABF { +0x8AC0 | +0x8AC1 } +0x8AC2 ~ +0x8AC3 Հ +0x8AC4 Ձ +0x8AC5 Ղ +0x8AC6 Ճ +0x8AC7 Մ +0x8AC8 Յ +0x8AC9 Ն +0x8ACA Շ +0x8ACB Ո +0x8ACC Չ +0x8ACD Պ +0x8ACE Ջ +0x8ACF Ռ +0x8AD0 Ս +0x8AD1 Վ +0x8AD2 Տ +0x8AD3 Ր +0x8AD4 Ց +0x8AD5 Ւ +0x8AD6 Փ +0x8AD7 Ք +0x8AD8 Օ +0x8AD9 Ֆ +0x8ADA ՗ +0x8ADB ՘ +0x8ADC ՙ +0x8ADD ՚ +0x8ADE ՛ +0x8ADF ՜ +0x8AE0 ՝ +0x8AE1 ՞ +0x8AE2 ՟ +0x8AE3 ՠ +0x8AE4 @ +0x8AE5 A +0x8AE6 B +0x8AE7 C +0x8AE8 D +0x8AE9 E +0x8AEA F +0x8AEB G +0x8AEC H +0x8AED I +0x8AEE J +0x8AEF K +0x8AF0 L +0x8AF1 M +0x8AF2 N +0x8AF3 O +0x8AF4 P +0x8AF5 Q +0x8AF6 R +0x8AF7 S +0x8AF8 T +0x8AF9 U +0x8AFA V +0x8AFB W +0x8AFC X +0x8AFD Y +0x8AFE Z +0x8AFF [ +0x8B00 \ +0x8B01 ] +0x8B02 ^ +0x8B03 _ +0x8B04 ` +0x8B05 a +0x8B06 b +0x8B07 +0x8B08 c +0x8B09 d +0x8B0A e +0x8B0B f +0x8B0C g +0x8B0D h +0x8B0E i +0x8B0F j +0x8B10 k +0x8B11 l +0x8B12 m +0x8B13 n +0x8B14 o +0x8B15 p +0x8B16 q +0x8B17 r +0x8B18 s +0x8B19 t +0x8B1A u +0x8B1B v +0x8B1C w +0x8B1D x +0x8B1E y +0x8B1F z +0x8B20 { +0x8B21 | +0x8B22 } +0x8B23 ~ +0x8B24 ր +0x8B25 ց +0x8B26 +0x8B27 ւ +0x8B28 փ +0x8B29 ք +0x8B2A օ +0x8B2B ֆ +0x8B2C և +0x8B2D ֈ +0x8B2E ։ +0x8B2F ֊ +0x8B30 ֋ +0x8B31 ֌ +0x8B32 ֍ +0x8B33 ֎ +0x8B34 ֏ +0x8B35 ֐ +0x8B36 ֑ +0x8B37 ֒ +0x8B38 ֓ +0x8B39 ֔ +0x8B3A ֕ +0x8B3B ֖ +0x8B3C ֗ +0x8B3D ֘ +0x8B3E ֙ +0x8B3F ֚ +0x8B40 ֛ +0x8B41 ֜ +0x8B42 ֝ +0x8B43 ֞ +0x8B44 ֟ +0x8B45 ֠ +0x8B46 @ +0x8B47 A +0x8B48 B +0x8B49 C +0x8B4A D +0x8B4B E +0x8B4C F +0x8B4D G +0x8B4E H +0x8B4F I +0x8B50 J +0x8B51 K +0x8B52 L +0x8B53 M +0x8B54 N +0x8B55 O +0x8B56 P +0x8B57 Q +0x8B58 R +0x8B59 S +0x8B5A T +0x8B5B U +0x8B5C V +0x8B5D W +0x8B5E X +0x8B5F Y +0x8B60 Z +0x8B61 [ +0x8B62 \ +0x8B63 ] +0x8B64 ^ +0x8B65 _ +0x8B66 +0x8B67 ` +0x8B68 a +0x8B69 b +0x8B6A c +0x8B6B d +0x8B6C Ʃ +0x8B6D e +0x8B6E f +0x8B6F g +0x8B70 h +0x8B71 i +0x8B72 j +0x8B73 k +0x8B74 l +0x8B75 m +0x8B76 n +0x8B77 o +0x8B78 p +0x8B79 q +0x8B7A r +0x8B7B s +0x8B7C t +0x8B7D u +0x8B7E v +0x8B7F w +0x8B80 x +0x8B81 y +0x8B82 z +0x8B83 { +0x8B84 | +0x8B85 } +0x8B86 ~ +0x8B87 ׀ +0x8B88 ׁ +0x8B89 ׂ +0x8B8A ׃ +0x8B8B ׄ +0x8B8C ׅ +0x8B8D ׆ +0x8B8E ׇ +0x8B8F ׈ +0x8B90 ׉ +0x8B91 ׊ +0x8B92 ׋ +0x8B93 ׌ +0x8B94 ׍ +0x8B95 ׎ +0x8B96 ׏ +0x8B97 א +0x8B98 ב +0x8B99 ג +0x8B9A ד +0x8B9B ה +0x8B9C ו +0x8B9D ז +0x8B9E ח +0x8B9F ט +0x8BA0 ڥ +0x8BA1 +0x8BA2 +0x8BA3 +0x8BA4 +0x8BA5 +0x8BA6 ڦ +0x8BA7 ڧ +0x8BA8 +0x8BA9 +0x8BAA ڨ +0x8BAB +0x8BAC י +0x8BAD ѵ +0x8BAE +0x8BAF Ѷ +0x8BB0 +0x8BB1 ך +0x8BB2 +0x8BB3 +0x8BB4 ک +0x8BB5 ڪ +0x8BB6 +0x8BB7 ګ +0x8BB8 +0x8BB9 +0x8BBA +0x8BBB כ +0x8BBC +0x8BBD +0x8BBE +0x8BBF +0x8BC0 +0x8BC1 ֤ +0x8BC2 ڬ +0x8BC3 ڭ +0x8BC4 +0x8BC5 +0x8BC6 ʶ +0x8BC7 ל +0x8BC8 թ +0x8BC9 +0x8BCA +0x8BCB ڮ +0x8BCC +0x8BCD +0x8BCE ڰ +0x8BCF گ +0x8BD0 ם +0x8BD1 +0x8BD2 ڱ +0x8BD3 ڲ +0x8BD4 ڳ +0x8BD5 +0x8BD6 ڴ +0x8BD7 ʫ +0x8BD8 ڵ +0x8BD9 ڶ +0x8BDA +0x8BDB +0x8BDC ڷ +0x8BDD +0x8BDE +0x8BDF ڸ +0x8BE0 ڹ +0x8BE1 +0x8BE2 ѯ +0x8BE3 +0x8BE4 ں +0x8BE5 +0x8BE6 +0x8BE7 +0x8BE8 ڻ +0x8BE9 ڼ +0x8BEA מ +0x8BEB +0x8BEC +0x8BED +0x8BEE ڽ +0x8BEF +0x8BF0 ھ +0x8BF1 +0x8BF2 +0x8BF3 ڿ +0x8BF4 ˵ +0x8BF5 +0x8BF6 +0x8BF7 +0x8BF8 +0x8BF9 +0x8BFA ŵ +0x8BFB +0x8BFC +0x8BFD +0x8BFE +0x8BFF +0x8C00 +0x8C01 ˭ +0x8C02 +0x8C03 +0x8C04 +0x8C05 +0x8C06 ׻ +0x8C07 +0x8C08 ̸ +0x8C09 ן +0x8C0A +0x8C0B ı +0x8C0C +0x8C0D +0x8C0E +0x8C0F +0x8C10 г +0x8C11 +0x8C12 +0x8C13 ν +0x8C14 +0x8C15 +0x8C16 +0x8C17 +0x8C18 +0x8C19 +0x8C1A +0x8C1B +0x8C1C +0x8C1D +0x8C1E נ +0x8C1F +0x8C20 +0x8C21 +0x8C22 л +0x8C23 ҥ +0x8C24 +0x8C25 +0x8C26 ǫ +0x8C27 +0x8C28 +0x8C29 á +0x8C2A +0x8C2B +0x8C2C +0x8C2D ̷ +0x8C2E +0x8C2F +0x8C30 +0x8C31 +0x8C32 +0x8C33 +0x8C34 Ǵ +0x8C35 +0x8C36 +0x8C37 +0x8C38 @ +0x8C39 A +0x8C3A B +0x8C3B C +0x8C3C D +0x8C3D E +0x8C3E F +0x8C3F G +0x8C40 H +0x8C41 +0x8C42 I +0x8C43 J +0x8C44 K +0x8C45 L +0x8C46 +0x8C47 +0x8C48 M +0x8C49 +0x8C4A N +0x8C4B O +0x8C4C +0x8C4D P +0x8C4E Q +0x8C4F R +0x8C50 S +0x8C51 T +0x8C52 U +0x8C53 V +0x8C54 W +0x8C55 +0x8C56 X +0x8C57 Y +0x8C58 Z +0x8C59 [ +0x8C5A +0x8C5B \ +0x8C5C ] +0x8C5D ^ +0x8C5E _ +0x8C5F ` +0x8C60 a +0x8C61 +0x8C62 +0x8C63 b +0x8C64 c +0x8C65 d +0x8C66 e +0x8C67 f +0x8C68 g +0x8C69 h +0x8C6A +0x8C6B ԥ +0x8C6C i +0x8C6D j +0x8C6E k +0x8C6F l +0x8C70 m +0x8C71 n +0x8C72 o +0x8C73 +0x8C74 p +0x8C75 q +0x8C76 r +0x8C77 s +0x8C78 +0x8C79 +0x8C7A +0x8C7B t +0x8C7C u +0x8C7D v +0x8C7E w +0x8C7F x +0x8C80 y +0x8C81 z +0x8C82 +0x8C83 { +0x8C84 | +0x8C85 +0x8C86 } +0x8C87 ~ +0x8C88 ؀ +0x8C89 +0x8C8A +0x8C8B ؁ +0x8C8C ò +0x8C8D ؂ +0x8C8E ؃ +0x8C8F ؄ +0x8C90 ؅ +0x8C91 ؆ +0x8C92 ؇ +0x8C93 ؈ +0x8C94 +0x8C95 ؉ +0x8C96 ؊ +0x8C97 ؋ +0x8C98 +0x8C99 ، +0x8C9A ؍ +0x8C9B ؎ +0x8C9C ؏ +0x8C9D ؐ +0x8C9E ؑ +0x8C9F ؒ +0x8CA0 ؓ +0x8CA1 ؔ +0x8CA2 ؕ +0x8CA3 ؖ +0x8CA4 ؗ +0x8CA5 ؘ +0x8CA6 ؙ +0x8CA7 ؚ +0x8CA8 ؛ +0x8CA9 ؜ +0x8CAA ؝ +0x8CAB ؞ +0x8CAC ؟ +0x8CAD ؠ +0x8CAE @ +0x8CAF A +0x8CB0 B +0x8CB1 C +0x8CB2 D +0x8CB3 E +0x8CB4 F +0x8CB5 G +0x8CB6 H +0x8CB7 I +0x8CB8 J +0x8CB9 K +0x8CBA L +0x8CBB M +0x8CBC N +0x8CBD O +0x8CBE P +0x8CBF Q +0x8CC0 R +0x8CC1 S +0x8CC2 T +0x8CC3 U +0x8CC4 V +0x8CC5 W +0x8CC6 X +0x8CC7 Y +0x8CC8 Z +0x8CC9 [ +0x8CCA \ +0x8CCB ] +0x8CCC ^ +0x8CCD _ +0x8CCE ` +0x8CCF a +0x8CD0 b +0x8CD1 c +0x8CD2 d +0x8CD3 e +0x8CD4 f +0x8CD5 g +0x8CD6 h +0x8CD7 i +0x8CD8 j +0x8CD9 k +0x8CDA l +0x8CDB m +0x8CDC n +0x8CDD o +0x8CDE p +0x8CDF q +0x8CE0 r +0x8CE1 s +0x8CE2 t +0x8CE3 u +0x8CE4 v +0x8CE5 w +0x8CE6 x +0x8CE7 y +0x8CE8 z +0x8CE9 { +0x8CEA | +0x8CEB } +0x8CEC ~ +0x8CED ـ +0x8CEE ف +0x8CEF ق +0x8CF0 ك +0x8CF1 ل +0x8CF2 م +0x8CF3 ن +0x8CF4 ه +0x8CF5 و +0x8CF6 ى +0x8CF7 ي +0x8CF8 ً +0x8CF9 ٌ +0x8CFA ٍ +0x8CFB َ +0x8CFC ُ +0x8CFD ِ +0x8CFE ّ +0x8CFF ْ +0x8D00 ٓ +0x8D01 ٔ +0x8D02 ٕ +0x8D03 ٖ +0x8D04 ٗ +0x8D05 ٘ +0x8D06 ٙ +0x8D07 ٚ +0x8D08 ٛ +0x8D09 ٜ +0x8D0A ٝ +0x8D0B ٞ +0x8D0C ٟ +0x8D0D ٠ +0x8D0E @ +0x8D0F A +0x8D10 B +0x8D11 C +0x8D12 D +0x8D13 E +0x8D14 F +0x8D15 G +0x8D16 H +0x8D17 I +0x8D18 J +0x8D19 K +0x8D1A L +0x8D1B M +0x8D1C N +0x8D1D +0x8D1E +0x8D1F +0x8D20 O +0x8D21 +0x8D22 +0x8D23 +0x8D24 +0x8D25 +0x8D26 +0x8D27 +0x8D28 +0x8D29 +0x8D2A ̰ +0x8D2B ƶ +0x8D2C +0x8D2D +0x8D2E +0x8D2F +0x8D30 +0x8D31 +0x8D32 +0x8D33 +0x8D34 +0x8D35 +0x8D36 +0x8D37 +0x8D38 ó +0x8D39 +0x8D3A +0x8D3B +0x8D3C +0x8D3D +0x8D3E +0x8D3F +0x8D40 +0x8D41 +0x8D42 ¸ +0x8D43 +0x8D44 +0x8D45 +0x8D46 +0x8D47 +0x8D48 +0x8D49 +0x8D4A +0x8D4B +0x8D4C +0x8D4D +0x8D4E +0x8D4F +0x8D50 +0x8D51 P +0x8D52 Q +0x8D53 +0x8D54 +0x8D55 +0x8D56 +0x8D57 R +0x8D58 ׸ +0x8D59 +0x8D5A ׬ +0x8D5B +0x8D5C +0x8D5D +0x8D5E +0x8D5F S +0x8D60 +0x8D61 +0x8D62 Ӯ +0x8D63 +0x8D64 +0x8D65 T +0x8D66 +0x8D67 +0x8D68 U +0x8D69 V +0x8D6A W +0x8D6B +0x8D6C X +0x8D6D +0x8D6E Y +0x8D6F Z +0x8D70 +0x8D71 [ +0x8D72 \ +0x8D73 +0x8D74 +0x8D75 +0x8D76 +0x8D77 +0x8D78 ] +0x8D79 ^ +0x8D7A _ +0x8D7B ` +0x8D7C a +0x8D7D b +0x8D7E c +0x8D7F d +0x8D80 e +0x8D81 +0x8D82 f +0x8D83 g +0x8D84 +0x8D85 +0x8D86 h +0x8D87 i +0x8D88 j +0x8D89 k +0x8D8A Խ +0x8D8B +0x8D8C l +0x8D8D m +0x8D8E n +0x8D8F o +0x8D90 p +0x8D91 +0x8D92 q +0x8D93 r +0x8D94 +0x8D95 s +0x8D96 t +0x8D97 u +0x8D98 v +0x8D99 w +0x8D9A x +0x8D9B y +0x8D9C z +0x8D9D { +0x8D9E | +0x8D9F +0x8DA0 } +0x8DA1 ~ +0x8DA2 ڀ +0x8DA3 Ȥ +0x8DA4 ځ +0x8DA5 ڂ +0x8DA6 ڃ +0x8DA7 ڄ +0x8DA8 څ +0x8DA9 چ +0x8DAA ڇ +0x8DAB ڈ +0x8DAC ډ +0x8DAD ڊ +0x8DAE ڋ +0x8DAF ڌ +0x8DB0 ڍ +0x8DB1 +0x8DB2 ڎ +0x8DB3 +0x8DB4 ſ +0x8DB5 +0x8DB6 ڏ +0x8DB7 ڐ +0x8DB8 +0x8DB9 ڑ +0x8DBA +0x8DBB ڒ +0x8DBC +0x8DBD ړ +0x8DBE ֺ +0x8DBF +0x8DC0 ڔ +0x8DC1 ڕ +0x8DC2 ږ +0x8DC3 Ծ +0x8DC4 +0x8DC5 ڗ +0x8DC6 +0x8DC7 ژ +0x8DC8 ڙ +0x8DC9 ښ +0x8DCA ڛ +0x8DCB +0x8DCC +0x8DCD ڜ +0x8DCE +0x8DCF +0x8DD0 ڝ +0x8DD1 +0x8DD2 ڞ +0x8DD3 ڟ +0x8DD4 ڠ +0x8DD5 @ +0x8DD6 +0x8DD7 +0x8DD8 A +0x8DD9 B +0x8DDA +0x8DDB +0x8DDC C +0x8DDD +0x8DDE +0x8DDF +0x8DE0 D +0x8DE1 E +0x8DE2 F +0x8DE3 +0x8DE4 +0x8DE5 G +0x8DE6 H +0x8DE7 I +0x8DE8 +0x8DE9 J +0x8DEA +0x8DEB +0x8DEC +0x8DED K +0x8DEE L +0x8DEF · +0x8DF0 M +0x8DF1 N +0x8DF2 O +0x8DF3 +0x8DF4 P +0x8DF5 +0x8DF6 Q +0x8DF7 +0x8DF8 +0x8DF9 +0x8DFA +0x8DFB +0x8DFC R +0x8DFD +0x8DFE S +0x8DFF T +0x8E00 U +0x8E01 V +0x8E02 W +0x8E03 X +0x8E04 Y +0x8E05 +0x8E06 Z +0x8E07 [ +0x8E08 \ +0x8E09 +0x8E0A ӻ +0x8E0B ] +0x8E0C +0x8E0D ^ +0x8E0E _ +0x8E0F ̤ +0x8E10 ` +0x8E11 a +0x8E12 b +0x8E13 c +0x8E14 +0x8E15 d +0x8E16 e +0x8E17 f +0x8E18 g +0x8E19 h +0x8E1A i +0x8E1B j +0x8E1C k +0x8E1D +0x8E1E +0x8E1F +0x8E20 l +0x8E21 m +0x8E22 +0x8E23 +0x8E24 n +0x8E25 o +0x8E26 p +0x8E27 q +0x8E28 r +0x8E29 +0x8E2A +0x8E2B s +0x8E2C +0x8E2D t +0x8E2E +0x8E2F +0x8E30 u +0x8E31 +0x8E32 v +0x8E33 w +0x8E34 x +0x8E35 +0x8E36 y +0x8E37 z +0x8E38 { +0x8E39 +0x8E3A +0x8E3B | +0x8E3C } +0x8E3D +0x8E3E ~ +0x8E3F ۀ +0x8E40 +0x8E41 +0x8E42 +0x8E43 ہ +0x8E44 +0x8E45 ۂ +0x8E46 ۃ +0x8E47 +0x8E48 +0x8E49 +0x8E4A +0x8E4B ̣ +0x8E4C ۄ +0x8E4D ۅ +0x8E4E ۆ +0x8E4F ۇ +0x8E50 ۈ +0x8E51 +0x8E52 +0x8E53 ۉ +0x8E54 ۊ +0x8E55 ۋ +0x8E56 ی +0x8E57 ۍ +0x8E58 ێ +0x8E59 +0x8E5A ۏ +0x8E5B ې +0x8E5C ۑ +0x8E5D ے +0x8E5E ۓ +0x8E5F ۔ +0x8E60 ە +0x8E61 ۖ +0x8E62 ۗ +0x8E63 ۘ +0x8E64 ۙ +0x8E65 ۚ +0x8E66 +0x8E67 ۛ +0x8E68 ۜ +0x8E69 +0x8E6A ۝ +0x8E6B ۞ +0x8E6C +0x8E6D +0x8E6E ۟ +0x8E6F +0x8E70 +0x8E71 ۠ +0x8E72 +0x8E73 @ +0x8E74 +0x8E75 A +0x8E76 +0x8E77 B +0x8E78 C +0x8E79 D +0x8E7A E +0x8E7B F +0x8E7C +0x8E7D G +0x8E7E H +0x8E7F +0x8E80 I +0x8E81 +0x8E82 J +0x8E83 K +0x8E84 L +0x8E85 +0x8E86 M +0x8E87 +0x8E88 N +0x8E89 O +0x8E8A P +0x8E8B Q +0x8E8C R +0x8E8D S +0x8E8E T +0x8E8F +0x8E90 +0x8E91 U +0x8E92 V +0x8E93 W +0x8E94 +0x8E95 X +0x8E96 Y +0x8E97 Z +0x8E98 [ +0x8E99 \ +0x8E9A ] +0x8E9B ^ +0x8E9C +0x8E9D _ +0x8E9E +0x8E9F ` +0x8EA0 a +0x8EA1 b +0x8EA2 c +0x8EA3 d +0x8EA4 e +0x8EA5 f +0x8EA6 g +0x8EA7 h +0x8EA8 i +0x8EA9 j +0x8EAA k +0x8EAB +0x8EAC +0x8EAD l +0x8EAE m +0x8EAF +0x8EB0 n +0x8EB1 o +0x8EB2 +0x8EB3 p +0x8EB4 q +0x8EB5 r +0x8EB6 s +0x8EB7 t +0x8EB8 u +0x8EB9 v +0x8EBA +0x8EBB w +0x8EBC x +0x8EBD y +0x8EBE z +0x8EBF { +0x8EC0 | +0x8EC1 } +0x8EC2 ~ +0x8EC3 ܀ +0x8EC4 ܁ +0x8EC5 ܂ +0x8EC6 ܃ +0x8EC7 ܄ +0x8EC8 ܅ +0x8EC9 ܆ +0x8ECA ܇ +0x8ECB ܈ +0x8ECC ܉ +0x8ECD ܊ +0x8ECE +0x8ECF ܋ +0x8ED0 ܌ +0x8ED1 ܍ +0x8ED2 ܎ +0x8ED3 ܏ +0x8ED4 ܐ +0x8ED5 ܑ +0x8ED6 ܒ +0x8ED7 ܓ +0x8ED8 ܔ +0x8ED9 ܕ +0x8EDA ܖ +0x8EDB ܗ +0x8EDC ܘ +0x8EDD ܙ +0x8EDE ܚ +0x8EDF ܛ +0x8EE0 ܜ +0x8EE1 ܝ +0x8EE2 ܞ +0x8EE3 ܟ +0x8EE4 ܠ +0x8EE5 @ +0x8EE6 A +0x8EE7 B +0x8EE8 C +0x8EE9 D +0x8EEA E +0x8EEB F +0x8EEC G +0x8EED H +0x8EEE I +0x8EEF J +0x8EF0 K +0x8EF1 L +0x8EF2 M +0x8EF3 N +0x8EF4 O +0x8EF5 P +0x8EF6 Q +0x8EF7 R +0x8EF8 S +0x8EF9 T +0x8EFA U +0x8EFB V +0x8EFC W +0x8EFD X +0x8EFE Y +0x8EFF Z +0x8F00 [ +0x8F01 \ +0x8F02 ] +0x8F03 ^ +0x8F04 _ +0x8F05 ` +0x8F06 a +0x8F07 b +0x8F08 c +0x8F09 d +0x8F0A e +0x8F0B f +0x8F0C g +0x8F0D h +0x8F0E i +0x8F0F j +0x8F10 k +0x8F11 l +0x8F12 m +0x8F13 n +0x8F14 o +0x8F15 p +0x8F16 q +0x8F17 r +0x8F18 s +0x8F19 t +0x8F1A u +0x8F1B v +0x8F1C w +0x8F1D x +0x8F1E y +0x8F1F z +0x8F20 { +0x8F21 | +0x8F22 } +0x8F23 ~ +0x8F24 ݀ +0x8F25 ݁ +0x8F26 ݂ +0x8F27 ݃ +0x8F28 ݄ +0x8F29 ݅ +0x8F2A ݆ +0x8F2B ݇ +0x8F2C ݈ +0x8F2D ݉ +0x8F2E ݊ +0x8F2F ݋ +0x8F30 ݌ +0x8F31 ݍ +0x8F32 ݎ +0x8F33 ݏ +0x8F34 ݐ +0x8F35 ݑ +0x8F36 ݒ +0x8F37 ݓ +0x8F38 ݔ +0x8F39 ݕ +0x8F3A ݖ +0x8F3B ݗ +0x8F3C ݘ +0x8F3D ݙ +0x8F3E ݚ +0x8F3F ݛ +0x8F40 ݜ +0x8F41 ݝ +0x8F42 ݞ +0x8F43 ݟ +0x8F44 ݠ +0x8F45 @ +0x8F46 A +0x8F47 B +0x8F48 C +0x8F49 D +0x8F4A E +0x8F4B F +0x8F4C G +0x8F4D H +0x8F4E I +0x8F4F J +0x8F50 K +0x8F51 L +0x8F52 M +0x8F53 N +0x8F54 O +0x8F55 P +0x8F56 Q +0x8F57 R +0x8F58 S +0x8F59 T +0x8F5A U +0x8F5B V +0x8F5C W +0x8F5D X +0x8F5E Y +0x8F5F Z +0x8F60 [ +0x8F61 \ +0x8F62 ] +0x8F63 ^ +0x8F64 _ +0x8F65 ` +0x8F66 +0x8F67 +0x8F68 +0x8F69 +0x8F6A a +0x8F6B +0x8F6C ת +0x8F6D +0x8F6E +0x8F6F +0x8F70 +0x8F71 +0x8F72 +0x8F73 +0x8F74 +0x8F75 +0x8F76 +0x8F77 +0x8F78 +0x8F79 +0x8F7A +0x8F7B +0x8F7C +0x8F7D +0x8F7E +0x8F7F +0x8F80 b +0x8F81 +0x8F82 +0x8F83 +0x8F84 +0x8F85 +0x8F86 +0x8F87 +0x8F88 +0x8F89 +0x8F8A +0x8F8B +0x8F8C c +0x8F8D +0x8F8E +0x8F8F +0x8F90 +0x8F91 +0x8F92 d +0x8F93 +0x8F94 +0x8F95 ԯ +0x8F96 Ͻ +0x8F97 շ +0x8F98 +0x8F99 +0x8F9A +0x8F9B +0x8F9C +0x8F9D e +0x8F9E +0x8F9F +0x8FA0 f +0x8FA1 g +0x8FA2 h +0x8FA3 +0x8FA4 i +0x8FA5 j +0x8FA6 k +0x8FA7 l +0x8FA8 +0x8FA9 +0x8FAA m +0x8FAB +0x8FAC n +0x8FAD o +0x8FAE p +0x8FAF q +0x8FB0 +0x8FB1 +0x8FB2 r +0x8FB3 s +0x8FB4 t +0x8FB5 u +0x8FB6 +0x8FB7 v +0x8FB8 w +0x8FB9 +0x8FBA x +0x8FBB y +0x8FBC z +0x8FBD +0x8FBE +0x8FBF { +0x8FC0 | +0x8FC1 Ǩ +0x8FC2 +0x8FC3 } +0x8FC4 +0x8FC5 Ѹ +0x8FC6 ~ +0x8FC7 +0x8FC8 +0x8FC9 ހ +0x8FCA ށ +0x8FCB ނ +0x8FCC ރ +0x8FCD ބ +0x8FCE ӭ +0x8FCF ޅ +0x8FD0 +0x8FD1 +0x8FD2 ކ +0x8FD3 +0x8FD4 +0x8FD5 +0x8FD6 އ +0x8FD7 ވ +0x8FD8 +0x8FD9 +0x8FDA މ +0x8FDB +0x8FDC Զ +0x8FDD Υ +0x8FDE +0x8FDF +0x8FE0 ފ +0x8FE1 ދ +0x8FE2 +0x8FE3 ތ +0x8FE4 +0x8FE5 +0x8FE6 +0x8FE7 ލ +0x8FE8 +0x8FE9 +0x8FEA +0x8FEB +0x8FEC ގ +0x8FED +0x8FEE +0x8FEF ޏ +0x8FF0 +0x8FF1 ސ +0x8FF2 ޑ +0x8FF3 +0x8FF4 ޒ +0x8FF5 ޓ +0x8FF6 ޔ +0x8FF7 +0x8FF8 +0x8FF9 +0x8FFA ޕ +0x8FFB ޖ +0x8FFC ޗ +0x8FFD ׷ +0x8FFE ޘ +0x8FFF ޙ +0x9000 +0x9001 +0x9002 +0x9003 +0x9004 +0x9005 +0x9006 +0x9007 ޚ +0x9008 ޛ +0x9009 ѡ +0x900A ѷ +0x900B +0x900C ޜ +0x900D +0x900E ޝ +0x900F ͸ +0x9010 +0x9011 +0x9012 +0x9013 ޞ +0x9014 ; +0x9015 ޟ +0x9016 +0x9017 +0x9018 ޠ +0x9019 @ +0x901A ͨ +0x901B +0x901C A +0x901D +0x901E +0x901F +0x9020 +0x9021 +0x9022 +0x9023 B +0x9024 C +0x9025 D +0x9026 +0x9027 E +0x9028 F +0x9029 G +0x902A H +0x902B I +0x902C J +0x902D +0x902E +0x902F +0x9030 K +0x9031 L +0x9032 M +0x9033 N +0x9034 O +0x9035 +0x9036 +0x9037 P +0x9038 +0x9039 Q +0x903A R +0x903B +0x903C +0x903D S +0x903E +0x903F T +0x9040 U +0x9041 +0x9042 +0x9043 V +0x9044 +0x9045 W +0x9046 X +0x9047 +0x9048 Y +0x9049 Z +0x904A [ +0x904B \ +0x904C ] +0x904D +0x904E ^ +0x904F +0x9050 +0x9051 +0x9052 +0x9053 +0x9054 _ +0x9055 ` +0x9056 a +0x9057 +0x9058 +0x9059 b +0x905A c +0x905B +0x905C d +0x905D e +0x905E f +0x905F g +0x9060 h +0x9061 i +0x9062 +0x9063 Dz +0x9064 j +0x9065 ң +0x9066 k +0x9067 l +0x9068 +0x9069 m +0x906A n +0x906B o +0x906C p +0x906D +0x906E +0x906F q +0x9070 r +0x9071 s +0x9072 t +0x9073 u +0x9074 +0x9075 +0x9076 v +0x9077 w +0x9078 x +0x9079 y +0x907A z +0x907B { +0x907C | +0x907D +0x907E } +0x907F +0x9080 +0x9081 ~ +0x9082 +0x9083 +0x9084 ߀ +0x9085 ߁ +0x9086 ߂ +0x9087 ߃ +0x9088 +0x9089 ߄ +0x908A ߅ +0x908B +0x908C ߆ +0x908D ߇ +0x908E ߈ +0x908F ߉ +0x9090 ߊ +0x9091 +0x9092 ߋ +0x9093 +0x9094 ߌ +0x9095 +0x9096 ߍ +0x9097 +0x9098 ߎ +0x9099 +0x909A ߏ +0x909B +0x909C ߐ +0x909D +0x909E ߑ +0x909F ߒ +0x90A0 ߓ +0x90A1 +0x90A2 +0x90A3 +0x90A4 ߔ +0x90A5 ߕ +0x90A6 +0x90A7 ߖ +0x90A8 ߗ +0x90A9 ߘ +0x90AA а +0x90AB ߙ +0x90AC +0x90AD ߚ +0x90AE +0x90AF +0x90B0 ۢ +0x90B1 +0x90B2 ߛ +0x90B3 +0x90B4 +0x90B5 +0x90B6 +0x90B7 ߜ +0x90B8 ۡ +0x90B9 +0x90BA +0x90BB +0x90BC ߝ +0x90BD ߞ +0x90BE ۥ +0x90BF ߟ +0x90C0 ߠ +0x90C1 +0x90C2 @ +0x90C3 A +0x90C4 ۧ +0x90C5 ۤ +0x90C6 B +0x90C7 ۨ +0x90C8 C +0x90C9 D +0x90CA +0x90CB E +0x90CC F +0x90CD G +0x90CE +0x90CF ۣ +0x90D0 ۦ +0x90D1 ֣ +0x90D2 H +0x90D3 ۩ +0x90D4 I +0x90D5 J +0x90D6 K +0x90D7 ۭ +0x90D8 L +0x90D9 M +0x90DA N +0x90DB ۮ +0x90DC ۬ +0x90DD +0x90DE O +0x90DF P +0x90E0 Q +0x90E1 +0x90E2 ۫ +0x90E3 R +0x90E4 S +0x90E5 T +0x90E6 ۪ +0x90E7 +0x90E8 +0x90E9 U +0x90EA V +0x90EB ۯ +0x90EC W +0x90ED +0x90EE X +0x90EF ۰ +0x90F0 Y +0x90F1 Z +0x90F2 [ +0x90F3 \ +0x90F4 +0x90F5 ] +0x90F6 ^ +0x90F7 _ +0x90F8 +0x90F9 ` +0x90FA a +0x90FB b +0x90FC c +0x90FD +0x90FE ۱ +0x90FF d +0x9100 e +0x9101 f +0x9102 +0x9103 g +0x9104 ۲ +0x9105 h +0x9106 i +0x9107 j +0x9108 k +0x9109 l +0x910A m +0x910B n +0x910C o +0x910D p +0x910E q +0x910F r +0x9110 s +0x9111 t +0x9112 u +0x9113 v +0x9114 w +0x9115 x +0x9116 y +0x9117 z +0x9118 { +0x9119 +0x911A | +0x911B } +0x911C ~ +0x911D +0x911E ۴ +0x911F +0x9120 +0x9121 +0x9122 ۳ +0x9123 ۵ +0x9124 +0x9125 +0x9126 +0x9127 +0x9128 +0x9129 +0x912A +0x912B +0x912C +0x912D +0x912E +0x912F ۷ +0x9130 +0x9131 ۶ +0x9132 +0x9133 +0x9134 +0x9135 +0x9136 +0x9137 +0x9138 +0x9139 ۸ +0x913A +0x913B +0x913C +0x913D +0x913E +0x913F +0x9140 +0x9141 +0x9142 +0x9143 ۹ +0x9144 +0x9145 @ +0x9146 ۺ +0x9147 A +0x9148 B +0x9149 +0x914A +0x914B +0x914C +0x914D +0x914E +0x914F +0x9150 +0x9151 C +0x9152 +0x9153 D +0x9154 E +0x9155 F +0x9156 G +0x9157 +0x9158 H +0x9159 I +0x915A +0x915B J +0x915C K +0x915D +0x915E ̪ +0x915F L +0x9160 M +0x9161 +0x9162 +0x9163 +0x9164 +0x9165 +0x9166 N +0x9167 O +0x9168 P +0x9169 +0x916A +0x916B Q +0x916C +0x916D R +0x916E ͪ +0x916F +0x9170 +0x9171 +0x9172 +0x9173 S +0x9174 +0x9175 +0x9176 ø +0x9177 +0x9178 +0x9179 +0x917A T +0x917B U +0x917C V +0x917D +0x917E +0x917F +0x9180 W +0x9181 X +0x9182 Y +0x9183 Z +0x9184 [ +0x9185 +0x9186 \ +0x9187 +0x9188 ] +0x9189 +0x918A ^ +0x918B +0x918C +0x918D +0x918E _ +0x918F ` +0x9190 +0x9191 +0x9192 +0x9193 a +0x9194 b +0x9195 c +0x9196 d +0x9197 e +0x9198 f +0x9199 g +0x919A +0x919B ȩ +0x919C h +0x919D i +0x919E j +0x919F k +0x91A0 l +0x91A1 m +0x91A2 +0x91A3 +0x91A4 n +0x91A5 o +0x91A6 p +0x91A7 q +0x91A8 r +0x91A9 s +0x91AA +0x91AB t +0x91AC u +0x91AD +0x91AE +0x91AF +0x91B0 v +0x91B1 w +0x91B2 x +0x91B3 y +0x91B4 +0x91B5 +0x91B6 z +0x91B7 { +0x91B8 | +0x91B9 } +0x91BA +0x91BB ~ +0x91BC +0x91BD +0x91BE +0x91BF +0x91C0 +0x91C1 +0x91C2 +0x91C3 +0x91C4 +0x91C5 +0x91C6 +0x91C7 +0x91C8 +0x91C9 +0x91CA +0x91CB +0x91CC +0x91CD +0x91CE Ұ +0x91CF +0x91D0 +0x91D1 +0x91D2 +0x91D3 +0x91D4 +0x91D5 +0x91D6 +0x91D7 +0x91D8 +0x91D9 +0x91DA +0x91DB +0x91DC +0x91DD +0x91DE +0x91DF +0x91E0 +0x91E1 +0x91E2 +0x91E3 +0x91E4 +0x91E5 +0x91E6 @ +0x91E7 A +0x91E8 B +0x91E9 C +0x91EA D +0x91EB E +0x91EC F +0x91ED G +0x91EE H +0x91EF I +0x91F0 J +0x91F1 K +0x91F2 L +0x91F3 M +0x91F4 N +0x91F5 O +0x91F6 P +0x91F7 Q +0x91F8 R +0x91F9 S +0x91FA T +0x91FB U +0x91FC V +0x91FD W +0x91FE X +0x91FF Y +0x9200 Z +0x9201 [ +0x9202 \ +0x9203 ] +0x9204 ^ +0x9205 _ +0x9206 ` +0x9207 a +0x9208 b +0x9209 c +0x920A d +0x920B e +0x920C f +0x920D g +0x920E h +0x920F i +0x9210 j +0x9211 k +0x9212 l +0x9213 m +0x9214 n +0x9215 o +0x9216 p +0x9217 q +0x9218 r +0x9219 s +0x921A t +0x921B u +0x921C v +0x921D w +0x921E x +0x921F y +0x9220 z +0x9221 { +0x9222 | +0x9223 } +0x9224 ~ +0x9225 +0x9226 +0x9227 +0x9228 +0x9229 +0x922A +0x922B +0x922C +0x922D +0x922E +0x922F +0x9230 +0x9231 +0x9232 +0x9233 +0x9234 +0x9235 +0x9236 +0x9237 +0x9238 +0x9239 +0x923A +0x923B +0x923C +0x923D +0x923E +0x923F +0x9240 +0x9241 +0x9242 +0x9243 +0x9244 +0x9245 +0x9246 @ +0x9247 A +0x9248 B +0x9249 C +0x924A D +0x924B E +0x924C F +0x924D G +0x924E H +0x924F I +0x9250 J +0x9251 K +0x9252 L +0x9253 M +0x9254 N +0x9255 O +0x9256 P +0x9257 Q +0x9258 R +0x9259 S +0x925A T +0x925B U +0x925C V +0x925D W +0x925E X +0x925F Y +0x9260 Z +0x9261 [ +0x9262 \ +0x9263 ] +0x9264 ^ +0x9265 _ +0x9266 ` +0x9267 a +0x9268 b +0x9269 c +0x926A d +0x926B e +0x926C f +0x926D g +0x926E h +0x926F i +0x9270 j +0x9271 k +0x9272 l +0x9273 m +0x9274 +0x9275 n +0x9276 o +0x9277 p +0x9278 q +0x9279 r +0x927A s +0x927B t +0x927C u +0x927D v +0x927E w +0x927F x +0x9280 y +0x9281 z +0x9282 { +0x9283 | +0x9284 } +0x9285 ~ +0x9286 +0x9287 +0x9288 +0x9289 +0x928A +0x928B +0x928C +0x928D +0x928E +0x928F +0x9290 +0x9291 +0x9292 +0x9293 +0x9294 +0x9295 +0x9296 +0x9297 +0x9298 +0x9299 +0x929A +0x929B +0x929C +0x929D +0x929E +0x929F +0x92A0 +0x92A1 +0x92A2 +0x92A3 +0x92A4 +0x92A5 +0x92A6 +0x92A7 +0x92A8 @ +0x92A9 A +0x92AA B +0x92AB C +0x92AC D +0x92AD E +0x92AE +0x92AF F +0x92B0 G +0x92B1 H +0x92B2 I +0x92B3 J +0x92B4 K +0x92B5 L +0x92B6 M +0x92B7 N +0x92B8 O +0x92B9 P +0x92BA Q +0x92BB R +0x92BC S +0x92BD T +0x92BE U +0x92BF V +0x92C0 W +0x92C1 X +0x92C2 Y +0x92C3 Z +0x92C4 [ +0x92C5 \ +0x92C6 ] +0x92C7 ^ +0x92C8 +0x92C9 _ +0x92CA ` +0x92CB a +0x92CC b +0x92CD c +0x92CE d +0x92CF e +0x92D0 f +0x92D1 g +0x92D2 h +0x92D3 i +0x92D4 j +0x92D5 k +0x92D6 l +0x92D7 m +0x92D8 n +0x92D9 o +0x92DA p +0x92DB q +0x92DC r +0x92DD s +0x92DE t +0x92DF u +0x92E0 v +0x92E1 w +0x92E2 x +0x92E3 y +0x92E4 z +0x92E5 { +0x92E6 | +0x92E7 } +0x92E8 ~ +0x92E9 +0x92EA +0x92EB +0x92EC +0x92ED +0x92EE +0x92EF +0x92F0 +0x92F1 +0x92F2 +0x92F3 +0x92F4 +0x92F5 +0x92F6 +0x92F7 +0x92F8 +0x92F9 +0x92FA +0x92FB +0x92FC +0x92FD +0x92FE +0x92FF +0x9300 +0x9301 +0x9302 +0x9303 +0x9304 +0x9305 +0x9306 +0x9307 +0x9308 +0x9309 +0x930A @ +0x930B A +0x930C B +0x930D C +0x930E D +0x930F E +0x9310 F +0x9311 G +0x9312 H +0x9313 I +0x9314 J +0x9315 K +0x9316 L +0x9317 M +0x9318 N +0x9319 O +0x931A P +0x931B Q +0x931C R +0x931D S +0x931E T +0x931F U +0x9320 V +0x9321 W +0x9322 X +0x9323 Y +0x9324 Z +0x9325 [ +0x9326 \ +0x9327 ] +0x9328 ^ +0x9329 _ +0x932A ` +0x932B a +0x932C b +0x932D c +0x932E d +0x932F e +0x9330 f +0x9331 g +0x9332 h +0x9333 i +0x9334 j +0x9335 k +0x9336 l +0x9337 m +0x9338 n +0x9339 o +0x933A p +0x933B q +0x933C r +0x933D s +0x933E +0x933F t +0x9340 u +0x9341 v +0x9342 w +0x9343 x +0x9344 y +0x9345 z +0x9346 { +0x9347 | +0x9348 } +0x9349 ~ +0x934A +0x934B +0x934C +0x934D +0x934E +0x934F +0x9350 +0x9351 +0x9352 +0x9353 +0x9354 +0x9355 +0x9356 +0x9357 +0x9358 +0x9359 +0x935A +0x935B +0x935C +0x935D +0x935E +0x935F +0x9360 +0x9361 +0x9362 +0x9363 +0x9364 +0x9365 +0x9366 +0x9367 +0x9368 +0x9369 +0x936A +0x936B +0x936C @ +0x936D A +0x936E B +0x936F C +0x9370 D +0x9371 E +0x9372 F +0x9373 G +0x9374 H +0x9375 I +0x9376 J +0x9377 K +0x9378 L +0x9379 M +0x937A N +0x937B O +0x937C P +0x937D Q +0x937E R +0x937F S +0x9380 T +0x9381 U +0x9382 V +0x9383 W +0x9384 X +0x9385 Y +0x9386 Z +0x9387 [ +0x9388 \ +0x9389 ] +0x938A ^ +0x938B _ +0x938C ` +0x938D a +0x938E b +0x938F +0x9390 c +0x9391 d +0x9392 e +0x9393 f +0x9394 g +0x9395 h +0x9396 i +0x9397 j +0x9398 k +0x9399 l +0x939A m +0x939B n +0x939C o +0x939D p +0x939E q +0x939F r +0x93A0 s +0x93A1 t +0x93A2 u +0x93A3 v +0x93A4 w +0x93A5 x +0x93A6 y +0x93A7 z +0x93A8 { +0x93A9 | +0x93AA } +0x93AB ~ +0x93AC +0x93AD +0x93AE +0x93AF +0x93B0 +0x93B1 +0x93B2 +0x93B3 +0x93B4 +0x93B5 +0x93B6 +0x93B7 +0x93B8 +0x93B9 +0x93BA +0x93BB +0x93BC +0x93BD +0x93BE +0x93BF +0x93C0 +0x93C1 +0x93C2 +0x93C3 +0x93C4 +0x93C5 +0x93C6 +0x93C7 +0x93C8 +0x93C9 +0x93CA +0x93CB +0x93CC +0x93CD +0x93CE @ +0x93CF A +0x93D0 B +0x93D1 C +0x93D2 D +0x93D3 E +0x93D4 F +0x93D5 G +0x93D6 +0x93D7 H +0x93D8 I +0x93D9 J +0x93DA K +0x93DB L +0x93DC M +0x93DD N +0x93DE O +0x93DF P +0x93E0 Q +0x93E1 R +0x93E2 S +0x93E3 T +0x93E4 U +0x93E5 V +0x93E6 W +0x93E7 X +0x93E8 Y +0x93E9 Z +0x93EA [ +0x93EB \ +0x93EC ] +0x93ED ^ +0x93EE _ +0x93EF ` +0x93F0 a +0x93F1 b +0x93F2 c +0x93F3 d +0x93F4 e +0x93F5 f +0x93F6 g +0x93F7 h +0x93F8 i +0x93F9 j +0x93FA k +0x93FB l +0x93FC m +0x93FD n +0x93FE o +0x93FF p +0x9400 q +0x9401 r +0x9402 s +0x9403 t +0x9404 u +0x9405 v +0x9406 w +0x9407 x +0x9408 y +0x9409 z +0x940A { +0x940B | +0x940C } +0x940D ~ +0x940E +0x940F +0x9410 +0x9411 +0x9412 +0x9413 +0x9414 +0x9415 +0x9416 +0x9417 +0x9418 +0x9419 +0x941A +0x941B +0x941C +0x941D +0x941E +0x941F +0x9420 +0x9421 +0x9422 +0x9423 +0x9424 +0x9425 +0x9426 +0x9427 +0x9428 +0x9429 +0x942A +0x942B +0x942C +0x942D +0x942E +0x942F @ +0x9430 A +0x9431 B +0x9432 C +0x9433 D +0x9434 E +0x9435 F +0x9436 G +0x9437 H +0x9438 I +0x9439 J +0x943A K +0x943B L +0x943C M +0x943D N +0x943E +0x943F O +0x9440 P +0x9441 Q +0x9442 R +0x9443 S +0x9444 T +0x9445 U +0x9446 V +0x9447 W +0x9448 X +0x9449 Y +0x944A Z +0x944B [ +0x944C \ +0x944D ] +0x944E ^ +0x944F _ +0x9450 ` +0x9451 a +0x9452 b +0x9453 c +0x9454 d +0x9455 e +0x9456 f +0x9457 g +0x9458 h +0x9459 i +0x945A j +0x945B k +0x945C l +0x945D m +0x945E n +0x945F o +0x9460 p +0x9461 q +0x9462 r +0x9463 s +0x9464 t +0x9465 u +0x9466 v +0x9467 w +0x9468 x +0x9469 y +0x946A z +0x946B +0x946C { +0x946D | +0x946E } +0x946F ~ +0x9470 +0x9471 +0x9472 +0x9473 +0x9474 +0x9475 +0x9476 +0x9477 +0x9478 +0x9479 +0x947A +0x947B +0x947C +0x947D +0x947E +0x947F +0x9480 +0x9481 +0x9482 +0x9483 +0x9484 +0x9485 +0x9486 +0x9487 +0x9488 +0x9489 +0x948A +0x948B +0x948C +0x948D +0x948E ǥ +0x948F +0x9490 +0x9491 +0x9492 +0x9493 +0x9494 +0x9495 +0x9496 +0x9497 +0x9498 +0x9499 +0x949A +0x949B +0x949C +0x949D +0x949E +0x949F +0x94A0 +0x94A1 +0x94A2 +0x94A3 +0x94A4 +0x94A5 Կ +0x94A6 +0x94A7 +0x94A8 +0x94A9 +0x94AA +0x94AB +0x94AC +0x94AD +0x94AE ť +0x94AF +0x94B0 +0x94B1 Ǯ +0x94B2 +0x94B3 ǯ +0x94B4 +0x94B5 +0x94B6 +0x94B7 +0x94B8 +0x94B9 +0x94BA +0x94BB +0x94BC +0x94BD +0x94BE +0x94BF +0x94C0 +0x94C1 +0x94C2 +0x94C3 +0x94C4 +0x94C5 Ǧ +0x94C6 í +0x94C7 +0x94C8 +0x94C9 +0x94CA +0x94CB +0x94CC +0x94CD +0x94CE +0x94CF +0x94D0 +0x94D1 +0x94D2 +0x94D3 +0x94D4 +0x94D5 +0x94D6 +0x94D7 +0x94D8 +0x94D9 +0x94DA +0x94DB +0x94DC ͭ +0x94DD +0x94DE +0x94DF +0x94E0 +0x94E1 ա +0x94E2 +0x94E3 ϳ +0x94E4 +0x94E5 +0x94E6 +0x94E7 +0x94E8 +0x94E9 +0x94EA +0x94EB +0x94EC +0x94ED +0x94EE +0x94EF +0x94F0 +0x94F1 ҿ +0x94F2 +0x94F3 +0x94F4 +0x94F5 +0x94F6 +0x94F7 +0x94F8 +0x94F9 +0x94FA +0x94FB +0x94FC +0x94FD +0x94FE +0x94FF +0x9500 +0x9501 +0x9502 +0x9503 +0x9504 +0x9505 +0x9506 +0x9507 +0x9508 +0x9509 +0x950A +0x950B +0x950C п +0x950D +0x950E +0x950F +0x9510 +0x9511 +0x9512 +0x9513 +0x9514 +0x9515 +0x9516 +0x9517 +0x9518 +0x9519 +0x951A ê +0x951B +0x951C +0x951D +0x951E +0x951F +0x9520 +0x9521 +0x9522 +0x9523 +0x9524 +0x9525 ׶ +0x9526 +0x9527 @ +0x9528 +0x9529 +0x952A +0x952B +0x952C +0x952D +0x952E +0x952F +0x9530 +0x9531 +0x9532 +0x9533 A +0x9534 +0x9535 +0x9536 +0x9537 +0x9538 +0x9539 +0x953A +0x953B +0x953C +0x953D B +0x953E +0x953F +0x9540 +0x9541 þ +0x9542 +0x9543 C +0x9544 +0x9545 +0x9546 +0x9547 +0x9548 D +0x9549 +0x954A +0x954B E +0x954C +0x954D +0x954E +0x954F +0x9550 +0x9551 +0x9552 +0x9553 +0x9554 +0x9555 F +0x9556 +0x9557 +0x9558 +0x9559 +0x955A G +0x955B +0x955C +0x955D +0x955E +0x955F +0x9560 H +0x9561 +0x9562 +0x9563 +0x9564 +0x9565 +0x9566 +0x9567 +0x9568 +0x9569 +0x956A +0x956B +0x956C +0x956D +0x956E I +0x956F +0x9570 +0x9571 +0x9572 +0x9573 +0x9574 J +0x9575 K +0x9576 +0x9577 L +0x9578 M +0x9579 N +0x957A O +0x957B P +0x957C Q +0x957D R +0x957E S +0x957F +0x9580 T +0x9581 U +0x9582 V +0x9583 W +0x9584 X +0x9585 Y +0x9586 Z +0x9587 [ +0x9588 \ +0x9589 ] +0x958A ^ +0x958B _ +0x958C ` +0x958D a +0x958E b +0x958F c +0x9590 d +0x9591 e +0x9592 f +0x9593 g +0x9594 h +0x9595 i +0x9596 j +0x9597 k +0x9598 l +0x9599 m +0x959A n +0x959B o +0x959C p +0x959D q +0x959E r +0x959F s +0x95A0 t +0x95A1 u +0x95A2 v +0x95A3 w +0x95A4 x +0x95A5 y +0x95A6 z +0x95A7 { +0x95A8 | +0x95A9 } +0x95AA ~ +0x95AB +0x95AC +0x95AD +0x95AE +0x95AF +0x95B0 +0x95B1 +0x95B2 +0x95B3 +0x95B4 +0x95B5 +0x95B6 +0x95B7 +0x95B8 +0x95B9 +0x95BA +0x95BB +0x95BC +0x95BD +0x95BE +0x95BF +0x95C0 +0x95C1 +0x95C2 +0x95C3 +0x95C4 +0x95C5 +0x95C6 +0x95C7 +0x95C8 +0x95C9 +0x95CA +0x95CB +0x95CC @ +0x95CD A +0x95CE B +0x95CF C +0x95D0 D +0x95D1 E +0x95D2 F +0x95D3 G +0x95D4 H +0x95D5 I +0x95D6 J +0x95D7 K +0x95D8 L +0x95D9 M +0x95DA N +0x95DB O +0x95DC P +0x95DD Q +0x95DE R +0x95DF S +0x95E0 T +0x95E1 U +0x95E2 V +0x95E3 W +0x95E4 X +0x95E5 Y +0x95E6 Z +0x95E7 [ +0x95E8 +0x95E9 +0x95EA +0x95EB +0x95EC \ +0x95ED +0x95EE +0x95EF +0x95F0 +0x95F1 +0x95F2 +0x95F3 +0x95F4 +0x95F5 +0x95F6 +0x95F7 +0x95F8 բ +0x95F9 +0x95FA +0x95FB +0x95FC +0x95FD +0x95FE +0x95FF ] +0x9600 +0x9601 +0x9602 +0x9603 +0x9604 +0x9605 +0x9606 +0x9607 ^ +0x9608 +0x9609 +0x960A +0x960B +0x960C +0x960D +0x960E +0x960F +0x9610 +0x9611 +0x9612 +0x9613 _ +0x9614 +0x9615 +0x9616 +0x9617 +0x9618 ` +0x9619 +0x961A +0x961B a +0x961C +0x961D +0x961E b +0x961F +0x9620 c +0x9621 +0x9622 +0x9623 d +0x9624 e +0x9625 f +0x9626 g +0x9627 h +0x9628 i +0x9629 j +0x962A +0x962B k +0x962C l +0x962D m +0x962E +0x962F n +0x9630 o +0x9631 +0x9632 +0x9633 +0x9634 +0x9635 +0x9636 +0x9637 p +0x9638 q +0x9639 r +0x963A s +0x963B +0x963C +0x963D +0x963E t +0x963F +0x9640 +0x9641 u +0x9642 +0x9643 v +0x9644 +0x9645 +0x9646 ½ +0x9647 ¤ +0x9648 +0x9649 +0x964A w +0x964B ª +0x964C İ +0x964D +0x964E x +0x964F y +0x9650 +0x9651 z +0x9652 { +0x9653 | +0x9654 +0x9655 +0x9656 } +0x9657 ~ +0x9658 +0x9659 +0x965A +0x965B +0x965C +0x965D +0x965E +0x965F +0x9660 +0x9661 +0x9662 Ժ +0x9663 +0x9664 +0x9665 +0x9666 +0x9667 +0x9668 +0x9669 +0x966A +0x966B +0x966C +0x966D +0x966E +0x966F +0x9670 +0x9671 +0x9672 +0x9673 +0x9674 +0x9675 +0x9676 +0x9677 +0x9678 +0x9679 +0x967A +0x967B +0x967C +0x967D +0x967E +0x967F +0x9680 +0x9681 +0x9682 +0x9683 +0x9684 +0x9685 +0x9686 ¡ +0x9687 +0x9688 +0x9689 +0x968A +0x968B +0x968C @ +0x968D +0x968E A +0x968F +0x9690 +0x9691 B +0x9692 C +0x9693 D +0x9694 +0x9695 E +0x9696 F +0x9697 +0x9698 +0x9699 ϶ +0x969A G +0x969B H +0x969C +0x969D I +0x969E J +0x969F K +0x96A0 L +0x96A1 M +0x96A2 N +0x96A3 O +0x96A4 P +0x96A5 Q +0x96A6 R +0x96A7 +0x96A8 S +0x96A9 T +0x96AA U +0x96AB V +0x96AC W +0x96AD X +0x96AE Y +0x96AF Z +0x96B0 +0x96B1 [ +0x96B2 \ +0x96B3 +0x96B4 ] +0x96B5 ^ +0x96B6 +0x96B7 _ +0x96B8 ` +0x96B9 +0x96BA a +0x96BB b +0x96BC +0x96BD +0x96BE +0x96BF c +0x96C0 ȸ +0x96C1 +0x96C2 d +0x96C3 e +0x96C4 +0x96C5 +0x96C6 +0x96C7 +0x96C8 f +0x96C9 +0x96CA g +0x96CB h +0x96CC +0x96CD Ӻ +0x96CE +0x96CF +0x96D0 i +0x96D1 j +0x96D2 +0x96D3 k +0x96D4 l +0x96D5 +0x96D6 m +0x96D7 n +0x96D8 o +0x96D9 p +0x96DA q +0x96DB r +0x96DC s +0x96DD t +0x96DE u +0x96DF v +0x96E0 +0x96E1 w +0x96E2 x +0x96E3 y +0x96E4 z +0x96E5 { +0x96E6 | +0x96E7 } +0x96E8 +0x96E9 +0x96EA ѩ +0x96EB ~ +0x96EC +0x96ED +0x96EE +0x96EF +0x96F0 +0x96F1 +0x96F2 +0x96F3 +0x96F4 +0x96F5 +0x96F6 +0x96F7 +0x96F8 +0x96F9 +0x96FA +0x96FB +0x96FC +0x96FD +0x96FE +0x96FF +0x9700 +0x9701 +0x9702 +0x9703 +0x9704 +0x9705 +0x9706 +0x9707 +0x9708 +0x9709 ù +0x970A +0x970B +0x970C +0x970D +0x970E +0x970F +0x9710 +0x9711 +0x9712 +0x9713 +0x9714 +0x9715 +0x9716 +0x9717 +0x9718 +0x9719 +0x971A +0x971B +0x971C ˪ +0x971D +0x971E ϼ +0x971F +0x9720 +0x9721 @ +0x9722 A +0x9723 B +0x9724 C +0x9725 D +0x9726 E +0x9727 F +0x9728 G +0x9729 H +0x972A +0x972B I +0x972C J +0x972D +0x972E K +0x972F L +0x9730 +0x9731 M +0x9732 ¶ +0x9733 N +0x9734 O +0x9735 P +0x9736 Q +0x9737 R +0x9738 +0x9739 +0x973A S +0x973B T +0x973C U +0x973D V +0x973E +0x973F W +0x9740 X +0x9741 Y +0x9742 Z +0x9743 [ +0x9744 \ +0x9745 ] +0x9746 ^ +0x9747 _ +0x9748 ` +0x9749 a +0x974A b +0x974B c +0x974C d +0x974D e +0x974E f +0x974F g +0x9750 h +0x9751 i +0x9752 +0x9753 +0x9754 j +0x9755 k +0x9756 +0x9757 l +0x9758 m +0x9759 +0x975A n +0x975B +0x975C o +0x975D p +0x975E +0x975F q +0x9760 +0x9761 +0x9762 +0x9763 r +0x9764 s +0x9765 +0x9766 t +0x9767 u +0x9768 v +0x9769 +0x976A w +0x976B x +0x976C y +0x976D z +0x976E { +0x976F | +0x9770 } +0x9771 ~ +0x9772 +0x9773 +0x9774 ѥ +0x9775 +0x9776 +0x9777 +0x9778 +0x9779 +0x977A +0x977B +0x977C +0x977D +0x977E +0x977F +0x9780 +0x9781 +0x9782 +0x9783 +0x9784 +0x9785 +0x9786 +0x9787 +0x9788 +0x9789 +0x978A +0x978B Ь +0x978C +0x978D +0x978E +0x978F +0x9790 +0x9791 +0x9792 +0x9793 +0x9794 +0x9795 +0x9796 +0x9797 +0x9798 +0x9799 +0x979A +0x979B +0x979C +0x979D +0x979E @ +0x979F A +0x97A0 +0x97A1 B +0x97A2 C +0x97A3 +0x97A4 D +0x97A5 E +0x97A6 F +0x97A7 G +0x97A8 H +0x97A9 I +0x97AA J +0x97AB +0x97AC K +0x97AD +0x97AE L +0x97AF +0x97B0 M +0x97B1 N +0x97B2 +0x97B3 O +0x97B4 +0x97B5 P +0x97B6 Q +0x97B7 R +0x97B8 S +0x97B9 T +0x97BA U +0x97BB V +0x97BC W +0x97BD X +0x97BE Y +0x97BF Z +0x97C0 [ +0x97C1 \ +0x97C2 ] +0x97C3 ^ +0x97C4 _ +0x97C5 ` +0x97C6 a +0x97C7 b +0x97C8 c +0x97C9 d +0x97CA e +0x97CB f +0x97CC g +0x97CD h +0x97CE i +0x97CF j +0x97D0 k +0x97D1 l +0x97D2 m +0x97D3 n +0x97D4 o +0x97D5 p +0x97D6 q +0x97D7 r +0x97D8 s +0x97D9 t +0x97DA u +0x97DB v +0x97DC w +0x97DD x +0x97DE y +0x97DF z +0x97E0 { +0x97E1 | +0x97E2 } +0x97E3 ~ +0x97E4 +0x97E5 +0x97E6 Τ +0x97E7 +0x97E8 +0x97E9 +0x97EA +0x97EB +0x97EC +0x97ED +0x97EE +0x97EF +0x97F0 +0x97F1 +0x97F2 +0x97F3 +0x97F4 +0x97F5 +0x97F6 +0x97F7 +0x97F8 +0x97F9 +0x97FA +0x97FB +0x97FC +0x97FD +0x97FE +0x97FF +0x9800 +0x9801 +0x9802 +0x9803 +0x9804 +0x9805 +0x9806 +0x9807 +0x9808 +0x9809 +0x980A +0x980B +0x980C +0x980D +0x980E +0x980F @ +0x9810 A +0x9811 B +0x9812 C +0x9813 D +0x9814 E +0x9815 F +0x9816 G +0x9817 H +0x9818 I +0x9819 J +0x981A K +0x981B L +0x981C M +0x981D N +0x981E O +0x981F P +0x9820 Q +0x9821 R +0x9822 S +0x9823 T +0x9824 U +0x9825 V +0x9826 W +0x9827 X +0x9828 Y +0x9829 Z +0x982A [ +0x982B \ +0x982C ] +0x982D ^ +0x982E _ +0x982F ` +0x9830 a +0x9831 b +0x9832 c +0x9833 d +0x9834 e +0x9835 f +0x9836 g +0x9837 h +0x9838 i +0x9839 j +0x983A k +0x983B l +0x983C m +0x983D n +0x983E o +0x983F p +0x9840 q +0x9841 r +0x9842 s +0x9843 t +0x9844 u +0x9845 v +0x9846 w +0x9847 x +0x9848 y +0x9849 z +0x984A { +0x984B | +0x984C } +0x984D ~ +0x984E +0x984F +0x9850 +0x9851 +0x9852 +0x9853 +0x9854 +0x9855 +0x9856 +0x9857 +0x9858 +0x9859 +0x985A +0x985B +0x985C +0x985D +0x985E +0x985F +0x9860 +0x9861 +0x9862 +0x9863 +0x9864 +0x9865 +0x9866 +0x9867 +0x9868 +0x9869 +0x986A +0x986B +0x986C +0x986D +0x986E +0x986F @ +0x9870 A +0x9871 B +0x9872 C +0x9873 D +0x9874 E +0x9875 ҳ +0x9876 +0x9877 +0x9878 +0x9879 +0x987A ˳ +0x987B +0x987C +0x987D +0x987E +0x987F +0x9880 +0x9881 +0x9882 +0x9883 +0x9884 Ԥ +0x9885 ­ +0x9886 +0x9887 +0x9888 +0x9889 +0x988A +0x988B F +0x988C +0x988D +0x988E G +0x988F +0x9890 +0x9891 Ƶ +0x9892 H +0x9893 +0x9894 +0x9895 I +0x9896 ӱ +0x9897 +0x9898 +0x9899 J +0x989A +0x989B +0x989C +0x989D +0x989E +0x989F +0x98A0 +0x98A1 +0x98A2 +0x98A3 K +0x98A4 +0x98A5 +0x98A6 +0x98A7 ȧ +0x98A8 L +0x98A9 M +0x98AA N +0x98AB O +0x98AC P +0x98AD Q +0x98AE R +0x98AF S +0x98B0 T +0x98B1 U +0x98B2 V +0x98B3 W +0x98B4 X +0x98B5 Y +0x98B6 Z +0x98B7 [ +0x98B8 \ +0x98B9 ] +0x98BA ^ +0x98BB _ +0x98BC ` +0x98BD a +0x98BE b +0x98BF c +0x98C0 d +0x98C1 e +0x98C2 f +0x98C3 g +0x98C4 h +0x98C5 i +0x98C6 j +0x98C7 k +0x98C8 l +0x98C9 m +0x98CA n +0x98CB o +0x98CC p +0x98CD q +0x98CE +0x98CF r +0x98D0 s +0x98D1 +0x98D2 +0x98D3 +0x98D4 t +0x98D5 +0x98D6 u +0x98D7 v +0x98D8 Ʈ +0x98D9 +0x98DA +0x98DB w +0x98DC x +0x98DD y +0x98DE +0x98DF ʳ +0x98E0 z +0x98E1 { +0x98E2 | +0x98E3 } +0x98E4 ~ +0x98E5 +0x98E6 +0x98E7 +0x98E8 +0x98E9 +0x98EA +0x98EB +0x98EC +0x98ED +0x98EE +0x98EF +0x98F0 +0x98F1 +0x98F2 +0x98F3 +0x98F4 +0x98F5 +0x98F6 +0x98F7 +0x98F8 +0x98F9 +0x98FA +0x98FB +0x98FC +0x98FD +0x98FE +0x98FF +0x9900 +0x9901 +0x9902 +0x9903 +0x9904 +0x9905 +0x9906 +0x9907 +0x9908 @ +0x9909 A +0x990A B +0x990B C +0x990C D +0x990D +0x990E E +0x990F F +0x9910 +0x9911 G +0x9912 H +0x9913 I +0x9914 J +0x9915 K +0x9916 L +0x9917 M +0x9918 N +0x9919 O +0x991A P +0x991B Q +0x991C R +0x991D S +0x991E T +0x991F U +0x9920 V +0x9921 W +0x9922 X +0x9923 Y +0x9924 Z +0x9925 [ +0x9926 \ +0x9927 ] +0x9928 ^ +0x9929 _ +0x992A ` +0x992B a +0x992C b +0x992D c +0x992E +0x992F d +0x9930 e +0x9931 f +0x9932 g +0x9933 h +0x9934 i +0x9935 j +0x9936 k +0x9937 l +0x9938 m +0x9939 n +0x993A o +0x993B p +0x993C q +0x993D r +0x993E s +0x993F t +0x9940 u +0x9941 v +0x9942 w +0x9943 x +0x9944 y +0x9945 z +0x9946 { +0x9947 | +0x9948 } +0x9949 ~ +0x994A +0x994B +0x994C +0x994D +0x994E +0x994F +0x9950 +0x9951 +0x9952 +0x9953 +0x9954 +0x9955 +0x9956 +0x9957 +0x9958 +0x9959 +0x995A +0x995B +0x995C +0x995D +0x995E +0x995F +0x9960 +0x9961 +0x9962 +0x9963 +0x9964 +0x9965 +0x9966 +0x9967 +0x9968 +0x9969 +0x996A +0x996B +0x996C +0x996D +0x996E +0x996F +0x9970 +0x9971 +0x9972 +0x9973 +0x9974 +0x9975 +0x9976 +0x9977 +0x9978 +0x9979 +0x997A +0x997B +0x997C +0x997D +0x997E +0x997F +0x9980 +0x9981 +0x9982 +0x9983 +0x9984 +0x9985 +0x9986 +0x9987 +0x9988 +0x9989 +0x998A +0x998B +0x998C @ +0x998D +0x998E A +0x998F +0x9990 +0x9991 +0x9992 +0x9993 +0x9994 +0x9995 +0x9996 +0x9997 ظ +0x9998 +0x9999 +0x999A B +0x999B C +0x999C D +0x999D E +0x999E F +0x999F G +0x99A0 H +0x99A1 I +0x99A2 J +0x99A3 K +0x99A4 L +0x99A5 +0x99A6 M +0x99A7 N +0x99A8 ܰ +0x99A9 O +0x99AA P +0x99AB Q +0x99AC R +0x99AD S +0x99AE T +0x99AF U +0x99B0 V +0x99B1 W +0x99B2 X +0x99B3 Y +0x99B4 Z +0x99B5 [ +0x99B6 \ +0x99B7 ] +0x99B8 ^ +0x99B9 _ +0x99BA ` +0x99BB a +0x99BC b +0x99BD c +0x99BE d +0x99BF e +0x99C0 f +0x99C1 g +0x99C2 h +0x99C3 i +0x99C4 j +0x99C5 k +0x99C6 l +0x99C7 m +0x99C8 n +0x99C9 o +0x99CA p +0x99CB q +0x99CC r +0x99CD s +0x99CE t +0x99CF u +0x99D0 v +0x99D1 w +0x99D2 x +0x99D3 y +0x99D4 z +0x99D5 { +0x99D6 | +0x99D7 } +0x99D8 ~ +0x99D9 +0x99DA +0x99DB +0x99DC +0x99DD +0x99DE +0x99DF +0x99E0 +0x99E1 +0x99E2 +0x99E3 +0x99E4 +0x99E5 +0x99E6 +0x99E7 +0x99E8 +0x99E9 +0x99EA +0x99EB +0x99EC +0x99ED +0x99EE +0x99EF +0x99F0 +0x99F1 +0x99F2 +0x99F3 +0x99F4 +0x99F5 +0x99F6 +0x99F7 +0x99F8 +0x99F9 +0x99FA @ +0x99FB A +0x99FC B +0x99FD C +0x99FE D +0x99FF E +0x9A00 F +0x9A01 G +0x9A02 H +0x9A03 I +0x9A04 J +0x9A05 K +0x9A06 L +0x9A07 M +0x9A08 N +0x9A09 O +0x9A0A P +0x9A0B Q +0x9A0C R +0x9A0D S +0x9A0E T +0x9A0F U +0x9A10 V +0x9A11 W +0x9A12 X +0x9A13 Y +0x9A14 Z +0x9A15 [ +0x9A16 \ +0x9A17 ] +0x9A18 ^ +0x9A19 _ +0x9A1A ` +0x9A1B a +0x9A1C b +0x9A1D c +0x9A1E d +0x9A1F e +0x9A20 f +0x9A21 g +0x9A22 h +0x9A23 i +0x9A24 j +0x9A25 k +0x9A26 l +0x9A27 m +0x9A28 n +0x9A29 o +0x9A2A p +0x9A2B q +0x9A2C r +0x9A2D s +0x9A2E t +0x9A2F u +0x9A30 v +0x9A31 w +0x9A32 x +0x9A33 y +0x9A34 z +0x9A35 { +0x9A36 | +0x9A37 } +0x9A38 ~ +0x9A39 +0x9A3A +0x9A3B +0x9A3C +0x9A3D +0x9A3E +0x9A3F +0x9A40 +0x9A41 +0x9A42 +0x9A43 +0x9A44 +0x9A45 +0x9A46 +0x9A47 +0x9A48 +0x9A49 +0x9A4A +0x9A4B +0x9A4C +0x9A4D +0x9A4E +0x9A4F +0x9A50 +0x9A51 +0x9A52 +0x9A53 +0x9A54 +0x9A55 +0x9A56 +0x9A57 +0x9A58 +0x9A59 +0x9A5A @ +0x9A5B A +0x9A5C B +0x9A5D C +0x9A5E D +0x9A5F E +0x9A60 F +0x9A61 G +0x9A62 H +0x9A63 I +0x9A64 J +0x9A65 K +0x9A66 L +0x9A67 M +0x9A68 N +0x9A69 O +0x9A6A P +0x9A6B Q +0x9A6C +0x9A6D Ԧ +0x9A6E +0x9A6F ѱ +0x9A70 +0x9A71 +0x9A72 R +0x9A73 +0x9A74 ¿ +0x9A75 +0x9A76 ʻ +0x9A77 +0x9A78 +0x9A79 +0x9A7A +0x9A7B פ +0x9A7C +0x9A7D +0x9A7E +0x9A7F +0x9A80 +0x9A81 +0x9A82 +0x9A83 S +0x9A84 +0x9A85 +0x9A86 +0x9A87 +0x9A88 +0x9A89 T +0x9A8A +0x9A8B +0x9A8C +0x9A8D U +0x9A8E V +0x9A8F +0x9A90 +0x9A91 +0x9A92 +0x9A93 +0x9A94 W +0x9A95 X +0x9A96 +0x9A97 ƭ +0x9A98 +0x9A99 Y +0x9A9A ɧ +0x9A9B +0x9A9C +0x9A9D +0x9A9E +0x9A9F +0x9AA0 +0x9AA1 +0x9AA2 +0x9AA3 +0x9AA4 +0x9AA5 +0x9AA6 Z +0x9AA7 +0x9AA8 +0x9AA9 [ +0x9AAA \ +0x9AAB ] +0x9AAC ^ +0x9AAD _ +0x9AAE ` +0x9AAF a +0x9AB0 +0x9AB1 +0x9AB2 b +0x9AB3 c +0x9AB4 d +0x9AB5 e +0x9AB6 +0x9AB7 +0x9AB8 +0x9AB9 f +0x9ABA +0x9ABB g +0x9ABC +0x9ABD h +0x9ABE i +0x9ABF j +0x9AC0 +0x9AC1 +0x9AC2 +0x9AC3 k +0x9AC4 l +0x9AC5 +0x9AC6 m +0x9AC7 n +0x9AC8 o +0x9AC9 p +0x9ACA q +0x9ACB +0x9ACC +0x9ACD r +0x9ACE s +0x9ACF t +0x9AD0 u +0x9AD1 +0x9AD2 v +0x9AD3 +0x9AD4 w +0x9AD5 x +0x9AD6 y +0x9AD7 z +0x9AD8 +0x9AD9 { +0x9ADA | +0x9ADB } +0x9ADC ~ +0x9ADD +0x9ADE +0x9ADF +0x9AE0 +0x9AE1 +0x9AE2 +0x9AE3 +0x9AE4 +0x9AE5 +0x9AE6 +0x9AE7 +0x9AE8 +0x9AE9 +0x9AEA +0x9AEB +0x9AEC +0x9AED +0x9AEE +0x9AEF +0x9AF0 +0x9AF1 +0x9AF2 +0x9AF3 +0x9AF4 +0x9AF5 +0x9AF6 +0x9AF7 +0x9AF8 +0x9AF9 +0x9AFA +0x9AFB +0x9AFC +0x9AFD +0x9AFE +0x9AFF +0x9B00 +0x9B01 +0x9B02 +0x9B03 +0x9B04 +0x9B05 +0x9B06 +0x9B07 @ +0x9B08 +0x9B09 A +0x9B0A B +0x9B0B C +0x9B0C D +0x9B0D E +0x9B0E F +0x9B0F +0x9B10 G +0x9B11 H +0x9B12 I +0x9B13 +0x9B14 J +0x9B15 K +0x9B16 L +0x9B17 M +0x9B18 N +0x9B19 O +0x9B1A P +0x9B1B Q +0x9B1C R +0x9B1D S +0x9B1E T +0x9B1F +0x9B20 U +0x9B21 V +0x9B22 W +0x9B23 +0x9B24 X +0x9B25 Y +0x9B26 Z +0x9B27 [ +0x9B28 \ +0x9B29 ] +0x9B2A ^ +0x9B2B _ +0x9B2C ` +0x9B2D a +0x9B2E b +0x9B2F +0x9B30 c +0x9B31 d +0x9B32 ت +0x9B33 e +0x9B34 f +0x9B35 g +0x9B36 h +0x9B37 i +0x9B38 j +0x9B39 k +0x9B3A l +0x9B3B +0x9B3C +0x9B3D m +0x9B3E n +0x9B3F o +0x9B40 p +0x9B41 +0x9B42 +0x9B43 +0x9B44 +0x9B45 +0x9B46 q +0x9B47 +0x9B48 +0x9B49 +0x9B4A r +0x9B4B s +0x9B4C t +0x9B4D +0x9B4E u +0x9B4F κ +0x9B50 v +0x9B51 +0x9B52 w +0x9B53 x +0x9B54 ħ +0x9B55 y +0x9B56 z +0x9B57 { +0x9B58 | +0x9B59 } +0x9B5A ~ +0x9B5B +0x9B5C +0x9B5D +0x9B5E +0x9B5F +0x9B60 +0x9B61 +0x9B62 +0x9B63 +0x9B64 +0x9B65 +0x9B66 +0x9B67 +0x9B68 +0x9B69 +0x9B6A +0x9B6B +0x9B6C +0x9B6D +0x9B6E +0x9B6F +0x9B70 +0x9B71 +0x9B72 +0x9B73 +0x9B74 +0x9B75 +0x9B76 +0x9B77 +0x9B78 +0x9B79 +0x9B7A +0x9B7B +0x9B7C @ +0x9B7D A +0x9B7E B +0x9B7F C +0x9B80 D +0x9B81 E +0x9B82 F +0x9B83 G +0x9B84 H +0x9B85 I +0x9B86 J +0x9B87 K +0x9B88 L +0x9B89 M +0x9B8A N +0x9B8B O +0x9B8C P +0x9B8D Q +0x9B8E R +0x9B8F S +0x9B90 T +0x9B91 U +0x9B92 V +0x9B93 W +0x9B94 X +0x9B95 Y +0x9B96 Z +0x9B97 [ +0x9B98 \ +0x9B99 ] +0x9B9A ^ +0x9B9B _ +0x9B9C ` +0x9B9D a +0x9B9E b +0x9B9F c +0x9BA0 d +0x9BA1 e +0x9BA2 f +0x9BA3 g +0x9BA4 h +0x9BA5 i +0x9BA6 j +0x9BA7 k +0x9BA8 l +0x9BA9 m +0x9BAA n +0x9BAB o +0x9BAC p +0x9BAD q +0x9BAE r +0x9BAF s +0x9BB0 t +0x9BB1 u +0x9BB2 v +0x9BB3 w +0x9BB4 x +0x9BB5 y +0x9BB6 z +0x9BB7 { +0x9BB8 | +0x9BB9 } +0x9BBA ~ +0x9BBB +0x9BBC +0x9BBD +0x9BBE +0x9BBF +0x9BC0 +0x9BC1 +0x9BC2 +0x9BC3 +0x9BC4 +0x9BC5 +0x9BC6 +0x9BC7 +0x9BC8 +0x9BC9 +0x9BCA +0x9BCB +0x9BCC +0x9BCD +0x9BCE +0x9BCF +0x9BD0 +0x9BD1 +0x9BD2 +0x9BD3 +0x9BD4 +0x9BD5 +0x9BD6 +0x9BD7 +0x9BD8 +0x9BD9 +0x9BDA +0x9BDB +0x9BDC @ +0x9BDD A +0x9BDE B +0x9BDF C +0x9BE0 D +0x9BE1 E +0x9BE2 F +0x9BE3 G +0x9BE4 H +0x9BE5 I +0x9BE6 J +0x9BE7 K +0x9BE8 L +0x9BE9 M +0x9BEA N +0x9BEB O +0x9BEC P +0x9BED Q +0x9BEE R +0x9BEF S +0x9BF0 T +0x9BF1 U +0x9BF2 V +0x9BF3 W +0x9BF4 X +0x9BF5 Y +0x9BF6 Z +0x9BF7 [ +0x9BF8 \ +0x9BF9 ] +0x9BFA ^ +0x9BFB _ +0x9BFC ` +0x9BFD a +0x9BFE b +0x9BFF c +0x9C00 d +0x9C01 e +0x9C02 f +0x9C03 g +0x9C04 h +0x9C05 i +0x9C06 j +0x9C07 k +0x9C08 l +0x9C09 m +0x9C0A n +0x9C0B o +0x9C0C p +0x9C0D q +0x9C0E r +0x9C0F s +0x9C10 t +0x9C11 u +0x9C12 v +0x9C13 w +0x9C14 x +0x9C15 y +0x9C16 z +0x9C17 { +0x9C18 | +0x9C19 } +0x9C1A ~ +0x9C1B +0x9C1C +0x9C1D +0x9C1E +0x9C1F +0x9C20 +0x9C21 +0x9C22 +0x9C23 +0x9C24 +0x9C25 +0x9C26 +0x9C27 +0x9C28 +0x9C29 +0x9C2A +0x9C2B +0x9C2C +0x9C2D +0x9C2E +0x9C2F +0x9C30 +0x9C31 +0x9C32 +0x9C33 +0x9C34 +0x9C35 +0x9C36 +0x9C37 +0x9C38 +0x9C39 +0x9C3A +0x9C3B +0x9C3C @ +0x9C3D A +0x9C3E B +0x9C3F C +0x9C40 D +0x9C41 E +0x9C42 F +0x9C43 G +0x9C44 H +0x9C45 I +0x9C46 J +0x9C47 K +0x9C48 L +0x9C49 M +0x9C4A N +0x9C4B O +0x9C4C P +0x9C4D Q +0x9C4E R +0x9C4F S +0x9C50 T +0x9C51 U +0x9C52 V +0x9C53 W +0x9C54 X +0x9C55 Y +0x9C56 Z +0x9C57 [ +0x9C58 \ +0x9C59 ] +0x9C5A ^ +0x9C5B _ +0x9C5C ` +0x9C5D a +0x9C5E b +0x9C5F c +0x9C60 d +0x9C61 e +0x9C62 f +0x9C63 g +0x9C64 h +0x9C65 i +0x9C66 j +0x9C67 k +0x9C68 l +0x9C69 m +0x9C6A n +0x9C6B o +0x9C6C p +0x9C6D q +0x9C6E r +0x9C6F s +0x9C70 t +0x9C71 u +0x9C72 v +0x9C73 w +0x9C74 x +0x9C75 y +0x9C76 z +0x9C77 { +0x9C78 | +0x9C79 } +0x9C7A ~ +0x9C7B +0x9C7C +0x9C7D +0x9C7E +0x9C7F +0x9C80 +0x9C81 ³ +0x9C82 +0x9C83 +0x9C84 +0x9C85 +0x9C86 +0x9C87 +0x9C88 +0x9C89 +0x9C8A +0x9C8B +0x9C8C +0x9C8D +0x9C8E +0x9C8F +0x9C90 +0x9C91 +0x9C92 +0x9C93 +0x9C94 +0x9C95 +0x9C96 +0x9C97 +0x9C98 +0x9C99 +0x9C9A +0x9C9B +0x9C9C +0x9C9D +0x9C9E +0x9C9F +0x9CA0 +0x9CA1 +0x9CA2 +0x9CA3 +0x9CA4 +0x9CA5 +0x9CA6 +0x9CA7 +0x9CA8 +0x9CA9 +0x9CAA +0x9CAB +0x9CAC +0x9CAD +0x9CAE +0x9CAF +0x9CB0 +0x9CB1 +0x9CB2 +0x9CB3 +0x9CB4 +0x9CB5 +0x9CB6 +0x9CB7 +0x9CB8 +0x9CB9 +0x9CBA +0x9CBB +0x9CBC +0x9CBD +0x9CBE +0x9CBF +0x9CC0 +0x9CC1 +0x9CC2 +0x9CC3 +0x9CC4 +0x9CC5 +0x9CC6 +0x9CC7 +0x9CC8 +0x9CC9 +0x9CCA +0x9CCB +0x9CCC +0x9CCD +0x9CCE +0x9CCF +0x9CD0 +0x9CD1 +0x9CD2 +0x9CD3 +0x9CD4 +0x9CD5 +0x9CD6 +0x9CD7 +0x9CD8 +0x9CD9 +0x9CDA +0x9CDB +0x9CDC +0x9CDD +0x9CDE +0x9CDF +0x9CE0 +0x9CE1 +0x9CE2 +0x9CE3 @ +0x9CE4 A +0x9CE5 B +0x9CE6 C +0x9CE7 D +0x9CE8 E +0x9CE9 F +0x9CEA G +0x9CEB H +0x9CEC I +0x9CED J +0x9CEE K +0x9CEF L +0x9CF0 M +0x9CF1 N +0x9CF2 O +0x9CF3 P +0x9CF4 Q +0x9CF5 R +0x9CF6 S +0x9CF7 T +0x9CF8 U +0x9CF9 V +0x9CFA W +0x9CFB X +0x9CFC Y +0x9CFD Z +0x9CFE [ +0x9CFF \ +0x9D00 ] +0x9D01 ^ +0x9D02 _ +0x9D03 ` +0x9D04 a +0x9D05 b +0x9D06 c +0x9D07 d +0x9D08 e +0x9D09 f +0x9D0A g +0x9D0B h +0x9D0C i +0x9D0D j +0x9D0E k +0x9D0F l +0x9D10 m +0x9D11 n +0x9D12 o +0x9D13 p +0x9D14 q +0x9D15 r +0x9D16 s +0x9D17 t +0x9D18 u +0x9D19 v +0x9D1A w +0x9D1B x +0x9D1C y +0x9D1D z +0x9D1E { +0x9D1F | +0x9D20 } +0x9D21 ~ +0x9D22 +0x9D23 +0x9D24 +0x9D25 +0x9D26 +0x9D27 +0x9D28 +0x9D29 +0x9D2A +0x9D2B +0x9D2C +0x9D2D +0x9D2E +0x9D2F +0x9D30 +0x9D31 +0x9D32 +0x9D33 +0x9D34 +0x9D35 +0x9D36 +0x9D37 +0x9D38 +0x9D39 +0x9D3A +0x9D3B +0x9D3C +0x9D3D +0x9D3E +0x9D3F +0x9D40 +0x9D41 +0x9D42 +0x9D43 @ +0x9D44 A +0x9D45 B +0x9D46 C +0x9D47 D +0x9D48 E +0x9D49 F +0x9D4A G +0x9D4B H +0x9D4C I +0x9D4D J +0x9D4E K +0x9D4F L +0x9D50 M +0x9D51 N +0x9D52 O +0x9D53 P +0x9D54 Q +0x9D55 R +0x9D56 S +0x9D57 T +0x9D58 U +0x9D59 V +0x9D5A W +0x9D5B X +0x9D5C Y +0x9D5D Z +0x9D5E [ +0x9D5F \ +0x9D60 ] +0x9D61 ^ +0x9D62 _ +0x9D63 ` +0x9D64 a +0x9D65 b +0x9D66 c +0x9D67 d +0x9D68 e +0x9D69 f +0x9D6A g +0x9D6B h +0x9D6C i +0x9D6D j +0x9D6E k +0x9D6F l +0x9D70 m +0x9D71 n +0x9D72 o +0x9D73 p +0x9D74 q +0x9D75 r +0x9D76 s +0x9D77 t +0x9D78 u +0x9D79 v +0x9D7A w +0x9D7B x +0x9D7C y +0x9D7D z +0x9D7E { +0x9D7F | +0x9D80 } +0x9D81 ~ +0x9D82 +0x9D83 +0x9D84 +0x9D85 +0x9D86 +0x9D87 +0x9D88 +0x9D89 +0x9D8A +0x9D8B +0x9D8C +0x9D8D +0x9D8E +0x9D8F +0x9D90 +0x9D91 +0x9D92 +0x9D93 +0x9D94 +0x9D95 +0x9D96 +0x9D97 +0x9D98 +0x9D99 +0x9D9A +0x9D9B +0x9D9C +0x9D9D +0x9D9E +0x9D9F +0x9DA0 +0x9DA1 +0x9DA2 +0x9DA3 @ +0x9DA4 A +0x9DA5 B +0x9DA6 C +0x9DA7 D +0x9DA8 E +0x9DA9 F +0x9DAA G +0x9DAB H +0x9DAC I +0x9DAD J +0x9DAE K +0x9DAF L +0x9DB0 M +0x9DB1 N +0x9DB2 O +0x9DB3 P +0x9DB4 Q +0x9DB5 R +0x9DB6 S +0x9DB7 T +0x9DB8 U +0x9DB9 V +0x9DBA W +0x9DBB X +0x9DBC Y +0x9DBD Z +0x9DBE [ +0x9DBF \ +0x9DC0 ] +0x9DC1 ^ +0x9DC2 _ +0x9DC3 ` +0x9DC4 a +0x9DC5 b +0x9DC6 c +0x9DC7 d +0x9DC8 e +0x9DC9 f +0x9DCA g +0x9DCB h +0x9DCC i +0x9DCD j +0x9DCE k +0x9DCF l +0x9DD0 m +0x9DD1 n +0x9DD2 o +0x9DD3 p +0x9DD4 q +0x9DD5 r +0x9DD6 s +0x9DD7 t +0x9DD8 u +0x9DD9 v +0x9DDA w +0x9DDB x +0x9DDC y +0x9DDD z +0x9DDE { +0x9DDF | +0x9DE0 } +0x9DE1 ~ +0x9DE2 +0x9DE3 +0x9DE4 +0x9DE5 +0x9DE6 +0x9DE7 +0x9DE8 +0x9DE9 +0x9DEA +0x9DEB +0x9DEC +0x9DED +0x9DEE +0x9DEF +0x9DF0 +0x9DF1 +0x9DF2 +0x9DF3 +0x9DF4 +0x9DF5 +0x9DF6 +0x9DF7 +0x9DF8 +0x9DF9 +0x9DFA +0x9DFB +0x9DFC +0x9DFD +0x9DFE +0x9DFF +0x9E00 +0x9E01 +0x9E02 +0x9E03 @ +0x9E04 A +0x9E05 B +0x9E06 C +0x9E07 D +0x9E08 E +0x9E09 F +0x9E0A G +0x9E0B H +0x9E0C I +0x9E0D J +0x9E0E K +0x9E0F L +0x9E10 M +0x9E11 N +0x9E12 O +0x9E13 P +0x9E14 Q +0x9E15 R +0x9E16 S +0x9E17 T +0x9E18 U +0x9E19 V +0x9E1A W +0x9E1B X +0x9E1C Y +0x9E1D Z +0x9E1E [ +0x9E1F +0x9E20 +0x9E21 +0x9E22 +0x9E23 +0x9E24 \ +0x9E25 Ÿ +0x9E26 ѻ +0x9E27 ] +0x9E28 +0x9E29 +0x9E2A +0x9E2B +0x9E2C +0x9E2D Ѽ +0x9E2E ^ +0x9E2F +0x9E30 _ +0x9E31 +0x9E32 +0x9E33 ԧ +0x9E34 ` +0x9E35 +0x9E36 +0x9E37 +0x9E38 +0x9E39 +0x9E3A +0x9E3B a +0x9E3C b +0x9E3D +0x9E3E +0x9E3F +0x9E40 c +0x9E41 +0x9E42 +0x9E43 +0x9E44 +0x9E45 +0x9E46 +0x9E47 +0x9E48 +0x9E49 +0x9E4A ȵ +0x9E4B +0x9E4C +0x9E4D d +0x9E4E +0x9E4F +0x9E50 e +0x9E51 +0x9E52 f +0x9E53 g +0x9E54 h +0x9E55 +0x9E56 i +0x9E57 +0x9E58 +0x9E59 j +0x9E5A +0x9E5B +0x9E5C +0x9E5D k +0x9E5E +0x9E5F l +0x9E60 m +0x9E61 n +0x9E62 o +0x9E63 +0x9E64 +0x9E65 p +0x9E66 +0x9E67 +0x9E68 +0x9E69 +0x9E6A +0x9E6B +0x9E6C +0x9E6D +0x9E6E q +0x9E6F r +0x9E70 ӥ +0x9E71 +0x9E72 s +0x9E73 +0x9E74 t +0x9E75 u +0x9E76 v +0x9E77 w +0x9E78 x +0x9E79 y +0x9E7A z +0x9E7B { +0x9E7C | +0x9E7D } +0x9E7E +0x9E7F ¹ +0x9E80 ~ +0x9E81 +0x9E82 +0x9E83 +0x9E84 +0x9E85 +0x9E86 +0x9E87 +0x9E88 +0x9E89 +0x9E8A +0x9E8B +0x9E8C +0x9E8D +0x9E8E +0x9E8F +0x9E90 +0x9E91 +0x9E92 +0x9E93 ´ +0x9E94 +0x9E95 +0x9E96 +0x9E97 +0x9E98 +0x9E99 +0x9E9A +0x9E9B +0x9E9C +0x9E9D +0x9E9E +0x9E9F +0x9EA0 +0x9EA1 +0x9EA2 +0x9EA3 +0x9EA4 +0x9EA5 +0x9EA6 +0x9EA7 +0x9EA8 +0x9EA9 +0x9EAA +0x9EAB @ +0x9EAC A +0x9EAD B +0x9EAE C +0x9EAF D +0x9EB0 E +0x9EB1 F +0x9EB2 G +0x9EB3 H +0x9EB4 +0x9EB5 I +0x9EB6 J +0x9EB7 K +0x9EB8 +0x9EB9 L +0x9EBA M +0x9EBB +0x9EBC N +0x9EBD +0x9EBE +0x9EBF O +0x9EC0 P +0x9EC1 Q +0x9EC2 R +0x9EC3 S +0x9EC4 +0x9EC5 T +0x9EC6 U +0x9EC7 V +0x9EC8 W +0x9EC9 +0x9ECA X +0x9ECB Y +0x9ECC Z +0x9ECD +0x9ECE +0x9ECF +0x9ED0 [ +0x9ED1 +0x9ED2 \ +0x9ED3 ] +0x9ED4 ǭ +0x9ED5 ^ +0x9ED6 _ +0x9ED7 ` +0x9ED8 Ĭ +0x9ED9 a +0x9EDA b +0x9EDB +0x9EDC +0x9EDD +0x9EDE c +0x9EDF +0x9EE0 +0x9EE1 d +0x9EE2 +0x9EE3 e +0x9EE4 f +0x9EE5 +0x9EE6 g +0x9EE7 +0x9EE8 h +0x9EE9 +0x9EEA +0x9EEB i +0x9EEC j +0x9EED k +0x9EEE l +0x9EEF +0x9EF0 m +0x9EF1 n +0x9EF2 o +0x9EF3 p +0x9EF4 q +0x9EF5 r +0x9EF6 s +0x9EF7 t +0x9EF8 u +0x9EF9 +0x9EFA v +0x9EFB +0x9EFC +0x9EFD w +0x9EFE +0x9EFF x +0x9F00 y +0x9F01 z +0x9F02 { +0x9F03 | +0x9F04 } +0x9F05 ~ +0x9F06 +0x9F07 +0x9F08 +0x9F09 +0x9F0A +0x9F0B +0x9F0C +0x9F0D +0x9F0E +0x9F0F +0x9F10 ؾ +0x9F11 +0x9F12 +0x9F13 +0x9F14 +0x9F15 +0x9F16 +0x9F17 ػ +0x9F18 +0x9F19 ܱ +0x9F1A +0x9F1B +0x9F1C +0x9F1D +0x9F1E +0x9F1F +0x9F20 +0x9F21 +0x9F22 +0x9F23 +0x9F24 +0x9F25 +0x9F26 +0x9F27 +0x9F28 +0x9F29 +0x9F2A +0x9F2B +0x9F2C +0x9F2D +0x9F2E +0x9F2F +0x9F30 +0x9F31 +0x9F32 @ +0x9F33 A +0x9F34 B +0x9F35 C +0x9F36 D +0x9F37 +0x9F38 E +0x9F39 +0x9F3A F +0x9F3B +0x9F3C G +0x9F3D +0x9F3E +0x9F3F H +0x9F40 I +0x9F41 J +0x9F42 K +0x9F43 L +0x9F44 +0x9F45 M +0x9F46 N +0x9F47 O +0x9F48 P +0x9F49 Q +0x9F4A R +0x9F4B S +0x9F4C T +0x9F4D U +0x9F4E V +0x9F4F W +0x9F50 +0x9F51 +0x9F52 X +0x9F53 Y +0x9F54 Z +0x9F55 [ +0x9F56 \ +0x9F57 ] +0x9F58 ^ +0x9F59 _ +0x9F5A ` +0x9F5B a +0x9F5C b +0x9F5D c +0x9F5E d +0x9F5F e +0x9F60 f +0x9F61 g +0x9F62 h +0x9F63 i +0x9F64 j +0x9F65 k +0x9F66 l +0x9F67 m +0x9F68 n +0x9F69 o +0x9F6A p +0x9F6B q +0x9F6C r +0x9F6D s +0x9F6E t +0x9F6F u +0x9F70 v +0x9F71 w +0x9F72 x +0x9F73 y +0x9F74 z +0x9F75 { +0x9F76 | +0x9F77 } +0x9F78 ~ +0x9F79 +0x9F7A +0x9F7B +0x9F7C +0x9F7D +0x9F7E +0x9F7F +0x9F80 +0x9F81 +0x9F82 +0x9F83 +0x9F84 +0x9F85 +0x9F86 +0x9F87 +0x9F88 +0x9F89 +0x9F8A +0x9F8B ȣ +0x9F8C +0x9F8D +0x9F8E +0x9F8F +0x9F90 +0x9F91 +0x9F92 +0x9F93 +0x9F94 +0x9F95 +0x9F96 +0x9F97 +0x9F98 +0x9F99 +0x9F9A +0x9F9B +0x9F9C +0x9F9D +0x9F9E +0x9F9F +0x9FA0 +0x9FA1 +0x9FA2 +0x9FA3 +0x9FA4 +0x9FA5 diff --git a/tools/train/svmtools/bs.TXT b/tools/train/svmtools/bs.TXT new file mode 100644 index 000000000..97b070959 --- /dev/null +++ b/tools/train/svmtools/bs.TXT @@ -0,0 +1,215 @@ +0x4E00 +0x4E28 +0x4E36 +0x4E3F +0x4E59 +0x4E85 +0x4E8C +0x4EA0 +0x4EBA +0x513F +0x5165 +0x516B +0x5182 +0x5196 +0x51AB +0x51E0 +0x51F5 +0x5200 +0x529B +0x52F9 +0x5315 +0x531A +0x5341 +0x535C +0x5369 +0x5382 +0x53B6 +0x53C8 +0x53E3 +0x56D7 +0x571F +0x58EB +0x5902 +0x590A +0x5915 +0x5927 +0x5973 +0x5B50 +0x5B80 +0x5BF8 +0x5C0F +0x5C22 +0x5C38 +0x5C6E +0x5C71 +0x5DD8 +0x5DE5 +0x5DF1 +0x5DFE +0x5E72 +0x5E7A +0x5E7F +0x5EF4 +0x5EFE +0x5F08 +0x5F13 +0x5F50 +0x5F61 +0x5F73 +0x5FC3 +0x6208 +0x6236 +0x624B +0x652F +0x6535 +0x6587 +0x6597 +0x65A4 +0x65B9 +0x65E0 +0x65E5 +0x66F0 +0x6708 +0x6728 +0x6B20 +0x6B62 +0x6B79 +0x6BB3 +0x6BCB +0x6BD4 +0x6BDB +0x6C0F +0x6C14 +0x6C34 +0x706B +0x722A +0x7236 +0x723B +0x723F +0x7247 +0x7259 +0x725B +0x72AC +0x7384 +0x7389 +0x74DC +0x74E6 +0x7518 +0x751F +0x7528 +0x7530 +0x758B +0x7592 +0x7676 +0x767D +0x76AE +0x76BF +0x76EE +0x77D8 +0x77E2 +0x77F3 +0x793A +0x79B8 +0x79BE +0x7A74 +0x7ACB +0x7AF9 +0x7C73 +0x7CF8 +0x7E9F +0x7F36 +0x7F51 +0x7F8A +0x7FBD +0x8001 +0x800C +0x8012 +0x8033 +0x807F +0x8089 +0x81E3 +0x81EA +0x81F3 +0x81FC +0x820C +0x821B +0x821F +0x826E +0x8272 +0x8278 +0x864D +0x8668 +0x8840 +0x884C +0x8863 +0x897E +0x898B +0x89D2 +0x8A00 +0x8C37 +0x8C46 +0x8C55 +0x8C78 +0x8C9D +0x8D64 +0x8D70 +0x8DB3 +0x8EAB +0x8ECA +0x8F9B +0x8FB0 +0x8FB6 +0x9092 +0x9149 +0x91C6 +0x91CC +0x91D1 +0x9577 +0x9580 +0x95E8 +0x961C +0x96B6 +0x96B9 +0x96E8 +0x9751 +0x975E +0x9762 +0x9769 +0x97CB +0x97E6 +0x97ED +0x97F3 +0x9801 +0x98A8 +0x98DF +0x9996 +0x9999 +0x99AC +0x9AA8 +0x9AD8 +0x9ADF +0x9B25 +0x9B32 +0x9B3C +0x9B5A +0x9CE5 +0x9E75 +0x9E7F +0x9EA5 +0x9EBB +0x9EC3 +0x9ECD +0x9ED1 +0x9EF9 +0x9EFD +0x9F0E +0x9F13 +0x9F20 +0x9F3B +0x9F4A +0x9F50 +0x9F52 +0x9F8D +0x9F9C +0x9FA0 \ No newline at end of file diff --git a/tools/train/svmtools/config.svmt.in b/tools/train/svmtools/config.svmt.in new file mode 100644 index 000000000..fdf48cfdf --- /dev/null +++ b/tools/train/svmtools/config.svmt.in @@ -0,0 +1,74 @@ +# SVMT configuration file +# -------------- location of the training set ----------------- +#TRAINSET = train.txt +TRAINSET = +# -------------- location of the validation set --------------- +#VALSET = CHINES.val.TXT +# -------------- location of the test set --------------------- +#TESTSET = CHINES.test.TXT +# -------------- location of the Joachims svmlight software --- +#SVMDIR = ../../../svmlight/svm_light_windows/ +SVMDIR = +# -------------- name of the model to create ------------------ +NAME = +# --------------- dictionary repairing list ------------------- +#R = dict.repair.list +# --------------- window definition (lenght, core_position) --- +W = 5 2 +# --------------- feature filtering (count_cut_off, max_mapping_size) +F = 2 100000 +# --------------- default C Parameter values ------------------ +CK = 0.1086 +CU = 0.07975 +# --------------- % of unknown words expected (3 by default) - +X = 3 +# --------------- weight filtering for known words ------------ +Kfilter = 0 +# --------------- weight filtering for unknown words ---------- +Ufilter = 0 +# --------------- remove intermediate files ------------------- +REMOVE_FILES = 1 +#Dratio = 0.001 +# --------------- remake cross-validation folders ------------- +REMAKE_FOLDERS = 1 +# --------------- action items -------------------------------- +# *** train model 0, LR and RL, C Parameter Tuning, cross-validation 10 folders +#do M0 LR CK:0.1 CU:0.07975 +#do M0 LRL CK:0.01:1:3:10:log CU:0.01:1:3:10:log T:10 +# *** train model 1, RL, C Parameter Tuning, no cross-validation, test +#do M1 LR CK:0.1 CU:0.07975 +#do M1 RL CK:0.01:1:3:10:log CU:0.01:1:3:10:log T +# *** train model 2, LR and RL, no C Parameter Tuning, no cross-validation, test +#do M2 LR CK:0.1 CU:0.08 T +# *** M3 is currently unavailable +# *** train model 4, LR, C Parameter Tuning, no cross-validation, no test +do M4 LR CK:0.1 CU:0.07975 +#do M4 LR CK:0.01:1:3:10:log CU:0.01:1:3:10:log +# ----------------------------------------------------------------------------------- +#list of classes (automatically determined by default) +# ----------------------------------------------------------------------------------- +#list of parts-of-speech presenting ambiguity +#AP = '' CC CD DT EX FW IN JJ JJR JJS LS MD NN NNS NNP NNPS PDT POS PRP PRP$ RB RBR RBS RP SYM UH VB VBD VBG VBN VBP VBZ WDT WP WRB +#list of open-classes +#UP = FW JJ JJR JJS NN NNS NNP NNPS RB RBR RBS VB VBD VBG VBN VBP VBZ +# ----------------------------------------------------------------------------------- +#ambiguous-right [default] +A0k = w(-2) w(-1) w(0) w(1) w(2) w(-2,-1) w(-1,0) w(0,1) w(-1,1) w(1,2) w(-2,-1,0) w(-2,-1,1) w(-1,0,1) w(-1,1,2) w(0,1,2) p(-2) p(-1) p(-2,-1) p(-1,1) p(1,2) p(-2,-1,1) p(-1,1,2) k(0) k(1) k(2) m(0) m(1) m(2) +A0u = w(-2) w(-1) w(0) w(1) w(2) w(-2,-1) w(-1,0) w(0,1) w(-1,1) w(1,2) w(-2,-1,0) w(-2,-1,1) w(-1,0,1) w(-1,1,2) w(0,1,2) p(-2) p(-1) p(-2,-1) p(-1,1) p(1,2) p(-2,-1,1) p(-1,1,2) k(0) k(1) k(2) m(0) m(1) m(2) a(1) a(2) a(3) a(4) z(1) z(2) z(3) z(4) bsa(1) bsz(1) L SA AA SN CA CAA CP CC CN MW +# ----------------------------------------------------------------------------------- +#unambiguous-right +A1k = w(-2) w(-1) w(0) w(1) w(2) w(-2,-1) w(-1,0) w(0,1) w(-1,1) w(1,2) w(-2,-1,0) w(-2,-1,1) w(-1,0,1) w(-1,1,2) w(0,1,2) p(-2) p(-1) p(1) p(2) p(-2,-1) p(-1,0) p(-1,1) p(0,1) p(1,2) p(-2,-1,0) p(-2,-1,1) p(-1,0,1) p(-1,1,2) k(0) k(1) k(2) m(0) m(1) m(2) +A1u = w(-2) w(-1) w(0) w(1) w(2) w(-2,-1) w(-1,0) w(0,1) w(-1,1) w(1,2) w(-2,-1,0) w(-2,-1,1) w(-1,0,1) w(-1,1,2) w(0,1,2) p(-2) p(-1) p(1) p(2) p(-2,-1) p(-1,0) p(-1,1) p(0,1) p(1,2) p(-2,-1,0) p(-2,-1,1) p(-1,0,1) p(-1,1,2) k(0) k(1) k(2) m(0) m(1) m(2) a(1) a(2) a(3) a(4) z(1) z(2) z(3) z(4) L SA AA SN CA CAA CP CC CN MW +# ----------------------------------------------------------------------------------- +#no-right +A2k = w(-2) w(-1) w(0) w(1) w(2) w(-2,-1) w(-1,0) w(0,1) w(-1,1) w(1,2) w(-2,-1,0) w(-2,-1,1) w(-1,0,1) w(-1,1,2) w(0,1,2) p(-2) p(-1) p(-2,-1) k(0) m(0) +A2u = w(-2) w(-1) w(0) w(1) w(2) w(-2,-1) w(-1,0) w(0,1) w(-1,1) w(1,2) w(-2,-1,0) w(-2,-1,1) w(-1,0,1) w(-1,1,2) w(0,1,2) p(-2) p(-1) p(-2,-1) k(0) m(0) a(1) a(2) a(3) a(4) z(1) z(2) z(3) z(4) L SA AA SN CA CAA CP CC CN MW +# ----------------------------------------------------------------------------------- +#unsupervised-learning +A3k = w(-2) w(-1) w(0) w(1) w(2) w(-2,-1) w(-1,0) w(0,1) w(-1,1) w(1,2) w(-2,-1,0) w(-2,-1,1) w(-1,0,1) w(-1,1,2) w(0,1,2) p(-2) p(-1) p(-2,-1) p(-1,1) p(1,2) p(-2,-1,1) p(-1,1,2) k(-2) k(-1) k(1) k(2) m(-2) m(-1) m(1) m(2) +A3u = w(-2) w(-1) w(0) w(1) w(2) w(-2,-1) w(-1,0) w(0,1) w(-1,1) w(1,2) w(-2,-1,0) w(-2,-1,1) w(-1,0,1) w(-1,1,2) w(0,1,2) p(-2) p(-1) p(-2,-1) p(-1,1) p(1,2) p(-2,-1,1) p(-1,1,2) k(-2) k(-1) k(1) k(2) m(-2) m(-1) m(1) m(2) a(1) a(2) a(3) a(4) z(1) z(2) z(3) z(4) L SA AA SN CA CAA CP CC CN MW +# ----------------------------------------------------------------------------------- +#ambiguous-right ++ unknown words on training +A4k = w(-2) w(-1) w(0) w(1) w(2) w(-2,-1) w(-1,0) w(0,1) w(-1,1) w(1,2) w(-2,-1,0) w(-2,-1,1) w(-1,0,1) w(-1,1,2) w(0,1,2) p(-2) p(-1) p(-2,-1) p(-1,1) p(1,2) p(-2,-1,1) p(-1,1,2) k(0) k(1) k(2) m(0) m(1) m(2) +A4u = w(-2) w(-1) w(0) w(1) w(2) w(-2,-1) w(-1,0) w(0,1) w(-1,1) w(1,2) w(-2,-1,0) w(-2,-1,1) w(-1,0,1) w(-1,1,2) w(0,1,2) p(-2) p(-1) p(-2,-1) p(-1,1) p(1,2) p(-2,-1,1) p(-1,1,2) k(0) k(1) k(2) m(0) m(1) m(2) a(1) a(2) a(3) a(4) z(2) z(4) bsa(1) bsa(2) bsa(3) bsz(1) bsz(2) L SA AA SN CA CAA CP CC CN MW DOU +# ----------------------------------------------------------------------------------- diff --git a/tools/train/svmtools/result.TXT b/tools/train/svmtools/result.TXT new file mode 100644 index 000000000..873402019 --- /dev/null +++ b/tools/train/svmtools/result.TXT @@ -0,0 +1,20902 @@ +0x4E00 һ +0x4E01 +0x4E02 @ +0x4E03 +0x4E04 A +0x4E05 B +0x4E06 C +0x4E07 +0x4E08 +0x4E09 +0x4E0A +0x4E0B +0x4E0C آ +0x4E0D +0x4E0E +0x4E0F D +0x4E10 ؤ +0x4E11 +0x4E12 E +0x4E13 ר +0x4E14 +0x4E15 ا +0x4E16 +0x4E17 F +0x4E18 +0x4E19 +0x4E1A ҵ +0x4E1B +0x4E1C +0x4E1D ˿ +0x4E1E ة +0x4E1F G +0x4E20 H +0x4E21 I +0x4E22 +0x4E23 J +0x4E24 +0x4E25 +0x4E26 K +0x4E27 ɥ +0x4E28 ح +0x4E29 L +0x4E2A +0x4E2B Ѿ +0x4E2C +0x4E2D +0x4E2E M +0x4E2F N +0x4E30 +0x4E31 O +0x4E32 +0x4E33 P +0x4E34 +0x4E35 Q +0x4E36 ؼ +0x4E37 R +0x4E38 +0x4E39 +0x4E3A Ϊ +0x4E3B +0x4E3C S +0x4E3D +0x4E3E +0x4E3F د +0x4E40 T +0x4E41 U +0x4E42 V +0x4E43 +0x4E44 W +0x4E45 +0x4E46 X +0x4E47 ر +0x4E48 ô +0x4E49 +0x4E4A Y +0x4E4B ֮ +0x4E4C +0x4E4D է +0x4E4E +0x4E4F +0x4E50 +0x4E51 Z +0x4E52 ƹ +0x4E53 +0x4E54 +0x4E55 [ +0x4E56 +0x4E57 \ +0x4E58 +0x4E59 +0x4E5A ] +0x4E5B ^ +0x4E5C ؿ +0x4E5D +0x4E5E +0x4E5F Ҳ +0x4E60 ϰ +0x4E61 +0x4E62 _ +0x4E63 ` +0x4E64 a +0x4E65 b +0x4E66 +0x4E67 c +0x4E68 d +0x4E69 +0x4E6A e +0x4E6B f +0x4E6C g +0x4E6D h +0x4E6E i +0x4E6F j +0x4E70 +0x4E71 +0x4E72 k +0x4E73 +0x4E74 l +0x4E75 m +0x4E76 n +0x4E77 o +0x4E78 p +0x4E79 q +0x4E7A r +0x4E7B s +0x4E7C t +0x4E7D u +0x4E7E Ǭ +0x4E7F v +0x4E80 w +0x4E81 x +0x4E82 y +0x4E83 z +0x4E84 { +0x4E85 | +0x4E86 +0x4E87 } +0x4E88 +0x4E89 +0x4E8A ~ +0x4E8B +0x4E8C +0x4E8D ء +0x4E8E +0x4E8F +0x4E90 +0x4E91 +0x4E92 +0x4E93 +0x4E94 +0x4E95 +0x4E96 +0x4E97 +0x4E98 ب +0x4E99 +0x4E9A +0x4E9B Щ +0x4E9C +0x4E9D +0x4E9E +0x4E9F ؽ +0x4EA0 +0x4EA1 +0x4EA2 +0x4EA3 +0x4EA4 +0x4EA5 +0x4EA6 +0x4EA7 +0x4EA8 +0x4EA9 Ķ +0x4EAA +0x4EAB +0x4EAC +0x4EAD ͤ +0x4EAE +0x4EAF +0x4EB0 +0x4EB1 +0x4EB2 +0x4EB3 +0x4EB4 +0x4EB5 +0x4EB6 +0x4EB7 +0x4EB8 +0x4EB9 +0x4EBA +0x4EBB +0x4EBC +0x4EBD +0x4EBE +0x4EBF +0x4EC0 ʲ +0x4EC1 +0x4EC2 +0x4EC3 +0x4EC4 +0x4EC5 +0x4EC6 +0x4EC7 +0x4EC8 +0x4EC9 +0x4ECA +0x4ECB +0x4ECC +0x4ECD +0x4ECE +0x4ECF +0x4ED0 +0x4ED1 +0x4ED2 +0x4ED3 +0x4ED4 +0x4ED5 +0x4ED6 +0x4ED7 +0x4ED8 +0x4ED9 +0x4EDA +0x4EDB +0x4EDC +0x4EDD +0x4EDE +0x4EDF Ǫ +0x4EE0 +0x4EE1 +0x4EE2 +0x4EE3 +0x4EE4 +0x4EE5 +0x4EE6 +0x4EE7 +0x4EE8 +0x4EE9 +0x4EEA +0x4EEB +0x4EEC +0x4EED +0x4EEE +0x4EEF +0x4EF0 +0x4EF1 +0x4EF2 +0x4EF3 +0x4EF4 +0x4EF5 +0x4EF6 +0x4EF7 +0x4EF8 +0x4EF9 +0x4EFA +0x4EFB +0x4EFC +0x4EFD +0x4EFE +0x4EFF +0x4F00 +0x4F01 +0x4F02 +0x4F03 +0x4F04 +0x4F05 +0x4F06 +0x4F07 +0x4F08 +0x4F09 +0x4F0A +0x4F0B +0x4F0C +0x4F0D +0x4F0E +0x4F0F +0x4F10 +0x4F11 +0x4F12 +0x4F13 +0x4F14 +0x4F15 +0x4F16 +0x4F17 +0x4F18 +0x4F19 +0x4F1A +0x4F1B +0x4F1C +0x4F1D +0x4F1E ɡ +0x4F1F ΰ +0x4F20 +0x4F21 +0x4F22 +0x4F23 +0x4F24 +0x4F25 +0x4F26 +0x4F27 +0x4F28 +0x4F29 +0x4F2A α +0x4F2B +0x4F2C +0x4F2D +0x4F2E +0x4F2F +0x4F30 +0x4F31 +0x4F32 ٣ +0x4F33 +0x4F34 +0x4F35 +0x4F36 +0x4F37 +0x4F38 +0x4F39 +0x4F3A +0x4F3B +0x4F3C +0x4F3D ٤ +0x4F3E +0x4F3F +0x4F40 +0x4F41 +0x4F42 +0x4F43 +0x4F44 +0x4F45 +0x4F46 +0x4F47 +0x4F48 +0x4F49 +0x4F4A +0x4F4B +0x4F4C +0x4F4D λ +0x4F4E +0x4F4F ס +0x4F50 +0x4F51 +0x4F52 +0x4F53 +0x4F54 +0x4F55 +0x4F56 +0x4F57 ٢ +0x4F58 +0x4F59 +0x4F5A +0x4F5B +0x4F5C +0x4F5D +0x4F5E +0x4F5F ١ +0x4F60 +0x4F61 +0x4F62 +0x4F63 Ӷ +0x4F64 +0x4F65 +0x4F66 +0x4F67 +0x4F68 +0x4F69 +0x4F6A +0x4F6B +0x4F6C +0x4F6D +0x4F6E +0x4F6F +0x4F70 +0x4F71 +0x4F72 +0x4F73 +0x4F74 ٦ +0x4F75 +0x4F76 ٥ +0x4F77 +0x4F78 +0x4F79 +0x4F7A +0x4F7B ٬ +0x4F7C ٮ +0x4F7D +0x4F7E ٫ +0x4F7F ʹ +0x4F80 +0x4F81 +0x4F82 +0x4F83 ٩ +0x4F84 ֶ +0x4F85 +0x4F86 +0x4F87 +0x4F88 +0x4F89 ٨ +0x4F8A +0x4F8B +0x4F8C +0x4F8D +0x4F8E +0x4F8F ٪ +0x4F90 +0x4F91 ٧ +0x4F92 +0x4F93 +0x4F94 ٰ +0x4F95 +0x4F96 +0x4F97 +0x4F98 +0x4F99 +0x4F9A +0x4F9B +0x4F9C +0x4F9D +0x4F9E +0x4F9F +0x4FA0 +0x4FA1 +0x4FA2 +0x4FA3 +0x4FA4 @ +0x4FA5 +0x4FA6 +0x4FA7 +0x4FA8 +0x4FA9 +0x4FAA ٭ +0x4FAB A +0x4FAC ٯ +0x4FAD B +0x4FAE +0x4FAF +0x4FB0 C +0x4FB1 D +0x4FB2 E +0x4FB3 F +0x4FB4 G +0x4FB5 +0x4FB6 H +0x4FB7 I +0x4FB8 J +0x4FB9 K +0x4FBA L +0x4FBB M +0x4FBC N +0x4FBD O +0x4FBE P +0x4FBF +0x4FC0 Q +0x4FC1 R +0x4FC2 S +0x4FC3 +0x4FC4 +0x4FC5 ٴ +0x4FC6 T +0x4FC7 U +0x4FC8 V +0x4FC9 W +0x4FCA +0x4FCB X +0x4FCC Y +0x4FCD Z +0x4FCE +0x4FCF +0x4FD0 +0x4FD1 ٸ +0x4FD2 [ +0x4FD3 \ +0x4FD4 ] +0x4FD5 ^ +0x4FD6 _ +0x4FD7 +0x4FD8 +0x4FD9 ` +0x4FDA ٵ +0x4FDB a +0x4FDC ٷ +0x4FDD +0x4FDE +0x4FDF ٹ +0x4FE0 b +0x4FE1 +0x4FE2 c +0x4FE3 ٶ +0x4FE4 d +0x4FE5 e +0x4FE6 ٱ +0x4FE7 f +0x4FE8 ٲ +0x4FE9 +0x4FEA ٳ +0x4FEB g +0x4FEC h +0x4FED +0x4FEE +0x4FEF +0x4FF0 i +0x4FF1 +0x4FF2 j +0x4FF3 ٽ +0x4FF4 k +0x4FF5 l +0x4FF6 m +0x4FF7 n +0x4FF8 ٺ +0x4FF9 o +0x4FFA +0x4FFB p +0x4FFC q +0x4FFD r +0x4FFE +0x4FFF s +0x5000 t +0x5001 u +0x5002 v +0x5003 w +0x5004 x +0x5005 y +0x5006 z +0x5007 { +0x5008 | +0x5009 } +0x500A ~ +0x500B +0x500C +0x500D +0x500E +0x500F ٿ +0x5010 +0x5011 +0x5012 +0x5013 +0x5014 +0x5015 +0x5016 +0x5017 +0x5018 +0x5019 +0x501A +0x501B +0x501C +0x501D +0x501E +0x501F +0x5020 +0x5021 +0x5022 +0x5023 +0x5024 +0x5025 +0x5026 +0x5027 +0x5028 +0x5029 ٻ +0x502A +0x502B +0x502C پ +0x502D +0x502E +0x502F +0x5030 +0x5031 +0x5032 +0x5033 +0x5034 +0x5035 +0x5036 +0x5037 +0x5038 +0x5039 +0x503A ծ +0x503B +0x503C ֵ +0x503D +0x503E +0x503F +0x5040 +0x5041 +0x5042 +0x5043 +0x5044 +0x5045 +0x5046 +0x5047 +0x5048 +0x5049 +0x504A +0x504B +0x504C ټ +0x504D +0x504E +0x504F ƫ +0x5050 +0x5051 +0x5052 +0x5053 +0x5054 +0x5055 +0x5056 +0x5057 +0x5058 +0x5059 +0x505A +0x505B +0x505C ͣ +0x505D +0x505E +0x505F +0x5060 +0x5061 +0x5062 +0x5063 +0x5064 +0x5065 +0x5066 +0x5067 +0x5068 +0x5069 +0x506A +0x506B +0x506C +0x506D +0x506E +0x506F +0x5070 +0x5071 +0x5072 +0x5073 +0x5074 +0x5075 +0x5076 ż +0x5077 ͵ +0x5078 +0x5079 +0x507A +0x507B +0x507C +0x507D +0x507E +0x507F +0x5080 +0x5081 +0x5082 +0x5083 +0x5084 +0x5085 +0x5086 +0x5087 +0x5088 +0x5089 +0x508A +0x508B +0x508C +0x508D +0x508E +0x508F +0x5090 +0x5091 +0x5092 +0x5093 +0x5094 +0x5095 +0x5096 +0x5097 +0x5098 +0x5099 +0x509A +0x509B +0x509C +0x509D +0x509E +0x509F +0x50A0 +0x50A1 +0x50A2 +0x50A3 +0x50A4 +0x50A5 +0x50A6 +0x50A7 +0x50A8 +0x50A9 +0x50AA +0x50AB +0x50AC +0x50AD +0x50AE +0x50AF +0x50B0 +0x50B1 +0x50B2 +0x50B3 +0x50B4 +0x50B5 +0x50B6 +0x50B7 +0x50B8 +0x50B9 +0x50BA +0x50BB ɵ +0x50BC +0x50BD @ +0x50BE A +0x50BF B +0x50C0 C +0x50C1 D +0x50C2 E +0x50C3 F +0x50C4 G +0x50C5 H +0x50C6 I +0x50C7 J +0x50C8 K +0x50C9 L +0x50CA M +0x50CB N +0x50CC O +0x50CD P +0x50CE Q +0x50CF +0x50D0 R +0x50D1 S +0x50D2 T +0x50D3 U +0x50D4 V +0x50D5 W +0x50D6 +0x50D7 X +0x50D8 Y +0x50D9 Z +0x50DA +0x50DB [ +0x50DC \ +0x50DD ] +0x50DE ^ +0x50DF _ +0x50E0 ` +0x50E1 a +0x50E2 b +0x50E3 c +0x50E4 d +0x50E5 e +0x50E6 +0x50E7 ɮ +0x50E8 f +0x50E9 g +0x50EA h +0x50EB i +0x50EC +0x50ED +0x50EE +0x50EF j +0x50F0 k +0x50F1 l +0x50F2 m +0x50F3 +0x50F4 n +0x50F5 +0x50F6 o +0x50F7 p +0x50F8 q +0x50F9 r +0x50FA s +0x50FB Ƨ +0x50FC t +0x50FD u +0x50FE v +0x50FF w +0x5100 x +0x5101 y +0x5102 z +0x5103 { +0x5104 | +0x5105 } +0x5106 +0x5107 +0x5108 ~ +0x5109 +0x510A +0x510B +0x510C +0x510D +0x510E +0x510F +0x5110 +0x5111 +0x5112 +0x5113 +0x5114 +0x5115 +0x5116 +0x5117 +0x5118 +0x5119 +0x511A +0x511B +0x511C +0x511D +0x511E +0x511F +0x5120 +0x5121 +0x5122 +0x5123 +0x5124 +0x5125 +0x5126 +0x5127 +0x5128 +0x5129 +0x512A +0x512B +0x512C +0x512D +0x512E +0x512F +0x5130 +0x5131 +0x5132 +0x5133 +0x5134 +0x5135 +0x5136 +0x5137 +0x5138 +0x5139 +0x513A +0x513B +0x513C +0x513D +0x513E +0x513F +0x5140 أ +0x5141 +0x5142 +0x5143 Ԫ +0x5144 +0x5145 +0x5146 +0x5147 +0x5148 +0x5149 +0x514A +0x514B +0x514C +0x514D +0x514E +0x514F +0x5150 +0x5151 +0x5152 +0x5153 +0x5154 +0x5155 +0x5156 +0x5157 +0x5158 +0x5159 +0x515A +0x515B +0x515C +0x515D +0x515E +0x515F +0x5160 +0x5161 +0x5162 +0x5163 +0x5164 +0x5165 +0x5166 +0x5167 +0x5168 ȫ +0x5169 +0x516A +0x516B +0x516C +0x516D +0x516E +0x516F +0x5170 +0x5171 +0x5172 +0x5173 +0x5174 +0x5175 +0x5176 +0x5177 +0x5178 +0x5179 +0x517A +0x517B +0x517C +0x517D +0x517E +0x517F +0x5180 +0x5181 +0x5182 +0x5183 +0x5184 +0x5185 +0x5186 +0x5187 +0x5188 +0x5189 Ƚ +0x518A +0x518B +0x518C +0x518D +0x518E +0x518F +0x5190 +0x5191 +0x5192 ð +0x5193 +0x5194 +0x5195 +0x5196 ڢ +0x5197 +0x5198 +0x5199 д +0x519A +0x519B +0x519C ũ +0x519D +0x519E +0x519F +0x51A0 +0x51A1 +0x51A2 ڣ +0x51A3 +0x51A4 ԩ +0x51A5 ڤ +0x51A6 +0x51A7 +0x51A8 +0x51A9 +0x51AA +0x51AB +0x51AC +0x51AD +0x51AE +0x51AF +0x51B0 +0x51B1 +0x51B2 +0x51B3 +0x51B4 +0x51B5 +0x51B6 ұ +0x51B7 +0x51B8 +0x51B9 +0x51BA +0x51BB +0x51BC +0x51BD +0x51BE +0x51BF +0x51C0 +0x51C1 +0x51C2 +0x51C3 +0x51C4 +0x51C5 +0x51C6 ׼ +0x51C7 ڡ +0x51C8 +0x51C9 +0x51CA +0x51CB +0x51CC +0x51CD +0x51CE +0x51CF +0x51D0 +0x51D1 +0x51D2 +0x51D3 +0x51D4 +0x51D5 +0x51D6 +0x51D7 +0x51D8 @ +0x51D9 A +0x51DA B +0x51DB +0x51DC C +0x51DD +0x51DE D +0x51DF E +0x51E0 +0x51E1 +0x51E2 F +0x51E3 G +0x51E4 +0x51E5 H +0x51E6 I +0x51E7 J +0x51E8 K +0x51E9 L +0x51EA M +0x51EB +0x51EC N +0x51ED ƾ +0x51EE O +0x51EF +0x51F0 +0x51F1 P +0x51F2 Q +0x51F3 +0x51F4 R +0x51F5 +0x51F6 +0x51F7 S +0x51F8 ͹ +0x51F9 +0x51FA +0x51FB +0x51FC +0x51FD +0x51FE T +0x51FF +0x5200 +0x5201 +0x5202 +0x5203 +0x5204 U +0x5205 V +0x5206 +0x5207 +0x5208 +0x5209 W +0x520A +0x520B X +0x520C Y +0x520D ۻ +0x520E +0x520F Z +0x5210 [ +0x5211 +0x5212 +0x5213 \ +0x5214 ] +0x5215 ^ +0x5216 +0x5217 +0x5218 +0x5219 +0x521A +0x521B +0x521C _ +0x521D +0x521E ` +0x521F a +0x5220 ɾ +0x5221 b +0x5222 c +0x5223 d +0x5224 +0x5225 e +0x5226 f +0x5227 g +0x5228 +0x5229 +0x522A h +0x522B +0x522C i +0x522D +0x522E +0x522F j +0x5230 +0x5231 k +0x5232 l +0x5233 +0x5234 m +0x5235 n +0x5236 +0x5237 ˢ +0x5238 ȯ +0x5239 ɲ +0x523A +0x523B +0x523C o +0x523D +0x523E p +0x523F +0x5240 +0x5241 +0x5242 +0x5243 +0x5244 q +0x5245 r +0x5246 s +0x5247 t +0x5248 u +0x5249 v +0x524A +0x524B w +0x524C +0x524D ǰ +0x524E x +0x524F y +0x5250 +0x5251 +0x5252 z +0x5253 { +0x5254 +0x5255 | +0x5256 +0x5257 } +0x5258 ~ +0x5259 +0x525A +0x525B +0x525C +0x525D +0x525E +0x525F +0x5260 +0x5261 +0x5262 +0x5263 +0x5264 +0x5265 +0x5266 +0x5267 +0x5268 +0x5269 ʣ +0x526A +0x526B +0x526C +0x526D +0x526E +0x526F +0x5270 +0x5271 +0x5272 +0x5273 +0x5274 +0x5275 +0x5276 +0x5277 +0x5278 +0x5279 +0x527A +0x527B +0x527C +0x527D +0x527E +0x527F +0x5280 +0x5281 +0x5282 +0x5283 +0x5284 +0x5285 +0x5286 +0x5287 +0x5288 +0x5289 +0x528A +0x528B +0x528C +0x528D +0x528E +0x528F +0x5290 +0x5291 +0x5292 +0x5293 +0x5294 +0x5295 +0x5296 +0x5297 +0x5298 +0x5299 +0x529A +0x529B +0x529C +0x529D Ȱ +0x529E +0x529F +0x52A0 +0x52A1 +0x52A2 ۽ +0x52A3 +0x52A4 +0x52A5 +0x52A6 +0x52A7 +0x52A8 +0x52A9 +0x52AA Ŭ +0x52AB +0x52AC ۾ +0x52AD ۿ +0x52AE +0x52AF +0x52B0 +0x52B1 +0x52B2 +0x52B3 +0x52B4 +0x52B5 +0x52B6 +0x52B7 +0x52B8 +0x52B9 +0x52BA +0x52BB +0x52BC +0x52BD +0x52BE +0x52BF +0x52C0 +0x52C1 +0x52C2 +0x52C3 +0x52C4 +0x52C5 +0x52C6 +0x52C7 +0x52C8 +0x52C9 +0x52CA +0x52CB ѫ +0x52CC +0x52CD +0x52CE +0x52CF +0x52D0 +0x52D1 +0x52D2 +0x52D3 +0x52D4 +0x52D5 +0x52D6 +0x52D7 +0x52D8 +0x52D9 +0x52DA +0x52DB +0x52DC +0x52DD +0x52DE +0x52DF ļ +0x52E0 +0x52E1 +0x52E2 +0x52E3 +0x52E4 +0x52E5 +0x52E6 +0x52E7 +0x52E8 +0x52E9 +0x52EA +0x52EB +0x52EC +0x52ED +0x52EE +0x52EF +0x52F0 +0x52F1 +0x52F2 +0x52F3 +0x52F4 +0x52F5 +0x52F6 +0x52F7 +0x52F8 +0x52F9 +0x52FA +0x52FB +0x52FC +0x52FD +0x52FE +0x52FF +0x5300 +0x5301 +0x5302 +0x5303 +0x5304 +0x5305 +0x5306 +0x5307 +0x5308 +0x5309 +0x530A +0x530B +0x530C +0x530D +0x530E +0x530F +0x5310 +0x5311 @ +0x5312 A +0x5313 B +0x5314 C +0x5315 ذ +0x5316 +0x5317 +0x5318 D +0x5319 +0x531A +0x531B E +0x531C F +0x531D +0x531E G +0x531F H +0x5320 +0x5321 +0x5322 I +0x5323 ϻ +0x5324 J +0x5325 K +0x5326 +0x5327 L +0x5328 M +0x5329 N +0x532A +0x532B O +0x532C P +0x532D Q +0x532E +0x532F R +0x5330 S +0x5331 T +0x5332 U +0x5333 V +0x5334 W +0x5335 X +0x5336 Y +0x5337 Z +0x5338 [ +0x5339 ƥ +0x533A +0x533B ҽ +0x533C \ +0x533D ] +0x533E +0x533F +0x5340 ^ +0x5341 ʮ +0x5342 _ +0x5343 ǧ +0x5344 ` +0x5345 ئ +0x5346 a +0x5347 +0x5348 +0x5349 +0x534A +0x534B b +0x534C c +0x534D d +0x534E +0x534F Э +0x5350 e +0x5351 +0x5352 +0x5353 ׿ +0x5354 f +0x5355 +0x5356 +0x5357 +0x5358 g +0x5359 h +0x535A +0x535B i +0x535C +0x535D j +0x535E +0x535F ߲ +0x5360 ռ +0x5361 +0x5362 ¬ +0x5363 +0x5364 ± +0x5365 k +0x5366 +0x5367 +0x5368 l +0x5369 +0x536A m +0x536B +0x536C n +0x536D o +0x536E ش +0x536F î +0x5370 ӡ +0x5371 Σ +0x5372 p +0x5373 +0x5374 ȴ +0x5375 +0x5376 q +0x5377 +0x5378 ж +0x5379 r +0x537A +0x537B s +0x537C t +0x537D u +0x537E v +0x537F +0x5380 w +0x5381 x +0x5382 +0x5383 y +0x5384 +0x5385 +0x5386 +0x5387 z +0x5388 { +0x5389 +0x538A | +0x538B ѹ +0x538C +0x538D +0x538E } +0x538F ~ +0x5390 +0x5391 +0x5392 +0x5393 +0x5394 +0x5395 +0x5396 +0x5397 +0x5398 +0x5399 +0x539A +0x539B +0x539C +0x539D +0x539E +0x539F ԭ +0x53A0 +0x53A1 +0x53A2 +0x53A3 +0x53A4 +0x53A5 +0x53A6 +0x53A7 +0x53A8 +0x53A9 +0x53AA +0x53AB +0x53AC +0x53AD +0x53AE +0x53AF +0x53B0 +0x53B1 +0x53B2 +0x53B3 +0x53B4 +0x53B5 +0x53B6 +0x53B7 +0x53B8 +0x53B9 +0x53BA +0x53BB ȥ +0x53BC +0x53BD +0x53BE +0x53BF +0x53C0 +0x53C1 +0x53C2 +0x53C3 +0x53C4 +0x53C5 +0x53C6 +0x53C7 +0x53C8 +0x53C9 +0x53CA +0x53CB +0x53CC ˫ +0x53CD +0x53CE +0x53CF +0x53D0 +0x53D1 +0x53D2 +0x53D3 +0x53D4 +0x53D5 +0x53D6 ȡ +0x53D7 +0x53D8 +0x53D9 +0x53DA +0x53DB +0x53DC +0x53DD +0x53DE +0x53DF +0x53E0 +0x53E1 +0x53E2 +0x53E3 +0x53E4 +0x53E5 +0x53E6 +0x53E7 +0x53E8 ߶ +0x53E9 ߵ +0x53EA ֻ +0x53EB +0x53EC +0x53ED +0x53EE +0x53EF +0x53F0 ̨ +0x53F1 ߳ +0x53F2 ʷ +0x53F3 +0x53F4 +0x53F5 +0x53F6 Ҷ +0x53F7 +0x53F8 ˾ +0x53F9 ̾ +0x53FA +0x53FB ߷ +0x53FC +0x53FD ߴ +0x53FE +0x53FF +0x5400 +0x5401 +0x5402 +0x5403 +0x5404 +0x5405 +0x5406 ߺ +0x5407 +0x5408 +0x5409 +0x540A +0x540B +0x540C ͬ +0x540D +0x540E +0x540F +0x5410 +0x5411 +0x5412 ߸ +0x5413 +0x5414 +0x5415 +0x5416 ߹ +0x5417 +0x5418 +0x5419 +0x541A +0x541B +0x541C +0x541D +0x541E +0x541F +0x5420 +0x5421 +0x5422 +0x5423 +0x5424 +0x5425 +0x5426 +0x5427 +0x5428 +0x5429 +0x542A +0x542B +0x542C +0x542D +0x542E ˱ +0x542F +0x5430 +0x5431 ֨ +0x5432 +0x5433 +0x5434 +0x5435 +0x5436 +0x5437 +0x5438 +0x5439 +0x543A +0x543B +0x543C +0x543D +0x543E +0x543F +0x5440 ѽ +0x5441 +0x5442 +0x5443 +0x5444 +0x5445 +0x5446 +0x5447 +0x5448 +0x5449 +0x544A +0x544B ߻ +0x544C +0x544D +0x544E +0x544F +0x5450 +0x5451 +0x5452 ߼ +0x5453 ߽ +0x5454 ߾ +0x5455 Ż +0x5456 ߿ +0x5457 +0x5458 Ա +0x5459 +0x545A +0x545B Ǻ +0x545C +0x545D +0x545E +0x545F +0x5460 +0x5461 +0x5462 +0x5463 +0x5464 +0x5465 +0x5466 +0x5467 +0x5468 +0x5469 +0x546A +0x546B +0x546C +0x546D +0x546E +0x546F +0x5470 +0x5471 +0x5472 +0x5473 ζ +0x5474 +0x5475 +0x5476 +0x5477 +0x5478 +0x5479 +0x547A +0x547B +0x547C +0x547D +0x547E +0x547F +0x5480 +0x5481 +0x5482 +0x5483 +0x5484 +0x5485 +0x5486 +0x5487 +0x5488 +0x5489 +0x548A +0x548B զ +0x548C +0x548D +0x548E +0x548F ӽ +0x5490 +0x5491 +0x5492 +0x5493 +0x5494 +0x5495 +0x5496 +0x5497 +0x5498 +0x5499 +0x549A +0x549B +0x549C +0x549D +0x549E +0x549F +0x54A0 +0x54A1 +0x54A2 @ +0x54A3 +0x54A4 +0x54A5 A +0x54A6 +0x54A7 +0x54A8 +0x54A9 +0x54AA +0x54AB +0x54AC ҧ +0x54AD +0x54AE B +0x54AF +0x54B0 C +0x54B1 +0x54B2 D +0x54B3 +0x54B4 +0x54B5 E +0x54B6 F +0x54B7 G +0x54B8 +0x54B9 H +0x54BA I +0x54BB +0x54BC J +0x54BD +0x54BE K +0x54BF +0x54C0 +0x54C1 Ʒ +0x54C2 +0x54C3 L +0x54C4 +0x54C5 M +0x54C6 +0x54C7 +0x54C8 +0x54C9 +0x54CA N +0x54CB O +0x54CC +0x54CD +0x54CE +0x54CF +0x54D0 +0x54D1 +0x54D2 +0x54D3 +0x54D4 +0x54D5 +0x54D6 P +0x54D7 +0x54D8 Q +0x54D9 +0x54DA +0x54DB R +0x54DC +0x54DD +0x54DE +0x54DF Ӵ +0x54E0 S +0x54E1 T +0x54E2 U +0x54E3 V +0x54E4 W +0x54E5 +0x54E6 Ŷ +0x54E7 +0x54E8 +0x54E9 +0x54EA +0x54EB X +0x54EC Y +0x54ED +0x54EE +0x54EF Z +0x54F0 [ +0x54F1 \ +0x54F2 +0x54F3 +0x54F4 ] +0x54F5 ^ +0x54F6 _ +0x54F7 ` +0x54F8 a +0x54F9 b +0x54FA +0x54FB c +0x54FC +0x54FD +0x54FE d +0x54FF +0x5500 e +0x5501 +0x5502 f +0x5503 g +0x5504 h +0x5505 i +0x5506 +0x5507 +0x5508 j +0x5509 +0x550A k +0x550B l +0x550C m +0x550D n +0x550E o +0x550F +0x5510 +0x5511 +0x5512 p +0x5513 q +0x5514 +0x5515 r +0x5516 s +0x5517 t +0x5518 u +0x5519 v +0x551A w +0x551B +0x551C x +0x551D y +0x551E z +0x551F { +0x5520 +0x5521 | +0x5522 +0x5523 +0x5524 +0x5525 } +0x5526 ~ +0x5527 +0x5528 +0x5529 +0x552A +0x552B +0x552C +0x552D +0x552E +0x552F Ψ +0x5530 +0x5531 +0x5532 +0x5533 +0x5534 +0x5535 +0x5536 +0x5537 +0x5538 +0x5539 +0x553A +0x553B +0x553C +0x553D +0x553E +0x553F +0x5540 +0x5541 +0x5542 +0x5543 +0x5544 +0x5545 +0x5546 +0x5547 +0x5548 +0x5549 +0x554A +0x554B +0x554C +0x554D +0x554E +0x554F +0x5550 +0x5551 +0x5552 +0x5553 +0x5554 +0x5555 +0x5556 +0x5557 +0x5558 +0x5559 +0x555A +0x555B +0x555C +0x555D +0x555E +0x555F +0x5560 +0x5561 +0x5562 +0x5563 +0x5564 ơ +0x5565 ɶ +0x5566 +0x5567 +0x5568 +0x5569 +0x556A ž +0x556B +0x556C +0x556D +0x556E +0x556F +0x5570 +0x5571 +0x5572 +0x5573 +0x5574 +0x5575 +0x5576 +0x5577 +0x5578 Х +0x5579 +0x557A +0x557B +0x557C +0x557D +0x557E +0x557F +0x5580 +0x5581 +0x5582 ι +0x5583 +0x5584 +0x5585 +0x5586 +0x5587 +0x5588 +0x5589 +0x558A +0x558B +0x558C +0x558D +0x558E +0x558F +0x5590 +0x5591 +0x5592 +0x5593 +0x5594 +0x5595 +0x5596 +0x5597 +0x5598 +0x5599 +0x559A +0x559B +0x559C ϲ +0x559D +0x559E +0x559F +0x55A0 +0x55A1 +0x55A2 +0x55A3 +0x55A4 +0x55A5 +0x55A6 +0x55A7 +0x55A8 +0x55A9 +0x55AA +0x55AB +0x55AC +0x55AD +0x55AE +0x55AF +0x55B0 +0x55B1 +0x55B2 +0x55B3 +0x55B4 +0x55B5 +0x55B6 +0x55B7 +0x55B8 +0x55B9 +0x55BA +0x55BB +0x55BC +0x55BD +0x55BE +0x55BF +0x55C0 +0x55C1 +0x55C2 +0x55C3 +0x55C4 +0x55C5 +0x55C6 +0x55C7 +0x55C8 +0x55C9 +0x55CA +0x55CB +0x55CC +0x55CD +0x55CE +0x55CF +0x55D0 +0x55D1 +0x55D2 +0x55D3 ɤ +0x55D4 +0x55D5 +0x55D6 +0x55D7 +0x55D8 +0x55D9 +0x55DA +0x55DB +0x55DC +0x55DD +0x55DE +0x55DF +0x55E0 +0x55E1 +0x55E2 +0x55E3 +0x55E4 +0x55E5 +0x55E6 +0x55E7 +0x55E8 +0x55E9 +0x55EA +0x55EB +0x55EC +0x55ED +0x55EE +0x55EF +0x55F0 +0x55F1 +0x55F2 +0x55F3 +0x55F4 +0x55F5 +0x55F6 +0x55F7 +0x55F8 +0x55F9 +0x55FA +0x55FB +0x55FC +0x55FD +0x55FE +0x55FF +0x5600 +0x5601 +0x5602 +0x5603 +0x5604 +0x5605 +0x5606 @ +0x5607 A +0x5608 +0x5609 +0x560A B +0x560B C +0x560C +0x560D D +0x560E +0x560F +0x5610 E +0x5611 F +0x5612 G +0x5613 H +0x5614 I +0x5615 J +0x5616 K +0x5617 L +0x5618 +0x5619 M +0x561A N +0x561B +0x561C O +0x561D P +0x561E +0x561F +0x5620 Q +0x5621 R +0x5622 S +0x5623 +0x5624 +0x5625 T +0x5626 U +0x5627 +0x5628 V +0x5629 W +0x562A X +0x562B Y +0x562C +0x562D +0x562E Z +0x562F [ +0x5630 \ +0x5631 +0x5632 +0x5633 ] +0x5634 +0x5635 ^ +0x5636 ˻ +0x5637 _ +0x5638 ` +0x5639 +0x563A a +0x563B +0x563C b +0x563D c +0x563E d +0x563F +0x5640 e +0x5641 f +0x5642 g +0x5643 h +0x5644 i +0x5645 j +0x5646 k +0x5647 l +0x5648 m +0x5649 n +0x564A o +0x564B p +0x564C +0x564D +0x564E ҭ +0x564F q +0x5650 r +0x5651 s +0x5652 t +0x5653 u +0x5654 +0x5655 v +0x5656 w +0x5657 +0x5658 +0x5659 +0x565A x +0x565B y +0x565C +0x565D z +0x565E { +0x565F | +0x5660 } +0x5661 ~ +0x5662 +0x5663 +0x5664 +0x5665 +0x5666 +0x5667 +0x5668 +0x5669 ج +0x566A +0x566B +0x566C +0x566D +0x566E +0x566F +0x5670 +0x5671 +0x5672 +0x5673 +0x5674 +0x5675 +0x5676 +0x5677 +0x5678 +0x5679 +0x567A +0x567B +0x567C +0x567D +0x567E +0x567F +0x5680 +0x5681 +0x5682 +0x5683 +0x5684 +0x5685 +0x5686 +0x5687 +0x5688 +0x5689 +0x568A +0x568B +0x568C +0x568D +0x568E +0x568F +0x5690 +0x5691 +0x5692 +0x5693 +0x5694 +0x5695 +0x5696 +0x5697 +0x5698 +0x5699 +0x569A +0x569B +0x569C +0x569D +0x569E +0x569F +0x56A0 +0x56A1 +0x56A2 +0x56A3 +0x56A4 +0x56A5 +0x56A6 +0x56A7 +0x56A8 +0x56A9 +0x56AA +0x56AB +0x56AC +0x56AD +0x56AE +0x56AF +0x56B0 +0x56B1 +0x56B2 +0x56B3 +0x56B4 +0x56B5 +0x56B6 +0x56B7 +0x56B8 +0x56B9 +0x56BA +0x56BB +0x56BC +0x56BD +0x56BE +0x56BF +0x56C0 +0x56C1 +0x56C2 +0x56C3 +0x56C4 +0x56C5 +0x56C6 +0x56C7 +0x56C8 +0x56C9 +0x56CA +0x56CB +0x56CC +0x56CD +0x56CE +0x56CF +0x56D0 +0x56D1 +0x56D2 +0x56D3 +0x56D4 +0x56D5 +0x56D6 +0x56D7 +0x56D8 +0x56D9 +0x56DA +0x56DB +0x56DC +0x56DD +0x56DE +0x56DF ض +0x56E0 +0x56E1 +0x56E2 +0x56E3 +0x56E4 +0x56E5 +0x56E6 +0x56E7 +0x56E8 +0x56E9 +0x56EA +0x56EB +0x56EC +0x56ED ԰ +0x56EE +0x56EF +0x56F0 +0x56F1 +0x56F2 +0x56F3 +0x56F4 Χ +0x56F5 +0x56F6 +0x56F7 +0x56F8 +0x56F9 +0x56FA +0x56FB +0x56FC +0x56FD +0x56FE ͼ +0x56FF +0x5700 +0x5701 +0x5702 +0x5703 +0x5704 +0x5705 +0x5706 Բ +0x5707 +0x5708 Ȧ +0x5709 +0x570A +0x570B +0x570C +0x570D +0x570E +0x570F +0x5710 +0x5711 +0x5712 @ +0x5713 A +0x5714 B +0x5715 C +0x5716 D +0x5717 E +0x5718 F +0x5719 G +0x571A H +0x571B I +0x571C +0x571D J +0x571E K +0x571F +0x5720 L +0x5721 M +0x5722 N +0x5723 ʥ +0x5724 O +0x5725 P +0x5726 Q +0x5727 R +0x5728 +0x5729 +0x572A +0x572B S +0x572C +0x572D +0x572E +0x572F +0x5730 +0x5731 T +0x5732 U +0x5733 +0x5734 V +0x5735 W +0x5736 X +0x5737 Y +0x5738 Z +0x5739 +0x573A +0x573B +0x573C [ +0x573D \ +0x573E +0x573F ] +0x5740 ַ +0x5741 ^ +0x5742 +0x5743 _ +0x5744 ` +0x5745 a +0x5746 b +0x5747 +0x5748 c +0x5749 d +0x574A +0x574B e +0x574C +0x574D ̮ +0x574E +0x574F +0x5750 +0x5751 +0x5752 f +0x5753 g +0x5754 h +0x5755 i +0x5756 j +0x5757 +0x5758 k +0x5759 l +0x575A +0x575B ̳ +0x575C +0x575D +0x575E +0x575F +0x5760 ׹ +0x5761 +0x5762 m +0x5763 n +0x5764 +0x5765 o +0x5766 ̹ +0x5767 p +0x5768 +0x5769 +0x576A ƺ +0x576B +0x576C q +0x576D +0x576E r +0x576F +0x5770 s +0x5771 t +0x5772 u +0x5773 +0x5774 v +0x5775 w +0x5776 +0x5777 +0x5778 x +0x5779 y +0x577A z +0x577B +0x577C +0x577D { +0x577E | +0x577F } +0x5780 ~ +0x5781 +0x5782 +0x5783 +0x5784 ¢ +0x5785 +0x5786 +0x5787 +0x5788 +0x5789 +0x578A +0x578B +0x578C +0x578D +0x578E +0x578F +0x5790 +0x5791 +0x5792 +0x5793 +0x5794 +0x5795 +0x5796 +0x5797 +0x5798 +0x5799 +0x579A +0x579B +0x579C +0x579D +0x579E +0x579F +0x57A0 +0x57A1 +0x57A2 +0x57A3 ԫ +0x57A4 +0x57A5 +0x57A6 +0x57A7 +0x57A8 +0x57A9 +0x57AA +0x57AB +0x57AC +0x57AD +0x57AE +0x57AF +0x57B0 +0x57B1 +0x57B2 +0x57B3 +0x57B4 +0x57B5 +0x57B6 +0x57B7 +0x57B8 +0x57B9 +0x57BA +0x57BB +0x57BC +0x57BD +0x57BE +0x57BF +0x57C0 +0x57C1 +0x57C2 +0x57C3 +0x57C4 +0x57C5 +0x57C6 +0x57C7 +0x57C8 +0x57C9 +0x57CA +0x57CB +0x57CC +0x57CD +0x57CE +0x57CF +0x57D0 +0x57D1 +0x57D2 +0x57D3 +0x57D4 +0x57D5 +0x57D6 +0x57D7 +0x57D8 +0x57D9 +0x57DA +0x57DB +0x57DC +0x57DD +0x57DE +0x57DF +0x57E0 +0x57E1 +0x57E2 +0x57E3 +0x57E4 +0x57E5 +0x57E6 +0x57E7 +0x57E8 +0x57E9 +0x57EA +0x57EB +0x57EC +0x57ED ܤ +0x57EE +0x57EF +0x57F0 +0x57F1 +0x57F2 +0x57F3 +0x57F4 +0x57F5 +0x57F6 +0x57F7 +0x57F8 +0x57F9 +0x57FA +0x57FB +0x57FC +0x57FD ܣ +0x57FE +0x57FF +0x5800 ܥ +0x5801 +0x5802 +0x5803 +0x5804 +0x5805 +0x5806 +0x5807 +0x5808 +0x5809 +0x580A +0x580B ܡ +0x580C +0x580D ܢ +0x580E +0x580F +0x5810 +0x5811 ǵ +0x5812 +0x5813 +0x5814 +0x5815 +0x5816 +0x5817 +0x5818 +0x5819 ܧ +0x581A +0x581B +0x581C +0x581D +0x581E ܦ +0x581F +0x5820 ܩ +0x5821 +0x5822 +0x5823 +0x5824 +0x5825 +0x5826 +0x5827 +0x5828 +0x5829 +0x582A +0x582B +0x582C +0x582D +0x582E +0x582F +0x5830 +0x5831 +0x5832 +0x5833 +0x5834 +0x5835 +0x5836 +0x5837 +0x5838 +0x5839 +0x583A +0x583B +0x583C +0x583D +0x583E @ +0x583F A +0x5840 B +0x5841 C +0x5842 D +0x5843 E +0x5844 ܨ +0x5845 F +0x5846 G +0x5847 H +0x5848 I +0x5849 J +0x584A K +0x584B L +0x584C +0x584D +0x584E M +0x584F N +0x5850 O +0x5851 +0x5852 P +0x5853 Q +0x5854 +0x5855 R +0x5856 S +0x5857 T +0x5858 +0x5859 U +0x585A V +0x585B W +0x585C X +0x585D Y +0x585E +0x585F Z +0x5860 [ +0x5861 \ +0x5862 ] +0x5863 ^ +0x5864 _ +0x5865 ܪ +0x5866 ` +0x5867 a +0x5868 b +0x5869 c +0x586A d +0x586B +0x586C ܫ +0x586D e +0x586E f +0x586F g +0x5870 h +0x5871 i +0x5872 j +0x5873 k +0x5874 l +0x5875 m +0x5876 n +0x5877 o +0x5878 p +0x5879 q +0x587A r +0x587B s +0x587C t +0x587D u +0x587E +0x587F v +0x5880 ܯ +0x5881 ܬ +0x5882 w +0x5883 +0x5884 x +0x5885 +0x5886 y +0x5887 z +0x5888 { +0x5889 ܭ +0x588A | +0x588B } +0x588C ~ +0x588D +0x588E +0x588F +0x5890 +0x5891 +0x5892 +0x5893 Ĺ +0x5894 +0x5895 +0x5896 +0x5897 +0x5898 +0x5899 ǽ +0x589A ܮ +0x589B +0x589C +0x589D +0x589E +0x589F +0x58A0 +0x58A1 +0x58A2 +0x58A3 +0x58A4 +0x58A5 +0x58A6 +0x58A7 +0x58A8 ī +0x58A9 +0x58AA +0x58AB +0x58AC +0x58AD +0x58AE +0x58AF +0x58B0 +0x58B1 +0x58B2 +0x58B3 +0x58B4 +0x58B5 +0x58B6 +0x58B7 +0x58B8 +0x58B9 +0x58BA +0x58BB +0x58BC +0x58BD +0x58BE +0x58BF +0x58C0 +0x58C1 +0x58C2 +0x58C3 +0x58C4 +0x58C5 +0x58C6 +0x58C7 +0x58C8 +0x58C9 +0x58CA +0x58CB +0x58CC +0x58CD +0x58CE +0x58CF +0x58D0 +0x58D1 +0x58D2 +0x58D3 +0x58D4 +0x58D5 +0x58D6 +0x58D7 +0x58D8 +0x58D9 +0x58DA +0x58DB +0x58DC +0x58DD +0x58DE +0x58DF +0x58E0 +0x58E1 +0x58E2 +0x58E3 +0x58E4 +0x58E5 +0x58E6 +0x58E7 +0x58E8 +0x58E9 +0x58EA +0x58EB ʿ +0x58EC +0x58ED +0x58EE ׳ +0x58EF +0x58F0 +0x58F1 +0x58F2 +0x58F3 +0x58F4 +0x58F5 +0x58F6 +0x58F7 +0x58F8 +0x58F9 Ҽ +0x58FA +0x58FB +0x58FC +0x58FD +0x58FE +0x58FF +0x5900 +0x5901 +0x5902 +0x5903 +0x5904 +0x5905 +0x5906 +0x5907 +0x5908 +0x5909 +0x590A +0x590B +0x590C +0x590D +0x590E +0x590F +0x5910 +0x5911 +0x5912 +0x5913 +0x5914 +0x5915 Ϧ +0x5916 +0x5917 +0x5918 +0x5919 +0x591A +0x591B +0x591C ҹ +0x591D +0x591E +0x591F +0x5920 +0x5921 +0x5922 +0x5923 +0x5924 +0x5925 +0x5926 +0x5927 +0x5928 +0x5929 +0x592A ̫ +0x592B +0x592C +0x592D ز +0x592E +0x592F +0x5930 +0x5931 ʧ +0x5932 +0x5933 +0x5934 ͷ +0x5935 +0x5936 +0x5937 +0x5938 +0x5939 +0x593A +0x593B +0x593C +0x593D @ +0x593E A +0x593F B +0x5940 C +0x5941 +0x5942 ۼ +0x5943 D +0x5944 +0x5945 E +0x5946 F +0x5947 +0x5948 +0x5949 +0x594A G +0x594B +0x594C H +0x594D I +0x594E +0x594F +0x5950 J +0x5951 +0x5952 K +0x5953 L +0x5954 +0x5955 +0x5956 +0x5957 +0x5958 +0x5959 M +0x595A +0x595B N +0x595C O +0x595D P +0x595E Q +0x595F R +0x5960 +0x5961 S +0x5962 +0x5963 T +0x5964 U +0x5965 +0x5966 V +0x5967 W +0x5968 X +0x5969 Y +0x596A Z +0x596B [ +0x596C \ +0x596D ] +0x596E ^ +0x596F _ +0x5970 ` +0x5971 a +0x5972 b +0x5973 Ů +0x5974 ū +0x5975 c +0x5976 +0x5977 d +0x5978 +0x5979 +0x597A e +0x597B f +0x597C g +0x597D +0x597E h +0x597F i +0x5980 j +0x5981 +0x5982 +0x5983 +0x5984 +0x5985 k +0x5986 ױ +0x5987 +0x5988 +0x5989 l +0x598A +0x598B m +0x598C n +0x598D +0x598E o +0x598F p +0x5990 q +0x5991 r +0x5992 +0x5993 +0x5994 s +0x5995 t +0x5996 +0x5997 +0x5998 u +0x5999 +0x599A v +0x599B w +0x599C x +0x599D y +0x599E +0x599F z +0x59A0 { +0x59A1 | +0x59A2 } +0x59A3 +0x59A4 +0x59A5 +0x59A6 ~ +0x59A7 +0x59A8 +0x59A9 +0x59AA +0x59AB +0x59AC +0x59AD +0x59AE +0x59AF +0x59B0 +0x59B1 +0x59B2 +0x59B3 +0x59B4 +0x59B5 +0x59B6 +0x59B7 +0x59B8 +0x59B9 +0x59BA +0x59BB +0x59BC +0x59BD +0x59BE +0x59BF +0x59C0 +0x59C1 +0x59C2 +0x59C3 +0x59C4 +0x59C5 +0x59C6 ķ +0x59C7 +0x59C8 +0x59C9 +0x59CA +0x59CB ʼ +0x59CC +0x59CD +0x59CE +0x59CF +0x59D0 +0x59D1 +0x59D2 +0x59D3 +0x59D4 ί +0x59D5 +0x59D6 +0x59D7 +0x59D8 +0x59D9 +0x59DA Ҧ +0x59DB +0x59DC +0x59DD +0x59DE +0x59DF +0x59E0 +0x59E1 +0x59E2 +0x59E3 +0x59E4 +0x59E5 +0x59E6 +0x59E7 +0x59E8 +0x59E9 +0x59EA +0x59EB +0x59EC +0x59ED +0x59EE +0x59EF +0x59F0 +0x59F1 +0x59F2 +0x59F3 +0x59F4 +0x59F5 +0x59F6 +0x59F7 +0x59F8 +0x59F9 +0x59FA +0x59FB +0x59FC +0x59FD +0x59FE +0x59FF +0x5A00 +0x5A01 +0x5A02 +0x5A03 +0x5A04 ¦ +0x5A05 +0x5A06 +0x5A07 +0x5A08 +0x5A09 +0x5A0A +0x5A0B +0x5A0C +0x5A0D +0x5A0E +0x5A0F +0x5A10 +0x5A11 +0x5A12 +0x5A13 +0x5A14 +0x5A15 +0x5A16 +0x5A17 +0x5A18 +0x5A19 +0x5A1A +0x5A1B +0x5A1C +0x5A1D +0x5A1E +0x5A1F +0x5A20 +0x5A21 +0x5A22 +0x5A23 +0x5A24 +0x5A25 +0x5A26 +0x5A27 +0x5A28 +0x5A29 +0x5A2A +0x5A2B +0x5A2C +0x5A2D +0x5A2E +0x5A2F +0x5A30 +0x5A31 +0x5A32 +0x5A33 +0x5A34 +0x5A35 +0x5A36 Ȣ +0x5A37 +0x5A38 +0x5A39 +0x5A3A +0x5A3B +0x5A3C +0x5A3D +0x5A3E +0x5A3F +0x5A40 +0x5A41 +0x5A42 +0x5A43 +0x5A44 +0x5A45 +0x5A46 +0x5A47 +0x5A48 +0x5A49 +0x5A4A +0x5A4B +0x5A4C +0x5A4D +0x5A4E +0x5A4F +0x5A50 +0x5A51 +0x5A52 +0x5A53 +0x5A54 +0x5A55 +0x5A56 +0x5A57 +0x5A58 +0x5A59 +0x5A5A +0x5A5B +0x5A5C +0x5A5D +0x5A5E +0x5A5F +0x5A60 +0x5A61 @ +0x5A62 +0x5A63 A +0x5A64 B +0x5A65 C +0x5A66 D +0x5A67 +0x5A68 E +0x5A69 F +0x5A6A +0x5A6B G +0x5A6C H +0x5A6D I +0x5A6E J +0x5A6F K +0x5A70 L +0x5A71 M +0x5A72 N +0x5A73 O +0x5A74 Ӥ +0x5A75 +0x5A76 +0x5A77 +0x5A78 P +0x5A79 Q +0x5A7A +0x5A7B R +0x5A7C S +0x5A7D T +0x5A7E U +0x5A7F +0x5A80 V +0x5A81 W +0x5A82 X +0x5A83 Y +0x5A84 Z +0x5A85 [ +0x5A86 \ +0x5A87 ] +0x5A88 ^ +0x5A89 _ +0x5A8A ` +0x5A8B a +0x5A8C b +0x5A8D c +0x5A8E d +0x5A8F e +0x5A90 f +0x5A91 g +0x5A92 ý +0x5A93 h +0x5A94 i +0x5A95 j +0x5A96 k +0x5A97 l +0x5A98 m +0x5A99 n +0x5A9A +0x5A9B +0x5A9C o +0x5A9D p +0x5A9E q +0x5A9F r +0x5AA0 s +0x5AA1 t +0x5AA2 u +0x5AA3 v +0x5AA4 w +0x5AA5 x +0x5AA6 y +0x5AA7 z +0x5AA8 { +0x5AA9 | +0x5AAA +0x5AAB } +0x5AAC ~ +0x5AAD +0x5AAE +0x5AAF +0x5AB0 +0x5AB1 +0x5AB2 +0x5AB3 ϱ +0x5AB4 +0x5AB5 +0x5AB6 +0x5AB7 +0x5AB8 +0x5AB9 +0x5ABA +0x5ABB +0x5ABC +0x5ABD +0x5ABE +0x5ABF +0x5AC0 +0x5AC1 +0x5AC2 ɩ +0x5AC3 +0x5AC4 +0x5AC5 +0x5AC6 +0x5AC7 +0x5AC8 +0x5AC9 +0x5ACA +0x5ACB +0x5ACC +0x5ACD +0x5ACE +0x5ACF +0x5AD0 +0x5AD1 +0x5AD2 +0x5AD3 +0x5AD4 +0x5AD5 +0x5AD6 +0x5AD7 +0x5AD8 +0x5AD9 +0x5ADA +0x5ADB +0x5ADC +0x5ADD +0x5ADE +0x5ADF +0x5AE0 +0x5AE1 +0x5AE2 +0x5AE3 +0x5AE4 +0x5AE5 +0x5AE6 +0x5AE7 +0x5AE8 +0x5AE9 +0x5AEA +0x5AEB +0x5AEC +0x5AED +0x5AEE +0x5AEF +0x5AF0 +0x5AF1 +0x5AF2 +0x5AF3 +0x5AF4 +0x5AF5 +0x5AF6 +0x5AF7 +0x5AF8 +0x5AF9 +0x5AFA +0x5AFB +0x5AFC +0x5AFD +0x5AFE +0x5AFF +0x5B00 +0x5B01 +0x5B02 +0x5B03 +0x5B04 +0x5B05 +0x5B06 +0x5B07 +0x5B08 +0x5B09 +0x5B0A +0x5B0B +0x5B0C +0x5B0D +0x5B0E +0x5B0F +0x5B10 +0x5B11 +0x5B12 +0x5B13 +0x5B14 +0x5B15 +0x5B16 +0x5B17 +0x5B18 +0x5B19 +0x5B1A +0x5B1B +0x5B1C +0x5B1D +0x5B1E +0x5B1F +0x5B20 +0x5B21 +0x5B22 +0x5B23 +0x5B24 +0x5B25 +0x5B26 +0x5B27 +0x5B28 +0x5B29 +0x5B2A +0x5B2B +0x5B2C +0x5B2D +0x5B2E +0x5B2F +0x5B30 +0x5B31 +0x5B32 +0x5B33 +0x5B34 +0x5B35 +0x5B36 +0x5B37 +0x5B38 +0x5B39 +0x5B3A +0x5B3B +0x5B3C +0x5B3D +0x5B3E +0x5B3F +0x5B40 +0x5B41 +0x5B42 +0x5B43 +0x5B44 +0x5B45 +0x5B46 +0x5B47 +0x5B48 @ +0x5B49 A +0x5B4A B +0x5B4B C +0x5B4C D +0x5B4D E +0x5B4E F +0x5B4F G +0x5B50 +0x5B51 +0x5B52 H +0x5B53 +0x5B54 +0x5B55 +0x5B56 I +0x5B57 +0x5B58 +0x5B59 +0x5B5A +0x5B5B +0x5B5C +0x5B5D Т +0x5B5E J +0x5B5F +0x5B60 K +0x5B61 L +0x5B62 +0x5B63 +0x5B64 +0x5B65 +0x5B66 ѧ +0x5B67 M +0x5B68 N +0x5B69 +0x5B6A +0x5B6B O +0x5B6C ث +0x5B6D P +0x5B6E Q +0x5B6F R +0x5B70 +0x5B71 +0x5B72 S +0x5B73 +0x5B74 T +0x5B75 +0x5B76 U +0x5B77 V +0x5B78 W +0x5B79 X +0x5B7A +0x5B7B Y +0x5B7C Z +0x5B7D +0x5B7E [ +0x5B7F \ +0x5B80 +0x5B81 +0x5B82 ] +0x5B83 +0x5B84 +0x5B85 լ +0x5B86 ^ +0x5B87 +0x5B88 +0x5B89 +0x5B8A _ +0x5B8B +0x5B8C +0x5B8D ` +0x5B8E a +0x5B8F +0x5B90 b +0x5B91 c +0x5B92 d +0x5B93 +0x5B94 e +0x5B95 +0x5B96 f +0x5B97 +0x5B98 +0x5B99 +0x5B9A +0x5B9B +0x5B9C +0x5B9D +0x5B9E ʵ +0x5B9F g +0x5BA0 +0x5BA1 +0x5BA2 +0x5BA3 +0x5BA4 +0x5BA5 +0x5BA6 +0x5BA7 h +0x5BA8 i +0x5BA9 j +0x5BAA +0x5BAB +0x5BAC k +0x5BAD l +0x5BAE m +0x5BAF n +0x5BB0 +0x5BB1 o +0x5BB2 p +0x5BB3 +0x5BB4 +0x5BB5 +0x5BB6 +0x5BB7 q +0x5BB8 +0x5BB9 +0x5BBA r +0x5BBB s +0x5BBC t +0x5BBD +0x5BBE +0x5BBF +0x5BC0 u +0x5BC1 v +0x5BC2 +0x5BC3 w +0x5BC4 +0x5BC5 +0x5BC6 +0x5BC7 +0x5BC8 x +0x5BC9 y +0x5BCA z +0x5BCB { +0x5BCC +0x5BCD | +0x5BCE } +0x5BCF ~ +0x5BD0 +0x5BD1 +0x5BD2 +0x5BD3 Ԣ +0x5BD4 +0x5BD5 +0x5BD6 +0x5BD7 +0x5BD8 +0x5BD9 +0x5BDA +0x5BDB +0x5BDC +0x5BDD +0x5BDE į +0x5BDF +0x5BE0 +0x5BE1 +0x5BE2 +0x5BE3 +0x5BE4 +0x5BE5 +0x5BE6 +0x5BE7 +0x5BE8 կ +0x5BE9 +0x5BEA +0x5BEB +0x5BEC +0x5BED +0x5BEE +0x5BEF +0x5BF0 +0x5BF1 +0x5BF2 +0x5BF3 +0x5BF4 +0x5BF5 +0x5BF6 +0x5BF7 +0x5BF8 +0x5BF9 +0x5BFA +0x5BFB Ѱ +0x5BFC +0x5BFD +0x5BFE +0x5BFF +0x5C00 +0x5C01 +0x5C02 +0x5C03 +0x5C04 +0x5C05 +0x5C06 +0x5C07 +0x5C08 +0x5C09 ξ +0x5C0A +0x5C0B +0x5C0C +0x5C0D +0x5C0E +0x5C0F С +0x5C10 +0x5C11 +0x5C12 +0x5C13 +0x5C14 +0x5C15 +0x5C16 +0x5C17 +0x5C18 +0x5C19 +0x5C1A +0x5C1B +0x5C1C +0x5C1D +0x5C1E +0x5C1F +0x5C20 +0x5C21 +0x5C22 +0x5C23 +0x5C24 +0x5C25 +0x5C26 +0x5C27 Ң +0x5C28 +0x5C29 +0x5C2A +0x5C2B +0x5C2C +0x5C2D +0x5C2E +0x5C2F +0x5C30 +0x5C31 +0x5C32 +0x5C33 +0x5C34 +0x5C35 +0x5C36 +0x5C37 +0x5C38 ʬ +0x5C39 +0x5C3A +0x5C3B +0x5C3C +0x5C3D +0x5C3E β +0x5C3F +0x5C40 +0x5C41 ƨ +0x5C42 +0x5C43 +0x5C44 +0x5C45 +0x5C46 +0x5C47 +0x5C48 +0x5C49 +0x5C4A +0x5C4B +0x5C4C +0x5C4D +0x5C4E ʺ +0x5C4F +0x5C50 +0x5C51 м +0x5C52 +0x5C53 +0x5C54 +0x5C55 չ +0x5C56 +0x5C57 +0x5C58 +0x5C59 +0x5C5A +0x5C5B +0x5C5C +0x5C5D +0x5C5E +0x5C5F +0x5C60 +0x5C61 +0x5C62 +0x5C63 +0x5C64 +0x5C65 +0x5C66 +0x5C67 +0x5C68 +0x5C69 +0x5C6A +0x5C6B +0x5C6C +0x5C6D +0x5C6E +0x5C6F +0x5C70 +0x5C71 ɽ +0x5C72 +0x5C73 +0x5C74 +0x5C75 +0x5C76 +0x5C77 +0x5C78 +0x5C79 +0x5C7A +0x5C7B +0x5C7C +0x5C7D +0x5C7E +0x5C7F +0x5C80 +0x5C81 +0x5C82 +0x5C83 +0x5C84 +0x5C85 +0x5C86 +0x5C87 +0x5C88 +0x5C89 +0x5C8A +0x5C8B +0x5C8C +0x5C8D +0x5C8E +0x5C8F +0x5C90 +0x5C91 +0x5C92 +0x5C93 +0x5C94 +0x5C95 +0x5C96 +0x5C97 +0x5C98 +0x5C99 +0x5C9A +0x5C9B +0x5C9C +0x5C9D +0x5C9E +0x5C9F +0x5CA0 +0x5CA1 +0x5CA2 +0x5CA3 +0x5CA4 +0x5CA5 +0x5CA6 +0x5CA7 +0x5CA8 +0x5CA9 +0x5CAA @ +0x5CAB +0x5CAC +0x5CAD +0x5CAE A +0x5CAF B +0x5CB0 C +0x5CB1 +0x5CB2 D +0x5CB3 +0x5CB4 E +0x5CB5 +0x5CB6 F +0x5CB7 +0x5CB8 +0x5CB9 G +0x5CBA H +0x5CBB I +0x5CBC J +0x5CBD +0x5CBE K +0x5CBF +0x5CC0 L +0x5CC1 +0x5CC2 M +0x5CC3 N +0x5CC4 +0x5CC5 O +0x5CC6 P +0x5CC7 Q +0x5CC8 R +0x5CC9 S +0x5CCA T +0x5CCB +0x5CCC U +0x5CCD V +0x5CCE W +0x5CCF X +0x5CD0 Y +0x5CD1 Z +0x5CD2 +0x5CD3 [ +0x5CD4 \ +0x5CD5 ] +0x5CD6 ^ +0x5CD7 _ +0x5CD8 ` +0x5CD9 +0x5CDA a +0x5CDB b +0x5CDC c +0x5CDD d +0x5CDE e +0x5CDF f +0x5CE0 g +0x5CE1 Ͽ +0x5CE2 h +0x5CE3 i +0x5CE4 +0x5CE5 +0x5CE6 +0x5CE7 j +0x5CE8 +0x5CE9 k +0x5CEA +0x5CEB l +0x5CEC m +0x5CED +0x5CEE n +0x5CEF o +0x5CF0 +0x5CF1 p +0x5CF2 q +0x5CF3 r +0x5CF4 s +0x5CF5 t +0x5CF6 u +0x5CF7 v +0x5CF8 w +0x5CF9 x +0x5CFA y +0x5CFB +0x5CFC z +0x5CFD { +0x5CFE | +0x5CFF } +0x5D00 ~ +0x5D01 +0x5D02 +0x5D03 +0x5D04 +0x5D05 +0x5D06 +0x5D07 +0x5D08 +0x5D09 +0x5D0A +0x5D0B +0x5D0C +0x5D0D +0x5D0E +0x5D0F +0x5D10 +0x5D11 +0x5D12 +0x5D13 +0x5D14 +0x5D15 +0x5D16 +0x5D17 +0x5D18 +0x5D19 +0x5D1A +0x5D1B +0x5D1C +0x5D1D +0x5D1E +0x5D1F +0x5D20 +0x5D21 +0x5D22 +0x5D23 +0x5D24 +0x5D25 +0x5D26 +0x5D27 +0x5D28 +0x5D29 +0x5D2A +0x5D2B +0x5D2C +0x5D2D ո +0x5D2E +0x5D2F +0x5D30 +0x5D31 +0x5D32 +0x5D33 +0x5D34 +0x5D35 +0x5D36 +0x5D37 +0x5D38 +0x5D39 +0x5D3A +0x5D3B +0x5D3C +0x5D3D +0x5D3E +0x5D3F +0x5D40 +0x5D41 +0x5D42 +0x5D43 +0x5D44 +0x5D45 +0x5D46 +0x5D47 +0x5D48 +0x5D49 +0x5D4A +0x5D4B +0x5D4C Ƕ +0x5D4D +0x5D4E +0x5D4F +0x5D50 +0x5D51 +0x5D52 +0x5D53 +0x5D54 +0x5D55 +0x5D56 +0x5D57 +0x5D58 +0x5D59 +0x5D5A +0x5D5B +0x5D5C +0x5D5D +0x5D5E +0x5D5F +0x5D60 +0x5D61 +0x5D62 +0x5D63 +0x5D64 +0x5D65 +0x5D66 +0x5D67 +0x5D68 +0x5D69 +0x5D6A +0x5D6B +0x5D6C +0x5D6D +0x5D6E +0x5D6F +0x5D70 +0x5D71 +0x5D72 +0x5D73 +0x5D74 +0x5D75 +0x5D76 +0x5D77 +0x5D78 +0x5D79 +0x5D7A +0x5D7B +0x5D7C +0x5D7D +0x5D7E +0x5D7F +0x5D80 +0x5D81 +0x5D82 +0x5D83 +0x5D84 +0x5D85 +0x5D86 +0x5D87 +0x5D88 +0x5D89 +0x5D8A +0x5D8B +0x5D8C +0x5D8D +0x5D8E +0x5D8F +0x5D90 +0x5D91 +0x5D92 +0x5D93 +0x5D94 +0x5D95 +0x5D96 +0x5D97 +0x5D98 +0x5D99 +0x5D9A +0x5D9B +0x5D9C +0x5D9D +0x5D9E +0x5D9F +0x5DA0 +0x5DA1 @ +0x5DA2 A +0x5DA3 B +0x5DA4 C +0x5DA5 D +0x5DA6 E +0x5DA7 F +0x5DA8 G +0x5DA9 H +0x5DAA I +0x5DAB J +0x5DAC K +0x5DAD L +0x5DAE M +0x5DAF N +0x5DB0 O +0x5DB1 P +0x5DB2 Q +0x5DB3 R +0x5DB4 S +0x5DB5 T +0x5DB6 U +0x5DB7 +0x5DB8 V +0x5DB9 W +0x5DBA X +0x5DBB Y +0x5DBC Z +0x5DBD [ +0x5DBE \ +0x5DBF ] +0x5DC0 ^ +0x5DC1 _ +0x5DC2 ` +0x5DC3 a +0x5DC4 b +0x5DC5 +0x5DC6 c +0x5DC7 d +0x5DC8 e +0x5DC9 f +0x5DCA g +0x5DCB h +0x5DCC i +0x5DCD Ρ +0x5DCE j +0x5DCF k +0x5DD0 l +0x5DD1 m +0x5DD2 n +0x5DD3 o +0x5DD4 p +0x5DD5 q +0x5DD6 r +0x5DD7 s +0x5DD8 t +0x5DD9 u +0x5DDA v +0x5DDB +0x5DDC w +0x5DDD +0x5DDE +0x5DDF x +0x5DE0 y +0x5DE1 Ѳ +0x5DE2 +0x5DE3 z +0x5DE4 { +0x5DE5 +0x5DE6 +0x5DE7 +0x5DE8 +0x5DE9 +0x5DEA | +0x5DEB +0x5DEC } +0x5DED ~ +0x5DEE +0x5DEF +0x5DF0 +0x5DF1 +0x5DF2 +0x5DF3 +0x5DF4 +0x5DF5 +0x5DF6 +0x5DF7 +0x5DF8 +0x5DF9 +0x5DFA +0x5DFB +0x5DFC +0x5DFD +0x5DFE +0x5DFF +0x5E00 +0x5E01 +0x5E02 +0x5E03 +0x5E04 +0x5E05 ˧ +0x5E06 +0x5E07 +0x5E08 ʦ +0x5E09 +0x5E0A +0x5E0B +0x5E0C ϣ +0x5E0D +0x5E0E +0x5E0F +0x5E10 +0x5E11 +0x5E12 +0x5E13 +0x5E14 +0x5E15 +0x5E16 +0x5E17 +0x5E18 +0x5E19 +0x5E1A +0x5E1B +0x5E1C +0x5E1D +0x5E1E +0x5E1F +0x5E20 +0x5E21 +0x5E22 +0x5E23 +0x5E24 +0x5E25 +0x5E26 +0x5E27 ֡ +0x5E28 +0x5E29 +0x5E2A +0x5E2B +0x5E2C +0x5E2D ϯ +0x5E2E +0x5E2F +0x5E30 +0x5E31 +0x5E32 +0x5E33 +0x5E34 +0x5E35 +0x5E36 +0x5E37 +0x5E38 +0x5E39 +0x5E3A +0x5E3B +0x5E3C +0x5E3D ñ +0x5E3E +0x5E3F +0x5E40 +0x5E41 +0x5E42 +0x5E43 +0x5E44 +0x5E45 +0x5E46 +0x5E47 +0x5E48 +0x5E49 +0x5E4A +0x5E4B +0x5E4C +0x5E4D +0x5E4E +0x5E4F +0x5E50 +0x5E51 +0x5E52 +0x5E53 +0x5E54 +0x5E55 Ļ +0x5E56 +0x5E57 +0x5E58 +0x5E59 +0x5E5A +0x5E5B +0x5E5C +0x5E5D +0x5E5E +0x5E5F +0x5E60 +0x5E61 +0x5E62 +0x5E63 +0x5E64 +0x5E65 +0x5E66 +0x5E67 +0x5E68 +0x5E69 +0x5E6A +0x5E6B +0x5E6C +0x5E6D +0x5E6E +0x5E6F +0x5E70 +0x5E71 +0x5E72 +0x5E73 ƽ +0x5E74 +0x5E75 +0x5E76 +0x5E77 +0x5E78 +0x5E79 +0x5E7A +0x5E7B +0x5E7C +0x5E7D +0x5E7E +0x5E7F +0x5E80 +0x5E81 +0x5E82 +0x5E83 +0x5E84 ׯ +0x5E85 +0x5E86 +0x5E87 +0x5E88 +0x5E89 +0x5E8A +0x5E8B +0x5E8C +0x5E8D +0x5E8E +0x5E8F +0x5E90 ® +0x5E91 +0x5E92 +0x5E93 +0x5E94 Ӧ +0x5E95 +0x5E96 +0x5E97 +0x5E98 +0x5E99 +0x5E9A +0x5E9B +0x5E9C +0x5E9D +0x5E9E +0x5E9F +0x5EA0 +0x5EA1 +0x5EA2 +0x5EA3 +0x5EA4 +0x5EA5 +0x5EA6 +0x5EA7 +0x5EA8 +0x5EA9 +0x5EAA +0x5EAB +0x5EAC +0x5EAD ͥ +0x5EAE +0x5EAF +0x5EB0 +0x5EB1 +0x5EB2 +0x5EB3 +0x5EB4 +0x5EB5 +0x5EB6 +0x5EB7 +0x5EB8 ӹ +0x5EB9 +0x5EBA +0x5EBB +0x5EBC +0x5EBD +0x5EBE +0x5EBF +0x5EC0 +0x5EC1 +0x5EC2 +0x5EC3 +0x5EC4 +0x5EC5 +0x5EC6 @ +0x5EC7 A +0x5EC8 B +0x5EC9 +0x5ECA +0x5ECB C +0x5ECC D +0x5ECD E +0x5ECE F +0x5ECF G +0x5ED0 H +0x5ED1 +0x5ED2 +0x5ED3 +0x5ED4 I +0x5ED5 J +0x5ED6 +0x5ED7 K +0x5ED8 L +0x5ED9 M +0x5EDA N +0x5EDB +0x5EDC O +0x5EDD P +0x5EDE Q +0x5EDF R +0x5EE0 S +0x5EE1 T +0x5EE2 U +0x5EE3 V +0x5EE4 W +0x5EE5 X +0x5EE6 Y +0x5EE7 Z +0x5EE8 +0x5EE9 [ +0x5EEA +0x5EEB \ +0x5EEC ] +0x5EED ^ +0x5EEE _ +0x5EEF ` +0x5EF0 a +0x5EF1 b +0x5EF2 c +0x5EF3 d +0x5EF4 +0x5EF5 e +0x5EF6 +0x5EF7 ͢ +0x5EF8 f +0x5EF9 g +0x5EFA +0x5EFB h +0x5EFC i +0x5EFD j +0x5EFE +0x5EFF إ +0x5F00 +0x5F01 +0x5F02 +0x5F03 +0x5F04 Ū +0x5F05 k +0x5F06 l +0x5F07 m +0x5F08 +0x5F09 n +0x5F0A +0x5F0B ߮ +0x5F0C o +0x5F0D p +0x5F0E q +0x5F0F ʽ +0x5F10 r +0x5F11 ߱ +0x5F12 s +0x5F13 +0x5F14 t +0x5F15 +0x5F16 u +0x5F17 +0x5F18 +0x5F19 v +0x5F1A w +0x5F1B +0x5F1C x +0x5F1D y +0x5F1E z +0x5F1F +0x5F20 +0x5F21 { +0x5F22 | +0x5F23 } +0x5F24 ~ +0x5F25 +0x5F26 +0x5F27 +0x5F28 +0x5F29 +0x5F2A +0x5F2B +0x5F2C +0x5F2D +0x5F2E +0x5F2F +0x5F30 +0x5F31 +0x5F32 +0x5F33 +0x5F34 +0x5F35 +0x5F36 +0x5F37 +0x5F38 +0x5F39 +0x5F3A ǿ +0x5F3B +0x5F3C +0x5F3D +0x5F3E +0x5F3F +0x5F40 +0x5F41 +0x5F42 +0x5F43 +0x5F44 +0x5F45 +0x5F46 +0x5F47 +0x5F48 +0x5F49 +0x5F4A +0x5F4B +0x5F4C +0x5F4D +0x5F4E +0x5F4F +0x5F50 +0x5F51 +0x5F52 +0x5F53 +0x5F54 +0x5F55 ¼ +0x5F56 +0x5F57 +0x5F58 +0x5F59 +0x5F5A +0x5F5B +0x5F5C +0x5F5D +0x5F5E +0x5F5F +0x5F60 +0x5F61 +0x5F62 +0x5F63 +0x5F64 ͮ +0x5F65 +0x5F66 +0x5F67 +0x5F68 +0x5F69 +0x5F6A +0x5F6B +0x5F6C +0x5F6D +0x5F6E +0x5F6F +0x5F70 +0x5F71 Ӱ +0x5F72 +0x5F73 +0x5F74 +0x5F75 +0x5F76 +0x5F77 +0x5F78 +0x5F79 +0x5F7A +0x5F7B +0x5F7C +0x5F7D +0x5F7E +0x5F7F +0x5F80 +0x5F81 +0x5F82 +0x5F83 +0x5F84 +0x5F85 +0x5F86 +0x5F87 +0x5F88 +0x5F89 +0x5F8A +0x5F8B +0x5F8C +0x5F8D +0x5F8E +0x5F8F +0x5F90 +0x5F91 +0x5F92 ͽ +0x5F93 +0x5F94 +0x5F95 +0x5F96 +0x5F97 +0x5F98 +0x5F99 +0x5F9A +0x5F9B +0x5F9C +0x5F9D +0x5F9E +0x5F9F +0x5FA0 +0x5FA1 +0x5FA2 +0x5FA3 +0x5FA4 +0x5FA5 +0x5FA6 +0x5FA7 +0x5FA8 +0x5FA9 +0x5FAA ѭ +0x5FAB +0x5FAC +0x5FAD +0x5FAE ΢ +0x5FAF +0x5FB0 +0x5FB1 +0x5FB2 +0x5FB3 +0x5FB4 +0x5FB5 +0x5FB6 +0x5FB7 +0x5FB8 +0x5FB9 +0x5FBA +0x5FBB +0x5FBC +0x5FBD +0x5FBE +0x5FBF +0x5FC0 +0x5FC1 +0x5FC2 +0x5FC3 +0x5FC4 +0x5FC5 +0x5FC6 +0x5FC7 +0x5FC8 +0x5FC9 +0x5FCA +0x5FCB +0x5FCC +0x5FCD +0x5FCE +0x5FCF +0x5FD0 +0x5FD1 +0x5FD2 ߯ +0x5FD3 +0x5FD4 +0x5FD5 +0x5FD6 +0x5FD7 ־ +0x5FD8 +0x5FD9 æ +0x5FDA +0x5FDB +0x5FDC +0x5FDD +0x5FDE +0x5FDF +0x5FE0 +0x5FE1 +0x5FE2 +0x5FE3 +0x5FE4 +0x5FE5 +0x5FE6 +0x5FE7 +0x5FE8 +0x5FE9 +0x5FEA +0x5FEB +0x5FEC +0x5FED +0x5FEE +0x5FEF +0x5FF0 +0x5FF1 +0x5FF2 +0x5FF3 +0x5FF4 +0x5FF5 +0x5FF6 +0x5FF7 +0x5FF8 +0x5FF9 +0x5FFA +0x5FFB +0x5FFC +0x5FFD +0x5FFE +0x5FFF +0x6000 +0x6001 ̬ +0x6002 +0x6003 +0x6004 +0x6005 +0x6006 +0x6007 +0x6008 @ +0x6009 A +0x600A +0x600B B +0x600C C +0x600D +0x600E +0x600F +0x6010 D +0x6011 E +0x6012 ŭ +0x6013 F +0x6014 +0x6015 +0x6016 +0x6017 G +0x6018 H +0x6019 +0x601A I +0x601B +0x601C +0x601D ˼ +0x601E J +0x601F K +0x6020 +0x6021 +0x6022 L +0x6023 M +0x6024 N +0x6025 +0x6026 +0x6027 +0x6028 Թ +0x6029 +0x602A +0x602B +0x602C O +0x602D P +0x602E Q +0x602F +0x6030 R +0x6031 S +0x6032 T +0x6033 U +0x6034 V +0x6035 +0x6036 W +0x6037 X +0x6038 Y +0x6039 Z +0x603A [ +0x603B +0x603C +0x603D \ +0x603E ] +0x603F +0x6040 ^ +0x6041 +0x6042 +0x6043 +0x6044 _ +0x6045 ` +0x6046 a +0x6047 b +0x6048 c +0x6049 d +0x604A e +0x604B +0x604C f +0x604D +0x604E g +0x604F h +0x6050 +0x6051 i +0x6052 +0x6053 j +0x6054 k +0x6055 ˡ +0x6056 l +0x6057 m +0x6058 n +0x6059 +0x605A +0x605B o +0x605C p +0x605D +0x605E q +0x605F r +0x6060 s +0x6061 t +0x6062 +0x6063 +0x6064 +0x6065 u +0x6066 v +0x6067 +0x6068 +0x6069 +0x606A +0x606B +0x606C +0x606D +0x606E w +0x606F Ϣ +0x6070 ǡ +0x6071 x +0x6072 y +0x6073 +0x6074 z +0x6075 { +0x6076 +0x6077 | +0x6078 +0x6079 +0x607A +0x607B +0x607C +0x607D +0x607E } +0x607F +0x6080 ~ +0x6081 +0x6082 +0x6083 +0x6084 +0x6085 +0x6086 +0x6087 +0x6088 +0x6089 Ϥ +0x608A +0x608B +0x608C +0x608D +0x608E +0x608F +0x6090 +0x6091 +0x6092 +0x6093 +0x6094 +0x6095 +0x6096 +0x6097 +0x6098 +0x6099 +0x609A +0x609B +0x609C +0x609D +0x609E +0x609F +0x60A0 +0x60A1 +0x60A2 +0x60A3 +0x60A4 +0x60A5 +0x60A6 +0x60A7 +0x60A8 +0x60A9 +0x60AA +0x60AB +0x60AC +0x60AD +0x60AE +0x60AF +0x60B0 +0x60B1 +0x60B2 +0x60B3 +0x60B4 +0x60B5 +0x60B6 +0x60B7 +0x60B8 +0x60B9 +0x60BA +0x60BB +0x60BC +0x60BD +0x60BE +0x60BF +0x60C0 +0x60C1 +0x60C2 +0x60C3 +0x60C4 +0x60C5 +0x60C6 +0x60C7 +0x60C8 +0x60C9 +0x60CA +0x60CB +0x60CC +0x60CD +0x60CE +0x60CF +0x60D0 +0x60D1 +0x60D2 +0x60D3 +0x60D4 +0x60D5 +0x60D6 +0x60D7 +0x60D8 +0x60D9 +0x60DA +0x60DB +0x60DC ϧ +0x60DD +0x60DE +0x60DF Ω +0x60E0 +0x60E1 +0x60E2 +0x60E3 +0x60E4 +0x60E5 +0x60E6 +0x60E7 +0x60E8 +0x60E9 +0x60EA +0x60EB +0x60EC +0x60ED +0x60EE +0x60EF +0x60F0 +0x60F1 +0x60F2 +0x60F3 +0x60F4 +0x60F5 +0x60F6 +0x60F7 +0x60F8 +0x60F9 +0x60FA +0x60FB +0x60FC +0x60FD +0x60FE +0x60FF +0x6100 +0x6101 +0x6102 +0x6103 +0x6104 +0x6105 +0x6106 +0x6107 +0x6108 +0x6109 +0x610A +0x610B +0x610C +0x610D +0x610E +0x610F +0x6110 +0x6111 +0x6112 +0x6113 +0x6114 +0x6115 +0x6116 +0x6117 +0x6118 +0x6119 +0x611A +0x611B +0x611C +0x611D +0x611E +0x611F +0x6120 +0x6121 +0x6122 +0x6123 +0x6124 +0x6125 +0x6126 +0x6127 +0x6128 +0x6129 +0x612A +0x612B +0x612C +0x612D +0x612E +0x612F +0x6130 +0x6131 +0x6132 +0x6133 +0x6134 +0x6135 +0x6136 +0x6137 +0x6138 +0x6139 +0x613A +0x613B +0x613C +0x613D +0x613E +0x613F Ը +0x6140 +0x6141 +0x6142 +0x6143 +0x6144 +0x6145 +0x6146 +0x6147 @ +0x6148 +0x6149 A +0x614A +0x614B B +0x614C +0x614D C +0x614E +0x614F D +0x6150 E +0x6151 +0x6152 F +0x6153 G +0x6154 H +0x6155 Ľ +0x6156 I +0x6157 J +0x6158 K +0x6159 L +0x615A M +0x615B N +0x615C O +0x615D +0x615E P +0x615F Q +0x6160 R +0x6161 S +0x6162 +0x6163 T +0x6164 U +0x6165 V +0x6166 W +0x6167 +0x6168 +0x6169 X +0x616A Y +0x616B Z +0x616C [ +0x616D \ +0x616E ] +0x616F ^ +0x6170 ο +0x6171 _ +0x6172 ` +0x6173 a +0x6174 b +0x6175 +0x6176 c +0x6177 +0x6178 d +0x6179 e +0x617A f +0x617B g +0x617C h +0x617D i +0x617E j +0x617F k +0x6180 l +0x6181 m +0x6182 n +0x6183 o +0x6184 p +0x6185 q +0x6186 r +0x6187 s +0x6188 t +0x6189 u +0x618A v +0x618B +0x618C w +0x618D x +0x618E +0x618F y +0x6190 z +0x6191 { +0x6192 | +0x6193 } +0x6194 +0x6195 ~ +0x6196 +0x6197 +0x6198 +0x6199 +0x619A +0x619B +0x619C +0x619D +0x619E +0x619F +0x61A0 +0x61A1 +0x61A2 +0x61A3 +0x61A4 +0x61A5 +0x61A6 +0x61A7 +0x61A8 +0x61A9 +0x61AA +0x61AB +0x61AC +0x61AD +0x61AE +0x61AF +0x61B0 +0x61B1 +0x61B2 +0x61B3 +0x61B4 +0x61B5 +0x61B6 +0x61B7 +0x61B8 +0x61B9 +0x61BA +0x61BB +0x61BC +0x61BD +0x61BE +0x61BF +0x61C0 +0x61C1 +0x61C2 +0x61C3 +0x61C4 +0x61C5 +0x61C6 +0x61C7 +0x61C8 и +0x61C9 +0x61CA +0x61CB +0x61CC +0x61CD +0x61CE +0x61CF +0x61D0 +0x61D1 +0x61D2 +0x61D3 +0x61D4 +0x61D5 +0x61D6 +0x61D7 +0x61D8 +0x61D9 +0x61DA +0x61DB +0x61DC +0x61DD +0x61DE +0x61DF +0x61E0 +0x61E1 +0x61E2 +0x61E3 +0x61E4 +0x61E5 +0x61E6 ų +0x61E7 +0x61E8 +0x61E9 +0x61EA +0x61EB +0x61EC +0x61ED +0x61EE +0x61EF +0x61F0 +0x61F1 +0x61F2 +0x61F3 +0x61F4 +0x61F5 +0x61F6 +0x61F7 +0x61F8 +0x61F9 +0x61FA +0x61FB +0x61FC +0x61FD +0x61FE +0x61FF ܲ +0x6200 +0x6201 +0x6202 +0x6203 +0x6204 +0x6205 +0x6206 +0x6207 +0x6208 +0x6209 +0x620A +0x620B +0x620C +0x620D +0x620E +0x620F Ϸ +0x6210 +0x6211 +0x6212 +0x6213 +0x6214 +0x6215 +0x6216 +0x6217 +0x6218 ս +0x6219 +0x621A +0x621B +0x621C +0x621D +0x621E +0x621F +0x6220 +0x6221 +0x6222 +0x6223 +0x6224 +0x6225 +0x6226 +0x6227 +0x6228 +0x6229 +0x622A +0x622B +0x622C +0x622D +0x622E ¾ +0x622F +0x6230 +0x6231 +0x6232 +0x6233 +0x6234 +0x6235 +0x6236 +0x6237 +0x6238 +0x6239 +0x623A +0x623B +0x623C +0x623D +0x623E +0x623F +0x6240 +0x6241 +0x6242 +0x6243 +0x6244 +0x6245 +0x6246 +0x6247 +0x6248 +0x6249 +0x624A +0x624B +0x624C +0x624D +0x624E +0x624F @ +0x6250 A +0x6251 +0x6252 +0x6253 +0x6254 +0x6255 B +0x6256 C +0x6257 D +0x6258 +0x6259 E +0x625A F +0x625B +0x625C G +0x625D H +0x625E I +0x625F J +0x6260 K +0x6261 L +0x6262 M +0x6263 +0x6264 N +0x6265 O +0x6266 Ǥ +0x6267 ִ +0x6268 P +0x6269 +0x626A +0x626B ɨ +0x626C +0x626D Ť +0x626E +0x626F +0x6270 +0x6271 Q +0x6272 R +0x6273 +0x6274 S +0x6275 T +0x6276 +0x6277 U +0x6278 V +0x6279 +0x627A W +0x627B X +0x627C +0x627D Y +0x627E +0x627F +0x6280 +0x6281 Z +0x6282 [ +0x6283 \ +0x6284 +0x6285 ] +0x6286 ^ +0x6287 _ +0x6288 ` +0x6289 +0x628A +0x628B a +0x628C b +0x628D c +0x628E d +0x628F e +0x6290 f +0x6291 +0x6292 +0x6293 ץ +0x6294 g +0x6295 Ͷ +0x6296 +0x6297 +0x6298 +0x6299 h +0x629A +0x629B +0x629C i +0x629D j +0x629E k +0x629F +0x62A0 +0x62A1 +0x62A2 +0x62A3 l +0x62A4 +0x62A5 +0x62A6 m +0x62A7 n +0x62A8 +0x62A9 o +0x62AA p +0x62AB +0x62AC ̧ +0x62AD q +0x62AE r +0x62AF s +0x62B0 t +0x62B1 +0x62B2 u +0x62B3 v +0x62B4 w +0x62B5 +0x62B6 x +0x62B7 y +0x62B8 z +0x62B9 Ĩ +0x62BA { +0x62BB +0x62BC Ѻ +0x62BD +0x62BE | +0x62BF +0x62C0 } +0x62C1 ~ +0x62C2 +0x62C3 +0x62C4 +0x62C5 +0x62C6 +0x62C7 Ĵ +0x62C8 +0x62C9 +0x62CA +0x62CB +0x62CC +0x62CD +0x62CE +0x62CF +0x62D0 +0x62D1 +0x62D2 +0x62D3 +0x62D4 +0x62D5 +0x62D6 +0x62D7 +0x62D8 +0x62D9 ׾ +0x62DA +0x62DB +0x62DC +0x62DD +0x62DE +0x62DF +0x62E0 +0x62E1 +0x62E2 £ +0x62E3 +0x62E4 +0x62E5 ӵ +0x62E6 +0x62E7 š +0x62E8 +0x62E9 +0x62EA +0x62EB +0x62EC +0x62ED +0x62EE +0x62EF +0x62F0 +0x62F1 +0x62F2 +0x62F3 ȭ +0x62F4 ˩ +0x62F5 +0x62F6 +0x62F7 +0x62F8 +0x62F9 +0x62FA +0x62FB +0x62FC ƴ +0x62FD ק +0x62FE ʰ +0x62FF +0x6300 +0x6301 +0x6302 +0x6303 +0x6304 +0x6305 +0x6306 +0x6307 ָ +0x6308 +0x6309 +0x630A +0x630B +0x630C +0x630D +0x630E +0x630F +0x6310 +0x6311 +0x6312 +0x6313 +0x6314 +0x6315 +0x6316 +0x6317 +0x6318 +0x6319 +0x631A ֿ +0x631B +0x631C +0x631D +0x631E ̢ +0x631F Ю +0x6320 +0x6321 +0x6322 +0x6323 +0x6324 +0x6325 +0x6326 +0x6327 +0x6328 +0x6329 +0x632A Ų +0x632B +0x632C +0x632D +0x632E +0x632F +0x6330 +0x6331 +0x6332 +0x6333 +0x6334 +0x6335 +0x6336 +0x6337 +0x6338 +0x6339 +0x633A ͦ +0x633B +0x633C +0x633D +0x633E +0x633F +0x6340 +0x6341 +0x6342 +0x6343 +0x6344 +0x6345 ͱ +0x6346 +0x6347 +0x6348 +0x6349 ׽ +0x634A +0x634B +0x634C +0x634D +0x634E +0x634F +0x6350 +0x6351 +0x6352 +0x6353 +0x6354 +0x6355 +0x6356 +0x6357 +0x6358 +0x6359 +0x635A +0x635B +0x635C +0x635D +0x635E +0x635F +0x6360 +0x6361 +0x6362 +0x6363 +0x6364 +0x6365 +0x6366 +0x6367 +0x6368 +0x6369 +0x636A +0x636B +0x636C +0x636D +0x636E +0x636F +0x6370 +0x6371 +0x6372 +0x6373 +0x6374 +0x6375 +0x6376 +0x6377 +0x6378 +0x6379 +0x637A +0x637B +0x637C +0x637D +0x637E +0x637F +0x6380 +0x6381 +0x6382 +0x6383 +0x6384 +0x6385 +0x6386 +0x6387 +0x6388 +0x6389 +0x638A +0x638B +0x638C +0x638D +0x638E +0x638F +0x6390 +0x6391 +0x6392 +0x6393 +0x6394 +0x6395 +0x6396 Ҵ +0x6397 +0x6398 +0x6399 +0x639A +0x639B +0x639C +0x639D +0x639E +0x639F +0x63A0 +0x63A1 +0x63A2 ̽ +0x63A3 +0x63A4 +0x63A5 +0x63A6 +0x63A7 +0x63A8 +0x63A9 +0x63AA +0x63AB +0x63AC +0x63AD +0x63AE +0x63AF +0x63B0 +0x63B1 +0x63B2 +0x63B3 ° +0x63B4 +0x63B5 +0x63B6 +0x63B7 +0x63B8 +0x63B9 +0x63BA +0x63BB +0x63BC +0x63BD +0x63BE +0x63BF +0x63C0 +0x63C1 @ +0x63C2 A +0x63C3 B +0x63C4 +0x63C5 C +0x63C6 +0x63C7 D +0x63C8 E +0x63C9 +0x63CA F +0x63CB G +0x63CC H +0x63CD +0x63CE +0x63CF +0x63D0 +0x63D1 I +0x63D2 +0x63D3 J +0x63D4 K +0x63D5 L +0x63D6 Ҿ +0x63D7 M +0x63D8 N +0x63D9 O +0x63DA P +0x63DB Q +0x63DC R +0x63DD S +0x63DE +0x63DF T +0x63E0 +0x63E1 +0x63E2 U +0x63E3 +0x63E4 V +0x63E5 W +0x63E6 X +0x63E7 Y +0x63E8 Z +0x63E9 +0x63EA +0x63EB [ +0x63EC \ +0x63ED +0x63EE ] +0x63EF ^ +0x63F0 _ +0x63F1 ` +0x63F2 +0x63F3 a +0x63F4 Ԯ +0x63F5 b +0x63F6 +0x63F7 c +0x63F8 +0x63F9 d +0x63FA e +0x63FB f +0x63FC g +0x63FD +0x63FE h +0x63FF +0x6400 +0x6401 +0x6402 § +0x6403 i +0x6404 j +0x6405 +0x6406 k +0x6407 l +0x6408 m +0x6409 n +0x640A o +0x640B +0x640C +0x640D p +0x640E q +0x640F +0x6410 +0x6411 r +0x6412 s +0x6413 +0x6414 ɦ +0x6415 t +0x6416 u +0x6417 v +0x6418 w +0x6419 x +0x641A y +0x641B +0x641C +0x641D z +0x641E +0x641F { +0x6420 +0x6421 +0x6422 | +0x6423 } +0x6424 ~ +0x6425 +0x6426 +0x6427 +0x6428 +0x6429 +0x642A +0x642B +0x642C +0x642D +0x642E +0x642F +0x6430 +0x6431 +0x6432 +0x6433 +0x6434 +0x6435 +0x6436 +0x6437 +0x6438 +0x6439 +0x643A Я +0x643B +0x643C +0x643D +0x643E +0x643F +0x6440 +0x6441 +0x6442 +0x6443 +0x6444 +0x6445 +0x6446 +0x6447 ҡ +0x6448 +0x6449 +0x644A ̯ +0x644B +0x644C +0x644D +0x644E +0x644F +0x6450 +0x6451 +0x6452 +0x6453 +0x6454 ˤ +0x6455 +0x6456 +0x6457 +0x6458 ժ +0x6459 +0x645A +0x645B +0x645C +0x645D +0x645E +0x645F +0x6460 +0x6461 +0x6462 +0x6463 +0x6464 +0x6465 +0x6466 +0x6467 +0x6468 +0x6469 Ħ +0x646A +0x646B +0x646C +0x646D +0x646E +0x646F +0x6470 +0x6471 +0x6472 +0x6473 +0x6474 +0x6475 +0x6476 +0x6477 +0x6478 +0x6479 ġ +0x647A ߡ +0x647B +0x647C +0x647D +0x647E +0x647F +0x6480 +0x6481 +0x6482 +0x6483 +0x6484 +0x6485 +0x6486 +0x6487 Ʋ +0x6488 +0x6489 +0x648A +0x648B +0x648C +0x648D +0x648E +0x648F +0x6490 +0x6491 +0x6492 +0x6493 +0x6494 +0x6495 ˺ +0x6496 +0x6497 +0x6498 +0x6499 ߤ +0x649A +0x649B +0x649C +0x649D +0x649E ײ +0x649F +0x64A0 +0x64A1 +0x64A2 +0x64A3 +0x64A4 +0x64A5 +0x64A6 +0x64A7 +0x64A8 +0x64A9 +0x64AA +0x64AB +0x64AC +0x64AD +0x64AE +0x64AF +0x64B0 ׫ +0x64B1 +0x64B2 +0x64B3 +0x64B4 +0x64B5 +0x64B6 +0x64B7 ߢ +0x64B8 ߣ +0x64B9 +0x64BA ߥ +0x64BB +0x64BC +0x64BD +0x64BE +0x64BF +0x64C0 ߦ +0x64C1 +0x64C2 +0x64C3 +0x64C4 +0x64C5 +0x64C6 +0x64C7 +0x64C8 +0x64C9 +0x64CA +0x64CB +0x64CC +0x64CD +0x64CE +0x64CF +0x64D0 ߧ +0x64D1 +0x64D2 +0x64D3 +0x64D4 +0x64D5 +0x64D6 +0x64D7 ߨ +0x64D8 +0x64D9 +0x64DA +0x64DB @ +0x64DC A +0x64DD B +0x64DE +0x64DF C +0x64E0 D +0x64E1 E +0x64E2 ߪ +0x64E3 F +0x64E4 ߩ +0x64E5 G +0x64E6 +0x64E7 H +0x64E8 I +0x64E9 J +0x64EA K +0x64EB L +0x64EC M +0x64ED N +0x64EE O +0x64EF P +0x64F0 Q +0x64F1 R +0x64F2 S +0x64F3 T +0x64F4 U +0x64F5 V +0x64F6 W +0x64F7 X +0x64F8 Y +0x64F9 Z +0x64FA [ +0x64FB \ +0x64FC ] +0x64FD ^ +0x64FE _ +0x64FF ` +0x6500 +0x6501 a +0x6502 b +0x6503 c +0x6504 d +0x6505 e +0x6506 f +0x6507 g +0x6508 h +0x6509 ߫ +0x650A i +0x650B j +0x650C k +0x650D l +0x650E m +0x650F n +0x6510 o +0x6511 p +0x6512 +0x6513 q +0x6514 r +0x6515 s +0x6516 t +0x6517 u +0x6518 +0x6519 v +0x651A w +0x651B x +0x651C y +0x651D z +0x651E { +0x651F | +0x6520 } +0x6521 ~ +0x6522 +0x6523 +0x6524 +0x6525 ߬ +0x6526 +0x6527 +0x6528 +0x6529 +0x652A +0x652B +0x652C +0x652D +0x652E ߭ +0x652F ֧ +0x6530 +0x6531 +0x6532 +0x6533 +0x6534 +0x6535 +0x6536 +0x6537 +0x6538 +0x6539 +0x653A +0x653B +0x653C +0x653D +0x653E +0x653F +0x6540 +0x6541 +0x6542 +0x6543 +0x6544 +0x6545 +0x6546 +0x6547 +0x6548 Ч +0x6549 +0x654A +0x654B +0x654C +0x654D +0x654E +0x654F +0x6550 +0x6551 +0x6552 +0x6553 +0x6554 +0x6555 +0x6556 +0x6557 +0x6558 +0x6559 +0x655A +0x655B +0x655C +0x655D +0x655E +0x655F +0x6560 +0x6561 +0x6562 +0x6563 ɢ +0x6564 +0x6565 +0x6566 +0x6567 +0x6568 +0x6569 +0x656A +0x656B +0x656C +0x656D +0x656E +0x656F +0x6570 +0x6571 +0x6572 +0x6573 +0x6574 +0x6575 +0x6576 +0x6577 +0x6578 +0x6579 +0x657A +0x657B +0x657C +0x657D +0x657E +0x657F +0x6580 +0x6581 +0x6582 +0x6583 +0x6584 +0x6585 +0x6586 +0x6587 +0x6588 +0x6589 +0x658A +0x658B ի +0x658C +0x658D +0x658E +0x658F +0x6590 +0x6591 +0x6592 +0x6593 +0x6594 +0x6595 +0x6596 +0x6597 +0x6598 +0x6599 +0x659A +0x659B +0x659C б +0x659D +0x659E +0x659F +0x65A0 +0x65A1 +0x65A2 +0x65A3 +0x65A4 +0x65A5 +0x65A6 +0x65A7 +0x65A8 +0x65A9 ն +0x65AA +0x65AB +0x65AC +0x65AD +0x65AE +0x65AF ˹ +0x65B0 +0x65B1 +0x65B2 +0x65B3 +0x65B4 +0x65B5 +0x65B6 +0x65B7 +0x65B8 +0x65B9 +0x65BA +0x65BB +0x65BC +0x65BD ʩ +0x65BE +0x65BF +0x65C0 +0x65C1 +0x65C2 +0x65C3 +0x65C4 +0x65C5 +0x65C6 +0x65C7 +0x65C8 +0x65C9 +0x65CA +0x65CB +0x65CC +0x65CD +0x65CE +0x65CF +0x65D0 +0x65D1 +0x65D2 +0x65D3 +0x65D4 +0x65D5 +0x65D6 +0x65D7 +0x65D8 +0x65D9 +0x65DA +0x65DB +0x65DC +0x65DD +0x65DE +0x65DF +0x65E0 +0x65E1 +0x65E2 +0x65E3 +0x65E4 +0x65E5 +0x65E6 +0x65E7 +0x65E8 ּ +0x65E9 +0x65EA +0x65EB +0x65EC Ѯ +0x65ED +0x65EE +0x65EF +0x65F0 +0x65F1 +0x65F2 @ +0x65F3 A +0x65F4 B +0x65F5 C +0x65F6 ʱ +0x65F7 +0x65F8 D +0x65F9 E +0x65FA +0x65FB F +0x65FC G +0x65FD H +0x65FE I +0x65FF J +0x6600 +0x6601 K +0x6602 +0x6603 +0x6604 L +0x6605 M +0x6606 +0x6607 N +0x6608 O +0x6609 P +0x660A +0x660B Q +0x660C +0x660D R +0x660E +0x660F +0x6610 S +0x6611 T +0x6612 U +0x6613 +0x6614 +0x6615 +0x6616 V +0x6617 W +0x6618 X +0x6619 +0x661A Y +0x661B Z +0x661C [ +0x661D +0x661E \ +0x661F +0x6620 ӳ +0x6621 ] +0x6622 ^ +0x6623 _ +0x6624 ` +0x6625 +0x6626 a +0x6627 +0x6628 +0x6629 b +0x662A c +0x662B d +0x662C e +0x662D +0x662E f +0x662F +0x6630 g +0x6631 +0x6632 h +0x6633 i +0x6634 +0x6635 +0x6636 +0x6637 j +0x6638 k +0x6639 l +0x663A m +0x663B n +0x663C +0x663D o +0x663E +0x663F p +0x6640 q +0x6641 +0x6642 r +0x6643 +0x6644 s +0x6645 t +0x6646 u +0x6647 v +0x6648 w +0x6649 x +0x664A y +0x664B +0x664C +0x664D z +0x664E { +0x664F +0x6650 | +0x6651 } +0x6652 ɹ +0x6653 +0x6654 +0x6655 +0x6656 +0x6657 +0x6658 ~ +0x6659 +0x665A +0x665B +0x665C +0x665D +0x665E +0x665F +0x6660 +0x6661 +0x6662 +0x6663 +0x6664 +0x6665 +0x6666 +0x6667 +0x6668 +0x6669 +0x666A +0x666B +0x666C +0x666D +0x666E +0x666F +0x6670 +0x6671 +0x6672 +0x6673 +0x6674 +0x6675 +0x6676 +0x6677 +0x6678 +0x6679 +0x667A +0x667B +0x667C +0x667D +0x667E +0x667F +0x6680 +0x6681 +0x6682 +0x6683 +0x6684 +0x6685 +0x6686 +0x6687 Ͼ +0x6688 +0x6689 +0x668A +0x668B +0x668C +0x668D +0x668E +0x668F +0x6690 +0x6691 +0x6692 +0x6693 +0x6694 +0x6695 +0x6696 ů +0x6697 +0x6698 +0x6699 +0x669A +0x669B +0x669C +0x669D +0x669E +0x669F +0x66A0 +0x66A1 +0x66A2 +0x66A3 +0x66A4 +0x66A5 +0x66A6 +0x66A7 +0x66A8 +0x66A9 +0x66AA +0x66AB +0x66AC +0x66AD +0x66AE ĺ +0x66AF +0x66B0 +0x66B1 +0x66B2 +0x66B3 +0x66B4 +0x66B5 +0x66B6 +0x66B7 +0x66B8 +0x66B9 +0x66BA +0x66BB +0x66BC +0x66BD +0x66BE +0x66BF +0x66C0 +0x66C1 +0x66C2 +0x66C3 +0x66C4 +0x66C5 +0x66C6 +0x66C7 +0x66C8 +0x66C9 +0x66CA +0x66CB +0x66CC +0x66CD +0x66CE +0x66CF +0x66D0 +0x66D1 +0x66D2 +0x66D3 +0x66D4 +0x66D5 +0x66D6 +0x66D7 +0x66D8 +0x66D9 +0x66DA +0x66DB +0x66DC +0x66DD +0x66DE +0x66DF +0x66E0 +0x66E1 +0x66E2 +0x66E3 +0x66E4 +0x66E5 +0x66E6 +0x66E7 +0x66E8 +0x66E9 +0x66EA +0x66EB +0x66EC +0x66ED +0x66EE +0x66EF +0x66F0 Ի +0x66F1 +0x66F2 +0x66F3 ҷ +0x66F4 +0x66F5 +0x66F6 +0x66F7 +0x66F8 +0x66F9 +0x66FA +0x66FB +0x66FC +0x66FD +0x66FE +0x66FF +0x6700 +0x6701 +0x6702 +0x6703 +0x6704 @ +0x6705 A +0x6706 B +0x6707 C +0x6708 +0x6709 +0x670A +0x670B +0x670C D +0x670D +0x670E E +0x670F F +0x6710 +0x6711 G +0x6712 H +0x6713 I +0x6714 ˷ +0x6715 +0x6716 J +0x6717 +0x6718 K +0x6719 L +0x671A M +0x671B +0x671C N +0x671D +0x671E O +0x671F +0x6720 P +0x6721 Q +0x6722 R +0x6723 S +0x6724 T +0x6725 U +0x6726 +0x6727 V +0x6728 ľ +0x6729 W +0x672A δ +0x672B ĩ +0x672C +0x672D +0x672E X +0x672F +0x6730 Y +0x6731 +0x6732 Z +0x6733 [ +0x6734 +0x6735 +0x6736 \ +0x6737 ] +0x6738 ^ +0x6739 _ +0x673A +0x673B ` +0x673C a +0x673D +0x673E b +0x673F c +0x6740 ɱ +0x6741 d +0x6742 +0x6743 Ȩ +0x6744 e +0x6745 f +0x6746 +0x6747 g +0x6748 +0x6749 ɼ +0x674A h +0x674B i +0x674C +0x674D j +0x674E +0x674F +0x6750 +0x6751 +0x6752 k +0x6753 +0x6754 l +0x6755 m +0x6756 +0x6757 n +0x6758 o +0x6759 p +0x675A q +0x675B r +0x675C +0x675D s +0x675E +0x675F +0x6760 +0x6761 +0x6762 t +0x6763 u +0x6764 v +0x6765 +0x6766 w +0x6767 x +0x6768 +0x6769 +0x676A +0x676B y +0x676C z +0x676D +0x676E { +0x676F +0x6770 +0x6771 | +0x6772 +0x6773 +0x6774 } +0x6775 +0x6776 ~ +0x6777 +0x6778 +0x6779 +0x677A +0x677B +0x677C +0x677D +0x677E +0x677F +0x6780 +0x6781 +0x6782 +0x6783 +0x6784 +0x6785 +0x6786 +0x6787 +0x6788 +0x6789 +0x678A +0x678B +0x678C +0x678D +0x678E +0x678F +0x6790 +0x6791 +0x6792 +0x6793 +0x6794 +0x6795 +0x6796 +0x6797 +0x6798 +0x6799 +0x679A ö +0x679B +0x679C +0x679D ֦ +0x679E +0x679F +0x67A0 +0x67A1 +0x67A2 +0x67A3 +0x67A4 +0x67A5 +0x67A6 +0x67A7 +0x67A8 +0x67A9 +0x67AA ǹ +0x67AB +0x67AC +0x67AD +0x67AE +0x67AF +0x67B0 +0x67B1 +0x67B2 +0x67B3 +0x67B4 +0x67B5 +0x67B6 +0x67B7 +0x67B8 +0x67B9 +0x67BA +0x67BB +0x67BC +0x67BD +0x67BE +0x67BF +0x67C0 +0x67C1 +0x67C2 +0x67C3 +0x67C4 +0x67C5 +0x67C6 +0x67C7 +0x67C8 +0x67C9 +0x67CA +0x67CB +0x67CC +0x67CD +0x67CE +0x67CF +0x67D0 ij +0x67D1 +0x67D2 +0x67D3 Ⱦ +0x67D4 +0x67D5 +0x67D6 +0x67D7 +0x67D8 +0x67D9 +0x67DA +0x67DB +0x67DC +0x67DD +0x67DE +0x67DF +0x67E0 +0x67E1 +0x67E2 +0x67E3 +0x67E4 +0x67E5 +0x67E6 +0x67E7 +0x67E8 +0x67E9 +0x67EA +0x67EB +0x67EC +0x67ED +0x67EE +0x67EF +0x67F0 +0x67F1 +0x67F2 +0x67F3 +0x67F4 +0x67F5 +0x67F6 +0x67F7 +0x67F8 +0x67F9 +0x67FA +0x67FB +0x67FC +0x67FD +0x67FE +0x67FF +0x6800 +0x6801 +0x6802 +0x6803 +0x6804 +0x6805 դ +0x6806 +0x6807 +0x6808 ջ +0x6809 +0x680A +0x680B +0x680C +0x680D +0x680E +0x680F +0x6810 +0x6811 +0x6812 +0x6813 ˨ +0x6814 +0x6815 +0x6816 +0x6817 +0x6818 +0x6819 +0x681A +0x681B +0x681C +0x681D +0x681E +0x681F +0x6820 +0x6821 У +0x6822 +0x6823 +0x6824 +0x6825 +0x6826 +0x6827 +0x6828 +0x6829 +0x682A +0x682B +0x682C +0x682D +0x682E +0x682F +0x6830 +0x6831 +0x6832 +0x6833 +0x6834 +0x6835 +0x6836 +0x6837 +0x6838 +0x6839 +0x683A +0x683B +0x683C +0x683D +0x683E +0x683F +0x6840 +0x6841 +0x6842 +0x6843 +0x6844 +0x6845 Φ +0x6846 +0x6847 +0x6848 +0x6849 +0x684A +0x684B +0x684C +0x684D +0x684E +0x684F +0x6850 ͩ +0x6851 ɣ +0x6852 +0x6853 +0x6854 +0x6855 +0x6856 +0x6857 +0x6858 +0x6859 +0x685A +0x685B +0x685C @ +0x685D A +0x685E B +0x685F C +0x6860 +0x6861 +0x6862 +0x6863 +0x6864 +0x6865 +0x6866 +0x6867 +0x6868 +0x6869 ׮ +0x686A D +0x686B +0x686C E +0x686D F +0x686E G +0x686F H +0x6870 I +0x6871 J +0x6872 K +0x6873 L +0x6874 +0x6875 M +0x6876 Ͱ +0x6877 +0x6878 N +0x6879 O +0x687A P +0x687B Q +0x687C R +0x687D S +0x687E T +0x687F U +0x6880 V +0x6881 +0x6882 W +0x6883 +0x6884 X +0x6885 ÷ +0x6886 +0x6887 Y +0x6888 Z +0x6889 [ +0x688A \ +0x688B ] +0x688C ^ +0x688D _ +0x688E ` +0x688F +0x6890 a +0x6891 b +0x6892 c +0x6893 +0x6894 d +0x6895 e +0x6896 f +0x6897 +0x6898 g +0x6899 h +0x689A i +0x689B j +0x689C k +0x689D l +0x689E m +0x689F n +0x68A0 o +0x68A1 p +0x68A2 +0x68A3 q +0x68A4 r +0x68A5 s +0x68A6 +0x68A7 +0x68A8 +0x68A9 t +0x68AA u +0x68AB v +0x68AC w +0x68AD +0x68AE x +0x68AF +0x68B0 е +0x68B1 y +0x68B2 z +0x68B3 +0x68B4 { +0x68B5 +0x68B6 | +0x68B7 } +0x68B8 ~ +0x68B9 +0x68BA +0x68BB +0x68BC +0x68BD +0x68BE +0x68BF +0x68C0 +0x68C1 +0x68C2 +0x68C3 +0x68C4 +0x68C5 +0x68C6 +0x68C7 +0x68C8 +0x68C9 +0x68CA +0x68CB +0x68CC +0x68CD +0x68CE +0x68CF +0x68D0 +0x68D1 +0x68D2 +0x68D3 +0x68D4 +0x68D5 +0x68D6 +0x68D7 +0x68D8 +0x68D9 +0x68DA +0x68DB +0x68DC +0x68DD +0x68DE +0x68DF +0x68E0 +0x68E1 +0x68E2 +0x68E3 +0x68E4 +0x68E5 +0x68E6 +0x68E7 +0x68E8 +0x68E9 +0x68EA +0x68EB +0x68EC +0x68ED +0x68EE ɭ +0x68EF +0x68F0 +0x68F1 +0x68F2 +0x68F3 +0x68F4 +0x68F5 +0x68F6 +0x68F7 +0x68F8 +0x68F9 +0x68FA +0x68FB +0x68FC +0x68FD +0x68FE +0x68FF +0x6900 +0x6901 +0x6902 +0x6903 +0x6904 +0x6905 +0x6906 +0x6907 +0x6908 +0x6909 +0x690A +0x690B +0x690C +0x690D ֲ +0x690E ׵ +0x690F +0x6910 +0x6911 +0x6912 +0x6913 +0x6914 +0x6915 +0x6916 +0x6917 +0x6918 +0x6919 +0x691A +0x691B +0x691C +0x691D +0x691E +0x691F +0x6920 +0x6921 +0x6922 +0x6923 +0x6924 +0x6925 +0x6926 +0x6927 +0x6928 +0x6929 +0x692A +0x692B +0x692C +0x692D +0x692E +0x692F +0x6930 Ҭ +0x6931 +0x6932 +0x6933 +0x6934 +0x6935 +0x6936 +0x6937 +0x6938 +0x6939 +0x693A +0x693B +0x693C +0x693D +0x693E +0x693F +0x6940 +0x6941 +0x6942 +0x6943 +0x6944 +0x6945 +0x6946 +0x6947 +0x6948 +0x6949 +0x694A +0x694B +0x694C +0x694D +0x694E +0x694F +0x6950 +0x6951 +0x6952 +0x6953 +0x6954 Ш +0x6955 +0x6956 +0x6957 +0x6958 +0x6959 +0x695A +0x695B +0x695C +0x695D +0x695E +0x695F +0x6960 +0x6961 @ +0x6962 A +0x6963 +0x6964 B +0x6965 C +0x6966 +0x6967 D +0x6968 E +0x6969 F +0x696A G +0x696B +0x696C H +0x696D I +0x696E +0x696F J +0x6970 K +0x6971 +0x6972 L +0x6973 M +0x6974 N +0x6975 O +0x6976 P +0x6977 +0x6978 +0x6979 +0x697A Q +0x697B R +0x697C ¥ +0x697D S +0x697E T +0x697F U +0x6980 +0x6981 V +0x6982 +0x6983 W +0x6984 +0x6985 X +0x6986 +0x6987 +0x6988 +0x6989 +0x698A Y +0x698B Z +0x698C [ +0x698D +0x698E \ +0x698F ] +0x6990 ^ +0x6991 _ +0x6992 ` +0x6993 a +0x6994 +0x6995 +0x6996 b +0x6997 c +0x6998 +0x6999 d +0x699A e +0x699B +0x699C +0x699D f +0x699E g +0x699F h +0x69A0 i +0x69A1 j +0x69A2 k +0x69A3 l +0x69A4 m +0x69A5 n +0x69A6 o +0x69A7 +0x69A8 ե +0x69A9 p +0x69AA q +0x69AB +0x69AC r +0x69AD +0x69AE s +0x69AF t +0x69B0 u +0x69B1 +0x69B2 v +0x69B3 w +0x69B4 +0x69B5 x +0x69B6 y +0x69B7 ȶ +0x69B8 z +0x69B9 { +0x69BA | +0x69BB +0x69BC } +0x69BD ~ +0x69BE +0x69BF +0x69C0 +0x69C1 +0x69C2 +0x69C3 +0x69C4 +0x69C5 +0x69C6 +0x69C7 +0x69C8 +0x69C9 +0x69CA +0x69CB +0x69CC +0x69CD +0x69CE +0x69CF +0x69D0 +0x69D1 +0x69D2 +0x69D3 +0x69D4 +0x69D5 +0x69D6 +0x69D7 +0x69D8 +0x69D9 +0x69DA +0x69DB +0x69DC +0x69DD +0x69DE +0x69DF +0x69E0 +0x69E1 +0x69E2 +0x69E3 +0x69E4 +0x69E5 +0x69E6 +0x69E7 +0x69E8 +0x69E9 +0x69EA +0x69EB +0x69EC +0x69ED +0x69EE +0x69EF +0x69F0 +0x69F1 +0x69F2 +0x69F3 +0x69F4 +0x69F5 +0x69F6 +0x69F7 +0x69F8 +0x69F9 +0x69FA +0x69FB +0x69FC +0x69FD +0x69FE +0x69FF +0x6A00 +0x6A01 +0x6A02 +0x6A03 +0x6A04 +0x6A05 +0x6A06 +0x6A07 +0x6A08 +0x6A09 +0x6A0A +0x6A0B +0x6A0C +0x6A0D +0x6A0E +0x6A0F +0x6A10 +0x6A11 +0x6A12 +0x6A13 +0x6A14 +0x6A15 +0x6A16 +0x6A17 +0x6A18 +0x6A19 +0x6A1A +0x6A1B +0x6A1C +0x6A1D +0x6A1E +0x6A1F +0x6A20 +0x6A21 ģ +0x6A22 +0x6A23 +0x6A24 +0x6A25 +0x6A26 +0x6A27 +0x6A28 +0x6A29 +0x6A2A +0x6A2B +0x6A2C +0x6A2D +0x6A2E +0x6A2F +0x6A30 +0x6A31 ӣ +0x6A32 +0x6A33 +0x6A34 +0x6A35 +0x6A36 +0x6A37 +0x6A38 +0x6A39 +0x6A3A +0x6A3B +0x6A3C +0x6A3D +0x6A3E +0x6A3F +0x6A40 +0x6A41 +0x6A42 +0x6A43 +0x6A44 +0x6A45 +0x6A46 +0x6A47 +0x6A48 +0x6A49 +0x6A4A +0x6A4B +0x6A4C +0x6A4D +0x6A4E +0x6A4F +0x6A50 +0x6A51 +0x6A52 +0x6A53 +0x6A54 +0x6A55 +0x6A56 +0x6A57 +0x6A58 +0x6A59 +0x6A5A +0x6A5B +0x6A5C @ +0x6A5D A +0x6A5E B +0x6A5F C +0x6A60 D +0x6A61 +0x6A62 E +0x6A63 F +0x6A64 G +0x6A65 +0x6A66 H +0x6A67 I +0x6A68 J +0x6A69 K +0x6A6A L +0x6A6B M +0x6A6C N +0x6A6D O +0x6A6E P +0x6A6F Q +0x6A70 R +0x6A71 +0x6A72 S +0x6A73 T +0x6A74 U +0x6A75 V +0x6A76 W +0x6A77 X +0x6A78 Y +0x6A79 +0x6A7A Z +0x6A7B [ +0x6A7C +0x6A7D \ +0x6A7E ] +0x6A7F ^ +0x6A80 ̴ +0x6A81 _ +0x6A82 ` +0x6A83 a +0x6A84 ϭ +0x6A85 b +0x6A86 c +0x6A87 d +0x6A88 e +0x6A89 f +0x6A8A g +0x6A8B h +0x6A8C i +0x6A8D j +0x6A8E +0x6A8F k +0x6A90 +0x6A91 +0x6A92 l +0x6A93 m +0x6A94 n +0x6A95 o +0x6A96 p +0x6A97 +0x6A98 q +0x6A99 r +0x6A9A s +0x6A9B t +0x6A9C u +0x6A9D v +0x6A9E w +0x6A9F x +0x6AA0 +0x6AA1 y +0x6AA2 z +0x6AA3 { +0x6AA4 | +0x6AA5 } +0x6AA6 ~ +0x6AA7 +0x6AA8 +0x6AA9 +0x6AAA +0x6AAB +0x6AAC +0x6AAD +0x6AAE +0x6AAF +0x6AB0 +0x6AB1 +0x6AB2 +0x6AB3 +0x6AB4 +0x6AB5 +0x6AB6 +0x6AB7 +0x6AB8 +0x6AB9 +0x6ABA +0x6ABB +0x6ABC +0x6ABD +0x6ABE +0x6ABF +0x6AC0 +0x6AC1 +0x6AC2 +0x6AC3 +0x6AC4 +0x6AC5 +0x6AC6 +0x6AC7 +0x6AC8 +0x6AC9 +0x6ACA +0x6ACB +0x6ACC +0x6ACD +0x6ACE +0x6ACF +0x6AD0 +0x6AD1 +0x6AD2 +0x6AD3 +0x6AD4 +0x6AD5 +0x6AD6 +0x6AD7 +0x6AD8 +0x6AD9 +0x6ADA +0x6ADB +0x6ADC +0x6ADD +0x6ADE +0x6ADF +0x6AE0 +0x6AE1 +0x6AE2 +0x6AE3 +0x6AE4 +0x6AE5 +0x6AE6 +0x6AE7 +0x6AE8 +0x6AE9 +0x6AEA +0x6AEB +0x6AEC +0x6AED +0x6AEE +0x6AEF +0x6AF0 +0x6AF1 +0x6AF2 +0x6AF3 +0x6AF4 +0x6AF5 +0x6AF6 +0x6AF7 +0x6AF8 +0x6AF9 +0x6AFA +0x6AFB +0x6AFC +0x6AFD +0x6AFE +0x6AFF +0x6B00 +0x6B01 +0x6B02 +0x6B03 +0x6B04 +0x6B05 +0x6B06 +0x6B07 +0x6B08 +0x6B09 +0x6B0A +0x6B0B +0x6B0C +0x6B0D +0x6B0E +0x6B0F +0x6B10 +0x6B11 +0x6B12 +0x6B13 +0x6B14 +0x6B15 +0x6B16 +0x6B17 +0x6B18 +0x6B19 +0x6B1A +0x6B1B +0x6B1C +0x6B1D +0x6B1E +0x6B1F +0x6B20 Ƿ +0x6B21 +0x6B22 +0x6B23 +0x6B24 +0x6B25 +0x6B26 +0x6B27 ŷ +0x6B28 +0x6B29 +0x6B2A +0x6B2B +0x6B2C +0x6B2D +0x6B2E +0x6B2F @ +0x6B30 A +0x6B31 B +0x6B32 +0x6B33 C +0x6B34 D +0x6B35 E +0x6B36 F +0x6B37 +0x6B38 G +0x6B39 +0x6B3A +0x6B3B H +0x6B3C I +0x6B3D J +0x6B3E +0x6B3F K +0x6B40 L +0x6B41 M +0x6B42 N +0x6B43 +0x6B44 O +0x6B45 P +0x6B46 +0x6B47 Ъ +0x6B48 Q +0x6B49 Ǹ +0x6B4A R +0x6B4B S +0x6B4C +0x6B4D T +0x6B4E U +0x6B4F V +0x6B50 W +0x6B51 X +0x6B52 Y +0x6B53 Z +0x6B54 [ +0x6B55 \ +0x6B56 ] +0x6B57 ^ +0x6B58 _ +0x6B59 +0x6B5A ` +0x6B5B a +0x6B5C b +0x6B5D c +0x6B5E d +0x6B5F e +0x6B60 f +0x6B61 g +0x6B62 ֹ +0x6B63 +0x6B64 +0x6B65 +0x6B66 +0x6B67 +0x6B68 h +0x6B69 i +0x6B6A +0x6B6B j +0x6B6C k +0x6B6D l +0x6B6E m +0x6B6F n +0x6B70 o +0x6B71 p +0x6B72 q +0x6B73 r +0x6B74 s +0x6B75 t +0x6B76 u +0x6B77 v +0x6B78 w +0x6B79 +0x6B7A x +0x6B7B +0x6B7C +0x6B7D y +0x6B7E z +0x6B7F { +0x6B80 | +0x6B81 +0x6B82 +0x6B83 +0x6B84 +0x6B85 } +0x6B86 +0x6B87 +0x6B88 ~ +0x6B89 ѳ +0x6B8A +0x6B8B +0x6B8C +0x6B8D +0x6B8E +0x6B8F +0x6B90 +0x6B91 +0x6B92 +0x6B93 +0x6B94 +0x6B95 +0x6B96 ֳ +0x6B97 +0x6B98 +0x6B99 +0x6B9A +0x6B9B +0x6B9C +0x6B9D +0x6B9E +0x6B9F +0x6BA0 +0x6BA1 +0x6BA2 +0x6BA3 +0x6BA4 +0x6BA5 +0x6BA6 +0x6BA7 +0x6BA8 +0x6BA9 +0x6BAA +0x6BAB +0x6BAC +0x6BAD +0x6BAE +0x6BAF +0x6BB0 +0x6BB1 +0x6BB2 +0x6BB3 +0x6BB4 Ź +0x6BB5 +0x6BB6 +0x6BB7 +0x6BB8 +0x6BB9 +0x6BBA +0x6BBB +0x6BBC +0x6BBD +0x6BBE +0x6BBF +0x6BC0 +0x6BC1 +0x6BC2 +0x6BC3 +0x6BC4 +0x6BC5 +0x6BC6 +0x6BC7 +0x6BC8 +0x6BC9 +0x6BCA +0x6BCB +0x6BCC +0x6BCD ĸ +0x6BCE +0x6BCF ÿ +0x6BD0 +0x6BD1 +0x6BD2 +0x6BD3 ع +0x6BD4 +0x6BD5 +0x6BD6 +0x6BD7 +0x6BD8 +0x6BD9 +0x6BDA +0x6BDB ë +0x6BDC +0x6BDD +0x6BDE +0x6BDF +0x6BE0 +0x6BE1 ձ +0x6BE2 +0x6BE3 +0x6BE4 +0x6BE5 +0x6BE6 +0x6BE7 +0x6BE8 +0x6BE9 +0x6BEA +0x6BEB +0x6BEC +0x6BED +0x6BEE +0x6BEF ̺ +0x6BF0 +0x6BF1 +0x6BF2 +0x6BF3 +0x6BF4 +0x6BF5 +0x6BF6 +0x6BF7 +0x6BF8 +0x6BF9 +0x6BFA +0x6BFB +0x6BFC +0x6BFD +0x6BFE +0x6BFF +0x6C00 +0x6C01 +0x6C02 +0x6C03 +0x6C04 +0x6C05 +0x6C06 +0x6C07 +0x6C08 +0x6C09 +0x6C0A +0x6C0B +0x6C0C +0x6C0D +0x6C0E +0x6C0F +0x6C10 ص +0x6C11 +0x6C12 +0x6C13 å +0x6C14 +0x6C15 +0x6C16 +0x6C17 +0x6C18 +0x6C19 +0x6C1A +0x6C1B +0x6C1C +0x6C1D +0x6C1E +0x6C1F +0x6C20 +0x6C21 +0x6C22 +0x6C23 +0x6C24 +0x6C25 +0x6C26 +0x6C27 +0x6C28 +0x6C29 +0x6C2A +0x6C2B +0x6C2C +0x6C2D +0x6C2E +0x6C2F +0x6C30 +0x6C31 +0x6C32 +0x6C33 +0x6C34 ˮ +0x6C35 +0x6C36 +0x6C37 +0x6C38 +0x6C39 +0x6C3A +0x6C3B +0x6C3C +0x6C3D +0x6C3E +0x6C3F +0x6C40 ͡ +0x6C41 ֭ +0x6C42 +0x6C43 +0x6C44 +0x6C45 +0x6C46 +0x6C47 +0x6C48 +0x6C49 +0x6C4A +0x6C4B +0x6C4C +0x6C4D +0x6C4E +0x6C4F +0x6C50 ϫ +0x6C51 +0x6C52 +0x6C53 +0x6C54 +0x6C55 +0x6C56 +0x6C57 +0x6C58 +0x6C59 @ +0x6C5A A +0x6C5B Ѵ +0x6C5C +0x6C5D +0x6C5E +0x6C5F +0x6C60 +0x6C61 +0x6C62 B +0x6C63 C +0x6C64 +0x6C65 D +0x6C66 E +0x6C67 F +0x6C68 +0x6C69 +0x6C6A +0x6C6B G +0x6C6C H +0x6C6D I +0x6C6E J +0x6C6F K +0x6C70 ̭ +0x6C71 L +0x6C72 +0x6C73 M +0x6C74 +0x6C75 N +0x6C76 +0x6C77 O +0x6C78 P +0x6C79 +0x6C7A Q +0x6C7B R +0x6C7C S +0x6C7D +0x6C7E +0x6C7F T +0x6C80 U +0x6C81 +0x6C82 +0x6C83 +0x6C84 V +0x6C85 +0x6C86 +0x6C87 W +0x6C88 +0x6C89 +0x6C8A X +0x6C8B Y +0x6C8C +0x6C8D Z +0x6C8E [ +0x6C8F +0x6C90 +0x6C91 \ +0x6C92 ] +0x6C93 +0x6C94 +0x6C95 ^ +0x6C96 _ +0x6C97 ` +0x6C98 a +0x6C99 ɳ +0x6C9A b +0x6C9B +0x6C9C c +0x6C9D d +0x6C9E e +0x6C9F +0x6CA0 f +0x6CA1 û +0x6CA2 g +0x6CA3 +0x6CA4 Ž +0x6CA5 +0x6CA6 +0x6CA7 +0x6CA8 h +0x6CA9 +0x6CAA +0x6CAB ĭ +0x6CAC i +0x6CAD +0x6CAE +0x6CAF j +0x6CB0 k +0x6CB1 +0x6CB2 +0x6CB3 +0x6CB4 l +0x6CB5 m +0x6CB6 n +0x6CB7 o +0x6CB8 +0x6CB9 +0x6CBA p +0x6CBB +0x6CBC +0x6CBD +0x6CBE մ +0x6CBF +0x6CC0 q +0x6CC1 r +0x6CC2 s +0x6CC3 t +0x6CC4 й +0x6CC5 +0x6CC6 u +0x6CC7 v +0x6CC8 w +0x6CC9 Ȫ +0x6CCA +0x6CCB x +0x6CCC +0x6CCD y +0x6CCE z +0x6CCF { +0x6CD0 +0x6CD1 | +0x6CD2 } +0x6CD3 +0x6CD4 +0x6CD5 +0x6CD6 +0x6CD7 +0x6CD8 ~ +0x6CD9 +0x6CDA +0x6CDB +0x6CDC +0x6CDD +0x6CDE Ţ +0x6CDF +0x6CE0 +0x6CE1 +0x6CE2 +0x6CE3 +0x6CE4 +0x6CE5 +0x6CE6 +0x6CE7 +0x6CE8 ע +0x6CE9 +0x6CEA +0x6CEB +0x6CEC +0x6CED +0x6CEE +0x6CEF +0x6CF0 ̩ +0x6CF1 +0x6CF2 +0x6CF3 Ӿ +0x6CF4 +0x6CF5 +0x6CF6 +0x6CF7 +0x6CF8 +0x6CF9 +0x6CFA +0x6CFB к +0x6CFC +0x6CFD +0x6CFE +0x6CFF +0x6D00 +0x6D01 +0x6D02 +0x6D03 +0x6D04 +0x6D05 +0x6D06 +0x6D07 +0x6D08 +0x6D09 +0x6D0A +0x6D0B +0x6D0C +0x6D0D +0x6D0E +0x6D0F +0x6D10 +0x6D11 +0x6D12 +0x6D13 +0x6D14 +0x6D15 +0x6D16 +0x6D17 ϴ +0x6D18 +0x6D19 +0x6D1A +0x6D1B +0x6D1C +0x6D1D +0x6D1E +0x6D1F +0x6D20 +0x6D21 +0x6D22 +0x6D23 +0x6D24 +0x6D25 +0x6D26 +0x6D27 +0x6D28 +0x6D29 +0x6D2A +0x6D2B +0x6D2C +0x6D2D +0x6D2E +0x6D2F +0x6D30 +0x6D31 +0x6D32 +0x6D33 +0x6D34 +0x6D35 +0x6D36 +0x6D37 +0x6D38 +0x6D39 +0x6D3A +0x6D3B +0x6D3C +0x6D3D Ǣ +0x6D3E +0x6D3F +0x6D40 +0x6D41 +0x6D42 +0x6D43 +0x6D44 +0x6D45 dz +0x6D46 +0x6D47 +0x6D48 +0x6D49 +0x6D4A +0x6D4B +0x6D4C +0x6D4D +0x6D4E +0x6D4F +0x6D50 +0x6D51 +0x6D52 +0x6D53 Ũ +0x6D54 +0x6D55 +0x6D56 +0x6D57 +0x6D58 +0x6D59 +0x6D5A +0x6D5B +0x6D5C +0x6D5D +0x6D5E +0x6D5F +0x6D60 +0x6D61 +0x6D62 +0x6D63 +0x6D64 +0x6D65 +0x6D66 +0x6D67 +0x6D68 +0x6D69 +0x6D6A +0x6D6B +0x6D6C +0x6D6D +0x6D6E +0x6D6F +0x6D70 +0x6D71 +0x6D72 +0x6D73 +0x6D74 ԡ +0x6D75 +0x6D76 +0x6D77 +0x6D78 +0x6D79 +0x6D7A +0x6D7B +0x6D7C +0x6D7D +0x6D7E +0x6D7F +0x6D80 +0x6D81 +0x6D82 Ϳ +0x6D83 +0x6D84 +0x6D85 +0x6D86 +0x6D87 +0x6D88 +0x6D89 +0x6D8A +0x6D8B +0x6D8C ӿ +0x6D8D +0x6D8E +0x6D8F +0x6D90 +0x6D91 +0x6D92 +0x6D93 +0x6D94 +0x6D95 +0x6D96 +0x6D97 +0x6D98 +0x6D99 +0x6D9A +0x6D9B +0x6D9C +0x6D9D +0x6D9E +0x6D9F +0x6DA0 +0x6DA1 +0x6DA2 +0x6DA3 +0x6DA4 +0x6DA5 +0x6DA6 +0x6DA7 +0x6DA8 +0x6DA9 ɬ +0x6DAA +0x6DAB +0x6DAC +0x6DAD +0x6DAE +0x6DAF +0x6DB0 +0x6DB1 +0x6DB2 Һ +0x6DB3 +0x6DB4 +0x6DB5 +0x6DB6 +0x6DB7 +0x6DB8 +0x6DB9 +0x6DBA +0x6DBB +0x6DBC +0x6DBD +0x6DBE +0x6DBF +0x6DC0 +0x6DC1 +0x6DC2 +0x6DC3 +0x6DC4 +0x6DC5 +0x6DC6 +0x6DC7 +0x6DC8 +0x6DC9 +0x6DCA +0x6DCB +0x6DCC +0x6DCD @ +0x6DCE A +0x6DCF B +0x6DD0 C +0x6DD1 +0x6DD2 D +0x6DD3 E +0x6DD4 F +0x6DD5 G +0x6DD6 +0x6DD7 H +0x6DD8 +0x6DD9 +0x6DDA I +0x6DDB J +0x6DDC K +0x6DDD +0x6DDE +0x6DDF L +0x6DE0 +0x6DE1 +0x6DE2 M +0x6DE3 N +0x6DE4 +0x6DE5 O +0x6DE6 +0x6DE7 P +0x6DE8 Q +0x6DE9 R +0x6DEA S +0x6DEB +0x6DEC +0x6DED T +0x6DEE +0x6DEF U +0x6DF0 V +0x6DF1 +0x6DF2 W +0x6DF3 +0x6DF4 X +0x6DF5 Y +0x6DF6 Z +0x6DF7 +0x6DF8 [ +0x6DF9 +0x6DFA \ +0x6DFB +0x6DFC +0x6DFD ] +0x6DFE ^ +0x6DFF _ +0x6E00 ` +0x6E01 a +0x6E02 b +0x6E03 c +0x6E04 d +0x6E05 +0x6E06 e +0x6E07 f +0x6E08 g +0x6E09 h +0x6E0A Ԩ +0x6E0B i +0x6E0C +0x6E0D +0x6E0E +0x6E0F j +0x6E10 +0x6E11 +0x6E12 k +0x6E13 l +0x6E14 +0x6E15 m +0x6E16 +0x6E17 +0x6E18 n +0x6E19 o +0x6E1A +0x6E1B p +0x6E1C q +0x6E1D +0x6E1E r +0x6E1F s +0x6E20 +0x6E21 +0x6E22 t +0x6E23 +0x6E24 +0x6E25 +0x6E26 u +0x6E27 v +0x6E28 w +0x6E29 +0x6E2A x +0x6E2B +0x6E2C y +0x6E2D μ +0x6E2E z +0x6E2F +0x6E30 { +0x6E31 | +0x6E32 +0x6E33 } +0x6E34 +0x6E35 ~ +0x6E36 +0x6E37 +0x6E38 +0x6E39 +0x6E3A +0x6E3B +0x6E3C +0x6E3D +0x6E3E +0x6E3F +0x6E40 +0x6E41 +0x6E42 +0x6E43 +0x6E44 +0x6E45 +0x6E46 +0x6E47 +0x6E48 +0x6E49 +0x6E4A +0x6E4B +0x6E4C +0x6E4D +0x6E4E +0x6E4F +0x6E50 +0x6E51 +0x6E52 +0x6E53 +0x6E54 +0x6E55 +0x6E56 +0x6E57 +0x6E58 +0x6E59 +0x6E5A +0x6E5B տ +0x6E5C +0x6E5D +0x6E5E +0x6E5F +0x6E60 +0x6E61 +0x6E62 +0x6E63 +0x6E64 +0x6E65 +0x6E66 +0x6E67 +0x6E68 +0x6E69 +0x6E6A +0x6E6B +0x6E6C +0x6E6D +0x6E6E +0x6E6F +0x6E70 +0x6E71 +0x6E72 +0x6E73 +0x6E74 +0x6E75 +0x6E76 +0x6E77 +0x6E78 +0x6E79 +0x6E7A +0x6E7B +0x6E7C +0x6E7D +0x6E7E +0x6E7F ʪ +0x6E80 +0x6E81 +0x6E82 +0x6E83 +0x6E84 +0x6E85 +0x6E86 +0x6E87 +0x6E88 +0x6E89 +0x6E8A +0x6E8B +0x6E8C +0x6E8D +0x6E8E +0x6E8F +0x6E90 Դ +0x6E91 +0x6E92 +0x6E93 +0x6E94 +0x6E95 +0x6E96 +0x6E97 +0x6E98 +0x6E99 +0x6E9A +0x6E9B +0x6E9C +0x6E9D +0x6E9E +0x6E9F +0x6EA0 +0x6EA1 +0x6EA2 +0x6EA3 +0x6EA4 +0x6EA5 +0x6EA6 +0x6EA7 +0x6EA8 +0x6EA9 +0x6EAA Ϫ +0x6EAB +0x6EAC +0x6EAD +0x6EAE +0x6EAF +0x6EB0 +0x6EB1 +0x6EB2 +0x6EB3 +0x6EB4 +0x6EB5 +0x6EB6 +0x6EB7 +0x6EB8 +0x6EB9 +0x6EBA +0x6EBB +0x6EBC +0x6EBD +0x6EBE +0x6EBF +0x6EC0 +0x6EC1 +0x6EC2 +0x6EC3 +0x6EC4 +0x6EC5 +0x6EC6 +0x6EC7 +0x6EC8 +0x6EC9 +0x6ECA +0x6ECB +0x6ECC +0x6ECD +0x6ECE +0x6ECF +0x6ED0 +0x6ED1 +0x6ED2 +0x6ED3 +0x6ED4 +0x6ED5 +0x6ED6 +0x6ED7 +0x6ED8 +0x6ED9 +0x6EDA +0x6EDB +0x6EDC +0x6EDD +0x6EDE +0x6EDF +0x6EE0 +0x6EE1 +0x6EE2 +0x6EE3 +0x6EE4 +0x6EE5 +0x6EE6 +0x6EE7 +0x6EE8 +0x6EE9 ̲ +0x6EEA +0x6EEB +0x6EEC +0x6EED +0x6EEE +0x6EEF +0x6EF0 @ +0x6EF1 A +0x6EF2 B +0x6EF3 C +0x6EF4 +0x6EF5 D +0x6EF6 E +0x6EF7 F +0x6EF8 G +0x6EF9 +0x6EFA H +0x6EFB I +0x6EFC J +0x6EFD K +0x6EFE L +0x6EFF M +0x6F00 N +0x6F01 O +0x6F02 Ư +0x6F03 P +0x6F04 Q +0x6F05 R +0x6F06 +0x6F07 S +0x6F08 T +0x6F09 +0x6F0A U +0x6F0B V +0x6F0C W +0x6F0D X +0x6F0E Y +0x6F0F © +0x6F10 Z +0x6F11 [ +0x6F12 \ +0x6F13 +0x6F14 +0x6F15 +0x6F16 ] +0x6F17 ^ +0x6F18 _ +0x6F19 ` +0x6F1A a +0x6F1B b +0x6F1C c +0x6F1D d +0x6F1E e +0x6F1F f +0x6F20 Į +0x6F21 g +0x6F22 h +0x6F23 i +0x6F24 +0x6F25 j +0x6F26 k +0x6F27 l +0x6F28 m +0x6F29 +0x6F2A +0x6F2B +0x6F2C n +0x6F2D +0x6F2E o +0x6F2F +0x6F30 p +0x6F31 +0x6F32 q +0x6F33 +0x6F34 r +0x6F35 s +0x6F36 +0x6F37 t +0x6F38 u +0x6F39 v +0x6F3A w +0x6F3B x +0x6F3C y +0x6F3D z +0x6F3E +0x6F3F { +0x6F40 | +0x6F41 } +0x6F42 ~ +0x6F43 +0x6F44 +0x6F45 +0x6F46 +0x6F47 +0x6F48 +0x6F49 +0x6F4A +0x6F4B +0x6F4C +0x6F4D Ϋ +0x6F4E +0x6F4F +0x6F50 +0x6F51 +0x6F52 +0x6F53 +0x6F54 +0x6F55 +0x6F56 +0x6F57 +0x6F58 +0x6F59 +0x6F5A +0x6F5B +0x6F5C DZ +0x6F5D +0x6F5E º +0x6F5F +0x6F60 +0x6F61 +0x6F62 +0x6F63 +0x6F64 +0x6F65 +0x6F66 +0x6F67 +0x6F68 +0x6F69 +0x6F6A +0x6F6B +0x6F6C +0x6F6D ̶ +0x6F6E +0x6F6F +0x6F70 +0x6F71 +0x6F72 +0x6F73 +0x6F74 +0x6F75 +0x6F76 +0x6F77 +0x6F78 +0x6F79 +0x6F7A +0x6F7B +0x6F7C +0x6F7D +0x6F7E +0x6F7F +0x6F80 +0x6F81 +0x6F82 +0x6F83 +0x6F84 +0x6F85 +0x6F86 +0x6F87 +0x6F88 +0x6F89 +0x6F8A +0x6F8B +0x6F8C +0x6F8D +0x6F8E +0x6F8F +0x6F90 +0x6F91 +0x6F92 +0x6F93 +0x6F94 +0x6F95 +0x6F96 +0x6F97 +0x6F98 +0x6F99 +0x6F9A +0x6F9B +0x6F9C +0x6F9D +0x6F9E +0x6F9F +0x6FA0 +0x6FA1 +0x6FA2 +0x6FA3 +0x6FA4 +0x6FA5 +0x6FA6 +0x6FA7 +0x6FA8 +0x6FA9 +0x6FAA +0x6FAB +0x6FAC +0x6FAD +0x6FAE +0x6FAF +0x6FB0 +0x6FB1 +0x6FB2 +0x6FB3 +0x6FB4 +0x6FB5 +0x6FB6 +0x6FB7 +0x6FB8 +0x6FB9 +0x6FBA +0x6FBB +0x6FBC +0x6FBD +0x6FBE +0x6FBF +0x6FC0 +0x6FC1 +0x6FC2 +0x6FC3 +0x6FC4 +0x6FC5 +0x6FC6 +0x6FC7 +0x6FC8 +0x6FC9 +0x6FCA +0x6FCB +0x6FCC +0x6FCD +0x6FCE +0x6FCF +0x6FD0 +0x6FD1 +0x6FD2 +0x6FD3 +0x6FD4 +0x6FD5 +0x6FD6 +0x6FD7 +0x6FD8 +0x6FD9 +0x6FDA +0x6FDB +0x6FDC +0x6FDD +0x6FDE +0x6FDF +0x6FE0 +0x6FE1 +0x6FE2 +0x6FE3 +0x6FE4 +0x6FE5 +0x6FE6 @ +0x6FE7 A +0x6FE8 B +0x6FE9 C +0x6FEA D +0x6FEB E +0x6FEC F +0x6FED G +0x6FEE +0x6FEF +0x6FF0 H +0x6FF1 I +0x6FF2 J +0x6FF3 K +0x6FF4 L +0x6FF5 M +0x6FF6 N +0x6FF7 O +0x6FF8 P +0x6FF9 Q +0x6FFA R +0x6FFB S +0x6FFC T +0x6FFD U +0x6FFE V +0x6FFF W +0x7000 X +0x7001 Y +0x7002 Z +0x7003 [ +0x7004 \ +0x7005 ] +0x7006 ^ +0x7007 _ +0x7008 ` +0x7009 a +0x700A b +0x700B c +0x700C d +0x700D e +0x700E f +0x700F g +0x7010 h +0x7011 +0x7012 i +0x7013 j +0x7014 k +0x7015 l +0x7016 m +0x7017 n +0x7018 o +0x7019 p +0x701A +0x701B +0x701C q +0x701D r +0x701E s +0x701F t +0x7020 u +0x7021 v +0x7022 w +0x7023 +0x7024 x +0x7025 y +0x7026 z +0x7027 { +0x7028 | +0x7029 } +0x702A ~ +0x702B +0x702C +0x702D +0x702E +0x702F +0x7030 +0x7031 +0x7032 +0x7033 +0x7034 +0x7035 +0x7036 +0x7037 +0x7038 +0x7039 +0x703A +0x703B +0x703C +0x703D +0x703E +0x703F +0x7040 +0x7041 +0x7042 +0x7043 +0x7044 +0x7045 +0x7046 +0x7047 +0x7048 +0x7049 +0x704A +0x704B +0x704C +0x704D +0x704E +0x704F +0x7050 +0x7051 +0x7052 +0x7053 +0x7054 +0x7055 +0x7056 +0x7057 +0x7058 +0x7059 +0x705A +0x705B +0x705C +0x705D +0x705E +0x705F +0x7060 +0x7061 +0x7062 +0x7063 +0x7064 +0x7065 +0x7066 +0x7067 +0x7068 +0x7069 +0x706A +0x706B +0x706C +0x706D +0x706E +0x706F +0x7070 +0x7071 +0x7072 +0x7073 +0x7074 +0x7075 +0x7076 +0x7077 +0x7078 +0x7079 +0x707A +0x707B +0x707C +0x707D +0x707E +0x707F +0x7080 +0x7081 +0x7082 +0x7083 +0x7084 +0x7085 +0x7086 +0x7087 +0x7088 +0x7089 ¯ +0x708A +0x708B +0x708C +0x708D +0x708E +0x708F +0x7090 +0x7091 +0x7092 +0x7093 +0x7094 Ȳ +0x7095 +0x7096 +0x7097 +0x7098 +0x7099 +0x709A +0x709B +0x709C +0x709D +0x709E +0x709F +0x70A0 +0x70A1 +0x70A2 +0x70A3 +0x70A4 +0x70A5 +0x70A6 +0x70A7 +0x70A8 +0x70A9 +0x70AA +0x70AB +0x70AC +0x70AD ̿ +0x70AE +0x70AF +0x70B0 +0x70B1 +0x70B2 +0x70B3 +0x70B4 +0x70B5 +0x70B6 +0x70B7 +0x70B8 ը +0x70B9 +0x70BA +0x70BB +0x70BC +0x70BD +0x70BE +0x70BF +0x70C0 +0x70C1 ˸ +0x70C2 +0x70C3 +0x70C4 +0x70C5 +0x70C6 +0x70C7 +0x70C8 +0x70C9 +0x70CA +0x70CB +0x70CC +0x70CD +0x70CE +0x70CF +0x70D0 +0x70D1 +0x70D2 +0x70D3 +0x70D4 +0x70D5 +0x70D6 +0x70D7 +0x70D8 +0x70D9 +0x70DA +0x70DB +0x70DC @ +0x70DD A +0x70DE B +0x70DF +0x70E0 C +0x70E1 D +0x70E2 E +0x70E3 F +0x70E4 +0x70E5 G +0x70E6 +0x70E7 +0x70E8 +0x70E9 +0x70EA H +0x70EB +0x70EC +0x70ED +0x70EE I +0x70EF ϩ +0x70F0 J +0x70F1 K +0x70F2 L +0x70F3 M +0x70F4 N +0x70F5 O +0x70F6 P +0x70F7 +0x70F8 Q +0x70F9 +0x70FA R +0x70FB S +0x70FC T +0x70FD +0x70FE U +0x70FF V +0x7100 W +0x7101 X +0x7102 Y +0x7103 Z +0x7104 [ +0x7105 \ +0x7106 ] +0x7107 ^ +0x7108 _ +0x7109 +0x710A +0x710B ` +0x710C a +0x710D b +0x710E c +0x710F d +0x7110 +0x7111 e +0x7112 f +0x7113 +0x7114 g +0x7115 +0x7116 +0x7117 h +0x7118 +0x7119 +0x711A +0x711B i +0x711C j +0x711D k +0x711E l +0x711F m +0x7120 n +0x7121 o +0x7122 p +0x7123 q +0x7124 r +0x7125 s +0x7126 +0x7127 t +0x7128 u +0x7129 v +0x712A w +0x712B x +0x712C y +0x712D z +0x712E { +0x712F +0x7130 +0x7131 +0x7132 | +0x7133 } +0x7134 ~ +0x7135 +0x7136 Ȼ +0x7137 +0x7138 +0x7139 +0x713A +0x713B +0x713C +0x713D +0x713E +0x713F +0x7140 +0x7141 +0x7142 +0x7143 +0x7144 +0x7145 +0x7146 +0x7147 +0x7148 +0x7149 +0x714A +0x714B +0x714C +0x714D +0x714E +0x714F +0x7150 +0x7151 +0x7152 +0x7153 +0x7154 +0x7155 +0x7156 +0x7157 +0x7158 +0x7159 +0x715A +0x715B +0x715C +0x715D +0x715E ɷ +0x715F +0x7160 +0x7161 +0x7162 +0x7163 +0x7164 ú +0x7165 +0x7166 +0x7167 +0x7168 +0x7169 +0x716A +0x716B +0x716C +0x716D +0x716E +0x716F +0x7170 +0x7171 +0x7172 +0x7173 +0x7174 +0x7175 +0x7176 +0x7177 +0x7178 +0x7179 +0x717A +0x717B +0x717C +0x717D ɿ +0x717E +0x717F +0x7180 +0x7181 +0x7182 +0x7183 +0x7184 Ϩ +0x7185 +0x7186 +0x7187 +0x7188 +0x7189 +0x718A +0x718B +0x718C +0x718D +0x718E +0x718F Ѭ +0x7190 +0x7191 +0x7192 +0x7193 +0x7194 +0x7195 +0x7196 +0x7197 +0x7198 +0x7199 +0x719A +0x719B +0x719C +0x719D +0x719E +0x719F +0x71A0 +0x71A1 +0x71A2 +0x71A3 +0x71A4 +0x71A5 +0x71A6 +0x71A7 +0x71A8 +0x71A9 +0x71AA +0x71AB +0x71AC +0x71AD +0x71AE +0x71AF +0x71B0 +0x71B1 +0x71B2 +0x71B3 +0x71B4 +0x71B5 +0x71B6 +0x71B7 +0x71B8 +0x71B9 +0x71BA +0x71BB +0x71BC +0x71BD +0x71BE +0x71BF +0x71C0 +0x71C1 +0x71C2 +0x71C3 ȼ +0x71C4 +0x71C5 +0x71C6 +0x71C7 +0x71C8 +0x71C9 +0x71CA +0x71CB +0x71CC +0x71CD +0x71CE +0x71CF +0x71D0 +0x71D1 +0x71D2 +0x71D3 +0x71D4 +0x71D5 +0x71D6 @ +0x71D7 A +0x71D8 B +0x71D9 C +0x71DA D +0x71DB E +0x71DC F +0x71DD G +0x71DE H +0x71DF I +0x71E0 +0x71E1 J +0x71E2 K +0x71E3 L +0x71E4 M +0x71E5 +0x71E6 N +0x71E7 +0x71E8 O +0x71E9 P +0x71EA Q +0x71EB R +0x71EC S +0x71ED T +0x71EE +0x71EF U +0x71F0 V +0x71F1 W +0x71F2 X +0x71F3 Y +0x71F4 Z +0x71F5 [ +0x71F6 \ +0x71F7 ] +0x71F8 ^ +0x71F9 +0x71FA _ +0x71FB ` +0x71FC a +0x71FD b +0x71FE c +0x71FF d +0x7200 e +0x7201 f +0x7202 g +0x7203 h +0x7204 i +0x7205 j +0x7206 +0x7207 k +0x7208 l +0x7209 m +0x720A n +0x720B o +0x720C p +0x720D q +0x720E r +0x720F s +0x7210 t +0x7211 u +0x7212 v +0x7213 w +0x7214 x +0x7215 y +0x7216 z +0x7217 { +0x7218 | +0x7219 } +0x721A ~ +0x721B +0x721C +0x721D +0x721E +0x721F +0x7220 +0x7221 +0x7222 +0x7223 +0x7224 +0x7225 +0x7226 +0x7227 +0x7228 +0x7229 +0x722A צ +0x722B +0x722C +0x722D +0x722E +0x722F +0x7230 +0x7231 +0x7232 +0x7233 +0x7234 +0x7235 +0x7236 +0x7237 ү +0x7238 +0x7239 +0x723A +0x723B س +0x723C +0x723D ˬ +0x723E +0x723F +0x7240 +0x7241 +0x7242 +0x7243 +0x7244 +0x7245 +0x7246 +0x7247 Ƭ +0x7248 +0x7249 +0x724A +0x724B +0x724C +0x724D +0x724E +0x724F +0x7250 +0x7251 +0x7252 +0x7253 +0x7254 +0x7255 +0x7256 +0x7257 +0x7258 +0x7259 +0x725A +0x725B ţ +0x725C +0x725D +0x725E +0x725F IJ +0x7260 +0x7261 ĵ +0x7262 +0x7263 +0x7264 +0x7265 +0x7266 +0x7267 +0x7268 +0x7269 +0x726A +0x726B +0x726C +0x726D +0x726E +0x726F +0x7270 +0x7271 +0x7272 +0x7273 +0x7274 +0x7275 ǣ +0x7276 +0x7277 +0x7278 +0x7279 +0x727A +0x727B +0x727C +0x727D +0x727E +0x727F +0x7280 Ϭ +0x7281 +0x7282 +0x7283 +0x7284 +0x7285 +0x7286 +0x7287 +0x7288 +0x7289 +0x728A +0x728B +0x728C +0x728D +0x728E +0x728F +0x7290 +0x7291 +0x7292 +0x7293 +0x7294 +0x7295 +0x7296 +0x7297 +0x7298 +0x7299 +0x729A +0x729B +0x729C +0x729D +0x729E +0x729F +0x72A0 +0x72A1 +0x72A2 +0x72A3 +0x72A4 +0x72A5 +0x72A6 +0x72A7 +0x72A8 +0x72A9 +0x72AA +0x72AB +0x72AC Ȯ +0x72AD +0x72AE +0x72AF +0x72B0 +0x72B1 +0x72B2 +0x72B3 +0x72B4 +0x72B5 +0x72B6 ״ +0x72B7 +0x72B8 +0x72B9 +0x72BA +0x72BB +0x72BC +0x72BD +0x72BE +0x72BF +0x72C0 +0x72C1 +0x72C2 +0x72C3 +0x72C4 +0x72C5 +0x72C6 +0x72C7 +0x72C8 +0x72C9 +0x72CA +0x72CB +0x72CC +0x72CD +0x72CE +0x72CF +0x72D0 +0x72D1 +0x72D2 +0x72D3 +0x72D4 +0x72D5 +0x72D6 +0x72D7 +0x72D8 +0x72D9 +0x72DA +0x72DB +0x72DC @ +0x72DD A +0x72DE +0x72DF B +0x72E0 +0x72E1 +0x72E2 C +0x72E3 D +0x72E4 E +0x72E5 F +0x72E6 G +0x72E7 H +0x72E8 +0x72E9 +0x72EA I +0x72EB J +0x72EC +0x72ED +0x72EE ʨ +0x72EF +0x72F0 +0x72F1 +0x72F2 +0x72F3 +0x72F4 +0x72F5 K +0x72F6 L +0x72F7 +0x72F8 +0x72F9 M +0x72FA +0x72FB +0x72FC +0x72FD N +0x72FE O +0x72FF P +0x7300 Q +0x7301 +0x7302 R +0x7303 +0x7304 S +0x7305 T +0x7306 U +0x7307 V +0x7308 W +0x7309 X +0x730A +0x730B Y +0x730C Z +0x730D [ +0x730E +0x730F \ +0x7310 ] +0x7311 ^ +0x7312 _ +0x7313 +0x7314 ` +0x7315 +0x7316 +0x7317 +0x7318 a +0x7319 b +0x731A c +0x731B +0x731C +0x731D +0x731E +0x731F d +0x7320 e +0x7321 +0x7322 +0x7323 f +0x7324 g +0x7325 +0x7326 h +0x7327 i +0x7328 j +0x7329 +0x732A +0x732B è +0x732C +0x732D k +0x732E +0x732F l +0x7330 m +0x7331 +0x7332 n +0x7333 o +0x7334 +0x7335 p +0x7336 q +0x7337 +0x7338 +0x7339 +0x733A r +0x733B s +0x733C t +0x733D u +0x733E +0x733F Գ +0x7340 v +0x7341 w +0x7342 x +0x7343 y +0x7344 z +0x7345 { +0x7346 | +0x7347 } +0x7348 ~ +0x7349 +0x734A +0x734B +0x734C +0x734D +0x734E +0x734F +0x7350 +0x7351 +0x7352 +0x7353 +0x7354 +0x7355 +0x7356 +0x7357 +0x7358 +0x7359 +0x735A +0x735B +0x735C +0x735D +0x735E +0x735F +0x7360 +0x7361 +0x7362 +0x7363 +0x7364 +0x7365 +0x7366 +0x7367 +0x7368 +0x7369 +0x736A +0x736B +0x736C +0x736D ̡ +0x736E +0x736F +0x7370 +0x7371 +0x7372 @ +0x7373 A +0x7374 B +0x7375 C +0x7376 D +0x7377 E +0x7378 F +0x7379 G +0x737A H +0x737B I +0x737C J +0x737D K +0x737E +0x737F L +0x7380 M +0x7381 N +0x7382 O +0x7383 P +0x7384 +0x7385 Q +0x7386 R +0x7387 +0x7388 S +0x7389 +0x738A T +0x738B +0x738C U +0x738D V +0x738E +0x738F W +0x7390 X +0x7391 +0x7392 Y +0x7393 Z +0x7394 [ +0x7395 \ +0x7396 +0x7397 ] +0x7398 ^ +0x7399 _ +0x739A ` +0x739B +0x739C a +0x739D b +0x739E c +0x739F +0x73A0 d +0x73A1 e +0x73A2 +0x73A3 f +0x73A4 g +0x73A5 h +0x73A6 i +0x73A7 j +0x73A8 k +0x73A9 +0x73AA l +0x73AB õ +0x73AC m +0x73AD n +0x73AE +0x73AF +0x73B0 +0x73B1 o +0x73B2 +0x73B3 +0x73B4 p +0x73B5 q +0x73B6 r +0x73B7 +0x73B8 s +0x73B9 t +0x73BA +0x73BB +0x73BC u +0x73BD v +0x73BE w +0x73BF x +0x73C0 +0x73C1 y +0x73C2 +0x73C3 z +0x73C4 { +0x73C5 | +0x73C6 } +0x73C7 ~ +0x73C8 +0x73C9 +0x73CA ɺ +0x73CB +0x73CC +0x73CD +0x73CE +0x73CF +0x73D0 +0x73D1 +0x73D2 +0x73D3 +0x73D4 +0x73D5 +0x73D6 +0x73D7 +0x73D8 +0x73D9 +0x73DA +0x73DB +0x73DC +0x73DD +0x73DE +0x73DF +0x73E0 +0x73E1 +0x73E2 +0x73E3 +0x73E4 +0x73E5 +0x73E6 +0x73E7 +0x73E8 +0x73E9 +0x73EA +0x73EB +0x73EC +0x73ED +0x73EE +0x73EF +0x73F0 +0x73F1 +0x73F2 +0x73F3 +0x73F4 +0x73F5 +0x73F6 +0x73F7 +0x73F8 @ +0x73F9 A +0x73FA B +0x73FB C +0x73FC D +0x73FD E +0x73FE F +0x73FF G +0x7400 H +0x7401 I +0x7402 J +0x7403 +0x7404 K +0x7405 +0x7406 +0x7407 L +0x7408 M +0x7409 +0x740A +0x740B N +0x740C O +0x740D P +0x740E Q +0x740F +0x7410 +0x7411 R +0x7412 S +0x7413 T +0x7414 U +0x7415 V +0x7416 W +0x7417 X +0x7418 Y +0x7419 Z +0x741A +0x741B +0x741C [ +0x741D \ +0x741E ] +0x741F ^ +0x7420 _ +0x7421 ` +0x7422 +0x7423 a +0x7424 b +0x7425 +0x7426 +0x7427 c +0x7428 +0x7429 d +0x742A +0x742B e +0x742C +0x742D f +0x742E +0x742F g +0x7430 +0x7431 h +0x7432 i +0x7433 +0x7434 +0x7435 +0x7436 +0x7437 j +0x7438 k +0x7439 l +0x743A m +0x743B n +0x743C +0x743D o +0x743E p +0x743F q +0x7440 r +0x7441 +0x7442 s +0x7443 t +0x7444 u +0x7445 v +0x7446 w +0x7447 x +0x7448 y +0x7449 z +0x744A { +0x744B | +0x744C } +0x744D ~ +0x744E +0x744F +0x7450 +0x7451 +0x7452 +0x7453 +0x7454 +0x7455 +0x7456 +0x7457 +0x7458 +0x7459 +0x745A +0x745B +0x745C +0x745D +0x745E +0x745F ɪ +0x7460 +0x7461 +0x7462 +0x7463 +0x7464 +0x7465 +0x7466 +0x7467 +0x7468 +0x7469 +0x746A +0x746B +0x746C +0x746D +0x746E +0x746F +0x7470 +0x7471 +0x7472 +0x7473 +0x7474 +0x7475 +0x7476 +0x7477 +0x7478 +0x7479 +0x747A +0x747B @ +0x747C A +0x747D B +0x747E +0x747F C +0x7480 +0x7481 +0x7482 D +0x7483 +0x7484 E +0x7485 F +0x7486 G +0x7487 +0x7488 H +0x7489 I +0x748A J +0x748B +0x748C K +0x748D L +0x748E +0x748F M +0x7490 +0x7491 N +0x7492 O +0x7493 P +0x7494 Q +0x7495 R +0x7496 S +0x7497 T +0x7498 U +0x7499 V +0x749A W +0x749B X +0x749C +0x749D Y +0x749E +0x749F Z +0x74A0 [ +0x74A1 \ +0x74A2 ] +0x74A3 ^ +0x74A4 _ +0x74A5 ` +0x74A6 a +0x74A7 +0x74A8 +0x74A9 +0x74AA b +0x74AB c +0x74AC d +0x74AD e +0x74AE f +0x74AF g +0x74B0 h +0x74B1 i +0x74B2 j +0x74B3 k +0x74B4 l +0x74B5 m +0x74B6 n +0x74B7 o +0x74B8 p +0x74B9 q +0x74BA +0x74BB r +0x74BC s +0x74BD t +0x74BE u +0x74BF v +0x74C0 w +0x74C1 x +0x74C2 y +0x74C3 z +0x74C4 { +0x74C5 | +0x74C6 } +0x74C7 ~ +0x74C8 +0x74C9 +0x74CA +0x74CB +0x74CC +0x74CD +0x74CE +0x74CF +0x74D0 +0x74D1 +0x74D2 +0x74D3 +0x74D4 +0x74D5 +0x74D6 +0x74D7 +0x74D8 +0x74D9 +0x74DA +0x74DB +0x74DC +0x74DD +0x74DE +0x74DF +0x74E0 +0x74E1 +0x74E2 ư +0x74E3 +0x74E4 ȿ +0x74E5 +0x74E6 +0x74E7 +0x74E8 +0x74E9 +0x74EA +0x74EB +0x74EC +0x74ED +0x74EE +0x74EF +0x74F0 +0x74F1 +0x74F2 +0x74F3 @ +0x74F4 +0x74F5 A +0x74F6 ƿ +0x74F7 +0x74F8 B +0x74F9 C +0x74FA D +0x74FB E +0x74FC F +0x74FD G +0x74FE H +0x74FF +0x7500 I +0x7501 J +0x7502 K +0x7503 L +0x7504 +0x7505 M +0x7506 N +0x7507 O +0x7508 P +0x7509 Q +0x750A R +0x750B S +0x750C T +0x750D +0x750E U +0x750F +0x7510 V +0x7511 +0x7512 W +0x7513 +0x7514 X +0x7515 Y +0x7516 Z +0x7517 [ +0x7518 +0x7519 ߰ +0x751A +0x751B \ +0x751C +0x751D ] +0x751E ^ +0x751F +0x7520 _ +0x7521 ` +0x7522 a +0x7523 b +0x7524 c +0x7525 +0x7526 d +0x7527 e +0x7528 +0x7529 ˦ +0x752A f +0x752B +0x752C +0x752D +0x752E g +0x752F +0x7530 +0x7531 +0x7532 +0x7533 +0x7534 h +0x7535 +0x7536 i +0x7537 +0x7538 +0x7539 j +0x753A +0x753B +0x753C k +0x753D l +0x753E +0x753F m +0x7540 +0x7541 n +0x7542 o +0x7543 p +0x7544 q +0x7545 +0x7546 r +0x7547 s +0x7548 +0x7549 t +0x754A u +0x754B +0x754C +0x754D v +0x754E +0x754F η +0x7550 w +0x7551 x +0x7552 y +0x7553 z +0x7554 +0x7555 { +0x7556 | +0x7557 } +0x7558 ~ +0x7559 +0x755A +0x755B +0x755C +0x755D +0x755E +0x755F +0x7560 +0x7561 +0x7562 +0x7563 +0x7564 +0x7565 +0x7566 +0x7567 +0x7568 +0x7569 +0x756A +0x756B +0x756C +0x756D +0x756E +0x756F +0x7570 +0x7571 +0x7572 +0x7573 +0x7574 +0x7575 +0x7576 +0x7577 +0x7578 +0x7579 +0x757A +0x757B +0x757C +0x757D +0x757E +0x757F +0x7580 +0x7581 +0x7582 +0x7583 +0x7584 +0x7585 +0x7586 +0x7587 +0x7588 @ +0x7589 A +0x758A B +0x758B +0x758C C +0x758D D +0x758E E +0x758F +0x7590 F +0x7591 +0x7592 +0x7593 G +0x7594 +0x7595 H +0x7596 +0x7597 +0x7598 I +0x7599 +0x759A +0x759B J +0x759C K +0x759D +0x759E L +0x759F ű +0x75A0 +0x75A1 +0x75A2 M +0x75A3 +0x75A4 +0x75A5 +0x75A6 N +0x75A7 O +0x75A8 P +0x75A9 Q +0x75AA R +0x75AB +0x75AC +0x75AD S +0x75AE +0x75AF +0x75B0 +0x75B1 +0x75B2 ƣ +0x75B3 +0x75B4 +0x75B5 +0x75B6 T +0x75B7 U +0x75B8 +0x75B9 +0x75BA V +0x75BB W +0x75BC +0x75BD +0x75BE +0x75BF X +0x75C0 Y +0x75C1 Z +0x75C2 +0x75C3 +0x75C4 +0x75C5 +0x75C6 [ +0x75C7 ֢ +0x75C8 Ӹ +0x75C9 +0x75CA Ȭ +0x75CB \ +0x75CC ] +0x75CD +0x75CE ^ +0x75CF _ +0x75D0 ` +0x75D1 a +0x75D2 +0x75D3 b +0x75D4 +0x75D5 +0x75D6 +0x75D7 c +0x75D8 +0x75D9 d +0x75DA e +0x75DB ʹ +0x75DC f +0x75DD g +0x75DE Ʀ +0x75DF h +0x75E0 i +0x75E1 j +0x75E2 +0x75E3 +0x75E4 +0x75E5 k +0x75E6 +0x75E7 +0x75E8 +0x75E9 l +0x75EA +0x75EB +0x75EC m +0x75ED n +0x75EE o +0x75EF p +0x75F0 ̵ +0x75F1 +0x75F2 q +0x75F3 r +0x75F4 +0x75F5 s +0x75F6 t +0x75F7 u +0x75F8 v +0x75F9 +0x75FA w +0x75FB x +0x75FC +0x75FD y +0x75FE z +0x75FF +0x7600 +0x7601 +0x7602 { +0x7603 +0x7604 | +0x7605 +0x7606 } +0x7607 ~ +0x7608 +0x7609 +0x760A +0x760B +0x760C +0x760D +0x760E +0x760F +0x7610 +0x7611 +0x7612 +0x7613 +0x7614 +0x7615 +0x7616 +0x7617 +0x7618 +0x7619 +0x761A +0x761B +0x761C +0x761D +0x761E +0x761F +0x7620 +0x7621 +0x7622 +0x7623 +0x7624 +0x7625 +0x7626 +0x7627 +0x7628 +0x7629 +0x762A +0x762B ̱ +0x762C +0x762D +0x762E +0x762F +0x7630 +0x7631 +0x7632 +0x7633 +0x7634 +0x7635 +0x7636 +0x7637 +0x7638 ȳ +0x7639 +0x763A +0x763B +0x763C +0x763D +0x763E +0x763F +0x7640 +0x7641 +0x7642 +0x7643 +0x7644 +0x7645 @ +0x7646 A +0x7647 B +0x7648 C +0x7649 D +0x764A E +0x764B F +0x764C +0x764D +0x764E G +0x764F H +0x7650 I +0x7651 J +0x7652 K +0x7653 L +0x7654 +0x7655 M +0x7656 +0x7657 N +0x7658 O +0x7659 P +0x765A Q +0x765B R +0x765C +0x765D S +0x765E +0x765F T +0x7660 U +0x7661 V +0x7662 W +0x7663 Ѣ +0x7664 X +0x7665 Y +0x7666 Z +0x7667 [ +0x7668 \ +0x7669 ] +0x766A ^ +0x766B +0x766C _ +0x766D ` +0x766E a +0x766F +0x7670 b +0x7671 c +0x7672 d +0x7673 e +0x7674 f +0x7675 g +0x7676 h +0x7677 i +0x7678 +0x7679 j +0x767A k +0x767B +0x767C l +0x767D +0x767E +0x767F m +0x7680 n +0x7681 o +0x7682 +0x7683 p +0x7684 +0x7685 q +0x7686 +0x7687 +0x7688 +0x7689 r +0x768A s +0x768B +0x768C t +0x768D u +0x768E +0x768F v +0x7690 w +0x7691 +0x7692 x +0x7693 +0x7694 y +0x7695 z +0x7696 +0x7697 { +0x7698 | +0x7699 +0x769A } +0x769B ~ +0x769C +0x769D +0x769E +0x769F +0x76A0 +0x76A1 +0x76A2 +0x76A3 +0x76A4 +0x76A5 +0x76A6 +0x76A7 +0x76A8 +0x76A9 +0x76AA +0x76AB +0x76AC +0x76AD +0x76AE Ƥ +0x76AF +0x76B0 +0x76B1 +0x76B2 +0x76B3 +0x76B4 +0x76B5 +0x76B6 +0x76B7 +0x76B8 +0x76B9 +0x76BA +0x76BB +0x76BC +0x76BD +0x76BE +0x76BF +0x76C0 +0x76C1 +0x76C2 +0x76C3 +0x76C4 @ +0x76C5 +0x76C6 +0x76C7 A +0x76C8 ӯ +0x76C9 B +0x76CA +0x76CB C +0x76CC D +0x76CD +0x76CE +0x76CF յ +0x76D0 +0x76D1 +0x76D2 +0x76D3 E +0x76D4 +0x76D5 F +0x76D6 +0x76D7 +0x76D8 +0x76D9 G +0x76DA H +0x76DB ʢ +0x76DC I +0x76DD J +0x76DE K +0x76DF +0x76E0 L +0x76E1 M +0x76E2 N +0x76E3 O +0x76E4 P +0x76E5 +0x76E6 Q +0x76E7 R +0x76E8 S +0x76E9 T +0x76EA U +0x76EB V +0x76EC W +0x76ED X +0x76EE Ŀ +0x76EF +0x76F0 Y +0x76F1 +0x76F2 ä +0x76F3 Z +0x76F4 ֱ +0x76F5 [ +0x76F6 \ +0x76F7 ] +0x76F8 +0x76F9 +0x76FA ^ +0x76FB _ +0x76FC +0x76FD ` +0x76FE +0x76FF a +0x7700 b +0x7701 ʡ +0x7702 c +0x7703 d +0x7704 +0x7705 e +0x7706 f +0x7707 +0x7708 +0x7709 ü +0x770A g +0x770B +0x770C h +0x770D +0x770E i +0x770F j +0x7710 k +0x7711 l +0x7712 m +0x7713 n +0x7714 o +0x7715 p +0x7716 q +0x7717 r +0x7718 s +0x7719 +0x771A +0x771B t +0x771C u +0x771D v +0x771E w +0x771F +0x7720 +0x7721 x +0x7722 +0x7723 y +0x7724 z +0x7725 { +0x7726 +0x7727 | +0x7728 գ +0x7729 ѣ +0x772A } +0x772B ~ +0x772C +0x772D +0x772E +0x772F +0x7730 +0x7731 +0x7732 +0x7733 +0x7734 +0x7735 +0x7736 +0x7737 +0x7738 +0x7739 +0x773A +0x773B +0x773C +0x773D +0x773E +0x773F +0x7740 +0x7741 +0x7742 +0x7743 +0x7744 +0x7745 +0x7746 +0x7747 +0x7748 +0x7749 +0x774A +0x774B +0x774C +0x774D +0x774E +0x774F +0x7750 +0x7751 +0x7752 +0x7753 +0x7754 +0x7755 +0x7756 +0x7757 +0x7758 +0x7759 +0x775A +0x775B +0x775C +0x775D @ +0x775E A +0x775F B +0x7760 C +0x7761 ˯ +0x7762 +0x7763 +0x7764 D +0x7765 +0x7766 +0x7767 E +0x7768 +0x7769 F +0x776A G +0x776B +0x776C +0x776D H +0x776E I +0x776F J +0x7770 K +0x7771 L +0x7772 M +0x7773 N +0x7774 O +0x7775 P +0x7776 Q +0x7777 R +0x7778 S +0x7779 +0x777A T +0x777B U +0x777C V +0x777D +0x777E غ +0x777F +0x7780 +0x7781 W +0x7782 X +0x7783 Y +0x7784 +0x7785 +0x7786 Z +0x7787 [ +0x7788 \ +0x7789 ] +0x778A ^ +0x778B _ +0x778C +0x778D +0x778E Ϲ +0x778F ` +0x7790 a +0x7791 +0x7792 +0x7793 b +0x7794 c +0x7795 d +0x7796 e +0x7797 f +0x7798 g +0x7799 h +0x779A i +0x779B j +0x779C k +0x779D l +0x779E m +0x779F +0x77A0 +0x77A1 n +0x77A2 ޫ +0x77A3 o +0x77A4 p +0x77A5 Ƴ +0x77A6 q +0x77A7 +0x77A8 r +0x77A9 +0x77AA +0x77AB s +0x77AC ˲ +0x77AD t +0x77AE u +0x77AF v +0x77B0 +0x77B1 w +0x77B2 x +0x77B3 ͫ +0x77B4 y +0x77B5 +0x77B6 z +0x77B7 { +0x77B8 | +0x77B9 } +0x77BA ~ +0x77BB հ +0x77BC +0x77BD +0x77BE +0x77BF +0x77C0 +0x77C1 +0x77C2 +0x77C3 +0x77C4 +0x77C5 +0x77C6 +0x77C7 +0x77C8 +0x77C9 +0x77CA +0x77CB +0x77CC +0x77CD +0x77CE +0x77CF +0x77D0 +0x77D1 +0x77D2 +0x77D3 +0x77D4 +0x77D5 +0x77D6 +0x77D7 +0x77D8 +0x77D9 +0x77DA +0x77DB ì +0x77DC +0x77DD +0x77DE +0x77DF +0x77E0 +0x77E1 +0x77E2 ʸ +0x77E3 +0x77E4 +0x77E5 ֪ +0x77E6 @ +0x77E7 +0x77E8 A +0x77E9 +0x77EA B +0x77EB +0x77EC +0x77ED +0x77EE +0x77EF C +0x77F0 D +0x77F1 E +0x77F2 F +0x77F3 ʯ +0x77F4 G +0x77F5 H +0x77F6 +0x77F7 I +0x77F8 +0x77F9 J +0x77FA K +0x77FB L +0x77FC M +0x77FD +0x77FE +0x77FF +0x7800 +0x7801 +0x7802 ɰ +0x7803 N +0x7804 O +0x7805 P +0x7806 Q +0x7807 R +0x7808 S +0x7809 +0x780A T +0x780B U +0x780C +0x780D +0x780E V +0x780F W +0x7810 X +0x7811 +0x7812 +0x7813 Y +0x7814 +0x7815 Z +0x7816 ש +0x7817 +0x7818 +0x7819 [ +0x781A +0x781B \ +0x781C +0x781D +0x781E ] +0x781F +0x7820 ^ +0x7821 _ +0x7822 ` +0x7823 +0x7824 a +0x7825 +0x7826 +0x7827 +0x7828 b +0x7829 +0x782A c +0x782B d +0x782C +0x782D +0x782E e +0x782F f +0x7830 +0x7831 g +0x7832 h +0x7833 i +0x7834 +0x7835 j +0x7836 k +0x7837 +0x7838 +0x7839 +0x783A +0x783B +0x783C +0x783D l +0x783E +0x783F m +0x7840 +0x7841 n +0x7842 o +0x7843 p +0x7844 q +0x7845 +0x7846 r +0x7847 +0x7848 s +0x7849 t +0x784A u +0x784B v +0x784C +0x784D w +0x784E +0x784F x +0x7850 +0x7851 y +0x7852 +0x7853 z +0x7854 { +0x7855 ˶ +0x7856 +0x7857 +0x7858 | +0x7859 } +0x785A ~ +0x785B +0x785C +0x785D +0x785E +0x785F +0x7860 +0x7861 +0x7862 +0x7863 +0x7864 +0x7865 +0x7866 +0x7867 +0x7868 +0x7869 +0x786A +0x786B +0x786C Ӳ +0x786D +0x786E ȷ +0x786F +0x7870 +0x7871 +0x7872 +0x7873 +0x7874 +0x7875 +0x7876 +0x7877 +0x7878 +0x7879 +0x787A +0x787B +0x787C +0x787D +0x787E +0x787F +0x7880 +0x7881 +0x7882 +0x7883 +0x7884 @ +0x7885 A +0x7886 B +0x7887 +0x7888 C +0x7889 +0x788A D +0x788B E +0x788C µ +0x788D +0x788E +0x788F F +0x7890 G +0x7891 +0x7892 H +0x7893 +0x7894 I +0x7895 J +0x7896 K +0x7897 +0x7898 +0x7899 L +0x789A +0x789B +0x789C +0x789D M +0x789E N +0x789F +0x78A0 O +0x78A1 +0x78A2 P +0x78A3 +0x78A4 Q +0x78A5 +0x78A6 R +0x78A7 +0x78A8 S +0x78A9 T +0x78AA U +0x78AB V +0x78AC W +0x78AD X +0x78AE Y +0x78AF Z +0x78B0 +0x78B1 +0x78B2 +0x78B3 ̼ +0x78B4 +0x78B5 [ +0x78B6 \ +0x78B7 ] +0x78B8 ^ +0x78B9 +0x78BA _ +0x78BB ` +0x78BC a +0x78BD b +0x78BE +0x78BF c +0x78C0 d +0x78C1 +0x78C2 e +0x78C3 f +0x78C4 g +0x78C5 +0x78C6 h +0x78C7 i +0x78C8 j +0x78C9 +0x78CA +0x78CB +0x78CC k +0x78CD l +0x78CE m +0x78CF n +0x78D0 +0x78D1 o +0x78D2 p +0x78D3 q +0x78D4 +0x78D5 +0x78D6 r +0x78D7 s +0x78D8 t +0x78D9 +0x78DA u +0x78DB v +0x78DC w +0x78DD x +0x78DE y +0x78DF z +0x78E0 { +0x78E1 | +0x78E2 } +0x78E3 ~ +0x78E4 +0x78E5 +0x78E6 +0x78E7 +0x78E8 ĥ +0x78E9 +0x78EA +0x78EB +0x78EC +0x78ED +0x78EE +0x78EF +0x78F0 +0x78F1 +0x78F2 +0x78F3 +0x78F4 +0x78F5 +0x78F6 +0x78F7 +0x78F8 +0x78F9 +0x78FA +0x78FB +0x78FC +0x78FD +0x78FE +0x78FF +0x7900 +0x7901 +0x7902 +0x7903 +0x7904 +0x7905 +0x7906 +0x7907 +0x7908 +0x7909 +0x790A +0x790B +0x790C +0x790D @ +0x790E A +0x790F B +0x7910 C +0x7911 D +0x7912 E +0x7913 +0x7914 F +0x7915 G +0x7916 H +0x7917 I +0x7918 J +0x7919 K +0x791A L +0x791B M +0x791C N +0x791D O +0x791E +0x791F P +0x7920 Q +0x7921 R +0x7922 S +0x7923 T +0x7924 +0x7925 U +0x7926 V +0x7927 W +0x7928 X +0x7929 Y +0x792A Z +0x792B [ +0x792C \ +0x792D ] +0x792E ^ +0x792F _ +0x7930 ` +0x7931 a +0x7932 b +0x7933 c +0x7934 +0x7935 d +0x7936 e +0x7937 f +0x7938 g +0x7939 h +0x793A ʾ +0x793B +0x793C +0x793D i +0x793E +0x793F j +0x7940 +0x7941 +0x7942 k +0x7943 l +0x7944 m +0x7945 n +0x7946 +0x7947 o +0x7948 +0x7949 +0x794A p +0x794B q +0x794C r +0x794D s +0x794E t +0x794F u +0x7950 v +0x7951 w +0x7952 x +0x7953 +0x7954 y +0x7955 z +0x7956 +0x7957 +0x7958 { +0x7959 | +0x795A +0x795B +0x795C +0x795D ף +0x795E +0x795F +0x7960 +0x7961 } +0x7962 +0x7963 ~ +0x7964 +0x7965 +0x7966 +0x7967 +0x7968 Ʊ +0x7969 +0x796A +0x796B +0x796C +0x796D +0x796E +0x796F +0x7970 +0x7971 +0x7972 +0x7973 +0x7974 +0x7975 +0x7976 +0x7977 +0x7978 +0x7979 +0x797A +0x797B +0x797C +0x797D +0x797E +0x797F +0x7980 +0x7981 +0x7982 +0x7983 +0x7984 » +0x7985 +0x7986 +0x7987 +0x7988 +0x7989 +0x798A +0x798B +0x798C +0x798D +0x798E +0x798F +0x7990 +0x7991 +0x7992 +0x7993 @ +0x7994 A +0x7995 B +0x7996 C +0x7997 D +0x7998 E +0x7999 F +0x799A +0x799B G +0x799C H +0x799D I +0x799E J +0x799F K +0x79A0 L +0x79A1 M +0x79A2 N +0x79A3 O +0x79A4 P +0x79A5 Q +0x79A6 R +0x79A7 +0x79A8 S +0x79A9 T +0x79AA U +0x79AB V +0x79AC W +0x79AD X +0x79AE Y +0x79AF Z +0x79B0 [ +0x79B1 \ +0x79B2 ] +0x79B3 +0x79B4 ^ +0x79B5 _ +0x79B6 ` +0x79B7 a +0x79B8 b +0x79B9 +0x79BA خ +0x79BB +0x79BC c +0x79BD +0x79BE +0x79BF d +0x79C0 +0x79C1 ˽ +0x79C2 e +0x79C3 ͺ +0x79C4 f +0x79C5 g +0x79C6 +0x79C7 h +0x79C8 i +0x79C9 +0x79CA j +0x79CB +0x79CC k +0x79CD +0x79CE l +0x79CF m +0x79D0 n +0x79D1 +0x79D2 +0x79D3 o +0x79D4 p +0x79D5 +0x79D6 q +0x79D7 r +0x79D8 +0x79D9 s +0x79DA t +0x79DB u +0x79DC v +0x79DD w +0x79DE x +0x79DF +0x79E0 y +0x79E1 z +0x79E2 { +0x79E3 +0x79E4 +0x79E5 | +0x79E6 +0x79E7 +0x79E8 } +0x79E9 +0x79EA ~ +0x79EB +0x79EC +0x79ED +0x79EE +0x79EF +0x79F0 +0x79F1 +0x79F2 +0x79F3 +0x79F4 +0x79F5 +0x79F6 +0x79F7 +0x79F8 +0x79F9 +0x79FA +0x79FB +0x79FC +0x79FD +0x79FE +0x79FF +0x7A00 ϡ +0x7A01 +0x7A02 +0x7A03 +0x7A04 +0x7A05 +0x7A06 +0x7A07 +0x7A08 +0x7A09 +0x7A0A +0x7A0B +0x7A0C +0x7A0D +0x7A0E ˰ +0x7A0F +0x7A10 +0x7A11 +0x7A12 +0x7A13 +0x7A14 +0x7A15 +0x7A16 +0x7A17 +0x7A18 +0x7A19 +0x7A1A +0x7A1B +0x7A1C +0x7A1D @ +0x7A1E +0x7A1F A +0x7A20 +0x7A21 B +0x7A22 C +0x7A23 +0x7A24 D +0x7A25 E +0x7A26 F +0x7A27 G +0x7A28 H +0x7A29 I +0x7A2A J +0x7A2B K +0x7A2C L +0x7A2D M +0x7A2E N +0x7A2F O +0x7A30 P +0x7A31 Q +0x7A32 R +0x7A33 +0x7A34 S +0x7A35 T +0x7A36 U +0x7A37 +0x7A38 V +0x7A39 +0x7A3A W +0x7A3B +0x7A3C +0x7A3D +0x7A3E X +0x7A3F +0x7A40 Y +0x7A41 Z +0x7A42 [ +0x7A43 \ +0x7A44 ] +0x7A45 ^ +0x7A46 +0x7A47 _ +0x7A48 ` +0x7A49 a +0x7A4A b +0x7A4B c +0x7A4C d +0x7A4D e +0x7A4E f +0x7A4F g +0x7A50 h +0x7A51 +0x7A52 i +0x7A53 j +0x7A54 k +0x7A55 l +0x7A56 m +0x7A57 +0x7A58 n +0x7A59 o +0x7A5A p +0x7A5B q +0x7A5C r +0x7A5D s +0x7A5E t +0x7A5F u +0x7A60 v +0x7A61 w +0x7A62 x +0x7A63 y +0x7A64 z +0x7A65 { +0x7A66 | +0x7A67 } +0x7A68 ~ +0x7A69 +0x7A6A +0x7A6B +0x7A6C +0x7A6D +0x7A6E +0x7A6F +0x7A70 +0x7A71 +0x7A72 +0x7A73 +0x7A74 Ѩ +0x7A75 +0x7A76 +0x7A77 +0x7A78 +0x7A79 +0x7A7A +0x7A7B +0x7A7C +0x7A7D +0x7A7E +0x7A7F +0x7A80 +0x7A81 ͻ +0x7A82 +0x7A83 +0x7A84 խ +0x7A85 +0x7A86 +0x7A87 +0x7A88 +0x7A89 +0x7A8A +0x7A8B +0x7A8C +0x7A8D +0x7A8E +0x7A8F +0x7A90 +0x7A91 Ҥ +0x7A92 +0x7A93 +0x7A94 +0x7A95 +0x7A96 +0x7A97 +0x7A98 +0x7A99 +0x7A9A +0x7A9B +0x7A9C +0x7A9D +0x7A9E +0x7A9F +0x7AA0 +0x7AA1 +0x7AA2 +0x7AA3 @ +0x7AA4 A +0x7AA5 +0x7AA6 +0x7AA7 B +0x7AA8 +0x7AA9 C +0x7AAA D +0x7AAB E +0x7AAC +0x7AAD +0x7AAE F +0x7AAF G +0x7AB0 H +0x7AB1 I +0x7AB2 J +0x7AB3 +0x7AB4 K +0x7AB5 L +0x7AB6 M +0x7AB7 N +0x7AB8 O +0x7AB9 P +0x7ABA Q +0x7ABB R +0x7ABC S +0x7ABD T +0x7ABE U +0x7ABF +0x7AC0 V +0x7AC1 W +0x7AC2 X +0x7AC3 Y +0x7AC4 Z +0x7AC5 [ +0x7AC6 \ +0x7AC7 ] +0x7AC8 ^ +0x7AC9 _ +0x7ACA ` +0x7ACB +0x7ACC a +0x7ACD b +0x7ACE c +0x7ACF d +0x7AD0 e +0x7AD1 f +0x7AD2 g +0x7AD3 h +0x7AD4 i +0x7AD5 j +0x7AD6 +0x7AD7 k +0x7AD8 l +0x7AD9 վ +0x7ADA m +0x7ADB n +0x7ADC o +0x7ADD p +0x7ADE +0x7ADF +0x7AE0 +0x7AE1 q +0x7AE2 r +0x7AE3 +0x7AE4 s +0x7AE5 ͯ +0x7AE6 +0x7AE7 t +0x7AE8 u +0x7AE9 v +0x7AEA w +0x7AEB x +0x7AEC y +0x7AED +0x7AEE z +0x7AEF +0x7AF0 { +0x7AF1 | +0x7AF2 } +0x7AF3 ~ +0x7AF4 +0x7AF5 +0x7AF6 +0x7AF7 +0x7AF8 +0x7AF9 +0x7AFA +0x7AFB +0x7AFC +0x7AFD +0x7AFE +0x7AFF +0x7B00 +0x7B01 +0x7B02 +0x7B03 +0x7B04 +0x7B05 +0x7B06 +0x7B07 +0x7B08 +0x7B09 +0x7B0A +0x7B0B +0x7B0C +0x7B0D +0x7B0E +0x7B0F +0x7B10 +0x7B11 Ц +0x7B12 +0x7B13 +0x7B14 +0x7B15 +0x7B16 +0x7B17 +0x7B18 +0x7B19 +0x7B1A +0x7B1B +0x7B1C +0x7B1D +0x7B1E +0x7B1F +0x7B20 +0x7B21 +0x7B22 +0x7B23 +0x7B24 +0x7B25 +0x7B26 +0x7B27 +0x7B28 +0x7B29 +0x7B2A +0x7B2B +0x7B2C +0x7B2D +0x7B2E +0x7B2F @ +0x7B30 A +0x7B31 +0x7B32 B +0x7B33 +0x7B34 C +0x7B35 D +0x7B36 E +0x7B37 F +0x7B38 +0x7B39 G +0x7B3A +0x7B3B H +0x7B3C +0x7B3D I +0x7B3E +0x7B3F J +0x7B40 K +0x7B41 L +0x7B42 M +0x7B43 N +0x7B44 O +0x7B45 +0x7B46 P +0x7B47 +0x7B48 Q +0x7B49 +0x7B4A R +0x7B4B +0x7B4C +0x7B4D S +0x7B4E T +0x7B4F +0x7B50 +0x7B51 +0x7B52 Ͳ +0x7B53 U +0x7B54 +0x7B55 V +0x7B56 +0x7B57 W +0x7B58 +0x7B59 X +0x7B5A +0x7B5B ɸ +0x7B5C Y +0x7B5D +0x7B5E Z +0x7B5F [ +0x7B60 +0x7B61 \ +0x7B62 +0x7B63 ] +0x7B64 ^ +0x7B65 _ +0x7B66 ` +0x7B67 a +0x7B68 b +0x7B69 c +0x7B6A d +0x7B6B e +0x7B6C f +0x7B6D g +0x7B6E +0x7B6F h +0x7B70 i +0x7B71 +0x7B72 +0x7B73 j +0x7B74 k +0x7B75 +0x7B76 l +0x7B77 +0x7B78 m +0x7B79 +0x7B7A n +0x7B7B +0x7B7C o +0x7B7D p +0x7B7E ǩ +0x7B7F q +0x7B80 +0x7B81 r +0x7B82 s +0x7B83 t +0x7B84 u +0x7B85 +0x7B86 v +0x7B87 w +0x7B88 x +0x7B89 y +0x7B8A z +0x7B8B { +0x7B8C | +0x7B8D +0x7B8E } +0x7B8F ~ +0x7B90 +0x7B91 +0x7B92 +0x7B93 +0x7B94 +0x7B95 +0x7B96 +0x7B97 +0x7B98 +0x7B99 +0x7B9A +0x7B9B +0x7B9C +0x7B9D +0x7B9E +0x7B9F +0x7BA0 +0x7BA1 +0x7BA2 +0x7BA3 +0x7BA4 +0x7BA5 +0x7BA6 +0x7BA7 +0x7BA8 +0x7BA9 +0x7BAA +0x7BAB +0x7BAC +0x7BAD +0x7BAE +0x7BAF +0x7BB0 +0x7BB1 +0x7BB2 +0x7BB3 +0x7BB4 +0x7BB5 +0x7BB6 +0x7BB7 +0x7BB8 +0x7BB9 +0x7BBA +0x7BBB +0x7BBC +0x7BBD +0x7BBE +0x7BBF +0x7BC0 +0x7BC1 +0x7BC2 +0x7BC3 +0x7BC4 +0x7BC5 @ +0x7BC6 ׭ +0x7BC7 ƪ +0x7BC8 A +0x7BC9 B +0x7BCA C +0x7BCB D +0x7BCC +0x7BCD E +0x7BCE F +0x7BCF G +0x7BD0 H +0x7BD1 +0x7BD2 I +0x7BD3 ¨ +0x7BD4 J +0x7BD5 K +0x7BD6 L +0x7BD7 M +0x7BD8 N +0x7BD9 +0x7BDA +0x7BDB O +0x7BDC P +0x7BDD +0x7BDE Q +0x7BDF R +0x7BE0 S +0x7BE1 +0x7BE2 T +0x7BE3 U +0x7BE4 V +0x7BE5 +0x7BE6 +0x7BE7 W +0x7BE8 X +0x7BE9 Y +0x7BEA +0x7BEB Z +0x7BEC [ +0x7BED \ +0x7BEE +0x7BEF ] +0x7BF0 ^ +0x7BF1 +0x7BF2 _ +0x7BF3 ` +0x7BF4 a +0x7BF5 b +0x7BF6 c +0x7BF7 +0x7BF8 d +0x7BF9 e +0x7BFA f +0x7BFB g +0x7BFC +0x7BFD h +0x7BFE +0x7BFF i +0x7C00 j +0x7C01 k +0x7C02 l +0x7C03 m +0x7C04 n +0x7C05 o +0x7C06 p +0x7C07 +0x7C08 q +0x7C09 r +0x7C0A s +0x7C0B +0x7C0C +0x7C0D t +0x7C0E u +0x7C0F +0x7C10 v +0x7C11 w +0x7C12 x +0x7C13 y +0x7C14 z +0x7C15 { +0x7C16 +0x7C17 | +0x7C18 } +0x7C19 ~ +0x7C1A +0x7C1B +0x7C1C +0x7C1D +0x7C1E +0x7C1F +0x7C20 +0x7C21 +0x7C22 +0x7C23 +0x7C24 +0x7C25 +0x7C26 +0x7C27 +0x7C28 +0x7C29 +0x7C2A +0x7C2B +0x7C2C +0x7C2D +0x7C2E +0x7C2F +0x7C30 +0x7C31 +0x7C32 +0x7C33 +0x7C34 +0x7C35 +0x7C36 +0x7C37 +0x7C38 +0x7C39 +0x7C3A +0x7C3B +0x7C3C +0x7C3D +0x7C3E +0x7C3F +0x7C40 +0x7C41 +0x7C42 +0x7C43 @ +0x7C44 A +0x7C45 B +0x7C46 C +0x7C47 D +0x7C48 E +0x7C49 F +0x7C4A G +0x7C4B H +0x7C4C I +0x7C4D +0x7C4E J +0x7C4F K +0x7C50 L +0x7C51 M +0x7C52 N +0x7C53 O +0x7C54 P +0x7C55 Q +0x7C56 R +0x7C57 S +0x7C58 T +0x7C59 U +0x7C5A V +0x7C5B W +0x7C5C X +0x7C5D Y +0x7C5E Z +0x7C5F [ +0x7C60 \ +0x7C61 ] +0x7C62 ^ +0x7C63 _ +0x7C64 ` +0x7C65 a +0x7C66 b +0x7C67 c +0x7C68 d +0x7C69 e +0x7C6A f +0x7C6B g +0x7C6C h +0x7C6D i +0x7C6E j +0x7C6F k +0x7C70 l +0x7C71 m +0x7C72 n +0x7C73 +0x7C74 +0x7C75 o +0x7C76 p +0x7C77 q +0x7C78 r +0x7C79 s +0x7C7A t +0x7C7B +0x7C7C +0x7C7D +0x7C7E u +0x7C7F v +0x7C80 w +0x7C81 x +0x7C82 y +0x7C83 z +0x7C84 { +0x7C85 | +0x7C86 } +0x7C87 ~ +0x7C88 +0x7C89 +0x7C8A +0x7C8B +0x7C8C +0x7C8D +0x7C8E +0x7C8F +0x7C90 +0x7C91 +0x7C92 +0x7C93 +0x7C94 +0x7C95 +0x7C96 +0x7C97 +0x7C98 ճ +0x7C99 +0x7C9A +0x7C9B +0x7C9C +0x7C9D +0x7C9E +0x7C9F +0x7CA0 +0x7CA1 +0x7CA2 +0x7CA3 +0x7CA4 +0x7CA5 +0x7CA6 +0x7CA7 +0x7CA8 +0x7CA9 +0x7CAA +0x7CAB +0x7CAC +0x7CAD +0x7CAE +0x7CAF +0x7CB0 +0x7CB1 +0x7CB2 +0x7CB3 +0x7CB4 +0x7CB5 +0x7CB6 +0x7CB7 +0x7CB8 +0x7CB9 +0x7CBA +0x7CBB +0x7CBC +0x7CBD +0x7CBE +0x7CBF @ +0x7CC0 A +0x7CC1 +0x7CC2 B +0x7CC3 C +0x7CC4 D +0x7CC5 +0x7CC6 E +0x7CC7 +0x7CC8 +0x7CC9 F +0x7CCA +0x7CCB G +0x7CCC +0x7CCD +0x7CCE H +0x7CCF I +0x7CD0 J +0x7CD1 K +0x7CD2 L +0x7CD3 M +0x7CD4 N +0x7CD5 +0x7CD6 +0x7CD7 +0x7CD8 O +0x7CD9 +0x7CDA P +0x7CDB Q +0x7CDC +0x7CDD R +0x7CDE S +0x7CDF +0x7CE0 +0x7CE1 T +0x7CE2 U +0x7CE3 V +0x7CE4 W +0x7CE5 X +0x7CE6 Y +0x7CE7 Z +0x7CE8 +0x7CE9 [ +0x7CEA \ +0x7CEB ] +0x7CEC ^ +0x7CED _ +0x7CEE ` +0x7CEF Ŵ +0x7CF0 a +0x7CF1 b +0x7CF2 c +0x7CF3 d +0x7CF4 e +0x7CF5 f +0x7CF6 g +0x7CF7 h +0x7CF8 +0x7CF9 i +0x7CFA j +0x7CFB ϵ +0x7CFC k +0x7CFD l +0x7CFE m +0x7CFF n +0x7D00 o +0x7D01 p +0x7D02 q +0x7D03 r +0x7D04 s +0x7D05 t +0x7D06 u +0x7D07 v +0x7D08 w +0x7D09 x +0x7D0A +0x7D0B y +0x7D0C z +0x7D0D { +0x7D0E | +0x7D0F } +0x7D10 ~ +0x7D11 +0x7D12 +0x7D13 +0x7D14 +0x7D15 +0x7D16 +0x7D17 +0x7D18 +0x7D19 +0x7D1A +0x7D1B +0x7D1C +0x7D1D +0x7D1E +0x7D1F +0x7D20 +0x7D21 +0x7D22 +0x7D23 +0x7D24 +0x7D25 +0x7D26 +0x7D27 +0x7D28 +0x7D29 +0x7D2A +0x7D2B +0x7D2C +0x7D2D +0x7D2E +0x7D2F +0x7D30 +0x7D31 +0x7D32 +0x7D33 +0x7D34 +0x7D35 +0x7D36 +0x7D37 @ +0x7D38 A +0x7D39 B +0x7D3A C +0x7D3B D +0x7D3C E +0x7D3D F +0x7D3E G +0x7D3F H +0x7D40 I +0x7D41 J +0x7D42 K +0x7D43 L +0x7D44 M +0x7D45 N +0x7D46 O +0x7D47 P +0x7D48 Q +0x7D49 R +0x7D4A S +0x7D4B T +0x7D4C U +0x7D4D V +0x7D4E W +0x7D4F X +0x7D50 Y +0x7D51 Z +0x7D52 [ +0x7D53 \ +0x7D54 ] +0x7D55 ^ +0x7D56 _ +0x7D57 ` +0x7D58 a +0x7D59 b +0x7D5A c +0x7D5B d +0x7D5C e +0x7D5D f +0x7D5E g +0x7D5F h +0x7D60 i +0x7D61 j +0x7D62 k +0x7D63 l +0x7D64 m +0x7D65 n +0x7D66 o +0x7D67 p +0x7D68 q +0x7D69 r +0x7D6A s +0x7D6B t +0x7D6C u +0x7D6D v +0x7D6E +0x7D6F w +0x7D70 x +0x7D71 y +0x7D72 z +0x7D73 { +0x7D74 | +0x7D75 } +0x7D76 ~ +0x7D77 +0x7D78 +0x7D79 +0x7D7A +0x7D7B +0x7D7C +0x7D7D +0x7D7E +0x7D7F +0x7D80 +0x7D81 +0x7D82 +0x7D83 +0x7D84 +0x7D85 +0x7D86 +0x7D87 +0x7D88 +0x7D89 +0x7D8A +0x7D8B +0x7D8C +0x7D8D +0x7D8E +0x7D8F +0x7D90 +0x7D91 +0x7D92 +0x7D93 +0x7D94 +0x7D95 +0x7D96 +0x7D97 +0x7D98 +0x7D99 @ +0x7D9A A +0x7D9B B +0x7D9C C +0x7D9D D +0x7D9E E +0x7D9F F +0x7DA0 G +0x7DA1 H +0x7DA2 I +0x7DA3 J +0x7DA4 K +0x7DA5 L +0x7DA6 +0x7DA7 M +0x7DA8 N +0x7DA9 O +0x7DAA P +0x7DAB Q +0x7DAC R +0x7DAD S +0x7DAE +0x7DAF T +0x7DB0 U +0x7DB1 V +0x7DB2 W +0x7DB3 X +0x7DB4 Y +0x7DB5 Z +0x7DB6 [ +0x7DB7 \ +0x7DB8 ] +0x7DB9 ^ +0x7DBA _ +0x7DBB ` +0x7DBC a +0x7DBD b +0x7DBE c +0x7DBF d +0x7DC0 e +0x7DC1 f +0x7DC2 g +0x7DC3 h +0x7DC4 i +0x7DC5 j +0x7DC6 k +0x7DC7 l +0x7DC8 m +0x7DC9 n +0x7DCA o +0x7DCB p +0x7DCC q +0x7DCD r +0x7DCE s +0x7DCF t +0x7DD0 u +0x7DD1 v +0x7DD2 w +0x7DD3 x +0x7DD4 y +0x7DD5 z +0x7DD6 { +0x7DD7 | +0x7DD8 } +0x7DD9 ~ +0x7DDA +0x7DDB +0x7DDC +0x7DDD +0x7DDE +0x7DDF +0x7DE0 +0x7DE1 +0x7DE2 +0x7DE3 +0x7DE4 +0x7DE5 +0x7DE6 +0x7DE7 +0x7DE8 +0x7DE9 +0x7DEA +0x7DEB +0x7DEC +0x7DED +0x7DEE +0x7DEF +0x7DF0 +0x7DF1 +0x7DF2 +0x7DF3 +0x7DF4 +0x7DF5 +0x7DF6 +0x7DF7 +0x7DF8 +0x7DF9 +0x7DFA +0x7DFB @ +0x7DFC A +0x7DFD B +0x7DFE C +0x7DFF D +0x7E00 E +0x7E01 F +0x7E02 G +0x7E03 H +0x7E04 I +0x7E05 J +0x7E06 K +0x7E07 L +0x7E08 M +0x7E09 N +0x7E0A O +0x7E0B P +0x7E0C Q +0x7E0D R +0x7E0E S +0x7E0F T +0x7E10 U +0x7E11 V +0x7E12 W +0x7E13 X +0x7E14 Y +0x7E15 Z +0x7E16 [ +0x7E17 \ +0x7E18 ] +0x7E19 ^ +0x7E1A _ +0x7E1B ` +0x7E1C a +0x7E1D b +0x7E1E c +0x7E1F d +0x7E20 e +0x7E21 f +0x7E22 g +0x7E23 h +0x7E24 i +0x7E25 j +0x7E26 k +0x7E27 l +0x7E28 m +0x7E29 n +0x7E2A o +0x7E2B p +0x7E2C q +0x7E2D r +0x7E2E s +0x7E2F t +0x7E30 u +0x7E31 v +0x7E32 w +0x7E33 x +0x7E34 y +0x7E35 z +0x7E36 { +0x7E37 | +0x7E38 } +0x7E39 ~ +0x7E3A +0x7E3B +0x7E3C +0x7E3D +0x7E3E +0x7E3F +0x7E40 +0x7E41 +0x7E42 +0x7E43 +0x7E44 +0x7E45 +0x7E46 +0x7E47 +0x7E48 +0x7E49 +0x7E4A +0x7E4B +0x7E4C +0x7E4D +0x7E4E +0x7E4F +0x7E50 +0x7E51 +0x7E52 +0x7E53 +0x7E54 +0x7E55 +0x7E56 +0x7E57 +0x7E58 +0x7E59 +0x7E5A +0x7E5B +0x7E5C +0x7E5D +0x7E5E @ +0x7E5F A +0x7E60 B +0x7E61 C +0x7E62 D +0x7E63 E +0x7E64 F +0x7E65 G +0x7E66 H +0x7E67 I +0x7E68 J +0x7E69 K +0x7E6A L +0x7E6B M +0x7E6C N +0x7E6D O +0x7E6E P +0x7E6F Q +0x7E70 R +0x7E71 S +0x7E72 T +0x7E73 U +0x7E74 V +0x7E75 W +0x7E76 X +0x7E77 Y +0x7E78 Z +0x7E79 [ +0x7E7A \ +0x7E7B ] +0x7E7C ^ +0x7E7D _ +0x7E7E ` +0x7E7F a +0x7E80 b +0x7E81 c +0x7E82 +0x7E83 d +0x7E84 e +0x7E85 f +0x7E86 g +0x7E87 h +0x7E88 i +0x7E89 j +0x7E8A k +0x7E8B l +0x7E8C m +0x7E8D n +0x7E8E o +0x7E8F p +0x7E90 q +0x7E91 r +0x7E92 s +0x7E93 t +0x7E94 u +0x7E95 v +0x7E96 w +0x7E97 x +0x7E98 y +0x7E99 z +0x7E9A { +0x7E9B +0x7E9C | +0x7E9D } +0x7E9E ~ +0x7E9F +0x7EA0 +0x7EA1 +0x7EA2 +0x7EA3 +0x7EA4 +0x7EA5 +0x7EA6 Լ +0x7EA7 +0x7EA8 +0x7EA9 +0x7EAA +0x7EAB +0x7EAC γ +0x7EAD +0x7EAE +0x7EAF +0x7EB0 +0x7EB1 ɴ +0x7EB2 +0x7EB3 +0x7EB4 +0x7EB5 +0x7EB6 +0x7EB7 +0x7EB8 ֽ +0x7EB9 +0x7EBA +0x7EBB +0x7EBC +0x7EBD Ŧ +0x7EBE +0x7EBF +0x7EC0 +0x7EC1 +0x7EC2 +0x7EC3 +0x7EC4 +0x7EC5 +0x7EC6 ϸ +0x7EC7 ֯ +0x7EC8 +0x7EC9 +0x7ECA +0x7ECB +0x7ECC +0x7ECD +0x7ECE +0x7ECF +0x7ED0 +0x7ED1 +0x7ED2 +0x7ED3 +0x7ED4 +0x7ED5 +0x7ED6 +0x7ED7 +0x7ED8 +0x7ED9 +0x7EDA Ѥ +0x7EDB +0x7EDC +0x7EDD +0x7EDE +0x7EDF ͳ +0x7EE0 +0x7EE1 +0x7EE2 +0x7EE3 +0x7EE4 +0x7EE5 +0x7EE6 +0x7EE7 +0x7EE8 +0x7EE9 +0x7EEA +0x7EEB +0x7EEC +0x7EED +0x7EEE +0x7EEF +0x7EF0 +0x7EF1 +0x7EF2 +0x7EF3 +0x7EF4 ά +0x7EF5 +0x7EF6 +0x7EF7 +0x7EF8 +0x7EF9 +0x7EFA +0x7EFB +0x7EFC +0x7EFD +0x7EFE +0x7EFF +0x7F00 ׺ +0x7F01 +0x7F02 +0x7F03 +0x7F04 +0x7F05 +0x7F06 +0x7F07 +0x7F08 +0x7F09 +0x7F0A +0x7F0B +0x7F0C +0x7F0D +0x7F0E +0x7F0F +0x7F10 +0x7F11 +0x7F12 +0x7F13 +0x7F14 +0x7F15 +0x7F16 +0x7F17 +0x7F18 Ե +0x7F19 +0x7F1A +0x7F1B +0x7F1C +0x7F1D +0x7F1E +0x7F1F +0x7F20 +0x7F21 +0x7F22 +0x7F23 +0x7F24 +0x7F25 +0x7F26 +0x7F27 +0x7F28 ӧ +0x7F29 +0x7F2A +0x7F2B +0x7F2C +0x7F2D +0x7F2E +0x7F2F +0x7F30 +0x7F31 +0x7F32 +0x7F33 +0x7F34 +0x7F35 +0x7F36 +0x7F37 +0x7F38 +0x7F39 +0x7F3A ȱ +0x7F3B +0x7F3C +0x7F3D +0x7F3E +0x7F3F +0x7F40 +0x7F41 +0x7F42 +0x7F43 +0x7F44 +0x7F45 +0x7F46 +0x7F47 +0x7F48 +0x7F49 +0x7F4A +0x7F4B +0x7F4C +0x7F4D +0x7F4E +0x7F4F +0x7F50 +0x7F51 +0x7F52 +0x7F53 +0x7F54 +0x7F55 +0x7F56 @ +0x7F57 +0x7F58 +0x7F59 A +0x7F5A +0x7F5B B +0x7F5C C +0x7F5D D +0x7F5E E +0x7F5F +0x7F60 F +0x7F61 +0x7F62 +0x7F63 G +0x7F64 H +0x7F65 I +0x7F66 J +0x7F67 K +0x7F68 +0x7F69 +0x7F6A +0x7F6B L +0x7F6C M +0x7F6D N +0x7F6E +0x7F6F O +0x7F70 P +0x7F71 +0x7F72 +0x7F73 Q +0x7F74 +0x7F75 R +0x7F76 S +0x7F77 T +0x7F78 U +0x7F79 +0x7F7A V +0x7F7B W +0x7F7C X +0x7F7D Y +0x7F7E +0x7F7F Z +0x7F80 [ +0x7F81 +0x7F82 \ +0x7F83 ] +0x7F84 ^ +0x7F85 _ +0x7F86 ` +0x7F87 a +0x7F88 b +0x7F89 c +0x7F8A +0x7F8B d +0x7F8C Ǽ +0x7F8D e +0x7F8E +0x7F8F f +0x7F90 g +0x7F91 h +0x7F92 i +0x7F93 j +0x7F94 +0x7F95 k +0x7F96 l +0x7F97 m +0x7F98 n +0x7F99 o +0x7F9A +0x7F9B p +0x7F9C q +0x7F9D +0x7F9E +0x7F9F +0x7FA0 r +0x7FA1 +0x7FA2 s +0x7FA3 t +0x7FA4 Ⱥ +0x7FA5 u +0x7FA6 v +0x7FA7 +0x7FA8 w +0x7FA9 x +0x7FAA y +0x7FAB z +0x7FAC { +0x7FAD | +0x7FAE } +0x7FAF +0x7FB0 +0x7FB1 ~ +0x7FB2 +0x7FB3 +0x7FB4 +0x7FB5 +0x7FB6 +0x7FB7 +0x7FB8 +0x7FB9 +0x7FBA +0x7FBB +0x7FBC +0x7FBD +0x7FBE +0x7FBF +0x7FC0 +0x7FC1 +0x7FC2 +0x7FC3 +0x7FC4 +0x7FC5 +0x7FC6 +0x7FC7 +0x7FC8 +0x7FC9 +0x7FCA +0x7FCB +0x7FCC +0x7FCD +0x7FCE +0x7FCF +0x7FD0 +0x7FD1 +0x7FD2 +0x7FD3 +0x7FD4 +0x7FD5 +0x7FD6 +0x7FD7 +0x7FD8 +0x7FD9 +0x7FDA +0x7FDB +0x7FDC +0x7FDD +0x7FDE +0x7FDF +0x7FE0 +0x7FE1 +0x7FE2 +0x7FE3 +0x7FE4 @ +0x7FE5 +0x7FE6 +0x7FE7 A +0x7FE8 B +0x7FE9 +0x7FEA C +0x7FEB D +0x7FEC E +0x7FED F +0x7FEE +0x7FEF G +0x7FF0 +0x7FF1 +0x7FF2 H +0x7FF3 +0x7FF4 I +0x7FF5 J +0x7FF6 K +0x7FF7 L +0x7FF8 M +0x7FF9 N +0x7FFA O +0x7FFB +0x7FFC +0x7FFD P +0x7FFE Q +0x7FFF R +0x8000 ҫ +0x8001 +0x8002 S +0x8003 +0x8004 +0x8005 +0x8006 +0x8007 T +0x8008 U +0x8009 V +0x800A W +0x800B +0x800C +0x800D ˣ +0x800E X +0x800F Y +0x8010 +0x8011 Z +0x8012 +0x8013 [ +0x8014 +0x8015 +0x8016 +0x8017 +0x8018 +0x8019 +0x801A \ +0x801B ] +0x801C +0x801D ^ +0x801E _ +0x801F ` +0x8020 +0x8021 a +0x8022 +0x8023 b +0x8024 c +0x8025 +0x8026 +0x8027 +0x8028 +0x8029 +0x802A +0x802B d +0x802C e +0x802D f +0x802E g +0x802F h +0x8030 i +0x8031 +0x8032 j +0x8033 +0x8034 k +0x8035 +0x8036 Ү +0x8037 +0x8038 +0x8039 l +0x803A m +0x803B +0x803C n +0x803D +0x803E o +0x803F +0x8040 p +0x8041 q +0x8042 +0x8043 +0x8044 r +0x8045 s +0x8046 +0x8047 t +0x8048 u +0x8049 v +0x804A +0x804B +0x804C ְ +0x804D +0x804E w +0x804F x +0x8050 y +0x8051 z +0x8052 +0x8053 { +0x8054 +0x8055 | +0x8056 } +0x8057 ~ +0x8058 Ƹ +0x8059 € +0x805A +0x805B  +0x805C ‚ +0x805D ƒ +0x805E „ +0x805F … +0x8060 † +0x8061 ‡ +0x8062 ˆ +0x8063 ‰ +0x8064 Š +0x8065 ‹ +0x8066 Œ +0x8067  +0x8068 Ž +0x8069 +0x806A +0x806B  +0x806C  +0x806D ‘ +0x806E ’ +0x806F “ +0x8070 ” +0x8071 +0x8072 • +0x8073 – +0x8074 — +0x8075 ˜ +0x8076 ™ +0x8077 š +0x8078 › +0x8079 œ +0x807A  +0x807B ž +0x807C Ÿ +0x807D   +0x807E @ +0x807F +0x8080 +0x8081 A +0x8082 B +0x8083 +0x8084 +0x8085 C +0x8086 +0x8087 +0x8088 D +0x8089 +0x808A E +0x808B +0x808C +0x808D F +0x808E G +0x808F H +0x8090 I +0x8091 J +0x8092 K +0x8093 +0x8094 L +0x8095 M +0x8096 Ф +0x8097 N +0x8098 +0x8099 O +0x809A +0x809B +0x809C +0x809D +0x809E P +0x809F +0x80A0 +0x80A1 +0x80A2 ֫ +0x80A3 Q +0x80A4 +0x80A5 +0x80A6 R +0x80A7 S +0x80A8 T +0x80A9 +0x80AA +0x80AB +0x80AC U +0x80AD +0x80AE +0x80AF +0x80B0 V +0x80B1 +0x80B2 +0x80B3 W +0x80B4 +0x80B5 X +0x80B6 Y +0x80B7 +0x80B8 Z +0x80B9 [ +0x80BA +0x80BB \ +0x80BC +0x80BD +0x80BE +0x80BF +0x80C0 +0x80C1 в +0x80C2 +0x80C3 θ +0x80C4 +0x80C5 ] +0x80C6 +0x80C7 ^ +0x80C8 _ +0x80C9 ` +0x80CA a +0x80CB b +0x80CC +0x80CD +0x80CE ̥ +0x80CF c +0x80D0 d +0x80D1 e +0x80D2 f +0x80D3 g +0x80D4 h +0x80D5 i +0x80D6 +0x80D7 +0x80D8 j +0x80D9 +0x80DA +0x80DB +0x80DC ʤ +0x80DD +0x80DE +0x80DF k +0x80E0 l +0x80E1 +0x80E2 m +0x80E3 n +0x80E4 ط +0x80E5 +0x80E6 o +0x80E7 +0x80E8 +0x80E9 +0x80EA +0x80EB +0x80EC +0x80ED +0x80EE p +0x80EF +0x80F0 +0x80F1 +0x80F2 +0x80F3 +0x80F4 +0x80F5 q +0x80F6 +0x80F7 r +0x80F8 +0x80F9 s +0x80FA +0x80FB t +0x80FC +0x80FD +0x80FE u +0x80FF v +0x8100 w +0x8101 x +0x8102 ֬ +0x8103 y +0x8104 z +0x8105 { +0x8106 +0x8107 | +0x8108 } +0x8109 +0x810A +0x810B ~ +0x810C À +0x810D +0x810E +0x810F +0x8110 +0x8111 +0x8112 +0x8113 ŧ +0x8114 +0x8115 Á +0x8116 +0x8117  +0x8118 +0x8119 à +0x811A +0x811B Ä +0x811C Å +0x811D Æ +0x811E +0x811F Ç +0x8120 È +0x8121 É +0x8122 Ê +0x8123 Ë +0x8124 Ì +0x8125 Í +0x8126 Î +0x8127 Ï +0x8128 Ð +0x8129 Ñ +0x812A Ò +0x812B Ó +0x812C +0x812D Ô +0x812E Õ +0x812F +0x8130 Ö +0x8131 +0x8132 +0x8133 × +0x8134 Ø +0x8135 Ù +0x8136 +0x8137 Ú +0x8138 +0x8139 Û +0x813A Ü +0x813B Ý +0x813C Þ +0x813D ß +0x813E Ƣ +0x813F à +0x8140 @ +0x8141 A +0x8142 B +0x8143 C +0x8144 D +0x8145 E +0x8146 +0x8147 F +0x8148 +0x8149 G +0x814A +0x814B Ҹ +0x814C +0x814D H +0x814E I +0x814F J +0x8150 +0x8151 +0x8152 K +0x8153 +0x8154 ǻ +0x8155 +0x8156 L +0x8157 M +0x8158 N +0x8159 +0x815A +0x815B O +0x815C P +0x815D Q +0x815E R +0x815F S +0x8160 +0x8161 T +0x8162 U +0x8163 V +0x8164 W +0x8165 +0x8166 X +0x8167 +0x8168 Y +0x8169 +0x816A Z +0x816B [ +0x816C \ +0x816D +0x816E +0x816F ] +0x8170 +0x8171 +0x8172 ^ +0x8173 _ +0x8174 +0x8175 ` +0x8176 a +0x8177 b +0x8178 c +0x8179 +0x817A +0x817B +0x817C +0x817D +0x817E +0x817F +0x8180 +0x8181 d +0x8182 +0x8183 e +0x8184 f +0x8185 g +0x8186 h +0x8187 i +0x8188 +0x8189 j +0x818A +0x818B k +0x818C l +0x818D m +0x818E n +0x818F +0x8190 o +0x8191 +0x8192 p +0x8193 q +0x8194 r +0x8195 s +0x8196 t +0x8197 u +0x8198 +0x8199 v +0x819A w +0x819B +0x819C Ĥ +0x819D ϥ +0x819E x +0x819F y +0x81A0 z +0x81A1 { +0x81A2 | +0x81A3 +0x81A4 } +0x81A5 ~ +0x81A6 +0x81A7 Ā +0x81A8 +0x81A9 ā +0x81AA +0x81AB Ă +0x81AC ă +0x81AD Ą +0x81AE ą +0x81AF Ć +0x81B0 ć +0x81B1 Ĉ +0x81B2 ĉ +0x81B3 +0x81B4 Ċ +0x81B5 ċ +0x81B6 Č +0x81B7 č +0x81B8 Ď +0x81B9 ď +0x81BA +0x81BB +0x81BC Đ +0x81BD đ +0x81BE Ē +0x81BF ē +0x81C0 +0x81C1 +0x81C2 +0x81C3 ӷ +0x81C4 Ĕ +0x81C5 ĕ +0x81C6 +0x81C7 Ė +0x81C8 ė +0x81C9 Ę +0x81CA +0x81CB ę +0x81CC +0x81CD Ě +0x81CE ě +0x81CF Ĝ +0x81D0 ĝ +0x81D1 Ğ +0x81D2 ğ +0x81D3 Ġ +0x81D4 @ +0x81D5 A +0x81D6 B +0x81D7 C +0x81D8 D +0x81D9 E +0x81DA F +0x81DB G +0x81DC H +0x81DD I +0x81DE J +0x81DF K +0x81E0 L +0x81E1 M +0x81E2 N +0x81E3 +0x81E4 O +0x81E5 P +0x81E6 Q +0x81E7 +0x81E8 R +0x81E9 S +0x81EA +0x81EB T +0x81EC +0x81ED +0x81EE U +0x81EF V +0x81F0 W +0x81F1 X +0x81F2 Y +0x81F3 +0x81F4 +0x81F5 Z +0x81F6 [ +0x81F7 \ +0x81F8 ] +0x81F9 ^ +0x81FA _ +0x81FB +0x81FC +0x81FD ` +0x81FE +0x81FF a +0x8200 Ҩ +0x8201 +0x8202 +0x8203 b +0x8204 +0x8205 +0x8206 +0x8207 c +0x8208 d +0x8209 e +0x820A f +0x820B g +0x820C +0x820D +0x820E h +0x820F i +0x8210 +0x8211 j +0x8212 +0x8213 k +0x8214 +0x8215 l +0x8216 m +0x8217 n +0x8218 o +0x8219 p +0x821A q +0x821B +0x821C ˴ +0x821D r +0x821E +0x821F +0x8220 s +0x8221 +0x8222 +0x8223 +0x8224 t +0x8225 u +0x8226 v +0x8227 w +0x8228 +0x8229 x +0x822A +0x822B +0x822C +0x822D +0x822E y +0x822F +0x8230 +0x8231 +0x8232 z +0x8233 +0x8234 +0x8235 +0x8236 +0x8237 +0x8238 +0x8239 +0x823A { +0x823B +0x823C | +0x823D } +0x823E +0x823F ~ +0x8240 ŀ +0x8241 Ł +0x8242 ł +0x8243 Ń +0x8244 +0x8245 ń +0x8246 Ņ +0x8247 ͧ +0x8248 ņ +0x8249 +0x824A Ň +0x824B +0x824C ň +0x824D ʼn +0x824E Ŋ +0x824F +0x8250 ŋ +0x8251 Ō +0x8252 ō +0x8253 Ŏ +0x8254 ŏ +0x8255 Ő +0x8256 ő +0x8257 Œ +0x8258 +0x8259 œ +0x825A +0x825B Ŕ +0x825C ŕ +0x825D Ŗ +0x825E ŗ +0x825F +0x8260 Ř +0x8261 ř +0x8262 Ś +0x8263 ś +0x8264 Ŝ +0x8265 ŝ +0x8266 Ş +0x8267 ş +0x8268 +0x8269 Š +0x826A @ +0x826B A +0x826C B +0x826D C +0x826E +0x826F +0x8270 +0x8271 D +0x8272 ɫ +0x8273 +0x8274 +0x8275 E +0x8276 F +0x8277 G +0x8278 H +0x8279 ܳ +0x827A +0x827B I +0x827C J +0x827D ܴ +0x827E +0x827F ܵ +0x8280 K +0x8281 L +0x8282 +0x8283 M +0x8284 ܹ +0x8285 N +0x8286 O +0x8287 P +0x8288 +0x8289 Q +0x828A ܷ +0x828B +0x828C R +0x828D +0x828E ܺ +0x828F ܶ +0x8290 S +0x8291 ܻ +0x8292 â +0x8293 T +0x8294 U +0x8295 V +0x8296 W +0x8297 ܼ +0x8298 +0x8299 ܽ +0x829A X +0x829B Y +0x829C +0x829D ֥ +0x829E Z +0x829F +0x82A0 [ +0x82A1 +0x82A2 \ +0x82A3 ] +0x82A4 +0x82A5 +0x82A6 « +0x82A7 ^ +0x82A8 ܸ +0x82A9 +0x82AA +0x82AB ܾ +0x82AC +0x82AD +0x82AE +0x82AF о +0x82B0 +0x82B1 +0x82B2 _ +0x82B3 +0x82B4 +0x82B5 ` +0x82B6 a +0x82B7 +0x82B8 ܿ +0x82B9 +0x82BA b +0x82BB c +0x82BC d +0x82BD ѿ +0x82BE +0x82BF e +0x82C0 f +0x82C1 +0x82C2 g +0x82C3 h +0x82C4 +0x82C5 i +0x82C6 j +0x82C7 έ +0x82C8 +0x82C9 k +0x82CA +0x82CB +0x82CC +0x82CD +0x82CE +0x82CF +0x82D0 l +0x82D1 Է +0x82D2 +0x82D3 +0x82D4 ̦ +0x82D5 +0x82D6 m +0x82D7 +0x82D8 +0x82D9 n +0x82DA o +0x82DB +0x82DC +0x82DD p +0x82DE +0x82DF +0x82E0 +0x82E1 +0x82E2 q +0x82E3 +0x82E4 +0x82E5 +0x82E6 +0x82E7 r +0x82E8 s +0x82E9 t +0x82EA u +0x82EB ɻ +0x82EC v +0x82ED w +0x82EE x +0x82EF +0x82F0 y +0x82F1 Ӣ +0x82F2 z +0x82F3 { +0x82F4 +0x82F5 | +0x82F6 } +0x82F7 +0x82F8 ~ +0x82F9 ƻ +0x82FA ƀ +0x82FB +0x82FC Ɓ +0x82FD Ƃ +0x82FE ƃ +0x82FF Ƅ +0x8300 ƅ +0x8301 +0x8302 ï +0x8303 +0x8304 +0x8305 é +0x8306 +0x8307 +0x8308 +0x8309 +0x830A Ɔ +0x830B Ƈ +0x830C +0x830D ƈ +0x830E +0x830F +0x8310 Ɖ +0x8311 +0x8312 Ɗ +0x8313 Ƌ +0x8314 +0x8315 +0x8316 ƌ +0x8317 +0x8318 ƍ +0x8319 Ǝ +0x831A +0x831B ݢ +0x831C +0x831D Ə +0x831E Ɛ +0x831F Ƒ +0x8320 ƒ +0x8321 Ɠ +0x8322 Ɣ +0x8323 ƕ +0x8324 Ɩ +0x8325 Ɨ +0x8326 Ƙ +0x8327 +0x8328 +0x8329 ƙ +0x832A ƚ +0x832B ã +0x832C +0x832D +0x832E ƛ +0x832F +0x8330 Ɯ +0x8331 +0x8332 Ɲ +0x8333 +0x8334 +0x8335 +0x8336 +0x8337 ƞ +0x8338 +0x8339 +0x833A +0x833B Ɵ +0x833C +0x833D Ơ +0x833E @ +0x833F A +0x8340 +0x8341 B +0x8342 C +0x8343 +0x8344 D +0x8345 E +0x8346 +0x8347 +0x8348 F +0x8349 +0x834A G +0x834B H +0x834C I +0x834D J +0x834E K +0x834F +0x8350 +0x8351 +0x8352 +0x8353 L +0x8354 +0x8355 M +0x8356 N +0x8357 O +0x8358 P +0x8359 Q +0x835A +0x835B +0x835C +0x835D R +0x835E +0x835F +0x8360 +0x8361 +0x8362 S +0x8363 +0x8364 +0x8365 +0x8366 +0x8367 ӫ +0x8368 ݡ +0x8369 ݣ +0x836A ݥ +0x836B +0x836C ݤ +0x836D ݦ +0x836E ݧ +0x836F ҩ +0x8370 T +0x8371 U +0x8372 V +0x8373 W +0x8374 X +0x8375 Y +0x8376 Z +0x8377 +0x8378 ݩ +0x8379 [ +0x837A \ +0x837B ݶ +0x837C ݱ +0x837D ݴ +0x837E ] +0x837F ^ +0x8380 _ +0x8381 ` +0x8382 a +0x8383 b +0x8384 c +0x8385 ݰ +0x8386 +0x8387 d +0x8388 e +0x8389 +0x838A f +0x838B g +0x838C h +0x838D i +0x838E ɯ +0x838F j +0x8390 k +0x8391 l +0x8392 +0x8393 ݮ +0x8394 m +0x8395 n +0x8396 o +0x8397 p +0x8398 ݷ +0x8399 q +0x839A r +0x839B +0x839C ݯ +0x839D s +0x839E ݸ +0x839F t +0x83A0 ݬ +0x83A1 u +0x83A2 v +0x83A3 w +0x83A4 x +0x83A5 y +0x83A6 z +0x83A7 { +0x83A8 ݹ +0x83A9 ݳ +0x83AA ݭ +0x83AB Ī +0x83AC | +0x83AD } +0x83AE ~ +0x83AF ǀ +0x83B0 ݨ +0x83B1 +0x83B2 +0x83B3 ݪ +0x83B4 ݫ +0x83B5 ǁ +0x83B6 ݲ +0x83B7 +0x83B8 ݵ +0x83B9 Ө +0x83BA ݺ +0x83BB ǂ +0x83BC ݻ +0x83BD ç +0x83BE ǃ +0x83BF DŽ +0x83C0 +0x83C1 ݼ +0x83C2 Dž +0x83C3 dž +0x83C4 LJ +0x83C5 +0x83C6 Lj +0x83C7 +0x83C8 lj +0x83C9 NJ +0x83CA +0x83CB Nj +0x83CC +0x83CD nj +0x83CE Ǎ +0x83CF +0x83D0 ǎ +0x83D1 Ǐ +0x83D2 ǐ +0x83D3 Ǒ +0x83D4 +0x83D5 ǒ +0x83D6 +0x83D7 Ǔ +0x83D8 ݿ +0x83D9 ǔ +0x83DA Ǖ +0x83DB ǖ +0x83DC +0x83DD +0x83DE Ǘ +0x83DF +0x83E0 +0x83E1 +0x83E2 ǘ +0x83E3 Ǚ +0x83E4 ǚ +0x83E5 ݾ +0x83E6 Ǜ +0x83E7 ǜ +0x83E8 ǝ +0x83E9 +0x83EA +0x83EB Ǟ +0x83EC ǟ +0x83ED Ǡ +0x83EE @ +0x83EF A +0x83F0 +0x83F1 +0x83F2 +0x83F3 B +0x83F4 C +0x83F5 D +0x83F6 E +0x83F7 F +0x83F8 +0x83F9 +0x83FA G +0x83FB H +0x83FC I +0x83FD +0x83FE J +0x83FF K +0x8400 L +0x8401 ݽ +0x8402 M +0x8403 +0x8404 +0x8405 N +0x8406 +0x8407 O +0x8408 P +0x8409 Q +0x840A R +0x840B +0x840C +0x840D Ƽ +0x840E ή +0x840F +0x8410 S +0x8411 +0x8412 T +0x8413 U +0x8414 V +0x8415 W +0x8416 X +0x8417 Y +0x8418 +0x8419 Z +0x841A [ +0x841B \ +0x841C +0x841D +0x841E ] +0x841F ^ +0x8420 _ +0x8421 ` +0x8422 a +0x8423 b +0x8424 ө +0x8425 Ӫ +0x8426 +0x8427 +0x8428 +0x8429 c +0x842A d +0x842B e +0x842C f +0x842D g +0x842E h +0x842F i +0x8430 j +0x8431 +0x8432 k +0x8433 l +0x8434 m +0x8435 n +0x8436 o +0x8437 p +0x8438 +0x8439 q +0x843A r +0x843B s +0x843C +0x843D +0x843E t +0x843F u +0x8440 v +0x8441 w +0x8442 x +0x8443 y +0x8444 z +0x8445 { +0x8446 +0x8447 | +0x8448 } +0x8449 ~ +0x844A Ȁ +0x844B ȁ +0x844C Ȃ +0x844D ȃ +0x844E Ȅ +0x844F ȅ +0x8450 Ȇ +0x8451 +0x8452 ȇ +0x8453 Ȉ +0x8454 ȉ +0x8455 Ȋ +0x8456 ȋ +0x8457 +0x8458 Ȍ +0x8459 +0x845A +0x845B +0x845C +0x845D ȍ +0x845E Ȏ +0x845F ȏ +0x8460 Ȑ +0x8461 +0x8462 ȑ +0x8463 +0x8464 Ȓ +0x8465 ȓ +0x8466 Ȕ +0x8467 ȕ +0x8468 Ȗ +0x8469 +0x846A ȗ +0x846B +0x846C +0x846D +0x846E Ș +0x846F ș +0x8470 Ț +0x8471 +0x8472 ț +0x8473 +0x8474 Ȝ +0x8475 +0x8476 +0x8477 ȝ +0x8478 +0x8479 Ȟ +0x847A +0x847B ȟ +0x847C Ƞ +0x847D @ +0x847E A +0x847F B +0x8480 C +0x8481 D +0x8482 +0x8483 E +0x8484 F +0x8485 G +0x8486 H +0x8487 +0x8488 +0x8489 +0x848A I +0x848B +0x848C +0x848D J +0x848E +0x848F K +0x8490 L +0x8491 M +0x8492 N +0x8493 O +0x8494 P +0x8495 Q +0x8496 R +0x8497 +0x8498 S +0x8499 +0x849A T +0x849B U +0x849C +0x849D V +0x849E W +0x849F X +0x84A0 Y +0x84A1 +0x84A2 Z +0x84A3 [ +0x84A4 \ +0x84A5 ] +0x84A6 ^ +0x84A7 _ +0x84A8 ` +0x84A9 a +0x84AA b +0x84AB c +0x84AC d +0x84AD e +0x84AE f +0x84AF +0x84B0 g +0x84B1 h +0x84B2 +0x84B3 i +0x84B4 +0x84B5 j +0x84B6 k +0x84B7 l +0x84B8 +0x84B9 +0x84BA +0x84BB m +0x84BC n +0x84BD +0x84BE o +0x84BF +0x84C0 p +0x84C1 +0x84C2 q +0x84C3 r +0x84C4 +0x84C5 s +0x84C6 t +0x84C7 u +0x84C8 v +0x84C9 +0x84CA +0x84CB w +0x84CC x +0x84CD +0x84CE y +0x84CF z +0x84D0 +0x84D1 +0x84D2 { +0x84D3 +0x84D4 | +0x84D5 } +0x84D6 +0x84D7 ~ +0x84D8 ɀ +0x84D9 Ɂ +0x84DA ɂ +0x84DB Ƀ +0x84DC Ʉ +0x84DD +0x84DE Ʌ +0x84DF +0x84E0 +0x84E1 Ɇ +0x84E2 ɇ +0x84E3 +0x84E4 Ɉ +0x84E5 +0x84E6 +0x84E7 ɉ +0x84E8 Ɋ +0x84E9 ɋ +0x84EA Ɍ +0x84EB ɍ +0x84EC +0x84ED Ɏ +0x84EE ɏ +0x84EF ɐ +0x84F0 +0x84F1 ɑ +0x84F2 ɒ +0x84F3 ɓ +0x84F4 ɔ +0x84F5 ɕ +0x84F6 ɖ +0x84F7 ɗ +0x84F8 ɘ +0x84F9 ə +0x84FA ɚ +0x84FB ɛ +0x84FC ޤ +0x84FD ɜ +0x84FE ɝ +0x84FF ޣ +0x8500 ɞ +0x8501 ɟ +0x8502 ɠ +0x8503 @ +0x8504 A +0x8505 B +0x8506 C +0x8507 D +0x8508 E +0x8509 F +0x850A G +0x850B H +0x850C +0x850D I +0x850E J +0x850F K +0x8510 L +0x8511 +0x8512 M +0x8513 +0x8514 N +0x8515 O +0x8516 P +0x8517 +0x8518 Q +0x8519 R +0x851A ε +0x851B S +0x851C T +0x851D U +0x851E V +0x851F +0x8520 W +0x8521 +0x8522 X +0x8523 Y +0x8524 Z +0x8525 [ +0x8526 \ +0x8527 ] +0x8528 ^ +0x8529 _ +0x852A ` +0x852B +0x852C +0x852D a +0x852E b +0x852F c +0x8530 d +0x8531 e +0x8532 f +0x8533 g +0x8534 h +0x8535 i +0x8536 j +0x8537 Ǿ +0x8538 +0x8539 +0x853A +0x853B ޢ +0x853C +0x853D +0x853E k +0x853F l +0x8540 m +0x8541 n +0x8542 o +0x8543 ެ +0x8544 p +0x8545 q +0x8546 r +0x8547 s +0x8548 ަ +0x8549 +0x854A +0x854B t +0x854C u +0x854D v +0x854E w +0x854F x +0x8550 y +0x8551 z +0x8552 { +0x8553 | +0x8554 } +0x8555 ~ +0x8556 ޡ +0x8557 ʀ +0x8558 ʁ +0x8559 ޥ +0x855A ʂ +0x855B ʃ +0x855C ʄ +0x855D ʅ +0x855E ީ +0x855F ʆ +0x8560 ʇ +0x8561 ʈ +0x8562 ʉ +0x8563 ʊ +0x8564 ި +0x8565 ʋ +0x8566 ʌ +0x8567 ʍ +0x8568 ާ +0x8569 ʎ +0x856A ʏ +0x856B ʐ +0x856C ʑ +0x856D ʒ +0x856E ʓ +0x856F ʔ +0x8570 ʕ +0x8571 ʖ +0x8572 ޭ +0x8573 ʗ +0x8574 +0x8575 ʘ +0x8576 ʙ +0x8577 ʚ +0x8578 ʛ +0x8579 ޳ +0x857A ު +0x857B ޮ +0x857C ʜ +0x857D ʝ +0x857E +0x857F ʞ +0x8580 ʟ +0x8581 ʠ +0x8582 @ +0x8583 A +0x8584 +0x8585 ޶ +0x8586 B +0x8587 ޱ +0x8588 C +0x8589 D +0x858A E +0x858B F +0x858C G +0x858D H +0x858E I +0x858F ޲ +0x8590 J +0x8591 K +0x8592 L +0x8593 M +0x8594 N +0x8595 O +0x8596 P +0x8597 Q +0x8598 R +0x8599 S +0x859A T +0x859B Ѧ +0x859C ޵ +0x859D U +0x859E V +0x859F W +0x85A0 X +0x85A1 Y +0x85A2 Z +0x85A3 [ +0x85A4 ޯ +0x85A5 \ +0x85A6 ] +0x85A7 ^ +0x85A8 ް +0x85A9 _ +0x85AA н +0x85AB ` +0x85AC a +0x85AD b +0x85AE ޴ +0x85AF +0x85B0 ޹ +0x85B1 c +0x85B2 d +0x85B3 e +0x85B4 f +0x85B5 g +0x85B6 h +0x85B7 ޸ +0x85B8 i +0x85B9 ޷ +0x85BA j +0x85BB k +0x85BC l +0x85BD m +0x85BE n +0x85BF o +0x85C0 p +0x85C1 ޻ +0x85C2 q +0x85C3 r +0x85C4 s +0x85C5 t +0x85C6 u +0x85C7 v +0x85C8 w +0x85C9 +0x85CA x +0x85CB y +0x85CC z +0x85CD { +0x85CE | +0x85CF +0x85D0 +0x85D1 } +0x85D2 ~ +0x85D3 ޺ +0x85D4 ˀ +0x85D5 ź +0x85D6 ˁ +0x85D7 ˂ +0x85D8 ˃ +0x85D9 ˄ +0x85DA ˅ +0x85DB ˆ +0x85DC ޼ +0x85DD ˇ +0x85DE ˈ +0x85DF ˉ +0x85E0 ˊ +0x85E1 ˋ +0x85E2 ˌ +0x85E3 ˍ +0x85E4 +0x85E5 ˎ +0x85E6 ˏ +0x85E7 ː +0x85E8 ˑ +0x85E9 +0x85EA ˒ +0x85EB ˓ +0x85EC ˔ +0x85ED ˕ +0x85EE ˖ +0x85EF ˗ +0x85F0 ˘ +0x85F1 ˙ +0x85F2 ˚ +0x85F3 ˛ +0x85F4 ˜ +0x85F5 ˝ +0x85F6 ˞ +0x85F7 ˟ +0x85F8 ˠ +0x85F9 @ +0x85FA A +0x85FB +0x85FC B +0x85FD C +0x85FE D +0x85FF ޽ +0x8600 E +0x8601 F +0x8602 G +0x8603 H +0x8604 I +0x8605 ޿ +0x8606 J +0x8607 K +0x8608 L +0x8609 M +0x860A N +0x860B O +0x860C P +0x860D Q +0x860E R +0x860F S +0x8610 T +0x8611 Ģ +0x8612 U +0x8613 V +0x8614 W +0x8615 X +0x8616 +0x8617 Y +0x8618 Z +0x8619 [ +0x861A \ +0x861B ] +0x861C ^ +0x861D _ +0x861E ` +0x861F a +0x8620 b +0x8621 c +0x8622 d +0x8623 e +0x8624 f +0x8625 g +0x8626 h +0x8627 ޾ +0x8628 i +0x8629 +0x862A j +0x862B k +0x862C l +0x862D m +0x862E n +0x862F o +0x8630 p +0x8631 q +0x8632 r +0x8633 s +0x8634 t +0x8635 u +0x8636 v +0x8637 w +0x8638 պ +0x8639 x +0x863A y +0x863B z +0x863C +0x863D { +0x863E | +0x863F } +0x8640 ~ +0x8641 ̀ +0x8642 ́ +0x8643 ̂ +0x8644 ̃ +0x8645 ̄ +0x8646 ̅ +0x8647 ̆ +0x8648 ̇ +0x8649 ̈ +0x864A ̉ +0x864B ̊ +0x864C ̋ +0x864D +0x864E +0x864F ² +0x8650 Ű +0x8651 +0x8652 ̌ +0x8653 ̍ +0x8654 +0x8655 ̎ +0x8656 ̏ +0x8657 ̐ +0x8658 ̑ +0x8659 ̒ +0x865A +0x865B ̓ +0x865C ̔ +0x865D ̕ +0x865E +0x865F ̖ +0x8660 ̗ +0x8661 ̘ +0x8662 +0x8663 ̙ +0x8664 ̚ +0x8665 ̛ +0x8666 ̜ +0x8667 ̝ +0x8668 ̞ +0x8669 ̟ +0x866A ̠ +0x866B +0x866C +0x866D @ +0x866E +0x866F A +0x8670 B +0x8671 ʭ +0x8672 C +0x8673 D +0x8674 E +0x8675 F +0x8676 G +0x8677 H +0x8678 I +0x8679 +0x867A +0x867B +0x867C +0x867D +0x867E Ϻ +0x867F +0x8680 ʴ +0x8681 +0x8682 +0x8683 J +0x8684 K +0x8685 L +0x8686 M +0x8687 N +0x8688 O +0x8689 P +0x868A +0x868B +0x868C +0x868D +0x868E Q +0x868F R +0x8690 S +0x8691 T +0x8692 U +0x8693 +0x8694 V +0x8695 +0x8696 W +0x8697 X +0x8698 Y +0x8699 Z +0x869A [ +0x869B \ +0x869C +0x869D +0x869E ] +0x869F ^ +0x86A0 _ +0x86A1 ` +0x86A2 a +0x86A3 +0x86A4 +0x86A5 b +0x86A6 c +0x86A7 +0x86A8 +0x86A9 +0x86AA +0x86AB d +0x86AC +0x86AD e +0x86AE f +0x86AF +0x86B0 +0x86B1 +0x86B2 g +0x86B3 h +0x86B4 +0x86B5 +0x86B6 +0x86B7 i +0x86B8 j +0x86B9 k +0x86BA +0x86BB l +0x86BC m +0x86BD n +0x86BE o +0x86BF p +0x86C0 +0x86C1 q +0x86C2 r +0x86C3 s +0x86C4 +0x86C5 t +0x86C6 +0x86C7 +0x86C8 u +0x86C9 +0x86CA +0x86CB +0x86CC v +0x86CD w +0x86CE +0x86CF +0x86D0 +0x86D1 +0x86D2 x +0x86D3 y +0x86D4 +0x86D5 z +0x86D6 { +0x86D7 | +0x86D8 +0x86D9 +0x86DA } +0x86DB +0x86DC ~ +0x86DD ̀ +0x86DE +0x86DF +0x86E0 ́ +0x86E1 ͂ +0x86E2 ̓ +0x86E3 ̈́ +0x86E4 +0x86E5 ͅ +0x86E6 ͆ +0x86E7 ͇ +0x86E8 ͈ +0x86E9 +0x86EA ͉ +0x86EB ͊ +0x86EC ͋ +0x86ED +0x86EE +0x86EF ͌ +0x86F0 +0x86F1 +0x86F2 +0x86F3 +0x86F4 +0x86F5 ͍ +0x86F6 ͎ +0x86F7 ͏ +0x86F8 +0x86F9 Ӽ +0x86FA ͐ +0x86FB ͑ +0x86FC ͒ +0x86FD ͓ +0x86FE +0x86FF ͔ +0x8700 +0x8701 ͕ +0x8702 +0x8703 +0x8704 ͖ +0x8705 ͗ +0x8706 ͘ +0x8707 +0x8708 +0x8709 +0x870A +0x870B ͙ +0x870C ͚ +0x870D +0x870E ͛ +0x870F ͜ +0x8710 ͝ +0x8711 ͞ +0x8712 +0x8713 +0x8714 ͟ +0x8715 +0x8716 ͠ +0x8717 +0x8718 ֩ +0x8719 @ +0x871A +0x871B A +0x871C +0x871D B +0x871E +0x871F C +0x8720 D +0x8721 +0x8722 +0x8723 +0x8724 E +0x8725 +0x8726 F +0x8727 G +0x8728 H +0x8729 +0x872A I +0x872B J +0x872C K +0x872D L +0x872E +0x872F M +0x8730 N +0x8731 +0x8732 O +0x8733 P +0x8734 +0x8735 Q +0x8736 R +0x8737 +0x8738 S +0x8739 T +0x873A U +0x873B +0x873C V +0x873D W +0x873E +0x873F +0x8740 X +0x8741 Y +0x8742 Z +0x8743 [ +0x8744 \ +0x8745 ] +0x8746 ^ +0x8747 Ӭ +0x8748 +0x8749 +0x874A _ +0x874B ` +0x874C +0x874D a +0x874E Ы +0x874F b +0x8750 c +0x8751 d +0x8752 e +0x8753 +0x8754 f +0x8755 g +0x8756 h +0x8757 +0x8758 i +0x8759 +0x875A j +0x875B k +0x875C l +0x875D m +0x875E n +0x875F o +0x8760 +0x8761 p +0x8762 q +0x8763 +0x8764 +0x8765 +0x8766 r +0x8767 s +0x8768 t +0x8769 u +0x876A v +0x876B w +0x876C x +0x876D y +0x876E +0x876F z +0x8770 +0x8771 { +0x8772 | +0x8773 } +0x8774 +0x8775 ~ +0x8776 +0x8777 ΀ +0x8778 ΁ +0x8779 ΂ +0x877A ΃ +0x877B +0x877C +0x877D +0x877E +0x877F ΄ +0x8780 ΅ +0x8781 Ά +0x8782 +0x8783 +0x8784 · +0x8785 +0x8786 Έ +0x8787 Ή +0x8788 +0x8789 Ί +0x878A ΋ +0x878B +0x878C Ό +0x878D +0x878E ΍ +0x878F Ύ +0x8790 Ώ +0x8791 ΐ +0x8792 Α +0x8793 +0x8794 Β +0x8795 Γ +0x8796 Δ +0x8797 +0x8798 Ε +0x8799 Ζ +0x879A Η +0x879B Θ +0x879C Ι +0x879D Κ +0x879E Λ +0x879F +0x87A0 Μ +0x87A1 Ν +0x87A2 Ξ +0x87A3 Ο +0x87A4 Π +0x87A5 @ +0x87A6 A +0x87A7 B +0x87A8 +0x87A9 C +0x87AA D +0x87AB +0x87AC +0x87AD +0x87AE E +0x87AF +0x87B0 F +0x87B1 G +0x87B2 H +0x87B3 +0x87B4 I +0x87B5 +0x87B6 J +0x87B7 K +0x87B8 L +0x87B9 M +0x87BA +0x87BB N +0x87BC O +0x87BD +0x87BE P +0x87BF Q +0x87C0 +0x87C1 R +0x87C2 S +0x87C3 T +0x87C4 U +0x87C5 V +0x87C6 +0x87C7 W +0x87C8 X +0x87C9 Y +0x87CA +0x87CB +0x87CC Z +0x87CD [ +0x87CE \ +0x87CF ] +0x87D0 ^ +0x87D1 +0x87D2 +0x87D3 +0x87D4 _ +0x87D5 ` +0x87D6 a +0x87D7 b +0x87D8 c +0x87D9 d +0x87DA e +0x87DB +0x87DC f +0x87DD g +0x87DE h +0x87DF i +0x87E0 +0x87E1 j +0x87E2 k +0x87E3 l +0x87E4 m +0x87E5 +0x87E6 n +0x87E7 o +0x87E8 p +0x87E9 q +0x87EA +0x87EB r +0x87EC s +0x87ED t +0x87EE +0x87EF u +0x87F0 v +0x87F1 w +0x87F2 x +0x87F3 y +0x87F4 z +0x87F5 { +0x87F6 | +0x87F7 } +0x87F8 ~ +0x87F9 з +0x87FA π +0x87FB ρ +0x87FC ς +0x87FD σ +0x87FE +0x87FF τ +0x8800 υ +0x8801 φ +0x8802 χ +0x8803 +0x8804 ψ +0x8805 ω +0x8806 ϊ +0x8807 ϋ +0x8808 ό +0x8809 ύ +0x880A +0x880B ώ +0x880C Ϗ +0x880D ϐ +0x880E ϑ +0x880F ϒ +0x8810 ϓ +0x8811 ϔ +0x8812 ϕ +0x8813 +0x8814 ϖ +0x8815 +0x8816 +0x8817 ϗ +0x8818 Ϙ +0x8819 ϙ +0x881A Ϛ +0x881B +0x881C ϛ +0x881D Ϝ +0x881E ϝ +0x881F Ϟ +0x8820 ϟ +0x8821 +0x8822 +0x8823 Ϡ +0x8824 @ +0x8825 A +0x8826 B +0x8827 C +0x8828 D +0x8829 E +0x882A F +0x882B G +0x882C H +0x882D I +0x882E J +0x882F K +0x8830 L +0x8831 M +0x8832 +0x8833 N +0x8834 O +0x8835 P +0x8836 Q +0x8837 R +0x8838 S +0x8839 +0x883A T +0x883B U +0x883C +0x883D V +0x883E W +0x883F X +0x8840 Ѫ +0x8841 Y +0x8842 Z +0x8843 [ +0x8844 +0x8845 +0x8846 \ +0x8847 ] +0x8848 ^ +0x8849 _ +0x884A ` +0x884B a +0x884C +0x884D +0x884E b +0x884F c +0x8850 d +0x8851 e +0x8852 f +0x8853 g +0x8854 +0x8855 h +0x8856 i +0x8857 +0x8858 j +0x8859 +0x885A k +0x885B l +0x885C m +0x885D n +0x885E o +0x885F p +0x8860 q +0x8861 +0x8862 +0x8863 +0x8864 +0x8865 +0x8866 r +0x8867 s +0x8868 +0x8869 +0x886A t +0x886B +0x886C +0x886D u +0x886E +0x886F v +0x8870 ˥ +0x8871 w +0x8872 +0x8873 x +0x8874 y +0x8875 z +0x8876 { +0x8877 +0x8878 | +0x8879 } +0x887A ~ +0x887B Ѐ +0x887C Ё +0x887D +0x887E +0x887F +0x8880 Ђ +0x8881 Ԭ +0x8882 +0x8883 Ѓ +0x8884 +0x8885 +0x8886 Є +0x8887 Ѕ +0x8888 +0x8889 І +0x888A Ї +0x888B +0x888C Ј +0x888D +0x888E Љ +0x888F Њ +0x8890 Ћ +0x8891 Ќ +0x8892 ̻ +0x8893 Ѝ +0x8894 Ў +0x8895 Џ +0x8896 +0x8897 А +0x8898 Б +0x8899 В +0x889A Г +0x889B Д +0x889C +0x889D Е +0x889E Ж +0x889F З +0x88A0 И +0x88A1 Й +0x88A2 +0x88A3 К +0x88A4 +0x88A5 Л +0x88A6 М +0x88A7 Н +0x88A8 О +0x88A9 П +0x88AA Р +0x88AB +0x88AC @ +0x88AD Ϯ +0x88AE A +0x88AF B +0x88B0 C +0x88B1 +0x88B2 D +0x88B3 E +0x88B4 F +0x88B5 G +0x88B6 H +0x88B7 +0x88B8 I +0x88B9 J +0x88BA K +0x88BB L +0x88BC +0x88BD M +0x88BE N +0x88BF O +0x88C0 P +0x88C1 +0x88C2 +0x88C3 Q +0x88C4 R +0x88C5 װ +0x88C6 +0x88C7 S +0x88C8 T +0x88C9 +0x88CA U +0x88CB V +0x88CC W +0x88CD X +0x88CE +0x88CF Y +0x88D0 Z +0x88D1 [ +0x88D2 +0x88D3 \ +0x88D4 +0x88D5 ԣ +0x88D6 ] +0x88D7 ^ +0x88D8 +0x88D9 ȹ +0x88DA _ +0x88DB ` +0x88DC a +0x88DD b +0x88DE c +0x88DF +0x88E0 d +0x88E1 e +0x88E2 +0x88E3 +0x88E4 +0x88E5 +0x88E6 f +0x88E7 g +0x88E8 +0x88E9 h +0x88EA i +0x88EB j +0x88EC k +0x88ED l +0x88EE m +0x88EF n +0x88F0 +0x88F1 +0x88F2 o +0x88F3 +0x88F4 +0x88F5 p +0x88F6 q +0x88F7 r +0x88F8 +0x88F9 +0x88FA s +0x88FB t +0x88FC +0x88FD u +0x88FE +0x88FF v +0x8900 w +0x8901 x +0x8902 +0x8903 y +0x8904 z +0x8905 { +0x8906 | +0x8907 } +0x8908 ~ +0x8909 р +0x890A +0x890B с +0x890C т +0x890D у +0x890E ф +0x890F х +0x8910 +0x8911 ц +0x8912 +0x8913 +0x8914 ч +0x8915 ш +0x8916 щ +0x8917 ъ +0x8918 ы +0x8919 +0x891A +0x891B +0x891C ь +0x891D э +0x891E ю +0x891F я +0x8920 ѐ +0x8921 +0x8922 ё +0x8923 ђ +0x8924 ѓ +0x8925 +0x8926 є +0x8927 ѕ +0x8928 і +0x8929 ї +0x892A +0x892B +0x892C ј +0x892D љ +0x892E њ +0x892F ћ +0x8930 +0x8931 ќ +0x8932 ѝ +0x8933 ў +0x8934 +0x8935 џ +0x8936 +0x8937 Ѡ +0x8938 @ +0x8939 A +0x893A B +0x893B C +0x893C D +0x893D E +0x893E F +0x893F G +0x8940 H +0x8941 +0x8942 I +0x8943 J +0x8944 +0x8945 K +0x8946 L +0x8947 M +0x8948 N +0x8949 O +0x894A P +0x894B Q +0x894C R +0x894D S +0x894E T +0x894F U +0x8950 V +0x8951 W +0x8952 X +0x8953 Y +0x8954 Z +0x8955 [ +0x8956 \ +0x8957 ] +0x8958 ^ +0x8959 _ +0x895A ` +0x895B a +0x895C b +0x895D c +0x895E +0x895F +0x8960 d +0x8961 e +0x8962 f +0x8963 g +0x8964 h +0x8965 i +0x8966 +0x8967 j +0x8968 k +0x8969 l +0x896A m +0x896B n +0x896C o +0x896D p +0x896E q +0x896F r +0x8970 s +0x8971 t +0x8972 u +0x8973 v +0x8974 w +0x8975 x +0x8976 y +0x8977 z +0x8978 { +0x8979 | +0x897A } +0x897B +0x897C ~ +0x897D Ҁ +0x897E ҁ +0x897F +0x8980 ҂ +0x8981 Ҫ +0x8982 ҃ +0x8983 +0x8984 ҄ +0x8985 ҅ +0x8986 +0x8987 ҆ +0x8988 ҇ +0x8989 ҈ +0x898A ҉ +0x898B Ҋ +0x898C ҋ +0x898D Ҍ +0x898E ҍ +0x898F Ҏ +0x8990 ҏ +0x8991 Ґ +0x8992 ґ +0x8993 Ғ +0x8994 ғ +0x8995 Ҕ +0x8996 ҕ +0x8997 Җ +0x8998 җ +0x8999 Ҙ +0x899A ҙ +0x899B Қ +0x899C қ +0x899D Ҝ +0x899E ҝ +0x899F Ҟ +0x89A0 ҟ +0x89A1 Ҡ +0x89A2 @ +0x89A3 A +0x89A4 B +0x89A5 C +0x89A6 D +0x89A7 E +0x89A8 F +0x89A9 G +0x89AA H +0x89AB I +0x89AC J +0x89AD K +0x89AE L +0x89AF M +0x89B0 N +0x89B1 O +0x89B2 P +0x89B3 Q +0x89B4 R +0x89B5 S +0x89B6 T +0x89B7 U +0x89B8 V +0x89B9 W +0x89BA X +0x89BB Y +0x89BC Z +0x89BD [ +0x89BE \ +0x89BF ] +0x89C0 ^ +0x89C1 +0x89C2 +0x89C3 _ +0x89C4 +0x89C5 +0x89C6 +0x89C7 +0x89C8 +0x89C9 +0x89CA +0x89CB +0x89CC +0x89CD ` +0x89CE +0x89CF +0x89D0 +0x89D1 +0x89D2 +0x89D3 a +0x89D4 b +0x89D5 c +0x89D6 +0x89D7 d +0x89D8 e +0x89D9 f +0x89DA +0x89DB g +0x89DC +0x89DD h +0x89DE +0x89DF i +0x89E0 j +0x89E1 k +0x89E2 l +0x89E3 +0x89E4 m +0x89E5 +0x89E6 +0x89E7 n +0x89E8 o +0x89E9 p +0x89EA q +0x89EB +0x89EC r +0x89ED s +0x89EE t +0x89EF +0x89F0 u +0x89F1 v +0x89F2 w +0x89F3 +0x89F4 x +0x89F5 y +0x89F6 z +0x89F7 { +0x89F8 | +0x89F9 } +0x89FA ~ +0x89FB Ӏ +0x89FC Ӂ +0x89FD ӂ +0x89FE Ӄ +0x89FF ӄ +0x8A00 +0x8A01 Ӆ +0x8A02 ӆ +0x8A03 Ӈ +0x8A04 ӈ +0x8A05 Ӊ +0x8A06 ӊ +0x8A07 +0x8A08 Ӌ +0x8A09 ӌ +0x8A0A Ӎ +0x8A0B ӎ +0x8A0C ӏ +0x8A0D Ӑ +0x8A0E ӑ +0x8A0F Ӓ +0x8A10 ӓ +0x8A11 Ӕ +0x8A12 ӕ +0x8A13 Ӗ +0x8A14 ӗ +0x8A15 Ә +0x8A16 ә +0x8A17 Ӛ +0x8A18 ӛ +0x8A19 Ӝ +0x8A1A ӝ +0x8A1B Ӟ +0x8A1C ӟ +0x8A1D Ӡ +0x8A1E @ +0x8A1F A +0x8A20 B +0x8A21 C +0x8A22 D +0x8A23 E +0x8A24 F +0x8A25 G +0x8A26 H +0x8A27 I +0x8A28 J +0x8A29 K +0x8A2A L +0x8A2B M +0x8A2C N +0x8A2D O +0x8A2E P +0x8A2F Q +0x8A30 R +0x8A31 S +0x8A32 T +0x8A33 U +0x8A34 V +0x8A35 W +0x8A36 X +0x8A37 Y +0x8A38 Z +0x8A39 [ +0x8A3A \ +0x8A3B ] +0x8A3C ^ +0x8A3D _ +0x8A3E +0x8A3F ` +0x8A40 a +0x8A41 b +0x8A42 c +0x8A43 d +0x8A44 e +0x8A45 f +0x8A46 g +0x8A47 h +0x8A48 +0x8A49 i +0x8A4A j +0x8A4B k +0x8A4C l +0x8A4D m +0x8A4E n +0x8A4F o +0x8A50 p +0x8A51 q +0x8A52 r +0x8A53 s +0x8A54 t +0x8A55 u +0x8A56 v +0x8A57 w +0x8A58 x +0x8A59 y +0x8A5A z +0x8A5B { +0x8A5C | +0x8A5D } +0x8A5E ~ +0x8A5F Ԁ +0x8A60 ԁ +0x8A61 Ԃ +0x8A62 ԃ +0x8A63 Ԅ +0x8A64 ԅ +0x8A65 Ԇ +0x8A66 ԇ +0x8A67 Ԉ +0x8A68 ԉ +0x8A69 Ԋ +0x8A6A ԋ +0x8A6B Ԍ +0x8A6C ԍ +0x8A6D Ԏ +0x8A6E ԏ +0x8A6F Ԑ +0x8A70 ԑ +0x8A71 Ԓ +0x8A72 ԓ +0x8A73 Ԕ +0x8A74 ԕ +0x8A75 Ԗ +0x8A76 ԗ +0x8A77 Ԙ +0x8A78 ԙ +0x8A79 ղ +0x8A7A Ԛ +0x8A7B ԛ +0x8A7C Ԝ +0x8A7D ԝ +0x8A7E Ԟ +0x8A7F ԟ +0x8A80 Ԡ +0x8A81 @ +0x8A82 A +0x8A83 B +0x8A84 C +0x8A85 D +0x8A86 E +0x8A87 F +0x8A88 G +0x8A89 +0x8A8A +0x8A8B H +0x8A8C I +0x8A8D J +0x8A8E K +0x8A8F L +0x8A90 M +0x8A91 N +0x8A92 O +0x8A93 +0x8A94 P +0x8A95 Q +0x8A96 R +0x8A97 S +0x8A98 T +0x8A99 U +0x8A9A V +0x8A9B W +0x8A9C X +0x8A9D Y +0x8A9E Z +0x8A9F [ +0x8AA0 \ +0x8AA1 ] +0x8AA2 ^ +0x8AA3 _ +0x8AA4 ` +0x8AA5 a +0x8AA6 b +0x8AA7 c +0x8AA8 d +0x8AA9 e +0x8AAA f +0x8AAB g +0x8AAC h +0x8AAD i +0x8AAE j +0x8AAF k +0x8AB0 l +0x8AB1 m +0x8AB2 n +0x8AB3 o +0x8AB4 p +0x8AB5 q +0x8AB6 r +0x8AB7 s +0x8AB8 t +0x8AB9 u +0x8ABA v +0x8ABB w +0x8ABC x +0x8ABD y +0x8ABE z +0x8ABF { +0x8AC0 | +0x8AC1 } +0x8AC2 ~ +0x8AC3 Հ +0x8AC4 Ձ +0x8AC5 Ղ +0x8AC6 Ճ +0x8AC7 Մ +0x8AC8 Յ +0x8AC9 Ն +0x8ACA Շ +0x8ACB Ո +0x8ACC Չ +0x8ACD Պ +0x8ACE Ջ +0x8ACF Ռ +0x8AD0 Ս +0x8AD1 Վ +0x8AD2 Տ +0x8AD3 Ր +0x8AD4 Ց +0x8AD5 Ւ +0x8AD6 Փ +0x8AD7 Ք +0x8AD8 Օ +0x8AD9 Ֆ +0x8ADA ՗ +0x8ADB ՘ +0x8ADC ՙ +0x8ADD ՚ +0x8ADE ՛ +0x8ADF ՜ +0x8AE0 ՝ +0x8AE1 ՞ +0x8AE2 ՟ +0x8AE3 ՠ +0x8AE4 @ +0x8AE5 A +0x8AE6 B +0x8AE7 C +0x8AE8 D +0x8AE9 E +0x8AEA F +0x8AEB G +0x8AEC H +0x8AED I +0x8AEE J +0x8AEF K +0x8AF0 L +0x8AF1 M +0x8AF2 N +0x8AF3 O +0x8AF4 P +0x8AF5 Q +0x8AF6 R +0x8AF7 S +0x8AF8 T +0x8AF9 U +0x8AFA V +0x8AFB W +0x8AFC X +0x8AFD Y +0x8AFE Z +0x8AFF [ +0x8B00 \ +0x8B01 ] +0x8B02 ^ +0x8B03 _ +0x8B04 ` +0x8B05 a +0x8B06 b +0x8B07 +0x8B08 c +0x8B09 d +0x8B0A e +0x8B0B f +0x8B0C g +0x8B0D h +0x8B0E i +0x8B0F j +0x8B10 k +0x8B11 l +0x8B12 m +0x8B13 n +0x8B14 o +0x8B15 p +0x8B16 q +0x8B17 r +0x8B18 s +0x8B19 t +0x8B1A u +0x8B1B v +0x8B1C w +0x8B1D x +0x8B1E y +0x8B1F z +0x8B20 { +0x8B21 | +0x8B22 } +0x8B23 ~ +0x8B24 ր +0x8B25 ց +0x8B26 +0x8B27 ւ +0x8B28 փ +0x8B29 ք +0x8B2A օ +0x8B2B ֆ +0x8B2C և +0x8B2D ֈ +0x8B2E ։ +0x8B2F ֊ +0x8B30 ֋ +0x8B31 ֌ +0x8B32 ֍ +0x8B33 ֎ +0x8B34 ֏ +0x8B35 ֐ +0x8B36 ֑ +0x8B37 ֒ +0x8B38 ֓ +0x8B39 ֔ +0x8B3A ֕ +0x8B3B ֖ +0x8B3C ֗ +0x8B3D ֘ +0x8B3E ֙ +0x8B3F ֚ +0x8B40 ֛ +0x8B41 ֜ +0x8B42 ֝ +0x8B43 ֞ +0x8B44 ֟ +0x8B45 ֠ +0x8B46 @ +0x8B47 A +0x8B48 B +0x8B49 C +0x8B4A D +0x8B4B E +0x8B4C F +0x8B4D G +0x8B4E H +0x8B4F I +0x8B50 J +0x8B51 K +0x8B52 L +0x8B53 M +0x8B54 N +0x8B55 O +0x8B56 P +0x8B57 Q +0x8B58 R +0x8B59 S +0x8B5A T +0x8B5B U +0x8B5C V +0x8B5D W +0x8B5E X +0x8B5F Y +0x8B60 Z +0x8B61 [ +0x8B62 \ +0x8B63 ] +0x8B64 ^ +0x8B65 _ +0x8B66 +0x8B67 ` +0x8B68 a +0x8B69 b +0x8B6A c +0x8B6B d +0x8B6C Ʃ +0x8B6D e +0x8B6E f +0x8B6F g +0x8B70 h +0x8B71 i +0x8B72 j +0x8B73 k +0x8B74 l +0x8B75 m +0x8B76 n +0x8B77 o +0x8B78 p +0x8B79 q +0x8B7A r +0x8B7B s +0x8B7C t +0x8B7D u +0x8B7E v +0x8B7F w +0x8B80 x +0x8B81 y +0x8B82 z +0x8B83 { +0x8B84 | +0x8B85 } +0x8B86 ~ +0x8B87 ׀ +0x8B88 ׁ +0x8B89 ׂ +0x8B8A ׃ +0x8B8B ׄ +0x8B8C ׅ +0x8B8D ׆ +0x8B8E ׇ +0x8B8F ׈ +0x8B90 ׉ +0x8B91 ׊ +0x8B92 ׋ +0x8B93 ׌ +0x8B94 ׍ +0x8B95 ׎ +0x8B96 ׏ +0x8B97 א +0x8B98 ב +0x8B99 ג +0x8B9A ד +0x8B9B ה +0x8B9C ו +0x8B9D ז +0x8B9E ח +0x8B9F ט +0x8BA0 ڥ +0x8BA1 +0x8BA2 +0x8BA3 +0x8BA4 +0x8BA5 +0x8BA6 ڦ +0x8BA7 ڧ +0x8BA8 +0x8BA9 +0x8BAA ڨ +0x8BAB +0x8BAC י +0x8BAD ѵ +0x8BAE +0x8BAF Ѷ +0x8BB0 +0x8BB1 ך +0x8BB2 +0x8BB3 +0x8BB4 ک +0x8BB5 ڪ +0x8BB6 +0x8BB7 ګ +0x8BB8 +0x8BB9 +0x8BBA +0x8BBB כ +0x8BBC +0x8BBD +0x8BBE +0x8BBF +0x8BC0 +0x8BC1 ֤ +0x8BC2 ڬ +0x8BC3 ڭ +0x8BC4 +0x8BC5 +0x8BC6 ʶ +0x8BC7 ל +0x8BC8 թ +0x8BC9 +0x8BCA +0x8BCB ڮ +0x8BCC +0x8BCD +0x8BCE ڰ +0x8BCF گ +0x8BD0 ם +0x8BD1 +0x8BD2 ڱ +0x8BD3 ڲ +0x8BD4 ڳ +0x8BD5 +0x8BD6 ڴ +0x8BD7 ʫ +0x8BD8 ڵ +0x8BD9 ڶ +0x8BDA +0x8BDB +0x8BDC ڷ +0x8BDD +0x8BDE +0x8BDF ڸ +0x8BE0 ڹ +0x8BE1 +0x8BE2 ѯ +0x8BE3 +0x8BE4 ں +0x8BE5 +0x8BE6 +0x8BE7 +0x8BE8 ڻ +0x8BE9 ڼ +0x8BEA מ +0x8BEB +0x8BEC +0x8BED +0x8BEE ڽ +0x8BEF +0x8BF0 ھ +0x8BF1 +0x8BF2 +0x8BF3 ڿ +0x8BF4 ˵ +0x8BF5 +0x8BF6 +0x8BF7 +0x8BF8 +0x8BF9 +0x8BFA ŵ +0x8BFB +0x8BFC +0x8BFD +0x8BFE +0x8BFF +0x8C00 +0x8C01 ˭ +0x8C02 +0x8C03 +0x8C04 +0x8C05 +0x8C06 ׻ +0x8C07 +0x8C08 ̸ +0x8C09 ן +0x8C0A +0x8C0B ı +0x8C0C +0x8C0D +0x8C0E +0x8C0F +0x8C10 г +0x8C11 +0x8C12 +0x8C13 ν +0x8C14 +0x8C15 +0x8C16 +0x8C17 +0x8C18 +0x8C19 +0x8C1A +0x8C1B +0x8C1C +0x8C1D +0x8C1E נ +0x8C1F +0x8C20 +0x8C21 +0x8C22 л +0x8C23 ҥ +0x8C24 +0x8C25 +0x8C26 ǫ +0x8C27 +0x8C28 +0x8C29 á +0x8C2A +0x8C2B +0x8C2C +0x8C2D ̷ +0x8C2E +0x8C2F +0x8C30 +0x8C31 +0x8C32 +0x8C33 +0x8C34 Ǵ +0x8C35 +0x8C36 +0x8C37 +0x8C38 @ +0x8C39 A +0x8C3A B +0x8C3B C +0x8C3C D +0x8C3D E +0x8C3E F +0x8C3F G +0x8C40 H +0x8C41 +0x8C42 I +0x8C43 J +0x8C44 K +0x8C45 L +0x8C46 +0x8C47 +0x8C48 M +0x8C49 +0x8C4A N +0x8C4B O +0x8C4C +0x8C4D P +0x8C4E Q +0x8C4F R +0x8C50 S +0x8C51 T +0x8C52 U +0x8C53 V +0x8C54 W +0x8C55 +0x8C56 X +0x8C57 Y +0x8C58 Z +0x8C59 [ +0x8C5A +0x8C5B \ +0x8C5C ] +0x8C5D ^ +0x8C5E _ +0x8C5F ` +0x8C60 a +0x8C61 +0x8C62 +0x8C63 b +0x8C64 c +0x8C65 d +0x8C66 e +0x8C67 f +0x8C68 g +0x8C69 h +0x8C6A +0x8C6B ԥ +0x8C6C i +0x8C6D j +0x8C6E k +0x8C6F l +0x8C70 m +0x8C71 n +0x8C72 o +0x8C73 +0x8C74 p +0x8C75 q +0x8C76 r +0x8C77 s +0x8C78 +0x8C79 +0x8C7A +0x8C7B t +0x8C7C u +0x8C7D v +0x8C7E w +0x8C7F x +0x8C80 y +0x8C81 z +0x8C82 +0x8C83 { +0x8C84 | +0x8C85 +0x8C86 } +0x8C87 ~ +0x8C88 ؀ +0x8C89 +0x8C8A +0x8C8B ؁ +0x8C8C ò +0x8C8D ؂ +0x8C8E ؃ +0x8C8F ؄ +0x8C90 ؅ +0x8C91 ؆ +0x8C92 ؇ +0x8C93 ؈ +0x8C94 +0x8C95 ؉ +0x8C96 ؊ +0x8C97 ؋ +0x8C98 +0x8C99 ، +0x8C9A ؍ +0x8C9B ؎ +0x8C9C ؏ +0x8C9D ؐ +0x8C9E ؑ +0x8C9F ؒ +0x8CA0 ؓ +0x8CA1 ؔ +0x8CA2 ؕ +0x8CA3 ؖ +0x8CA4 ؗ +0x8CA5 ؘ +0x8CA6 ؙ +0x8CA7 ؚ +0x8CA8 ؛ +0x8CA9 ؜ +0x8CAA ؝ +0x8CAB ؞ +0x8CAC ؟ +0x8CAD ؠ +0x8CAE @ +0x8CAF A +0x8CB0 B +0x8CB1 C +0x8CB2 D +0x8CB3 E +0x8CB4 F +0x8CB5 G +0x8CB6 H +0x8CB7 I +0x8CB8 J +0x8CB9 K +0x8CBA L +0x8CBB M +0x8CBC N +0x8CBD O +0x8CBE P +0x8CBF Q +0x8CC0 R +0x8CC1 S +0x8CC2 T +0x8CC3 U +0x8CC4 V +0x8CC5 W +0x8CC6 X +0x8CC7 Y +0x8CC8 Z +0x8CC9 [ +0x8CCA \ +0x8CCB ] +0x8CCC ^ +0x8CCD _ +0x8CCE ` +0x8CCF a +0x8CD0 b +0x8CD1 c +0x8CD2 d +0x8CD3 e +0x8CD4 f +0x8CD5 g +0x8CD6 h +0x8CD7 i +0x8CD8 j +0x8CD9 k +0x8CDA l +0x8CDB m +0x8CDC n +0x8CDD o +0x8CDE p +0x8CDF q +0x8CE0 r +0x8CE1 s +0x8CE2 t +0x8CE3 u +0x8CE4 v +0x8CE5 w +0x8CE6 x +0x8CE7 y +0x8CE8 z +0x8CE9 { +0x8CEA | +0x8CEB } +0x8CEC ~ +0x8CED ـ +0x8CEE ف +0x8CEF ق +0x8CF0 ك +0x8CF1 ل +0x8CF2 م +0x8CF3 ن +0x8CF4 ه +0x8CF5 و +0x8CF6 ى +0x8CF7 ي +0x8CF8 ً +0x8CF9 ٌ +0x8CFA ٍ +0x8CFB َ +0x8CFC ُ +0x8CFD ِ +0x8CFE ّ +0x8CFF ْ +0x8D00 ٓ +0x8D01 ٔ +0x8D02 ٕ +0x8D03 ٖ +0x8D04 ٗ +0x8D05 ٘ +0x8D06 ٙ +0x8D07 ٚ +0x8D08 ٛ +0x8D09 ٜ +0x8D0A ٝ +0x8D0B ٞ +0x8D0C ٟ +0x8D0D ٠ +0x8D0E @ +0x8D0F A +0x8D10 B +0x8D11 C +0x8D12 D +0x8D13 E +0x8D14 F +0x8D15 G +0x8D16 H +0x8D17 I +0x8D18 J +0x8D19 K +0x8D1A L +0x8D1B M +0x8D1C N +0x8D1D +0x8D1E +0x8D1F +0x8D20 O +0x8D21 +0x8D22 +0x8D23 +0x8D24 +0x8D25 +0x8D26 +0x8D27 +0x8D28 +0x8D29 +0x8D2A ̰ +0x8D2B ƶ +0x8D2C +0x8D2D +0x8D2E +0x8D2F +0x8D30 +0x8D31 +0x8D32 +0x8D33 +0x8D34 +0x8D35 +0x8D36 +0x8D37 +0x8D38 ó +0x8D39 +0x8D3A +0x8D3B +0x8D3C +0x8D3D +0x8D3E +0x8D3F +0x8D40 +0x8D41 +0x8D42 ¸ +0x8D43 +0x8D44 +0x8D45 +0x8D46 +0x8D47 +0x8D48 +0x8D49 +0x8D4A +0x8D4B +0x8D4C +0x8D4D +0x8D4E +0x8D4F +0x8D50 +0x8D51 P +0x8D52 Q +0x8D53 +0x8D54 +0x8D55 +0x8D56 +0x8D57 R +0x8D58 ׸ +0x8D59 +0x8D5A ׬ +0x8D5B +0x8D5C +0x8D5D +0x8D5E +0x8D5F S +0x8D60 +0x8D61 +0x8D62 Ӯ +0x8D63 +0x8D64 +0x8D65 T +0x8D66 +0x8D67 +0x8D68 U +0x8D69 V +0x8D6A W +0x8D6B +0x8D6C X +0x8D6D +0x8D6E Y +0x8D6F Z +0x8D70 +0x8D71 [ +0x8D72 \ +0x8D73 +0x8D74 +0x8D75 +0x8D76 +0x8D77 +0x8D78 ] +0x8D79 ^ +0x8D7A _ +0x8D7B ` +0x8D7C a +0x8D7D b +0x8D7E c +0x8D7F d +0x8D80 e +0x8D81 +0x8D82 f +0x8D83 g +0x8D84 +0x8D85 +0x8D86 h +0x8D87 i +0x8D88 j +0x8D89 k +0x8D8A Խ +0x8D8B +0x8D8C l +0x8D8D m +0x8D8E n +0x8D8F o +0x8D90 p +0x8D91 +0x8D92 q +0x8D93 r +0x8D94 +0x8D95 s +0x8D96 t +0x8D97 u +0x8D98 v +0x8D99 w +0x8D9A x +0x8D9B y +0x8D9C z +0x8D9D { +0x8D9E | +0x8D9F +0x8DA0 } +0x8DA1 ~ +0x8DA2 ڀ +0x8DA3 Ȥ +0x8DA4 ځ +0x8DA5 ڂ +0x8DA6 ڃ +0x8DA7 ڄ +0x8DA8 څ +0x8DA9 چ +0x8DAA ڇ +0x8DAB ڈ +0x8DAC ډ +0x8DAD ڊ +0x8DAE ڋ +0x8DAF ڌ +0x8DB0 ڍ +0x8DB1 +0x8DB2 ڎ +0x8DB3 +0x8DB4 ſ +0x8DB5 +0x8DB6 ڏ +0x8DB7 ڐ +0x8DB8 +0x8DB9 ڑ +0x8DBA +0x8DBB ڒ +0x8DBC +0x8DBD ړ +0x8DBE ֺ +0x8DBF +0x8DC0 ڔ +0x8DC1 ڕ +0x8DC2 ږ +0x8DC3 Ծ +0x8DC4 +0x8DC5 ڗ +0x8DC6 +0x8DC7 ژ +0x8DC8 ڙ +0x8DC9 ښ +0x8DCA ڛ +0x8DCB +0x8DCC +0x8DCD ڜ +0x8DCE +0x8DCF +0x8DD0 ڝ +0x8DD1 +0x8DD2 ڞ +0x8DD3 ڟ +0x8DD4 ڠ +0x8DD5 @ +0x8DD6 +0x8DD7 +0x8DD8 A +0x8DD9 B +0x8DDA +0x8DDB +0x8DDC C +0x8DDD +0x8DDE +0x8DDF +0x8DE0 D +0x8DE1 E +0x8DE2 F +0x8DE3 +0x8DE4 +0x8DE5 G +0x8DE6 H +0x8DE7 I +0x8DE8 +0x8DE9 J +0x8DEA +0x8DEB +0x8DEC +0x8DED K +0x8DEE L +0x8DEF · +0x8DF0 M +0x8DF1 N +0x8DF2 O +0x8DF3 +0x8DF4 P +0x8DF5 +0x8DF6 Q +0x8DF7 +0x8DF8 +0x8DF9 +0x8DFA +0x8DFB +0x8DFC R +0x8DFD +0x8DFE S +0x8DFF T +0x8E00 U +0x8E01 V +0x8E02 W +0x8E03 X +0x8E04 Y +0x8E05 +0x8E06 Z +0x8E07 [ +0x8E08 \ +0x8E09 +0x8E0A ӻ +0x8E0B ] +0x8E0C +0x8E0D ^ +0x8E0E _ +0x8E0F ̤ +0x8E10 ` +0x8E11 a +0x8E12 b +0x8E13 c +0x8E14 +0x8E15 d +0x8E16 e +0x8E17 f +0x8E18 g +0x8E19 h +0x8E1A i +0x8E1B j +0x8E1C k +0x8E1D +0x8E1E +0x8E1F +0x8E20 l +0x8E21 m +0x8E22 +0x8E23 +0x8E24 n +0x8E25 o +0x8E26 p +0x8E27 q +0x8E28 r +0x8E29 +0x8E2A +0x8E2B s +0x8E2C +0x8E2D t +0x8E2E +0x8E2F +0x8E30 u +0x8E31 +0x8E32 v +0x8E33 w +0x8E34 x +0x8E35 +0x8E36 y +0x8E37 z +0x8E38 { +0x8E39 +0x8E3A +0x8E3B | +0x8E3C } +0x8E3D +0x8E3E ~ +0x8E3F ۀ +0x8E40 +0x8E41 +0x8E42 +0x8E43 ہ +0x8E44 +0x8E45 ۂ +0x8E46 ۃ +0x8E47 +0x8E48 +0x8E49 +0x8E4A +0x8E4B ̣ +0x8E4C ۄ +0x8E4D ۅ +0x8E4E ۆ +0x8E4F ۇ +0x8E50 ۈ +0x8E51 +0x8E52 +0x8E53 ۉ +0x8E54 ۊ +0x8E55 ۋ +0x8E56 ی +0x8E57 ۍ +0x8E58 ێ +0x8E59 +0x8E5A ۏ +0x8E5B ې +0x8E5C ۑ +0x8E5D ے +0x8E5E ۓ +0x8E5F ۔ +0x8E60 ە +0x8E61 ۖ +0x8E62 ۗ +0x8E63 ۘ +0x8E64 ۙ +0x8E65 ۚ +0x8E66 +0x8E67 ۛ +0x8E68 ۜ +0x8E69 +0x8E6A ۝ +0x8E6B ۞ +0x8E6C +0x8E6D +0x8E6E ۟ +0x8E6F +0x8E70 +0x8E71 ۠ +0x8E72 +0x8E73 @ +0x8E74 +0x8E75 A +0x8E76 +0x8E77 B +0x8E78 C +0x8E79 D +0x8E7A E +0x8E7B F +0x8E7C +0x8E7D G +0x8E7E H +0x8E7F +0x8E80 I +0x8E81 +0x8E82 J +0x8E83 K +0x8E84 L +0x8E85 +0x8E86 M +0x8E87 +0x8E88 N +0x8E89 O +0x8E8A P +0x8E8B Q +0x8E8C R +0x8E8D S +0x8E8E T +0x8E8F +0x8E90 +0x8E91 U +0x8E92 V +0x8E93 W +0x8E94 +0x8E95 X +0x8E96 Y +0x8E97 Z +0x8E98 [ +0x8E99 \ +0x8E9A ] +0x8E9B ^ +0x8E9C +0x8E9D _ +0x8E9E +0x8E9F ` +0x8EA0 a +0x8EA1 b +0x8EA2 c +0x8EA3 d +0x8EA4 e +0x8EA5 f +0x8EA6 g +0x8EA7 h +0x8EA8 i +0x8EA9 j +0x8EAA k +0x8EAB +0x8EAC +0x8EAD l +0x8EAE m +0x8EAF +0x8EB0 n +0x8EB1 o +0x8EB2 +0x8EB3 p +0x8EB4 q +0x8EB5 r +0x8EB6 s +0x8EB7 t +0x8EB8 u +0x8EB9 v +0x8EBA +0x8EBB w +0x8EBC x +0x8EBD y +0x8EBE z +0x8EBF { +0x8EC0 | +0x8EC1 } +0x8EC2 ~ +0x8EC3 ܀ +0x8EC4 ܁ +0x8EC5 ܂ +0x8EC6 ܃ +0x8EC7 ܄ +0x8EC8 ܅ +0x8EC9 ܆ +0x8ECA ܇ +0x8ECB ܈ +0x8ECC ܉ +0x8ECD ܊ +0x8ECE +0x8ECF ܋ +0x8ED0 ܌ +0x8ED1 ܍ +0x8ED2 ܎ +0x8ED3 ܏ +0x8ED4 ܐ +0x8ED5 ܑ +0x8ED6 ܒ +0x8ED7 ܓ +0x8ED8 ܔ +0x8ED9 ܕ +0x8EDA ܖ +0x8EDB ܗ +0x8EDC ܘ +0x8EDD ܙ +0x8EDE ܚ +0x8EDF ܛ +0x8EE0 ܜ +0x8EE1 ܝ +0x8EE2 ܞ +0x8EE3 ܟ +0x8EE4 ܠ +0x8EE5 @ +0x8EE6 A +0x8EE7 B +0x8EE8 C +0x8EE9 D +0x8EEA E +0x8EEB F +0x8EEC G +0x8EED H +0x8EEE I +0x8EEF J +0x8EF0 K +0x8EF1 L +0x8EF2 M +0x8EF3 N +0x8EF4 O +0x8EF5 P +0x8EF6 Q +0x8EF7 R +0x8EF8 S +0x8EF9 T +0x8EFA U +0x8EFB V +0x8EFC W +0x8EFD X +0x8EFE Y +0x8EFF Z +0x8F00 [ +0x8F01 \ +0x8F02 ] +0x8F03 ^ +0x8F04 _ +0x8F05 ` +0x8F06 a +0x8F07 b +0x8F08 c +0x8F09 d +0x8F0A e +0x8F0B f +0x8F0C g +0x8F0D h +0x8F0E i +0x8F0F j +0x8F10 k +0x8F11 l +0x8F12 m +0x8F13 n +0x8F14 o +0x8F15 p +0x8F16 q +0x8F17 r +0x8F18 s +0x8F19 t +0x8F1A u +0x8F1B v +0x8F1C w +0x8F1D x +0x8F1E y +0x8F1F z +0x8F20 { +0x8F21 | +0x8F22 } +0x8F23 ~ +0x8F24 ݀ +0x8F25 ݁ +0x8F26 ݂ +0x8F27 ݃ +0x8F28 ݄ +0x8F29 ݅ +0x8F2A ݆ +0x8F2B ݇ +0x8F2C ݈ +0x8F2D ݉ +0x8F2E ݊ +0x8F2F ݋ +0x8F30 ݌ +0x8F31 ݍ +0x8F32 ݎ +0x8F33 ݏ +0x8F34 ݐ +0x8F35 ݑ +0x8F36 ݒ +0x8F37 ݓ +0x8F38 ݔ +0x8F39 ݕ +0x8F3A ݖ +0x8F3B ݗ +0x8F3C ݘ +0x8F3D ݙ +0x8F3E ݚ +0x8F3F ݛ +0x8F40 ݜ +0x8F41 ݝ +0x8F42 ݞ +0x8F43 ݟ +0x8F44 ݠ +0x8F45 @ +0x8F46 A +0x8F47 B +0x8F48 C +0x8F49 D +0x8F4A E +0x8F4B F +0x8F4C G +0x8F4D H +0x8F4E I +0x8F4F J +0x8F50 K +0x8F51 L +0x8F52 M +0x8F53 N +0x8F54 O +0x8F55 P +0x8F56 Q +0x8F57 R +0x8F58 S +0x8F59 T +0x8F5A U +0x8F5B V +0x8F5C W +0x8F5D X +0x8F5E Y +0x8F5F Z +0x8F60 [ +0x8F61 \ +0x8F62 ] +0x8F63 ^ +0x8F64 _ +0x8F65 ` +0x8F66 +0x8F67 +0x8F68 +0x8F69 +0x8F6A a +0x8F6B +0x8F6C ת +0x8F6D +0x8F6E +0x8F6F +0x8F70 +0x8F71 +0x8F72 +0x8F73 +0x8F74 +0x8F75 +0x8F76 +0x8F77 +0x8F78 +0x8F79 +0x8F7A +0x8F7B +0x8F7C +0x8F7D +0x8F7E +0x8F7F +0x8F80 b +0x8F81 +0x8F82 +0x8F83 +0x8F84 +0x8F85 +0x8F86 +0x8F87 +0x8F88 +0x8F89 +0x8F8A +0x8F8B +0x8F8C c +0x8F8D +0x8F8E +0x8F8F +0x8F90 +0x8F91 +0x8F92 d +0x8F93 +0x8F94 +0x8F95 ԯ +0x8F96 Ͻ +0x8F97 շ +0x8F98 +0x8F99 +0x8F9A +0x8F9B +0x8F9C +0x8F9D e +0x8F9E +0x8F9F +0x8FA0 f +0x8FA1 g +0x8FA2 h +0x8FA3 +0x8FA4 i +0x8FA5 j +0x8FA6 k +0x8FA7 l +0x8FA8 +0x8FA9 +0x8FAA m +0x8FAB +0x8FAC n +0x8FAD o +0x8FAE p +0x8FAF q +0x8FB0 +0x8FB1 +0x8FB2 r +0x8FB3 s +0x8FB4 t +0x8FB5 u +0x8FB6 +0x8FB7 v +0x8FB8 w +0x8FB9 +0x8FBA x +0x8FBB y +0x8FBC z +0x8FBD +0x8FBE +0x8FBF { +0x8FC0 | +0x8FC1 Ǩ +0x8FC2 +0x8FC3 } +0x8FC4 +0x8FC5 Ѹ +0x8FC6 ~ +0x8FC7 +0x8FC8 +0x8FC9 ހ +0x8FCA ށ +0x8FCB ނ +0x8FCC ރ +0x8FCD ބ +0x8FCE ӭ +0x8FCF ޅ +0x8FD0 +0x8FD1 +0x8FD2 ކ +0x8FD3 +0x8FD4 +0x8FD5 +0x8FD6 އ +0x8FD7 ވ +0x8FD8 +0x8FD9 +0x8FDA މ +0x8FDB +0x8FDC Զ +0x8FDD Υ +0x8FDE +0x8FDF +0x8FE0 ފ +0x8FE1 ދ +0x8FE2 +0x8FE3 ތ +0x8FE4 +0x8FE5 +0x8FE6 +0x8FE7 ލ +0x8FE8 +0x8FE9 +0x8FEA +0x8FEB +0x8FEC ގ +0x8FED +0x8FEE +0x8FEF ޏ +0x8FF0 +0x8FF1 ސ +0x8FF2 ޑ +0x8FF3 +0x8FF4 ޒ +0x8FF5 ޓ +0x8FF6 ޔ +0x8FF7 +0x8FF8 +0x8FF9 +0x8FFA ޕ +0x8FFB ޖ +0x8FFC ޗ +0x8FFD ׷ +0x8FFE ޘ +0x8FFF ޙ +0x9000 +0x9001 +0x9002 +0x9003 +0x9004 +0x9005 +0x9006 +0x9007 ޚ +0x9008 ޛ +0x9009 ѡ +0x900A ѷ +0x900B +0x900C ޜ +0x900D +0x900E ޝ +0x900F ͸ +0x9010 +0x9011 +0x9012 +0x9013 ޞ +0x9014 ; +0x9015 ޟ +0x9016 +0x9017 +0x9018 ޠ +0x9019 @ +0x901A ͨ +0x901B +0x901C A +0x901D +0x901E +0x901F +0x9020 +0x9021 +0x9022 +0x9023 B +0x9024 C +0x9025 D +0x9026 +0x9027 E +0x9028 F +0x9029 G +0x902A H +0x902B I +0x902C J +0x902D +0x902E +0x902F +0x9030 K +0x9031 L +0x9032 M +0x9033 N +0x9034 O +0x9035 +0x9036 +0x9037 P +0x9038 +0x9039 Q +0x903A R +0x903B +0x903C +0x903D S +0x903E +0x903F T +0x9040 U +0x9041 +0x9042 +0x9043 V +0x9044 +0x9045 W +0x9046 X +0x9047 +0x9048 Y +0x9049 Z +0x904A [ +0x904B \ +0x904C ] +0x904D +0x904E ^ +0x904F +0x9050 +0x9051 +0x9052 +0x9053 +0x9054 _ +0x9055 ` +0x9056 a +0x9057 +0x9058 +0x9059 b +0x905A c +0x905B +0x905C d +0x905D e +0x905E f +0x905F g +0x9060 h +0x9061 i +0x9062 +0x9063 Dz +0x9064 j +0x9065 ң +0x9066 k +0x9067 l +0x9068 +0x9069 m +0x906A n +0x906B o +0x906C p +0x906D +0x906E +0x906F q +0x9070 r +0x9071 s +0x9072 t +0x9073 u +0x9074 +0x9075 +0x9076 v +0x9077 w +0x9078 x +0x9079 y +0x907A z +0x907B { +0x907C | +0x907D +0x907E } +0x907F +0x9080 +0x9081 ~ +0x9082 +0x9083 +0x9084 ߀ +0x9085 ߁ +0x9086 ߂ +0x9087 ߃ +0x9088 +0x9089 ߄ +0x908A ߅ +0x908B +0x908C ߆ +0x908D ߇ +0x908E ߈ +0x908F ߉ +0x9090 ߊ +0x9091 +0x9092 ߋ +0x9093 +0x9094 ߌ +0x9095 +0x9096 ߍ +0x9097 +0x9098 ߎ +0x9099 +0x909A ߏ +0x909B +0x909C ߐ +0x909D +0x909E ߑ +0x909F ߒ +0x90A0 ߓ +0x90A1 +0x90A2 +0x90A3 +0x90A4 ߔ +0x90A5 ߕ +0x90A6 +0x90A7 ߖ +0x90A8 ߗ +0x90A9 ߘ +0x90AA а +0x90AB ߙ +0x90AC +0x90AD ߚ +0x90AE +0x90AF +0x90B0 ۢ +0x90B1 +0x90B2 ߛ +0x90B3 +0x90B4 +0x90B5 +0x90B6 +0x90B7 ߜ +0x90B8 ۡ +0x90B9 +0x90BA +0x90BB +0x90BC ߝ +0x90BD ߞ +0x90BE ۥ +0x90BF ߟ +0x90C0 ߠ +0x90C1 +0x90C2 @ +0x90C3 A +0x90C4 ۧ +0x90C5 ۤ +0x90C6 B +0x90C7 ۨ +0x90C8 C +0x90C9 D +0x90CA +0x90CB E +0x90CC F +0x90CD G +0x90CE +0x90CF ۣ +0x90D0 ۦ +0x90D1 ֣ +0x90D2 H +0x90D3 ۩ +0x90D4 I +0x90D5 J +0x90D6 K +0x90D7 ۭ +0x90D8 L +0x90D9 M +0x90DA N +0x90DB ۮ +0x90DC ۬ +0x90DD +0x90DE O +0x90DF P +0x90E0 Q +0x90E1 +0x90E2 ۫ +0x90E3 R +0x90E4 S +0x90E5 T +0x90E6 ۪ +0x90E7 +0x90E8 +0x90E9 U +0x90EA V +0x90EB ۯ +0x90EC W +0x90ED +0x90EE X +0x90EF ۰ +0x90F0 Y +0x90F1 Z +0x90F2 [ +0x90F3 \ +0x90F4 +0x90F5 ] +0x90F6 ^ +0x90F7 _ +0x90F8 +0x90F9 ` +0x90FA a +0x90FB b +0x90FC c +0x90FD +0x90FE ۱ +0x90FF d +0x9100 e +0x9101 f +0x9102 +0x9103 g +0x9104 ۲ +0x9105 h +0x9106 i +0x9107 j +0x9108 k +0x9109 l +0x910A m +0x910B n +0x910C o +0x910D p +0x910E q +0x910F r +0x9110 s +0x9111 t +0x9112 u +0x9113 v +0x9114 w +0x9115 x +0x9116 y +0x9117 z +0x9118 { +0x9119 +0x911A | +0x911B } +0x911C ~ +0x911D +0x911E ۴ +0x911F +0x9120 +0x9121 +0x9122 ۳ +0x9123 ۵ +0x9124 +0x9125 +0x9126 +0x9127 +0x9128 +0x9129 +0x912A +0x912B +0x912C +0x912D +0x912E +0x912F ۷ +0x9130 +0x9131 ۶ +0x9132 +0x9133 +0x9134 +0x9135 +0x9136 +0x9137 +0x9138 +0x9139 ۸ +0x913A +0x913B +0x913C +0x913D +0x913E +0x913F +0x9140 +0x9141 +0x9142 +0x9143 ۹ +0x9144 +0x9145 @ +0x9146 ۺ +0x9147 A +0x9148 B +0x9149 +0x914A +0x914B +0x914C +0x914D +0x914E +0x914F +0x9150 +0x9151 C +0x9152 +0x9153 D +0x9154 E +0x9155 F +0x9156 G +0x9157 +0x9158 H +0x9159 I +0x915A +0x915B J +0x915C K +0x915D +0x915E ̪ +0x915F L +0x9160 M +0x9161 +0x9162 +0x9163 +0x9164 +0x9165 +0x9166 N +0x9167 O +0x9168 P +0x9169 +0x916A +0x916B Q +0x916C +0x916D R +0x916E ͪ +0x916F +0x9170 +0x9171 +0x9172 +0x9173 S +0x9174 +0x9175 +0x9176 ø +0x9177 +0x9178 +0x9179 +0x917A T +0x917B U +0x917C V +0x917D +0x917E +0x917F +0x9180 W +0x9181 X +0x9182 Y +0x9183 Z +0x9184 [ +0x9185 +0x9186 \ +0x9187 +0x9188 ] +0x9189 +0x918A ^ +0x918B +0x918C +0x918D +0x918E _ +0x918F ` +0x9190 +0x9191 +0x9192 +0x9193 a +0x9194 b +0x9195 c +0x9196 d +0x9197 e +0x9198 f +0x9199 g +0x919A +0x919B ȩ +0x919C h +0x919D i +0x919E j +0x919F k +0x91A0 l +0x91A1 m +0x91A2 +0x91A3 +0x91A4 n +0x91A5 o +0x91A6 p +0x91A7 q +0x91A8 r +0x91A9 s +0x91AA +0x91AB t +0x91AC u +0x91AD +0x91AE +0x91AF +0x91B0 v +0x91B1 w +0x91B2 x +0x91B3 y +0x91B4 +0x91B5 +0x91B6 z +0x91B7 { +0x91B8 | +0x91B9 } +0x91BA +0x91BB ~ +0x91BC +0x91BD +0x91BE +0x91BF +0x91C0 +0x91C1 +0x91C2 +0x91C3 +0x91C4 +0x91C5 +0x91C6 +0x91C7 +0x91C8 +0x91C9 +0x91CA +0x91CB +0x91CC +0x91CD +0x91CE Ұ +0x91CF +0x91D0 +0x91D1 +0x91D2 +0x91D3 +0x91D4 +0x91D5 +0x91D6 +0x91D7 +0x91D8 +0x91D9 +0x91DA +0x91DB +0x91DC +0x91DD +0x91DE +0x91DF +0x91E0 +0x91E1 +0x91E2 +0x91E3 +0x91E4 +0x91E5 +0x91E6 @ +0x91E7 A +0x91E8 B +0x91E9 C +0x91EA D +0x91EB E +0x91EC F +0x91ED G +0x91EE H +0x91EF I +0x91F0 J +0x91F1 K +0x91F2 L +0x91F3 M +0x91F4 N +0x91F5 O +0x91F6 P +0x91F7 Q +0x91F8 R +0x91F9 S +0x91FA T +0x91FB U +0x91FC V +0x91FD W +0x91FE X +0x91FF Y +0x9200 Z +0x9201 [ +0x9202 \ +0x9203 ] +0x9204 ^ +0x9205 _ +0x9206 ` +0x9207 a +0x9208 b +0x9209 c +0x920A d +0x920B e +0x920C f +0x920D g +0x920E h +0x920F i +0x9210 j +0x9211 k +0x9212 l +0x9213 m +0x9214 n +0x9215 o +0x9216 p +0x9217 q +0x9218 r +0x9219 s +0x921A t +0x921B u +0x921C v +0x921D w +0x921E x +0x921F y +0x9220 z +0x9221 { +0x9222 | +0x9223 } +0x9224 ~ +0x9225 +0x9226 +0x9227 +0x9228 +0x9229 +0x922A +0x922B +0x922C +0x922D +0x922E +0x922F +0x9230 +0x9231 +0x9232 +0x9233 +0x9234 +0x9235 +0x9236 +0x9237 +0x9238 +0x9239 +0x923A +0x923B +0x923C +0x923D +0x923E +0x923F +0x9240 +0x9241 +0x9242 +0x9243 +0x9244 +0x9245 +0x9246 @ +0x9247 A +0x9248 B +0x9249 C +0x924A D +0x924B E +0x924C F +0x924D G +0x924E H +0x924F I +0x9250 J +0x9251 K +0x9252 L +0x9253 M +0x9254 N +0x9255 O +0x9256 P +0x9257 Q +0x9258 R +0x9259 S +0x925A T +0x925B U +0x925C V +0x925D W +0x925E X +0x925F Y +0x9260 Z +0x9261 [ +0x9262 \ +0x9263 ] +0x9264 ^ +0x9265 _ +0x9266 ` +0x9267 a +0x9268 b +0x9269 c +0x926A d +0x926B e +0x926C f +0x926D g +0x926E h +0x926F i +0x9270 j +0x9271 k +0x9272 l +0x9273 m +0x9274 +0x9275 n +0x9276 o +0x9277 p +0x9278 q +0x9279 r +0x927A s +0x927B t +0x927C u +0x927D v +0x927E w +0x927F x +0x9280 y +0x9281 z +0x9282 { +0x9283 | +0x9284 } +0x9285 ~ +0x9286 +0x9287 +0x9288 +0x9289 +0x928A +0x928B +0x928C +0x928D +0x928E +0x928F +0x9290 +0x9291 +0x9292 +0x9293 +0x9294 +0x9295 +0x9296 +0x9297 +0x9298 +0x9299 +0x929A +0x929B +0x929C +0x929D +0x929E +0x929F +0x92A0 +0x92A1 +0x92A2 +0x92A3 +0x92A4 +0x92A5 +0x92A6 +0x92A7 +0x92A8 @ +0x92A9 A +0x92AA B +0x92AB C +0x92AC D +0x92AD E +0x92AE +0x92AF F +0x92B0 G +0x92B1 H +0x92B2 I +0x92B3 J +0x92B4 K +0x92B5 L +0x92B6 M +0x92B7 N +0x92B8 O +0x92B9 P +0x92BA Q +0x92BB R +0x92BC S +0x92BD T +0x92BE U +0x92BF V +0x92C0 W +0x92C1 X +0x92C2 Y +0x92C3 Z +0x92C4 [ +0x92C5 \ +0x92C6 ] +0x92C7 ^ +0x92C8 +0x92C9 _ +0x92CA ` +0x92CB a +0x92CC b +0x92CD c +0x92CE d +0x92CF e +0x92D0 f +0x92D1 g +0x92D2 h +0x92D3 i +0x92D4 j +0x92D5 k +0x92D6 l +0x92D7 m +0x92D8 n +0x92D9 o +0x92DA p +0x92DB q +0x92DC r +0x92DD s +0x92DE t +0x92DF u +0x92E0 v +0x92E1 w +0x92E2 x +0x92E3 y +0x92E4 z +0x92E5 { +0x92E6 | +0x92E7 } +0x92E8 ~ +0x92E9 +0x92EA +0x92EB +0x92EC +0x92ED +0x92EE +0x92EF +0x92F0 +0x92F1 +0x92F2 +0x92F3 +0x92F4 +0x92F5 +0x92F6 +0x92F7 +0x92F8 +0x92F9 +0x92FA +0x92FB +0x92FC +0x92FD +0x92FE +0x92FF +0x9300 +0x9301 +0x9302 +0x9303 +0x9304 +0x9305 +0x9306 +0x9307 +0x9308 +0x9309 +0x930A @ +0x930B A +0x930C B +0x930D C +0x930E D +0x930F E +0x9310 F +0x9311 G +0x9312 H +0x9313 I +0x9314 J +0x9315 K +0x9316 L +0x9317 M +0x9318 N +0x9319 O +0x931A P +0x931B Q +0x931C R +0x931D S +0x931E T +0x931F U +0x9320 V +0x9321 W +0x9322 X +0x9323 Y +0x9324 Z +0x9325 [ +0x9326 \ +0x9327 ] +0x9328 ^ +0x9329 _ +0x932A ` +0x932B a +0x932C b +0x932D c +0x932E d +0x932F e +0x9330 f +0x9331 g +0x9332 h +0x9333 i +0x9334 j +0x9335 k +0x9336 l +0x9337 m +0x9338 n +0x9339 o +0x933A p +0x933B q +0x933C r +0x933D s +0x933E +0x933F t +0x9340 u +0x9341 v +0x9342 w +0x9343 x +0x9344 y +0x9345 z +0x9346 { +0x9347 | +0x9348 } +0x9349 ~ +0x934A +0x934B +0x934C +0x934D +0x934E +0x934F +0x9350 +0x9351 +0x9352 +0x9353 +0x9354 +0x9355 +0x9356 +0x9357 +0x9358 +0x9359 +0x935A +0x935B +0x935C +0x935D +0x935E +0x935F +0x9360 +0x9361 +0x9362 +0x9363 +0x9364 +0x9365 +0x9366 +0x9367 +0x9368 +0x9369 +0x936A +0x936B +0x936C @ +0x936D A +0x936E B +0x936F C +0x9370 D +0x9371 E +0x9372 F +0x9373 G +0x9374 H +0x9375 I +0x9376 J +0x9377 K +0x9378 L +0x9379 M +0x937A N +0x937B O +0x937C P +0x937D Q +0x937E R +0x937F S +0x9380 T +0x9381 U +0x9382 V +0x9383 W +0x9384 X +0x9385 Y +0x9386 Z +0x9387 [ +0x9388 \ +0x9389 ] +0x938A ^ +0x938B _ +0x938C ` +0x938D a +0x938E b +0x938F +0x9390 c +0x9391 d +0x9392 e +0x9393 f +0x9394 g +0x9395 h +0x9396 i +0x9397 j +0x9398 k +0x9399 l +0x939A m +0x939B n +0x939C o +0x939D p +0x939E q +0x939F r +0x93A0 s +0x93A1 t +0x93A2 u +0x93A3 v +0x93A4 w +0x93A5 x +0x93A6 y +0x93A7 z +0x93A8 { +0x93A9 | +0x93AA } +0x93AB ~ +0x93AC +0x93AD +0x93AE +0x93AF +0x93B0 +0x93B1 +0x93B2 +0x93B3 +0x93B4 +0x93B5 +0x93B6 +0x93B7 +0x93B8 +0x93B9 +0x93BA +0x93BB +0x93BC +0x93BD +0x93BE +0x93BF +0x93C0 +0x93C1 +0x93C2 +0x93C3 +0x93C4 +0x93C5 +0x93C6 +0x93C7 +0x93C8 +0x93C9 +0x93CA +0x93CB +0x93CC +0x93CD +0x93CE @ +0x93CF A +0x93D0 B +0x93D1 C +0x93D2 D +0x93D3 E +0x93D4 F +0x93D5 G +0x93D6 +0x93D7 H +0x93D8 I +0x93D9 J +0x93DA K +0x93DB L +0x93DC M +0x93DD N +0x93DE O +0x93DF P +0x93E0 Q +0x93E1 R +0x93E2 S +0x93E3 T +0x93E4 U +0x93E5 V +0x93E6 W +0x93E7 X +0x93E8 Y +0x93E9 Z +0x93EA [ +0x93EB \ +0x93EC ] +0x93ED ^ +0x93EE _ +0x93EF ` +0x93F0 a +0x93F1 b +0x93F2 c +0x93F3 d +0x93F4 e +0x93F5 f +0x93F6 g +0x93F7 h +0x93F8 i +0x93F9 j +0x93FA k +0x93FB l +0x93FC m +0x93FD n +0x93FE o +0x93FF p +0x9400 q +0x9401 r +0x9402 s +0x9403 t +0x9404 u +0x9405 v +0x9406 w +0x9407 x +0x9408 y +0x9409 z +0x940A { +0x940B | +0x940C } +0x940D ~ +0x940E +0x940F +0x9410 +0x9411 +0x9412 +0x9413 +0x9414 +0x9415 +0x9416 +0x9417 +0x9418 +0x9419 +0x941A +0x941B +0x941C +0x941D +0x941E +0x941F +0x9420 +0x9421 +0x9422 +0x9423 +0x9424 +0x9425 +0x9426 +0x9427 +0x9428 +0x9429 +0x942A +0x942B +0x942C +0x942D +0x942E +0x942F @ +0x9430 A +0x9431 B +0x9432 C +0x9433 D +0x9434 E +0x9435 F +0x9436 G +0x9437 H +0x9438 I +0x9439 J +0x943A K +0x943B L +0x943C M +0x943D N +0x943E +0x943F O +0x9440 P +0x9441 Q +0x9442 R +0x9443 S +0x9444 T +0x9445 U +0x9446 V +0x9447 W +0x9448 X +0x9449 Y +0x944A Z +0x944B [ +0x944C \ +0x944D ] +0x944E ^ +0x944F _ +0x9450 ` +0x9451 a +0x9452 b +0x9453 c +0x9454 d +0x9455 e +0x9456 f +0x9457 g +0x9458 h +0x9459 i +0x945A j +0x945B k +0x945C l +0x945D m +0x945E n +0x945F o +0x9460 p +0x9461 q +0x9462 r +0x9463 s +0x9464 t +0x9465 u +0x9466 v +0x9467 w +0x9468 x +0x9469 y +0x946A z +0x946B +0x946C { +0x946D | +0x946E } +0x946F ~ +0x9470 +0x9471 +0x9472 +0x9473 +0x9474 +0x9475 +0x9476 +0x9477 +0x9478 +0x9479 +0x947A +0x947B +0x947C +0x947D +0x947E +0x947F +0x9480 +0x9481 +0x9482 +0x9483 +0x9484 +0x9485 +0x9486 +0x9487 +0x9488 +0x9489 +0x948A +0x948B +0x948C +0x948D +0x948E ǥ +0x948F +0x9490 +0x9491 +0x9492 +0x9493 +0x9494 +0x9495 +0x9496 +0x9497 +0x9498 +0x9499 +0x949A +0x949B +0x949C +0x949D +0x949E +0x949F +0x94A0 +0x94A1 +0x94A2 +0x94A3 +0x94A4 +0x94A5 Կ +0x94A6 +0x94A7 +0x94A8 +0x94A9 +0x94AA +0x94AB +0x94AC +0x94AD +0x94AE ť +0x94AF +0x94B0 +0x94B1 Ǯ +0x94B2 +0x94B3 ǯ +0x94B4 +0x94B5 +0x94B6 +0x94B7 +0x94B8 +0x94B9 +0x94BA +0x94BB +0x94BC +0x94BD +0x94BE +0x94BF +0x94C0 +0x94C1 +0x94C2 +0x94C3 +0x94C4 +0x94C5 Ǧ +0x94C6 í +0x94C7 +0x94C8 +0x94C9 +0x94CA +0x94CB +0x94CC +0x94CD +0x94CE +0x94CF +0x94D0 +0x94D1 +0x94D2 +0x94D3 +0x94D4 +0x94D5 +0x94D6 +0x94D7 +0x94D8 +0x94D9 +0x94DA +0x94DB +0x94DC ͭ +0x94DD +0x94DE +0x94DF +0x94E0 +0x94E1 ա +0x94E2 +0x94E3 ϳ +0x94E4 +0x94E5 +0x94E6 +0x94E7 +0x94E8 +0x94E9 +0x94EA +0x94EB +0x94EC +0x94ED +0x94EE +0x94EF +0x94F0 +0x94F1 ҿ +0x94F2 +0x94F3 +0x94F4 +0x94F5 +0x94F6 +0x94F7 +0x94F8 +0x94F9 +0x94FA +0x94FB +0x94FC +0x94FD +0x94FE +0x94FF +0x9500 +0x9501 +0x9502 +0x9503 +0x9504 +0x9505 +0x9506 +0x9507 +0x9508 +0x9509 +0x950A +0x950B +0x950C п +0x950D +0x950E +0x950F +0x9510 +0x9511 +0x9512 +0x9513 +0x9514 +0x9515 +0x9516 +0x9517 +0x9518 +0x9519 +0x951A ê +0x951B +0x951C +0x951D +0x951E +0x951F +0x9520 +0x9521 +0x9522 +0x9523 +0x9524 +0x9525 ׶ +0x9526 +0x9527 @ +0x9528 +0x9529 +0x952A +0x952B +0x952C +0x952D +0x952E +0x952F +0x9530 +0x9531 +0x9532 +0x9533 A +0x9534 +0x9535 +0x9536 +0x9537 +0x9538 +0x9539 +0x953A +0x953B +0x953C +0x953D B +0x953E +0x953F +0x9540 +0x9541 þ +0x9542 +0x9543 C +0x9544 +0x9545 +0x9546 +0x9547 +0x9548 D +0x9549 +0x954A +0x954B E +0x954C +0x954D +0x954E +0x954F +0x9550 +0x9551 +0x9552 +0x9553 +0x9554 +0x9555 F +0x9556 +0x9557 +0x9558 +0x9559 +0x955A G +0x955B +0x955C +0x955D +0x955E +0x955F +0x9560 H +0x9561 +0x9562 +0x9563 +0x9564 +0x9565 +0x9566 +0x9567 +0x9568 +0x9569 +0x956A +0x956B +0x956C +0x956D +0x956E I +0x956F +0x9570 +0x9571 +0x9572 +0x9573 +0x9574 J +0x9575 K +0x9576 +0x9577 L +0x9578 M +0x9579 N +0x957A O +0x957B P +0x957C Q +0x957D R +0x957E S +0x957F +0x9580 T +0x9581 U +0x9582 V +0x9583 W +0x9584 X +0x9585 Y +0x9586 Z +0x9587 [ +0x9588 \ +0x9589 ] +0x958A ^ +0x958B _ +0x958C ` +0x958D a +0x958E b +0x958F c +0x9590 d +0x9591 e +0x9592 f +0x9593 g +0x9594 h +0x9595 i +0x9596 j +0x9597 k +0x9598 l +0x9599 m +0x959A n +0x959B o +0x959C p +0x959D q +0x959E r +0x959F s +0x95A0 t +0x95A1 u +0x95A2 v +0x95A3 w +0x95A4 x +0x95A5 y +0x95A6 z +0x95A7 { +0x95A8 | +0x95A9 } +0x95AA ~ +0x95AB +0x95AC +0x95AD +0x95AE +0x95AF +0x95B0 +0x95B1 +0x95B2 +0x95B3 +0x95B4 +0x95B5 +0x95B6 +0x95B7 +0x95B8 +0x95B9 +0x95BA +0x95BB +0x95BC +0x95BD +0x95BE +0x95BF +0x95C0 +0x95C1 +0x95C2 +0x95C3 +0x95C4 +0x95C5 +0x95C6 +0x95C7 +0x95C8 +0x95C9 +0x95CA +0x95CB +0x95CC @ +0x95CD A +0x95CE B +0x95CF C +0x95D0 D +0x95D1 E +0x95D2 F +0x95D3 G +0x95D4 H +0x95D5 I +0x95D6 J +0x95D7 K +0x95D8 L +0x95D9 M +0x95DA N +0x95DB O +0x95DC P +0x95DD Q +0x95DE R +0x95DF S +0x95E0 T +0x95E1 U +0x95E2 V +0x95E3 W +0x95E4 X +0x95E5 Y +0x95E6 Z +0x95E7 [ +0x95E8 +0x95E9 +0x95EA +0x95EB +0x95EC \ +0x95ED +0x95EE +0x95EF +0x95F0 +0x95F1 +0x95F2 +0x95F3 +0x95F4 +0x95F5 +0x95F6 +0x95F7 +0x95F8 բ +0x95F9 +0x95FA +0x95FB +0x95FC +0x95FD +0x95FE +0x95FF ] +0x9600 +0x9601 +0x9602 +0x9603 +0x9604 +0x9605 +0x9606 +0x9607 ^ +0x9608 +0x9609 +0x960A +0x960B +0x960C +0x960D +0x960E +0x960F +0x9610 +0x9611 +0x9612 +0x9613 _ +0x9614 +0x9615 +0x9616 +0x9617 +0x9618 ` +0x9619 +0x961A +0x961B a +0x961C +0x961D +0x961E b +0x961F +0x9620 c +0x9621 +0x9622 +0x9623 d +0x9624 e +0x9625 f +0x9626 g +0x9627 h +0x9628 i +0x9629 j +0x962A +0x962B k +0x962C l +0x962D m +0x962E +0x962F n +0x9630 o +0x9631 +0x9632 +0x9633 +0x9634 +0x9635 +0x9636 +0x9637 p +0x9638 q +0x9639 r +0x963A s +0x963B +0x963C +0x963D +0x963E t +0x963F +0x9640 +0x9641 u +0x9642 +0x9643 v +0x9644 +0x9645 +0x9646 ½ +0x9647 ¤ +0x9648 +0x9649 +0x964A w +0x964B ª +0x964C İ +0x964D +0x964E x +0x964F y +0x9650 +0x9651 z +0x9652 { +0x9653 | +0x9654 +0x9655 +0x9656 } +0x9657 ~ +0x9658 +0x9659 +0x965A +0x965B +0x965C +0x965D +0x965E +0x965F +0x9660 +0x9661 +0x9662 Ժ +0x9663 +0x9664 +0x9665 +0x9666 +0x9667 +0x9668 +0x9669 +0x966A +0x966B +0x966C +0x966D +0x966E +0x966F +0x9670 +0x9671 +0x9672 +0x9673 +0x9674 +0x9675 +0x9676 +0x9677 +0x9678 +0x9679 +0x967A +0x967B +0x967C +0x967D +0x967E +0x967F +0x9680 +0x9681 +0x9682 +0x9683 +0x9684 +0x9685 +0x9686 ¡ +0x9687 +0x9688 +0x9689 +0x968A +0x968B +0x968C @ +0x968D +0x968E A +0x968F +0x9690 +0x9691 B +0x9692 C +0x9693 D +0x9694 +0x9695 E +0x9696 F +0x9697 +0x9698 +0x9699 ϶ +0x969A G +0x969B H +0x969C +0x969D I +0x969E J +0x969F K +0x96A0 L +0x96A1 M +0x96A2 N +0x96A3 O +0x96A4 P +0x96A5 Q +0x96A6 R +0x96A7 +0x96A8 S +0x96A9 T +0x96AA U +0x96AB V +0x96AC W +0x96AD X +0x96AE Y +0x96AF Z +0x96B0 +0x96B1 [ +0x96B2 \ +0x96B3 +0x96B4 ] +0x96B5 ^ +0x96B6 +0x96B7 _ +0x96B8 ` +0x96B9 +0x96BA a +0x96BB b +0x96BC +0x96BD +0x96BE +0x96BF c +0x96C0 ȸ +0x96C1 +0x96C2 d +0x96C3 e +0x96C4 +0x96C5 +0x96C6 +0x96C7 +0x96C8 f +0x96C9 +0x96CA g +0x96CB h +0x96CC +0x96CD Ӻ +0x96CE +0x96CF +0x96D0 i +0x96D1 j +0x96D2 +0x96D3 k +0x96D4 l +0x96D5 +0x96D6 m +0x96D7 n +0x96D8 o +0x96D9 p +0x96DA q +0x96DB r +0x96DC s +0x96DD t +0x96DE u +0x96DF v +0x96E0 +0x96E1 w +0x96E2 x +0x96E3 y +0x96E4 z +0x96E5 { +0x96E6 | +0x96E7 } +0x96E8 +0x96E9 +0x96EA ѩ +0x96EB ~ +0x96EC +0x96ED +0x96EE +0x96EF +0x96F0 +0x96F1 +0x96F2 +0x96F3 +0x96F4 +0x96F5 +0x96F6 +0x96F7 +0x96F8 +0x96F9 +0x96FA +0x96FB +0x96FC +0x96FD +0x96FE +0x96FF +0x9700 +0x9701 +0x9702 +0x9703 +0x9704 +0x9705 +0x9706 +0x9707 +0x9708 +0x9709 ù +0x970A +0x970B +0x970C +0x970D +0x970E +0x970F +0x9710 +0x9711 +0x9712 +0x9713 +0x9714 +0x9715 +0x9716 +0x9717 +0x9718 +0x9719 +0x971A +0x971B +0x971C ˪ +0x971D +0x971E ϼ +0x971F +0x9720 +0x9721 @ +0x9722 A +0x9723 B +0x9724 C +0x9725 D +0x9726 E +0x9727 F +0x9728 G +0x9729 H +0x972A +0x972B I +0x972C J +0x972D +0x972E K +0x972F L +0x9730 +0x9731 M +0x9732 ¶ +0x9733 N +0x9734 O +0x9735 P +0x9736 Q +0x9737 R +0x9738 +0x9739 +0x973A S +0x973B T +0x973C U +0x973D V +0x973E +0x973F W +0x9740 X +0x9741 Y +0x9742 Z +0x9743 [ +0x9744 \ +0x9745 ] +0x9746 ^ +0x9747 _ +0x9748 ` +0x9749 a +0x974A b +0x974B c +0x974C d +0x974D e +0x974E f +0x974F g +0x9750 h +0x9751 i +0x9752 +0x9753 +0x9754 j +0x9755 k +0x9756 +0x9757 l +0x9758 m +0x9759 +0x975A n +0x975B +0x975C o +0x975D p +0x975E +0x975F q +0x9760 +0x9761 +0x9762 +0x9763 r +0x9764 s +0x9765 +0x9766 t +0x9767 u +0x9768 v +0x9769 +0x976A w +0x976B x +0x976C y +0x976D z +0x976E { +0x976F | +0x9770 } +0x9771 ~ +0x9772 +0x9773 +0x9774 ѥ +0x9775 +0x9776 +0x9777 +0x9778 +0x9779 +0x977A +0x977B +0x977C +0x977D +0x977E +0x977F +0x9780 +0x9781 +0x9782 +0x9783 +0x9784 +0x9785 +0x9786 +0x9787 +0x9788 +0x9789 +0x978A +0x978B Ь +0x978C +0x978D +0x978E +0x978F +0x9790 +0x9791 +0x9792 +0x9793 +0x9794 +0x9795 +0x9796 +0x9797 +0x9798 +0x9799 +0x979A +0x979B +0x979C +0x979D +0x979E @ +0x979F A +0x97A0 +0x97A1 B +0x97A2 C +0x97A3 +0x97A4 D +0x97A5 E +0x97A6 F +0x97A7 G +0x97A8 H +0x97A9 I +0x97AA J +0x97AB +0x97AC K +0x97AD +0x97AE L +0x97AF +0x97B0 M +0x97B1 N +0x97B2 +0x97B3 O +0x97B4 +0x97B5 P +0x97B6 Q +0x97B7 R +0x97B8 S +0x97B9 T +0x97BA U +0x97BB V +0x97BC W +0x97BD X +0x97BE Y +0x97BF Z +0x97C0 [ +0x97C1 \ +0x97C2 ] +0x97C3 ^ +0x97C4 _ +0x97C5 ` +0x97C6 a +0x97C7 b +0x97C8 c +0x97C9 d +0x97CA e +0x97CB f +0x97CC g +0x97CD h +0x97CE i +0x97CF j +0x97D0 k +0x97D1 l +0x97D2 m +0x97D3 n +0x97D4 o +0x97D5 p +0x97D6 q +0x97D7 r +0x97D8 s +0x97D9 t +0x97DA u +0x97DB v +0x97DC w +0x97DD x +0x97DE y +0x97DF z +0x97E0 { +0x97E1 | +0x97E2 } +0x97E3 ~ +0x97E4 +0x97E5 +0x97E6 Τ +0x97E7 +0x97E8 +0x97E9 +0x97EA +0x97EB +0x97EC +0x97ED +0x97EE +0x97EF +0x97F0 +0x97F1 +0x97F2 +0x97F3 +0x97F4 +0x97F5 +0x97F6 +0x97F7 +0x97F8 +0x97F9 +0x97FA +0x97FB +0x97FC +0x97FD +0x97FE +0x97FF +0x9800 +0x9801 +0x9802 +0x9803 +0x9804 +0x9805 +0x9806 +0x9807 +0x9808 +0x9809 +0x980A +0x980B +0x980C +0x980D +0x980E +0x980F @ +0x9810 A +0x9811 B +0x9812 C +0x9813 D +0x9814 E +0x9815 F +0x9816 G +0x9817 H +0x9818 I +0x9819 J +0x981A K +0x981B L +0x981C M +0x981D N +0x981E O +0x981F P +0x9820 Q +0x9821 R +0x9822 S +0x9823 T +0x9824 U +0x9825 V +0x9826 W +0x9827 X +0x9828 Y +0x9829 Z +0x982A [ +0x982B \ +0x982C ] +0x982D ^ +0x982E _ +0x982F ` +0x9830 a +0x9831 b +0x9832 c +0x9833 d +0x9834 e +0x9835 f +0x9836 g +0x9837 h +0x9838 i +0x9839 j +0x983A k +0x983B l +0x983C m +0x983D n +0x983E o +0x983F p +0x9840 q +0x9841 r +0x9842 s +0x9843 t +0x9844 u +0x9845 v +0x9846 w +0x9847 x +0x9848 y +0x9849 z +0x984A { +0x984B | +0x984C } +0x984D ~ +0x984E +0x984F +0x9850 +0x9851 +0x9852 +0x9853 +0x9854 +0x9855 +0x9856 +0x9857 +0x9858 +0x9859 +0x985A +0x985B +0x985C +0x985D +0x985E +0x985F +0x9860 +0x9861 +0x9862 +0x9863 +0x9864 +0x9865 +0x9866 +0x9867 +0x9868 +0x9869 +0x986A +0x986B +0x986C +0x986D +0x986E +0x986F @ +0x9870 A +0x9871 B +0x9872 C +0x9873 D +0x9874 E +0x9875 ҳ +0x9876 +0x9877 +0x9878 +0x9879 +0x987A ˳ +0x987B +0x987C +0x987D +0x987E +0x987F +0x9880 +0x9881 +0x9882 +0x9883 +0x9884 Ԥ +0x9885 ­ +0x9886 +0x9887 +0x9888 +0x9889 +0x988A +0x988B F +0x988C +0x988D +0x988E G +0x988F +0x9890 +0x9891 Ƶ +0x9892 H +0x9893 +0x9894 +0x9895 I +0x9896 ӱ +0x9897 +0x9898 +0x9899 J +0x989A +0x989B +0x989C +0x989D +0x989E +0x989F +0x98A0 +0x98A1 +0x98A2 +0x98A3 K +0x98A4 +0x98A5 +0x98A6 +0x98A7 ȧ +0x98A8 L +0x98A9 M +0x98AA N +0x98AB O +0x98AC P +0x98AD Q +0x98AE R +0x98AF S +0x98B0 T +0x98B1 U +0x98B2 V +0x98B3 W +0x98B4 X +0x98B5 Y +0x98B6 Z +0x98B7 [ +0x98B8 \ +0x98B9 ] +0x98BA ^ +0x98BB _ +0x98BC ` +0x98BD a +0x98BE b +0x98BF c +0x98C0 d +0x98C1 e +0x98C2 f +0x98C3 g +0x98C4 h +0x98C5 i +0x98C6 j +0x98C7 k +0x98C8 l +0x98C9 m +0x98CA n +0x98CB o +0x98CC p +0x98CD q +0x98CE +0x98CF r +0x98D0 s +0x98D1 +0x98D2 +0x98D3 +0x98D4 t +0x98D5 +0x98D6 u +0x98D7 v +0x98D8 Ʈ +0x98D9 +0x98DA +0x98DB w +0x98DC x +0x98DD y +0x98DE +0x98DF ʳ +0x98E0 z +0x98E1 { +0x98E2 | +0x98E3 } +0x98E4 ~ +0x98E5 +0x98E6 +0x98E7 +0x98E8 +0x98E9 +0x98EA +0x98EB +0x98EC +0x98ED +0x98EE +0x98EF +0x98F0 +0x98F1 +0x98F2 +0x98F3 +0x98F4 +0x98F5 +0x98F6 +0x98F7 +0x98F8 +0x98F9 +0x98FA +0x98FB +0x98FC +0x98FD +0x98FE +0x98FF +0x9900 +0x9901 +0x9902 +0x9903 +0x9904 +0x9905 +0x9906 +0x9907 +0x9908 @ +0x9909 A +0x990A B +0x990B C +0x990C D +0x990D +0x990E E +0x990F F +0x9910 +0x9911 G +0x9912 H +0x9913 I +0x9914 J +0x9915 K +0x9916 L +0x9917 M +0x9918 N +0x9919 O +0x991A P +0x991B Q +0x991C R +0x991D S +0x991E T +0x991F U +0x9920 V +0x9921 W +0x9922 X +0x9923 Y +0x9924 Z +0x9925 [ +0x9926 \ +0x9927 ] +0x9928 ^ +0x9929 _ +0x992A ` +0x992B a +0x992C b +0x992D c +0x992E +0x992F d +0x9930 e +0x9931 f +0x9932 g +0x9933 h +0x9934 i +0x9935 j +0x9936 k +0x9937 l +0x9938 m +0x9939 n +0x993A o +0x993B p +0x993C q +0x993D r +0x993E s +0x993F t +0x9940 u +0x9941 v +0x9942 w +0x9943 x +0x9944 y +0x9945 z +0x9946 { +0x9947 | +0x9948 } +0x9949 ~ +0x994A +0x994B +0x994C +0x994D +0x994E +0x994F +0x9950 +0x9951 +0x9952 +0x9953 +0x9954 +0x9955 +0x9956 +0x9957 +0x9958 +0x9959 +0x995A +0x995B +0x995C +0x995D +0x995E +0x995F +0x9960 +0x9961 +0x9962 +0x9963 +0x9964 +0x9965 +0x9966 +0x9967 +0x9968 +0x9969 +0x996A +0x996B +0x996C +0x996D +0x996E +0x996F +0x9970 +0x9971 +0x9972 +0x9973 +0x9974 +0x9975 +0x9976 +0x9977 +0x9978 +0x9979 +0x997A +0x997B +0x997C +0x997D +0x997E +0x997F +0x9980 +0x9981 +0x9982 +0x9983 +0x9984 +0x9985 +0x9986 +0x9987 +0x9988 +0x9989 +0x998A +0x998B +0x998C @ +0x998D +0x998E A +0x998F +0x9990 +0x9991 +0x9992 +0x9993 +0x9994 +0x9995 +0x9996 +0x9997 ظ +0x9998 +0x9999 +0x999A B +0x999B C +0x999C D +0x999D E +0x999E F +0x999F G +0x99A0 H +0x99A1 I +0x99A2 J +0x99A3 K +0x99A4 L +0x99A5 +0x99A6 M +0x99A7 N +0x99A8 ܰ +0x99A9 O +0x99AA P +0x99AB Q +0x99AC R +0x99AD S +0x99AE T +0x99AF U +0x99B0 V +0x99B1 W +0x99B2 X +0x99B3 Y +0x99B4 Z +0x99B5 [ +0x99B6 \ +0x99B7 ] +0x99B8 ^ +0x99B9 _ +0x99BA ` +0x99BB a +0x99BC b +0x99BD c +0x99BE d +0x99BF e +0x99C0 f +0x99C1 g +0x99C2 h +0x99C3 i +0x99C4 j +0x99C5 k +0x99C6 l +0x99C7 m +0x99C8 n +0x99C9 o +0x99CA p +0x99CB q +0x99CC r +0x99CD s +0x99CE t +0x99CF u +0x99D0 v +0x99D1 w +0x99D2 x +0x99D3 y +0x99D4 z +0x99D5 { +0x99D6 | +0x99D7 } +0x99D8 ~ +0x99D9 +0x99DA +0x99DB +0x99DC +0x99DD +0x99DE +0x99DF +0x99E0 +0x99E1 +0x99E2 +0x99E3 +0x99E4 +0x99E5 +0x99E6 +0x99E7 +0x99E8 +0x99E9 +0x99EA +0x99EB +0x99EC +0x99ED +0x99EE +0x99EF +0x99F0 +0x99F1 +0x99F2 +0x99F3 +0x99F4 +0x99F5 +0x99F6 +0x99F7 +0x99F8 +0x99F9 +0x99FA @ +0x99FB A +0x99FC B +0x99FD C +0x99FE D +0x99FF E +0x9A00 F +0x9A01 G +0x9A02 H +0x9A03 I +0x9A04 J +0x9A05 K +0x9A06 L +0x9A07 M +0x9A08 N +0x9A09 O +0x9A0A P +0x9A0B Q +0x9A0C R +0x9A0D S +0x9A0E T +0x9A0F U +0x9A10 V +0x9A11 W +0x9A12 X +0x9A13 Y +0x9A14 Z +0x9A15 [ +0x9A16 \ +0x9A17 ] +0x9A18 ^ +0x9A19 _ +0x9A1A ` +0x9A1B a +0x9A1C b +0x9A1D c +0x9A1E d +0x9A1F e +0x9A20 f +0x9A21 g +0x9A22 h +0x9A23 i +0x9A24 j +0x9A25 k +0x9A26 l +0x9A27 m +0x9A28 n +0x9A29 o +0x9A2A p +0x9A2B q +0x9A2C r +0x9A2D s +0x9A2E t +0x9A2F u +0x9A30 v +0x9A31 w +0x9A32 x +0x9A33 y +0x9A34 z +0x9A35 { +0x9A36 | +0x9A37 } +0x9A38 ~ +0x9A39 +0x9A3A +0x9A3B +0x9A3C +0x9A3D +0x9A3E +0x9A3F +0x9A40 +0x9A41 +0x9A42 +0x9A43 +0x9A44 +0x9A45 +0x9A46 +0x9A47 +0x9A48 +0x9A49 +0x9A4A +0x9A4B +0x9A4C +0x9A4D +0x9A4E +0x9A4F +0x9A50 +0x9A51 +0x9A52 +0x9A53 +0x9A54 +0x9A55 +0x9A56 +0x9A57 +0x9A58 +0x9A59 +0x9A5A @ +0x9A5B A +0x9A5C B +0x9A5D C +0x9A5E D +0x9A5F E +0x9A60 F +0x9A61 G +0x9A62 H +0x9A63 I +0x9A64 J +0x9A65 K +0x9A66 L +0x9A67 M +0x9A68 N +0x9A69 O +0x9A6A P +0x9A6B Q +0x9A6C +0x9A6D Ԧ +0x9A6E +0x9A6F ѱ +0x9A70 +0x9A71 +0x9A72 R +0x9A73 +0x9A74 ¿ +0x9A75 +0x9A76 ʻ +0x9A77 +0x9A78 +0x9A79 +0x9A7A +0x9A7B פ +0x9A7C +0x9A7D +0x9A7E +0x9A7F +0x9A80 +0x9A81 +0x9A82 +0x9A83 S +0x9A84 +0x9A85 +0x9A86 +0x9A87 +0x9A88 +0x9A89 T +0x9A8A +0x9A8B +0x9A8C +0x9A8D U +0x9A8E V +0x9A8F +0x9A90 +0x9A91 +0x9A92 +0x9A93 +0x9A94 W +0x9A95 X +0x9A96 +0x9A97 ƭ +0x9A98 +0x9A99 Y +0x9A9A ɧ +0x9A9B +0x9A9C +0x9A9D +0x9A9E +0x9A9F +0x9AA0 +0x9AA1 +0x9AA2 +0x9AA3 +0x9AA4 +0x9AA5 +0x9AA6 Z +0x9AA7 +0x9AA8 +0x9AA9 [ +0x9AAA \ +0x9AAB ] +0x9AAC ^ +0x9AAD _ +0x9AAE ` +0x9AAF a +0x9AB0 +0x9AB1 +0x9AB2 b +0x9AB3 c +0x9AB4 d +0x9AB5 e +0x9AB6 +0x9AB7 +0x9AB8 +0x9AB9 f +0x9ABA +0x9ABB g +0x9ABC +0x9ABD h +0x9ABE i +0x9ABF j +0x9AC0 +0x9AC1 +0x9AC2 +0x9AC3 k +0x9AC4 l +0x9AC5 +0x9AC6 m +0x9AC7 n +0x9AC8 o +0x9AC9 p +0x9ACA q +0x9ACB +0x9ACC +0x9ACD r +0x9ACE s +0x9ACF t +0x9AD0 u +0x9AD1 +0x9AD2 v +0x9AD3 +0x9AD4 w +0x9AD5 x +0x9AD6 y +0x9AD7 z +0x9AD8 +0x9AD9 { +0x9ADA | +0x9ADB } +0x9ADC ~ +0x9ADD +0x9ADE +0x9ADF +0x9AE0 +0x9AE1 +0x9AE2 +0x9AE3 +0x9AE4 +0x9AE5 +0x9AE6 +0x9AE7 +0x9AE8 +0x9AE9 +0x9AEA +0x9AEB +0x9AEC +0x9AED +0x9AEE +0x9AEF +0x9AF0 +0x9AF1 +0x9AF2 +0x9AF3 +0x9AF4 +0x9AF5 +0x9AF6 +0x9AF7 +0x9AF8 +0x9AF9 +0x9AFA +0x9AFB +0x9AFC +0x9AFD +0x9AFE +0x9AFF +0x9B00 +0x9B01 +0x9B02 +0x9B03 +0x9B04 +0x9B05 +0x9B06 +0x9B07 @ +0x9B08 +0x9B09 A +0x9B0A B +0x9B0B C +0x9B0C D +0x9B0D E +0x9B0E F +0x9B0F +0x9B10 G +0x9B11 H +0x9B12 I +0x9B13 +0x9B14 J +0x9B15 K +0x9B16 L +0x9B17 M +0x9B18 N +0x9B19 O +0x9B1A P +0x9B1B Q +0x9B1C R +0x9B1D S +0x9B1E T +0x9B1F +0x9B20 U +0x9B21 V +0x9B22 W +0x9B23 +0x9B24 X +0x9B25 Y +0x9B26 Z +0x9B27 [ +0x9B28 \ +0x9B29 ] +0x9B2A ^ +0x9B2B _ +0x9B2C ` +0x9B2D a +0x9B2E b +0x9B2F +0x9B30 c +0x9B31 d +0x9B32 ت +0x9B33 e +0x9B34 f +0x9B35 g +0x9B36 h +0x9B37 i +0x9B38 j +0x9B39 k +0x9B3A l +0x9B3B +0x9B3C +0x9B3D m +0x9B3E n +0x9B3F o +0x9B40 p +0x9B41 +0x9B42 +0x9B43 +0x9B44 +0x9B45 +0x9B46 q +0x9B47 +0x9B48 +0x9B49 +0x9B4A r +0x9B4B s +0x9B4C t +0x9B4D +0x9B4E u +0x9B4F κ +0x9B50 v +0x9B51 +0x9B52 w +0x9B53 x +0x9B54 ħ +0x9B55 y +0x9B56 z +0x9B57 { +0x9B58 | +0x9B59 } +0x9B5A ~ +0x9B5B +0x9B5C +0x9B5D +0x9B5E +0x9B5F +0x9B60 +0x9B61 +0x9B62 +0x9B63 +0x9B64 +0x9B65 +0x9B66 +0x9B67 +0x9B68 +0x9B69 +0x9B6A +0x9B6B +0x9B6C +0x9B6D +0x9B6E +0x9B6F +0x9B70 +0x9B71 +0x9B72 +0x9B73 +0x9B74 +0x9B75 +0x9B76 +0x9B77 +0x9B78 +0x9B79 +0x9B7A +0x9B7B +0x9B7C @ +0x9B7D A +0x9B7E B +0x9B7F C +0x9B80 D +0x9B81 E +0x9B82 F +0x9B83 G +0x9B84 H +0x9B85 I +0x9B86 J +0x9B87 K +0x9B88 L +0x9B89 M +0x9B8A N +0x9B8B O +0x9B8C P +0x9B8D Q +0x9B8E R +0x9B8F S +0x9B90 T +0x9B91 U +0x9B92 V +0x9B93 W +0x9B94 X +0x9B95 Y +0x9B96 Z +0x9B97 [ +0x9B98 \ +0x9B99 ] +0x9B9A ^ +0x9B9B _ +0x9B9C ` +0x9B9D a +0x9B9E b +0x9B9F c +0x9BA0 d +0x9BA1 e +0x9BA2 f +0x9BA3 g +0x9BA4 h +0x9BA5 i +0x9BA6 j +0x9BA7 k +0x9BA8 l +0x9BA9 m +0x9BAA n +0x9BAB o +0x9BAC p +0x9BAD q +0x9BAE r +0x9BAF s +0x9BB0 t +0x9BB1 u +0x9BB2 v +0x9BB3 w +0x9BB4 x +0x9BB5 y +0x9BB6 z +0x9BB7 { +0x9BB8 | +0x9BB9 } +0x9BBA ~ +0x9BBB +0x9BBC +0x9BBD +0x9BBE +0x9BBF +0x9BC0 +0x9BC1 +0x9BC2 +0x9BC3 +0x9BC4 +0x9BC5 +0x9BC6 +0x9BC7 +0x9BC8 +0x9BC9 +0x9BCA +0x9BCB +0x9BCC +0x9BCD +0x9BCE +0x9BCF +0x9BD0 +0x9BD1 +0x9BD2 +0x9BD3 +0x9BD4 +0x9BD5 +0x9BD6 +0x9BD7 +0x9BD8 +0x9BD9 +0x9BDA +0x9BDB +0x9BDC @ +0x9BDD A +0x9BDE B +0x9BDF C +0x9BE0 D +0x9BE1 E +0x9BE2 F +0x9BE3 G +0x9BE4 H +0x9BE5 I +0x9BE6 J +0x9BE7 K +0x9BE8 L +0x9BE9 M +0x9BEA N +0x9BEB O +0x9BEC P +0x9BED Q +0x9BEE R +0x9BEF S +0x9BF0 T +0x9BF1 U +0x9BF2 V +0x9BF3 W +0x9BF4 X +0x9BF5 Y +0x9BF6 Z +0x9BF7 [ +0x9BF8 \ +0x9BF9 ] +0x9BFA ^ +0x9BFB _ +0x9BFC ` +0x9BFD a +0x9BFE b +0x9BFF c +0x9C00 d +0x9C01 e +0x9C02 f +0x9C03 g +0x9C04 h +0x9C05 i +0x9C06 j +0x9C07 k +0x9C08 l +0x9C09 m +0x9C0A n +0x9C0B o +0x9C0C p +0x9C0D q +0x9C0E r +0x9C0F s +0x9C10 t +0x9C11 u +0x9C12 v +0x9C13 w +0x9C14 x +0x9C15 y +0x9C16 z +0x9C17 { +0x9C18 | +0x9C19 } +0x9C1A ~ +0x9C1B +0x9C1C +0x9C1D +0x9C1E +0x9C1F +0x9C20 +0x9C21 +0x9C22 +0x9C23 +0x9C24 +0x9C25 +0x9C26 +0x9C27 +0x9C28 +0x9C29 +0x9C2A +0x9C2B +0x9C2C +0x9C2D +0x9C2E +0x9C2F +0x9C30 +0x9C31 +0x9C32 +0x9C33 +0x9C34 +0x9C35 +0x9C36 +0x9C37 +0x9C38 +0x9C39 +0x9C3A +0x9C3B +0x9C3C @ +0x9C3D A +0x9C3E B +0x9C3F C +0x9C40 D +0x9C41 E +0x9C42 F +0x9C43 G +0x9C44 H +0x9C45 I +0x9C46 J +0x9C47 K +0x9C48 L +0x9C49 M +0x9C4A N +0x9C4B O +0x9C4C P +0x9C4D Q +0x9C4E R +0x9C4F S +0x9C50 T +0x9C51 U +0x9C52 V +0x9C53 W +0x9C54 X +0x9C55 Y +0x9C56 Z +0x9C57 [ +0x9C58 \ +0x9C59 ] +0x9C5A ^ +0x9C5B _ +0x9C5C ` +0x9C5D a +0x9C5E b +0x9C5F c +0x9C60 d +0x9C61 e +0x9C62 f +0x9C63 g +0x9C64 h +0x9C65 i +0x9C66 j +0x9C67 k +0x9C68 l +0x9C69 m +0x9C6A n +0x9C6B o +0x9C6C p +0x9C6D q +0x9C6E r +0x9C6F s +0x9C70 t +0x9C71 u +0x9C72 v +0x9C73 w +0x9C74 x +0x9C75 y +0x9C76 z +0x9C77 { +0x9C78 | +0x9C79 } +0x9C7A ~ +0x9C7B +0x9C7C +0x9C7D +0x9C7E +0x9C7F +0x9C80 +0x9C81 ³ +0x9C82 +0x9C83 +0x9C84 +0x9C85 +0x9C86 +0x9C87 +0x9C88 +0x9C89 +0x9C8A +0x9C8B +0x9C8C +0x9C8D +0x9C8E +0x9C8F +0x9C90 +0x9C91 +0x9C92 +0x9C93 +0x9C94 +0x9C95 +0x9C96 +0x9C97 +0x9C98 +0x9C99 +0x9C9A +0x9C9B +0x9C9C +0x9C9D +0x9C9E +0x9C9F +0x9CA0 +0x9CA1 +0x9CA2 +0x9CA3 +0x9CA4 +0x9CA5 +0x9CA6 +0x9CA7 +0x9CA8 +0x9CA9 +0x9CAA +0x9CAB +0x9CAC +0x9CAD +0x9CAE +0x9CAF +0x9CB0 +0x9CB1 +0x9CB2 +0x9CB3 +0x9CB4 +0x9CB5 +0x9CB6 +0x9CB7 +0x9CB8 +0x9CB9 +0x9CBA +0x9CBB +0x9CBC +0x9CBD +0x9CBE +0x9CBF +0x9CC0 +0x9CC1 +0x9CC2 +0x9CC3 +0x9CC4 +0x9CC5 +0x9CC6 +0x9CC7 +0x9CC8 +0x9CC9 +0x9CCA +0x9CCB +0x9CCC +0x9CCD +0x9CCE +0x9CCF +0x9CD0 +0x9CD1 +0x9CD2 +0x9CD3 +0x9CD4 +0x9CD5 +0x9CD6 +0x9CD7 +0x9CD8 +0x9CD9 +0x9CDA +0x9CDB +0x9CDC +0x9CDD +0x9CDE +0x9CDF +0x9CE0 +0x9CE1 +0x9CE2 +0x9CE3 @ +0x9CE4 A +0x9CE5 B +0x9CE6 C +0x9CE7 D +0x9CE8 E +0x9CE9 F +0x9CEA G +0x9CEB H +0x9CEC I +0x9CED J +0x9CEE K +0x9CEF L +0x9CF0 M +0x9CF1 N +0x9CF2 O +0x9CF3 P +0x9CF4 Q +0x9CF5 R +0x9CF6 S +0x9CF7 T +0x9CF8 U +0x9CF9 V +0x9CFA W +0x9CFB X +0x9CFC Y +0x9CFD Z +0x9CFE [ +0x9CFF \ +0x9D00 ] +0x9D01 ^ +0x9D02 _ +0x9D03 ` +0x9D04 a +0x9D05 b +0x9D06 c +0x9D07 d +0x9D08 e +0x9D09 f +0x9D0A g +0x9D0B h +0x9D0C i +0x9D0D j +0x9D0E k +0x9D0F l +0x9D10 m +0x9D11 n +0x9D12 o +0x9D13 p +0x9D14 q +0x9D15 r +0x9D16 s +0x9D17 t +0x9D18 u +0x9D19 v +0x9D1A w +0x9D1B x +0x9D1C y +0x9D1D z +0x9D1E { +0x9D1F | +0x9D20 } +0x9D21 ~ +0x9D22 +0x9D23 +0x9D24 +0x9D25 +0x9D26 +0x9D27 +0x9D28 +0x9D29 +0x9D2A +0x9D2B +0x9D2C +0x9D2D +0x9D2E +0x9D2F +0x9D30 +0x9D31 +0x9D32 +0x9D33 +0x9D34 +0x9D35 +0x9D36 +0x9D37 +0x9D38 +0x9D39 +0x9D3A +0x9D3B +0x9D3C +0x9D3D +0x9D3E +0x9D3F +0x9D40 +0x9D41 +0x9D42 +0x9D43 @ +0x9D44 A +0x9D45 B +0x9D46 C +0x9D47 D +0x9D48 E +0x9D49 F +0x9D4A G +0x9D4B H +0x9D4C I +0x9D4D J +0x9D4E K +0x9D4F L +0x9D50 M +0x9D51 N +0x9D52 O +0x9D53 P +0x9D54 Q +0x9D55 R +0x9D56 S +0x9D57 T +0x9D58 U +0x9D59 V +0x9D5A W +0x9D5B X +0x9D5C Y +0x9D5D Z +0x9D5E [ +0x9D5F \ +0x9D60 ] +0x9D61 ^ +0x9D62 _ +0x9D63 ` +0x9D64 a +0x9D65 b +0x9D66 c +0x9D67 d +0x9D68 e +0x9D69 f +0x9D6A g +0x9D6B h +0x9D6C i +0x9D6D j +0x9D6E k +0x9D6F l +0x9D70 m +0x9D71 n +0x9D72 o +0x9D73 p +0x9D74 q +0x9D75 r +0x9D76 s +0x9D77 t +0x9D78 u +0x9D79 v +0x9D7A w +0x9D7B x +0x9D7C y +0x9D7D z +0x9D7E { +0x9D7F | +0x9D80 } +0x9D81 ~ +0x9D82 +0x9D83 +0x9D84 +0x9D85 +0x9D86 +0x9D87 +0x9D88 +0x9D89 +0x9D8A +0x9D8B +0x9D8C +0x9D8D +0x9D8E +0x9D8F +0x9D90 +0x9D91 +0x9D92 +0x9D93 +0x9D94 +0x9D95 +0x9D96 +0x9D97 +0x9D98 +0x9D99 +0x9D9A +0x9D9B +0x9D9C +0x9D9D +0x9D9E +0x9D9F +0x9DA0 +0x9DA1 +0x9DA2 +0x9DA3 @ +0x9DA4 A +0x9DA5 B +0x9DA6 C +0x9DA7 D +0x9DA8 E +0x9DA9 F +0x9DAA G +0x9DAB H +0x9DAC I +0x9DAD J +0x9DAE K +0x9DAF L +0x9DB0 M +0x9DB1 N +0x9DB2 O +0x9DB3 P +0x9DB4 Q +0x9DB5 R +0x9DB6 S +0x9DB7 T +0x9DB8 U +0x9DB9 V +0x9DBA W +0x9DBB X +0x9DBC Y +0x9DBD Z +0x9DBE [ +0x9DBF \ +0x9DC0 ] +0x9DC1 ^ +0x9DC2 _ +0x9DC3 ` +0x9DC4 a +0x9DC5 b +0x9DC6 c +0x9DC7 d +0x9DC8 e +0x9DC9 f +0x9DCA g +0x9DCB h +0x9DCC i +0x9DCD j +0x9DCE k +0x9DCF l +0x9DD0 m +0x9DD1 n +0x9DD2 o +0x9DD3 p +0x9DD4 q +0x9DD5 r +0x9DD6 s +0x9DD7 t +0x9DD8 u +0x9DD9 v +0x9DDA w +0x9DDB x +0x9DDC y +0x9DDD z +0x9DDE { +0x9DDF | +0x9DE0 } +0x9DE1 ~ +0x9DE2 +0x9DE3 +0x9DE4 +0x9DE5 +0x9DE6 +0x9DE7 +0x9DE8 +0x9DE9 +0x9DEA +0x9DEB +0x9DEC +0x9DED +0x9DEE +0x9DEF +0x9DF0 +0x9DF1 +0x9DF2 +0x9DF3 +0x9DF4 +0x9DF5 +0x9DF6 +0x9DF7 +0x9DF8 +0x9DF9 +0x9DFA +0x9DFB +0x9DFC +0x9DFD +0x9DFE +0x9DFF +0x9E00 +0x9E01 +0x9E02 +0x9E03 @ +0x9E04 A +0x9E05 B +0x9E06 C +0x9E07 D +0x9E08 E +0x9E09 F +0x9E0A G +0x9E0B H +0x9E0C I +0x9E0D J +0x9E0E K +0x9E0F L +0x9E10 M +0x9E11 N +0x9E12 O +0x9E13 P +0x9E14 Q +0x9E15 R +0x9E16 S +0x9E17 T +0x9E18 U +0x9E19 V +0x9E1A W +0x9E1B X +0x9E1C Y +0x9E1D Z +0x9E1E [ +0x9E1F +0x9E20 +0x9E21 +0x9E22 +0x9E23 +0x9E24 \ +0x9E25 Ÿ +0x9E26 ѻ +0x9E27 ] +0x9E28 +0x9E29 +0x9E2A +0x9E2B +0x9E2C +0x9E2D Ѽ +0x9E2E ^ +0x9E2F +0x9E30 _ +0x9E31 +0x9E32 +0x9E33 ԧ +0x9E34 ` +0x9E35 +0x9E36 +0x9E37 +0x9E38 +0x9E39 +0x9E3A +0x9E3B a +0x9E3C b +0x9E3D +0x9E3E +0x9E3F +0x9E40 c +0x9E41 +0x9E42 +0x9E43 +0x9E44 +0x9E45 +0x9E46 +0x9E47 +0x9E48 +0x9E49 +0x9E4A ȵ +0x9E4B +0x9E4C +0x9E4D d +0x9E4E +0x9E4F +0x9E50 e +0x9E51 +0x9E52 f +0x9E53 g +0x9E54 h +0x9E55 +0x9E56 i +0x9E57 +0x9E58 +0x9E59 j +0x9E5A +0x9E5B +0x9E5C +0x9E5D k +0x9E5E +0x9E5F l +0x9E60 m +0x9E61 n +0x9E62 o +0x9E63 +0x9E64 +0x9E65 p +0x9E66 +0x9E67 +0x9E68 +0x9E69 +0x9E6A +0x9E6B +0x9E6C +0x9E6D +0x9E6E q +0x9E6F r +0x9E70 ӥ +0x9E71 +0x9E72 s +0x9E73 +0x9E74 t +0x9E75 u +0x9E76 v +0x9E77 w +0x9E78 x +0x9E79 y +0x9E7A z +0x9E7B { +0x9E7C | +0x9E7D } +0x9E7E +0x9E7F ¹ +0x9E80 ~ +0x9E81 +0x9E82 +0x9E83 +0x9E84 +0x9E85 +0x9E86 +0x9E87 +0x9E88 +0x9E89 +0x9E8A +0x9E8B +0x9E8C +0x9E8D +0x9E8E +0x9E8F +0x9E90 +0x9E91 +0x9E92 +0x9E93 ´ +0x9E94 +0x9E95 +0x9E96 +0x9E97 +0x9E98 +0x9E99 +0x9E9A +0x9E9B +0x9E9C +0x9E9D +0x9E9E +0x9E9F +0x9EA0 +0x9EA1 +0x9EA2 +0x9EA3 +0x9EA4 +0x9EA5 +0x9EA6 +0x9EA7 +0x9EA8 +0x9EA9 +0x9EAA +0x9EAB @ +0x9EAC A +0x9EAD B +0x9EAE C +0x9EAF D +0x9EB0 E +0x9EB1 F +0x9EB2 G +0x9EB3 H +0x9EB4 +0x9EB5 I +0x9EB6 J +0x9EB7 K +0x9EB8 +0x9EB9 L +0x9EBA M +0x9EBB +0x9EBC N +0x9EBD +0x9EBE +0x9EBF O +0x9EC0 P +0x9EC1 Q +0x9EC2 R +0x9EC3 S +0x9EC4 +0x9EC5 T +0x9EC6 U +0x9EC7 V +0x9EC8 W +0x9EC9 +0x9ECA X +0x9ECB Y +0x9ECC Z +0x9ECD +0x9ECE +0x9ECF +0x9ED0 [ +0x9ED1 +0x9ED2 \ +0x9ED3 ] +0x9ED4 ǭ +0x9ED5 ^ +0x9ED6 _ +0x9ED7 ` +0x9ED8 Ĭ +0x9ED9 a +0x9EDA b +0x9EDB +0x9EDC +0x9EDD +0x9EDE c +0x9EDF +0x9EE0 +0x9EE1 d +0x9EE2 +0x9EE3 e +0x9EE4 f +0x9EE5 +0x9EE6 g +0x9EE7 +0x9EE8 h +0x9EE9 +0x9EEA +0x9EEB i +0x9EEC j +0x9EED k +0x9EEE l +0x9EEF +0x9EF0 m +0x9EF1 n +0x9EF2 o +0x9EF3 p +0x9EF4 q +0x9EF5 r +0x9EF6 s +0x9EF7 t +0x9EF8 u +0x9EF9 +0x9EFA v +0x9EFB +0x9EFC +0x9EFD w +0x9EFE +0x9EFF x +0x9F00 y +0x9F01 z +0x9F02 { +0x9F03 | +0x9F04 } +0x9F05 ~ +0x9F06 +0x9F07 +0x9F08 +0x9F09 +0x9F0A +0x9F0B +0x9F0C +0x9F0D +0x9F0E +0x9F0F +0x9F10 ؾ +0x9F11 +0x9F12 +0x9F13 +0x9F14 +0x9F15 +0x9F16 +0x9F17 ػ +0x9F18 +0x9F19 ܱ +0x9F1A +0x9F1B +0x9F1C +0x9F1D +0x9F1E +0x9F1F +0x9F20 +0x9F21 +0x9F22 +0x9F23 +0x9F24 +0x9F25 +0x9F26 +0x9F27 +0x9F28 +0x9F29 +0x9F2A +0x9F2B +0x9F2C +0x9F2D +0x9F2E +0x9F2F +0x9F30 +0x9F31 +0x9F32 @ +0x9F33 A +0x9F34 B +0x9F35 C +0x9F36 D +0x9F37 +0x9F38 E +0x9F39 +0x9F3A F +0x9F3B +0x9F3C G +0x9F3D +0x9F3E +0x9F3F H +0x9F40 I +0x9F41 J +0x9F42 K +0x9F43 L +0x9F44 +0x9F45 M +0x9F46 N +0x9F47 O +0x9F48 P +0x9F49 Q +0x9F4A R +0x9F4B S +0x9F4C T +0x9F4D U +0x9F4E V +0x9F4F W +0x9F50 +0x9F51 +0x9F52 X +0x9F53 Y +0x9F54 Z +0x9F55 [ +0x9F56 \ +0x9F57 ] +0x9F58 ^ +0x9F59 _ +0x9F5A ` +0x9F5B a +0x9F5C b +0x9F5D c +0x9F5E d +0x9F5F e +0x9F60 f +0x9F61 g +0x9F62 h +0x9F63 i +0x9F64 j +0x9F65 k +0x9F66 l +0x9F67 m +0x9F68 n +0x9F69 o +0x9F6A p +0x9F6B q +0x9F6C r +0x9F6D s +0x9F6E t +0x9F6F u +0x9F70 v +0x9F71 w +0x9F72 x +0x9F73 y +0x9F74 z +0x9F75 { +0x9F76 | +0x9F77 } +0x9F78 ~ +0x9F79 +0x9F7A +0x9F7B +0x9F7C +0x9F7D +0x9F7E +0x9F7F +0x9F80 +0x9F81 +0x9F82 +0x9F83 +0x9F84 +0x9F85 +0x9F86 +0x9F87 +0x9F88 +0x9F89 +0x9F8A +0x9F8B ȣ +0x9F8C +0x9F8D +0x9F8E +0x9F8F +0x9F90 +0x9F91 +0x9F92 +0x9F93 +0x9F94 +0x9F95 +0x9F96 +0x9F97 +0x9F98 +0x9F99 +0x9F9A +0x9F9B +0x9F9C +0x9F9D +0x9F9E +0x9F9F +0x9FA0 +0x9FA1 +0x9FA2 +0x9FA3 +0x9FA4 +0x9FA5